Live Programming Environment
Clone or download
Latest commit f446c01 Jan 20, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
desktop Fixed movement issue Jan 20, 2019
examples Fixed movement issue Jan 20, 2019
resources Added screencapture Nov 23, 2018
.gitignore Init Feb 14, 2018 Improved logs in OSC/UDP/Midi Jan 20, 2019 Init Feb 14, 2018 Renamed K Jan 20, 2019 * Jan 18, 2019
docs.js Improved Docs Jan 15, 2019
listener.js Allowfor empty messages Jan 17, 2019


Each letter of the alphabet is an operation, lowercase letters operate on bang(*), uppercase letters operate each frame. Have a look at some project created with #ORCΛ, or some example files. Here's an introduction video.

Install & Run

You can download builds for OSX, Windows and Linux, or if you wish to build it yourself, follow these steps:

git clone
cd Orca/desktop/
npm install
npm start


You can follow the guide to get started and play your first sounds. You can see the design notes for specs and upcoming features.


  • A add(a, b): Outputs the sum of inputs.
  • B bool(val): Bangs if input is not empty, or 0.
  • C clock('rate, mod): Outputs a constant value based on the runtime frame.
  • D delay('rate, mod): Bangs on a fraction of the runtime frame.
  • E east: Moves eastward, or bangs.
  • F if(a, b): Bangs if both inputs are equal.
  • G generator('x, 'y, 'len): Writes distant operators with offset.
  • H halt: Stops southward operators from operating.
  • I increment(min, max): Increments southward operator.
  • J jumper(val): Outputs the northward operator.
  • K konkat('len): Outputs multiple variables.
  • L loop('len): Loops a number of eastward operators.
  • M modulo(val, mod): Outputs the modulo of input.
  • N north: Moves Northward, or bangs.
  • O offset('x, 'y, val): Reads a distant operator with offset.
  • P push('len, 'key, val): Writes an eastward operator with offset.
  • Q query('x, 'y, 'len): Reads distant operators with offset.
  • R random(min, max): Outputs a random value.
  • S south: Moves southward, or bangs.
  • T track('len, 'key, val): Reads an eastward operator with offset.
  • U uturn('n, 'e, 's, 'w): Reverses movement of inputs.
  • V variable('write, read): Reads and write globally available variables.
  • W west: Moves westward, or bangs.
  • X teleport('x, 'y, val): Writes a distant operator with offset.
  • Y jymper(val): Outputs the westward operator.
  • Z zoom: Moves eastwardly, respawns west on collision.
  • * bang: Bangs neighboring operators.
  • # comment: Comments a line, or characters until the next hash.
  • : midi('channel, 'octave, 'note, velocity, length): Sends a MIDI note.
  • ; udp: Sends a UDP message.
  • = osc(path): Sends a OSC message.


Terminal Controls

  • enter toggle insert/write.
  • space toggle play/pause.
  • > increase BPM.
  • < decrease BPM.
  • shift+arrowKey Expand cursor.
  • ctrl+arrowKey Leap cursor.
  • alt+arrowKey Move selection.


  • ctrl+c copy selection.
  • ctrl+x cut selection.
  • ctrl+v paste selection.
  • ctrl+z undo.
  • ctrl+shift+z redo.

Grid Controls

  • ] 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.


  • ctrl+= Zoom In.
  • ctrl+- Zoom Out.
  • ctrl+0 Zoom Reset.
  • tab Toggle interface.
  • backquote Toggle background.

To open the console, press ctrl+..


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. Velocity is an optional value from 0(0/127) to f(127/127). Note length is a value from 0(1/16) to f(16/16), which is a ratio of a full bar, f being 16/16(a full bar), 8 being 1/2(half), 4 being 1/4(quarter). See it in action with midi.orca.

List Midi Devices

In console, type to see the list of available midi devices.

Select Midi Device

In console, type to select the second midi device.


The UDP operator ; locks each consecutive eastwardly ports. For example, ;hello, will send the string "hello", on bang, to the port 49160 on localhost

You can use the listener.js to test UDP messages. See it in action with udp.orca.

Select UDP Port

In console, type to select the 49160 udp port.


The OSC operator = locks each consecutive eastwardly ports.

For example, =1abc will send [10,11,12] to /1, via the port 49162 on localhost. =a123 will send the integers 123, to the path /a. You can use the listener.js to test OSC messages. See it in action with osc.orca or try it with SonicPi.

Select OSC Port

In console, type to select the 49162 osc port.

Base36 Table

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 Dp will bang every 24th frame.

0 1 2 3 4 5 6 7 8 9 A B
0 1 2 3 4 5 6 7 8 9 10 11
12 13 14 15 16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31 32 33 34 35


  • 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!