I'd like to be able to make music using code. It sounds like it would be a good idea to be able to share composing techniques as re-usable functions, to describe the rythm section declerativly, to experiment with different musical keys, scales and modes by changing a few lines of code.
A lot of the tools I've found seem to fill the nitch of being used for live performance. Either by actually live coding during the performance, or as a custom instrument develeoped ahead of time.
I also think it would be interesting with more games where the music is dynamic. A lot of games will ramp up the intensity when a difficult enemy arrives. Or have sudden variations on the theme to not seem to repetitive. As far as I know these are all done ahead of time and "compiled" to static music files (wav / ogg), but what if they could instead just be a program that reacts dynamicly to the game?
In a similare vein there are so much interesting things that can be done with synths these days, but again I don't know of any games that feed what happens in a game live into the synth.
Her is a list of the tools and libraries I've found. A lot of these can be used both to create synths as well as whole songs.
Tool | Description |
---|---|
Supercollider | Programming language for "audio synthesis and algorithmic composition" |
Pure Data | One of the original tools in this space from way back. Eventually became Abelton's Max for Live |
Purr Data | A modern fork of Pure Data |
Plugdata | Another more modern fork of Pure Data |
Tidal Cycles | |
Strudel | A port of TidalCycles to JavaScript |
Csound | |
Sonic Pi |
Other tools:
Heavy Compiler Collection (hvcc) - hvcc
is a python-based dataflow audio programming language compiler that generates C/C++ code and a variety of specific framework wrappers.
Camomile - Create audio plugins with Pure Data patches.
Zynthian - RaspberryPI-based open synth platform
ElectroSmith's Daisy - DSP chip for building your own synths. Used by the CHOMPI Sampler
Monome's Norns - a small, portable, open-source sound computer that dynamically runs scripts and DSP.