Eolian is a modular synthesizer. It provides a variety of different modules and music theory primitives that can be patched together to create music. While the program is written in Go, you don't need to know Go to use it. Patches for the synthesizer are written in Lua. A REPL is also provided for interacting with the patches in real-time.
I started this project in attempt to learn more about digital signal processing and music theory. The project is named after the music hall, The Eolian, in the book The Name of the Wind by Patrick Rothfuss.
On macOS you can install these dependencies with: brew install go portaudio portmidi
$ go get buddin.us/eolian
$ eolian examples/random.lua
> -- Reload the file, rebuild the Rack and remount it
> Rack.build()
>
> -- Reload the file and only repatch it
> Rack.patch()
>
> -- Set inputs or repatch modules
> Rack.modules
clock table: 0xc420273680
random table: 0xc420273980
voice table: 0xc420273d40
delay table: 0xc4202e2300
filter (module)
mix (module)
> Rack.modules.filter
cutoff <-- 7000.00Hz
input <-- delay.delay/output
resonance <-- 10.00
bandpass --> (none)
highpass --> (none)
lowpass --> mix/0/input
> Rack.modules.filter:set { cutoff = hz(1000) }
cutoff <-- 1000.00Hz
input <-- delay.delay/output
resonance <-- 10.00
bandpass --> (none)
highpass --> (none)
lowpass --> mix/0/input
Documentation for all modules and synthesizer features can be found on the Wiki. I'll also be posting tutorials there soon.
A small set of example racks are maintained in the examples directory. I also frequently post short videos on Instagram of things I've been able to get out of it.
This project is very much in its infancy and there is still lots of work to be done. Wanna help out? Awesome! Mosey on over to CONTRIBUTING.md and submit your first Pull Request.