dawn is a modular synthesizer written in zig. interaction is possible through network messages, specifically open sound control (osc). it's work in progress in early stages. expect few features and rough edges: the interface is sketched out, but there are barely any modules. contributions are welcome!
dusk is a basic command line application that sends messages to dawn and sometimes receives replies. it comes included and demonstrates the interface. using dawn with other software supporting osc is easy and recommended.
with zig 0.11 stable installed:
git clone https://github.com/dawnsynth/dawn.git
cd dawn
zig build
if all goes well, you should see dawn
and dusk
binaries in ./zig-out/bin/
that are used below.
consider adding this directory to your PATH for convenience.
please take care of your hearing and equipment. there may be rapid changes it volume. be advised to keep initital levels low and use speakers instead of headphones, if possible. use at your own risk.
dawn's default patch contains modules for sound i/o and processing osc messages. to launch it, run the binary:
dawn
see dawn --help
for additional options.
dusk can send osc messages to dawn. with dawn running, for example:
dusk add_module --module_type sineosc --module_name sine
to hear a sound, we need to patch our oscillator to the soundio module:
dusk add_cable --src_module_name sine --src_port_name out --dst_module_name soundio --dst_port_name chan_1
this should produce a stereo signal, since channel 1 is normalled to channel 2.
to change its frequency:
dusk set_param --module_name sine --param_name freq --value 220.0
see dusk --help
for all options and messages.
for more flexible interaction its recommended to use dawn with other clients. thanks to osc this can easily be done. some possibilities include seamstress, norns, orca, and open stage control among many others.
dawn's abstractions are inspired by the initial version of vcv rack, developed by andrew belt. dawn is written in zig, who's creator andrew kelly, also wrote libsoundio which is used for the soundio module. other third party libraries used include tinyosc by martin roth, zig-cli by alexei samokvalov & contributors, zig-network by felix queißner, and zig-soundio by ken kochis. the interface pattern follows a blog post by loris cro.
contributions are welcome and encouraged. by submitting a pull request, you agree that your contribution will be under this repository's license (MIT).