# 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 ] [--poly ] [--rate ] [--midi-name ] ``` 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.