Skip to content

machine: Fretwire pickups, wiring and bodies - #24

Merged
nooga merged 1 commit into
claude/physical-piano-drumsfrom
claude/fretwire-bodies
Oct 16, 2026
Merged

nooga merged 1 commit into
claude/physical-piano-drumsfrom
claude/fretwire-bodies

Conversation

@nooga

@nooga nooga commented Oct 16, 2026

Copy link
Copy Markdown
Owner

Stacked on #23 (Hammerwork Grand + Skinwork Kit, which adds the shared-state host features this uses). Merge #23 first; this then retargets to master.

What

Fretwire Guitar and Fretwire Bass get a full electric/acoustic instrument around the waveguide strings (docs/41 §Fretwire: pickups, wiring and bodies):

  • Pickups — NECK/BRIDGE positions, SELECT NECK/BOTH/BRIDGE/OUT, per-pickup type (guitar SINGLE/P-90/HUMBUCK, bass SINGLE/SPLIT/HUMBUCK) with coil-aperture combs, HEIGHT (magnet pull nonlinearity).
  • Wiring — coil L/R + cable + tone pot circuit (RESO/PEAK solve the cable C and load), TONE and VOL pots.
  • Body — one shared bridge + modal body for all strings (shared! / voice-level!): SOLID/SEMI/HOLLOW/ACOUSTIC (bass SOLID/HOLLOW/ACOUSTIC), COUPLE, AIR radiation, PIEZO, SYMP sympathetic strings.
  • New pages: PLAY and GUITAR/BASS.

Compatibility

Control ids kept (old TONE/RES are now RESO/PEAK). COUPLE 0 nulls against the old Fretwire at −111…−126 dB; the default SOLID body changes old songs by a −18…−30 dB residual (CHANGELOG notes it).

Presets

23 factory presets: guitar default, fingers, bridge, slide, palm-mute, funk, jazz, twin-humbucker, p90-crunch, semi-hollow, out-of-phase, acoustic; bass default, pick, palm-mute, fingers-bridge, flatwound, pop, slap, jazz-both, p-bass, hollow, acoustic. twin-humbucker and jazz-both are fitted against Karoryfer Emily / Growlybass (spectral error 11.0→7.5 dB and 12.8→7.8 dB). Levels calibrated on a DI riff render.

Testing

  • zig build test passes.
  • zig build bench -- --all --check --no-sheets: guitar/bass/grand/kit bit-exact (goldens re-recorded for guitar/bass). The run exits 1 only because shift2/resonator2/buffer2/phaser2 have no goldens — pre-existing on master.
  • Cost: guitar chord 176 → 480 ns/smp ReleaseFast (SYMP ≈ +100 ns when on).
  • Listened to the tour demo in the app.

🤖 Generated with Claude Code

@nooga
nooga added this pull request to stack #25 October 16, 2026 21:38
Guitar and bass now share a bridge, a modal body and the pickup wiring
across their strings: two pickups (single coil, P-90, humbucker, split)
with selector, height and out-of-phase; a coil/cable/tone-pot circuit;
SOLID/SEMI/HOLLOW/ACOUSTIC bodies with AIR, PIEZO and sympathetic
strings. COUPLE 0 reproduces the previous sound. New presets fitted
against Karoryfer's Emily and Growlybass, the rest re-voiced.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@nooga
nooga force-pushed the claude/fretwire-bodies branch from 4997598 to 9c4ef87 Compare October 16, 2026 21:49
@nooga
nooga merged commit 8910890 into master Oct 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant