Skip to content

rdck/signal_collider

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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