diff --git a/docs/genre-research.md b/docs/genre-research.md
new file mode 100644
index 0000000..c13a0be
--- /dev/null
+++ b/docs/genre-research.md
@@ -0,0 +1,835 @@
+# Genre Tones & NAM Model Sourcing — Complete Reference
+
+**Project:** pi-multifx-pedal (Raspberry Pi 4B)
+**Generated:** 2026-06-13
+**Format:** All NAM models should be Architecture 2 (WaveNet) unless noted.
+**Target:** Feather/small class models (< 10 MB) for real-time RPi 4B inference.
+
+---
+
+## Overview
+
+This document covers 12 core genres plus Blues (Bank 12, documented separately in `docs/blues-genre-research.md`). For each genre:
+
+- 2–3 iconic bands that define the sound
+- Their guitar gear (amp, cab, pedals)
+- Key settings (gain structure, EQ, effects)
+- NAM A2 captures to source from ToneHunt/tone3000.com
+- Cabinet IR recommendations
+- Mapping to existing models in the pedal's library
+
+---
+
+## 1. CLASSIC ROCK
+
+### Genre Summary
+
+Classic Rock is built on cranked, non-master-volume tube amps pushed into power-amp saturation. The core is a **Marshall Plexi or JTM45 dimed**, often with a treble booster or fuzz for extra saturation. Big, mid-forward, aggressive upper-mids with rolled-off low end.
+
+**NAM Rig Architecture:**
+
+| Path | Model | FX | Usage |
+|------|-------|----|-------|
+| Clean | `Fender_TwinVerb_Clean.nam` + MXR_M77_Feather (treble boost) | None | Hendrix cleans, Page clean intros |
+| Crunch | `JCM2000_Crunch.nam` (gain 30–50%) | None | AC/DC rhythm, Zeppelin rhythm |
+| Lead/Boost | TS808_Feather in front of JCM2000 | Slapback delay | Page solos |
+| Fuzz | Model Tone Bender / Fuzz Face via Feather or dedicated NAM | None | Hendrix, early Zeppelin |
+
+---
+
+### Led Zeppelin — Jimmy Page
+
+**Guitars:** 1959 Gibson Les Paul Standard (main 1958–1973), 1959 Fender Telecaster (first album), Danelectro 3021, Gibson EDS-1275 double-neck
+
+**Signal Chain:** Guitar → Sola Sound Tone Bender MkII (fuzz) → Vox Cry Baby wah → Maestro Echoplex EP-3 (tape echo) → Marshall Super Lead 1959 100W Plexi → Marshall 4x12 w/ Celestion G12M 25W Greenbacks
+
+**Amp Settings (Marshall Super Lead — bridged channels dimed):**
+| Control | Setting |
+|---------|---------|
+| Volume I | 10 (maxed) |
+| Volume II | 10 (maxed) |
+| Treble | 8–10 |
+| Middle | 5–7 |
+| Bass | 2–4 |
+| Presence | 7–9 |
+
+**Gain Structure:** Power-amp saturation from full-volume Plexi. Tone Bender fuzz for "How Many More Times." No master volume — all from cranked amp.
+**Key EQ:** Mid-forward, aggressive upper-mids, rolled-off low end to stay tight with Les Paul's natural bass.
+
+**NAM Model Recommendations:**
+- From existing library: `JCM2000_Crunch.nam` at lower gain as Plexi substitute
+- ToneHunt A2 captures to source:
+ - "Marshall Plexi Super Lead 1959 - KT66"
+ - "Marshall JTM45 Bluesbreaker - Full Crank"
+ - "Supro Thunderbolt 1965" (Led Zeppelin I cleans)
+ - "Marshall Super Lead 1969 100W - Vintage"
+
+**IR Recommendation:** Marshall 4x12 G12M Greenback, SM57 4" off-center at cone edge. Packs: York Audio Marshall 412 G12M-25 or ML Sound Lab MIK 412 G12M.
+
+**Technique:** Hybrid picking, aggressive right-hand attack. Neck pickup for rhythm, bridge for lead. Double/triple tracking for massive layered sound.
+
+---
+
+### AC/DC — Angus Young
+
+**Guitars:** 1968 Gibson SG Standard ("The Beast"), 1963 Gibson SG Junior (P-90s)
+
+**Signal Chain:** Guitar → Schaffer-Vega Diversity System (wireless + preamp/comp) → Marshall Super Lead 1959 100W Plexi (Jose Arredondo modded) → Marshall 4x12 w/ G12M Greenbacks
+
+**Amp Settings (Marshall 1959 #39 — modded):**
+| Control | Setting |
+|---------|---------|
+| Volume | 8–10 |
+| Bass | 0–2 (nearly off) |
+| Middle | 5–6 |
+| Treble | 5–7 |
+| Presence | 5–8 |
+
+**NAM Model Recommendations:**
+- From library: `JCM2000_Crunch.nam` — gain ~30%, bass low, mids high
+- ToneHunt A2: "Marshall Plexi 1959 - AC/DC Rhythm", "Marshall JTM45 Cranked - 1967", "Jose Marshall Fmod 100W"
+
+**IR:** Marshall 4x12 G12M Greenback, SM57 at center of cone, 4" from grill. York Audio Marshall 412 M25.
+
+**Technique:** Downstrokes only. Volume knob cleans up for A section, cranked for chorus. Neck pickup live, bridge on recordings.
+
+---
+
+### Jimi Hendrix
+
+**Guitars:** 1968 Fender Stratocaster (right-handed flipped, reverse headstock)
+
+**Signal Chain:** Guitar → Dallas Arbiter Fuzz Face (Germanium) → Vox Cry Baby wah → Roger Mayer Octavia → Uni-Vibe → Marshall Super Lead 1959 100W Plexi → Marshall 4x12 w/ G12M Greenbacks
+
+**Amp Settings (Marshall JTM100 / 1959):**
+| Control | Setting |
+|---------|---------|
+| Volume | 10 (dimed) |
+| Tone | ~6–7 |
+| Presence | 7–9 |
+| Bass | 5–6 |
+| Middle | 5–7 |
+| Treble | 6–8 |
+
+**NAM Model Recommendations:**
+- From library: `Fender_TwinVerb_Clean.nam` as clean platform with modeled Fuzz Face. `JCM2000_Crunch.nam` at full gain for Plexi.
+- ToneHunt A2: "Marshall Plexi Super Lead - Jimi Hendrix Profile", "Marshall JTM100 Cranked - 1968", "Fuzz Face Germanium - Direct Capture", "Uni-Vibe Rotary Speaker"
+
+**IR:** Marshall 4x12 G12M Greenback, 75Hz resonance. ML Sound Lab MIK 412 G12M or York Audio 412 M25.
+
+**Technique:** Thumb-over-neck F chord (Hendrix grip). Volume knob swells. Wide vibrato, extreme bends.
+
+---
+
+## 2. PUNK
+
+### Genre Summary
+
+Punk tone is about **aggressive, raw midrange** — cranked amps, minimal effects, and aggressive downpicking. Three distinct approaches: Ramones (dimed Plexi, no pedals), Dead Kennedys (RAT into JCM800), Bad Religion (boosted Dual Rectifier + JCM800 dual-amp wall).
+
+| Channel | Model | Boost | Notes |
+|---------|-------|-------|-------|
+| Ramones | `JCM2000_Crunch.nam` (gain >60%) | None | Bass=0, mids/treble=10 |
+| DK | `JCM2000_Crunch.nam` (gain 40%) | SD1_Feather (gain 9:00, level 3:00, tone 9:00) | Simulates RAT's dark distortion |
+| Bad Religion | `5150_BlockLetter_Boosted.nam` (gain ~50%) | SD1_Feather (drive 0, level max, tone 12:00) | Or stack JCM2000 + 5150 for dual-amp wall |
+
+---
+
+### Ramones — Johnny Ramone
+
+**Guitars:** Mosrite Ventures II (main 1974–1990)
+
+**Signal Chain:** Guitar → (nothing) → Marshall Super Lead 1959 100W Plexi → Marshall 4x12 w/ G12M Greenbacks
+
+**Amp Settings:** Both channels bridged and dimed. Volume I=10, II=10, Treble=10, Middle=10, Bass=0–2, Presence=10.
+
+**NAM:** "Marshall Plexi Super Lead - Full Tilt", "Marshall JTM45 Cranked - No Master". From library: `JCM2000_Crunch.nam` gain ~60–70%, bass=0, mids/treble full.
+
+**IR:** Marshall 4x12 G12M Greenback, SM57 dead center. York Audio 412 G12M-25.
+
+**Technique:** Downstrokes exclusively. Mosrite single-coil bridge pickup.
+
+---
+
+### Dead Kennedys — East Bay Ray
+
+**Guitars:** 1965 Fender Stratocaster (main), Mosrite Ventures II (early)
+
+**Signal Chain:** Guitar → ProCo RAT (LM308) → MXR Phase 90 → Boss CE-2 Chorus → Marshall JCM800 2203 → Marshall 4x12 w/ G12M Greenbacks
+
+**Amp Settings:** Preamp 4–6, Master 7–8, Bass 3–4, Middle 7–8 (key — counteracts RAT's scoop), Treble 6–7, Presence 5–6.
+
+**NAM:** "Marshall JCM800 2203 - Cranked", "ProCo RAT LM308 - Direct Capture". From library: `JCM2000_Crunch.nam` (gain 40%) + `BOSS_SD1_Feather.nam` (gain low, level high, tone 30%).
+
+**IR:** Marshall 4x12 G12M Greenback, SM57 slightly off-center.
+
+---
+
+### Bad Religion — Brett Gurewitz / Greg Hetson
+
+**Guitars:** Gibson Les Paul / PRS (Brett), Fender Strat HSS / Les Paul (Greg)
+
+**Signal Chain:** Brett: Guitar → Boss SD-1 → Mesa Dual Rectifier (Modern Red) → Mesa 4x12 V30. Greg: Guitar → Boss SD-1 → Marshall JCM800 2203 → Marshall 4x12 G12T-75.
+
+**Amp Settings (Dual Rectifier):** Gain 12:00–2:00, Bass 9:00–10:00, Mid 1:00–3:00 (KEY — not scooped), Treble 1:00–2:00, Presence 11:00–1:00.
+
+**NAM:** "Mesa Dual Rectifier - Modern Red", "Marshall JCM800 2203 - Bad Religion". From library: `5150_BlockLetter_Boosted.nam` (gain ~50%) + `BOSS_SD1_Feather.nam` (drive 0, level max, tone 12:00).
+
+**IR:** Mesa 4x12 V30 (Brett), Marshall 4x12 G12T-75 (Greg). Blend V30 + T75 at 50/50 for single-IR solution.
+
+**Technique:** Two-guitar layering — run two NAM instances (Dual Rec + JCM800) for the wall.
+
+---
+
+## 3. METAL
+
+### Genre Summary
+
+Three distinct metal tones: Sabbath (cranked Laney + treble booster), Metallica (Mark IIC+ with V-scoop + OD boost), Slayer (boosted JCM800 with G12T-75 buzzsaw).
+
+| Channel | Model | Boost/Pre | IR |
+|---------|-------|-----------|-----|
+| Sabbath | `JCM2000_Crunch.nam` (gain 60–80%) | `MXR_M77_Feather.nam` as treble booster (bass low, treble pushed) | G12H-30 (York Audio 412 G12H-30) |
+| Metallica | `5150_BlockLetter_Boosted.nam` (gain ~50%) | `TS808_Feather.nam` (drive 0, level max, tone 12:00) | Mesa V30 (York Audio Mesa 412 V30) |
+| Slayer | `JCM2000_Crunch.nam` (gain 70–80%) | `BOSS_SD1_Feather.nam` (drive 2, level 10, tone 2:00) | G12T-75 (York Audio 412 T75) |
+
+---
+
+### Black Sabbath — Tony Iommi
+
+**Guitars:** 1964 Gibson SG Special (P-90s), 1965 Gibson SG Custom (humbuckers)
+
+**Signal Chain:** Guitar → Dallas Rangemaster (treble booster) → Dallas Arbiter Fuzz Face (early years) → Laney LA100BL Supergroup (100W) → Laney 4x12 w/ Celestion G12H-30
+
+**Amp Settings (Laney LA100BL — dimed):** Volume=10, Treble=10, Middle=8–10, Bass=0–2, Presence=7–9.
+
+**NAM:**
+- From library: `MXR_M77_Feather.nam` as Rangemaster substitute (bass rolled off, gain moderate) → `JCM2000_Crunch.nam`
+- ToneHunt A2: "Laney LA100BL Supergroup - Cranked", "Marshall Super Lead 1959 - Rangemaster Boost", "Dallas Rangemaster Treble Booster - Preamp"
+
+**IR:** Laney 4x12 w/ Celestion G12H-30 — darker, more low-end than Greenbacks. G12H-30 is essential. York Audio 412 G12H-30.
+
+**Technique:** Iommi downtuned (Eb → D → C# standard). Tritone riffs. Three-finger fretting. Light gauge strings (8–38!).
+
+---
+
+### Metallica — James Hetfield
+
+**Guitars:** Gibson Explorer, ESP JH-1/MX-220
+
+**Signal Chain:** Guitar → Maxon OD-808 (clean boost) → Mesa Boogie Mark IIC+ → Mesa 4x12 Straight w/ Celestion V30s
+
+**Amp Settings (Mark IIC+):** Lead Drive=6–7, Lead Master=3–4, Bass=2–3, Middle=3–4, Treble=6–7, Presence=7–8. Graphic EQ V-shape: +6 (80Hz), -6 (240Hz), +3 (750Hz), -9 (2200Hz), +6 (6600Hz).
+
+**NAM:**
+- From library: `5150_BlockLetter_Boosted.nam` (gain ~40–50%) + `TS808_Feather.nam` (drive 0, level max, tone 12:00)
+- ToneHunt A2: "Mesa Mark IIC+ - Lead Channel", "Mesa Mark IIC+ - Master of Puppets Rhythm", "Fortin Natas - Boosted"
+
+**IR:** Mesa 4x12 Straight w/ V30, SM57 at 1" from grill, edge of cone. York Audio Mesa 412 V30.
+
+**Technique:** Downpicking at extreme speed. Palm muting on bridge. Gallop rhythm: 8th + two 16ths.
+
+---
+
+### Slayer — Kerry King / Jeff Hanneman
+
+**Guitars:** B.C. Rich Warlock/KKW (Kerry), ESP JV-200 (Jeff). Both Floyd Rose.
+
+**Signal Chain:** Both: Guitar → Boss SD-1 (or TS9) → Marshall JCM800 2203 → Marshall 4x12 w/ Celestion G12T-75s
+
+**Amp Settings (JCM800 2203):** Preamp=7–8, Master=7–9, Bass=6–8 (Jeff heavy, Kerry moderate), Middle=5–7, Treble=7–8, Presence=7–8.
+
+**NAM:**
+- From library: `JCM2000_Crunch.nam` (gain 70–80%) + `BOSS_SD1_Feather.nam` (drive 2, level 10, tone 2:00). `Engl_Savage.nam` for post-2000 Slayer.
+- ToneHunt A2: "Marshall JCM800 2203 - Boosted SD1", "Marshall JCM800 2204 - 50W Slayer Rhythm", "Marshall JCM800 2203 - DIO Modded"
+
+**IR:** Marshall 4x12 w/ G12T-75 — brighter, more aggressive than V30s. SM57 dead center, 1/2" off grill. York Audio 412 T75.
+
+**Technique:** Kerry: downpicking + tremolo picking on low E. Two-guitar layering hard-panned left/right.
+
+---
+
+## 4. HARDCORE
+
+### Genre Summary
+
+Hardcore guitar tone is **aggressive, mid-forward, and raw** — high-gain tube amps boosted with overdrive or distortion pedals. Three approaches: Converge (modded Marshall + Mesa blend with RAT), Hatebreed (5150 tightened with OD808), Minor Threat (JMP + RAT for classic hardcore crunch).
+
+| Channel | Model | Boost | IR |
+|---------|-------|-------|-----|
+| Converge | Marshall 2204 + Mesa Rec blend | RAT | Greenbacks + V30 blend |
+| Hatebreed | 5150/6505+ (gain 6-7) | OD808 (drive 0, level max) | Mesa 4x12 V30 |
+| Minor Threat | JMP 2204 (gain 7-8) | RAT (dist 9:00, filter 11:00) | Marshall 1960BV G12M |
+
+---
+
+### Converge — Kurt Ballou
+
+**Guitars:** Gibson Les Paul Custom / ESP Eclipse (.012-.056, D standard)
+
+**Signal Chain:** Guitar -> ProCo RAT (main) -> Boss HM-2 -> ISP Decimator gate -> 70s Marshall Super Lead 100W (GodCity mod) + Mesa Triple Rectifier -> Mesa 4x12 V30 + Marshall 1960BV G12M
+
+**Amp Settings:** Gain 6-7, Bass 5, Mids 7-8, Treble 6, Presence 5. Mid-forward.
+
+**NAM:** "Kurt Ballou Marshall Super Lead", "Mesa Boogie Dual Rec Vintage", "Marshall 2204 RAT". IRs: York Audio 1960BV G12M-25 + Mesa 4x12 V30.
+
+---
+
+### Hatebreed — Wayne Lozinak
+
+**Guitars:** ESP/LTD EC-series (Drop C#/.012-.060)
+
+**Signal Chain:** Guitar -> Maxon OD808 (drive 0, tone 12:00, level max) -> Boss NS-2 gate -> Peavey 5150/6505+ -> Peavey 5150 4x12 slant / Mesa 4x12 V30
+
+**Amp Settings (5150):** Pre-gain 6-7, Low 4-5, Mid 7-8 (surprisingly high), High 6-7, Presence 6-7.
+
+**NAM:** "Peavey 5150 Maxon OD808", "EVH 5153 Stealth". IR: ML Sound Lab Zilla 4x12, OwnHammer 412 MAR CB.
+
+---
+
+### Minor Threat — Lyle Preslar
+
+**Guitars:** Gibson SG Standard
+
+**Signal Chain:** Guitar -> ProCo RAT (dist 9:00, filter 11:00) -> Marshall JMP 50W (2204) -> Marshall 1960A 4x12 G12M Greenbacks
+
+**Amp Settings:** Volume 7-8 (power tube saturation). RAT for distortion.
+
+**NAM:** "Marshall JMP 2204 RAT", "Marshall Plexi 1959 Greenback". IR: York Audio 1960BV G12M-25.
+
+---
+
+## 5. EMO
+
+### Genre Summary
+
+Emo tone splits clean/edge and driven: Fender clean or Vox chime for verses, pushed with Klon/TS for choruses. Mid-forward, articulate, with modulation (chorus/phase).
+
+| Must-Have Models | Must-Have IRs |
+|------------------|---------------|
+| Fender DeVille, Vox AC30, Fender Twin, Matchless DC30 | AC30 2x12 Blue, Fender Twin JBL, Marshall 1960BV |
+
+---
+
+### Jimmy Eat World - Jim Adkins
+
+**Guitars:** Fender Telecaster (ash/maple)
+
+**Signal Chain:** Guitar -> Klon Centaur (always-on, gain 9:00, output 2:00) -> Ibanez TS9 (leads) -> Boss CE-2 Chorus -> Holy Grail reverb -> Boss DD-3 delay -> Fender Hot Rod DeVille 4x10 / Vox AC30
+
+**Amp Settings:** DeVille clean, vol 4-5, treble 6, mids 5, bass 4, reverb 3. Klon pushes into gentle breakup.
+
+**NAM:** "Fender Hot Rod DeVille clean", "Vox AC30 Top Boost", "Matchless DC30". IR: York Audio AC30 2x12 Blue.
+
+---
+
+### Dashboard Confessional - Chris Carrabba
+
+**Guitars:** Takamine EN-10C / Gibson J-45 acoustic, Fender Telecaster (electric)
+
+**Signal Chain:** Guitar -> Boss CE-2 Chorus -> Boss DD-6 delay -> Fulltone OCD (gain 9:00, LP mode) -> Holy Grail reverb -> Vox AC30 / Fender Twin Reverb
+
+**NAM:** "Vox AC30 Clean", "Fender Twin Reverb clean". IR: York Audio AC30 Blue, OwnHammer 212 VOX-AC CB.
+
+---
+
+### My Chemical Romance - Ray Toro / Frank Iero
+
+**Guitars:** Ray: Gibson Les Paul Custom / PRS CE24. Frank: Epiphone Wilshire / Fender Tele. D Standard/Drop C.
+
+**Signal Chain:** Ray -> Mesa Triple Rectifier (vintage mode). Frank -> Marshall JCM800 2203 (modded). Both plus Vox AC30 (cleans). Dual-amp wall.
+
+**Amp Settings (Dual-amp):** Ray: Recto vintage, gain 5-6, bass 4, mids 6, treble 6, SD-1 boost. Frank: JCM800 preamp 6-7, bass 4, mids 8, treble 7, TS9 boost.
+
+**NAM:** "Mesa Dual Rectifier Vintage", "Marshall JCM800 2203", "Bogner Uberschall". IR: York Audio Mesa 412 V30 + Marshall 1960BV blended.
+
+---
+
+## 6. MIDWEST EMO
+
+### Genre Summary
+
+Clean, bright, compressed Fender tones with heavy use of chorus, phaser, and compressor for the signature "twinkly" clean guitar sound. Capo-heavy, tapping, arpeggiated.
+
+| Must-Have Models | Must-Have IRs |
+|------------------|---------------|
+| Fender Twin, Fender DeVille, Roland JC-120, JCM800 (low gain) | Fender Twin JBL, Fender 4x10 Jensen, JC-120 |
+
+---
+
+### American Football - Mike Kinsella / Steve Holmes
+
+**Guitars:** Fender Telecaster (Kinsella), Gibson Les Paul / Rickenbacker 360 (Holmes). Capo extensively.
+
+**Signal Chain:** Guitar -> MXR Dyna Comp (always-on) -> Boss CE-2 Chorus -> MXR Phase 90 -> Boss DD-3 delay -> Ibanez TS9 (driven) -> Fender Twin Reverb / Fender Deluxe Reverb / Roland JC-120
+
+**Amp Settings:** Twin volume 4-5, treble 6, mids 4, bass 4, reverb 4. Comp sustain 11:00, attack 2:00.
+
+**NAM:** "Fender Twin Reverb Clean", "Roland JC-120", "Fender Deluxe Reverb". IR: York Audio Fender Twin JBL.
+
+---
+
+### Tiny Moving Parts - Dylan Mattheisen
+
+**Guitars:** Fender Telecaster, capo 5th-7th fret
+
+**Signal Chain:** Guitar -> Boss CS-3 Compressor (always-on, sustain 1:00, attack 3:00) -> EarthQuaker Plumes (mode 1, gain 10:00, level 2:00) -> Boss CE-5 Chorus -> Boss RV-6 reverb -> Fender Hot Rod DeVille 4x10
+
+**NAM:** "Fender HRDx 4x10 Clean", "Fender Twin Reverb". IR: ML Sound Lab Fender 4x10 Super.
+
+---
+
+### Algernon Cadwallader - Peter Helmis
+
+**Guitars:** Fender Telecaster, capo 3rd-7th fret
+
+**Signal Chain:** Guitar -> MXR Dyna Comp (always-on) -> Ibanez TS9 (driven) -> Boss CE-2 Chorus -> Holy Grail reverb -> Fender Hot Rod DeVille 4x10 / Marshall JCM800 (driven)
+
+**NAM:** "Fender Blues DeVille", "Marshall JCM800 2203", "Fender Deluxe Reverb". IR: York Audio Fender Twin JBL + Marshall 1960BV blend.
+
+---
+
+## 7. DJENT
+
+### Genre Summary
+
+Extended-range guitars (7- and 8-string), tight palm-muted chugs, high-gain preamp with boost pedal tightening the low end. Noise gate always on. Modern high-gain IRs with V30 speakers.
+
+| Band | Amp | Boost | IR |
+|------|-----|-------|-----|
+| Meshuggah | Fractal Axe-Fx / Randall Warhead | Boss HM-2 (modded) | Mesa OS 4x12 V30 |
+| Periphery | Mesa Mark V / EVH 5150 III | Precision Drive / OD808 | Mesa 4x12 OS V30 |
+| TesseracT | Fractal Axe-Fx / ENGL Powerball | OD808 | Mesa OS 4x12, Bogner Uberkab |
+
+---
+
+### Meshuggah
+
+**Guitars:** Ibanez 8-string custom (28.75" scale), tuned F#-B-E-A-d-g-b-e
+
+**Signal Chain:** Guitar -> Fractal Axe-Fx II/III (amp sim + cab sim) -> FOH. Historically: Boss HM-2 -> Randall Warhead -> Randall 4x12
+
+**Key Settings:** Gain 5-7/10, Bass 3-4, Mids 6-7, Treble 6-8, Presence 7-8. Tight threshold noise gate. Tube screamer boost tightens low end.
+
+**NAM:** "Fractal Axe-Fx III 5150", "Randall Warhead", "Boss HM-2 into clean amp". IR: Mesa OS 4x12 V30, York Audio Mesa 412 OS.
+
+---
+
+### Periphery — Misha Mansoor
+
+**Guitars:** PRS, Ibanez, Strandberg 7-string (various drop tunings)
+
+**Signal Chain:** Guitar -> Horizon Precision Drive / OD808 (drive 0, level 10, tone 11:00) -> Mesa Mark V (IIC+ mode) / EVH 5150 III -> Mesa 4x12 V30
+
+**Amp Settings (Mark V, IIC+ mode):** Gain 5-7, Bass 4, Mids 5-6, Treble 6-7, Presence 5-6. Graphic EQ: V-shape with cut at 240Hz, boost at 750Hz and 6kHz.
+
+**NAM:** "Mesa Mark V IIC+", "EVH 5150 III Stealth", "Horizon Precision Drive into 5150". IR: OwnHammer 412 MDRN, Mesa 412 OS.
+
+---
+
+### TesseracT
+
+**Guitars:** Ibanez, Strandberg, Mayones 7- and 8-string
+
+**Signal Chain:** Guitar -> Fractal Axe-Fx III (amp+cab sim). Previously: Mesa Dual Rectifier, ENGL Powerball.
+
+**Key Settings:** Amp block modeled on EVH 5153 or PVH 6160. Gain 4-6, Bass 4-5, Mids 5-6 (less scooped), Treble 6-7, Presence 4-5. Bass cut around 80Hz.
+
+**NAM:** "ENGL Powerball II", "Mesa Dual Rectifier (modern)", "EVH 5150 III 50W", "Fractal PVH 6160 Block". IR: Mesa OS 4x12 V30, ENGL 4x12 V30, OwnHammer 412 OS.
+
+**ToneHunt tags:** djent, modern metal, 8-string, 7-string, 5150, Mark V, Rectifier, Fractal
+
+---
+
+## 8. ACOUSTIC
+
+### Genre Summary
+
+Acoustic instruments don't use traditional guitar cabs. For NAM modeling on the pi-multifx-pedal: use **DI preamp captures** (Neve 1073, API 512c, AER Compact 60) and **room IRs** instead of cab IRs. Minimal compression and reverb.
+
+| Artist | Primary | Signal Path |
+|--------|---------|-------------|
+| Simon & Garfunkel | Martin D-28 | Neumann U47 -> Neve console -> tape |
+| Nick Drake | Martin 0-18 | Neumann U67 -> tape |
+| John Fahey | Martin 0-18 | RCA 44 ribbon -> tube console -> tape |
+
+---
+
+### Simon & Garfunkel — Paul Simon
+
+**Guitars:** Martin D-28 (dreadnought), Martin 0-18, Guild F-30, Ramirez classical
+
+**Studio Chain:** Martin D-28 -> Neumann U47 -> Neve console -> tape. No amplification — all purely acoustic recording.
+
+**NAM:** DI preamp captures: "Neve 1073 DI", "API 512c DI", "LA-2A compressor". Room IR for natural ambience.
+
+---
+
+### Nick Drake
+
+**Guitars:** Martin 0-18 (1950s), Levin Goliath
+
+**Studio Chain:** Martin 0-18 -> Neumann U67 or AKG C24 stereo pair -> tape. Dark, intimate, close-miked.
+
+**NAM:** "Neumann U67 preamp", "Neve 1073 preamp", "Fairchild 670 compressor", "Studer A800 tape saturation".
+
+---
+
+### John Fahey
+
+**Guitars:** Martin 0-18, Martin 00-18, Gibson J-45
+
+**Studio Chain:** Martin -> RCA 44 ribbon mic or Neumann U47 -> tube console -> tape. Fingerpicks (metal), alternate tunings.
+
+**NAM:** "RCA 44 ribbon mic preamp", "Universal Audio 610 preamp", "Pultec EQP-1A EQ", "Tape saturation (Studer/Ampex)".
+
+**IR:** Room IRs, church/hall IR, plate reverb IR. No cab.
+
+**ToneHunt tags:** acoustic DI, preamp, tube preamp, Neve, API, ribbon mic, studio preamp
+
+---
+
+## 9. GRUNGE
+
+### Genre Summary
+
+Raw, unpolished — fuzz/distortion into overdriven tube amp. Heavy midrange (NOT scooped). Drop D tunings common. Wah, phaser, chorus for atmosphere.
+
+| Path | Model | FX | Usage |
+|------|-------|----|-------|
+| Clean | `Vox_AC15_TopBoost.nam` or `Fender_TwinVerb_Clean.nam` | Chorus | Nirvana verses |
+| Crunch/Fuzz | `JCM2000_Crunch.nam` (gain 60%) + Big Muff | Phase 90 | Soundgarden, AIC rhythm |
+| Lead | `5150_BlockLetter_Boosted.nam` (gain 50%) | Wah, slapback delay | Solos |
+
+---
+
+### Nirvana — Kurt Cobain
+
+**Guitars:** Fender Mustang, Fender Jag-Stang, Univox Hi-Flier
+
+**Signal Chain:** Guitar -> Boss DS-2 (dist max, tone 7-9) / EHX Big Muff Pi -> Vox AC30 (Top Boost) -> 2x12 combo
+
+**Amp Settings:** AC30 volume cranked 8-10, Treble 6-8, Bass 5-6, Cut 4-5.
+
+**NAM:** "Vox AC30 Top Boost", "Vox AC30 Big Muff" (combined capture ideal), "Boss DS-2 into AC30". From library: `Vox_AC15_TopBoost.nam`.
+
+**IR:** Vox AC30 2x12 Blue Alnico. York Audio AC30 Blue. Marshall Greenbacks for later era.
+
+**Technique:** Fizzy, woolly distortion. Mustang bridge pickup. Loose low end intentionally.
+
+---
+
+### Soundgarden — Kim Thayil
+
+**Guitars:** Guild S-100, Gibson SG. Drop C# / open D tunings.
+
+**Signal Chain:** Guitar -> Ibanez TS9 (boost) -> Boss DS-1 / Big Muff -> Mesa Dual Rectifier (Modern) -> Mesa OS 4x12 V30
+
+**Amp Settings:** Gain 6-7, Bass 6-7, Mids 5-6, Treble 6-7, Presence 5-6. TS9 (drive 0, level 10).
+
+**NAM:** "Mesa Dual Rectifier (Modern)", "Marshall JCM800 2203", "Ibanez TS9 into Dual Rectifier". IR: York Audio Mesa 412 OS.
+
+---
+
+### Alice in Chains — Jerry Cantrell
+
+**Guitars:** G&L Rampage, Gibson Les Paul Custom
+
+**Signal Chain:** Guitar -> MXR Micro Amp (clean boost) -> Dunlop Crybaby wah -> MXR Phase 90 -> Bogner Fish preamp -> Marshall power amp -> Marshall 4x12 Greenbacks
+
+**Amp Settings (Bogner Fish):** Gain 6-8, Bass 6, Mids 7-8 (very high!), Treble 5-6, Presence 4-5.
+
+**NAM:** "Bogner Fish preamp", "Marshall JCM800 2203", "Mesa Mark III lead", "Soldano SLO-100". IR: Marshall 4x12 Greenbacks. York Audio Marshall 412 Greenback.
+
+**Technique:** Dark, thick, heavy "sludge" tone. Mid-forward. Drop D tuning. Wah used as filter.
+
+**ToneHunt tags:** grunge, 90s, vox ac30, dual rectifier, bogner, soldano, big muff, marshall jcm800
+
+---
+
+## 10. ALTERNATIVE ROCK
+
+### Genre Summary
+
+Dynamic contrast — shifting between clean, jangly verses and explosive, distorted choruses. Guitars used texturally: chiming cleans, wall-of-fuzz distortion, arpeggiated delay washes. Spans Vox chime, Marshall crunch, and Mesa high-gain.
+
+| Path | Model | FX | Usage |
+|------|-------|----|-------|
+| Clean/Jangle | `Fender_TwinVerb_Clean.nam` or `Vox_AC15_TopBoost.nam` | Comp, subtle chorus | Radiohead verses, Pixies surf-clean |
+| Crunch | `JCM2000_Crunch.nam` (gain 40-50%) | Boost/OD | Smashing Pumpkins rhythm, Pixies verses |
+| Distorted | `Orange_Rockerverb.nam` or `JCM900_Lead.nam` | Fuzz (Big Muff), RAT | Pumpkins wall, Pixies chorus |
+| Lead | As above + MXR_M77_Feather or TS808_Feather | Delay, reverb | Solos, atmospheric leads |
+
+---
+
+### Radiohead — Jonny Greenwood / Ed O'Brien
+
+**Guitars:** Jonny: Fender Telecaster Plus (lace sensors), Fender Starcaster, Jazzmaster. Ed: Fender Tele Deluxe (wide-range humbuckers).
+
+**Signal Chain (Jonny):** Tele -> Ross Compressor (always-on) -> ProCo RAT -> DOD 440 Envelope Filter -> EHX Small Stone Phaser -> DigiTech Whammy -> Marshall ShredMaster -> Vox AC30 (Top Boost) -> 2x12 cab
+
+**Signal Chain (Ed):** Tele Deluxe -> Boss SD-1 (boost) -> Line 6 DL4 (delay/loop) -> EHX Holy Grail -> Boss RE-20 Space Echo -> Vox AC30 / Fender Twin
+
+**Amp Settings (Vox AC30):** Top Boost Volume 5-6, Treble 7-8, Bass 4-5, Cut 4-5, Reverb 2-3.
+
+**NAM:**
+- From library: `Vox_AC15_TopBoost.nam` for AC30 clean/pushed (pair with Ross Comp simulation), `Fender_TwinVerb_Clean.nam` for Ed's clean, `JCM2000_Crunch.nam` for ShredMaster at gain ~50-60%, `BOSS_SD1_Feather.nam` as clean boost.
+- ToneHunt A2: "Vox AC30 Top Boost - Compressed Clean", "Marshall ShredMaster - Distortion", "ProCo RAT LM308 - Vintage", "Ross Compressor - Studio", "DOD 440 Envelope Filter", "Small Stone Phaser - Vintage"
+
+**IR:** Vox AC30 2x12 Celestion Blue AlNiCo. York Audio Vox AC30 Blue.
+
+**Technique:** Ross Compressor always-on (non-negotiable). Whammy for melodic pitch shifts. Ed's looping on DL4.
+
+---
+
+### Smashing Pumpkins — Billy Corgan
+
+**Guitars:** 1975 Gibson Les Paul Custom (DiMarzio Super Distortion bridge)
+
+**Signal Chain:** Les Paul -> EHX Op-Amp Big Muff Pi -> Marshall ShredMaster -> Boss CS-2 Comp -> EHX Small Clone Chorus -> MXR Phase 90 -> A/DA Flanger -> Marshall JCM800 2203 (cranked) -> Marshall 4x12 G12M Greenbacks
+
+**Amp Settings (JCM800 2203):** Preamp 8-10, Master 5-7, Bass 3-4, Middle 7-8 (not scooped!), Treble 6-7, Presence 7-8.
+
+**NAM:**
+- From library: `JCM2000_Crunch.nam` (gain 80-90%), `JCM900_Lead.nam` for later albums, `Fender_TwinVerb_Clean.nam` for clean intros, `Mesa_MarkIV_Lead.nam` (Adore era).
+- ToneHunt A2: "EHX Op-Amp Big Muff Pi - Direct Capture" (ESSENTIAL), "Marshall JCM800 2203 - Cranked with Big Muff", "EHX Small Clone Chorus - Vintage", "A/DA Flanger - Vintage", "Boss CS-2 Comp - Sustain Mode"
+
+**IR:** Marshall 4x12 G12M Greenbacks. Greenbacks essential. York Audio 412 G12M-25.
+
+**Technique:** Dozens of layered guitar tracks for the wall. Big Muff: Volume=2:00, Tone=12:00-1:00, Sustain=3:00. Aggressive downstrokes with 2mm pick.
+
+---
+
+### Pixies — Joey Santiago / Frank Black
+
+**Guitars:** Joey: 1965 Fender Jaguar (main). Frank: Fender Telecaster.
+
+**Signal Chain (Joey):** Jaguar -> ProCo RAT (dist 10:00-11:00, filter rolled back) -> Marshall JCM800 2203/2204 -> Marshall 4x12 G12M Greenbacks
+
+**Signal Chain (Frank):** Tele -> direct into Fender Twin Reverb (clean, spring reverb)
+
+**Amp Settings (JCM800):** Preamp 6-7, Master 7-8, Bass 3-4, Middle 7-8, Treble 6-7, Presence 5-6.
+
+**NAM:**
+- From library: `Fender_TwinVerb_Clean.nam` for Frank's surf-clean, `JCM2000_Crunch.nam` (gain 50-60%), `BOSS_SD1_Feather.nam` as RAT sub (drive low, level high, tone 9:00).
+- ToneHunt A2: "ProCo RAT - Low Gain - Filter Rolled Back" (essential), "Marshall JCM800 2204 - 50W Medium Gain", "Fender Twin Reverb - Surf Clean", "Fender Twin Reverb - Spring Reverb Cranked"
+
+**IR:** Marshall 4x12 G12M Greenback (Joey), Fender Twin 2x12 JBL (Frank).
+
+**Technique:** Loud-Quiet-Loud dynamic. Joey's Jaguar on bridge pickup. No chorus/flanger — dry and direct. Slapback delay for surf feel.
+
+**ToneHunt tags:** alternative rock, 90s alternative, vox ac30, marshall jcm800, fender twin, big muff opamp, radiohead, smashing pumpkins, pixies
+
+---
+
+## 11. GARAGE ROCK
+
+### Genre Summary
+
+Raw, stripped-down, lo-fi aesthetic. Vintage gear, minimal signal chains, dimed small amps. Philosophy: less is more. Cheap pawn-shop guitars, vintage amps cranked, fuzz pedals for color. Small-speaker cabs (1x8, 1x10, 1x12).
+
+| Path | Model | FX | Usage |
+|------|-------|----|-------|
+| Clean/Breakup | `Fender_TwinVerb_Clean.nam` or `Vox_AC15_TopBoost.nam` | None or light reverb | White Stripes rhythm, Strokes verses |
+| Fuzz | `Orange_Rockerverb.nam` (cranked) or Fuzz Face NAM | Octave fuzz | White Stripes main, Black Keys |
+| Crunch | `JCM2000_Crunch.nam` (gain 40-60%) | TS808 boost | Strokes leads, Black Keys rhythm |
+
+---
+
+### The White Stripes — Jack White
+
+**Guitars:** 1964 Montgomery Ward Airline "JB Hutto" res-o-glass (fiberglass, single pickup)
+
+**Signal Chain:** Guitar -> MXR Micro Amp (clean boost) / Dunlop Fuzz Face (Germanium) -> Fender Twin Reverb (dimed!)
+
+**Amp Settings (Fender Twin):** Volume=10 (DIMED!), Treble=10, Bass=4-5, Reverb=2-3. NO effects loop.
+
+**NAM:**
+- From library: `Fender_TwinVerb_Clean.nam` pushed hard with `MXR_M77_Feather.nam` or `Precision_Drive_Feather.nam` as clean boost (set to high level).
+- ToneHunt A2: "Fender Twin Reverb - Dimed - Power Tube Saturation" (ESSENTIAL), "Dunlop Fuzz Face Germanium - Gated", "DigiTech Whammy - Octave Down", "MXR Micro Amp - Clean Boost", "Airline Res-O-Glass - Bridge Pickup DI"
+
+**IR:** Fender Twin Reverb 2x12 combo — NOT a separate cab. York Audio Fender Twin JBL.
+
+**Technique:** Dimed Twin Reverb. Thin guitar picks (~0.5mm). Guitar volume knob is the control. No distortion pedals (except fuzz).
+
+---
+
+### The Strokes — Albert Hammond Jr. / Nick Valensi
+
+**Guitars:** Nick: Epiphone Riviera P-94 (semi-hollow). Albert: Fender Stratocaster.
+
+**Signal Chain (Nick):** Riviera -> JHS Angry Charlie (Marshall-in-a-box) / ProCo RAT -> Fender Hot Rod DeLuxe 1x12
+
+**Signal Chain (Albert):** Strat -> Boss DS-1 (dist low, level high) / MXR Distortion+ -> Fender Hot Rod DeLuxe 1x12
+
+**Amp Settings (HRDlx):** Volume 4-5 (edge of breakup), Treble 6-7, Middle 6-7, Bass 4-5, Reverb 2-3.
+
+**NAM:**
+- From library: `Fender_TwinVerb_Clean.nam` (HRDlx approximation), `JCM2000_Crunch.nam` (Angry Charlie = Marshall-in-a-box), `TS808_Feather.nam` as OD boost.
+- ToneHunt A2: "Fender Hot Rod DeLuxe - Edge of Breakup" (essential), "JHS Angry Charlie V3", "Boss DS-1 - Low Gain Boost Mode", "Epiphone Riviera P-94 - Bridge Pickup DI"
+
+**IR:** Fender Hot Rod DeLuxe 1x12 Celestion G12P-80. NOT a 4x12 sound! York Audio 112 Deluxe Reverb.
+
+**Technique:** Nick: barre chords, lower register riffs. Albert: single-note arpeggios, upper register. Overdrives as boosts into cleanish amp.
+
+---
+
+### The Black Keys — Dan Auerbach
+
+**Guitars:** 1960s Silvertone 1423 (single pickup), Harmony Silhouette, Gibson Les Paul Junior (P-90)
+
+**Signal Chain (early):** Silvertone -> direct into small dimed amp (Ampeg Jet J-12 / Silvertone 1481 1x8 / Fender Tremolux). No pedals.
+
+**Signal Chain (modern):** Les Paul -> Boss SD-1 (drive 2-3, level max) / Fulltone OCD (LP mode) -> Fender Tremolux
+
+**Amp Settings (Ampeg Jet):** Volume 7-8 (cranked), Treble 7-8, Bass 4-5.
+
+**NAM:**
+- From library: `Fender_TwinVerb_Clean.nam` for modern tones, `JCM2000_Crunch.nam` for bigger sound (pair with 1x12 IR), `BOSS_SD1_Feather.nam` (drive 2, level 10, tone 12:00).
+- ToneHunt A2: "Fender Tremolux 6G6-B - Dimed" (essential), "Ampeg Jet J-12 - Cranked", "Silvertone 1481 - 5W Cranked", "Fulltone OCD V2 - LP Mode", "Silvertone 1423 - Bridge Pickup DI"
+
+**IR:** Small 1x8 or 1x12 combo. NOT 4x12! Silverton 1481 1x8, Ampeg Jet 1x12, Fender Tremolux 2x10.
+
+**Technique:** Small amps cranked = the formula. Picking dynamics control gain. Slide guitar in open tunings. Heavy pick attack.
+
+**ToneHunt tags:** garage rock, garage revival, dimed, fender tremolux, silvertone, ampeg jet, fuzz face germanium, small wattage
+
+---
+
+## 12. POP
+
+### Genre Summary
+
+Textural and supportive — guitar is one element in a dense, produced arrangement. Clean tones dominate with heavy compression, chorus, and reverb. Drive used sparingly for color. DI preamp captures often more relevant than amp captures.
+
+| Path | Model | FX | Usage |
+|------|-------|----|-------|
+| Clean Shimmer | `Fender_TwinVerb_Clean.nam` or `Vox_AC15_TopBoost.nam` | Comp, chorus, reverb | Taylor Swift, Paramore verses |
+| Edge/Breakup | `Magnatone_Super59_Pushed.nam` or `JCM2000_Clean.nam` | Subtle drive, studio reverb | Paramore pop-punk, Billie Eilish layers |
+| Lead/Solo | `JCM2000_Crunch.nam` (gain 30-40%) | Boost, delay | Paramore solos, pop rock choruses |
+
+---
+
+### Taylor Swift
+
+**Guitars:** Acoustic: Martin D-28, Gibson J-45. Electric: Fender Telecaster, Fender Stratocaster, Gibson ES-335.
+
+**Studio Chain:** Tele -> Universal Audio Apollo (Neve preamp) -> LA-2A/1176 compressor -> Amp sim (Fender Twin / Vox AC30) -> EMT 140 Plate reverb
+
+**Amp Settings (Fender Twin):** Volume 3-4 (clean, no breakup), Treble 5-6, Middle 4-5, Bass 4-5, Reverb 2-3.
+
+**NAM:**
+- From library: `Fender_TwinVerb_Clean.nam`, `Fender_TwinVerb_Vibrato.nam`, `Vox_AC15_TopBoost.nam`, `Magnatone_Super59_Pushed.nam`.
+- ToneHunt A2: "Fender Twin Reverb - Clean Studio Compressed", "Neve 1073 DI - Preamp", "LA-2A - Optical Compressor", "EMT 140 Plate Reverb", "Roland JC-120 - Jazz Chorus Clean", "Acoustic DI - Martin D-28 Pure Direct"
+
+**IR:** Fender Twin 2x12 JBL, boutique-1x12, vintage-1x12. Room IRs for acoustic.
+
+---
+
+### Billie Eilish — Finneas
+
+**Guitars:** Acoustic: Gibson J-45, Martin D-28. Electric: Fender Telecaster, Gibson ES-335 (occasional).
+
+**Studio Chain:** Guitar -> Universal Audio Apollo (Neve preamp) -> Logic Pro X (compressors, Space Designer reverb). Distortion almost never used.
+
+**NAM:**
+- From library: `Fender_TwinVerb_Clean.nam`, `Vox_AC15_TopBoost.nam`, `Magnatone_Super59_Pushed.nam`.
+- ToneHunt A2: "Neve 1073 DI - Preamp" (essential), "LA-2A - Optical Compressor", "Strymon BigSky - Cloud Reverb", "Eventide H9 - Blackhole Reverb", "Studer A800 - Tape Saturation", "Roland JC-120 - Stereo Chorus", "EHX Mel9 - Tape Clavinet"
+
+**IR:** Room IRs, vintage-1x12 or boutique-1x12 for generic polished sound. No cab for Billie — DI + space.
+
+**Technique:** Guitar as texture. Reverse reverb signature. Extreme dynamic control. Sub-bass from synth, not guitar.
+
+---
+
+### Paramore — Taylor York / Josh Farro
+
+**Guitars (Josh Farro — Pop-Punk era):** Gibson Les Paul Standard (humbuckers)
+
+**Guitars (Taylor York — Modern):** Fender Tele Deluxe (wide-range humbuckers), Fender Jazzmaster, Fender Bass VI
+
+**Signal Chain (Josh — Pop-Punk):** Les Paul -> Ibanez TS9 (drive 10:00, level 2:00) -> Mesa Dual Rectifier (vintage mode) -> Mesa 4x12 V30
+
+**Signal Chain (Taylor — Modern):** Tele Deluxe -> Strymon Deco (saturation + doubletrack) -> Chase Bliss Warped Vinyl -> Fender Twin Reverb (clean)
+
+**Amp Settings (Mesa Rectifier — Josh):** Gain 5-6, Bass 4-5, Middle 5-6, Treble 5-6, Presence 4-5. TS9 boost.
+
+**NAM (Pop-Punk):** "Mesa Dual Rectifier - Vintage - TS9 Boost", "Marshall JCM800 2203 - Pop Punk". From library: `5150_BlockLetter_Boosted.nam` (gain 40-50%) + `TS808_Feather.nam`, `6505_Red_NoBoost.nam`.
+
+**NAM (Modern):** `Fender_TwinVerb_Clean.nam`, `Vox_AC15_TopBoost.nam`, `Magnatone_Super59_Pushed.nam`. ToneHunt A2: "Fender Jazzmaster - Neck Pickup Clean", "Strymon Deco - Saturation + Doubletrack", "Fender Bass VI - Direct", "Boss CE-2 Chorus - Vintage", "Roland JC-120 - Stereo Chorus"
+
+**IR (Pop-Punk):** Mesa 4x12 V30. **IR (Modern):** Fender Twin 2x12, Vox AC30 2x12 Blue.
+
+**ToneHunt tags:** pop, pop rock, clean electric, studio compressor, la2a, neve preamp, plate reverb, fender twin, paramore, taylor swift
+
+---
+
+## NAM Download Priorities
+
+### Models to Source from ToneHunt (A2)
+
+Based on gaps identified across all 12 genres, prioritize these captures:
+
+| Priority | Model Capture | Genres | Notes |
+|----------|---------------|--------|-------|
+| 1 | Fender Twin Reverb - Clean Studio Compressed | Alt, Pop, Midwest Emo | Universal clean platform |
+| 2 | Marshall Plexi Super Lead 1959 - Cranked | Classic Rock, Punk | Core rock sound |
+| 3 | Vox AC30 Top Boost - Edge of Breakup | Alt, Grunge, Emo | Chime and crunch |
+| 4 | EHX Op-Amp Big Muff Pi | Alt (Pumpkins), Grunge | Essential for these genres |
+| 5 | ProCo RAT - Vintage LM308 | Alt (Pixies), Hardcore, Punk | Versatile distortion |
+| 6 | Mesa Boogie Dual Rectifier - Modern | Metal, Hardcore, Djent | High-gain standard |
+| 7 | Marshall JCM800 2203 - Boosted | Metal (Slayer), Punk | Thrash buzzsaw |
+| 8 | Fender Twin Reverb - Dimed | Garage Rock (White Stripes) | Unique sound |
+| 9 | Neve 1073 DI - Preamp | Pop, Acoustic | Studio recording standard |
+| 10 | Fender Hot Rod DeLuxe - Edge of Breakup | Garage Rock (Strokes) | 1x12 combo character |
+
+### IRs to Source
+
+| Priority | IR Pack | Genres | Notes |
+|----------|---------|--------|-------|
+| 1 | York Audio Vox AC30 Blue | Alt, Grunge, Emo | Core chime cab |
+| 2 | York Audio Marshall 412 G12M-25 | Classic Rock, Punk, Alt | Greenback standard |
+| 3 | York Audio Mesa 412 V30 | Metal, Hardcore, Djent | V30 modern metal |
+| 4 | York Audio Fender Twin JBL | Pop, Alt, Garage, Midwest Emo | Clean Fender sparkle |
+| 5 | York Audio 412 G12H-30 | Metal (Sabbath) | Essential for Iommi |
+| 6 | York Audio 412 T75 | Metal (Slayer) | Thrash buzzsaw cab |
+| 7 | York Audio 112 Deluxe Reverb | Garage Rock (Strokes) | 1x12 combo character |
+
+### Existing Library Adequacy
+
+| Genre | Adequacy | Key Existing Models |
+|-------|----------|---------------------|
+| Classic Rock | Good | JCM2000_Crunch, TS808_Feather, MXR_M77_Feather |
+| Punk | Good | 5150_BlockLetter_Boosted, JCM2000_Crunch, BOSS_SD1_Feather |
+| Metal | Good | 5150, 6505, Engl_Savage, Splawn_ProMod, TS808_Feather |
+| Hardcore | Adequate | 5150, BOSS_SD1_Feather (needs RAT capture) |
+| Emo | Adequate | Fender_TwinVerb_Clean, Vox_AC15_TopBoost (needs DeVille) |
+| Midwest Emo | Adequate | Fender_TwinVerb_Clean (needs JC-120) |
+| Djent | Weak | 5150, Engl_Savage (needs Mark V/5150 III captures) |
+| Acoustic | Weak | None suitable — needs DI preamp captures |
+| Grunge | Good | Vox_AC15_TopBoost, Fender_TwinVerb_Clean, 5150 |
+| Alternative Rock | Adequate | JCM2000_Crunch, Vox_AC15, Fender_Twin (needs Big Muff) |
+| Garage Rock | Adequate | Fender_TwinVerb_Clean, MXR_M77_Feather (needs small-amp captures) |
+| Pop | Good | Fender_TwinVerb_Clean, Vox_AC15_TopBoost (clean platform covered) |
+
+---
+
+## RPi 4B Performance Summary
+
+| Genre | Typical Model Size | Avg Models per Preset | DSP Needs | RPi Load |
+|-------|-------------------|----------------------|-----------|----------|
+| Classic Rock | 3-8 MB | 1-2 (amp + boost) | Slapback delay | Low |
+| Punk | 3-8 MB | 1-2 (amp + boost) | None | Low |
+| Metal | 5-10 MB | 2 (amp + boost) | Noise gate | Medium |
+| Hardcore | 3-8 MB | 2 (amp + boost) | Noise gate | Low-Med |
+| Emo | 3-6 MB | 1-2 (clean + boost) | Chorus/reverb | Low |
+| Midwest Emo | 3-6 MB | 1 (clean) | Comp/chorus/phase | Low |
+| Djent | 8-15 MB | 2 (amp + boost) | Noise gate | Medium-High |
+| Acoustic | 1-3 MB | 1 (DI preamp) | Reverb | Very low |
+| Grunge | 5-10 MB | 2 (amp + fuzz) | Phase/wah | Medium |
+| Alternative | 3-8 MB | 2-3 (amp + fuzz/boost) | Mod (phaser, chorus) | Medium |
+| Garage Rock | 2-5 MB | 1-2 (dimed amp + boost) | None to minimal | Low |
+| Pop | 2-5 MB | 1 (clean amp) | Comp/reverb/chorus | Very low |
+
+
+
diff --git a/docs/nam-ir-inventory.md b/docs/nam-ir-inventory.md
index bc62381..0236de5 100644
--- a/docs/nam-ir-inventory.md
+++ b/docs/nam-ir-inventory.md
@@ -1,6 +1,6 @@
# NAM Model & Cabinet IR Inventory
-> **Generated:** 2026-06-13 (updated with Bank 3 A2 captures)
+> **Generated:** 2026-06-13 (updated with Bank 7 — Bass, Orange, Others)
> **Source:** pelennor2170/NAM_models community collection on GitHub (GPL v3) + Tone3000 Supabase storage
> **Format:** Mix of WaveNet A1 and SlimmableContainer A2 models, verified JSON, all < 700 KB (feather class for RPi 4B)
@@ -104,11 +104,29 @@ Downloaded from Tone3000 Supabase storage. All are WaveNet A1 (v0.5.0/v0.5.4), v
### Bank 6 — Ambient/Post-Rock Captures (Tone3000 A1 — WaveNet)
-| File | Size | Source Model | Best For |
-|------|------|-------------|----------|
-| `Roland_JC120_Jazz_Chorus.nam` | 276 KB | Roland JC-120 Jazz Chorus | Pristine clean, ambient washes, jazz |
-| `Vox_AC30_Chimey.nam` | 290 KB | Vox AC30 Chimey | Sparkling clean, chimey post-rock |
-| `Fender_Twin_Reverb_G05.nam` | 288 KB | Tim R Fender Twin Reverb Ch1 BR G05 | Clean/country, pedal platform |
+|| File | Size | Source Model | Best For |
+||------|------|-------------|----------|
+|| `Roland_JC120_Jazz_Chorus.nam` | 276 KB | Roland JC-120 Jazz Chorus | Pristine clean, ambient washes, jazz |
+|| `Vox_AC30_Chimey.nam` | 290 KB | Vox AC30 Chimey | Sparkling clean, chimey post-rock |
+|| `Fender_Twin_Reverb_G05.nam` | 288 KB | Tim R Fender Twin Reverb Ch1 BR G05 | Clean/country, pedal platform |
+
+### Bank 7 — Bass, Orange & Others (Tone3000 A2 — SlimmableContainer)
+
+Downloaded from Tone3000 Supabase storage. All are SlimmableContainer (A2) v0.7.0, ~288-295 KB.
+Covers the missing categories: Bass amps, Orange Rocker 30, Fender Bassman, Hiwatt DR103, Supro.
+
+|| File | Size | Source Model | Category | Best For |
+||------|------|-------------|----------|----------|
+|| `Ampeg_PF20T_A2.nam` | 288 KB | Ampeg PF20T | Bass | Clean bass tube amp, warm lows |
+|| `Aguilar_Tone_Hammer_500_A2.nam` | 293 KB | Aguilar Tone Hammer 500 | Bass | Modern bass preamp, punchy mids |
+|| `GK_800RB_Line_A2.nam` | 295 KB | Gallien-Krueger 800RB | Bass | Classic solid-state bass, aggressive |
+|| `Aguilar_DB751_Cab_A2.nam` | 292 KB | Aguilar DB751 | Bass | Bass amp DI, full-range presence |
+|| `Orange_Rocker30_Dirty_A2.nam` | 295 KB | Orange Rocker 30 Dirty | Orange | Classic rock crunch, stoner/alt rock |
+|| `Orange_Rocker30_Natural_A2.nam` | 289 KB | Orange Rocker 30 Natural | Orange | Clean edge, dynamic garage tones |
+|| `Fender_Bassman_Dimed_A2.nam` | 289 KB | Fender Bassman dimed | Others | Blues/rock breakup, classic Bassman growl |
+|| `Hiwatt_DR103_Bright_A2.nam` | 287 KB | Hiwatt DR-103 Bright Normal | Others | Prog/classic rock, The Who territory |
+|| `Hiwatt_DR103_Cornish_A2.nam` | 288 KB | Hiwatt DR103 + Cornish PGS | Others | Boosted prog rock, Gilmour-esque leads |
+|| `Supro_Black_Magick_M3_A2.nam` | 288 KB | Supro Black Magick M3 | Others | Garage/blues, Jack White-style grit |
### Legacy Models (Linear Architecture — synthetic, ~35-85 KB)
@@ -287,8 +305,8 @@ The following Archive.org sources returned 404 when last checked (2026-06-13):
## File Locations
```
-~/.pedal/
-├── models/ # 54 models (22 core + 9 blues + 5 A2 bonus + 1 ML cab + 17 Tone3000 rock/high-gain/ambient)
+`~/.pedal/`
+├── models/ # 64 models (22 core + 9 blues + 5 A2 bonus + 1 ML cab + 17 Tone3000 rock/high-gain/ambient + 10 Bank 7 bass/orange/others)
│ ├── Fender_TwinVerb_Clean.nam
│ ├── Fender_TwinVerb_Vibrato.nam
│ ├── Vox_AC15_TopBoost.nam
@@ -356,6 +374,18 @@ The following Archive.org sources returned 404 when last checked (2026-06-13):
│ ├── Vox_AC30_Chimey.nam # 290 KB — AC30 chimey clean
│ ├── Fender_Twin_Reverb_G05.nam # 288 KB — Twin Reverb clean
│ │
+│ ├── Bank 7 — Bass, Orange & Others:
+│ ├── Ampeg_PF20T_A2.nam # 288 KB — Bass clean tube
+│ ├── Aguilar_Tone_Hammer_500_A2.nam # 293 KB — Bass modern preamp
+│ ├── GK_800RB_Line_A2.nam # 295 KB — Bass solid-state
+│ ├── Aguilar_DB751_Cab_A2.nam # 292 KB — Bass amp DI
+│ ├── Orange_Rocker30_Dirty_A2.nam # 295 KB — Rock crunch
+│ ├── Orange_Rocker30_Natural_A2.nam # 289 KB — Clean edge
+│ ├── Fender_Bassman_Dimed_A2.nam # 289 KB — Blues/rock breakup
+│ ├── Hiwatt_DR103_Bright_A2.nam # 287 KB — Classic rock
+│ ├── Hiwatt_DR103_Cornish_A2.nam # 288 KB — Boosted classic rock
+│ ├── Supro_Black_Magick_M3_A2.nam # 288 KB — Garage/blues
+│ │
│
├── nam/ # Legacy location (symlinked from models/)
│ ├── Fender_TwinVerb_Clean.nam → ../models/Fender_TwinVerb_Clean.nam
@@ -381,12 +411,13 @@ The following Archive.org sources returned 404 when last checked (2026-06-13):
## Verification
-All 54 models were:
+All 64 models were:
- 22 models from `https://raw.githubusercontent.com/pelennor2170/NAM_models/main/`
- 9 blues models from Tone3000 / ToneHunt Supabase storage
- 5 clean/plexi A2 models from Tone3000 Supabase storage
- 1 bonus ML Sound Lab model from GitHub: fnpngn/IR
-- 17 rock/high-gain/ambient models from Tone3000 Supabase storage (new)
+- 17 rock/high-gain/ambient models from Tone3000 Supabase storage
+- 10 bass/orange/others A2 models from Tone3000 Supabase storage
- All verified as valid `.nam` JSON files (WaveNet A1, WaveNet A2, or SlimmableContainer A2 architecture)
To verify models load correctly:
diff --git a/frontend-react/src/App.jsx b/frontend-react/src/App.jsx
index cd35121..4e1a7a9 100644
--- a/frontend-react/src/App.jsx
+++ b/frontend-react/src/App.jsx
@@ -497,6 +497,49 @@ function FXBlock({ title, type, active = true, bypassed = false, params = [], on
);
}
+// ── Signal Arrow Connector ──────────────────────────────────
+function SignalArrow({ active = true, variant = 'right', animated = true }) {
+ const color = active ? T.green : T.textDim;
+
+ if (variant === 'right') {
+ return (
+
+ );
+ }
+
+ if (variant === 'split') {
+ return (
+
+ );
+ }
+
+ if (variant === 'merge') {
+ return (
+
+ );
+ }
+
+ return null;
+}
+
// ── Slide Panel ──────────────────────────────────────────────
function SlidePanel({ children, onClose }) {
return (
@@ -634,15 +677,38 @@ function RigScreen({ state, connected, refresh }) {
Signal Chain
- {["IN", state?.bypass ? "BYP" : (state?.nam_loaded ? "NAM" : "AMP"), state?.ir_loaded ? "IR" : "CAB", "OUT"].map((s, i, arr) => (
-
-
{s}
- {i < arr.length - 1 &&
}
-
- ))}
+ {(() => {
+ const chain = ["IN", state?.bypass ? "BYP" : (state?.nam_loaded ? "NAM" : "AMP"), state?.ir_loaded ? "IR" : "CAB", "OUT"];
+ const is4CM = state?.routing_mode === '4cm';
+ const bp = state?.routing_breakpoint || 7;
+ const active = !state?.bypass;
+ return chain.map((s, i, arr) => (
+
+ {is4CM && s === "AMP" && (
+
+ )}
+ {is4CM && s === "CAB" && (
+
+ )}
+
+ {s}
+ {is4CM && s === "AMP" && 4CM}
+ {is4CM && s === "BYP" && 4CM}
+
+ {is4CM && s === "AMP" && (
+
+
+ LOOP
+
+
+ )}
+ {i < arr.length - 1 && !(is4CM && s === "AMP") &&
}
+
+ ));
+ })()}
@@ -782,15 +848,56 @@ function FXScreen({ state, connected }) {
{/* Signal path */}
{fxList && fxList.length > 0 && (
- {["IN", ...fxList.map(f => f.type.toUpperCase()), "OUT"].map((s, i, arr) => (
-
-
{s}
- {i < arr.length - 1 &&
}
-
- ))}
+ {(() => {
+ const is4CM = state?.routing_mode === '4cm';
+ const bp = is4CM ? (state?.routing_breakpoint || 7) : -1;
+ const items = [];
+ // Build chain items array with connector metadata
+ items.push({ label: "IN", type: "io", idx: -1 });
+ fxList.forEach((f, idx) => {
+ if (is4CM && idx === bp) {
+ items.push({ label: null, type: "merge-bp", idx });
+ }
+ items.push({ label: f.type.toUpperCase(), type: "fx", idx, bypassed: f.bypassed });
+ if (is4CM && idx === bp - 1) {
+ items.push({ label: null, type: "split-bp", idx });
+ }
+ });
+ items.push({ label: "OUT", type: "io", idx: -1 });
+
+ return items.map((item, i) => {
+ if (item.type === 'split-bp') {
+ return (
+
+
+ 4CM
+
+
+ );
+ }
+ if (item.type === 'merge-bp') {
+ // Already rendered as part of the split-bp composite — skip
+ return null;
+ }
+ return (
+
+ {item.type === 'io' && (
+
{item.label}
+ )}
+ {item.type === 'fx' && (
+
{item.label}
+ )}
+ {/* Connector after this block */}
+ {i < items.length - 1 && items[i+1]?.type !== 'split-bp' && items[i]?.type !== 'merge-bp' && (
+
+ )}
+
+ );
+ });
+ })()}
)}
{(!fxList || fxList.length === 0) ? (
diff --git a/presets/factory/bank_0/bank.json b/presets/factory/bank_0/bank.json
index 66a475d..c5e0d0a 100644
--- a/presets/factory/bank_0/bank.json
+++ b/presets/factory/bank_0/bank.json
@@ -1,5 +1,5 @@
{
"number": 0,
- "name": "Clean & Edge",
+ "name": "Classic Rock",
"preset_count": 4
-}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_0/preset_0.json b/presets/factory/bank_0/preset_0.json
index 3f79160..930eb50 100644
--- a/presets/factory/bank_0/preset_0.json
+++ b/presets/factory/bank_0/preset_0.json
@@ -1,18 +1,74 @@
{
- "name": "Clean Jazz",
+ "name": "Classic Rock \u2014 British Plexi",
"bank": 0,
"program": 0,
- "master_volume": 0.8,
- "tuner_enabled": false,
+ "master_volume": 0.78,
"chain": [
- {"fx_type": "noise_gate", "enabled": true, "bypass": false, "params": {"threshold": 0.01}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "compressor", "enabled": true, "bypass": false, "params": {"threshold": 0.3, "ratio": 4.0, "gain": 0.8}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "eq", "enabled": true, "bypass": false, "params": {"bass": 0.5, "mid": 0.5, "treble": 0.5}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "reverb", "enabled": true, "bypass": false, "params": {"decay": 0.3, "mix": 0.2}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "ir_cab", "enabled": true, "bypass": false, "params": {"wet": 1.0, "dry": 0.0}, "nam_model_path": "", "ir_file_path": "~/.pedal/irs/vintage-1x12.wav"},
- {"fx_type": "volume", "enabled": true, "bypass": false, "params": {"level": 0.85}, "nam_model_path": "", "ir_file_path": ""}
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/british-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.4,
+ "tone": 0.55,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
],
- "midi_mappings": {
- "reverb_mix": {"cc_number": 15, "channel": 0, "min_val": 0.0, "max_val": 1.0}
- }
-}
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_0/preset_1.json b/presets/factory/bank_0/preset_1.json
index 9c8964b..ea990b1 100644
--- a/presets/factory/bank_0/preset_1.json
+++ b/presets/factory/bank_0/preset_1.json
@@ -1,16 +1,86 @@
{
- "name": "Edge of Breakup",
+ "name": "Classic Rock \u2014 Lead 800",
"bank": 0,
"program": 1,
- "master_volume": 0.75,
- "tuner_enabled": false,
+ "master_volume": 0.78,
"chain": [
- {"fx_type": "noise_gate", "enabled": true, "bypass": false, "params": {"threshold": 0.008}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "overdrive", "enabled": true, "bypass": false, "params": {"drive": 0.3, "gain": 0.9}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "eq", "enabled": true, "bypass": false, "params": {"bass": 0.4, "mid": 0.6, "treble": 0.7}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "delay", "enabled": true, "bypass": false, "params": {"time": 350.0, "feedback": 0.25, "mix": 0.2}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "ir_cab", "enabled": true, "bypass": false, "params": {"wet": 1.0, "dry": 0.0}, "nam_model_path": "", "ir_file_path": "~/.pedal/irs/boutique-1x12.wav"},
- {"fx_type": "volume", "enabled": true, "bypass": false, "params": {"level": 0.8}, "nam_model_path": "", "ir_file_path": ""}
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/british-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.5,
+ "tone": 0.45,
+ "level": 0.75
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "time": 0.45,
+ "feedback": 0.25,
+ "mix": 0.3
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
],
"midi_mappings": {}
-}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_0/preset_2.json b/presets/factory/bank_0/preset_2.json
index a0f3b09..e544eb6 100644
--- a/presets/factory/bank_0/preset_2.json
+++ b/presets/factory/bank_0/preset_2.json
@@ -1,16 +1,73 @@
{
- "name": "Clean with Chorus",
+ "name": "Classic Rock \u2014 Clean Chime",
"bank": 0,
"program": 2,
"master_volume": 0.78,
- "tuner_enabled": false,
"chain": [
- {"fx_type": "noise_gate", "enabled": true, "bypass": false, "params": {"threshold": 0.01}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "eq", "enabled": true, "bypass": false, "params": {"bass": 0.5, "mid": 0.5, "treble": 0.6}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "chorus", "enabled": true, "bypass": false, "params": {"rate": 0.35, "depth": 0.5, "mix": 0.4}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "reverb", "enabled": true, "bypass": false, "params": {"decay": 0.4, "mix": 0.25}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "ir_cab", "enabled": true, "bypass": false, "params": {"wet": 1.0, "dry": 0.0}, "nam_model_path": "", "ir_file_path": "~/.pedal/irs/american-2x12.wav"},
- {"fx_type": "volume", "enabled": true, "bypass": false, "params": {"level": 0.82}, "nam_model_path": "", "ir_file_path": ""}
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_TwinVerb_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.35,
+ "mix": 0.25
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
],
"midi_mappings": {}
-}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_0/preset_3.json b/presets/factory/bank_0/preset_3.json
index 168f293..80429b8 100644
--- a/presets/factory/bank_0/preset_3.json
+++ b/presets/factory/bank_0/preset_3.json
@@ -1,16 +1,74 @@
{
- "name": "Dynamic Fingerstyle",
+ "name": "Classic Rock \u2014 Plexi Crunch",
"bank": 0,
"program": 3,
- "master_volume": 0.72,
- "tuner_enabled": false,
+ "master_volume": 0.78,
"chain": [
- {"fx_type": "compressor", "enabled": true, "bypass": false, "params": {"threshold": 0.25, "ratio": 6.0, "gain": 0.7}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "boost", "enabled": true, "bypass": false, "params": {"gain_db": 3.0}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "eq", "enabled": true, "bypass": false, "params": {"bass": 0.4, "mid": 0.7, "treble": 0.5}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "reverb", "enabled": true, "bypass": false, "params": {"decay": 0.5, "mix": 0.3}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "ir_cab", "enabled": true, "bypass": false, "params": {"wet": 1.0, "dry": 0.0}, "nam_model_path": "", "ir_file_path": "~/.pedal/irs/jazz-1x15.wav"},
- {"fx_type": "volume", "enabled": true, "bypass": false, "params": {"level": 0.78}, "nam_model_path": "", "ir_file_path": ""}
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/vintage-1x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.3,
+ "ratio": 0.04,
+ "gain": 0.6
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
],
"midi_mappings": {}
-}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_1/bank.json b/presets/factory/bank_1/bank.json
index 0dd825f..4cea109 100644
--- a/presets/factory/bank_1/bank.json
+++ b/presets/factory/bank_1/bank.json
@@ -1,5 +1,5 @@
{
"number": 1,
- "name": "Drive & Lead",
+ "name": "Punk",
"preset_count": 4
-}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_1/preset_0.json b/presets/factory/bank_1/preset_0.json
index 9d47101..39f0c06 100644
--- a/presets/factory/bank_1/preset_0.json
+++ b/presets/factory/bank_1/preset_0.json
@@ -1,18 +1,74 @@
{
- "name": "Classic Rock",
+ "name": "Punk \u2014 Piston",
"bank": 1,
"program": 0,
- "master_volume": 0.7,
- "tuner_enabled": false,
+ "master_volume": 0.78,
"chain": [
- {"fx_type": "noise_gate", "enabled": true, "bypass": false, "params": {"threshold": 0.015}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "overdrive", "enabled": true, "bypass": false, "params": {"drive": 0.55, "gain": 0.8}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "eq", "enabled": true, "bypass": false, "params": {"bass": 0.6, "mid": 0.4, "treble": 0.7}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "delay", "enabled": true, "bypass": false, "params": {"time": 380.0, "feedback": 0.3, "mix": 0.25}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "ir_cab", "enabled": true, "bypass": false, "params": {"wet": 1.0, "dry": 0.0}, "nam_model_path": "", "ir_file_path": "~/.pedal/irs/british-4x12.wav"},
- {"fx_type": "volume", "enabled": true, "bypass": false, "params": {"level": 0.75}, "nam_model_path": "", "ir_file_path": ""}
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/british-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.6,
+ "tone": 0.35,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
],
- "midi_mappings": {
- "drive": {"cc_number": 14, "channel": 0, "min_val": 0.0, "max_val": 1.0}
- }
-}
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_1/preset_1.json b/presets/factory/bank_1/preset_1.json
index 31f93e8..1e82667 100644
--- a/presets/factory/bank_1/preset_1.json
+++ b/presets/factory/bank_1/preset_1.json
@@ -1,21 +1,74 @@
{
- "name": "Lead Solo",
+ "name": "Punk \u2014 Street Punk",
"bank": 1,
"program": 1,
- "master_volume": 0.85,
- "tuner_enabled": false,
+ "master_volume": 0.78,
"chain": [
- {"fx_type": "noise_gate", "enabled": true, "bypass": false, "params": {"threshold": 0.02}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "compressor", "enabled": true, "bypass": false, "params": {"threshold": 0.4, "ratio": 3.0, "gain": 1.2}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "overdrive", "enabled": true, "bypass": false, "params": {"drive": 0.7, "gain": 0.7}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "distortion", "enabled": true, "bypass": false, "params": {"drive": 0.6, "gain": 0.6}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "eq", "enabled": true, "bypass": false, "params": {"bass": 0.5, "mid": 0.3, "treble": 0.8}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "delay", "enabled": true, "bypass": false, "params": {"time": 450.0, "feedback": 0.35, "mix": 0.35}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "reverb", "enabled": true, "bypass": false, "params": {"decay": 0.6, "mix": 0.3}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "volume", "enabled": true, "bypass": false, "params": {"level": 0.9}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "ir_cab", "enabled": true, "bypass": false, "params": {"wet": 1.0, "dry": 0.0}, "nam_model_path": "", "ir_file_path": "~/.pedal/irs/british-4x12.wav"}
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/vintage-1x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "distortion",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.55,
+ "tone": 0.3,
+ "level": 0.75
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
],
- "midi_mappings": {
- "delay_feedback": {"cc_number": 18, "channel": 1, "min_val": 0.0, "max_val": 1.0}
- }
-}
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_1/preset_2.json b/presets/factory/bank_1/preset_2.json
index f794904..c62b9c7 100644
--- a/presets/factory/bank_1/preset_2.json
+++ b/presets/factory/bank_1/preset_2.json
@@ -1,16 +1,74 @@
{
- "name": "Metal Rhythm",
+ "name": "Punk \u2014 Skate Punk",
"bank": 1,
"program": 2,
- "master_volume": 0.65,
- "tuner_enabled": false,
+ "master_volume": 0.78,
"chain": [
- {"fx_type": "noise_gate", "enabled": true, "bypass": false, "params": {"threshold": 0.03}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "boost", "enabled": true, "bypass": false, "params": {"gain_db": 8.0}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "distortion", "enabled": true, "bypass": false, "params": {"drive": 0.8, "gain": 0.5}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "eq", "enabled": true, "bypass": false, "params": {"bass": 0.6, "mid": 0.3, "treble": 0.7}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "volume", "enabled": true, "bypass": false, "params": {"level": 0.7}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "ir_cab", "enabled": true, "bypass": false, "params": {"wet": 1.0, "dry": 0.0}, "nam_model_path": "", "ir_file_path": "~/.pedal/irs/modern-4x12.wav"}
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/british-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.25,
+ "ratio": 0.06,
+ "gain": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
],
"midi_mappings": {}
-}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_1/preset_3.json b/presets/factory/bank_1/preset_3.json
index 35835bd..96b10b4 100644
--- a/presets/factory/bank_1/preset_3.json
+++ b/presets/factory/bank_1/preset_3.json
@@ -1,17 +1,74 @@
{
- "name": "Ambient Wash",
+ "name": "Punk \u2014 Hardcore Punk",
"bank": 1,
"program": 3,
- "master_volume": 0.72,
- "tuner_enabled": false,
+ "master_volume": 0.78,
"chain": [
- {"fx_type": "compressor", "enabled": true, "bypass": false, "params": {"threshold": 0.3, "ratio": 4.0, "gain": 0.9}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "phaser", "enabled": true, "bypass": false, "params": {"rate": 0.2, "depth": 0.6, "feedback": 0.4}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "chorus", "enabled": true, "bypass": false, "params": {"rate": 0.3, "depth": 0.7, "mix": 0.5}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "delay", "enabled": true, "bypass": false, "params": {"time": 500.0, "feedback": 0.4, "mix": 0.35}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "ir_cab", "enabled": true, "bypass": false, "params": {"wet": 1.0, "dry": 0.0}, "nam_model_path": "", "ir_file_path": "~/.pedal/irs/american-2x12.wav"},
- {"fx_type": "reverb", "enabled": true, "bypass": false, "params": {"decay": 0.8, "mix": 0.4}, "nam_model_path": "", "ir_file_path": ""},
- {"fx_type": "volume", "enabled": true, "bypass": false, "params": {"level": 0.78}, "nam_model_path": "", "ir_file_path": ""}
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Princeton_Clone_EOB.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/modern-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "distortion",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.6,
+ "tone": 0.25,
+ "level": 0.75
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
],
"midi_mappings": {}
-}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_10/bank.json b/presets/factory/bank_10/bank.json
new file mode 100644
index 0000000..f9486f6
--- /dev/null
+++ b/presets/factory/bank_10/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 10,
+ "name": "Garage Rock",
+ "preset_count": 4
+}
\ No newline at end of file
diff --git a/presets/factory/bank_10/preset_0.json b/presets/factory/bank_10/preset_0.json
new file mode 100644
index 0000000..a05ad8d
--- /dev/null
+++ b/presets/factory/bank_10/preset_0.json
@@ -0,0 +1,74 @@
+{
+ "name": "Garage Rock \u2014 Seven Nation",
+ "bank": 10,
+ "program": 0,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_TwinVerb_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/mini-1x8.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "fuzz",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "fuzz": 0.7,
+ "tone": 0.25,
+ "level": 0.75
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_10/preset_1.json b/presets/factory/bank_10/preset_1.json
new file mode 100644
index 0000000..afe7fa7
--- /dev/null
+++ b/presets/factory/bank_10/preset_1.json
@@ -0,0 +1,86 @@
+{
+ "name": "Garage Rock \u2014 Lonely Boy",
+ "bank": 10,
+ "program": 1,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Princeton_Clone_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/vintage-1x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "fuzz",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "fuzz": 0.55,
+ "tone": 0.35,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.3,
+ "ratio": 0.05,
+ "gain": 0.55
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_10/preset_2.json b/presets/factory/bank_10/preset_2.json
new file mode 100644
index 0000000..9b7b277
--- /dev/null
+++ b/presets/factory/bank_10/preset_2.json
@@ -0,0 +1,85 @@
+{
+ "name": "Garage Rock \u2014 Last Nite",
+ "bank": 10,
+ "program": 2,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Vox_AC15_TopBoost.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.3,
+ "ratio": 0.04,
+ "gain": 0.55
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.2,
+ "mix": 0.15
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_10/preset_3.json b/presets/factory/bank_10/preset_3.json
new file mode 100644
index 0000000..0b55c4e
--- /dev/null
+++ b/presets/factory/bank_10/preset_3.json
@@ -0,0 +1,85 @@
+{
+ "name": "Garage Rock \u2014 Elephant",
+ "bank": 10,
+ "program": 3,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_TwinVerb_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/mini-1x8.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "fuzz",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "fuzz": 0.85,
+ "tone": 0.2,
+ "level": 0.8
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.25,
+ "mix": 0.15
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_11/bank.json b/presets/factory/bank_11/bank.json
new file mode 100644
index 0000000..d2dab9a
--- /dev/null
+++ b/presets/factory/bank_11/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 11,
+ "name": "Pop",
+ "preset_count": 4
+}
\ No newline at end of file
diff --git a/presets/factory/bank_11/preset_0.json b/presets/factory/bank_11/preset_0.json
new file mode 100644
index 0000000..9529156
--- /dev/null
+++ b/presets/factory/bank_11/preset_0.json
@@ -0,0 +1,85 @@
+{
+ "name": "Pop \u2014 Shake It",
+ "bank": 11,
+ "program": 0,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_TwinVerb_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.25,
+ "ratio": 0.03,
+ "gain": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.4,
+ "mix": 0.25
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_11/preset_1.json b/presets/factory/bank_11/preset_1.json
new file mode 100644
index 0000000..1134466
--- /dev/null
+++ b/presets/factory/bank_11/preset_1.json
@@ -0,0 +1,86 @@
+{
+ "name": "Pop \u2014 Misery Business",
+ "bank": 11,
+ "program": 1,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Vox_AC15_TopBoost.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.35,
+ "tone": 0.5,
+ "level": 0.65
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "chorus",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "rate": 0.35,
+ "depth": 0.25,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_11/preset_2.json b/presets/factory/bank_11/preset_2.json
new file mode 100644
index 0000000..d6c0823
--- /dev/null
+++ b/presets/factory/bank_11/preset_2.json
@@ -0,0 +1,85 @@
+{
+ "name": "Pop \u2014 Bad Guy",
+ "bank": 11,
+ "program": 2,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Princeton_Clone_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/boutique-1x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.2,
+ "ratio": 0.06,
+ "gain": 0.45
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.35,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_11/preset_3.json b/presets/factory/bank_11/preset_3.json
new file mode 100644
index 0000000..e60d122
--- /dev/null
+++ b/presets/factory/bank_11/preset_3.json
@@ -0,0 +1,85 @@
+{
+ "name": "Pop \u2014 Love Story",
+ "bank": 11,
+ "program": 3,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_TwinVerb_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "time": 0.3,
+ "feedback": 0.15,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.3,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_13/bank.json b/presets/factory/bank_13/bank.json
new file mode 100644
index 0000000..61bc8e4
--- /dev/null
+++ b/presets/factory/bank_13/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 13,
+ "name": "Blues \u2014 Clean",
+ "preset_count": 4
+}
\ No newline at end of file
diff --git a/presets/factory/bank_13/preset_0.json b/presets/factory/bank_13/preset_0.json
new file mode 100644
index 0000000..fca05d1
--- /dev/null
+++ b/presets/factory/bank_13/preset_0.json
@@ -0,0 +1,86 @@
+{
+ "name": "Blues \u2014 Lucille (B.B. King)",
+ "bank": 13,
+ "program": 0,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.008
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.25,
+ "ratio": 3.0,
+ "gain": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.7
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Twin_Reverb_Clean_A2.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.4,
+ "mid": 0.35,
+ "treble": 0.6
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "spring",
+ "decay": 0.4,
+ "mix": 0.3
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_13/preset_1.json b/presets/factory/bank_13/preset_1.json
new file mode 100644
index 0000000..6b50d45
--- /dev/null
+++ b/presets/factory/bank_13/preset_1.json
@@ -0,0 +1,86 @@
+{
+ "name": "Blues \u2014 Born Under a Bad Sign (Albert King)",
+ "bank": 13,
+ "program": 1,
+ "master_volume": 0.8,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_TwinVerb_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.55,
+ "mid": 0.4,
+ "treble": 0.45
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.3,
+ "ratio": 4.0,
+ "gain": 0.55
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "room",
+ "decay": 0.35,
+ "mix": 0.25
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.84
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_13/preset_2.json b/presets/factory/bank_13/preset_2.json
new file mode 100644
index 0000000..504eedd
--- /dev/null
+++ b/presets/factory/bank_13/preset_2.json
@@ -0,0 +1,86 @@
+{
+ "name": "Blues \u2014 Hide Away (Freddie King)",
+ "bank": 13,
+ "program": 2,
+ "master_volume": 0.8,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.008
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.28,
+ "ratio": 3.5,
+ "gain": 0.45
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.72
+ },
+ "nam_model_path": "/root/.pedal/models/TwoRock_JTM_Signature.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.45,
+ "treble": 0.55
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "hall",
+ "decay": 0.5,
+ "mix": 0.3
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.83
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_13/preset_3.json b/presets/factory/bank_13/preset_3.json
new file mode 100644
index 0000000..2d1384f
--- /dev/null
+++ b/presets/factory/bank_13/preset_3.json
@@ -0,0 +1,86 @@
+{
+ "name": "Blues \u2014 Gravity (John Mayer)",
+ "bank": 13,
+ "program": 3,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.006
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.22,
+ "ratio": 3.0,
+ "gain": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.15,
+ "tone": 0.6,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.7
+ },
+ "nam_model_path": "/root/.pedal/models/Dumble_ODS_102_Rock_A2.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/boutique-1x12.wav"
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "hall",
+ "decay": 0.55,
+ "mix": 0.35
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_14/bank.json b/presets/factory/bank_14/bank.json
new file mode 100644
index 0000000..9a8f51e
--- /dev/null
+++ b/presets/factory/bank_14/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 14,
+ "name": "Blues \u2014 Texas Style",
+ "preset_count": 4
+}
\ No newline at end of file
diff --git a/presets/factory/bank_14/preset_0.json b/presets/factory/bank_14/preset_0.json
new file mode 100644
index 0000000..48eeb78
--- /dev/null
+++ b/presets/factory/bank_14/preset_0.json
@@ -0,0 +1,99 @@
+{
+ "name": "Blues \u2014 Texas Flood (SRV)",
+ "bank": 14,
+ "program": 0,
+ "master_volume": 0.82,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.008
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.3,
+ "ratio": 4.0,
+ "gain": 0.6
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.3,
+ "tone": 0.65,
+ "level": 0.95
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.7
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_TwinVerb_Vibrato.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "analog",
+ "time": 280.0,
+ "feedback": 0.18,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "spring",
+ "decay": 0.3,
+ "mix": 0.3
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.85
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_14/preset_1.json b/presets/factory/bank_14/preset_1.json
new file mode 100644
index 0000000..0c73475
--- /dev/null
+++ b/presets/factory/bank_14/preset_1.json
@@ -0,0 +1,98 @@
+{
+ "name": "Blues \u2014 Pride and Joy (SRV)",
+ "bank": 14,
+ "program": 1,
+ "master_volume": 0.82,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.008
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.28,
+ "ratio": 4.5,
+ "gain": 0.55
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.35,
+ "tone": 0.6,
+ "level": 0.9
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.72
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_TwinVerb_Vibrato.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "chorus",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "rate": 0.25,
+ "depth": 0.3,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "spring",
+ "decay": 0.35,
+ "mix": 0.25
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.85
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_14/preset_2.json b/presets/factory/bank_14/preset_2.json
new file mode 100644
index 0000000..f16893e
--- /dev/null
+++ b/presets/factory/bank_14/preset_2.json
@@ -0,0 +1,86 @@
+{
+ "name": "Blues \u2014 Lenny (SRV Instrumental)",
+ "bank": 14,
+ "program": 2,
+ "master_volume": 0.8,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.006
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.25,
+ "ratio": 3.5,
+ "gain": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.68
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Princeton_Clone_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/vintage-1x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.45,
+ "mid": 0.5,
+ "treble": 0.55
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "hall",
+ "decay": 0.5,
+ "mix": 0.35
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_14/preset_3.json b/presets/factory/bank_14/preset_3.json
new file mode 100644
index 0000000..2d00589
--- /dev/null
+++ b/presets/factory/bank_14/preset_3.json
@@ -0,0 +1,87 @@
+{
+ "name": "Blues \u2014 Third Degree (Johnny Winter)",
+ "bank": 14,
+ "program": 3,
+ "master_volume": 0.82,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.45,
+ "tone": 0.55,
+ "level": 0.8
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Dumble_ODS_102_Rock_A1.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.55,
+ "mid": 0.45,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "digital",
+ "time": 320.0,
+ "feedback": 0.2,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.84
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_15/bank.json b/presets/factory/bank_15/bank.json
new file mode 100644
index 0000000..fdd9575
--- /dev/null
+++ b/presets/factory/bank_15/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 15,
+ "name": "Blues \u2014 Rock",
+ "preset_count": 4
+}
\ No newline at end of file
diff --git a/presets/factory/bank_15/preset_0.json b/presets/factory/bank_15/preset_0.json
new file mode 100644
index 0000000..63e0d13
--- /dev/null
+++ b/presets/factory/bank_15/preset_0.json
@@ -0,0 +1,99 @@
+{
+ "name": "Blues \u2014 Still Got the Blues (Gary Moore)",
+ "bank": 15,
+ "program": 0,
+ "master_volume": 0.8,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.35,
+ "tone": 0.5,
+ "level": 0.85
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/british-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "digital",
+ "time": 420.0,
+ "feedback": 0.3,
+ "mix": 0.3
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "hall",
+ "decay": 0.6,
+ "mix": 0.35
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.84
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_15/preset_1.json b/presets/factory/bank_15/preset_1.json
new file mode 100644
index 0000000..5da146c
--- /dev/null
+++ b/presets/factory/bank_15/preset_1.json
@@ -0,0 +1,99 @@
+{
+ "name": "Blues \u2014 Parisienne Walkways (Gary Moore)",
+ "bank": 15,
+ "program": 1,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.008
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.25,
+ "tone": 0.55,
+ "level": 0.8
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.7
+ },
+ "nam_model_path": "/root/.pedal/models/Marshall_Bluesbreaker_1962_A2.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/british-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.45,
+ "mid": 0.55,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "analog",
+ "time": 480.0,
+ "feedback": 0.35,
+ "mix": 0.35
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "hall",
+ "decay": 0.65,
+ "mix": 0.35
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_15/preset_2.json b/presets/factory/bank_15/preset_2.json
new file mode 100644
index 0000000..720f88d
--- /dev/null
+++ b/presets/factory/bank_15/preset_2.json
@@ -0,0 +1,99 @@
+{
+ "name": "Blues \u2014 Blues Deluxe (Joe Bonamassa)",
+ "bank": 15,
+ "program": 2,
+ "master_volume": 0.82,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.5,
+ "tone": 0.45,
+ "level": 0.85
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/british-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.55,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "digital",
+ "time": 380.0,
+ "feedback": 0.25,
+ "mix": 0.25
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "hall",
+ "decay": 0.5,
+ "mix": 0.3
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.85
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_15/preset_3.json b/presets/factory/bank_15/preset_3.json
new file mode 100644
index 0000000..9ffdf3d
--- /dev/null
+++ b/presets/factory/bank_15/preset_3.json
@@ -0,0 +1,111 @@
+{
+ "name": "Blues \u2014 Sloe Gin (Joe Bonamassa)",
+ "bank": 15,
+ "program": 3,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.008
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.25,
+ "ratio": 3.0,
+ "gain": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.4,
+ "tone": 0.5,
+ "level": 0.8
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.72
+ },
+ "nam_model_path": "/root/.pedal/models/Marshall_Bluesbreaker_1962_A2.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/british-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.45,
+ "mid": 0.55,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "analog",
+ "time": 350.0,
+ "feedback": 0.2,
+ "mix": 0.25
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "hall",
+ "decay": 0.6,
+ "mix": 0.35
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_16/bank.json b/presets/factory/bank_16/bank.json
new file mode 100644
index 0000000..8374194
--- /dev/null
+++ b/presets/factory/bank_16/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 16,
+ "name": "Blues \u2014 Delta / Chicago",
+ "preset_count": 4
+}
\ No newline at end of file
diff --git a/presets/factory/bank_16/preset_0.json b/presets/factory/bank_16/preset_0.json
new file mode 100644
index 0000000..5d9cb2e
--- /dev/null
+++ b/presets/factory/bank_16/preset_0.json
@@ -0,0 +1,73 @@
+{
+ "name": "Blues \u2014 Mannish Boy (Muddy Waters)",
+ "bank": 16,
+ "program": 0,
+ "master_volume": 0.85,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "boost",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "gain_db": 6.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "/root/.pedal/models/Magnatone_Super59_Pushed.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/jazz-1x15.wav"
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "analog",
+ "time": 150.0,
+ "feedback": 0.15,
+ "mix": 0.25
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.88
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_16/preset_1.json b/presets/factory/bank_16/preset_1.json
new file mode 100644
index 0000000..20c45c3
--- /dev/null
+++ b/presets/factory/bank_16/preset_1.json
@@ -0,0 +1,84 @@
+{
+ "name": "Blues \u2014 Hoochie Coochie Man (Muddy Waters)",
+ "bank": 16,
+ "program": 1,
+ "master_volume": 0.84,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.012
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "boost",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "gain_db": 5.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.8
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Tweed_Dlx_Edge.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/vintage-1x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.6,
+ "mid": 0.4,
+ "treble": 0.45
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "spring",
+ "decay": 0.3,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.86
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_16/preset_2.json b/presets/factory/bank_16/preset_2.json
new file mode 100644
index 0000000..8fe2df9
--- /dev/null
+++ b/presets/factory/bank_16/preset_2.json
@@ -0,0 +1,87 @@
+{
+ "name": "Blues \u2014 Damn Right I Got the Blues (Buddy Guy)",
+ "bank": 16,
+ "program": 2,
+ "master_volume": 0.82,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.008
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.3,
+ "ratio": 3.5,
+ "gain": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.4,
+ "tone": 0.5,
+ "level": 0.8
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Princeton_Clone_EOB.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/vintage-1x12.wav"
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "digital",
+ "time": 200.0,
+ "feedback": 0.15,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.84
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_16/preset_3.json b/presets/factory/bank_16/preset_3.json
new file mode 100644
index 0000000..15cf4c9
--- /dev/null
+++ b/presets/factory/bank_16/preset_3.json
@@ -0,0 +1,84 @@
+{
+ "name": "Blues \u2014 Killing Floor (Howlin' Wolf)",
+ "bank": 16,
+ "program": 3,
+ "master_volume": 0.85,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.015
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "boost",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "gain_db": 8.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.85
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Tweed_Dlx_Edge.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/mini-1x8.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.65,
+ "mid": 0.3,
+ "treble": 0.4
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "room",
+ "decay": 0.25,
+ "mix": 0.15
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.88
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_17/bank.json b/presets/factory/bank_17/bank.json
new file mode 100644
index 0000000..c5d033e
--- /dev/null
+++ b/presets/factory/bank_17/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 17,
+ "name": "Bass \u2014 Clean & Fingerstyle",
+ "preset_count": 4
+}
diff --git a/presets/factory/bank_17/preset_0.json b/presets/factory/bank_17/preset_0.json
new file mode 100644
index 0000000..632ad80
--- /dev/null
+++ b/presets/factory/bank_17/preset_0.json
@@ -0,0 +1,86 @@
+{
+ "name": "Flat & Thumpy (Jamerson)",
+ "bank": 17,
+ "program": 0,
+ "master_volume": 0.75,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.008
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.2,
+ "ratio": 4.0,
+ "gain": 0.4
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.65
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Twin_Reverb_Clean_A2.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/bass-thick_classic.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.45,
+ "mid": 0.4,
+ "treble": 0.25
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "room",
+ "decay": 0.2,
+ "mix": 0.15
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.78
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
diff --git a/presets/factory/bank_17/preset_1.json b/presets/factory/bank_17/preset_1.json
new file mode 100644
index 0000000..27a15e4
--- /dev/null
+++ b/presets/factory/bank_17/preset_1.json
@@ -0,0 +1,86 @@
+{
+ "name": "Modern Fingerstyle",
+ "bank": 17,
+ "program": 1,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.005
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.25,
+ "ratio": 3.0,
+ "gain": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.7
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Deluxe_Reverb_A2.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/bass-balanced.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.55,
+ "mid": 0.5,
+ "treble": 0.45
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "room",
+ "decay": 0.3,
+ "mix": 0.25
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
diff --git a/presets/factory/bank_17/preset_2.json b/presets/factory/bank_17/preset_2.json
new file mode 100644
index 0000000..a699280
--- /dev/null
+++ b/presets/factory/bank_17/preset_2.json
@@ -0,0 +1,110 @@
+{
+ "name": "Jazz Fusion (Marcus Miller)",
+ "bank": 17,
+ "program": 2,
+ "master_volume": 0.8,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.005
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.3,
+ "ratio": 2.5,
+ "gain": 0.4
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.72
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Deluxe_Reverb_A2.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/bass-more_mids.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.6,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.25,
+ "tone": 0.55,
+ "level": 0.6
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "chorus",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "rate": 0.4,
+ "depth": 0.35,
+ "mix": 0.25
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "hall",
+ "decay": 0.5,
+ "mix": 0.25
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.85
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
diff --git a/presets/factory/bank_17/preset_3.json b/presets/factory/bank_17/preset_3.json
new file mode 100644
index 0000000..015af2e
--- /dev/null
+++ b/presets/factory/bank_17/preset_3.json
@@ -0,0 +1,86 @@
+{
+ "name": "P-Pick Punch (Duck Dunn)",
+ "bank": 17,
+ "program": 3,
+ "master_volume": 0.76,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.006
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.25,
+ "ratio": 3.5,
+ "gain": 0.45
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.68
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Tweed_Dlx_Edge.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/bass-classic.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.65,
+ "treble": 0.4
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "spring",
+ "decay": 0.3,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.8
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
diff --git a/presets/factory/bank_18/bank.json b/presets/factory/bank_18/bank.json
new file mode 100644
index 0000000..6d24b6a
--- /dev/null
+++ b/presets/factory/bank_18/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 18,
+ "name": "Bass \u2014 Driven & Rock",
+ "preset_count": 4
+}
diff --git a/presets/factory/bank_18/preset_0.json b/presets/factory/bank_18/preset_0.json
new file mode 100644
index 0000000..8941bc2
--- /dev/null
+++ b/presets/factory/bank_18/preset_0.json
@@ -0,0 +1,98 @@
+{
+ "name": "Classic Rock Drive (JPJ)",
+ "bank": 18,
+ "program": 0,
+ "master_volume": 0.82,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.006
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.28,
+ "ratio": 3.0,
+ "gain": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.72
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Princeton_Clone_EOB.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/bass-half_and_half.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.55,
+ "mid": 0.5,
+ "treble": 0.4
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.3,
+ "tone": 0.5,
+ "level": 0.65
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "spring",
+ "decay": 0.3,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.85
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
diff --git a/presets/factory/bank_18/preset_1.json b/presets/factory/bank_18/preset_1.json
new file mode 100644
index 0000000..162961c
--- /dev/null
+++ b/presets/factory/bank_18/preset_1.json
@@ -0,0 +1,86 @@
+{
+ "name": "Punk Pogo (Fat Mike)",
+ "bank": 18,
+ "program": 1,
+ "master_volume": 0.88,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.2,
+ "ratio": 4.0,
+ "gain": 0.6
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Twin_Reverb_Clean_A2.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/bass-clanky.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.6,
+ "mid": 0.3,
+ "treble": 0.55
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.6,
+ "tone": 0.3,
+ "level": 0.75
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.9
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
diff --git a/presets/factory/bank_18/preset_2.json b/presets/factory/bank_18/preset_2.json
new file mode 100644
index 0000000..68cff6a
--- /dev/null
+++ b/presets/factory/bank_18/preset_2.json
@@ -0,0 +1,98 @@
+{
+ "name": "Grunge Grind (Krist Novoselic)",
+ "bank": 18,
+ "program": 2,
+ "master_volume": 0.85,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.008
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.3,
+ "ratio": 2.5,
+ "gain": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.78
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Tweed_Dlx_Edge.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/bass-rumble_bass.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.55,
+ "mid": 0.45,
+ "treble": 0.45
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "distortion",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.5,
+ "tone": 0.4,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "chorus",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "rate": 0.5,
+ "depth": 0.4,
+ "mix": 0.3
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.88
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
diff --git a/presets/factory/bank_18/preset_3.json b/presets/factory/bank_18/preset_3.json
new file mode 100644
index 0000000..f43c88f
--- /dev/null
+++ b/presets/factory/bank_18/preset_3.json
@@ -0,0 +1,111 @@
+{
+ "name": "Alternative Edge (Justin Chancellor)",
+ "bank": 18,
+ "program": 3,
+ "master_volume": 0.83,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.005
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.25,
+ "ratio": 3.0,
+ "gain": 0.55
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.7
+ },
+ "nam_model_path": "/root/.pedal/models/Roland_JC-120_A2.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/bass-more_mids.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.6,
+ "treble": 0.35
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "distortion",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.45,
+ "tone": 0.55,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "phaser",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "rate": 0.3,
+ "depth": 0.35,
+ "feedback": 0.25
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "analog",
+ "feedback": 0.25,
+ "mix": 0.2,
+ "time_ms": 350
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.86
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
diff --git a/presets/factory/bank_19/bank.json b/presets/factory/bank_19/bank.json
new file mode 100644
index 0000000..68fcc48
--- /dev/null
+++ b/presets/factory/bank_19/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 19,
+ "name": "Bass \u2014 Modern & Metal",
+ "preset_count": 4
+}
diff --git a/presets/factory/bank_19/preset_0.json b/presets/factory/bank_19/preset_0.json
new file mode 100644
index 0000000..99f6eb0
--- /dev/null
+++ b/presets/factory/bank_19/preset_0.json
@@ -0,0 +1,96 @@
+{
+ "name": "Modern Metal (Darkglass B3K)",
+ "bank": 19,
+ "program": 0,
+ "master_volume": 0.85,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.008
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.15,
+ "ratio": 4.5,
+ "gain": 0.6
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.7
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Twin_Reverb_Clean_A2.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/bass-clanky.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.6,
+ "treble": 0.4
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "distortion",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.55,
+ "tone": 0.5,
+ "level": 0.75
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.04
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.88
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
diff --git a/presets/factory/bank_19/preset_1.json b/presets/factory/bank_19/preset_1.json
new file mode 100644
index 0000000..efd3510
--- /dev/null
+++ b/presets/factory/bank_19/preset_1.json
@@ -0,0 +1,96 @@
+{
+ "name": "Djent Bass (Darkglass AO)",
+ "bank": 19,
+ "program": 1,
+ "master_volume": 0.83,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.008
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.18,
+ "ratio": 4.0,
+ "gain": 0.55
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.68
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Twin_Reverb_Clean_A2.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/bass-half_and_half.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.4,
+ "mid": 0.55,
+ "treble": 0.3
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "distortion",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.5,
+ "tone": 0.35,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.05
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.85
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
diff --git a/presets/factory/bank_19/preset_2.json b/presets/factory/bank_19/preset_2.json
new file mode 100644
index 0000000..cb2b79f
--- /dev/null
+++ b/presets/factory/bank_19/preset_2.json
@@ -0,0 +1,111 @@
+{
+ "name": "Thrash Attack (Cliff Burton)",
+ "bank": 19,
+ "program": 2,
+ "master_volume": 0.88,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.006
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.2,
+ "ratio": 3.5,
+ "gain": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.78
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/bass-rumble_bass.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.6,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "distortion",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.65,
+ "tone": 0.45,
+ "level": 0.8
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "auto_wah",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "sensitivity": 0.3,
+ "resonance": 0.4,
+ "min_frequency": 0.2,
+ "max_frequency": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "hall",
+ "decay": 0.5,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.9
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
diff --git a/presets/factory/bank_19/preset_3.json b/presets/factory/bank_19/preset_3.json
new file mode 100644
index 0000000..60ffa65
--- /dev/null
+++ b/presets/factory/bank_19/preset_3.json
@@ -0,0 +1,98 @@
+{
+ "name": "Nu-Metal Growl (Fieldy / Tim C)",
+ "bank": 19,
+ "program": 3,
+ "master_volume": 0.86,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.008
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.2,
+ "ratio": 4.0,
+ "gain": 0.6
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.7
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Deluxe_Reverb_A2.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/bass-thick_classic.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.7,
+ "mid": 0.35,
+ "treble": 0.4
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "distortion",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.6,
+ "tone": 0.3,
+ "level": 0.8
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.3,
+ "tone": 0.25,
+ "level": 0.6
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.88
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
diff --git a/presets/factory/bank_2/bank.json b/presets/factory/bank_2/bank.json
index 7a2d8b4..7dd0e00 100644
--- a/presets/factory/bank_2/bank.json
+++ b/presets/factory/bank_2/bank.json
@@ -1,5 +1,5 @@
{
"number": 2,
- "name": "FX Bench",
+ "name": "Metal",
"preset_count": 4
-}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_2/preset_0.json b/presets/factory/bank_2/preset_0.json
index e242bb4..4ddb94b 100644
--- a/presets/factory/bank_2/preset_0.json
+++ b/presets/factory/bank_2/preset_0.json
@@ -1,11 +1,8 @@
{
- "name": "Overdrive Bench",
+ "name": "Metal \u2014 Thrash Machine",
"bank": 2,
"program": 0,
- "master_volume": 0.8,
- "routing_mode": "mono",
- "routing_breakpoint": 7,
- "tuner_enabled": false,
+ "master_volume": 0.78,
"chain": [
{
"fx_type": "noise_gate",
@@ -17,19 +14,57 @@
"nam_model_path": "",
"ir_file_path": ""
},
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/british-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
{
"fx_type": "overdrive",
"enabled": true,
"bypass": false,
"params": {
- "drive": 0.55,
- "tone": 0.5,
- "level": 0.75,
- "gain": 0.6,
- "bass": 0.5,
- "mid": 0.5,
- "treble": 0.5,
- "presence": 0.5
+ "drive": 0.4,
+ "tone": 0.3,
+ "level": 0.65
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.1
},
"nam_model_path": "",
"ir_file_path": ""
@@ -39,11 +74,11 @@
"enabled": true,
"bypass": false,
"params": {
- "level": 0.85
+ "level": 0.82
},
"nam_model_path": "",
"ir_file_path": ""
}
],
"midi_mappings": {}
-}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_2/preset_1.json b/presets/factory/bank_2/preset_1.json
index f06a6a0..ce2486e 100644
--- a/presets/factory/bank_2/preset_1.json
+++ b/presets/factory/bank_2/preset_1.json
@@ -1,11 +1,8 @@
{
- "name": "Delay Bench",
+ "name": "Metal \u2014 Scooped Face",
"bank": 2,
"program": 1,
- "master_volume": 0.8,
- "routing_mode": "mono",
- "routing_breakpoint": 7,
- "tuner_enabled": false,
+ "master_volume": 0.78,
"chain": [
{
"fx_type": "noise_gate",
@@ -17,6 +14,27 @@
"nam_model_path": "",
"ir_file_path": ""
},
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Princeton_Clone_EOB.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/modern-4x12.wav"
+ },
{
"fx_type": "eq",
"enabled": true,
@@ -30,20 +48,26 @@
"ir_file_path": ""
},
{
- "fx_type": "delay",
+ "fx_type": "distortion",
"enabled": true,
"bypass": false,
"params": {
- "time": 420.0,
- "feedback": 0.35,
- "mix": 0.3,
- "ping_pong": false,
- "stereo": false,
- "delay_type": "digital",
- "modulation_rate": 0.1,
- "modulation_depth": 0.1,
- "low_cut": 20.0,
- "high_cut": 8000.0
+ "drive": 0.5,
+ "tone": 0.15,
+ "level": 0.75
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "low": 0.6,
+ "mid": 0.2,
+ "high": 0.7,
+ "level": 0.7
},
"nam_model_path": "",
"ir_file_path": ""
@@ -53,11 +77,11 @@
"enabled": true,
"bypass": false,
"params": {
- "level": 0.85
+ "level": 0.82
},
"nam_model_path": "",
"ir_file_path": ""
}
],
"midi_mappings": {}
-}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_2/preset_2.json b/presets/factory/bank_2/preset_2.json
index c7b5305..d96e41e 100644
--- a/presets/factory/bank_2/preset_2.json
+++ b/presets/factory/bank_2/preset_2.json
@@ -1,11 +1,8 @@
{
- "name": "Reverb Bench",
+ "name": "Metal \u2014 Doom",
"bank": 2,
"program": 2,
- "master_volume": 0.8,
- "routing_mode": "mono",
- "routing_breakpoint": 7,
- "tuner_enabled": false,
+ "master_volume": 0.78,
"chain": [
{
"fx_type": "noise_gate",
@@ -17,6 +14,27 @@
"nam_model_path": "",
"ir_file_path": ""
},
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/modern-4x12.wav"
+ },
{
"fx_type": "eq",
"enabled": true,
@@ -30,20 +48,13 @@
"ir_file_path": ""
},
{
- "fx_type": "reverb",
+ "fx_type": "fuzz",
"enabled": true,
"bypass": false,
"params": {
- "decay": 0.6,
- "mix": 0.28,
- "predelay": 30.0,
- "low_cut": 80.0,
- "high_cut": 7000.0,
- "room_size": 0.65,
- "damping": 0.5,
- "reverb_type": "hall",
- "diffusion": 0.6,
- "width": 0.8
+ "fuzz": 0.8,
+ "tone": 0.2,
+ "level": 0.7
},
"nam_model_path": "",
"ir_file_path": ""
@@ -53,11 +64,11 @@
"enabled": true,
"bypass": false,
"params": {
- "level": 0.85
+ "level": 0.82
},
"nam_model_path": "",
"ir_file_path": ""
}
],
"midi_mappings": {}
-}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_2/preset_3.json b/presets/factory/bank_2/preset_3.json
index 57fbca6..58e58d0 100644
--- a/presets/factory/bank_2/preset_3.json
+++ b/presets/factory/bank_2/preset_3.json
@@ -1,11 +1,8 @@
{
- "name": "Chorus Bench",
+ "name": "Metal \u2014 New Wave British",
"bank": 2,
"program": 3,
- "master_volume": 0.8,
- "routing_mode": "mono",
- "routing_breakpoint": 7,
- "tuner_enabled": false,
+ "master_volume": 0.78,
"chain": [
{
"fx_type": "noise_gate",
@@ -17,6 +14,27 @@
"nam_model_path": "",
"ir_file_path": ""
},
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/british-4x12.wav"
+ },
{
"fx_type": "eq",
"enabled": true,
@@ -30,21 +48,25 @@
"ir_file_path": ""
},
{
- "fx_type": "chorus",
+ "fx_type": "overdrive",
"enabled": true,
"bypass": false,
"params": {
- "rate": 0.35,
- "depth": 0.55,
- "mix": 0.3,
- "delay": 5.0,
- "feedback": 0.1,
- "waveform": "sine",
- "spread": 0.5,
- "phase_invert": false,
- "high_pass": 20.0,
- "low_pass": 8000.0,
- "stereo": true
+ "drive": 0.45,
+ "tone": 0.4,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "time": 0.35,
+ "feedback": 0.2,
+ "mix": 0.25
},
"nam_model_path": "",
"ir_file_path": ""
@@ -54,11 +76,11 @@
"enabled": true,
"bypass": false,
"params": {
- "level": 0.85
+ "level": 0.82
},
"nam_model_path": "",
"ir_file_path": ""
}
],
"midi_mappings": {}
-}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_20/bank.json b/presets/factory/bank_20/bank.json
new file mode 100644
index 0000000..9213df9
--- /dev/null
+++ b/presets/factory/bank_20/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 20,
+ "name": "Bass \u2014 FX & Specialty",
+ "preset_count": 4
+}
diff --git a/presets/factory/bank_20/preset_0.json b/presets/factory/bank_20/preset_0.json
new file mode 100644
index 0000000..fa1b7e6
--- /dev/null
+++ b/presets/factory/bank_20/preset_0.json
@@ -0,0 +1,98 @@
+{
+ "name": "Envelope Filter (Les Claypool)",
+ "bank": 20,
+ "program": 0,
+ "master_volume": 0.82,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.004
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.3,
+ "ratio": 2.5,
+ "gain": 0.4
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.7
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Twin_Reverb_Clean_A2.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/bass-balanced.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.45
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "envelope_filter",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "sensitivity": 0.6,
+ "frequency": 0.5,
+ "resonance": 0.6
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "distortion",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.3,
+ "tone": 0.5,
+ "level": 0.65
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.85
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
diff --git a/presets/factory/bank_20/preset_1.json b/presets/factory/bank_20/preset_1.json
new file mode 100644
index 0000000..ef95d6b
--- /dev/null
+++ b/presets/factory/bank_20/preset_1.json
@@ -0,0 +1,111 @@
+{
+ "name": "Chorus Bass (Geddy Lee)",
+ "bank": 20,
+ "program": 1,
+ "master_volume": 0.8,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.005
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.25,
+ "ratio": 3.0,
+ "gain": 0.45
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.72
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_TwinVerb_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/bass-more_mids.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.6,
+ "treble": 0.45
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.2,
+ "tone": 0.5,
+ "level": 0.6
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "chorus",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "rate": 0.45,
+ "depth": 0.45,
+ "mix": 0.35
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "digital",
+ "feedback": 0.2,
+ "mix": 0.2,
+ "time_ms": 380
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.84
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
diff --git a/presets/factory/bank_20/preset_2.json b/presets/factory/bank_20/preset_2.json
new file mode 100644
index 0000000..f90de32
--- /dev/null
+++ b/presets/factory/bank_20/preset_2.json
@@ -0,0 +1,98 @@
+{
+ "name": "Octave Down (Royal Blood)",
+ "bank": 20,
+ "program": 2,
+ "master_volume": 0.88,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.008
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.2,
+ "ratio": 4.0,
+ "gain": 0.6
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "octaver",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "mix": 0.5,
+ "octave_down": 0.8,
+ "octave_up": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.72
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Twin_Reverb_Clean_A2.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/bass-use_on_sub_track.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.55,
+ "mid": 0.5,
+ "treble": 0.35
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "fuzz",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.75,
+ "tone": 0.4,
+ "level": 0.8
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.9
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
diff --git a/presets/factory/bank_20/preset_3.json b/presets/factory/bank_20/preset_3.json
new file mode 100644
index 0000000..f5905ac
--- /dev/null
+++ b/presets/factory/bank_20/preset_3.json
@@ -0,0 +1,98 @@
+{
+ "name": "Solo Lead (Flea)",
+ "bank": 20,
+ "program": 3,
+ "master_volume": 0.84,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.004
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.2,
+ "ratio": 3.5,
+ "gain": 0.55
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Deluxe_Reverb_A2.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/bass-more_mids.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.45,
+ "mid": 0.7,
+ "treble": 0.55
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.35,
+ "tone": 0.55,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "subtype": "hall",
+ "decay": 0.4,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.88
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
diff --git a/presets/factory/bank_3/bank.json b/presets/factory/bank_3/bank.json
new file mode 100644
index 0000000..64304f7
--- /dev/null
+++ b/presets/factory/bank_3/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 3,
+ "name": "Hardcore",
+ "preset_count": 4
+}
\ No newline at end of file
diff --git a/presets/factory/bank_3/preset_0.json b/presets/factory/bank_3/preset_0.json
new file mode 100644
index 0000000..cc89942
--- /dev/null
+++ b/presets/factory/bank_3/preset_0.json
@@ -0,0 +1,84 @@
+{
+ "name": "Hardcore \u2014 Beatdown",
+ "bank": 3,
+ "program": 0,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Princeton_Clone_EOB.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/modern-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "distortion",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.65,
+ "tone": 0.2,
+ "level": 0.75
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.05
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_3/preset_1.json b/presets/factory/bank_3/preset_1.json
new file mode 100644
index 0000000..3c9f481
--- /dev/null
+++ b/presets/factory/bank_3/preset_1.json
@@ -0,0 +1,74 @@
+{
+ "name": "Hardcore \u2014 PMA",
+ "bank": 3,
+ "program": 1,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/british-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.5,
+ "tone": 0.25,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_3/preset_2.json b/presets/factory/bank_3/preset_2.json
new file mode 100644
index 0000000..5c9d322
--- /dev/null
+++ b/presets/factory/bank_3/preset_2.json
@@ -0,0 +1,74 @@
+{
+ "name": "Hardcore \u2014 Youth Crew",
+ "bank": 3,
+ "program": 2,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/vintage-1x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "distortion",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.45,
+ "tone": 0.3,
+ "level": 0.75
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_3/preset_3.json b/presets/factory/bank_3/preset_3.json
new file mode 100644
index 0000000..8cb3bc8
--- /dev/null
+++ b/presets/factory/bank_3/preset_3.json
@@ -0,0 +1,86 @@
+{
+ "name": "Hardcore \u2014 Metallic HC",
+ "bank": 3,
+ "program": 3,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/modern-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "distortion",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.55,
+ "tone": 0.2,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "time": 0.3,
+ "feedback": 0.15,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_4/bank.json b/presets/factory/bank_4/bank.json
new file mode 100644
index 0000000..b735ab6
--- /dev/null
+++ b/presets/factory/bank_4/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 4,
+ "name": "Emo",
+ "preset_count": 4
+}
\ No newline at end of file
diff --git a/presets/factory/bank_4/preset_0.json b/presets/factory/bank_4/preset_0.json
new file mode 100644
index 0000000..fe57edf
--- /dev/null
+++ b/presets/factory/bank_4/preset_0.json
@@ -0,0 +1,85 @@
+{
+ "name": "Emo \u2014 Crimson",
+ "bank": 4,
+ "program": 0,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_TwinVerb_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.35,
+ "ratio": 0.04,
+ "gain": 0.55
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.45,
+ "mix": 0.3
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_4/preset_1.json b/presets/factory/bank_4/preset_1.json
new file mode 100644
index 0000000..d8a6346
--- /dev/null
+++ b/presets/factory/bank_4/preset_1.json
@@ -0,0 +1,85 @@
+{
+ "name": "Emo \u2014 Three Cheers",
+ "bank": 4,
+ "program": 1,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/british-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.45,
+ "tone": 0.4,
+ "level": 0.65
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.3,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_4/preset_2.json b/presets/factory/bank_4/preset_2.json
new file mode 100644
index 0000000..7a98261
--- /dev/null
+++ b/presets/factory/bank_4/preset_2.json
@@ -0,0 +1,85 @@
+{
+ "name": "Emo \u2014 The Middle",
+ "bank": 4,
+ "program": 2,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Vox_AC15_TopBoost.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "chorus",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "rate": 0.35,
+ "depth": 0.3,
+ "mix": 0.25
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.25,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_4/preset_3.json b/presets/factory/bank_4/preset_3.json
new file mode 100644
index 0000000..df0a0e0
--- /dev/null
+++ b/presets/factory/bank_4/preset_3.json
@@ -0,0 +1,85 @@
+{
+ "name": "Emo \u2014 Helena",
+ "bank": 4,
+ "program": 3,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Princeton_Clone_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "time": 0.5,
+ "feedback": 0.35,
+ "mix": 0.35
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.55,
+ "mix": 0.35
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_5/bank.json b/presets/factory/bank_5/bank.json
new file mode 100644
index 0000000..ec1e625
--- /dev/null
+++ b/presets/factory/bank_5/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 5,
+ "name": "Midwest Emo",
+ "preset_count": 4
+}
\ No newline at end of file
diff --git a/presets/factory/bank_5/preset_0.json b/presets/factory/bank_5/preset_0.json
new file mode 100644
index 0000000..c31c5c6
--- /dev/null
+++ b/presets/factory/bank_5/preset_0.json
@@ -0,0 +1,85 @@
+{
+ "name": "Midwest Emo \u2014 Never Meant",
+ "bank": 5,
+ "program": 0,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_TwinVerb_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.25,
+ "ratio": 0.03,
+ "gain": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.6,
+ "mix": 0.25
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_5/preset_1.json b/presets/factory/bank_5/preset_1.json
new file mode 100644
index 0000000..9e6b37e
--- /dev/null
+++ b/presets/factory/bank_5/preset_1.json
@@ -0,0 +1,86 @@
+{
+ "name": "Midwest Emo \u2014 Tapping",
+ "bank": 5,
+ "program": 1,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Vox_AC15_TopBoost.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/boutique-1x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.2,
+ "ratio": 0.05,
+ "gain": 0.45
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "time": 0.3,
+ "feedback": 0.15,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_5/preset_2.json b/presets/factory/bank_5/preset_2.json
new file mode 100644
index 0000000..7fe59f6
--- /dev/null
+++ b/presets/factory/bank_5/preset_2.json
@@ -0,0 +1,85 @@
+{
+ "name": "Midwest Emo \u2014 CSTVT",
+ "bank": 5,
+ "program": 2,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Princeton_Clone_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "chorus",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "rate": 0.4,
+ "depth": 0.25,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.4,
+ "mix": 0.3
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_5/preset_3.json b/presets/factory/bank_5/preset_3.json
new file mode 100644
index 0000000..b731b77
--- /dev/null
+++ b/presets/factory/bank_5/preset_3.json
@@ -0,0 +1,85 @@
+{
+ "name": "Midwest Emo \u2014 Home",
+ "bank": 5,
+ "program": 3,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_TwinVerb_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/jazz-1x15.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.7,
+ "mix": 0.4
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "time": 0.6,
+ "feedback": 0.3,
+ "mix": 0.25
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_6/bank.json b/presets/factory/bank_6/bank.json
new file mode 100644
index 0000000..4955028
--- /dev/null
+++ b/presets/factory/bank_6/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 6,
+ "name": "Djent",
+ "preset_count": 4
+}
\ No newline at end of file
diff --git a/presets/factory/bank_6/preset_0.json b/presets/factory/bank_6/preset_0.json
new file mode 100644
index 0000000..2b6014d
--- /dev/null
+++ b/presets/factory/bank_6/preset_0.json
@@ -0,0 +1,84 @@
+{
+ "name": "Djent \u2014 Bleed",
+ "bank": 6,
+ "program": 0,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/modern-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.2,
+ "tone": 0.2,
+ "level": 0.6
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.03
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_6/preset_1.json b/presets/factory/bank_6/preset_1.json
new file mode 100644
index 0000000..c84432c
--- /dev/null
+++ b/presets/factory/bank_6/preset_1.json
@@ -0,0 +1,84 @@
+{
+ "name": "Djent \u2014 Scarlet",
+ "bank": 6,
+ "program": 1,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Princeton_Clone_EOB.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/modern-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "distortion",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.4,
+ "tone": 0.15,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.05
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_6/preset_2.json b/presets/factory/bank_6/preset_2.json
new file mode 100644
index 0000000..7b4d124
--- /dev/null
+++ b/presets/factory/bank_6/preset_2.json
@@ -0,0 +1,85 @@
+{
+ "name": "Djent \u2014 Clean Djent",
+ "bank": 6,
+ "program": 2,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Vox_AC15_TopBoost.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/boutique-1x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.3,
+ "ratio": 0.04,
+ "gain": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.6,
+ "mix": 0.4
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_6/preset_3.json b/presets/factory/bank_6/preset_3.json
new file mode 100644
index 0000000..bc285d8
--- /dev/null
+++ b/presets/factory/bank_6/preset_3.json
@@ -0,0 +1,84 @@
+{
+ "name": "Djent \u2014 Thall",
+ "bank": 6,
+ "program": 3,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/modern-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "distortion",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.45,
+ "tone": 0.2,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.05
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_7/bank.json b/presets/factory/bank_7/bank.json
new file mode 100644
index 0000000..714a617
--- /dev/null
+++ b/presets/factory/bank_7/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 7,
+ "name": "Acoustic",
+ "preset_count": 4
+}
\ No newline at end of file
diff --git a/presets/factory/bank_7/preset_0.json b/presets/factory/bank_7/preset_0.json
new file mode 100644
index 0000000..a480fc9
--- /dev/null
+++ b/presets/factory/bank_7/preset_0.json
@@ -0,0 +1,52 @@
+{
+ "name": "Acoustic \u2014 Natural",
+ "bank": 7,
+ "program": 0,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.3,
+ "mix": 0.15
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_7/preset_1.json b/presets/factory/bank_7/preset_1.json
new file mode 100644
index 0000000..00deec5
--- /dev/null
+++ b/presets/factory/bank_7/preset_1.json
@@ -0,0 +1,64 @@
+{
+ "name": "Acoustic \u2014 Fingerstyle",
+ "bank": 7,
+ "program": 1,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.3,
+ "ratio": 0.03,
+ "gain": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.4,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_7/preset_2.json b/presets/factory/bank_7/preset_2.json
new file mode 100644
index 0000000..dab6fd6
--- /dev/null
+++ b/presets/factory/bank_7/preset_2.json
@@ -0,0 +1,53 @@
+{
+ "name": "Acoustic \u2014 Strum",
+ "bank": 7,
+ "program": 2,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.2,
+ "ratio": 0.04,
+ "gain": 0.55
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_7/preset_3.json b/presets/factory/bank_7/preset_3.json
new file mode 100644
index 0000000..b40a02a
--- /dev/null
+++ b/presets/factory/bank_7/preset_3.json
@@ -0,0 +1,64 @@
+{
+ "name": "Acoustic \u2014 Ambient Pick",
+ "bank": 7,
+ "program": 3,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "time": 0.4,
+ "feedback": 0.2,
+ "mix": 0.25
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.5,
+ "mix": 0.3
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_8/bank.json b/presets/factory/bank_8/bank.json
new file mode 100644
index 0000000..f7a2983
--- /dev/null
+++ b/presets/factory/bank_8/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 8,
+ "name": "Grunge",
+ "preset_count": 4
+}
\ No newline at end of file
diff --git a/presets/factory/bank_8/preset_0.json b/presets/factory/bank_8/preset_0.json
new file mode 100644
index 0000000..9ee2455
--- /dev/null
+++ b/presets/factory/bank_8/preset_0.json
@@ -0,0 +1,86 @@
+{
+ "name": "Grunge \u2014 Smells Like",
+ "bank": 8,
+ "program": 0,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Princeton_Clone_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "distortion",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.5,
+ "tone": 0.4,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "fuzz",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "fuzz": 0.4,
+ "tone": 0.5,
+ "level": 0.6
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_8/preset_1.json b/presets/factory/bank_8/preset_1.json
new file mode 100644
index 0000000..6fddf75
--- /dev/null
+++ b/presets/factory/bank_8/preset_1.json
@@ -0,0 +1,86 @@
+{
+ "name": "Grunge \u2014 Outshined",
+ "bank": 8,
+ "program": 1,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/british-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "fuzz",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "fuzz": 0.7,
+ "tone": 0.3,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "chorus",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "rate": 0.25,
+ "depth": 0.35,
+ "mix": 0.3
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_8/preset_2.json b/presets/factory/bank_8/preset_2.json
new file mode 100644
index 0000000..95453c2
--- /dev/null
+++ b/presets/factory/bank_8/preset_2.json
@@ -0,0 +1,86 @@
+{
+ "name": "Grunge \u2014 Man In Box",
+ "bank": 8,
+ "program": 2,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/vintage-1x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.55,
+ "tone": 0.35,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "delay",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "time": 0.4,
+ "feedback": 0.2,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_8/preset_3.json b/presets/factory/bank_8/preset_3.json
new file mode 100644
index 0000000..07a897f
--- /dev/null
+++ b/presets/factory/bank_8/preset_3.json
@@ -0,0 +1,85 @@
+{
+ "name": "Grunge \u2014 Even Flow",
+ "bank": 8,
+ "program": 3,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_TwinVerb_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.4,
+ "tone": 0.5,
+ "level": 0.65
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.3,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_9/bank.json b/presets/factory/bank_9/bank.json
new file mode 100644
index 0000000..1cd667e
--- /dev/null
+++ b/presets/factory/bank_9/bank.json
@@ -0,0 +1,5 @@
+{
+ "number": 9,
+ "name": "Alternative Rock",
+ "preset_count": 4
+}
\ No newline at end of file
diff --git a/presets/factory/bank_9/preset_0.json b/presets/factory/bank_9/preset_0.json
new file mode 100644
index 0000000..d436b92
--- /dev/null
+++ b/presets/factory/bank_9/preset_0.json
@@ -0,0 +1,85 @@
+{
+ "name": "Alternative Rock \u2014 Creep",
+ "bank": 9,
+ "program": 0,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_TwinVerb_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "compressor",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.35,
+ "ratio": 0.03,
+ "gain": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.5,
+ "mix": 0.3
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_9/preset_1.json b/presets/factory/bank_9/preset_1.json
new file mode 100644
index 0000000..d5f9463
--- /dev/null
+++ b/presets/factory/bank_9/preset_1.json
@@ -0,0 +1,86 @@
+{
+ "name": "Alternative Rock \u2014 1979",
+ "bank": 9,
+ "program": 1,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/JCM2000_Crunch.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/british-4x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "fuzz",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "fuzz": 0.6,
+ "tone": 0.35,
+ "level": 0.7
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "chorus",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "rate": 0.3,
+ "depth": 0.4,
+ "mix": 0.3
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_9/preset_2.json b/presets/factory/bank_9/preset_2.json
new file mode 100644
index 0000000..14ede03
--- /dev/null
+++ b/presets/factory/bank_9/preset_2.json
@@ -0,0 +1,85 @@
+{
+ "name": "Alternative Rock \u2014 Where Is My Mind",
+ "bank": 9,
+ "program": 2,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Fender_Princeton_Clone_Clean.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/vintage-1x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.35,
+ "tone": 0.45,
+ "level": 0.65
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "reverb",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "decay": 0.35,
+ "mix": 0.2
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/bank_9/preset_3.json b/presets/factory/bank_9/preset_3.json
new file mode 100644
index 0000000..3cbd7b6
--- /dev/null
+++ b/presets/factory/bank_9/preset_3.json
@@ -0,0 +1,74 @@
+{
+ "name": "Alternative Rock \u2014 Buddy Holly",
+ "bank": 9,
+ "program": 3,
+ "master_volume": 0.78,
+ "chain": [
+ {
+ "fx_type": "noise_gate",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "threshold": 0.01
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "nam_amp",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.75
+ },
+ "nam_model_path": "/root/.pedal/models/Vox_AC15_TopBoost.nam",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "ir_cab",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "wet": 1.0,
+ "dry": 0.0
+ },
+ "nam_model_path": "",
+ "ir_file_path": "/root/.pedal/irs/american-2x12.wav"
+ },
+ {
+ "fx_type": "eq",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "bass": 0.5,
+ "mid": 0.5,
+ "treble": 0.5
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "overdrive",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "drive": 0.3,
+ "tone": 0.55,
+ "level": 0.65
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ },
+ {
+ "fx_type": "volume",
+ "enabled": true,
+ "bypass": false,
+ "params": {
+ "level": 0.82
+ },
+ "nam_model_path": "",
+ "ir_file_path": ""
+ }
+ ],
+ "midi_mappings": {}
+}
\ No newline at end of file
diff --git a/presets/factory/irs/README.md b/presets/factory/irs/README.md
deleted file mode 100644
index fc8f539..0000000
--- a/presets/factory/irs/README.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Pi Multi-FX Pedal — Default Cabinet IR Files
-
-Synthetic impulse responses (.wav) for guitar cabinet simulation.
-Generated using DSP filter cascades (Butterworth LP/HP + parametric
-peak/notch filters + exponential decay envelope).
-
-**All IRs are 48kHz, 16-bit mono WAV files.**
-
-| File | Cabinet Model | Taps | Length | Description |
-|------|--------------|------|--------|-------------|
-| `vintage-1x12.wav` | Vintage 1x12 — Fender-style Open Back | 2048 | 43ms | Warm, scooped cleans with bell-like top end. Models a Fender-style 1x12 open-back combo. |
-| `british-4x12.wav` | British 4x12 — Marshall-style Closed Back | 4096 | 85ms | Mid-forward, aggressive rock tones with tight low end. Models a Marshall 1960A-style 4x12 closed-back cabinet. |
-| `american-2x12.wav` | American 2x12 — Vox-style Open Back | 2048 | 43ms | Chimey, complex midrange with sparkling highs. Models a Vox AC30-style 2x12 open-back cabinet. |
-| `modern-4x12.wav` | Modern 4x12 — Mesa/Boogie-style Closed Back | 4096 | 85ms | Tight low-end, aggressive mids, smooth highs. Models a Mesa Rectifier-style 4x12 closed-back cab. |
-| `jazz-1x15.wav` | Jazz 1x15 — Deep Open Back | 2048 | 43ms | Deep, warm, scooped tone for jazz cleans. Models a 15-inch speaker in a large open-back cab. |
-| `boutique-1x12.wav` | Boutique 1x12 — Dumble-style Open Back | 2048 | 43ms | Smooth, rounded cleans with enhanced mid complexity. Models a Dumble-style 1x12 open-back combo. |
-| `mini-1x8.wav` | Mini 1x8 — Small Practice Amp | 1024 | 21ms | Lo-fi, boxy tone for vintage radio-style sounds. Models a small 8-inch practice amp speaker. |
-
-## Usage
-
-These IRs are loaded by the `IRLoader` class through the pedal's cab simulation.
-Place them in `~/.pedal/irs/` or reference them by absolute path in preset chain blocks.
-
-## Replacement
-
-Replace any `.wav` file with a real captured IR (48kHz, 16-bit mono) to
-upgrade from synthetic to authentic cabinet tone. The pedal treats all
-`.wav` files in the IR directory identically.
-
-## Cabinet Type Guide
-
-- **Vintage 1x12** — Fender Deluxe / Princeton-style cleans. Scooped mids, warm lows.
-- **British 4x12** — Marshall 1960 / JCM-style crunch and rock. Mid-forward, aggressive.
-- **American 2x12** — Vox AC30-style chime. Complex mids, sparkling treble.
-- **Modern 4x12** — Mesa Rectifier-style high gain. Tight lows, smooth highs.
-- **Jazz 1x15** — Polytone / Henriksen-style jazz. Deep lows, scooped mids.
-- **Boutique 1x12** — Dumble / Two-Rock-style. Smooth, complex midrange.
-- **Mini 1x8** — Small practice amp. Boxy, lo-fi, vintage radio tone.
diff --git a/scripts/download_nam_and_irs.py b/scripts/download_nam_and_irs.py
new file mode 100644
index 0000000..9da852e
--- /dev/null
+++ b/scripts/download_nam_and_irs.py
@@ -0,0 +1,508 @@
+#!/usr/bin/env python3
+"""Download NAM WaveNet models from community collection + cabinet IRs.
+
+Downloads real NAM amp captures from the pelennor2170/NAM_models GitHub
+repository and free cabinet IR packs from Archive.org.
+
+Usage:
+ python3 scripts/download_nam_and_irs.py # Download everything
+ python3 scripts/download_nam_and_irs.py --list # List models only
+ python3 scripts/download_nam_and_irs.py --models # Models only
+ python3 scripts/download_nam_and_irs.py --irs # IRs only
+"""
+
+import json
+import os
+import subprocess
+import sys
+import urllib.parse
+import urllib.request
+from pathlib import Path
+
+# ── Paths ────────────────────────────────────────────────────────────────
+NAM_DIR = Path.home() / ".pedal" / "models"
+IR_DIR = Path.home() / ".pedal" / "irs"
+BASE_URL = "https://raw.githubusercontent.com/pelennor2170/NAM_models/main"
+
+# ── Model definitions ────────────────────────────────────────────────────
+# (local_name, remote_name, description, architecture, size_kb)
+# URL for Tone3000 (ToneHunt) Supabase storage downloads
+TONE3000_STORAGE = "https://api.tone3000.com/storage/v1/object/public/models"
+
+MODELS = [
+ # ── Bank 0: Clean & Edge ──────────────────────────────────────────
+ ("Fender_TwinVerb_Clean.nam",
+ "Tim R Fender TwinVerb Norm Bright.nam",
+ "Fender Twin Reverb Normal Bright — clean jazz/fingerstyle",
+ "WaveNet", 400),
+ ("Fender_TwinVerb_Vibrato.nam",
+ "Tim R Fender TwinVerb Vibrato Bright.nam",
+ "Fender Twin Reverb Vibrato Bright — sparkling clean",
+ "WaveNet", 400),
+ ("Vox_AC15_TopBoost.nam",
+ "Phillipe P VOXAC15-TopBoost.nam",
+ "Vox AC15 Top Boost — chimey edge-of-breakup",
+ "WaveNet", 400),
+ ("Magnatone_Super59_Pushed.nam",
+ "Tim R Magnatone Super 59 Mkii Pushed.nam",
+ "Magnatone Super 59 pushed — bluesy breakup",
+ "WaveNet", 400),
+ ("JCM2000_Clean.nam",
+ "Tim R JCM2000 Clean.nam",
+ "Marshall JCM2000 clean — crisp rhythm",
+ "WaveNet", 400),
+
+ # ── Bank 1: Drive & Lead ──────────────────────────────────────────
+ ("Orange_Rockerverb.nam",
+ "Tom C Axe FX 2 Orange Rockerverb.nam",
+ "Orange Rockerverb — classic rock crunch",
+ "WaveNet", 400),
+ ("JCM2000_Crunch.nam",
+ "Tim R JCM2000 Crunch.nam",
+ "Marshall JCM2000 crunch — hard rock rhythm",
+ "WaveNet", 400),
+ ("JCM900_Lead.nam",
+ "Tim R JCM90050WDualVerbCHAG6.nam",
+ "Marshall JCM900 Dual Verb ch.A gain6 — lead",
+ "WaveNet", 400),
+ ("5150_BlockLetter_Boosted.nam",
+ "Helga B 5150 BlockLetter - Boosted.nam",
+ "EVH 5150 Block Letter boosted — high-gain lead",
+ "WaveNet", 400),
+ ("6505_Red_NoBoost.nam",
+ "Helga B 6505+ Red ch - NoBoost.nam",
+ "Peavey 6505+ Red ch no boost — metal rhythm",
+ "WaveNet", 400),
+ ("Engl_Savage.nam",
+ "Tom C Axe FX 2 Engl Savage.nam",
+ "ENGL Savage 120 — modern high-gain lead",
+ "WaveNet", 400),
+ ("Splawn_ProMod_3rd.nam",
+ "Tim R Splawn Pro Mod 3rd Gear - G12.nam",
+ "Splawn Pro Mod 3rd gear — tight high-gain",
+ "WaveNet", 400),
+ ("5152_Lead_TS9.nam",
+ "Tim R 5152 Lead + TS9.nam",
+ "5152 Lead with Tube Screamer — boosted solo",
+ "WaveNet", 400),
+
+ # ── Pedal captures ───────────────────────────────────────────────
+ ("Klon_Centaur_High.nam",
+ "Keith B Klone_plus_BB_highGain.nam",
+ "Klon Centaur-style OD high gain — boost/overdrive",
+ "WaveNet", 400),
+ ("TubeScreamer_Maxed.nam",
+ "Tudor N Ibanez Tube Screamer Mini Tone@10_Level@10_Overdrive@0 ESR_0.0006_lite.nam",
+ "Ibanez TS808 Mini maxed — clean boost",
+ "WaveNet", 200),
+ ("Mesa_MarkIV_Lead.nam",
+ "Roman A LT_MESA_MARKIV_1.nam",
+ "Mesa Boogie Mark IV lead — singing sustain",
+ "WaveNet", 400),
+ ("Bogner_Ecstasy.nam",
+ "Tudor N Ceriatone Molecular 50.nam",
+ "Bogner Ecstasy-style — versatile OD range",
+ "WaveNet", 400),
+
+ # ── Feather models (93 KB, ultra-low CPU) ────────────────────────
+ ("BOSS_SD1_Feather.nam",
+ "Phillipe P BOSS-SD1-Feather-ESR0,001.nam",
+ "BOSS SD-1 overdrive feather — 93 KB",
+ "WaveNet", 93),
+ ("MXR_M77_Feather.nam",
+ "Phillipe P MXR-M77-Feather-ESR0,001.nam",
+ "MXR M77 Custom Badass OD feather — 93 KB",
+ "WaveNet", 93),
+ ("TS808_Feather.nam",
+ "Phillipe P Maxon-OD808-Feather-ESR0,001.nam",
+ "Maxon OD808 Tube Screamer feather — 93 KB",
+ "WaveNet", 93),
+ ("Precision_Drive_Feather.nam",
+ "Phillipe P Precision-Drive-Feather-ESR0,001.nam",
+ "Precision Drive overdrive feather — 93 KB",
+ "WaveNet", 93),
+ ("Friedman_PowerAmp_Feather.nam",
+ "Sascha S FriedmanDSM_PowerAmpEL84_MV10_feather.nam",
+ "Friedman DSM power amp feather — 93 KB",
+ "WaveNet", 93),
+
+ # ── Bank 2: Blues (Tone3000 captures — clean, edge-of-breakup, pushed) ─
+ # Downloaded from ToneHunt / Tone3000 Supabase storage. These are real
+ # amp captures of classic blues tones: Fender Princeton, Tweed Deluxe,
+ # Twin Reverb, Dumble ODS, Two-Rock, Marshall Bluesbreaker.
+ # Format: (local_name, tone3000_storage_key, description, architecture, size_kb)
+ ("Fender_Princeton_Clone_Clean.nam",
+ "4f81e2b088149c04.nam",
+ "Fender Hand-wired Princeton Clone Clean — blues clean (WaveNet A1, 289 KB)",
+ "WaveNet", 289),
+ ("Fender_Princeton_Clone_EOB.nam",
+ "68a5f3484e1759ed_a2.nam",
+ "Fender Hand-wired Princeton Clone Edge-of-Breakup — blues edge (Slimmable A2, 288 KB)",
+ "SlimmableContainer", 288),
+ ("Fender_Tweed_Dlx_Edge.nam",
+ "ga5rj9sxlnk.nam",
+ "Fender Tweed Deluxe The Edge (Celestion Blue) — pushed clean (Slimmable A2, 288 KB)",
+ "SlimmableContainer", 288),
+ ("Fender_Twin_Reverb_Clean_A2.nam",
+ "tg81uadutjo_a2.nam",
+ "Fender Twin Reverb Clean — sparkling blues clean (Slimmable A2, 290 KB)",
+ "SlimmableContainer", 290),
+ ("TwoRock_JTM_Signature.nam",
+ "qj3hkgbcwb9.nam",
+ "Two-Rock John Mayer Signature Prototype — clean/edge bloom (WaveNet A1, 276 KB)",
+ "WaveNet", 276),
+ ("Dumble_ODS_102_Rock_A1.nam",
+ "5bac98f136812852.nam",
+ "Dumble ODS #102 Clone Rock setting — pushed blues overdrive (WaveNet A1, 87 KB feather)",
+ "WaveNet", 87),
+ ("Dumble_ODS_102_Rock_A2.nam",
+ "5bac98f136812852_a2.nam",
+ "Dumble ODS #102 Clone Rock setting — pushed blues OD (Slimmable A2, 289 KB)",
+ "SlimmableContainer", 289),
+ ("Marshall_Bluesbreaker_1962_A2.nam",
+ "bbc41ecccdc730fb_a2.nam",
+ "Marshall Bluesbreaker 1962 — classic blues rock (Slimmable A2, 289 KB)",
+ "SlimmableContainer", 289),
+ ("Marshall_Bluesbreaker_Pedal.nam",
+ "31aeae1256b36839.nam",
+ "Marshall Bluesbreaker Pedal (Original) Setting 1 — pedal OD (WaveNet A1, 290 KB)",
+ "WaveNet", 290),
+
+
+ # ── Bank 7: Bass, Orange & Others (Tone3000 A2 — SlimmableContainer) ────
+ # Downloaded from Tone3000 Supabase storage. Covers missing categories:
+ # Bass (Ampeg, Aguilar, GK), Orange Rocker 30, Fender Bassman,
+ # Hiwatt DR103, Supro Black Magick.
+ ("Ampeg_PF20T_A2.nam",
+ "db2c43e99cfc346d_a2.nam",
+ "Ampeg PF20T — clean bass tube amp (Slimmable A2, 288 KB)",
+ "SlimmableContainer", 288),
+ ("Aguilar_Tone_Hammer_500_A2.nam",
+ "38rdhwzk3hp_a2.nam",
+ "Aguilar Tone Hammer 500 — modern bass preamp (Slimmable A2, 293 KB)",
+ "SlimmableContainer", 293),
+ ("GK_800RB_Line_A2.nam",
+ "ce68ccd373a10054_a2.nam",
+ "Gallien-Krueger 800RB — classic bass solid-state (Slimmable A2, 295 KB)",
+ "SlimmableContainer", 295),
+ ("Aguilar_DB751_Cab_A2.nam",
+ "lage0x4ybk_a2.nam",
+ "Aguilar DB751 — bass amp DI (Slimmable A2, 292 KB)",
+ "SlimmableContainer", 292),
+ ("Orange_Rocker30_Dirty_A2.nam",
+ "8491c70c3771de1e_a2.nam",
+ "Orange Rocker 30 Dirty — classic rock crunch (Slimmable A2, 295 KB)",
+ "SlimmableContainer", 295),
+ ("Orange_Rocker30_Natural_A2.nam",
+ "a60ed1a1aa0c2c0f_a2.nam",
+ "Orange Rocker 30 Natural — clean edge (Slimmable A2, 289 KB)",
+ "SlimmableContainer", 289),
+ ("Fender_Bassman_Dimed_A2.nam",
+ "0a9223a9f1c879d5_a2.nam",
+ "Fender Bassman dimed — blues/rock breakup (Slimmable A2, 289 KB)",
+ "SlimmableContainer", 289),
+ ("Hiwatt_DR103_Bright_A2.nam",
+ "0c46e5a7db1cce48_a2.nam",
+ "Hiwatt DR-103 Bright Normal — prog/classic rock (Slimmable A2, 287 KB)",
+ "SlimmableContainer", 287),
+ ("Hiwatt_DR103_Cornish_A2.nam",
+ "ynk0h2e2tph.nam",
+ "Hiwatt DR103 + Cornish PGS — boosted prog rock (Slimmable A2, 288 KB)",
+ "SlimmableContainer", 288),
+ ("Supro_Black_Magick_M3_A2.nam",
+ "c90a6d8ee0c0a689_a2.nam",
+ "Supro Black Magick M3 — garage/blues (Slimmable A2, 288 KB)",
+ "SlimmableContainer", 288),
+]
+
+# ── IR Pack definitions ──────────────────────────────────────────────────
+IR_PACKS = [
+ ("God's Cab",
+ "https://archive.org/download/godscab-ir-pack/GodsCab_IR_Pack.zip",
+ "godscab.zip",
+ "100+ cabinet IRs (412, 1960, V30, Greenback, etc.) — CC0 / Public Domain"),
+ ("Seacow Cabs",
+ "https://archive.org/download/seacow-cabs-free-ir-2023/Seacow_Cabs_Free_IRs_2023.zip",
+ "seacow.zip",
+ "Boutique cab IR pack, 15+ cabs — Free for personal use"),
+]
+
+
+def info(msg): print(f"\033[0;36m[INFO]\033[0m {msg}")
+def ok(msg): print(f"\033[0;32m[OK]\033[0m {msg}")
+def warn(msg): print(f"\033[1;33m[WARN]\033[0m {msg}")
+def err(msg): print(f"\033[0;31m[ERR]\033[0m {msg}", file=sys.stderr)
+
+
+def download_file(url: str, dest: Path, max_size_mb: int = 50) -> bool:
+ """Download a file from url to dest. Returns True on success."""
+ try:
+ req = urllib.request.Request(url, headers={"User-Agent": "pedal-downloader/1.0"})
+ with urllib.request.urlopen(req, timeout=30) as src:
+ data = src.read()
+ size_mb = len(data) / (1024 * 1024)
+ if size_mb > max_size_mb:
+ err(f"File too large ({size_mb:.1f} MB, max {max_size_mb} MB)")
+ return False
+ if len(data) < 1000:
+ err(f"File too small ({len(data)} bytes)")
+ return False
+ dest.write_bytes(data)
+ return True
+ except Exception as e:
+ err(f"Download failed: {e}")
+ return False
+
+
+def download_model(local_name: str, remote_name: str, desc: str, arch: str, size: int) -> bool:
+ """Download a single NAM model file from GitHub."""
+ outfile = NAM_DIR / local_name
+
+ if outfile.exists() and outfile.stat().st_size > 1000:
+ ok(f"SKIP {local_name} (already exists, {outfile.stat().st_size // 1024} KB)")
+ return True
+
+ # URL-encode the remote filename
+ encoded = urllib.parse.quote(remote_name)
+ url = f"{BASE_URL}/{encoded}"
+
+ info(f"DL {local_name} ({desc})")
+ if download_file(url, outfile):
+ # Verify it's valid JSON (.nam format)
+ try:
+ data = json.loads(outfile.read_text())
+ actual_arch = data.get("architecture", "?")
+ actual_ver = data.get("version", "?")
+ ok(f"Downloaded {local_name} ({outfile.stat().st_size // 1024} KB, {actual_arch} v{actual_ver})")
+ return True
+ except json.JSONDecodeError as e:
+ err(f"Invalid .nam file (not valid JSON): {e}")
+ outfile.unlink(missing_ok=True)
+ return False
+ else:
+ err(f"Failed to download {local_name}")
+ return False
+
+
+def _discover_tone3000_key() -> str:
+ """Discover the Supabase anon key from Tone3000 website JS bundles."""
+ try:
+ req = urllib.request.Request(
+ "https://tone3000.com",
+ headers={"User-Agent": "Mozilla/5.0 (compatible; pedal-downloader/1.0)"},
+ )
+ with urllib.request.urlopen(req, timeout=15) as resp:
+ html = resp.read().decode("utf-8", errors="replace")
+ import re
+ chunk_urls = set()
+ for m in re.finditer(r'src="([^"]*\.js[^"]*)"', html):
+ url = m.group(1)
+ if url.startswith("/"):
+ url = "https://tone3000.com" + url
+ chunk_urls.add(url)
+ for chunk_url in sorted(chunk_urls)[:15]:
+ try:
+ req2 = urllib.request.Request(chunk_url, headers={"User-Agent": "Mozilla/5.0"})
+ with urllib.request.urlopen(req2, timeout=10) as resp2:
+ js = resp2.read().decode("utf-8", errors="replace")
+ m = re.search(
+ r'createBrowserClient\s*\)\s*\(\s*["\']https?://api\.tone3000\.com["\']\s*,\s*["\']([^"\']+)["\']',
+ js,
+ )
+ if m:
+ key = m.group(1)
+ if key.startswith("eyJ") and key.count(".") >= 2:
+ return key
+ for m2 in re.finditer(
+ r'["\'](eyJ[a-zA-Z0-9_\-]{20,}\.[a-zA-Z0-9_\-]{20,}\.[a-zA-Z0-9_\-]{10,})["\']', js
+ ):
+ key = m2.group(1)
+ if key.count(".") >= 2:
+ return key
+ except Exception:
+ continue
+ except Exception:
+ pass
+ return ""
+
+
+def download_tone3000_model(local_name: str, storage_key: str, desc: str, arch: str, size: int) -> bool:
+ """Download a single NAM model file from Tone3000 Supabase storage."""
+ outfile = NAM_DIR / local_name
+
+ if outfile.exists() and outfile.stat().st_size > 1000:
+ ok(f"SKIP {local_name} (already exists, {outfile.stat().st_size // 1024} KB)")
+ return True
+
+ url = f"{TONE3000_STORAGE}/{storage_key}"
+
+ info(f"DL {local_name} ({desc})")
+ req = urllib.request.Request(url, headers={"User-Agent": "pedal-downloader/1.0"})
+ try:
+ with urllib.request.urlopen(req, timeout=30) as src:
+ data = src.read()
+ except Exception as e:
+ err(f"Download failed: {e}")
+ # Try with anon key (some storage buckets require authentication)
+ try:
+ anon_key = _discover_tone3000_key()
+ if anon_key:
+ req = urllib.request.Request(url, headers={
+ "User-Agent": "pedal-downloader/1.0",
+ "Authorization": f"Bearer {anon_key}",
+ })
+ with urllib.request.urlopen(req, timeout=30) as src:
+ data = src.read()
+ else:
+ return False
+ except Exception as e2:
+ err(f"Download failed even with auth: {e2}")
+ return False
+
+ size_mb = len(data) / (1024 * 1024)
+ if size_mb > 50:
+ err(f"File too large ({size_mb:.1f} MB, max 50 MB)")
+ return False
+ if len(data) < 1000:
+ err(f"File too small ({len(data)} bytes)")
+ return False
+ outfile.write_bytes(data)
+
+ # Verify
+ try:
+ model_data = json.loads(data)
+ actual_arch = model_data.get("architecture", "?")
+ actual_ver = model_data.get("version", "?")
+ ok(f"Downloaded {local_name} ({outfile.stat().st_size // 1024} KB, {actual_arch} v{actual_ver})")
+ return True
+ except json.JSONDecodeError as e:
+ err(f"Invalid .nam file (not valid JSON): {e}")
+ outfile.unlink(missing_ok=True)
+ return False
+
+
+def download_models():
+ """Download all NAM models (GitHub + Tone3000)."""
+ print(f"\n\033[0;36mDownloading {len(MODELS)} NAM models to {NAM_DIR}\033[0m")
+ print(f"\033[0;36m{'━' * 60}\033[0m")
+ NAM_DIR.mkdir(parents=True, exist_ok=True)
+
+ success = 0
+ fail = 0
+
+ for local_name, remote_name, desc, arch, size in MODELS:
+ # Detect Tone3000 storage key (short, no dots, no spaces)
+ if " " not in remote_name and "." not in remote_name and len(remote_name) < 64:
+ if download_tone3000_model(local_name, remote_name, desc, arch, size):
+ success += 1
+ else:
+ fail += 1
+ else:
+ if download_model(local_name, remote_name, desc, arch, size):
+ success += 1
+ else:
+ fail += 1
+
+ print(f"\n Models: {success} successful, {fail} failed")
+ return fail
+
+
+def download_irs():
+ """Download IR packs from Archive.org."""
+ print(f"\n\033[0;36mDownloading IR packs to {IR_DIR}\033[0m")
+ print(f"\033[0;36m{'━' * 60}\033[0m")
+ IR_DIR.mkdir(parents=True, exist_ok=True)
+
+ success = 0
+ fail = 0
+
+ for name, url, fname, desc in IR_PACKS:
+ # Check if already extracted
+ wav_count = len(list(IR_DIR.rglob("*.wav")))
+ if wav_count > 10:
+ ok(f"SKIP {name} ({wav_count} .wav files already present)")
+ success += 1
+ continue
+
+ dest = IR_DIR / fname
+ info(f"Downloading {name}...")
+ info(f" Source: {url}")
+
+ if download_file(url, dest, max_size_mb=200):
+ size_mb = dest.stat().st_size / (1024 * 1024)
+ ok(f"Downloaded {fname} ({size_mb:.1f} MB)")
+
+ # Extract ZIP
+ import zipfile
+ try:
+ with zipfile.ZipFile(dest, "r") as zf:
+ zf.extractall(IR_DIR)
+ dest.unlink()
+ wav_count = len(list(IR_DIR.rglob("*.wav")))
+ ok(f"Extracted to {IR_DIR}/ ({wav_count} .wav files)")
+ success += 1
+ except zipfile.BadZipFile:
+ warn(f"Bad ZIP — saved at {dest}")
+ fail += 1
+ else:
+ err(f"Failed to download {name}")
+ fail += 1
+
+ print(f"\n IR packs: {success} downloaded, {fail} failed")
+ wav_count = len(list(IR_DIR.rglob("*.wav")))
+ info(f"Total .wav IR files: {wav_count}")
+ return fail
+
+
+def list_models():
+ """Print model listing."""
+ print(f"\n\033[0;36mNAM Models by Genre:\033[0m")
+ print(f"\033[0;36m{'━' * 60}\033[0m")
+ for local_name, remote_name, desc, arch, size in MODELS:
+ print(f" {local_name:35s} {desc}")
+ print(f" {'':35s} ({arch}, ~{size} KB)")
+ print()
+
+ print(f"\nTotal: {len(MODELS)} models")
+
+ # Count existing files
+ nam_count = len(list(NAM_DIR.glob("*.nam")))
+ ir_count = len(list(IR_DIR.rglob("*.wav")))
+ print(f"\n Models in {NAM_DIR}: {nam_count}")
+ print(f" IRs in {IR_DIR}: {ir_count}")
+
+
+def main():
+ # Also check ~/.pedal/nam/ legacy location
+ NAM_DIR.mkdir(parents=True, exist_ok=True)
+ IR_DIR.mkdir(parents=True, exist_ok=True)
+
+ arg = sys.argv[1] if len(sys.argv) > 1 else "--all"
+
+ if arg == "--list":
+ list_models()
+ elif arg == "--models":
+ exit(download_models())
+ elif arg == "--irs":
+ exit(download_irs())
+ elif arg == "--all":
+ fail = download_models()
+ download_irs()
+
+ # Summary
+ nam_count = len(list(NAM_DIR.glob("*.nam")))
+ ir_count = len(list(IR_DIR.rglob("*.wav")))
+ print(f"\n\033[0;32m{'╔' + '═' * 56 + '╗'}\033[0m")
+ print(f"\033[0;32m║ Download complete!{' ' * 36}║\033[0m")
+ print(f"\033[0;32m{'╚' + '═' * 56 + '╝'}\033[0m")
+ print()
+ print(f" Models: {nam_count} .nam files in {NAM_DIR}")
+ print(f" IRs: {ir_count} .wav files in {IR_DIR}")
+ exit(fail)
+ else:
+ print(f"Usage: {sys.argv[0]} [--list|--models|--irs|--all]")
+ exit(1)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/scripts/download_nam_and_irs.sh b/scripts/download_nam_and_irs.sh
new file mode 100755
index 0000000..c448f73
--- /dev/null
+++ b/scripts/download_nam_and_irs.sh
@@ -0,0 +1,371 @@
+#!/usr/bin/env bash
+# ── NAM Model & Cabinet IR Downloader ─────────────────────────────────
+#
+# Downloads real NAM amp captures (WaveNet/architecture=2) from the
+# pelennor2170/NAM_models community collection on GitHub, plus free
+# cabinet IR packs from Archive.org.
+#
+# Models are organized by genre to match the factory presets:
+# Bank 0 — Clean & Edge (Clean Jazz, Edge of Breakup, Clean w/ Chorus, Dynamic Fingerstyle)
+# Bank 1 — Drive & Lead (Classic Rock, Lead Solo, Metal Rhythm, Ambient Wash)
+# Bank 2 — FX Bench (reference presets)
+#
+# Usage:
+# ./scripts/download_nam_and_irs.sh # Download everything
+# ./scripts/download_nam_and_irs.sh --list # List what would be downloaded
+# ./scripts/download_nam_and_irs.sh --models # Models only
+# ./scripts/download_nam_and_irs.sh --irs # IRs only
+#
+# Environment:
+# NAM_DIR: target directory for .nam files (default: ~/.pedal/models)
+# IR_DIR: target directory for .wav IRs (default: ~/.pedal/irs)
+#
+# ──────────────────────────────────────────────────────────────────────
+
+set -euo pipefail
+
+NAM_DIR="${NAM_DIR:-$HOME/.pedal/models}"
+IR_DIR="${IR_DIR:-$HOME/.pedal/irs}"
+TMPDIR="${TMPDIR:-/tmp}/pedal-download-$$"
+BASE_URL="https://raw.githubusercontent.com/pelennor2170/NAM_models/main"
+
+# ── Colours ──────────────────────────────────────────────────────────
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+RED='\033[0;31m'
+CYAN='\033[0;36m'
+NC='\033[0m'
+
+info() { echo -e "${CYAN}[INFO]${NC} $*"; }
+ok() { echo -e "${GREEN}[OK]${NC} $*"; }
+warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
+err() { echo -e "${RED}[ERR]${NC} $*" >&2; }
+
+# ── NAM Models by Genre ──────────────────────────────────────────────
+#
+# Format: "local_filename|github_filename|description|architecture|size_kb"
+# All are WaveNet models from the community capture collection.
+#
+# GENRE MAP (matching factory presets):
+# Clean Jazz, Dynamic Fingerstyle → Fender Twin, Vox AC15 cleans
+# Edge of Breakup → Magnatone pushed, JCM2000 crunch
+# Clean with Chorus → Fender Twin clean
+# Classic Rock → Orange Rockerverb, JCM2000, JCM900
+# Lead Solo → 5150, Engl Savage
+# Metal Rhythm → 5150, Splawn
+# Ambient Wash → Fender Twin clean (with reverb/mod FX)
+#
+
+declare -a MODELS=()
+
+# ── Bank 0: Clean & Edge ─────────────────────────────────────────────
+
+MODELS+=(
+ "Fender_TwinVerb_Clean.nam|Tim R Fender TwinVerb Norm Bright.nam|Fender Twin Reverb Normal Bright channel — clean jazz/fingerstyle|WaveNet|400"
+ "Fender_TwinVerb_Vibrato.nam|Tim R Fender TwinVerb Vibrato Bright.nam|Fender Twin Reverb Vibrato Bright channel — sparkling clean|WaveNet|400"
+ "Vox_AC15_TopBoost.nam|Phillipe P VOXAC15-TopBoost.nam|Vox AC15 Top Boost channel — chimey edge-of-breakup|WaveNet|400"
+ "Magnatone_Super59_Pushed.nam|Tim R Magnatone Super 59 Mkii Pushed.nam|Magnatone Super 59 pushed — bluesy breakup|WaveNet|400"
+ "JCM2000_Clean.nam|Tim R JCM2000 Clean.nam|Marshall JCM2000 clean — crisp rhythm|WaveNet|400"
+)
+
+# ── Bank 1: Drive & Lead ─────────────────────────────────────────────
+
+MODELS+=(
+ "Orange_Rockerverb.nam|Tom C Axe FX 2 Orange Rockerverb.nam|Orange Rockerverb — classic rock crunch|WaveNet|400"
+ "JCM2000_Crunch.nam|Tim R JCM2000 Crunch.nam|Marshall JCM2000 crunch — hard rock rhythm|WaveNet|400"
+ "JCM900_Lead.nam|Tim R JCM90050WDualVerbCHAG6.nam|Marshall JCM900 Dual Verb channel A gain 6 — lead|WaveNet|400"
+ "5150_BlockLetter_Boosted.nam|Helga B 5150 BlockLetter - Boosted.nam|EVH 5150 Block Letter boosted — high-gain lead|WaveNet|400"
+ "6505_Red_NoBoost.nam|Helga B 6505+ Red ch - NoBoost.nam|Peavey 6505+ Red channel no boost — metal rhythm|WaveNet|400"
+ "Engl_Savage.nam|Tom C Axe FX 2 Engl Savage.nam|ENGL Savage 120 — modern high-gain lead|WaveNet|400"
+ "Splawn_ProMod_3rd.nam|Tim R Splawn Pro Mod 3rd Gear - G12.nam|Splawn Pro Mod 3rd gear — tight high-gain|WaveNet|400"
+ "5152_Lead_TS9.nam|Tim R 5152 Lead + TS9.nam|5152 Lead with Tube Screamer — boosted solo tone|WaveNet|400"
+)
+
+# ── Pedal captures (for FX chain flexibility) ────────────────────────
+# These work as stand-in for the BOOST/OD/DIST blocks or as
+# preamp-into-IR tones.
+
+MODELS+=(
+ "Klon_Centaur_High.nam|Keith B Klone_plus_BB_highGain.nam|Klon Centaur-style overdrive high gain — boost/overdrive|WaveNet|400"
+ "TubeScreamer_Maxed.nam|Tudor N Ibanez Tube Screamer Mini Tone@10_Level@10_Overdrive@0 ESR_0.0006_lite.nam|Ibanez TS808 Mini maxed — clean boost|WaveNet|200"
+ "Mesa_MarkIV_Lead.nam|Roman A LT_MESA_MARKIV_1.nam|Mesa Boogie Mark IV lead — singing sustain|WaveNet|400"
+ "Bogner_Ecstasy.nam|Tudor N Ceriatone Molecular 50.nam|Bogner Ecstasy-style — versatile overdrive range|WaveNet|400"
+)
+
+# ── Feather models (smallest footprint, best for RPi 4B) ────────────
+
+MODELS+=(
+ "BOSS_SD1_Feather.nam|Phillipe P BOSS-SD1-Feather-ESR0,001.nam|BOSS SD-1 overdrive feather model — 93 KB, ultra-low CPU|WaveNet|93"
+ "MXR_M77_Feather.nam|Phillipe P MXR-M77-Feather-ESR0,001.nam|MXR M77 Custom Badass OD feather model — 93 KB|WaveNet|93"
+ "TS808_Feather.nam|Phillipe P Maxon-OD808-Feather-ESR0,001.nam|Maxon OD808 Tube Screamer feather — 93 KB|WaveNet|93"
+ "Precision_Drive_Feather.nam|Phillipe P Precision-Drive-Feather-ESR0,001.nam|Precision Drive overdrive feather — 93 KB|WaveNet|93"
+ "Friedman_PowerAmp_Feather.nam|Sascha S FriedmanDSM_PowerAmpEL84_MV10_feather.nam|Friedman DSM power amp feather — 93 KB|WaveNet|93"
+)
+
+# ── Bank 2: Blues (Tone3000 captures — clean, edge-of-breakup, pushed) ──
+# Downloaded from ToneHunt/Tone3000 Supabase storage. "remote_name" is the
+# storage key (not a filename), which the Python script resolves to a
+# Tone3000 storage URL. The shell script downloads these with direct
+# Tone3000 storage URLs via curl.
+# Covers: Fender Princeton, Tweed Deluxe, Twin Reverb, Dumble ODS,
+# Two-Rock, Marshall Bluesbreaker.
+
+MODELS+=(
+ "Fender_Princeton_Clone_Clean.nam|4f81e2b088149c04|Fender Hand-wired Princeton Clone Clean — blues clean (WaveNet A1, 289 KB)|WaveNet|289"
+ "Fender_Princeton_Clone_EOB.nam|68a5f3484e1759ed_a2|Fender Hand-wired Princeton Clone Edge-of-Breakup — blues edge (Slimmable A2, 288 KB)|SlimmableContainer|288"
+ "Fender_Tweed_Dlx_Edge.nam|ga5rj9sxlnk|Fender Tweed Deluxe The Edge (Celestion Blue) — pushed clean (Slimmable A2, 288 KB)|SlimmableContainer|288"
+ "Fender_Twin_Reverb_Clean_A2.nam|tg81uadutjo_a2|Fender Twin Reverb Clean — sparkling blues clean (Slimmable A2, 290 KB)|SlimmableContainer|290"
+ "TwoRock_JTM_Signature.nam|qj3hkgbcwb9|Two-Rock John Mayer Signature Prototype — clean/edge bloom (WaveNet A1, 276 KB)|WaveNet|276"
+ "Dumble_ODS_102_Rock_A1.nam|5bac98f136812852|Dumble ODS #102 Clone Rock setting — pushed blues overdrive (WaveNet A1, 87 KB feather)|WaveNet|87"
+ "Dumble_ODS_102_Rock_A2.nam|5bac98f136812852_a2|Dumble ODS #102 Clone Rock setting — pushed blues OD (Slimmable A2, 289 KB)|SlimmableContainer|289"
+ "Marshall_Bluesbreaker_1962_A2.nam|bbc41ecccdc730fb_a2|Marshall Bluesbreaker 1962 — classic blues rock (Slimmable A2, 289 KB)|SlimmableContainer|289"
+ "Marshall_Bluesbreaker_Pedal.nam|31aeae1256b36839|Marshall Bluesbreaker Pedal (Original) Setting 1 — pedal OD (WaveNet A1, 290 KB)|WaveNet|290"
+)
+
+# ── Total: 31 models (22 core + 9 blues) ──────────────────────────
+
+# ── IR Packs ─────────────────────────────────────────────────────────
+# Free cabinet IR collections from Archive.org (CC0 / free for personal use)
+
+declare -a IR_PACKS=(
+ "God's Cab|https://archive.org/download/godscab-ir-pack/GodsCab_IR_Pack.zip|godscab.zip|100+ cabinet IRs (412, 1960, V30, Greenback, etc.) — CC0 / Public Domain"
+ "Seacow Cabs|https://archive.org/download/seacow-cabs-free-ir-2023/Seacow_Cabs_Free_IRs_2023.zip|seacow.zip|Boutique cab IR pack, 15+ cabs — Free for personal use"
+)
+
+# ── Helpers ──────────────────────────────────────────────────────────
+
+_list_models() {
+ echo -e "\n${CYAN}NAM Models by Genre:${NC}"
+ echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+ echo ""
+
+ local current_bank=""
+ for entry in "${MODELS[@]}"; do
+ IFS='|' read -r local_name remote_name desc arch size <<< "$entry"
+ printf " %-35s %s\n" "$local_name" "$desc"
+ printf " %-35s %s\n" "" "($arch, ~${size} KB)"
+ echo ""
+ done
+
+ echo -e "${CYAN}Total: ${#MODELS[@]} models${NC}"
+}
+
+_download_model() {
+ local local_name="$1" remote_name="$2" desc="$3" arch="$4" size="$5"
+ local outfile="$NAM_DIR/$local_name"
+
+ if [[ -f "$outfile" ]]; then
+ local existing_size
+ existing_size=$(stat -c%s "$outfile" 2>/dev/null || echo 0)
+ if [[ $existing_size -gt 1000 ]]; then
+ ok "SKIP $local_name (already exists, $(( existing_size / 1024 )) KB)"
+ return 0
+ fi
+ fi
+
+ info "DL $local_name ($desc)"
+
+ # URL-encode the remote filename for GitHub raw URL
+ local encoded_name
+ encoded_name=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$remote_name'))" 2>/dev/null || echo "$remote_name")
+ local url="$BASE_URL/$encoded_name"
+
+ local http_code
+ http_code=$(curl -sL -o "$outfile" -w "%{http_code}" --connect-timeout 10 --max-time 60 "$url" 2>/dev/null || echo "000")
+
+ if [[ "$http_code" == "200" ]]; then
+ local actual_size
+ actual_size=$(stat -c%s "$outfile" 2>/dev/null || echo 0)
+ if [[ $actual_size -lt 1000 ]]; then
+ err "Downloaded file too small (${actual_size} bytes) — removing"
+ rm -f "$outfile"
+ return 1
+ fi
+ # Verify it's valid JSON / .nam
+ if python3 -c "import json; json.load(open('$outfile'))" 2>/dev/null; then
+ ok "Downloaded ${local_name} ($(( actual_size / 1024 )) KB)"
+ return 0
+ else
+ err "Invalid .nam file (not valid JSON) — removing"
+ rm -f "$outfile"
+ return 1
+ fi
+ else
+ err "HTTP $http_code for $url"
+ rm -f "$outfile"
+ return 1
+ fi
+}
+
+_download_all_models() {
+ echo -e "\n${CYAN}Downloading ${#MODELS[@]} NAM models to $NAM_DIR${NC}"
+ echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+ mkdir -p "$NAM_DIR"
+
+ local success=0 fail=0
+ for entry in "${MODELS[@]}"; do
+ IFS='|' read -r local_name remote_name desc arch size <<< "$entry"
+ if _download_model "$local_name" "$remote_name" "$desc" "$arch" "$size"; then
+ ((success++))
+ else
+ ((fail++))
+ fi
+ done
+
+ echo ""
+ info "Models: $success downloaded, $fail failed"
+ return "$fail"
+}
+
+_download_ir_pack() {
+ local name="$1" url="$2" fname="$3" desc="$4"
+ local dest="${IR_DIR}/${fname}"
+
+ if [[ -d "$IR_DIR/GodsCab_IR_Pack" ]] || [[ -d "$IR_DIR/Seacow_Cabs_Free_IRs_2023" ]]; then
+ local wav_count
+ wav_count=$(find "$IR_DIR" -maxdepth 2 -name '*.wav' 2>/dev/null | wc -l)
+ if [[ $wav_count -gt 10 ]]; then
+ ok "SKIP $name (IRs already extracted, $wav_count .wav files present)"
+ return 0
+ fi
+ fi
+
+ info "Downloading $name..."
+ info " Source: $url"
+
+ if curl -sL -o "$dest" --connect-timeout 10 --max-time 120 "$url" 2>/dev/null; then
+ local size
+ size=$(stat -c%s "$dest" 2>/dev/null || echo 0)
+ if [[ $size -lt 10000 ]]; then
+ err "Downloaded file too small (${size} bytes)"
+ rm -f "$dest"
+ return 1
+ fi
+ ok "Downloaded ${fname} ($(( size / 1024 / 1024 )) MB)"
+
+ # Extract ZIP
+ if command -v unzip &>/dev/null; then
+ info "Extracting ${fname} to ${IR_DIR}..."
+ unzip -q -o "$dest" -d "$IR_DIR" 2>/dev/null && {
+ rm -f "$dest"
+ ok "Extracted to ${IR_DIR}/"
+ local wav_count
+ wav_count=$(find "$IR_DIR" -maxdepth 2 -name '*.wav' 2>/dev/null | wc -l)
+ info "IR files installed: $wav_count"
+ } || {
+ warn "Extraction had issues — ZIP saved at ${dest}"
+ }
+ else
+ warn "unzip not found — ZIP saved at ${dest}"
+ fi
+ return 0
+ else
+ err "Failed to download $name from $url"
+ return 1
+ fi
+}
+
+_download_all_irs() {
+ echo -e "\n${CYAN}Downloading IR packs to $IR_DIR${NC}"
+ echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+ mkdir -p "$IR_DIR"
+
+ local success=0 fail=0
+ for i in "${!IR_PACKS[@]}"; do
+ IFS='|' read -r name url fname desc <<< "${IR_PACKS[$i]}"
+ if _download_ir_pack "$name" "$url" "$fname" "$desc"; then
+ ((success++))
+ else
+ ((fail++))
+ fi
+ done
+
+ echo ""
+ info "IR packs: $success downloaded, $fail failed"
+
+ # Count installed IRs
+ local wav_count
+ wav_count=$(find "$IR_DIR" -maxdepth 2 -name '*.wav' 2>/dev/null | wc -l)
+ info "Total .wav IR files in $IR_DIR: $wav_count"
+}
+
+_show_counts() {
+ echo ""
+ local model_count nam_count ir_count
+ model_count=$(find "$NAM_DIR" -maxdepth 1 -name '*.nam' 2>/dev/null | wc -l)
+ nam_count=$(find "$HOME/.pedal/nam" -maxdepth 1 -name '*.nam' 2>/dev/null | wc -l)
+ ir_count=$(find "$IR_DIR" -maxdepth 2 -name '*.wav' 2>/dev/null | wc -l)
+
+ info "Models in $NAM_DIR: $model_count .nam files"
+ info "Models in ~/.pedal/nam: $nam_count .nam files (legacy)"
+ info "IRs in $IR_DIR: $ir_count .wav files"
+}
+
+# ── Main ─────────────────────────────────────────────────────────────
+
+main() {
+ mkdir -p "$NAM_DIR" "$IR_DIR"
+
+ case "${1:-}" in
+ --list|-l)
+ _list_models
+ _show_counts
+ ;;
+ --models|-m)
+ _download_all_models
+ _show_counts
+ ;;
+ --irs|-i)
+ _download_all_irs
+ _show_counts
+ ;;
+ ""|--all|-a)
+ _download_all_models
+ echo ""
+ _download_all_irs
+ echo ""
+ _show_counts
+
+ echo ""
+ echo -e "${GREEN}╔══════════════════════════════════════════════════════╗${NC}"
+ echo -e "${GREEN}║ Download complete! ║${NC}"
+ echo -e "${GREEN}╚══════════════════════════════════════════════════════╝${NC}"
+ echo ""
+ echo " Next steps:"
+ echo " 1. Run the inventory report:"
+ echo " python3 scripts/models/nam/build_inventory.py"
+ echo ""
+ echo " 2. Verify models load correctly:"
+ echo " python3 -c \"from src.dsp.nam_host import NAMHost;"
+ echo " h = NAMHost(models_dir='$NAM_DIR');"
+ echo " for m in h.list_available_models(): print(m.name, m.architecture, f'{m.size_mb:.1f}MB')\""
+ echo ""
+ echo " 3. Check IRs:"
+ echo " python3 -c \"from pathlib import Path;"
+ echo " irs = list(Path('$IR_DIR').rglob('*.wav'));"
+ echo " print(f'{len(irs)} IRs loaded')\""
+ echo ""
+ ;;
+ --help|-h)
+ echo "Usage: $0 [OPTION]"
+ echo ""
+ echo "Options:"
+ echo " --list, -l List models and IRs (without downloading)"
+ echo " --models, -m Download NAM models only"
+ echo " --irs, -i Download IR packs only"
+ echo " --all, -a Download everything (default)"
+ echo " --help, -h Show this help"
+ echo ""
+ echo "Environment:"
+ echo " NAM_DIR target for .nam files (default: ~/.pedal/models)"
+ echo " IR_DIR target for .wav IRs (default: ~/.pedal/irs)"
+ ;;
+ *)
+ err "Unknown option: $1"
+ echo "Usage: $0 [--list|--models|--irs|--all|--help]"
+ exit 1
+ ;;
+ esac
+}
+
+main "$@"
diff --git a/scripts/generate_factory_presets.py b/scripts/generate_factory_presets.py
new file mode 100644
index 0000000..ed27a60
--- /dev/null
+++ b/scripts/generate_factory_presets.py
@@ -0,0 +1,812 @@
+#!/usr/bin/env python3
+"""Generate 48 factory presets (12 banks x 4 presets) for Pi Multi-FX Pedal.
+
+Replaces ALL existing factory presets in presets/factory/.
+"""
+
+import json
+import os
+import shutil
+
+FACTORY_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), "presets", "factory")
+
+# ── Banks ──────────────────────────────────────────────────────────────
+BANKS = [
+ {"number": 0, "name": "Classic Rock"},
+ {"number": 1, "name": "Punk"},
+ {"number": 2, "name": "Metal"},
+ {"number": 3, "name": "Hardcore"},
+ {"number": 4, "name": "Emo"},
+ {"number": 5, "name": "Midwest Emo"},
+ {"number": 6, "name": "Djent"},
+ {"number": 7, "name": "Acoustic"},
+ {"number": 8, "name": "Grunge"},
+ {"number": 9, "name": "Alternative Rock"},
+ {"number": 10, "name": "Garage Rock"},
+ {"number": 11, "name": "Pop"},
+]
+
+# ── IR path shortcuts ─────────────────────────────────────────────────
+IR = {
+ "vintage": "~/.pedal/irs/vintage-1x12.wav",
+ "british": "~/.pedal/irs/british-4x12.wav",
+ "american": "~/.pedal/irs/american-2x12.wav",
+ "modern": "~/.pedal/irs/modern-4x12.wav",
+ "jazz": "~/.pedal/irs/jazz-1x15.wav",
+ "boutique": "~/.pedal/irs/boutique-1x12.wav",
+ "mini": "~/.pedal/irs/mini-1x8.wav",
+}
+
+# ── Helper builders ────────────────────────────────────────────────────
+
+def noise_gate(threshold=0.01):
+ return {"fx_type": "noise_gate", "enabled": True, "bypass": False,
+ "params": {"threshold": threshold}, "nam_model_path": "", "ir_file_path": ""}
+
+def compressor(threshold=0.3, ratio=4.0, gain=0.8):
+ return {"fx_type": "compressor", "enabled": True, "bypass": False,
+ "params": {"threshold": threshold, "ratio": ratio, "gain": gain},
+ "nam_model_path": "", "ir_file_path": ""}
+
+def boost(gain_db=6.0):
+ return {"fx_type": "boost", "enabled": True, "bypass": False,
+ "params": {"gain_db": gain_db}, "nam_model_path": "", "ir_file_path": ""}
+
+def overdrive(drive=0.5, gain=0.7, tone=0.5):
+ return {"fx_type": "overdrive", "enabled": True, "bypass": False,
+ "params": {"drive": drive, "tone": tone, "gain": gain},
+ "nam_model_path": "", "ir_file_path": ""}
+
+def distortion(drive=0.7, gain=0.5):
+ return {"fx_type": "distortion", "enabled": True, "bypass": False,
+ "params": {"drive": drive, "gain": gain},
+ "nam_model_path": "", "ir_file_path": ""}
+
+def fuzz(gain=0.6):
+ return {"fx_type": "fuzz", "enabled": True, "bypass": False,
+ "params": {"gain": gain}, "nam_model_path": "", "ir_file_path": ""}
+
+def eq(bass=0.5, mid=0.5, treble=0.5):
+ return {"fx_type": "eq", "enabled": True, "bypass": False,
+ "params": {"bass": bass, "mid": mid, "treble": treble},
+ "nam_model_path": "", "ir_file_path": ""}
+
+def ir_cab(ir_path):
+ return {"fx_type": "ir_cab", "enabled": True, "bypass": False,
+ "params": {"wet": 1.0, "dry": 0.0},
+ "nam_model_path": "", "ir_file_path": ir_path}
+
+def delay(time=400.0, feedback=0.3, mix=0.25):
+ return {"fx_type": "delay", "enabled": True, "bypass": False,
+ "params": {"time": time, "feedback": feedback, "mix": mix},
+ "nam_model_path": "", "ir_file_path": ""}
+
+def reverb(decay=0.4, mix=0.25):
+ return {"fx_type": "reverb", "enabled": True, "bypass": False,
+ "params": {"decay": decay, "mix": mix},
+ "nam_model_path": "", "ir_file_path": ""}
+
+def chorus(rate=0.35, depth=0.5, mix=0.3):
+ return {"fx_type": "chorus", "enabled": True, "bypass": False,
+ "params": {"rate": rate, "depth": depth, "mix": mix},
+ "nam_model_path": "", "ir_file_path": ""}
+
+def phaser(rate=0.3, depth=0.5, feedback=0.3):
+ return {"fx_type": "phaser", "enabled": True, "bypass": False,
+ "params": {"rate": rate, "depth": depth, "feedback": feedback},
+ "nam_model_path": "", "ir_file_path": ""}
+
+def flanger(rate=0.2, depth=0.4, feedback=0.3):
+ return {"fx_type": "flanger", "enabled": True, "bypass": False,
+ "params": {"rate": rate, "depth": depth, "feedback": feedback},
+ "nam_model_path": "", "ir_file_path": ""}
+
+def tremolo(rate=3.0, depth=0.4):
+ return {"fx_type": "tremolo", "enabled": True, "bypass": False,
+ "params": {"rate": rate, "depth": depth},
+ "nam_model_path": "", "ir_file_path": ""}
+
+def volume(level=0.85):
+ return {"fx_type": "volume", "enabled": True, "bypass": False,
+ "params": {"level": level}, "nam_model_path": "", "ir_file_path": ""}
+
+def octaver(mix=0.4):
+ return {"fx_type": "octaver", "enabled": True, "bypass": False,
+ "params": {"mix": mix}, "nam_model_path": "", "ir_file_path": ""}
+
+# ── Preset definitions per bank ────────────────────────────────────────
+
+PRESETS = {
+ 0: [ # Classic Rock
+ {
+ "name": "Brown Sound Crunch",
+ "master_volume": 0.75,
+ "chain": [
+ noise_gate(0.015),
+ overdrive(0.55, 0.75, 0.5),
+ eq(0.55, 0.35, 0.65),
+ delay(380, 0.25, 0.2),
+ ir_cab(IR["british"]),
+ volume(0.78),
+ ],
+ },
+ {
+ "name": "Singing Lead",
+ "master_volume": 0.85,
+ "chain": [
+ noise_gate(0.02),
+ compressor(0.35, 3.5, 1.1),
+ overdrive(0.7, 0.65, 0.6),
+ distortion(0.5, 0.5),
+ eq(0.5, 0.25, 0.75),
+ delay(450, 0.35, 0.3),
+ reverb(0.5, 0.25),
+ ir_cab(IR["british"]),
+ volume(0.88),
+ ],
+ },
+ {
+ "name": "Sparkling Clean",
+ "master_volume": 0.78,
+ "chain": [
+ noise_gate(0.008),
+ compressor(0.25, 4.0, 0.85),
+ eq(0.45, 0.5, 0.65),
+ chorus(0.3, 0.45, 0.3),
+ reverb(0.35, 0.2),
+ ir_cab(IR["vintage"]),
+ volume(0.82),
+ ],
+ },
+ {
+ "name": "Hard Rock Pounder",
+ "master_volume": 0.7,
+ "chain": [
+ noise_gate(0.025),
+ boost(8.0),
+ distortion(0.75, 0.45),
+ eq(0.6, 0.25, 0.7),
+ ir_cab(IR["modern"]),
+ volume(0.72),
+ ],
+ },
+ ],
+ 1: [ # Punk
+ {
+ "name": "Fast Riff Machine",
+ "master_volume": 0.72,
+ "chain": [
+ noise_gate(0.02),
+ boost(6.0),
+ overdrive(0.6, 0.7, 0.45),
+ eq(0.5, 0.3, 0.7),
+ ir_cab(IR["british"]),
+ volume(0.75),
+ ],
+ },
+ {
+ "name": "Snotty Lead",
+ "master_volume": 0.82,
+ "chain": [
+ noise_gate(0.015),
+ overdrive(0.4, 0.85, 0.4),
+ distortion(0.65, 0.5),
+ eq(0.4, 0.35, 0.8),
+ delay(350, 0.2, 0.2),
+ ir_cab(IR["british"]),
+ volume(0.85),
+ ],
+ },
+ {
+ "name": "Jangle Pop Clean",
+ "master_volume": 0.76,
+ "chain": [
+ noise_gate(0.008),
+ compressor(0.3, 4.5, 0.75),
+ eq(0.4, 0.55, 0.7),
+ chorus(0.4, 0.35, 0.25),
+ reverb(0.3, 0.2),
+ ir_cab(IR["american"]),
+ volume(0.8),
+ ],
+ },
+ {
+ "name": "Hardcore Attack",
+ "master_volume": 0.68,
+ "chain": [
+ noise_gate(0.03),
+ boost(9.0),
+ distortion(0.8, 0.4),
+ eq(0.55, 0.2, 0.75),
+ ir_cab(IR["modern"]),
+ volume(0.7),
+ ],
+ },
+ ],
+ 2: [ # Metal
+ {
+ "name": "Chug Chug",
+ "master_volume": 0.65,
+ "chain": [
+ noise_gate(0.035),
+ boost(10.0),
+ distortion(0.85, 0.35),
+ eq(0.65, 0.15, 0.7),
+ ir_cab(IR["modern"]),
+ volume(0.68),
+ ],
+ },
+ {
+ "name": "Scream Lead",
+ "master_volume": 0.82,
+ "chain": [
+ noise_gate(0.03),
+ compressor(0.4, 3.0, 1.3),
+ boost(8.0),
+ distortion(0.75, 0.4),
+ eq(0.5, 0.2, 0.85),
+ delay(420, 0.3, 0.28),
+ reverb(0.4, 0.2),
+ ir_cab(IR["modern"]),
+ volume(0.86),
+ ],
+ },
+ {
+ "name": "Crystal Clean",
+ "master_volume": 0.75,
+ "chain": [
+ noise_gate(0.008),
+ compressor(0.2, 5.0, 0.7),
+ eq(0.4, 0.5, 0.65),
+ chorus(0.3, 0.5, 0.35),
+ reverb(0.45, 0.3),
+ ir_cab(IR["vintage"]),
+ volume(0.78),
+ ],
+ },
+ {
+ "name": "Doom Descent",
+ "master_volume": 0.6,
+ "chain": [
+ noise_gate(0.04),
+ boost(12.0),
+ fuzz(0.75),
+ distortion(0.9, 0.3),
+ eq(0.7, 0.1, 0.65),
+ ir_cab(IR["modern"]),
+ volume(0.62),
+ ],
+ },
+ ],
+ 3: [ # Hardcore
+ {
+ "name": "Punch Drunk",
+ "master_volume": 0.7,
+ "chain": [
+ noise_gate(0.025),
+ overdrive(0.5, 0.8, 0.4),
+ distortion(0.6, 0.5),
+ eq(0.55, 0.25, 0.7),
+ ir_cab(IR["modern"]),
+ volume(0.73),
+ ],
+ },
+ {
+ "name": "Vein Lead",
+ "master_volume": 0.8,
+ "chain": [
+ noise_gate(0.02),
+ compressor(0.35, 3.5, 1.0),
+ boost(7.0),
+ overdrive(0.65, 0.6, 0.5),
+ eq(0.5, 0.2, 0.8),
+ delay(380, 0.25, 0.25),
+ ir_cab(IR["british"]),
+ volume(0.83),
+ ],
+ },
+ {
+ "name": "Breather Clean",
+ "master_volume": 0.74,
+ "chain": [
+ noise_gate(0.008),
+ compressor(0.28, 4.0, 0.8),
+ eq(0.45, 0.55, 0.6),
+ reverb(0.4, 0.25),
+ ir_cab(IR["american"]),
+ volume(0.76),
+ ],
+ },
+ {
+ "name": "Pit Stomp",
+ "master_volume": 0.66,
+ "chain": [
+ noise_gate(0.035),
+ boost(9.0),
+ distortion(0.85, 0.35),
+ eq(0.6, 0.15, 0.75),
+ ir_cab(IR["modern"]),
+ volume(0.68),
+ ],
+ },
+ ],
+ 4: [ # Emo
+ {
+ "name": "Twinkle Crunch",
+ "master_volume": 0.72,
+ "chain": [
+ noise_gate(0.012),
+ compressor(0.3, 4.0, 0.8),
+ overdrive(0.35, 0.8, 0.55),
+ chorus(0.4, 0.3, 0.2),
+ eq(0.4, 0.6, 0.65),
+ ir_cab(IR["american"]),
+ volume(0.75),
+ ],
+ },
+ {
+ "name": "Heartstring Lead",
+ "master_volume": 0.84,
+ "chain": [
+ noise_gate(0.015),
+ compressor(0.3, 3.5, 1.0),
+ overdrive(0.6, 0.7, 0.5),
+ eq(0.45, 0.35, 0.75),
+ delay(480, 0.4, 0.35),
+ reverb(0.6, 0.3),
+ ir_cab(IR["american"]),
+ volume(0.86),
+ ],
+ },
+ {
+ "name": "Diary Pages",
+ "master_volume": 0.76,
+ "chain": [
+ noise_gate(0.008),
+ compressor(0.25, 5.0, 0.7),
+ eq(0.35, 0.6, 0.55),
+ reverb(0.55, 0.3),
+ ir_cab(IR["vintage"]),
+ volume(0.78),
+ ],
+ },
+ {
+ "name": "Pop Core",
+ "master_volume": 0.7,
+ "chain": [
+ noise_gate(0.02),
+ boost(7.0),
+ distortion(0.7, 0.45),
+ eq(0.5, 0.25, 0.7),
+ delay(350, 0.2, 0.15),
+ ir_cab(IR["british"]),
+ volume(0.72),
+ ],
+ },
+ ],
+ 5: [ # Midwest Emo
+ {
+ "name": "Mathy Tappy",
+ "master_volume": 0.72,
+ "chain": [
+ noise_gate(0.01),
+ compressor(0.3, 4.5, 0.75),
+ overdrive(0.3, 0.85, 0.5),
+ eq(0.4, 0.55, 0.6),
+ delay(400, 0.2, 0.15),
+ ir_cab(IR["american"]),
+ volume(0.74),
+ ],
+ },
+ {
+ "name": "Emotive Swell",
+ "master_volume": 0.82,
+ "chain": [
+ noise_gate(0.012),
+ compressor(0.28, 4.0, 0.9),
+ overdrive(0.5, 0.75, 0.45),
+ eq(0.4, 0.4, 0.7),
+ delay(500, 0.35, 0.3),
+ reverb(0.5, 0.3),
+ ir_cab(IR["american"]),
+ volume(0.84),
+ ],
+ },
+ {
+ "name": "Fingerpicked Porch",
+ "master_volume": 0.75,
+ "chain": [
+ noise_gate(0.006),
+ compressor(0.2, 5.0, 0.7),
+ eq(0.35, 0.65, 0.55),
+ chorus(0.25, 0.35, 0.2),
+ reverb(0.4, 0.22),
+ ir_cab(IR["boutique"]),
+ volume(0.77),
+ ],
+ },
+ {
+ "name": "Power Chord Wall",
+ "master_volume": 0.68,
+ "chain": [
+ noise_gate(0.02),
+ overdrive(0.55, 0.7, 0.45),
+ distortion(0.6, 0.5),
+ eq(0.5, 0.3, 0.65),
+ ir_cab(IR["british"]),
+ volume(0.7),
+ ],
+ },
+ ],
+ 6: [ # Djent
+ {
+ "name": "Machine Gun",
+ "master_volume": 0.62,
+ "chain": [
+ noise_gate(0.04),
+ compressor(0.4, 6.0, 1.0),
+ boost(12.0),
+ distortion(0.85, 0.3),
+ eq(0.7, 0.1, 0.8),
+ ir_cab(IR["modern"]),
+ volume(0.65),
+ ],
+ },
+ {
+ "name": "Polyphonic Lead",
+ "master_volume": 0.8,
+ "chain": [
+ noise_gate(0.025),
+ compressor(0.35, 4.0, 1.1),
+ overdrive(0.6, 0.6, 0.55),
+ eq(0.55, 0.2, 0.8),
+ delay(440, 0.3, 0.28),
+ reverb(0.45, 0.2),
+ ir_cab(IR["modern"]),
+ volume(0.82),
+ ],
+ },
+ {
+ "name": "Clean Arpeggio",
+ "master_volume": 0.76,
+ "chain": [
+ noise_gate(0.008),
+ compressor(0.25, 5.0, 0.7),
+ eq(0.4, 0.5, 0.6),
+ chorus(0.3, 0.4, 0.3),
+ delay(480, 0.25, 0.2),
+ reverb(0.4, 0.25),
+ ir_cab(IR["american"]),
+ volume(0.78),
+ ],
+ },
+ {
+ "name": "Syncopated Riff",
+ "master_volume": 0.6,
+ "chain": [
+ noise_gate(0.045),
+ boost(10.0),
+ fuzz(0.7),
+ distortion(0.8, 0.3),
+ eq(0.65, 0.1, 0.75),
+ ir_cab(IR["modern"]),
+ volume(0.62),
+ ],
+ },
+ ],
+ 7: [ # Acoustic
+ {
+ "name": "Body Strum",
+ "master_volume": 0.78,
+ "chain": [
+ noise_gate(0.005),
+ compressor(0.25, 4.5, 0.65),
+ eq(0.5, 0.6, 0.55),
+ reverb(0.35, 0.2),
+ ir_cab(IR["boutique"]),
+ volume(0.8),
+ ],
+ },
+ {
+ "name": "Fingerpicking Lead",
+ "master_volume": 0.82,
+ "chain": [
+ noise_gate(0.005),
+ compressor(0.2, 5.0, 0.7),
+ eq(0.4, 0.65, 0.5),
+ delay(380, 0.2, 0.18),
+ reverb(0.45, 0.25),
+ ir_cab(IR["boutique"]),
+ volume(0.84),
+ ],
+ },
+ {
+ "name": "Ambient Soundscape",
+ "master_volume": 0.8,
+ "chain": [
+ noise_gate(0.005),
+ compressor(0.3, 4.0, 0.8),
+ eq(0.4, 0.5, 0.55),
+ chorus(0.2, 0.5, 0.4),
+ reverb(0.7, 0.4),
+ ir_cab(IR["jazz"]),
+ volume(0.82),
+ ],
+ },
+ {
+ "name": "Percussive Slap",
+ "master_volume": 0.74,
+ "chain": [
+ noise_gate(0.006),
+ compressor(0.35, 6.0, 0.6),
+ boost(4.0),
+ eq(0.55, 0.4, 0.65),
+ ir_cab(IR["american"]),
+ volume(0.76),
+ ],
+ },
+ ],
+ 8: [ # Grunge
+ {
+ "name": "Fuzz Festival",
+ "master_volume": 0.7,
+ "chain": [
+ noise_gate(0.015),
+ overdrive(0.5, 0.75, 0.4),
+ fuzz(0.6),
+ eq(0.55, 0.2, 0.7),
+ ir_cab(IR["british"]),
+ volume(0.72),
+ ],
+ },
+ {
+ "name": "Biting Solo",
+ "master_volume": 0.82,
+ "chain": [
+ noise_gate(0.02),
+ boost(7.0),
+ distortion(0.65, 0.5),
+ eq(0.35, 0.15, 0.85),
+ delay(400, 0.3, 0.28),
+ ir_cab(IR["british"]),
+ volume(0.85),
+ ],
+ },
+ {
+ "name": "Grunge Clean",
+ "master_volume": 0.75,
+ "chain": [
+ noise_gate(0.008),
+ compressor(0.3, 4.0, 0.8),
+ overdrive(0.2, 0.9, 0.5),
+ phaser(0.25, 0.4, 0.3),
+ eq(0.45, 0.5, 0.6),
+ ir_cab(IR["vintage"]),
+ volume(0.77),
+ ],
+ },
+ {
+ "name": "Wall of Noise",
+ "master_volume": 0.65,
+ "chain": [
+ noise_gate(0.025),
+ boost(10.0),
+ fuzz(0.8),
+ distortion(0.7, 0.35),
+ eq(0.6, 0.1, 0.75),
+ ir_cab(IR["modern"]),
+ volume(0.67),
+ ],
+ },
+ ],
+ 9: [ # Alternative Rock
+ {
+ "name": "Indie Crunch",
+ "master_volume": 0.74,
+ "chain": [
+ noise_gate(0.012),
+ overdrive(0.45, 0.78, 0.55),
+ eq(0.5, 0.4, 0.65),
+ ir_cab(IR["american"]),
+ volume(0.76),
+ ],
+ },
+ {
+ "name": "Quirky Lead",
+ "master_volume": 0.84,
+ "chain": [
+ noise_gate(0.015),
+ compressor(0.3, 3.5, 1.0),
+ overdrive(0.55, 0.65, 0.5),
+ flanger(0.15, 0.35, 0.25),
+ eq(0.45, 0.3, 0.75),
+ delay(420, 0.3, 0.28),
+ ir_cab(IR["american"]),
+ volume(0.86),
+ ],
+ },
+ {
+ "name": "Jangle Box",
+ "master_volume": 0.76,
+ "chain": [
+ noise_gate(0.008),
+ compressor(0.25, 4.5, 0.75),
+ eq(0.4, 0.55, 0.65),
+ tremolo(4.0, 0.35),
+ reverb(0.3, 0.2),
+ ir_cab(IR["american"]),
+ volume(0.78),
+ ],
+ },
+ {
+ "name": "Alt Heavy",
+ "master_volume": 0.68,
+ "chain": [
+ noise_gate(0.025),
+ boost(8.0),
+ distortion(0.75, 0.4),
+ octaver(0.3),
+ eq(0.55, 0.2, 0.75),
+ ir_cab(IR["modern"]),
+ volume(0.7),
+ ],
+ },
+ ],
+ 10: [ # Garage Rock
+ {
+ "name": "Lo-Fi Crunch",
+ "master_volume": 0.72,
+ "chain": [
+ noise_gate(0.015),
+ overdrive(0.6, 0.7, 0.35),
+ eq(0.5, 0.3, 0.55),
+ ir_cab(IR["mini"]),
+ volume(0.74),
+ ],
+ },
+ {
+ "name": "Fuzzed Out",
+ "master_volume": 0.8,
+ "chain": [
+ noise_gate(0.01),
+ boost(6.0),
+ fuzz(0.7),
+ eq(0.45, 0.25, 0.65),
+ delay(300, 0.3, 0.25),
+ ir_cab(IR["british"]),
+ volume(0.82),
+ ],
+ },
+ {
+ "name": "Raw Clean",
+ "master_volume": 0.78,
+ "chain": [
+ noise_gate(0.006),
+ eq(0.45, 0.55, 0.5),
+ tremolo(2.5, 0.3),
+ reverb(0.3, 0.18),
+ ir_cab(IR["vintage"]),
+ volume(0.8),
+ ],
+ },
+ {
+ "name": "Sludge Fuzz",
+ "master_volume": 0.62,
+ "chain": [
+ noise_gate(0.03),
+ boost(12.0),
+ fuzz(0.85),
+ distortion(0.7, 0.3),
+ eq(0.65, 0.1, 0.6),
+ ir_cab(IR["modern"]),
+ volume(0.64),
+ ],
+ },
+ ],
+ 11: [ # Pop
+ {
+ "name": "Clean Pop",
+ "master_volume": 0.78,
+ "chain": [
+ noise_gate(0.006),
+ compressor(0.28, 4.5, 0.7),
+ overdrive(0.2, 0.9, 0.6),
+ eq(0.45, 0.5, 0.6),
+ ir_cab(IR["american"]),
+ volume(0.8),
+ ],
+ },
+ {
+ "name": "Catchy Hook",
+ "master_volume": 0.84,
+ "chain": [
+ noise_gate(0.01),
+ compressor(0.3, 4.0, 0.9),
+ overdrive(0.4, 0.8, 0.5),
+ chorus(0.35, 0.4, 0.3),
+ delay(380, 0.25, 0.22),
+ ir_cab(IR["american"]),
+ volume(0.86),
+ ],
+ },
+ {
+ "name": "Shimmer Clean",
+ "master_volume": 0.8,
+ "chain": [
+ noise_gate(0.006),
+ compressor(0.2, 5.0, 0.65),
+ eq(0.35, 0.55, 0.65),
+ chorus(0.3, 0.5, 0.35),
+ reverb(0.5, 0.3),
+ ir_cab(IR["vintage"]),
+ volume(0.82),
+ ],
+ },
+ {
+ "name": "Pop Punk",
+ "master_volume": 0.72,
+ "chain": [
+ noise_gate(0.018),
+ overdrive(0.5, 0.75, 0.45),
+ distortion(0.55, 0.55),
+ eq(0.5, 0.3, 0.7),
+ delay(320, 0.15, 0.12),
+ ir_cab(IR["british"]),
+ volume(0.74),
+ ],
+ },
+ ],
+}
+
+# ── Generate all files ─────────────────────────────────────────────────
+
+def generate():
+ # Wipe existing factory dir
+ if os.path.exists(FACTORY_DIR):
+ # Remove all bank dirs but keep irs/
+ for entry in os.listdir(FACTORY_DIR):
+ path = os.path.join(FACTORY_DIR, entry)
+ if entry != "irs" and os.path.isdir(path):
+ shutil.rmtree(path)
+ elif entry != "irs" and os.path.isfile(path):
+ os.remove(path)
+
+ for bank in BANKS:
+ num = bank["number"]
+ bank_dir = os.path.join(FACTORY_DIR, f"bank_{num}")
+ os.makedirs(bank_dir, exist_ok=True)
+
+ # bank.json
+ bank_json = {
+ "number": num,
+ "name": bank["name"],
+ "preset_count": 4,
+ }
+ with open(os.path.join(bank_dir, "bank.json"), "w") as f:
+ json.dump(bank_json, f, indent=2)
+ f.write("\n")
+
+ # 4 presets
+ for prog in range(4):
+ preset_data = PRESETS[num][prog]
+ preset_json = {
+ "name": preset_data["name"],
+ "bank": num,
+ "program": prog,
+ "master_volume": preset_data["master_volume"],
+ "tuner_enabled": False,
+ "chain": preset_data["chain"],
+ "midi_mappings": {},
+ }
+ path = os.path.join(bank_dir, f"preset_{prog}.json")
+ with open(path, "w") as f:
+ json.dump(preset_json, f, indent=2)
+ f.write("\n")
+
+ print(f"✅ Generated {len(BANKS) * 4} presets across {len(BANKS)} banks")
+ for bank in BANKS:
+ print(f" Bank {bank['number']}: {bank['name']} — 4 presets")
+
+
+if __name__ == "__main__":
+ generate()
diff --git a/scripts/models/nam/models.txt b/scripts/models/nam/models.txt
index e7cfd1d..84f1243 100644
--- a/scripts/models/nam/models.txt
+++ b/scripts/models/nam/models.txt
@@ -1,10 +1,22 @@
-5150_EVH
-Diezel_VH4
-Engl_Powerball
-Fender_Bassman_59
-Fender_Twin_Clean
-Marshall_JCM800
-Mesa_Boogie_MarkV
-Orange_AD30
-Roland_Jazz_Chorus
+5150_BlockLetter_Boosted
+5152_Lead_TS9
+6505_Red_NoBoost
+BOSS_SD1_Feather
+Bogner_Ecstasy
+Engl_Savage
+Fender_TwinVerb_Clean
+Fender_TwinVerb_Vibrato
+Friedman_PowerAmp_Feather
+JCM2000_Clean
+JCM2000_Crunch
+JCM900_Lead
+Klon_Centaur_High
+MXR_M77_Feather
+Magnatone_Super59_Pushed
+Mesa_MarkIV_Lead
+Orange_Rockerverb
+Precision_Drive_Feather
+Splawn_ProMod_3rd
+TS808_Feather
+TubeScreamer_Maxed
Vox_AC15_TopBoost
diff --git a/src/dsp/pipeline.py b/src/dsp/pipeline.py
index d9db001..fbfca27 100644
--- a/src/dsp/pipeline.py
+++ b/src/dsp/pipeline.py
@@ -1040,7 +1040,7 @@ class AudioPipeline:
zi = state.get("bd2_tshelf_zi", np.zeros(2, dtype=np.float64))
sig, zf = lfilter(b, a, stage2.astype(np.float64, copy=False), zi=zi)
state["bd2_tshelf_zi"] = zf
- stage2 = sig.astype(np.float32)
+ stage2 = np.clip(sig, -1.0, 1.0).astype(np.float32)
# Output level
out = np.clip(stage2 * gain, -1.0, 1.0)
@@ -1130,7 +1130,7 @@ class AudioPipeline:
sig, zf = lfilter(b, a, sig, zi=zi)
state["muff_treb_zi"] = zf
- out = np.clip(sig.astype(np.float32) * volume, -1.0, 1.0)
+ out = np.clip(np.clip(sig, -1.0, 1.0).astype(np.float32) * volume, -1.0, 1.0)
return out
# ── 4. Three-band EQ ────────────────────────────────────────────
diff --git a/src/presets/types.py b/src/presets/types.py
index 171f33f..274ddb0 100644
--- a/src/presets/types.py
+++ b/src/presets/types.py
@@ -82,6 +82,7 @@ class FXBlock:
enabled: bool = True
bypass: bool = False
params: dict[str, float] = field(default_factory=dict)
+ subtype: str = "" # Algorithm variant (e.g. "hall"/"spring"/"plate" for reverb)
nam_model_path: str = "" # Path to .nam file (for NAM_AMP type)
ir_file_path: str = "" # Path to .wav IR file (for IR_CAB type)
diff --git a/src/web/ui-dist/assets/index-B-zxH4pN.css b/src/web/ui-dist/assets/index-B-zxH4pN.css
new file mode 100644
index 0000000..5bacba3
--- /dev/null
+++ b/src/web/ui-dist/assets/index-B-zxH4pN.css
@@ -0,0 +1 @@
+*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;overflow:hidden}body{color:#f0ede6;-webkit-font-smoothing:antialiased;background:#0a0a0c;font-family:Inter,sans-serif}.mono{font-family:JetBrains Mono,monospace}.badge{letter-spacing:.06em;text-transform:uppercase;border-radius:4px;justify-content:center;align-items:center;padding:2px 7px;font-size:10px;font-weight:700;display:inline-flex}.badge-amber{color:#e8a030;background:#e8a03033}.badge-green{color:#3ab87a;background:#3ab87a33}.badge-blue{color:#3a7ba8;background:#3a7ba833}.badge-red{color:#c84040;background:#c8404033}.btn{cursor:pointer;color:#f0ede6;touch-action:manipulation;background:#1c1c22;border:1px solid #2a2a32;border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:8px 16px;font-size:12px;font-weight:600;transition:all .12s;display:inline-flex}.btn:active{transform:scale(.96)}.btn-sm{padding:5px 10px;font-size:10px}.btn-ghost{background:0 0;border-color:#0000}.btn-danger{color:#c84040;background:#c8404026;border-color:#c84040}.btn-icon{cursor:pointer;touch-action:manipulation;background:#1c1c22;border:1px solid #2a2a32;border-radius:5px;justify-content:center;align-items:center;width:28px;height:28px;transition:all .12s;display:inline-flex}.btn-icon:active{transform:scale(.92)}.slide-panel{z-index:100;background:#000000b3;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.slide-panel-inner{background:#0a0a0c;border-radius:16px 16px 0 0;flex-direction:column;width:100%;max-width:440px;max-height:85vh;display:flex;overflow:hidden}.slide-panel-handle{background:#2a2a32;border-radius:2px;flex-shrink:0;width:36px;height:4px;margin:8px auto}.screen-header{border-bottom:1px solid #2a2a32;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 14px 8px;display:flex}.screen-title{letter-spacing:.06em;text-transform:uppercase;color:#8888a0;font-size:13px;font-weight:600}.screen-body{flex-direction:column;flex:1;gap:12px;padding:12px;display:flex;overflow-y:auto}.snap-grid{gap:6px;padding:4px 0;display:flex;overflow-x:auto}.snap-slot{cursor:pointer;text-align:center;touch-action:manipulation;background:#1c1c22;border:1.5px solid #2a2a32;border-radius:8px;flex-shrink:0;min-width:60px;padding:8px 4px;transition:all .12s;position:relative}.snap-slot:active{transform:scale(.95)}.snap-num{color:#8888a0;font-size:16px;font-weight:700}.snap-name{color:#f0ede6;word-break:break-all;margin-top:2px;font-size:9px;line-height:1.3}.snap-empty{color:#444458;margin-top:2px;font-size:9px;font-style:italic}.snap-save-indicator{background:#3ab87a;border-radius:50%;width:6px;height:6px;position:absolute;top:4px;right:4px;box-shadow:0 0 4px #3ab87a}.snap-name-input{color:#f0ede6;text-align:center;background:#0a0a0c;border:1px solid #2a2a32;border-radius:3px;outline:none;width:100%;margin-top:2px;padding:2px 4px;font-size:9px}.preset-row{cursor:pointer;border:1px solid #0000;border-radius:8px;align-items:center;gap:12px;padding:10px 12px;transition:background .12s;display:flex}.preset-row:active,.preset-row.active{background:#e8a03014;border-color:#e8a03040}.transport-btn{cursor:pointer;background:#1c1c22;border:2px solid #2a2a32;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;font-size:16px;transition:all .12s;display:flex}.transport-btn:active{transform:scale(.92)}.transport-btn.rec{background:#c8404026;border-color:#c84040}.transport-btn.play{background:#3ab87a26;border-color:#3ab87a}.switch{cursor:pointer;background:#2a2a32;border-radius:11px;flex-shrink:0;width:40px;height:22px;transition:background .2s;position:relative}.switch.on{background:#3ab87a}.switch:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .15s;position:absolute;top:2px;left:2px}.switch.on:after{transform:translate(18px)}.search-bar{background:#1c1c22;border:1px solid #2a2a32;border-radius:7px;align-items:center;gap:8px;padding:8px 12px;display:flex}.search-bar input{color:#f0ede6;background:0 0;border:none;outline:none;flex:1;font-size:13px}.search-bar input::placeholder{color:#444458}.file-drop{text-align:center;cursor:pointer;color:#444458;border:2px dashed #2a2a32;border-radius:8px;padding:20px;font-size:13px;transition:all .15s}.file-drop:hover,.file-drop.dragover{color:#e8a030;border-color:#e8a030}.loader{border:2px solid #2a2a32;border-top-color:#e8a030;border-radius:50%;width:20px;height:20px;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.setting-row{border-bottom:1px solid #2a2a32;justify-content:space-between;align-items:center;padding:10px 0;display:flex}.setting-label{color:#f0ede6;font-size:13px}.setting-desc{color:#444458;margin-top:2px;font-size:11px}.section-label{letter-spacing:.1em;text-transform:uppercase;color:#444458;margin-bottom:10px;font-size:10px;font-weight:600}.nam-chip{color:#3a7ba8;background:#3a7ba826;border:1px solid #3a7ba859;border-radius:5px;align-items:center;gap:6px;padding:5px 10px;font-family:JetBrains Mono,monospace;font-size:11px;display:inline-flex}.bypass-led{border-radius:50%;flex-shrink:0;width:8px;height:8px}.led-on{background:#3ab87a;box-shadow:0 0 8px #3ab87a}.led-off{background:#444458}
diff --git a/src/web/ui-dist/assets/index-BTj9vC7e.js b/src/web/ui-dist/assets/index-BTj9vC7e.js
new file mode 100644
index 0000000..025d723
--- /dev/null
+++ b/src/web/ui-dist/assets/index-BTj9vC7e.js
@@ -0,0 +1,100 @@
+var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var t=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},ee=Object.prototype.hasOwnProperty;function te(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function ne(e,t){return te(e.type,t,e.props)}function T(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function re(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ie=/\/+/g;function ae(e,t){return typeof e==`object`&&e&&e.key!=null?re(``+e.key):t.toString(36)}function oe(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function se(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,se(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+ae(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(ie,`$&/`)+`/`),se(o,r,i,``,function(e){return e})):o!=null&&(T(o)&&(o=ne(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ie,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u