Files
orca-rs/README.md
T
bl bf388576a3
Release / build (aarch64, aarch64, aarch64-unknown-linux-gnu) (push) Successful in 5m23s
Release / build (x86_64, ubuntu-latest, x86_64-unknown-linux-gnu) (push) Successful in 5m32s
Release / update-aur (push) Successful in 12s
Initial release: Orca VM, TUI, MIDI/OSC/UDP output, and release pipeline
2026-07-07 17:40:00 +02:00

85 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# orca-rs
A Rust port of [Orca-c](https://github.com/hundredrabbits/Orca-c), the livecoding
environment for procedural sequencing.
## Install
On Arch Linux:
```sh
yay -S orca-rs
```
## Build
```sh
cargo build --release
```
Requires ALSA headers on Linux (`alsa-lib`) for MIDI support.
## Run
```sh
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`.
There is also a headless runner, equivalent to orca-c's `cli`:
```sh
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 |
| `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 |
| `(` / `)` | BPM 10 / +10 |
| 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/bin/orca-cli.rs` — headless runner, counterpart of `cli_main.c`
## Releasing
Releases are cut with [cargo-release](https://github.com/crate-ci/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`.