-
Notifications
You must be signed in to change notification settings - Fork 0
signal processing automata
License
rdck/signal_collider
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
-------------------------------------------------------------------------------- INTRODUCTION -------------------------------------------------------------------------------- This is an experimental implementation of a simple visual programming environment for the procedural generation and synthesis of musical sequences. It began as a dialect of the ORCA programming language, originally written by Devine Lu Linvega: https://100r.co/site/orca.html You may watch a short video introduction to the project here: https://youtu.be/d8eC9he8iZM The goal of the project is to extend ORCA's computational model with a few basic facilities for doing synthesis and signal processing directly in the environment, without dependence on another program or piece of hardware. This means that, unlike the audio from an external synth controlled by ORCA, the produced audio will have sample-accurate timing. For most purposes, this is probably not a noticeable difference, but I found it an interesting programming exercise. This implementation was done from scratch, without reference to the original ORCA source code. I am writing it as a learning exercise, not to compete with the original ORCA implementation. For the time being, the only target platform is 64bit Windows. -------------------------------------------------------------------------------- OPERATORS -------------------------------------------------------------------------------- (conditional) a = b output bang when a is equal to b (clock) rate C modulus output clock modulo modulus (delay) rate D modulus output bang when equivalent clock would output zero (random) R modulus output random value modulo modulus (add) a + b output addition (subtract) a - b output subtraction (multiply) a * b output multiplication (generate) x y G value write value at relative coordinate (x, y) (scale) # n output semitone value of nth note of major scale (synthesizer) ~ octave pitch duration volume synthesize sine wave Many of the operators have slightly different semantics from their ORCA counterparts, so do not expect them to behave equivalently. -------------------------------------------------------------------------------- KEY BINDINGS -------------------------------------------------------------------------------- move cursor : arrow keys delete value : backspace conditional : = clock : c delay : d random : r add : + subtract : - multiply : * generate : g scale : # synthesizer : ~ literal : 0 through 9, or shift-letter -------------------------------------------------------------------------------- BUILDING FROM SOURCE -------------------------------------------------------------------------------- You will need the MSVC developer command prompt: https://learn.microsoft.com/en-us/cpp/build/building-on-the-command-line ninja: https://ninja-build.org/ xxd, which is distributed with Vim for windows: https://www.vim.org/ Then run `ninja` in the project root to compile. -------------------------------------------------------------------------------- AUTHOR -------------------------------------------------------------------------------- River Dillon river@k-monk.org
About
signal processing automata