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. Glyphs are UPPERCASE operators. A digit 0–9 to the left/right is a constant parameter; a lowercase letter a–z reads MIDI CC (a = CC 0).

glyph unit generator left / right param
O sine ratio
A saw ratio
U pulse width
V triangle —
N noise —
L H B low / high / band-pass (SVF) cutoff / resonance
E envelope (gated by the note) attack / release
S soft clip (tanh) drive
C hard clip threshold
F wavefolder amount
D decimate / bitcrush rate
G gain amount
R ring modulator ratio
M mix — adds the cell to its 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:

A        saw at the note pitch
L        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. There is no embedded scope — run a spectrum analyzer (e.g. spectrust) on the side if you want one.

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.

Keys: cursor keys move; type a glyph to place it; Backspace clears; ? toggles help; Esc quits. Resize the grid with ( / ) (width) and _ / + (height) by one ruler division, or Ctrl+arrows by one cell (orca's bindings).

Runtime deps: PipeWire and ALSA (MIDI). Built in Rust; reuses the native PipeWire path from spectrust.

S
Description
Terminal grid synthesizer: signal flows through single-glyph unit generators, MIDI in, low-latency PipeWire out
Readme MIT
119 KiB
v0.3.0
Latest
2026-10-08 16:44:45 +00:00
Languages
Rust 99.2%
Shell 0.8%