Orca Documentation

repository·main·Indexed 26 days ago

https://github.com/hundredrabbits/orca

An esoteric programming language and livecoding environment for creating procedural sequencers. Orca enables sending MIDI, OSC, and UDP messages to external audio/visual software such as Ableton, VCV Rack, and SuperCollider. It features a base-36 numeric system, a variety of logic and IO operators, and a desktop environment powered by Electron.

Tokens
3.4K
Snippets
7
Records
41
Agent score
89%

What's inside Orca

  1. Overview of Orca Operators

    main
    Orca uses an esoteric programming language where letters represent operations. Lowercase letters operate on 'bangs', while uppercase letters operate on each frame. Use CmdOrCtrl+G inside the application to view the full list of operators.
  2. Explore ORCΛ Companion Applications

    main

    ORCΛ can be used in conjunction with several companion tools to expand its capabilities in synthesis, sampling, and control:

    • Pilot: A companion synth tool.
    • Aioi: Used for sending complex OSC messages.
    • Estra: A companion sampler tool.
    • Gull: A companion sampler, slicer, and synth tool.
    • Sonic Pi: A livecoding environment that can be controlled via OSC.
    • Remora: ESP32 LED controller firmware.
  3. Quickstart with Pilot synth

    main

    Pilot is a minimalist synth designed for immediate use with Orca via UDP. No complex setup is required as long as both applications are running.

    1. Launch Orca and Pilot.
    2. In Orca, ensure the UDP node is pointing to port 49161.
    3. Use the following commands to interact with Pilot:
      • Play a note: ;03Cff
      • Add reverb: ;revff
    ;03Cff
    ;revff
  4. Configure Bitwig on Linux via JACK

    main

    To route MIDI from Orca to Bitwig on Linux using JACK, follow these steps:

    1. Quit Bitwig.
    2. Start qjackctl.
    3. In Bitwig, go to Setup > Settings > Parameters and set MIDI Driver to none (disables jack-midi).
    4. In Bitwig, go to Setup > Misc and ensure Enable ALSA Sequencer Support is checked.
    5. Stop Jack and quit qjackctl.
    6. Run sudo modprobe snd_virmidi midi_devs=1 to enable virtual MIDI.
    7. Start qjackctl and start Jack.
    8. In the Connections window, connect your MIDI device (e.g., 0: QuNexus MIDI 1) to 0:VirMIDI 5-0.
    9. Open Bitwig.
    10. Under Options > Preferences > Controllers, click Add controller manually.
    11. Choose Generic MIDI Keyboard and select Virtual Raw MIDI/1 as the input.
  5. Configure MIDI and Communication Ports

    main

    Set up MIDI devices and network communication protocols:

    MIDI

    • Play/Pause MIDI: CmdOrCtrl+Space
    • Next Input Device: CmdOrCtrl+,
    • Next Output Device: CmdOrCtrl+.
    • Refresh Devices: CmdOrCtrl+Shift+M

    Communication

    • Choose OSC Port: alt+O
    • Choose UDP Port: alt+U
  6. Move, Scale, and Drag Operators

    main

    Navigate and manipulate elements using arrow keys and modifiers. 'Leap' commands allow for larger movements.

    Basic Movement

    • Move: ArrowUp, ArrowRight, ArrowDown, ArrowLeft (North, East, South, West)
    • Scale: Shift+ArrowUp, Shift+ArrowRight, Shift+ArrowDown, Shift+ArrowLeft (North, East, South, West)
    • Drag: Alt+ArrowUp, Alt+ArrowRight, Alt+ArrowDown, Alt+ArrowLeft (North, East, South, West)

    Leap Movement (Large Steps)

    • Move (Leap): CmdOrCtrl+ArrowUp, CmdOrCtrl+ArrowRight, CmdOrCtrl+ArrowDown, CmdOrCtrl+ArrowLeft
    • Scale (Leap): CmdOrCtrl+Shift+ArrowUp, CmdOrCtrl+Shift+ArrowRight, CmdOrCtrl+Shift+ArrowDown, CmdOrCtrl+Shift+ArrowLeft
    • Drag (Leap): CmdOrCtrl+Alt+ArrowUp, CmdOrCtrl+Alt+ArrowRight, CmdOrCtrl+Alt+ArrowDown, CmdOrCtrl+Alt+ArrowLeft
  7. Install and run Orca via Electron

    main

    To run Orca locally using the Electron desktop environment, clone the repository, navigate to the desktop directory, and use npm to install dependencies and start the application.

    git clone https://github.com/hundredrabbits/Orca.git
    cd Orca/desktop/
    npm install
    npm start
  8. Send OSC messages to SonicPi

    main

    To control SonicPi using Orca's OSC operator (=), configure SonicPi to listen on port 4560.

    In SonicPi, use sync to listen to the address defined in Orca. For example, to trigger a live_loop named :drum when Orca sends an OSC message to path /osc*/a, use the following SonicPi code:

    live_loop :drum do
      use_real_time
      sync "/osc*/a"
      sample :bd_haus, rate: 1
    end

    In Orca, bang the OSC node with the target path, e.g., =a.

  9. Connect Orca to VCV Rack

    main

    To send MIDI from Orca to VCV Rack:

    1. Start VCV Rack and add a VCV MIDI-CV module.
    2. Set the MIDI Driver parameter:
      • Windows: Select loopMIDI (ensure you have created a device in loopMIDI first).
      • Linux: Select ALSA.
    3. Set the MIDI Interface parameter:
      • Windows: Select the loopMIDI device you created.
      • Linux: Select the default MIDI Through device.
    4. Start Orca.
    5. Use the hotkey Ctrl+Period to cycle through Orca's MIDI output devices until your target device appears in the lower-right corner of the Orca interface.
    6. Send a MIDI command, such as :03c88, to trigger a note and gate.
    :03c88