Files
galdr/README.md
T
Bendik Aagaard LynghaugandClaude Opus 4.8 d2778e169a
Release / build (x86_64, ubuntu-latest, /sccache, x86_64-unknown-linux-gnu) (push) Successful in 2m3s
Release / build (aarch64, aarch64, /var/lib/gitea-runner/sccache, aarch64-unknown-linux-gnu) (push) Successful in 2m46s
Release / update-aur (push) Successful in 23s
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
2026-09-13 13:24:18 +02:00

59 lines
1.8 KiB
Markdown
Raw Permalink 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.
# 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.