Orca is a visual programming playground.
The Orca environment is designed to create procedural MIDI/UDP sequencers on the fly, and to control other applications.
You can download builds for OSX, Windows and Linux here:
If you wish to build it yourself, follow these steps:
git clone https://github.com/hundredrabbits/Orca.git cd Orca/desktop/ npm install npm start
Orca is not a synth, but a livecoding environment to write procedural sequencers. In other words, Orca is meant to control other applications such as a DAW (Ableton, Renoise, VCV Rack, etc.), or an audio server such as SuperCollider.
Each letter of the alphabet is an operation, lowercase letters operate on bang(*), uppercase letters operate each frame. Bangs can be generated by various operations, such as E colliding with a 0, see the bang.orca example.
See some projects created with ORCΛ.
The midi instrument should begin receiving midi notes as soon as the Orca window is back into focus.
On Windows, use loopMidi to help routing midi signal across applications.
This a guide to help you produce your first sounds with ORCΛ, tested on Ubuntu 18.04. If you don't have node installed yet, install it with:
sudo apt-get install nodejs
First you will need a software synthesizer. We choose TiMidity++ here. To install the synthesizer on Ubuntu we mainly followed the steps from this Ubuntu guide on software synthesis, which are reproduced here.
If you don't have the universe repository activated yet run:
sudo add-apt-repository universe sudo apt-get update
If install TiMidity++ and the freepats samples:
sudo apt-get install timidity freepats
You might need to activate the following kernel modules:
sudo modprobe snd-seq-device sudo modprobe snd-seq-midi sudo modprobe snd-seq-oss sudo modprobe snd-seq-midi-event sudo modprobe snd-seq
Run TiMidity++ as a ALSA sequencer client. Open a terminal where you run the command:
... and keep that terminal open! This should return an output similar to:
Requested buffer size 32768, fragment size 8192 ALSA pcm 'default' set buffer size 32768, period size 8192 bytes TiMidity starting in ALSA server mode Opening sequencer port: 130:0 130:1 130:2 130:3 Requested buffer size 32768, fragment size 8192 ALSA pcm 'default' set buffer size 32768, period size 8192 bytes
We can see, that the program opens some ports. In the next step will choose one of those to have ORCΛ send its MIDI output to.
Run ORCΛ and set the MIDI device
Open another terminal and navigate to the desktop subdirectory of your Orca folder and type
Next we need to choose our MIDI devices as described in the FAQ's by pressing ctrl+. in ORCΛ to open a browser console (you might need to choose the correct console tab at the top). Type terminal.io.listMidiDevices() in the console to obtain an output similar to (expand the output in your console if needed):
terminal.io.listMidiDevices() (5) [MIDIOutput, MIDIOutput, MIDIOutput, MIDIOutput, MIDIOutput] 0: MIDIOutput connection: "closed", id: "6FF5590044F4859ED50C5167BCFE9700A1798E39AA55A628E86D39011FAECD5D", manufacturer: "", name: "Midi Through Port-0", state: "connected", … 1: MIDIOutput connection: "closed", id: "574FB441DEDADDE2DB06598767A3088744994E3AEA26BA638F8C51D004D8D333", manufacturer: "", name: "TiMidity port 0", state: "connected", … 2: MIDIOutput connection: "closed", id: "8C1A6E287845194CE38B5B5181F731AE63D54D00681076DF9905B3658DF86248", manufacturer: "", name: "TiMidity port 1", state: "connected", … 3: MIDIOutput connection: "closed", id: "A32276E0B2B7CB991939F210D7542BA7A43CE9E97E78C9F5B8D85BA2AC033C5F", manufacturer: "", name: "TiMidity port 2", state: "connected", … 4: MIDIOutput connection: "closed", id: "CBE9CBC37EE04BD5C4039207BE53A9C0E36ED85542FEF3FCF6AF4D0901370F08", manufacturer: "", name: "TiMidity port 3", state: "connected", … length: 5 __proto__: Array(0)
So we see that the TiMidity++ ports are devices 1 to 4. Set the MIDI Device e.g. to the first of those by typing this in the console:
This should come with a confirmation similar to:
/home/bernd/projects/Orca/desktop/sources/scripts/io.js:62 Set device to #1 — TiMidity port 0
Now close the web console window.
Hit ctrl+o in ORCΛ to get a dialog for opening a .orca file. There is the example directory in your Orca folder. Choose the _midi.orca file in that directory and you should hear four notes playing in a loop!
Set Device Id
To set the Midi device, open the console with ctrl+, and type the following to see the list of available devices:
And then, type this to select the 2nd available device:
**Note that this will be improved soon.
The midi operator takes up to 5 inputs('channel, 'octave, 'note, velocity, length). For example, :25C, is a C note, on the 5th octave, through the 3rd MIDI channel, :04c, is a C# note, on the 4th octave, through the 1st MIDI channel. See it in action with midi.orca.
Velocity is either from 0-9(10 steps), or A-Z(26 steps). For example, :34C8, is a C note, on the 4th octave, through the 4th MIDI channel with a velocity of 112/127(88%), :34CT, is a C note, on the 4th octave, through the 4th MIDI channel with a velocity of 96/127(75%)..
Note length is a value from 1-f, which is a ratio of a full bar, 1 being 1/1(a full bar), 2 being 1/2(half), 3 being 1/3(third).. and f being 1/16. For example, :27FZ4, is a F note, on the 7th octave, through the 3rd MIDI channel with a velocity of 100%, lasting for 1/4 of a bar.
The UDP operator ;, takes one haste input that is a string length and locks the eastwardly ports. It sends the message on bang to the port 49160. You can use the listener.js to test UDP messages. See it in action with udp.orca.
The keys operator ! will bang on a corresponding keyboard keypress when the cursor is in keyboard mode(toggle with /). For instance, !a, will output a bang when pressing the a key in keyboard mode. See it in action with the keys.orca.
Orca operates on a base of 36 increments. Operators using numeric values will typically also operate on letters and convert them into values as per the following table. For instance pD will bang every 24th frame.
You can change the look and colour of Orca. To do this, download themes from our itch.io page. You can view the colour palettes of each theme in the preview, once you find something you like, drag the file (.svg file) onto Orca. The colours will change instantly.
These themes are part of the Ecosystem Theme, which means that you can apply a theme to any supported app (Left, Donsol, Pico and Marabu).
You can also create your own themes.