Article History
 
 
 
Discussion
 
1066 views
 
53% damifortune
orcapilot (format)
 

Orca + Pilot Synth
 

 

 
Token:
orcapilot
 
Point Type:
 
File Types:
 
Entry Count:
18
 
Max Filesize:
12.5mb
 
Description:
Music made using Orca, an esoteric MIDI-sequencing programming language, and its companion synth Pilot. Submit your .orca patch file!
::|CONTENTS
  1. Tools
  2. Operators
  3. Commands
  4. Pilot
  5. Restrictions on submit
  6. Rendering
  7. Playback (for voting)
  8. See also
Orca+Pilot is a format built around two pieces of software by Hundred Rabbits
. The first is Orca, an esoteric programming language designed to create procedural sequencers on a grid where each letter of the alphabet represents a particular operation. It doesn't produce sound on its own, but that's where our second piece of software, Pilot, comes in - a synthesizer designed to be controlled externally, notably by Orca. So, this format is for a programming language you can create music with that is being routed into a specific synthesizer.

Tools



- Links to Orca can be found here
. It can be used on desktop or in browser! Tutorials and information about the specifics of the language can also be found there.
- Pilot can be downloaded here
.

Note that Orca can be used to control other synthesizers - it can send MIDI, OSC and UDP - but this BotB format specifically restricts you to using their Pilot synth. If you want to try using Orca for other purposes, consider submitting that to the allgear format!

Operators



Orca functions on a big grid. Every letter of the alphabet is an operator. Lowercase letters operate on bang, uppercase letters operate each frame.

The base operators are present in every version of Orca, no matter the platform:

- A add(a b): Outputs sum of inputs.
- B subtract(a b): Outputs difference of inputs.
- C clock(rate mod): Outputs modulo of frame.
- D delay(rate mod): Bangs on modulo of frame.
- E east: Moves eastward, or bangs.
- F if(a b): Bangs if inputs are equal.
- G generator(x y len): Writes operands with offset.
- H halt: Halts southward operand.
- I increment(step mod): Increments southward operand.
- J jumper(val): Outputs northward operand.
- K konkat(len): Reads multiple variables.
- L lesser(a b): Outputs smallest of inputs.
- M multiply(a b): Outputs product of inputs.
- N north: Moves Northward, or bangs.
- O read(x y read): Reads operand with offset.
- P push(len key val): Writes eastward operand.
- Q query(x y len): Reads operands with offset.
- R random(min max): Outputs random value.
- S south: Moves southward, or bangs.
- T track(key len val): Reads eastward operand.
- U uclid(step max): Bangs on Euclidean rhythm.
- V variable(write read): Reads and writes variable.
- W west: Moves westward, or bangs.
- X write(x y val): Writes operand with offset.
- Y jymper(val): Outputs westward operand.
- Z lerp(rate target): Transitions operand to input.
- * bang: Bangs neighboring operands.
- # comment: Halts a line.

The special operators make use of a platform's devices, here are the suggested special operators:

- $ self(cmd): Send a command to Orca.
- : midi(ch oct note velocity*): Send a midi note.
- ! midi cc(ch knob val): Send a midi control change.
- ; pitch(oct note): Send pitch byte out.
- / byte(high low): Send a raw byte.
- = play(ch oct note velocity*): Play note with built-in synth.

Commands



The special operator $ allows you to send commands to Orca itself. Below is a list of common commands. All commands have a shorthand equivalent to their first two characters, for example, write can also be called using wr.


$play Plays program.
$stop Stops program.
$run Runs current frame.
$bpm:140 Sets bpm speed to 140.
$apm:160 Animates bpm speed to 160.
$frame:0 Sets the frame value to 0.
$skip:2 Adds 2, to the current frame value.
$rewind:2 Removes 2, to the current frame value.
$color:f00;0f0;00f Colorizes the interface.
$find:aV Sends cursor to string aV.
$select:3;4;5;6 Move cursor to position 3,4, and select size 5:6(optional).
$inject:pattern;12;34 Inject the local file pattern.orca, at 12,34(optional).
$write:H;12;34 Writes glyph H, at 12,34(optional).
$time Prints the time, in minutes seconds, since 0f.
$midi:1;2 Set Midi output device to #1, and input device to #2.
$udp:1234;5678 Set UDP output port to 1234, and input port to 5678.
$osc:1234 Set OSC output port to 1234.


Pilot



Pilot is a synthesizer created as a companion application to ORCA, controlled by UDP messages. It has 16 voices of various types, and 8 global effects. Pilot uses the Tone.js
library for creating its voices. Each voice has a hard-coded type and modulation parameters:


# Type Harmonicity ModIndex
0 AM 1.25 -
1 AM 1.5 -
2 AM 1.75 -
3 AM 2 -
4 AM 1.25 -
5 AM 1.5 -
6 FM 1.75 10
7 FM 2 20
8 FM 0.5 30
9 FM 2.5 40
A Mono - -
B Mono - -
C Membrane - -
D Membrane - -
E Membrane - -
F Membrane - -


You can change the oscillators (one or two depending on the voice) and envelopes* of voices with commands OSC and ENV.

Example:

command ins# type result
0ENV056f 0 Envelope Set Attack:0.00, Decay:0.33, Sustain:0.40 and Release:1.00
1OSCsisq 1 Oscillator Set Osc1:Sine, Osc2:Square


*Envelope seems to have no effect on the Membrane synths C-F.

For more details on Pilot, check the Github repository:
https://github.com/hundredrabbits/Pilot/

You can also reference the Tone.js documentation for more info on how the underlying synths work:
https://tonejs.github.io/docs/15.1.22/modules.html

Restrictions on submit



Submission should be an .orca patch file (press Ctrl+S within Orca) openable with Orca and playable with its companion Pilot synth.

Rendering



In Pilot, you can record output from the menu: File->Record; Stop Recording. When rendering an entry, you have some creative leeway with setting the tempo and choosing where to start and end the recording. (Although note you can set the tempo within the file by banging a $bpm:nnn command) However, please do not make changes to the file itself while playing back. (If you want to do livecoding, consider submitting to liveplay (format) !)

Playback (for voting)



Open the .orca file with Ctrl+O - you may need the desktop version to be able to open patches if your browser treats this as its own shortcut.

See also



- pd (format)
- Supercollider

 
C A T E G O R I E S
 
 
Battle Formats