This project provides a proof-of-concept implementation of an Elixir scripting interface to SuperCollider's scsynth and supernova DSP server.
🌴The idea was motivated by my personal use of SuperCollider and my preference for using Elixir as a scripting language. Contributors are encouraged to fork this repository and extend the functionality towards a more comprehensive feature set. If someone is interested in using this, please express your interest because it would motivate me to prioritise API consistency and configurability.
The API was inspired by SuperCollider's own sclang API and shares many similarities. Two important differences are:
- Only a subset of the flexibility of sclang is implemented here. This is because I focused on features that I personally use.
- While sclang relies exclusively on asynchronous calls to scsynth, ExScSoundServer provides an additional option for making synchronous calls. Synchronous calls allow you to use the return values from scsynth directly (see examples below).
def deps do
[
{:sc_ex_scsoundserver, git: "https://github.com/olafklingt/sc_ex_scsoundserver"}
]
end
TODO
- Implement synchronous and asynchronous calls to scsynth
- server options (in the SuperCollider sense)
- make function names in the API more consistent
- application with configuration (in the Elixir sense)
- Rename the repository to reflect more clearly that it isn't a sound server and not a synthesizer and not a stellar explosion.
The following projects also combine Elixir with SuperCollider. They are independent proof-of-concept projects and examples.
ExSCSynthDef An experimental SynthDef compiler in Elixir that treats UGens as functions
ExSCLang Elixir port to a SuperCollider language instance
A example midi piano using my libraries is Axotypixusc "A eXample Of a TinY PIano in elIXir USing SuperCollider".
TODO
GNU AFFERO GENERAL PUBLIC LICENSE