A programming language to hack music, and anything else really https://github.com/audion-lang/audion
The idea came after I finished a permanent piece for a museum using MaxMsp and python. I always had this thought in the back of my mind that "I could express this so much easier in a few lines of code.."
here's the language spec: https://github.com/audion-lang/audion/blob/main/docs/LANGUAG...
I really liked how objects came out, I don't think it needs any more since I can do object composition.
There are some nice functions to generate rhythms and melodies with combinatorics, see src/sequences.rs and melodies.rs
Its a WIP but you can use it now to create music with whatever you want: hardware/daws/supercollider
supercollider is tightly integrated but not required. I havent had time to develop userland libraries yet but I'm working on it
This is awesome! Last year I was working on a VST using NIH-Plug in Rust that could load in synth voices and effects written in Lua (executed using LuaJIT), this kind of reminds me of some of what I was doing (this is way cooler though).
That does sound really cool!! Would really like to see that in action!
Perhaps a silly question but any thoughts on Strudel?
https://strudel.cc/
yes! with pleasure, I think its a great question ;)
Tidal/Strudel is awesome, the visual feedback, the simplicity of musical expression, that to me makes it a wonderful instrument. They are (broadly speaking) DSLs around functional pattern composition that abstract timing, structure, etc
Audion for comparison is a general-purpose imperative scripting language, a "for" loop is your sequencer, a "thread" is your separate instrument/voice, and timing is a primitive you control directly. Hence the "let's hack music" in the readme. So essentially its the inverse of Tidal/Strudel :) more like a brain than just an instrument.
With Audion, the intention is to provide a few things I was missing in other tools
1. An obvious way to program music/video/lighting/other-events, e.g. use a "for" or an infinite "loop" to trigger sounds & lighting, or a separate "thread" to read sensors on a performer
2. A full-stack: full access to the OS: Network, File I/O, Serial, OSC, MIDI, DMX, et.al., and the freedom to build your own abstractions on top
3. The freedom to mutate state and compose objects, your sounds can evolve and remember what happened before
4. Tight timing: beat-accurate scheduling in control-rate land (Max/MSP needs special care when sequencing outside audio rate), Audion now comes with Ableton Link sync, so it plays well with a full live setup
Right now Audion does not have a UI or visual feedback for seeing what is going on while live-coding, but the plan is to make a separate project/binary "audion-window" which will let you design any user interface you can think of for your audion project.