Tim Henson Preset Generator
Generate Archetype Tim Henson X presets by researching a tone online, building the parameter set, and writing the binary preset file in one shot.
Workflow
- Research — Search the web for the tone (song, artist, genre, producer, gear, live rig, etc.). Gather concrete info.
- Design — Pick the amp, gain level, and effects that match the tone. Do NOT ask the user for confirmation unless the request is completely ambiguous.
- Generate — Pipe a JSON object to
stdin and run generate. Use --name for the human-readable display name (spaces allowed). Always set "name" inside the JSON to the same human-readable string so the preset shows correctly in the plugin.
- Verify — Confirm the file was written to
AI generated/. No Q&A loops.
Rules
- Never edit existing source presets.
- Always create a new file in
/Library/Audio/Presets/Neural DSP/Archetype Tim Henson X/AI generated/.
- Use
Default.xml as fallback template when no template path is provided.
- JSON overrides are read from
stdin. Set "name" explicitly in the JSON to control the display name with spaces.
- Unknown parameter keys are rejected.
Commands
Generate from stdin JSON and optional template:
python3 "/Users/arjunmahishi/.config/opencode/skills/tim-henson-presets/tim_henson_skill.py" generate --name "my_preset" --template "/Library/Audio/Presets/Neural DSP/Archetype Tim Henson X/User/clean_fingerstyle.xml"
Generate from fallback Default.xml:
python3 "/Users/arjunmahishi/.config/opencode/skills/tim-henson-presets/tim_henson_skill.py" generate --name "my_preset"
Build index cache:
python3 "/Users/arjunmahishi/.config/opencode/skills/tim-henson-presets/tim_henson_skill.py" index
Print authoritative parameter names from a template:
python3 "/Users/arjunmahishi/.config/opencode/skills/tim-henson-presets/tim_henson_skill.py" params
JSON Input Shape
The script reads a JSON object from stdin where keys are parameter names and values are booleans, numbers, or strings.
{
"reverbActive": true,
"reverbMix": 0.42,
"delayTime": 500,
"leadGain": 0.73
}
Parameter Names (Reference)
Use only real plugin parameter names. Common groups:
- Global:
inputGain, outputGain, transpose, gateActive, gateThreshold, doublerActive, doublerSpread
- Pre FX:
boostActive, boostGain, boostBass, boostTreble, boostLevel, compActive, compCompression, compAttack, compLevel, overdriveActive, overdriveDrive, overdriveTone, overdriveLevel
- Amp:
selectedAmp, leadGain, leadBass, leadMiddle, leadTreble, leadPresence, leadMaster, leadOutput, rhythmGain, rhythmBass, rhythmMiddle, rhythmTreble, rhythmPresence, rhythmOutput, rhythmChannel, acousticGain, acousticBlend, acousticBass, acousticMiddle, acousticTreble, acousticPresence, acousticOutput
- EQ:
leadEQActive, leadEQBand1..leadEQBand9, leadEQHpf, leadEQLpf, rhythmEQActive, rhythmEQBand1..rhythmEQBand9, rhythmEQHpf, rhythmEQLpf, acousticEQActive, acousticEQBand1..acousticEQBand9, acousticEQHpf, acousticEQLpf
- Cab:
cabStereo, leftCabActive, leftCab0MicType, leftCab1MicType, leftCabDistance, leftCabPosition, leftCabPhase, leftCabPan, leftCabMicLevel, leftRoomActive, leftRoomMicLevel, rightCabActive, rightCab0MicType, rightCab1MicType, rightCabDistance, rightCabPosition, rightCabPhase, rightCabPan, rightCabMicLevel, rightRoomActive, rightRoomMicLevel, leftCab0ChosenIRFilePath, leftCab1ChosenIRFilePath, rightCab0ChosenIRFilePath, rightCab1ChosenIRFilePath
- Delay:
delayActive, delayTime, delayTempo, delaySync, delayNote, delayMode, delayType, delayFeedback, delayMix, delayAmount, delayHighCut, delayLowCut
- Reverb:
reverbActive, reverbMix, reverbDecay, reverbHighCut, reverbLowCut, reverbShimmer
- Chorus:
chorusActive, chorusMix
- Multivoicer:
multivoicerMode, multivoicerRoot, multivoicerQuantize, multivoicerTuning, multivoicerTone, multivoicerWidth, multivoicerOutput, multivoicerMidiEnabled, multivoicerUnison, multivoicerVoice1Active, multivoicerVoice1Level, multivoicerVoice1Pan, multivoicerVoice1Delay, multivoicerVoice1Detune, multivoicerVoice1Interval, multivoicerVoice1Semitones, multivoicerVoice2Active, multivoicerVoice2Level, multivoicerVoice2Pan, multivoicerVoice2Delay, multivoicerVoice2Detune, multivoicerVoice2Interval, multivoicerVoice2Semitones, multivoicerVoice3Active, multivoicerVoice3Level, multivoicerVoice3Pan, multivoicerVoice3Delay, multivoicerVoice3Detune, multivoicerVoice3Interval, multivoicerVoice3Semitones, multivoicerVoice4Active, multivoicerVoice4Level, multivoicerVoice4Pan, multivoicerVoice4Delay, multivoicerVoice4Detune, multivoicerVoice4Interval, multivoicerVoice4Semitones
For full authoritative keys from your installed version, run the params command.
Technical Details
Amp Selector (selectedAmp)
0 → Acoustic amp (piezo/blend)
1 → Rhythm amp (mid-gain, 2 channels)
2 → Lead amp (high-gain)
The only parameters that matter for a given preset are the ones for the selected amp; the others are ignored by the plugin.
Preset Name
The name parameter inside the JSON controls the display name in the plugin GUI. Use spaces for readability (e.g. "name": "Joe Satriani Surfing"). The script will write the file with spaces in the filename too.
Genre Quick-Starts
These are generic starting points — tweak to taste.
Clean / Ambient / Post-Rock
selectedAmp: 1 (Rhythm)
rhythmGain: 0.25–0.40
compActive: true, compCompression: 0.35, compLevel: 0.7
chorusActive: true, chorusMix: 0.25–0.45
reverbActive: true, reverbMix: 0.30–0.50, reverbDecay: 0.6–0.9, reverbShimmer: 0.15–0.35
delayActive: true, delayTime: 350–550, delayMix: 0.20–0.35, delayFeedback: 0.25–0.40
gateActive: false (let tails breathe)
Doom / Stoner / Psych Lead
selectedAmp: 2 (Lead)
leadGain: 0.70–0.85
leadBass: 0.50–0.65, leadMiddle: 0.45, leadTreble: 0.35–0.50
boostActive: true, boostGain: 0.4–0.6
overdriveActive: true, overdriveDrive: 0.3–0.5, overdriveLevel: 0.6–0.8
delayActive: true, delayTime: 450–700, delayMix: 0.20–0.35
reverbActive: true, reverbMix: 0.25–0.40, reverbDecay: 0.5–0.7
gateActive: false
Shred / High-Gain Lead
selectedAmp: 2
leadGain: 0.75–0.90
leadBass: 0.45, leadMiddle: 0.50, leadTreble: 0.55–0.65
leadPresence: 0.55–0.70
reverbActive: true, reverbMix: 0.15–0.25, reverbDecay: 0.4–0.6
delayActive: true, delayTime: 350–450, delayMix: 0.15–0.25
compActive: true, compCompression: 0.2–0.3
Complete Example
# Progressive stoner lead — Gaupa solo
echo '{
"name": "Gaupa Fabersvan Solo",
"selectedAmp": 2,
"leadGain": 0.75,
"leadBass": 0.55,
"leadMiddle": 0.5,
"leadTreble": 0.45,
"leadPresence": 0.5,
"leadOutput": 0.8,
"compActive": true,
"compCompression": 0.3,
"compLevel": 0.75,
"boostActive": true,
"boostGain": 0.5,
"overdriveActive": true,
"overdriveDrive": 0.4,
"overdriveLevel": 0.7,
"delayActive": true,
"delayTime": 550,
"delayMix": 0.3,
"delayFeedback": 0.35,
"reverbActive": true,
"reverbMix": 0.3,
"reverbDecay": 0.6,
"chorusActive": true,
"chorusMix": 0.2,
"inputGain": 0.8,
"gateActive": false
}' | python3 "/Users/arjunmahishi/.config/opencode/skills/tim-henson-presets/tim_henson_skill.py" generate --name "Gaupa Fabersvan Solo"
1---2name: tim-henson-presets3description: Generate Archetype Tim Henson X preset files from AI-supplied parameter overrides using a template copy workflow.4---56# Tim Henson Preset Generator78Generate Archetype Tim Henson X presets by researching a tone online, building the parameter set, and writing the binary preset file in one shot.910## Workflow11121. **Research** — Search the web for the tone (song, artist, genre, producer, gear, live rig, etc.). Gather concrete info.132. **Design** — Pick the amp, gain level, and effects that match the tone. Do NOT ask the user for confirmation unless the request is completely ambiguous.143. **Generate** — Pipe a JSON object to `stdin` and run `generate`. Use `--name` for the human-readable display name (spaces allowed). Always set `"name"` inside the JSON to the same human-readable string so the preset shows correctly in the plugin.154. **Verify** — Confirm the file was written to `AI generated/`. No Q&A loops.1617## Rules18191. Never edit existing source presets.202. Always create a new file in `/Library/Audio/Presets/Neural DSP/Archetype Tim Henson X/AI generated/`.213. Use `Default.xml` as fallback template when no template path is provided.224. JSON overrides are read from `stdin`. Set `"name"` explicitly in the JSON to control the display name with spaces.235. Unknown parameter keys are rejected.2425## Commands2627Generate from stdin JSON and optional template:2829```bash30python3 "/Users/arjunmahishi/.config/opencode/skills/tim-henson-presets/tim_henson_skill.py" generate --name "my_preset" --template "/Library/Audio/Presets/Neural DSP/Archetype Tim Henson X/User/clean_fingerstyle.xml"31```3233Generate from fallback `Default.xml`:3435```bash36python3 "/Users/arjunmahishi/.config/opencode/skills/tim-henson-presets/tim_henson_skill.py" generate --name "my_preset"37```3839Build index cache:4041```bash42python3 "/Users/arjunmahishi/.config/opencode/skills/tim-henson-presets/tim_henson_skill.py" index43```4445Print authoritative parameter names from a template:4647```bash48python3 "/Users/arjunmahishi/.config/opencode/skills/tim-henson-presets/tim_henson_skill.py" params49```5051## JSON Input Shape5253The script reads a JSON object from stdin where keys are parameter names and values are booleans, numbers, or strings.5455```json56{57 "reverbActive": true,58 "reverbMix": 0.42,59 "delayTime": 500,60 "leadGain": 0.7361}62```6364## Parameter Names (Reference)6566Use only real plugin parameter names. Common groups:6768- Global: `inputGain`, `outputGain`, `transpose`, `gateActive`, `gateThreshold`, `doublerActive`, `doublerSpread`69- Pre FX: `boostActive`, `boostGain`, `boostBass`, `boostTreble`, `boostLevel`, `compActive`, `compCompression`, `compAttack`, `compLevel`, `overdriveActive`, `overdriveDrive`, `overdriveTone`, `overdriveLevel`70- Amp: `selectedAmp`, `leadGain`, `leadBass`, `leadMiddle`, `leadTreble`, `leadPresence`, `leadMaster`, `leadOutput`, `rhythmGain`, `rhythmBass`, `rhythmMiddle`, `rhythmTreble`, `rhythmPresence`, `rhythmOutput`, `rhythmChannel`, `acousticGain`, `acousticBlend`, `acousticBass`, `acousticMiddle`, `acousticTreble`, `acousticPresence`, `acousticOutput`71- EQ: `leadEQActive`, `leadEQBand1`..`leadEQBand9`, `leadEQHpf`, `leadEQLpf`, `rhythmEQActive`, `rhythmEQBand1`..`rhythmEQBand9`, `rhythmEQHpf`, `rhythmEQLpf`, `acousticEQActive`, `acousticEQBand1`..`acousticEQBand9`, `acousticEQHpf`, `acousticEQLpf`72- Cab: `cabStereo`, `leftCabActive`, `leftCab0MicType`, `leftCab1MicType`, `leftCabDistance`, `leftCabPosition`, `leftCabPhase`, `leftCabPan`, `leftCabMicLevel`, `leftRoomActive`, `leftRoomMicLevel`, `rightCabActive`, `rightCab0MicType`, `rightCab1MicType`, `rightCabDistance`, `rightCabPosition`, `rightCabPhase`, `rightCabPan`, `rightCabMicLevel`, `rightRoomActive`, `rightRoomMicLevel`, `leftCab0ChosenIRFilePath`, `leftCab1ChosenIRFilePath`, `rightCab0ChosenIRFilePath`, `rightCab1ChosenIRFilePath`73- Delay: `delayActive`, `delayTime`, `delayTempo`, `delaySync`, `delayNote`, `delayMode`, `delayType`, `delayFeedback`, `delayMix`, `delayAmount`, `delayHighCut`, `delayLowCut`74- Reverb: `reverbActive`, `reverbMix`, `reverbDecay`, `reverbHighCut`, `reverbLowCut`, `reverbShimmer`75- Chorus: `chorusActive`, `chorusMix`76- Multivoicer: `multivoicerMode`, `multivoicerRoot`, `multivoicerQuantize`, `multivoicerTuning`, `multivoicerTone`, `multivoicerWidth`, `multivoicerOutput`, `multivoicerMidiEnabled`, `multivoicerUnison`, `multivoicerVoice1Active`, `multivoicerVoice1Level`, `multivoicerVoice1Pan`, `multivoicerVoice1Delay`, `multivoicerVoice1Detune`, `multivoicerVoice1Interval`, `multivoicerVoice1Semitones`, `multivoicerVoice2Active`, `multivoicerVoice2Level`, `multivoicerVoice2Pan`, `multivoicerVoice2Delay`, `multivoicerVoice2Detune`, `multivoicerVoice2Interval`, `multivoicerVoice2Semitones`, `multivoicerVoice3Active`, `multivoicerVoice3Level`, `multivoicerVoice3Pan`, `multivoicerVoice3Delay`, `multivoicerVoice3Detune`, `multivoicerVoice3Interval`, `multivoicerVoice3Semitones`, `multivoicerVoice4Active`, `multivoicerVoice4Level`, `multivoicerVoice4Pan`, `multivoicerVoice4Delay`, `multivoicerVoice4Detune`, `multivoicerVoice4Interval`, `multivoicerVoice4Semitones`7778For full authoritative keys from your installed version, run the `params` command.7980## Technical Details8182### Amp Selector (`selectedAmp`)83- `0` → Acoustic amp (piezo/blend)84- `1` → Rhythm amp (mid-gain, 2 channels)85- `2` → Lead amp (high-gain)8687The only parameters that matter for a given preset are the ones for the selected amp; the others are ignored by the plugin.8889### Preset Name90The `name` parameter inside the JSON controls the display name in the plugin GUI. Use spaces for readability (e.g. `"name": "Joe Satriani Surfing"`). The script will write the file with spaces in the filename too.9192### Genre Quick-Starts9394These are generic starting points — tweak to taste.9596**Clean / Ambient / Post-Rock**97- `selectedAmp: 1` (Rhythm)98- `rhythmGain: 0.25–0.40`99- `compActive: true`, `compCompression: 0.35`, `compLevel: 0.7`100- `chorusActive: true`, `chorusMix: 0.25–0.45`101- `reverbActive: true`, `reverbMix: 0.30–0.50`, `reverbDecay: 0.6–0.9`, `reverbShimmer: 0.15–0.35`102- `delayActive: true`, `delayTime: 350–550`, `delayMix: 0.20–0.35`, `delayFeedback: 0.25–0.40`103- `gateActive: false` (let tails breathe)104105**Doom / Stoner / Psych Lead**106- `selectedAmp: 2` (Lead)107- `leadGain: 0.70–0.85`108- `leadBass: 0.50–0.65`, `leadMiddle: 0.45`, `leadTreble: 0.35–0.50`109- `boostActive: true`, `boostGain: 0.4–0.6`110- `overdriveActive: true`, `overdriveDrive: 0.3–0.5`, `overdriveLevel: 0.6–0.8`111- `delayActive: true`, `delayTime: 450–700`, `delayMix: 0.20–0.35`112- `reverbActive: true`, `reverbMix: 0.25–0.40`, `reverbDecay: 0.5–0.7`113- `gateActive: false`114115**Shred / High-Gain Lead**116- `selectedAmp: 2`117- `leadGain: 0.75–0.90`118- `leadBass: 0.45`, `leadMiddle: 0.50`, `leadTreble: 0.55–0.65`119- `leadPresence: 0.55–0.70`120- `reverbActive: true`, `reverbMix: 0.15–0.25`, `reverbDecay: 0.4–0.6`121- `delayActive: true`, `delayTime: 350–450`, `delayMix: 0.15–0.25`122- `compActive: true`, `compCompression: 0.2–0.3`123124### Complete Example125126```bash127# Progressive stoner lead — Gaupa solo128129echo '{130 "name": "Gaupa Fabersvan Solo",131 "selectedAmp": 2,132 "leadGain": 0.75,133 "leadBass": 0.55,134 "leadMiddle": 0.5,135 "leadTreble": 0.45,136 "leadPresence": 0.5,137 "leadOutput": 0.8,138 "compActive": true,139 "compCompression": 0.3,140 "compLevel": 0.75,141 "boostActive": true,142 "boostGain": 0.5,143 "overdriveActive": true,144 "overdriveDrive": 0.4,145 "overdriveLevel": 0.7,146 "delayActive": true,147 "delayTime": 550,148 "delayMix": 0.3,149 "delayFeedback": 0.35,150 "reverbActive": true,151 "reverbMix": 0.3,152 "reverbDecay": 0.6,153 "chorusActive": true,154 "chorusMix": 0.2,155 "inputGain": 0.8,156 "gateActive": false157}' | python3 "/Users/arjunmahishi/.config/opencode/skills/tim-henson-presets/tim_henson_skill.py" generate --name "Gaupa Fabersvan Solo"158```