Orca: Grid based audio programming where every letter is an operation
source link: https://www.tuicool.com/articles/hit/ABNRr2r
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
ORCΛ
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 . You can see the design notes for specs and upcoming features. If you need some help, visit the chatroom .
For a portable version of Orca, built entirely in C, visit Orca-c .
Install & Run
You can download builds for OSX, Windows and Linux , or 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
Operators
-
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.
Controls
Terminal Controls
enter space > < shift+arrowKey ctrl+arrowKey alt+arrowKey
Edit
ctrl+c ctrl+x ctrl+v ctrl+z ctrl+shift+z
Grid Controls
] [ } { ctrl/meta+] ctrl/meta+[ ctrl/meta+} ctrl/meta+{
Window
ctrl+= ctrl+- ctrl+0 tab backquote
To open the console, press ctrl+.
.
MIDI
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 terminal.io.midi.list()
to see the list of available midi devices.
Select Midi Device
In console, type terminal.io.midi.select(1)
to select the second midi device.
UDP
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 terminal.io.udp.select(49160)
to select the 49160 udp port.
OSC
The OSC operator =
locks each consecutive eastwardly ports.
First char is used for path, nexts are sent as integers using base36 Table . For example, =1abc
will send 10
, 11
and 12
to /1
, via the port 49162
on localhost
; =a123
will send 1
, 2
and 3
, 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 terminal.io.osc.select(49162)
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 .
Extras
- 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!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK