shawn
3f7257aa23
RT performance tuning: IRQ affinity, chrt, xrun tracking, reference doc
...
CI / test (push) Has been cancelled
- Add USB audio IRQ affinity pinning to core 3 in main.py
- Add enable_xrun_tracking() to AudioSystem for kernel-level diagnostics
- Wrap Python process with chrt -f 80 in systemd service template
- Add LimitSIGPENDING=128 for signal queue depth
- Create scripts/rt-tune.sh — comprehensive RT tuning startup script
(IRQ affinity, CPU governor, C-states, ALSA limits, xrun_debug)
- Create docs/rt-performance-tuning.md — reference doc with all
tuning knobs, measurement tools, and systematic procedure
Targets: <12ms RT latency (8ms ideal), zero xruns, CPU <40% at 512/48k
2026-06-20 15:58:59 -04:00
shawn
2558306e78
fix: code review batch 2 — multi-channel, thread safety, DSP reset, MIDI, hotspot, NAM, docs/CI, code quality
CI / test (push) Has been cancelled
2026-06-17 22:38:30 -04:00
shawn
11c62868cf
Add UX & API test plan — 10 sections, 60 tests covering block toggle, param updates, preset CRUD, audio profile switching, volume/bypass, WebSocket broadcasts, UI visuals, edge cases, and channel isolation
2026-06-13 22:20:20 -04:00
shawn
659e53766a
fix(bass-presets): move factory presets to channel subdirs + per-channel install
...
Root cause: factory presets for bass (banks 17-20) sat in the root
factory dir alongside guitar presets, and install_factory_presets()
used rglob() which picked up ALL presets into the GUITAR channel.
Changes:
- Move bank_17-20 from presets/factory/ → presets/factory/bass/
(matching the existing keys/, vocals/, backing_tracks/ layout)
- Fix install_factory_presets() to scan channel-specific subdirectory:
GUITAR scans root bank_* dirs, all others scan <channel>/bank_*
- Fix main.py to iterate over all 5 channels when installing factory
presets (was only installing into GUITAR)
- Import Channel enum in main.py
Tests: 56/56 preset manager tests pass. Integration verified:
- GUITAR: 68 presets (banks 0-16)
- BASS: 16 presets (banks 17-20, SansAmp/Darkglass/Ampeg SVT)
- KEYS: 12 presets (banks 21-23)
- VOCALS: 12 presets (banks 24-26)
- BACKING_TRACKS: 12 presets (banks 27-29)
2026-06-13 10:23:57 -04:00
shawn
5c51b3db28
feat(nam): download 10 new A2 models for bass, orange, and other missing categories
...
Bank 7 — Bass: Ampeg PF20T, Aguilar Tone Hammer 500, GK 800RB (Gallien-Krueger), Aguilar DB751
Bank 7 — Orange: Orange Rocker 30 Dirty + Natural
Bank 7 — Others: Fender Bassman dimed, Hiwatt DR103 Bright + Cornish, Supro Black Magick M3
All SlimmableContainer v0.7.0, ~287-295 KB, verified JSON.
Also fixed Bank 2 Tone3000 storage keys to include .nam extension (Tone3000 changed URL format).
Inventory updated: 54 → 64 total models.
2026-06-13 02:09:56 -04:00
shawn
11c838a27e
docs: add 17 NAM rock, high-gain & ambient models to inventory (Banks 4-6)
2026-06-13 01:56:40 -04:00
shawn
04fb12dcdc
download: 62 real cabinet IRs from GitHub (fnpngn/IR)
...
Sources downloaded via git-lfs:
- DYNAX IR pack (Fender, Vox, Marshall, Mesa, Bogner, etc.)
- 1960a Marshall 4x12 SM57/Audix i5 captures (96kHz → 48kHz)
- Allure Pack (vintage 1x10, 1x12, 2x12)
- ML Sound Lab free IRs
- Dauntless IRs (Engl Fireball)
- Master Of Puppets IRs
- Modern Metal Songwriter IRs
- FREE BASS IR Pack
- ML NAM AI Cab.nam bonus model
All IRs converted to 48kHz, 16-bit mono WAV. Inventory updated with
full per-file breakdown. Original 7 synthetic IRs preserved.
2026-06-13 01:54:20 -04:00
shawn
e11956881f
Add Bank 12: Blues genre presets — SRV, Muddy/Buddy, B.B. King, Gary Moore
...
Bank 12 (Blues) with 4 factory presets covering 9 legendary blues artists:
- Preset 0: Texas Flood (SRV) — TS808 + Fender Super Reverb
- Preset 1: Mannish Boy (Muddy Waters) — Fender Bassman cranked w/ slapback
- Preset 2: The Thrill (B.B. King) — Twin Reverb clean w/ comp
- Preset 3: Still Got the Blues (Gary Moore) — Marshall crunch w/ delay
Includes docs/blues-genre-research.md with full gear deep-dives, NAM
model sourcing guide (Tone3000 URLs), chain architectures, and
parameter value rationale for all 9 artists (SRV, B.B. King, Albert King,
Freddie King, Muddy Waters, Buddy Guy, Gary Moore, Joe Bonamassa,
John Mayer).
2026-06-13 00:52:28 -04:00
shawn
0a21297f77
t_59dfed5b: Dual DSP Chain feasibility research document
2026-06-12 23:10:32 -04:00
shawn
77a757cee6
R1: Dashboard 500 fix, Phase 2/7 uncommitted changes
...
- Fix dashboard 500 when deps disconnected — _gather_state() now returns
full defaults instead of bare {'connected': False}
- Phase 2: FX param schemas aligned with DSP implementations
- Phase 7: Pipeline routing, preset manager improvements
- Factory presets: cleanup and normalization
Fixes dashboard crash on disconnected state (dogfood issue #1 )
2026-06-12 14:02:13 -04:00
shawn
1301a8a128
docs: update test plan with Phase 2/7 results, README test count -> 574, close Gitea issues #1 #2
2026-06-12 13:36:39 -04:00
shawn
da3097c2dc
docs(presets): add factory-presets.md reference
...
Document all 3 banks (12 presets) with chain, parameters, and best-use notes.
2026-06-12 03:06:48 -04:00
shawn
9481130f13
test: Focusrite 2i2 test plan, mono + 4CM config files
2026-06-09 00:31:53 -04:00
shawn
dbb3b9d84f
docs: module catalog, 3D model, touchscreen concept, and PCB preview
2026-06-09 00:28:16 -04:00
shawn
c2071a9724
feat(audio): Focusrite 2i2 stereo JACK config for 4CM
...
Adds:
- AudioConfig.mode field: 'mono' (default) or 'stereo_4cm'
- capture_channels / playback_channels properties for dynamic JACK -i/-o counts
- FOCUSRITE_PROFILES dict with focusrite_2i2_3gen entry
- AudioSystem.channel_mapping_help() static method
- stereo_4cm port auto-connect wiring (4 cable method)
- Systemd service content uses dynamic channel counts
- Default config YAML includes 'mode: mono'
- 11 new tests (31 total pass)
- Focusrite 4CM wiring docs in docs/config-audio.md
2026-06-08 10:40:38 -04:00
shawn
b7f5488efd
Keep Avahi for pedal.local mDNS, add web UI task
2026-06-08 00:38:37 -04:00
shawn
9e6f23cdb0
Fix minimize script: keep bluetooth+wifi, update baseline doc
2026-06-08 00:23:01 -04:00
shawn
39bac0b0cd
Build: DietPi OS minimization
...
- dietpi-postinstall.sh: first-boot setup from DietPi minimal with only
needed packages (Python, JACK, cmake, GPIO libs, I2C tools)
- minimize.sh: removes unused packages, systemd services, and kernel
modules with --dry-run and --aggressive modes; saves before/after profiles
- build-minimal-image.sh: produces flashable SD card image from scratch
(download DietPi + provision) or from a running SD card device
- baseline-footprint.md: documents before/after RAM, disk, boot time
targets and verification checklist
Closes t_38b86d31 — DietPi OS minimization
2026-06-08 00:12:40 -04:00
shawn
0ae2ca6e8e
feat: PCM1808+PCM5102 I2S HAT design files
...
Custom I2S HAT for Pi Multi-FX Pedal — full hardware package:
- KiCad project: schematic (kicad_sch), PCB layout (kicad_pcb), project file
- Custom DT overlay: pcm1808-pcm5102-overlay.dts (no upstream overlay exists for PCM1808)
- docs/hardware-bom.md: BOM (9.25 HAT + 1.75 with enclosure), wiring diagram, PCB design notes
- docs/config-audio.md: DT overlay build, ALSA config, JACK integration, troubleshooting
- scripts/install_hat.sh: One-command install + test suite (6 tests)
- hardware/gerber/: JLCPCB fab instructions and assembly notes
Circuit: Guitar input → TL072 preamp (gain ~20dB) → PCM1808 ADC → RPi I2S
→ PCM5102 DAC → RC filter → output jack
I2S: BCLK/GPIO18, LRCLK/GPIO19, DIN/GPIO20, DOUT/GPIO21
Stacking header passes all 40 GPIO pins for footswitches/LEDs/display
2026-06-07 23:52:13 -04:00
shawn
0e77adb4c3
Build IR convolution engine
...
- Full FFT overlap-add IR convolution in IRLoader (process(), set_mix(), toggle)
- Lazy FFT computation — IR FFT padded to correct block+ir size on first process()
- Wet/dry mix control, enabled/disabled toggle with tail clearing
- Fixed pipeline._apply_ir_cab() to delegate to IRLoader.process() instead of
poking internals (old code had array-size mismatch bug: IR FFT at ir_len vs
block FFT at conv_size)
- 46 tests: loading, convolution correctness, overlap-add state, mix, toggle,
directory listing, performance budget (all <5ms even at 8192 taps), edge cases
- scripts/download_irs.sh: free IR pack downloader (God's Cab, Seacow)
2026-06-07 23:46:02 -04:00
shawn
c38a7b0fd8
Add main entry point + systemd services + integration tests
...
New files:
main.py - PedalApp: boots all subsystems in order,
wires MIDI/footswitch callbacks, graceful
teardown reverses boot order
src/system/config.py - YAML config loader with deep-merge
(separated to avoid hardware deps)
src/system/services.py - systemd unit generator for pedal.service
+ multi-fx-pedal.target
scripts/install_service.sh - copies project, creates venv, installs
+ enables service units
tests/test_integration.py - 41 tests: boot, routing, display sync,
teardown, systemd content, CLI, edge cases
Modified:
tests/conftest.py - add project root to sys.path
2026-06-07 23:39:50 -04:00
shawn
ed29748a62
Initial scaffold: Pi Multi-FX Pedal with NAM A2, IR cab, multi-FX, MIDI, stomp UI
2026-06-07 23:22:43 -04:00