Orca is a two-dimensional esoteric programming language in which every letter of the alphabet is an operator, where lowercase letters operate on bang, uppercase letters operate each frame.

Launch Orca Launch Enfer Download ROM

The application is not a synthesiser, but it is capable of sending MIDI, OSC & UDP to your audio interface, like Ableton, Renoise, VCV Rack or SuperCollider.

Operators

Playground

This little playground allows you to try some of the examples below. Use ctrl , to speed up, ctrl . to slow down, ctrl g to toggle the guide, and arrows to move the selection.

An introduction to basic operations

Basics

This section will teach the basics of playing a note and a sequence of notes.

Send a midi note:

D8...
.:03C

Play a random note:

aRG, will output a random value between A & G, the rightside uppercase letter indicates an uppercase output.

D8.aRG.
.:03D..

Make a melody

04TCAFE, will create a track of 4 notes, and output its first value.

D814TCAFE
.:03A....

Play the melody

8C4, will count from 0 to 3, at 1/8th speed.

.8C4.....
D804TCAFE
.:03C....

Logic

This section will teach the basics of automating logic decisions and changing the values of operators dynamically.

Play every second note.

2I6, will increment to 6 at a rate of 2.

.2I6.......
D646TCAFEDG
.:03D......

Play a note with an offset

1AC, will add 1 to C, to output D. To get D#, use the lowercase d, like 1Ac.

D8.1AC.
.:03D..

Play a sequence back and forth

The combination of the output of C6 into B3 will bounce a value between 0 and 3 over 6 frames.

4C6......
.4B3.....
D414TCAFE
.:03A....

Play a note at a specific interval

I4.....
3F2.1AC
..:03D.

Projectors

This section will teach the basics of creating new operators procedurally.

Halt a moving operator

..H
E..

Read an operator at position

22O, will get the operator E at the offset 2,2.

22O...
..E..H
.....E

Write an operator at position

22X, will output the operator E at the offset 2,2.

22XE.
.....
.....
....E

Animate a projector

B8, will bounce between 0 and 8.

C...........
.B4.........
.1XE........
........:03C
........:03D
........:03E
........:03F
........:03G

Variables

This section will teach the basics of storing accessing and combining that stored data.

Write a variable

aV5, will store 5 in the variable a.

aV5

Read a variable

Va, will output the value of the variable a. Notice how variables always have to be written above where they are read.

....Va
.......
aV5..Va
.....5.
.......
aV6..Va
.....6.

Read 3 variables

3Kion, will output the values of i, o & n, side-by-side.

iV0.oV3.nVC
...........
3Kion......
.:03C......

Carry a value horizontally and vertically

3..
J..
3Y3

Carry a bang

This method will allow you to bring bangs into tight spots.

D43Ka...
.Y.:03C.

Base 36 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 Do will bang every 24th frame.

0123456789AB
01234567891011
CDEFGHIJKLMN
121314151617181920212223
OPQRSTUVWXYZ
242526272829303132333435

Transpose Table

The midi operator interprets any letter above the chromatic scale as a transpose value, for instance 3H, is equivalent to 4A.

0123456789AB
__________A0B0
CDEFGHIJKLMN
C0D0E0F0G0A0B0C1D1E1F1G1
OPQRSTUVWXYZ
A1B1C2D2E2F2G2A2B2C3D3E3

Golf

Here are a few interesting snippets to achieve various arithmetic operations.

1X..
6I4.
Modulo
Will output the modulo of 6 % 4.
cA1.
.dAZ
Uppercase
Will output uppercase C.
H...
CM1.
Lowercase
Will output lowercase C.
0A1.
.1L1
..1.
OR
Or logic gate with numeric input
0B1.
.1..
XOR
Xor logic gate with numeric input
0B1.
.1B1
..0.
XNOR
Xnor logic gate with numeric input
0M1.
.0..
AND
And logic gate with numeric input
0M1.
.0B1
..1.
NAND
Nand logic gate with numeric input
De-evolved Orcabit

Community

If you have questions about Orca, or projects to share, come and chat!