Constellations is a composition-electronic-instrument. It has been designed to allow anyone to be able to play and compose with the instrument. Its unique control scheme puts every user in the same position at the start, and while some prior musical knowledge may benefit in the short term, anyone can create interesting and complex compositions through play and exploration.
Concept and Background Research
This work was heavily inspired by Norbert Herber's idea of "The Composition Instrument". In his article Herber sets out his criteria for what a composition instrument is. He explains how this type of instrument should be a balance between composition and improvisation, strategy and chance. The instrument can be played or performed and can be used in a multitude of situations. Exploration also seems to be a common theme in the examples Herber showcases. The systems all encourage play and interaction through discovery. Because of this discovery and play became key parts in Constellations design ethos.
Another field of research that heavily inspired this project was genetic algorithms, specifically their use in navigating parameter spaces in digital instruments. Matthew Yee-King's research on his EvoSynth showed the potential of using genetic algorithms to control synthesiser parameters. Work undertaken by Dahlstedt and Marcet and Pasquier also further reinforced the use of genetic algorithms to control synthesisers. A common idea across all of these projects was removing the stress that may come from controlling synths with a lot of parameters, while still creating complex timbres that would require a vast amount of controls. This became a crucial component of Constellations. By removing individual control of each parameter the user is forced to use the presets and mutate them. This then allows them to focus on composing rather than worrying about the fine tuning each dial to get the correct sound.
A number of languages and frameworks have been used to create the software for Constellations. The heart of the project is an openFrameworks (C++) application. openFrameworks generates all of the graphics displayed to the user, and handles the OSC routing so the controls and audio engine work with the main application. The audio engine has been built using PureData, a node based scripting language. The engine is built using phase modulation techniques. These technique enable the synth to create a multitude of different timbres. Python has been used to programme the hardware controls. All data is being sent using OSC which is ideal for cross language/app data transfers.
A raspberry pi 3A+ is the brains of the operation. All of the computing comes from this device, which means Constellations is a completely portable instrument. This was a key design choice as the user is now unshackled from their computer. It also means Constellations can be integrated into any DAW and DAW-less setup. The touch screen is a Pimoroni Hyperpixel. It is a capacitive 60Hz display which is ideal for the synthesiser. As the user will be interacting with the instrument for a long time, it is important that the screen is has a pleasant viewing experience. While the Hyperpixel is a brilliant display it does take up all of the Pi's GPIO pins. For this reason I had to use an IO expander so I could connect all of the hardware to the pi.
This project has scope to grow beyond the version that was displayed at the exhibition. In the software it would be ideal to rewrite the audio engine in C++. Sending messages from the openFrameworks app to PureData creates latency from the users input to the device outputting the sound. Combining everything into a single C++ app would reduce the latency and resolve any issues that may arise from OSC communication.
The hardware could use some more revisions. Firstly it would be ideal to find a better suited single board computer. The raspberry pi is an all purpose computer, which has its own full operating system. The majority of the OS is bloat and is not required for this project, however openFrameworks will not (easily) run on a GUI-less raspberry pi. Something like the Bela platform would be ideal, as it is designed for ultra low latency musical applications. A final version would also ideally be built on a custom chip with custom OS integrating everything together neatly. The physical controls should also be re-engineered and make use of a custom PCB board to tidy up the electronics. A new display would also have the be procured if this project were to start using custom chips and OSs.
As well as conceptual goals I also laid out some personal goals I wanted to achieve in this project. I wanted to built a novel musical instrument, which used unconventional UI and importantly ran completely locally without the need of an external computer. I achieved all of these goals in Constellations, which I am very pleased about. I was also able to make the instrument accessible to everyone. Due to the UI being unconventional, any preconceptions surrounding electronic musical instruments and composition were shed.
I also had to overcome a number of unforeseen challenges to do with the raspberry pi and GPIO programming. The first challenge was finding an ideal screen. As stated before I chose the Hyperpixel 4 by Pimoroni. This 60hz capacitive screen was ideal for this project, and the novelty of it being perfectly square (720x720px) gave the instrument a unique look. The big issue was though that the screen used all the GPIO ports to connect to the pi, and so an IO expander had to be used to add the hardware. I had to learn python, and the accompanying IO expander library, in order to write the script the hardware.
COVID created a number of challenges with the project. The main issue was I did not feel comfortable allowing people to be touching and interacting with the instrument. Also a good amount of visitors would be attending the event online. I had to find a solution to present the work virtually so people could understand and experience Constellations without having to touch the artefact.
The solution was to create a website to showcase the project on. Through building the website I started to question how musical instruments are documented. Focusing primarily on the audio output, the score, and the design of the product. This became an interesting study in itself as I worked out the best ways to present Constellations.
Constellations developed into a fully complete digital electronic instrument. Over the course of the project I completed the conceptual and personal goals I had planned out for Constellations. This project has the potential to be developed beyond the course, and I hope to make further revisions to it in the future.
Matthieu Macret and Philippe Pasquier, “Automatic design of sound synthesisers as pure data patches using coevolutionary mixed-typed cartesian genetic programming”, Proceedings of the 2014 Annual Conference on Genetic and Evolutionary Computation, 2014
Matthew Yee-King, EvoSynth, http://www.yeeking.net/evosynth/ [accessed: 23/09/2020]
Norbert Herber, “The Composition-Instrument: Musical Emergence and Interaction”, Hz Journal, https://www.hz-journal.org/n9/herber.html, 2007 [accessed: 23/09/2020]
Palle Dadlstedt, “Creating and Exploring Huge Parameter Spaces: Interactive Evolution as a Tool for Sound Generation”, International Computer Music Conference, 2001