Signal flows downward through single-glyph unit generators; each MIDI note voices the whole grid; the mix renders low-latency to PipeWire (reusing the native path from spectrust). Grid edits recompile and hot-swap without dropping audio. Pairs with orca (note/CC source) and spectrust (visualizer). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GLUwWE2KmFPzhKaf67tWbx
galdr
A terminal grid synthesizer. Signal flows downward through a field of single-glyph unit generators; every incoming MIDI note voices the whole grid; the mix is rendered low-latency to PipeWire. It is orca's voice — the same esoteric, spatial approach to programming, but for making sound instead of sending events.
orca-rs ──MIDI/OSC/UDP──▶ galdr ──PipeWire──▶ speakers
compose the pattern voice it (spectrust -p visualizes it)
The grid
Signal flows down: each cell takes the sample from the cell above as its
input. The left and right neighbour glyphs are parameters — a digit 0–9 is
a constant, a letter a–z reads MIDI CC (a = CC 0).
| glyph | unit generator |
|---|---|
~ |
sine (ratio ← left) |
^ |
saw (ratio ← left) |
_ |
pulse (width ← left) |
v |
triangle |
* |
noise |
f |
lowpass (cutoff ← left) |
e |
envelope, attack/release ← left/right, gated by the note |
s |
shaper / drive ← left |
! |
output to master |
Each ! sums into the master, so parallel columns stack timbres or voices.
A note plays every column at once.
Example — a filtered saw with an envelope:
^ saw at the note pitch
f lowpass, cutoff from the digit to its left...
e ...enveloped by the note gate
! ...to master
Editing the grid recompiles and hot-swaps the running program without dropping audio.
Usage
galdr [--latency <frames>] [--poly <n>] [--rate <hz>] [--midi-name <s>]
galdr creates a virtual MIDI input port named galdr; connect orca or any
sequencer/DAW to it. --midi-name connects to an existing port instead.
Cursor keys move; type a glyph to place it; Backspace clears; Esc quits.
Runtime deps: PipeWire and ALSA (MIDI). Built in Rust; reuses the native PipeWire path from spectrust.