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 micro controller, 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 versions were quadraphonic implementations with each voice driving a pin out on the microcontroller.

Performing A.001 Interactive

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.

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 Dynamic Stochastic 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 is sounds similar, but is technically ‘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 algorithm on the Arduino produces sounds similar to Iannis Xenakis’ dynamic stochastic synthesis but is technically only ‘in the spirit’ of that process and is not a literal reconstruction, unlike IDSS. 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 four 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 them- selves to pulse width modulation (PWM) output. This is what was used in the Gendynish algorithm and why it was only an approximation of the 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 microprocessor timers. This is computationally inefficient but allows more polyphonic flexibility. A Teensy LC microcontroller was used for the performance because it is more powerful than many Arduino microprocessors, yet software compatible. Code for the Gendynish algorithm is available on GitHub.

An early prototype

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

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 utilizes 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.