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
A
add(a, b): Outputs the sum of inputs.B
banger(val): Bangs if input is1
,N
,S
,W
,E
orZ
.C
clock('rate, mod): Outputs a constant value based on the runtime frame.D
delay('rate, offset): Bangs on a fraction of the runtime frame.E
east: Moves eastward, or bangs.F
if(a, b): Outputs1
if inputs are equal, otherwise0
.G
generator(val): Outputs the input southward.H
halt('len): Stops southward operators from operating.I
increment(min, max): Increments southward operator.J
jumper(val): Outputs the northward operator.K
kill: Kills southward operator.L
loop('len): Loops a number of eastward operators.M
modulo(val, mod): Outputs the modulo of inputs.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('len): Counts the number of operators present eastwardly.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 on inputs.V
beam: Bangs the nearest southward operator on bang.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
diagonal: 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.
enter
toggle insert/write.space
toggle play/pause.shift+arrow
resize cursor size.ctrl/meta+arrow
jump cursor position.>
increase BPM.<
decrease BPM.
ctrl+c
copy selection.ctrl+x
cut selection.ctrl+v
paste selection.ctrl+z
undo.ctrl+shift+z
redo.ctrl/meta+k
crop.
]
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
.orca
config 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!