/eolian

A modular synthesizer.

Primary LanguageGoMIT LicenseMIT

Eolian

Build Status GoDoc

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.

Dependencies

On macOS you can install these dependencies with: brew install go portaudio portmidi

Installing

$ go get buddin.us/eolian

Usage

$ 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

Building a Rack

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.

Contributing

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.