hundredrabbits / Orca
Esoteric Programming Language
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing hundredrabbits/Orca in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Overview (README excerpt)
Crawler viewORCΛ Orca is an esoteric programming language designed to quickly create procedural sequencers, in which every letter of the alphabet is an operation, where lowercase letters operate on bang, uppercase letters operate each frame. This application **is not a synthesizer, but a livecoding environment** capable of sending MIDI, OSC & UDP to your audio/visual interfaces, like Ableton, Renoise, VCV Rack or SuperCollider. If you need **help**, visit the chatroom, the mailing list, join the forum or watch a tutorial. • Download builds, available for **Linux, Windows and OSX**. • Use in your browser, requires **webMidi**. • Use in a terminal, written in C. • Use on small computers, written in assembly. • Use on the Monome Norns, written in Lua. Install & Run If you wish to use Orca inside of Electron, follow these steps: Operators To display the list of operators inside of Orca, use . • **add**(*a* b): Outputs sum of inputs. • **subtract**(*a* b): Outputs difference of inputs. • **clock**(*rate* mod): Outputs modulo of frame. • **delay**(*rate* mod): Bangs on modulo of frame. • **east**: Moves eastward, or bangs. • **if**(*a* b): Bangs if inputs are equal. • **generator**(*x* *y* *len*): Writes operands with offset. • **halt**: Halts southward operand. • **increment**(*step* mod): Increments southward operand. • **jumper**(*val*): Outputs northward operand. • **konkat**(*len*): Reads multiple variables. • **less**(*a* *b*): Outputs smallest of inputs. • **multiply**(*a* b): Outputs product of inputs. • **north**: Moves Northward, or bangs. • **read**(*x* *y* read): Reads operand with offset. • **push**(*len* *key* val): Writes eastward operand. • **query**(*x* *y* *len*): Reads operands with offset. • **random**(*min* max): Outputs random value. • **south**: Moves southward, or bangs. • **track**(*key* *len* val): Reads eastward operand. • **uclid**(*step* max): Bangs on Euclidean rhythm. • **variable**(*write* read): Reads and writes variable. • **west**: Moves westward, or bangs. • **write**(*x* *y* val): Writes operand with offset. • **jymper**(*val*): Outputs westward operand. • **lerp**(*rate* target): Transitions operand to input. • **bang**: Bangs neighboring operands. • **comment**: Halts a line. IO • **midi**(channel octave note velocity length): Sends a MIDI note. • **mono**(channel octave note velocity length): Sends monophonic MIDI note. • **cc**(channel knob value): Sends MIDI control change. • **pb**(channel value): Sends MIDI pitch bench. • **udp**: Sends UDP message. • **osc**(*path*): Sends OSC message. • **self**: Sends ORCA command. MIDI The MIDI operator takes up to 5 inputs('channel, 'octave, 'note, velocity, length). For example, , is a **C note, on the 5th octave, through the 3rd MIDI channel**, , is a **C# note, on the 4th octave, through the 1st MIDI channel**. Velocity is an optional value from (0/127) to (127/127). Note length is the number of frames during which a note remains active. See it in action with midi.orca. MIDI MONO The MONO operator takes up to 5 inputs('channel, 'octave, 'note, velocity, length). This operator is very similar to the default Midi operator, but **each new note will stop the previously playing note**, would its length overlap with the new one. Making certain that only a single note is ever played at once, this is ideal for monophonic analog synthesisers that might struggle to dealing with chords and note overlaps. MIDI CC The MIDI CC operator takes 3 inputs('channel, 'knob, 'value). It sends a value **between 0-127**, where the value is calculated as a ratio of 36, over a maximum of 127. For example, , is sending **28**, or through the first channel, to the control mapped with . You can press **enter**, with the operator selected, to assign it to a controller. By default, the operator sends to and up, the offset can be changed with the command , to set the offset to 0. MIDI PITCHBEND The MIDI PB operator takes 3 inputs('channel, 'lsb, 'msb). It sends two different values **between 0-127**, where the value is calculated as a ratio of 36, over a maximum of 127. For example, , is sending an MSB of **28**, or and an LSB of 0 through the first midi channel. MIDI BANK SELECT / PROGRAM CHANGE This is a command (see below) rather than an operator and it combines the MIDI program change and bank select functions. The syntax is . Channel is 0-15, msb/lsb/program are 0-127, but program will automatically be translated to 1-128 by the MIDI driver. typically corresponds to a "patch" selection on a synth. Note that may also be identified as "bank" and as "sub" in some applications (like Ableton Live). and can be left blank if you only want to send a simple program change. For example, will set the synth to patch number 64 (without changing the bank) UDP The UDP operator locks each consecutive eastwardly ports. For example, , will send the string "hello", on bang, to the port on . In commander, use to select the **custom UDP port 7777**, and to change the target IP. UDP is not available in the browser version of Orca. You can use the listener.js to test UDP messages. See it in action with udp.orca. OSC The OSC operator locks each consecutive eastwardly ports. The first character is used for the path, the following characters are sent as integers using the base36 Table. In commander, use to select the **custom OSC port 7777**, and to change the target IP. OSC is not available in the browser version of Orca. For example, will send , and to , via the port on ; will send , and , to the path . You can use the listener.js to test OSC messages. See it in action with osc.orca or try it with SonicPi. Advanced Controls Some of Orca's features can be **controlled externally** via UDP though port , or via its own command-line interface. To activate the command-line prompt, press . The prompt can also be used to inject patterns or change settings. Project Mode You can **quickly inject orca files** into the currently active file, by us…