Each letter of the alphabet is an operation, lowercase letters typically operate on bang(*), uppercase letters operate on each frame. Bangs can be generated by various operations, such as E colliding with a 0, see the bang.orca example. Watch a music video of ORCΛ in action.
There are no public builds available at the moment, you need npm installed.
git clone https://github.com/hundredrabbits/Orca.git
cd Orca/desktop/
npm install
npm start
Aadd(a, b): Outputs the sum of inputs.Bbanger(val): Bangs if input is1,N,S,W,EorZ.Cclock('rate, mod): Outputs a constant value based on the runtime frame.Ddelay('rate, offset): Bangs on a fraction of the runtime frame.Eeast: Moves eastward, or bangs.Fif(a, b): Outputs1if inputs are equal, otherwise0.Ggenerator(val): Outputs the input southward.Hhalt('len): Stops southward operators from operating.Iincrement(min, max): Increments southward operator.Jjumper(val): Outputs the northward operator.Kkill: Kills southward operator.Lloop('len): Loops a number of eastward operators.Mmodulo(val, mod): Outputs the modulo of inputs.Nnorth: Moves Northward, or bangs.Ooffset('x, 'y, val): Reads a distant operator with offset.Ppush('len, 'key, val): Writes an eastward operator with offset.Qquery('len): Counts the number of operators present eastwardly.Rrandom(min, max): Outputs a random value.Ssouth: Moves southward, or bangs.Ttrack('len, 'key, val): Reads an eastward operator with offset.Uuturn('n, 'e, 's, 'w): Reverses movement on inputs.Vvariable('write, value): Reads and write globally available variables.Wwest: Moves westward, or bangs.Xteleport('x, 'y, val): Writes a distant operator with offset.Yjymper(val): Outputs the westward operator.Zdiagonal: Moves diagonally toward south-east.*bang: Bangs neighboring operators.:midi('velocity, 'length, channel, octave, note): Sends Midi a midi note.;udp('len): Sends a string via UDP to localhost.#comment: Comments a line, or characters until the next hash.
entertoggle insert/write.spacetoggle play/pause.shift+arrowresize cursor size.ctrl/meta+arrowjump cursor position.>increase BPM.<decrease BPM.
ctrl+ccopy selection.ctrl+xcut selection.ctrl+vpaste selection.ctrl+zundo.ctrl+shift+zredo.ctrl/meta+kcrop.
]increase grid size vertically.[decrease grid size vertically.}increase grid size horizontally.{decrease grid size horizontally.ctrl/meta+]increase program size vertically.ctrl/meta+[decrease program size vertically.ctrl/meta+}increase program size horizontally.ctrl/meta+{decrease program size horizontally.
The midi operator is :, it 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.
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.
To see it in action, see the midi.orca example.
To set the Midi device, open the console with ctrl+., and type terminal.io.listMidiDevices() to see the list of available devices, and type terminal.io.setMidiDevice(2) to select the 2nd available device. This will be improved soon.
The UDP special function is 3;MSG, it has one haste input that gets a string length and locks the eastward ports. It sends the message on bang to the port 49160. You can use the listener.js to test UDP messages.
To see it in action, see the udp.orca example.
Orca can also run headlessly via:
node server.js examples/bang.orca
- Implement
=OSC. - Implement
/nested files. - Implement live reload.
- Improve Midi Device selection.
- Remember Midi Device.
- Create a
.orcaconfig file.
- This application supports the Ecosystem Theme.
- Support this project through Patreon.
- See the License file for license rights and limitations (MIT).
- Pull Requests are welcome!



