galdr 0.1.0: terminal grid synthesizer (MIDI in, PipeWire out)
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
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user