Commit Graph
14 Commits
Author SHA1 Message Date
Bendik Aagaard LynghaugandClaude Fable 5.1 4bf13a2bf0 Channel tags, stems, master chain, FM, K envelope, slide, UDP control, reconnect
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>
2026-10-08 18:44:40 +02:00
Bendik Aagaard Lynghaug b53fdd5a6d chore: Release galdr version 0.2.4
Release / update-aur (push) Successful in 14s
Release / build (x86_64, ubuntu-latest, /sccache, x86_64-unknown-linux-gnu) (push) Successful in 14m57s
Release / build (aarch64, aarch64, /var/lib/gitea-runner/sccache, aarch64-unknown-linux-gnu) (push) Successful in 1m24s
2026-10-07 22:37:26 +02:00
Bendik Aagaard LynghaugandClaude Fable 5.1 f9f06568bf audio: render only the frames PipeWire requests per cycle
The process callback filled the whole mapped buffer every cycle. PipeWire
sizes that buffer by clock.quantum-limit (8192 frames by default) while the
graph drives galdr at the 256-frame quantum we ask for, so each cycle did
~32x the work and everything past the quantum was dropped: choppy output,
constant deadline misses in pw-top, and envelopes that sounded 32x faster
than their settings. Use Buffer::requested (pipewire feature v0_3_49),
clamped to the buffer, with the --latency value as fallback.

tui: typing a glyph no longer advances the cursor to the right.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 22:37:17 +02:00
Bendik Aagaard LynghaugandClaude Opus 4.8 392ceceeff ci: no sccache install on the bare aarch64 (klokka) runner; builtin:checkout
Gate the sccache install to the ephemeral x86_64 container; on the bare klokka
runner check-and-fail (the tarball was x86_64-only, so it was a host mutation
and a wrong-arch binary). Switch checkout to v4 builtin:checkout.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-28 12:39:09 +02:00
Bendik Aagaard LynghaugandClaude Opus 4.8 3bee9426f8 CI: run cargo test in the build job (gates releases, like orca-rs)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GLUwWE2KmFPzhKaf67tWbx
2026-09-13 16:56:36 +02:00
Bendik Aagaard Lynghaug 9bc44a08d5 chore: Release galdr version 0.2.3
Release / build (x86_64, ubuntu-latest, /sccache, x86_64-unknown-linux-gnu) (push) Successful in 1m31s
Release / update-aur (push) Successful in 21s
Release / build (aarch64, aarch64, /var/lib/gitea-runner/sccache, aarch64-unknown-linux-gnu) (push) Successful in 1m12s
2026-09-13 16:56:05 +02:00
Bendik Aagaard LynghaugandClaude Opus 4.8 3b4782565b Tests: 22 covering grid/compile/eval/engine (was 0; orca-rs has 11)
grid: ruler_snap, resize clamps, bounds, fixed-stride preservation.
dsp:  op mapping, input/param/CC wiring, env detection, sine bounds,
      exact saw/mix samples, output summing, note gating, envelope
      rise+release, cutoff curve.
engine: A4->440, oldest-voice steal, note reaping, CC registers, limiter.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GLUwWE2KmFPzhKaf67tWbx
2026-09-13 16:56:03 +02:00
Bendik Aagaard Lynghaug fa3390f09e chore: Release galdr version 0.2.2
Release / build (aarch64, aarch64, /var/lib/gitea-runner/sccache, aarch64-unknown-linux-gnu) (push) Successful in 1m22s
Release / update-aur (push) Successful in 21s
Release / build (x86_64, ubuntu-latest, /sccache, x86_64-unknown-linux-gnu) (push) Successful in 1m29s
2026-09-13 16:16:34 +02:00
Bendik Aagaard LynghaugandClaude Opus 4.8 edd9ff70c6 Resizable grid with orca's bindings: ( ) width, _ + height, Ctrl+arrows
Grid is now dynamic (w/h up to a max, fixed-stride storage so slot indices
stay stable and content isn't remapped). Ruler marks (+) on empty cells for
orientation; cursor clamps on shrink; status shows the size.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GLUwWE2KmFPzhKaf67tWbx
2026-09-13 16:16:32 +02:00
Bendik Aagaard Lynghaug 071d1b6d63 chore: Release galdr version 0.2.1
Release / build (aarch64, aarch64, /var/lib/gitea-runner/sccache, aarch64-unknown-linux-gnu) (push) Successful in 1m24s
Release / build (x86_64, ubuntu-latest, /sccache, x86_64-unknown-linux-gnu) (push) Successful in 1m32s
Release / update-aur (push) Successful in 21s
2026-09-13 14:13:18 +02:00
Bendik Aagaard LynghaugandClaude Opus 4.8 fded9796fa TUI: '?' help overlay, minimal status bar, diff renderer (fix SSH flicker)
Full clear+redraw each frame flickered on terminals that ignore
synchronized-update (macOS Terminal over SSH). Now only changed cells
repaint; full clear happens only on resize or help toggle. The glyph
legend moves into a '?'-toggled help overlay; the bottom bar just shows
voices/latency and the quit/help hints.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GLUwWE2KmFPzhKaf67tWbx
2026-09-13 14:13:16 +02:00
Bendik Aagaard Lynghaug cc7eb0e4cc chore: Release galdr version 0.2.0
Release / build (x86_64, ubuntu-latest, /sccache, x86_64-unknown-linux-gnu) (push) Successful in 1m26s
Release / build (aarch64, aarch64, /var/lib/gitea-runner/sccache, aarch64-unknown-linux-gnu) (push) Successful in 1m31s
Release / update-aur (push) Successful in 22s
2026-09-13 14:06:22 +02:00
Bendik Aagaard LynghaugandClaude Opus 4.8 e68d50a78f Uppercase operator glyphs, more effects, drop embedded spectrum
- Operators are now UPPERCASE (orca-style): O A U V N sources, L H B SVF
  filters (with resonance), E G R envelope/gain/ringmod, S C F D shapers
  (soft/clip/fold/decimate), M mix, ! out. Digits = constants, lowercase = CC.
- TUI rewritten on crossterm reusing orca-rs's grid-view approach (centered
  canvas, per-glyph colour); the spectrum is gone - run spectrust on the side.
- Drops the ratatui and rustfft deps.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GLUwWE2KmFPzhKaf67tWbx
2026-09-13 14:06:12 +02:00
Bendik Aagaard LynghaugandClaude Opus 4.8 d2778e169a galdr 0.1.0: terminal grid synthesizer (MIDI in, PipeWire out)
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
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