eolian

module
v0.0.16 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 23, 2017 License: MIT

README

Eolian

Build Status

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
$ cd $GOPATH/src/buddin.us/eolian
$ make install

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 keep all of my personal racks at brettbuddin/eolian-racks. Be warned that some of them might be out of date due to changes and new features in Eolian. 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.

Directories

Path Synopsis
cmd
Package command provides the functionality of the executable
Package command provides the functionality of the executable
Package engine provides output through PortAudio
Package engine provides output through PortAudio
Package lua provides a Lua scripting layer
Package lua provides a Lua scripting layer
Package module provides built-in modules
Package module provides built-in modules
midi
Package midi provides MIDI input handling
Package midi provides MIDI input handling
osc
Package osc provides Open Sound Control (OSC) input handling
Package osc provides Open Sound Control (OSC) input handling
Generated by cmd/gen/main.go.
Generated by cmd/gen/main.go.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL