Six new letters: T LFO (rate/shape, tremolo with an input), I slew
limiter, Q pitch quantizer (scale/octaves, transposes the oscillators
below it), J stepped random, P phaser (voice or master), Y comparator.
Any control op left of an operator feeds its left param, as K does.
Punctuation maths with the cell to the left: + - * (signal or constant),
% attenuverter, | max, & min, ~ sample-and-hold on a rising trigger.
A column's input is now only an operator above it, so a channel tag or
param glyph above T/J no longer flips them into VCA mode on silence.
Height resize moves from _ + to [ ] since + is a glyph now.
examples/modular.galdr: wobble bass, Q arpeggio, J crackle, Y/K pulse.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Grid grammar:
- a base-36 glyph above a column's top operator tags it with a MIDI channel;
'>' right of the tag makes the channel mono-legato (60 ms slide)
- operators below a '!' form the stereo master chain: Z delay, W chorus,
plus any filter/shaper
- X: phase modulation by the cell to the left (and above), index from the right
- K: control envelope; left of an operator it drives that operator's left
param (2KL5 = 303 filter sweep)
- per-note params: @ velocity, ^ key tracking, ? random; registers now read
on the digit scale, so MIDI CC and UDP registers have full range
I/O:
- MIDI keeps the channel nibble
- UDP (orca's ';', port 49161): k7 register, *3 bang a column, @34O write
a glyph, #name load a patch
- --stems n: one mono PipeWire node per channel tag (galdr.ch<tag>),
sample-aligned with the master; separate nodes because a playback
stream's AUX ports deliver no data in PipeWire 1.6
- the audio thread reconnects when PipeWire restarts; status line shows it
- patches: ~/hometaping/<date>.galdr by default, .galdr extension, Ctrl+S,
GALDR_DEBUG=<file> logs events
Examples with render tests: drums, orchestra, acid.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>