| name | thr-tone-generator |
| description | Generate Yamaha THR-II guitar tones and export them as .thrl6p preset files that load onto the THR-II via THR Remote. Use whenever the user wants a THR/THR-II/THRII tone, amp patch, or .thrl6p preset — from a natural-language description ("warm SRV blues lead", "tight modern djent rhythm"), an artist/genre reference, or explicit amp/cab/EQ/FX values. Also use to tweak, batch-generate, or fix existing THR presets. |
THR-II Tone Generator
Turn a musical request into a correct, importable .thrl6p file for the Yamaha THR-II.
How the format really works (important)
A .thrl6p is JSON. The amp and every effect are selected by named asset strings
(e.g. "@asset": "THR10X_Brown2"), not numeric IDs. The cabinet is an integer
SpkSimType. Every knob is a normalized float 0.0–1.0 (the THR Remote UI shows 0–100,
so divide by 100). All eight tone groups are always present; effects toggle with @enabled.
The full mapping (amp grid, cabinets, FX assets + exact per-type params) lives in
reference/thr_models.json. Read it when you need the
authoritative list. Don't invent asset names or params — the device rejects unknown keys.
Workflow
- Interpret the request into a tone spec: pick an amp category (Classic / Boutique /
Modern) + model (Clean / Crunch / Lead / Hi Gain / Special), a cabinet, EQ/gain
(0–100), and which FX to enable.
- Generate the file with the CLI (preferred) or by writing a spec JSON.
- Tell the user what amp/cab/settings you chose and where the file landed, and remind
them to import it in THR Remote (or copy to the device).
Generate from natural language
python3 -m thr_architect --describe "warm boutique blues lead with spring reverb" \
--name "Blues Lead" -o output
Generate from explicit choices (full control)
python3 -m thr_architect --name "Djent Rhythm" --amp "Modern/Hi Gain" --cab "Fuel 4x12" \
--gain 75 --bass 55 --mid 35 --treble 60 --gate \
--reverb "plate:mix=20" --echo "tape:mix=22,time=35" -o output
FX mini-syntax is type:key=val,key=val with 0–100 values, e.g. chorus:mix=40,depth=30,
hall:mix=34,decay=50, spring:mix=28,tone=55.
Generate from a spec file (best for fine-tuned or batch)
Write a JSON spec (0–100 values) and pass --spec. Schema:
{
"name": "My Tone",
"amp": {"category": "Boutique", "model": "Crunch"},
"cab": "Boutique 2x12",
"eq": {"gain": 55, "bass": 50, "mid": 60, "treble": 48, "master": 70},
"tempo": 110,
"compressor": {"enabled": false, "sustain": 30, "level": 80},
"gate": {"enabled": false, "thresh": 54, "decay": 20},
"modulation": {"enabled": false, "type": "Chorus", "mix": 35, "depth": 25, "freq": 12, "feedback": 15, "pre": 50},
"echo": {"enabled": true, "type": "Tape", "mix": 25, "time": 38, "feedback": 22},
"reverb": {"enabled": true, "type": "Spring", "mix": 28, "time": 22, "tone": 52}
}
For batches, build the specs in Python and call thr_architect.write_thrl6p(spec, "output").
Run python3 -m thr_architect --list to print the live amp grid, cabinets, and FX types.
Amp grid (category × model → @asset)
(verbatim from the app's AssetDefs.plist — the engine's own engineID↔display-name catalog)
| Classic | Boutique | Modern |
|---|
| Clean | THR10C_Deluxe | THR10C_BJunior2 | THR30_Carmen |
| Crunch | THR10C_DC30 | THR30_SR101 | THR10C_Mini |
| Lead | THR10_Lead | THR30_Blondie | THR10X_Brown1 |
| Hi Gain | THR10_Modern | THR30_FLead | THR10X_Brown2 |
| Special | THR10_Brit | THR10X_South | THR30_Stealth |
Also: Bass (Classic/Boutique/Modern), Acoustic (Condenser/Dynamic/Tube/Nylon),
Flat. Cabs: British/American/Brown/Vintage/Fuel/Juicy 4x12, American/British/Boutique/
Yamaha 2x12, California/American/Boutique 1x12, or None (flat). cab may be a name, an
int SpkSimType, or null.
Picking a tone — quick heuristics
- Metal / djent: Modern Hi Gain (
THR10X_Brown2) + Fuel/Brown 4x12, gain 75–85, mids
scooped (~35), gate on (tight). Add tight delay/plate sparingly.
- Hard rock / shred / "brown sound": Modern Lead (
THR10X_Brown1), American/Vintage
4x12, gain ~68, plate/hall + a little delay.
- Blues / SRV / Gilmour: Boutique Crunch (
THR30_SR101) + Boutique 2x12, gain ~52,
pushed mids, light spring reverb.
- Classic rock: Classic Crunch (
THR10C_DC30) + British 4x12, moderate gain.
- Clean / ambient / chime: Modern Clean (
THR30_Carmen) or Classic Clean, chorus +
hall reverb, low gain.
- Funk / country: Classic Clean + compressor; country adds bright treble + spring.
- Jazz: Classic Clean + small room reverb, rolled-off treble.
- Acoustic: Acoustic amp, no cab, gentle hall reverb.
Tone words → EQ: warm/dark lower treble; bright/crisp raise treble; scooped lower mid;
fat/thick raise mid+bass; tight lower bass (+gate); boomy raise bass.
Notes
- The THR-II
device id defaults to 2359296 (this user's amp). It must match the
connected amp — on a mismatch THR Remote ignores the amp & cabinet on import (EQ/FX still
apply). Override with --device. Output defaults to output/.
- The noise-gate threshold is dB, not 0–1; the builder converts a 0–100 value via
dB = (ui − 100) × 0.95 automatically. Don't write raw 0–1 into gate Thresh.
- A few amp-grid cells (Classic Lead/Hi Gain, Modern Lead, Boutique Special) were each
reverse-engineered from a single factory preset — if a generated amp sounds off, check
reference/thr_models.json and the README's verification note.
- The user's older
~/Downloads/THR_presets_generated batch was all silently locked to one
amp (THR10C_Mini); this generator fixes that by always writing the correct amp asset.