Bendik Aagaard LynghaugandClaude Opus 4.8 2ed1edd72e ci: no sccache install on the bare aarch64 (klokka) runner; builtin:checkout
Gate the sccache install to the ephemeral x86_64 container; on the bare klokka
runner check-and-fail (the tarball was x86_64-only, so it was a host mutation
and a wrong-arch binary). Switch checkout to v4 builtin:checkout.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-28 12:39:11 +02:00
2026-09-13 12:16:38 +02:00
2026-09-13 12:16:28 +02:00

orca-rs

A Rust port of Orca-c, the livecoding environment for procedural sequencing.

Install

On Arch Linux:

yay -S orca-rs

Build

cargo build --release

Requires ALSA headers on Linux (alsa-lib) for MIDI support.

Run

orca-rs [options] [file.orca]

With no file, edits save to untitled.orca. A named file that doesn't exist yet is created on first save.

Option Effect
--bpm <n> Tempo (default 120; one tick = one 16th note)
--seed <n> Random seed for the R operator
--udp-port <n> / --udp-host <h> Send ; strings over UDP (host defaults to 127.0.0.1)
--osc-port <n> / --osc-host <h> Send = messages over OSC
--no-midi Disable MIDI output (on by default)
--midi-name <s> Connect to an existing MIDI port whose name contains <s>
--list-midi List MIDI output ports and exit

MIDI is on by default: orca-rs creates a virtual ALSA sequencer port named orca-rs, which PipeWire exposes through its Midi-Bridge — connect it to a synth with qpwgraph/Helvum, or find it under wpctl status.

A default MIDI port to connect to (instead of creating a virtual one) can be set in ~/.config/orca-rs/config.toml:

midi_name = "IAC Driver"

--midi-name on the command line overrides it.

There is also a headless runner, equivalent to orca-c's cli:

orca-cli -t 60 file.orca   # simulate 60 ticks, print the grid

Keys

Key Action
Arrow keys Move cursor (Alt+arrows: leap by 8)
Shift+arrows Grow/shrink selection
Ctrl+arrows Resize grid by 1 cell
( / ) Resize grid width, snapped to the nearest ruler division
_ / + Resize grid height, snapped to the nearest ruler division
0-9 a-z A-Z ! : ; = # * . ? Place glyph (fills selection)
Backspace / Delete Erase selection
Space Play / pause
Ctrl+F Step one frame (while paused)
Ctrl+R Reset frame counter
< / > BPM −1 / +1
Ctrl+Z or Ctrl+U Undo
Ctrl+X / Ctrl+C / Ctrl+V Cut / copy / paste selection
Ctrl+S Save
Esc Collapse selection
Ctrl+Q Quit

Layout

  • src/sim/ — the VM: all operators, ported from orca-c's sim.c
  • src/tui.rs — terminal UI (crossterm), counterpart of tui_main.c
  • src/io.rs — UDP / OSC / MIDI event output
  • src/config.rs — ~/.config/orca-rs/config.toml (default MIDI port)
  • src/bin/orca-cli.rs — headless runner, counterpart of cli_main.c

Releasing

Releases are cut with cargo-release (cargo release patch|minor), which bumps Cargo.toml and aur/PKGBUILD and pushes a v* tag. The Gitea Actions workflow then builds x86_64 and aarch64 tarballs, attaches them to the Gitea release, and pushes the updated PKGBUILD to the AUR. Required repo secrets: GITEA_TOKEN, AUR_SSH_KEY.

S
Description
Rust port of orca
Readme MIT
78 KiB
v0.1.2
Latest
2026-09-13 10:16:38 +00:00
Languages
Rust 98.6%
Shell 1.4%