Creativity - Technology - Learning
 
GenDynish – Xenakis on the Arduino

GenDynish – Xenakis on the Arduino

A001-waveform
Waveform output from the quadraphonic Gendynish algorithm running on an Arduino-class microprocessor.

Furthering my previous interests in Stochastic Synthesis I implemented an emulation of Iannis Xenakis’ Dynamic Stochastic Synthesis on an Arduino microcontroller, the resulting algorithm I titled GenDynish. The Gendynish algorithm is software that runs on Arduino-class microprocessors to produces sounds similar to Iannis Xenakis’ dynamic stochastic synthesis works from the early 1990s. This algorithm takes a somewhat unconventional approach to Arduino audio by directly manipulating digital i/o pins allowing polyphonic output from multiple pins. The first composition using this code was the real-time autonomous algorithmic work A.001 performed at the Queensland Conservatorium Griffith University in March 2018. The second performance was an interactive version at Oscilo Scape 11 in September 2018. Both these versions were quadraphonic implementations with each voice driving a pin out on the microcontroller. The third performance was at the Australasian Computer Music Conference in July 2020. That work, titled A.002, used a revised version of the GendyNis algorithm running on the Adafruit Playground Express microcontroller board which enabled amplitude variation via a DAC rather than simple on-off voltages from digital pins in the previous versions.

Performing A.001 Interactive
Video of A.002 as shown at the online ACMC 2020 conference.

The first composition using this code was the real-time autonomous algorithmic work A.001 performed at the Queensland Conservatorium Griffith University in March 2018. The second performance was an interactive version at Oscilo Scape 11 in September 2018. Both versions were quadraphonic implementations with each voice driving a pin out on the microcontroller.

The project was selected for a demo paper at the ISEA 2019 conference in Korea.

Hear a performance on Soundcloud – https://soundcloud.com/thejmc/a001i-at-os11

In the 1990s Iannis Xenakis developed a new probabilistic audio generation method called Generative Dynamic Synthesis that produced quite unconventional sounds. This process reflected his interest in “human intelligibility [of] temporal periodicity and the symmetry of the [waveform] curves” generated by digital devices (Xenakis 1991:289). Two notable works using this technique were composed by Xenakis, Gendy3 and S.709. Inspired by these works and taking advantage of the rapid advances in technology, “A.001” simulates this technique on the low-cost Arduino microcontroller running in real time and emulates the four voice architecture of Gendy3 only this time reproduced in quadraphonic sound. Andrew previously engaged with dynamic stochastic synthesis in 2004 coding the first real time, interactive, implementation of the process. The resulting IDSS system was performed and published in computer music conferences in 2005. This implementation on the Arduino sounds similar, but is technically only ‘in the spirit’ of the process rather than a literal reconstruction as was IDSS. It is also testament to the advancement of computing hardware that synthesis processes once requiring expensive and time-consuming resources are now achievable on the least expensive of systems.

The Gendynish project arose as I was experimenting with generating audio directly from the pin-outs on Arduino microprocessors, and noticed that some of the sounds were reminiscent of those produced by the GENDY program. On the Arduino, a pin on the microprocessor produces a monophonic output, so several pins were used for the desired polyphony. Voltage output from a pin typically ranges from 0-5 volts and so scaling and DC offset was required to make the output suitable for connecting to a line level audio input. The image below shows an early prototype with resistors and a capacitor on each of four pins to manage the output voltage. The pin outs of an Arduino microprocessor lend themselves to pulse width modulation (PWM) output. This is what was used in the Gendynish algorithm and why it was only an approximation of dynamic stochastic synthesis. By probabilistically varying the frequency and pulse width of the pin output a surprisingly wide variety of timbral results were possible. To maintain the independence of the four pin outputs the timing of the pulse wave frequency was controlled within the main loop of the code, rather than by manipulating the limited number of microprocessor timers. This is computationally inefficient but allows more polyphonic flexibility. A Teensy LC microcontroller was used for the performance of A.001 because it is more powerful than many Arduino microprocessors, yet software compatible. Code for the Gendynish algorithm is available on GitHub.

An early prototype

This project demonstrates that the past and present can come together in interesting and expressive ways. The Gendynish project draws on inspiration from Iannis Xenakis and his innovative use of probabilistic processes to explore the nature of digital sound making. The project also utilises accessible contemporary computing hardware whose cost to compute-power ratio would have astounded pioneers such as Xenakis. The value of open hardware and open source software that is a feature of the Arduino project is clearly demonstrated through outcomes such as these. Yet despite building on widely available platforms the Gendynish algorithm uses them in unconventional ways, continuing the artistic tradition of bending technologies to meet expressive desires.