A single, self-contained HTML app that generates, edits and packages guitar presets for the Sonicake PocketMaster pedal — everything runs in the browser, with no server and no dependencies. Open the file, use it, save it.
- 62 artists · 274 songs · 506 presets (1–24 per artist) + 5 built-in cross-artist compilations (plus any you add), in three amp sets: Modeled (the tuned modeled amps), Clone/NAM (every preset on one of 5 NAM captures) and Mixed (the best choice per preset).
- Everything is generated from one embedded source of truth (
data/), validating every effect and parameter against the real device catalog. - It is an all-in-one: it embeds the editor (PocketEdit, with Web Bluetooth to talk to the pedal), the listings/tables/maps (generated live, so they always reflect your edits) and the docs — plus the generation/editing tools. No separate hub.
- The app saves an updated copy of itself (with your edits embedded) and can export the full file tree as a ZIP or import a whole project back.
- What you make for yourself — your own collections, presets brought from your pedal, your pedal tweaks and your NAM setup — is personal: kept in your copy of the app, never published with the project, and carried into a new version of the app in one step (§4.6).
- Idea, design and testing: Sadurní. Development: AI (Claude, by Anthropic), directed by the author.
Requires a Chromium browser with Web Bluetooth — Chrome, Edge or Opera, on desktop and Android. Safari and Firefox cannot connect to the pedal, and lack the
CompressionStream/ File System Access APIs used to save. The app checks this on load and warns if anything is missing.
changes since 2026-09-05
- 🛠️ Personal content — your own collections, the presets brought from your pedal, your pedal tweaks (overrides) and your NAM setup stay in your copy of the app and are never published: Export ZIP writes them apart in
personal.json(git-ignored), and Bring personal content moves them into a new version (frompersonal.json, a project ZIP or your previous app HTML). - 🛠️ Clone/NAM — the IR is always off on Clone presets (the pedal bypasses it in Clone mode), so every capture must be a full rig; the new NAM tab names your 5 captures, switches off the ones you don't have and sets which capture stands in for each modeled amp (amps without one stay modeled). The README now recommends full-rig captures. Thanks to TheColdVoid1337 for the finding.
- 🛠️ Tuned presets — a pedal tweak can become the project preset itself (song
tuned/tunedNam); the previous overrides now ship that way, with the same sound. - 🛠️ Collections — duplicate a collection, and mark a collection as personal.
- 🛠️ Editor — Export Multiple → Make collection turns what is loaded on the pedal into a collection (presets the project doesn't have are kept in the personal artist My Pedal); Reorder presets on the pedal moves presets between slots, with an optional backup file.
- 🛠️ History and credits — the change history lists only the published project and now also the app changes;
pocketmaster.source.jsonis regenerated by the build; credits: idea, design and testing by Sadurní, development by AI (Claude, by Anthropic). - ➕ Brian May — new artist (14 songs, 24 presets)
- ✏️ Blind Melon — “NoRain”: fine-tuned on the pedal
- ✏️ Brian May — + new song “AC30” (5 presets); + new song “AC Echo” (2 presets); + new song “AC Flang” (1 preset); + new song “AC Phase” (1 preset); + new song “AC TWah” (1 preset); + new song “AC Trem” (1 preset); + new song “AC Vibe” (1 preset); + new song “VK Echo” (2 presets); + new song “VK Flang” (1 preset); + new song “VK Phase” (1 preset); + new song “VK TWah” (1 preset); + new song “VK Trem” (1 preset); + new song “VK Vibe” (1 preset); “AC Trem”: 1 changed (C); “VK Amp”: 5 changed (C, R, H, L, D); “VK Echo”: 2 changed (R, L); “VK Flang”: 1 changed (R); “VK Phase”: 1 changed (R); “VK TWah”: 1 changed (R); “VK Trem”: 1 changed (C); “VK Vibe”: 1 changed (L); − removed song “VolKnob800”; − removed song “VolKnobAC30”; − removed song “VolKnobFuzz”; − removed song “VolKnobJTM45”; − removed song “VolKnobPlexi”
- ✏️ Queen — “Brighton”: fine-tuned on the pedal; “DaysLive”: fine-tuned on the pedal; “WantAll”: fine-tuned on the pedal; “KilrQ”: fine-tuned on the pedal
- ✏️ Rammstein — “DuHast”: fine-tuned on the pedal
- ✏️ Steve Vai — “Attitude”: fine-tuned on the pedal
- ✏️ The Black Crowes — “HotelIll”: fine-tuned on the pedal; “ThornPrd”: fine-tuned on the pedal
- ✏️ Tool — “Schism”: fine-tuned on the pedal
- ✏️ U2 — “TheFly”: fine-tuned on the pedal
- ✏️ the who — “RealMe”: fine-tuned on the pedal
- 🎚️ Collections — added VolumeKnob, Volume Knob - Real Amp, Volume Knob - AC30; updated VolumeKnob; removed VolumeKnob
- Open
PocketMasterStudio.htmlin Chrome/Edge/Opera (double-click, or host it anywhere). - It decompresses its embedded data and runs the whole pipeline in ~50–120 ms, showing a live preview of the generated listing.
- Use the tabs to generate a prompt, paste AI/pedal JSON, edit data, manage collections.
- Click 💾 Save to write a new
PocketMasterStudio.htmlcontaining your changes, or 📦 Export ZIP to get the full extracted file structure.
Nothing is uploaded anywhere; all processing is local to your browser.
- Source of truth = the embedded
data/. The app carries a gzip+base64 blob (<script id="pm-payload">) holdingdata/(one object per artist), the device catalog (mld.json), the 50 factory presets, per-preset overrides, the collection definitions, the portable AI prompt, and this README. Everything else (json/,json_nam/,json_mixed/, all the HTML listings, the editor library) is derived from it at runtime. - Self-contained & self-saving. The HTML file exists on disk, but needs no sibling files —
it reads nothing from disk at runtime (which is why it also works on Android
content://). Saving produces a new copy of the same self-contained file with the embedded blob replaced. - Loose files are optional exports. The ~1500 individual
json/files are only produced when you export a ZIP (for GitHub browsing, sharing single presets, GitHub Pages). The app itself never needs them.
A top bar switches between the main areas:
| Main tab | What it is |
|---|---|
| Studio | The generation/editing tools (sub-tabs below). |
| Editor | The embedded PocketEdit editor — connects to the pedal over Web Bluetooth, imports/exports presets, Browse Library (Modeled / NAM clones / Mixed sets). Runs in an isolated blob: frame so Web Bluetooth works; its Browse Library is rebuilt from your current data each time it opens. Plain Export / Export Multiple save a JSON to disk; Export Multiple → ➕ Make collection reads the selected slots and turns them into a personal collection in Studio (see below); ⇅ Reorder presets on the pedal moves presets between slots; Export as Override hands the preset to Studio to make it definitive (see the round-trip below). |
| Listing / Table / Map | The generated pages, rendered live (mobile listing, detailed table, song→Best50 map), always up to date with your edits. Each view has a radio-style Modeled / Clone/NAM / Mixed amp-set selector (defaults to Mixed); Table and Map also have an Interactive ⇄ Print (A4) toggle (the amp-set choice applies to both modes; switching amp-set keeps your current search, expanded rows and scroll position). |
| Docs | README, representative songs and the two prompt docs, rendered in-page. |
Inside Studio:
| Sub-tab / action | What it does |
|---|---|
| Overview | Live stats + a preview of the generated listing. Buttons: Export ZIP, Import project, download index.html, and the 🔒 Personal content pair: Save personal content / Bring personal content (§4.6). |
| AI Prompt | Fill in artist + songs + output format → generate a ready-to-paste prompt (full device catalog embedded) for any AI chat. Copy it, ask for the app source JSON. |
| Paste JSON | Paste the JSON the AI returns or a preset exported from the pedal. Auto-detected: a source artist ({name, songs:[…]}) is merged into data/ (tick 🔒 Personal artist to keep it for yourself); a pedal export (has modules) is made definitive via a personal override, matched by preset name. |
| Data | Browse the source (artist → song → variants; 🔒 marks personal artists). Reorder songs within an artist (↑/↓ — sets the artist bundle's slot order; within a song, presets stay auto-ordered calm→loud). Tick songs/presets and delete them; deletions that break a collection prompt you to substitute (searchable). Lists your pedal tweaks (overrides): remove one, or make it the project preset (baked into the song, §4.3). |
| Collections | Manage collections: reorder slots (↑/↓), replace/remove any slot, or add presets (searchable picker — when there are free slots you can tick several at once, capped at the number of free slots; if the collection is full you pick one preset and which slot to replace). Create, ⧉ duplicate and delete collections; 🔒 Personal marks a collection as yours (new and duplicated ones start personal). |
| NAM | Your NAM setup: the names of the 5 captures loaded on your pedal (each one a full rig, or switched off) and, for each modeled amp, which capture stands in for it and whether it is that amp (then Mixed uses it too). See §5. |
| 💾 Save (always visible) | Re-gzips the edited source and writes a new PocketMasterStudio.html (File System Access on desktop, download on Android). |
The round-trip (edit a preset on the pedal → make it definitive): tweak it on the pedal, open the Editor tab and use Export as Override (in the ⚙️ advanced settings) — the preset is handed to Studio and pre-loaded into Paste JSON automatically (you can also paste it by hand). Confirm, and it is stored as a personal per-preset override and re-applied on every regeneration, so your tweak becomes permanent.
A collection from the pedal: in the Editor, open Export Multiple, tick the slots you want (all of them for "everything loaded right now") and press ➕ Make collection. The presets are read from the pedal in slot order and Studio asks for a name. Each one is matched by name to the project; if your pedal version sounds different you choose between keeping it (as your personal tweak) or using the project's. Presets the project doesn't have are kept, under their own names, in the personal artist My Pedal. The new collection is personal.
Reordering the pedal: ⇅ Reorder presets on the pedal lists slots 1–50 with their names; move them with ↑/↓ or type a slot number. Write new order reads only the presets that move and writes each one to its new slot. A backup JSON of the moving presets is offered first (ticked by default — on Android, Chrome asks whether to download it; untick it if you don't want it). It can be written back with Import Multiple.
_config.json holds order (build/list order — add new artists here), tone_bc (solos shipped
in 3 voicings A/B/C) and double_chorus (solos shipped as a detune+chorus pair). La/Lb/Lc and
Ld/Lh variants are produced automatically from those tables — never write them by hand.
NR → FX1 → DRV → AMP → IR → EQ → FX2 → DLY → RVB
Each preset always contains all 9 modules; each is enabled or bypassed but still carries an effect
and its parameters. Every name and value is validated against mld.json — an out-of-range
value or unknown effect fails the build (and, in the app, blocks the incorporation with a message).
The pedal itself can reorder the chain per preset (DRV → AMP → IR → EQ is a fixed block; NR,
FX1, FX2, DLY and RVB can sit before or after it), but the project deliberately keeps this
single order for every preset: drive in front of the amp, modulation and time effects after it
(the classic FX-loop / studio layout, so echoes and reverb stay clean on driven sounds).
A preset fine-tuned on the pedal can be frozen exactly as the pedal has it (its computed design is then ignored). There are two places for that:
- In the project —
tuned/tunedNam. A song may carry"tuned": {"<kind>": {presetVolume, modules}}(the modeled set) and"tunedNam": {"<kind>": {presetVolume, modules}}(the NAM and Mixed sets), keyed by preset kind (also expanded kinds such asLh). They ship with the project. The Data tab's make it the project preset turns a pedal tweak into this. - Yours — overrides. A per-preset patch keyed
"Artist|PresetName"storing an exact{ampMode, presetVolume, modules}:"Normal"ones target the modeled set,"Clone"ones the NAM and Mixed sets. They are created by the round-trip (Export as Override) or when a collection is made from the pedal, listed/removable in the Data tab, and they are personal (§4.6): never published.
Source presets are Modeled-only. In
data/<Artist>.jsonevery preset uses a modeled amp (ampModeis implicitlyNormal); the NAM (Clone) version is generated automatically. Don't put"Clone"presets in the source — if a pasted source contains any, the app skips them with a notice.
Five cross-artist compilations, each an ordered list of references [artist, songSlug, kind]:
Interesting Solos (40), Classic Rock (40), A Bit of Everything (40), Best 50 (50) and
Best 50 v2 (50, the same 50 interleaved by era). Editable in the Collections tab (reorder,
replace, add/remove, and create/delete collections). A missing reference (after a deletion) is
skipped with a warning instead of breaking the build. The project's collections are saved to a
root-level collections.json (loaded by the Node build and written by Export ZIP); with no
collections.json the built-in 5 are used. Collections marked personal are never written there
(§4.6).
The current collections.json adds the two Volume Knob sets (12 each, see §4.5) to the built-in 5:
Volume Knob - Real Amp (Compilation_VolumeKnob_RealAmp.json) and Volume Knob - AC30
(Compilation_VolumeKnob_AC30.json). Both list the same 12 sounds in the same order, so slot N of one
is the twin of slot N of the other.
Original, song-independent presets (stored under the artist Brian May, data/Brian May.json)
built around his rig idea: a treble booster always on in front of a cranked AC30, with the
dirt controlled from the guitar's volume knob — roughly vol 2–3 clean with body, 5–6 crunch,
10 full drive. Every one of them shares the same recipe:
FX1Boost (EP Booster) withBrighton = the treble booster. At low guitar volume it also restores the highs the volume pot loses, so rolled-back cleans keep their presence.- Low noise gate (4–8) so quiet, rolled-back notes are never chopped; no compressor (it would flatten the volume-knob response).
- The same effect set in two twins of 12 presets each:
| Real amp (AMP off) | AC30 (AMP on) | Sound |
|---|---|---|
VK Amp C |
AC30 C |
Lush clean: light booster, chorus, short analog echo, plate |
VK Amp R |
AC30 R |
Core rig: booster + small room |
VK Amp H |
AC30 H |
Big chords: hotter booster |
VK Amp L |
AC30 L |
Lead: hottest booster, detune doubling, analog echo, plate |
VK Amp D |
AC30 D |
Fuzz Face + light booster |
VK Flang R |
AC Flang R |
Slow jet flanger |
VK Echo R |
AC Echo R |
Dotted-eighth analog echo (360 ms ≈ 125 bpm) |
VK Echo L |
AC Echo L |
Lead with long tube tape echo (800 ms) |
VK TWah R |
AC TWah R |
Subtle touch wah |
VK Trem C |
AC Trem C |
Clean bias tremolo + spring |
VK Phase R |
AC Phase R |
Phase 90-style phaser |
VK Vibe L |
AC Vibe L |
Lead through a Uni-Vibe, echo, plate |
Real amp set (VK …) — the pedal used as a pedalboard into the input of a real amp with its
gain at max: AMP, IR and EQ are bypassed (the AMP slot still carries a Voks 30TB, so
switching AMP + IR on turns it into the AC30 twin). Echo/reverb are kept low on purpose, because
they hit the amp before its distortion. presetVolume stays 30: it is the level fed to the real
amp, and raising it makes the amp clean up less with the volume knob. To calibrate once, switch the
booster off on VK Amp R and set presetVolume so it matches the pedal in bypass.
AC30 set (AC30 … / AC …) — the standard mode, for headphones/PA or a real amp set clean:
Voks 30TB + Voks 1x12 in the Modeled set, auto-converted to the AC30 May clone (IR off,
as on every Clone preset; presetVolume 100) in the NAM and Mixed sets. The clean ones (AC30 C, AC Trem C) use a lower
booster (15) and amp gain (55) so they stay clean at guitar vol ≈ 3 on the clone.
Leave the pedal's global input gain at 0 dB: raising it shifts the whole volume-knob range towards distortion (like hotter pickups) for every preset. Fine-tune per preset instead with the booster gain and the amp gain.
Everything you make for yourself is personal: collections marked 🔒 (new and duplicated ones start that way), personal artists (🔒 — e.g. My Pedal, the presets brought from your pedal), every pedal tweak (override) and your NAM setup.
- In your app it is all there: 💾 Save writes it into your copy of
PocketMasterStudio.html. - Never published: 📦 Export ZIP writes the project without it (data, collections, trees,
PocketMasterStudio.html,pocketmaster.source.json) and puts your personal content apart inpersonal.json, which the project's.gitignorekeeps out of git. The Node build (src/build_studio.js,src/export_tree.js) never reads it. - Into a new version: open the new app and use Bring personal content with your
personal.json, a project ZIP, or simply your previousPocketMasterStudio.html(from versions without personal marks it takes every override and every collection the new version doesn't ship). Pedal tweaks the new version already contains are dropped. The browser also keeps a copy: a new version opened in the same browser offers to bring it back. Save personal content downloadsPocketMasterStudio-personal.jsonat any time as a backup.
The builder is deterministic — the same source always produces the same output. Key computed logic
(all in pmbuild.js):
- Role volumes.
presetVolumeis a flat 30 for the modeled set (level-matched to the NAM set, which runs at 100). Solo-vs-rhythm balance lives in AMP Vol / gates / drive, not master volume. - Gain-aware lead gate. Each solo's noise-gate threshold is computed from the amp's design gain: hot rigs (≥78) → gate 22 (kill at-rest hiss); low-gain / sustained-fuzz leads (<50) → gate 10 (keep bloom); graded 13/16/19 in between.
- Hot-solo gain cap. Amp gain on the fiercest solos is capped at 76 (still saturated, less pick-sensitive); the gate uses the pre-cap gain so the rig stays tightly gated at rest.
- Fuzz handling. Every fuzz preset (rhythm or solo) gets a firmer gate floor (32 solo / 28 rhythm) and its fuzz amount capped at 56 (the dirt comes from the fuzz, not the amp).
- Lead level. Light AMP Vol trim (−2) and the pure +3 dB boost dropped, so leads sit at/just above the rhythm they cut over.
- Tone voicings A/B/C and the detune/chorus doubling pair are expanded from
_config.json. - NAM conversion (
json_nam/): every modeled amp is mapped to the capture that stands in for it in the NAM setup (by default the closest of 5:AC30 May,JCM800,TwinCln,Plexi,SoloSLO), level-maxed (Clone/EQ/preset volume at 100). The IR is always off on Clone presets: in Clone mode the pedal bypasses its own IR/cab block (it may still show it on, but it does nothing), so every capture must be a full rig (amp + cab + mic). An amp with no capture in your setup stays modeled (amp + the pedal's cab). A preset whose AMP is bypassed (the real-amp Volume Knob set, §4.5) gets its clone bypassed too and keeps its authoredpresetVolume/EQ, so switching the clone on is all it takes to use it with headphones. - Mixed conversion (
json_mixed/): the whole preset set, but per preset it keeps the best option — the clone only where the modeled amp is (or is the same voice/lineage as) a capture; otherwise it keeps the tuned modeled amp. A clone resets Gain/Vol/EQ to defaults and leans on the capture, so for amps a capture only approximates the tuned model sounds closer. In the default setup (DEFAULT_NAMinpmbuild.js) the amps marked same amp are:Voks 30TB,Voks 30N→ AC30 ·Dark Twin→ TwinCln ·Brit 50JP→ Plexi ·Brit 800→ JCM800 ·Sol 100 LD,Sol 100 OD→ SoloSLO. Every other modeled amp (tweed/Bassman/Jazz-120, Ampeg, Bogner/Mesa/ENGL/Diezel/5150/Friedman, JTM45…) stays modeled. Today that splits the catalog ≈ 73 % clone / 27 % modeled.
Outputs, all built in memory: the per-artist bundle json/<Artist>.json, per-song bundles,
individual presets, the 5 compilations, the mobile listing (index.html + README.md), the
detailed table (presets_full.html + a printable A4 presets_print.html), the song→Best50 map
(map_Best50.html + printable), and the NAM and Mixed twins of all of it.
The json_nam/ (Clone-mode) presets — and the clone half of json_mixed/ — reference 5 NAM
captures by name. The .nam files are not distributed with this project — they are community
captures made by their individual authors on TONE3000 (https://www.tone3000.com), free to use
under its licence. In Clone mode the pedal bypasses its IR/cab block, so each capture must be a
full rig — Amp + Cab on TONE3000 — never an amp head, DI or preamp capture (those sound without
a cab). Download one per amp and load it onto the pedal's NAM slots under exactly the name in the
first column (any good full-rig capture of the same amp works; you can also use other names, or
switch slots off, in the NAM tab):
| Load as | Amp | Full-rig capture (TONE3000) | Model to load |
|---|---|---|---|
AC30 May |
Vox AC30 Top Boost | VOX AC30 TOP BOOST · @josevanje | "VOX AC30 DRIVER" (all the pack is Amp + Cab) |
JCM800 |
Marshall JCM800 2203 | JCM800 2203 · 4x12 Marshall · @autoguitarrig | "CRUNCH" (preamp 6) |
Plexi |
Marshall 1959 Super Lead | Marshall 1959 SLP · @alessandrozanca | its single model (4x12 Greenback) |
TwinCln |
Fender '65 Twin Reverb | Fender '65 Twin Reverb Reissue · 2x12 Combo · @autoguitarrig | "…_2x12_CLEAN_SM57" |
SoloSLO |
Soldano SLO-100 | Soldano SLO 100 (6L6) · @2dor | "The King (OVD)" — an [AMP] file, not [POW] |
These are full-rig replacements for the amp-head/DI captures the project first recommended. The presets were tuned against the earlier captures, so a level or tone touch-up may be welcome on some; your tweaks on the pedal can be kept with Export as Override (§3).
When asking an AI for a preset, ask for modeled presets only (the AI Prompt tab already does): the Clone versions are generated from your NAM setup.
📦 Export ZIP writes PocketMasterStudio-project.zip (~1.9 MB) with the complete tree, so a
GitHub repo shows everything browsable and ships the self-contained app:
data/_config.json, data/<Artist>.json ← the source (human-readable)
collections.json ← the project's collections (only if changed)
json/… <Artist>.json, <Artist>/…, Compilation_*.json,
index.html, README.md, presets_full.html, presets_print.html,
map_Best50.html, map_Best50_print.html
json_nam/… the NAM (Clone) twin of json/ (same files)
json_mixed/… the Mixed twin of json/ (same files)
README.md this document
LICENSE MIT (own work) + third-party notice
pocketmaster.source.json ← lossless project source (for Import)
PocketMasterStudio.html ← the app itself, with the project's edits embedded
.gitignore ← keeps personal.json out of git
personal.json ← your personal content (§4.6) — NOT published
Import project accepts that ZIP (it reads pocketmaster.source.json; if absent, it
reconstructs from data/; a personal.json in it is brought in too), or a bare .source.json.
PocketMasterStudio/
├── PocketMasterStudio.html the app (open this)
├── README.md this document
├── LICENSE MIT for the project's own work; third-party parts excluded (see §12)
├── data/ SOURCE of truth — <Artist>.json + _config.json (browsable, editable)
├── collections.json the project's collection definitions (see §4.4); omit to use the built-in 5
├── personal.json your personal content (§4.6) — git-ignored, never published
├── json/ json_nam/ json_mixed/ generated preset trees + HTML listings (optional; from export_tree.js)
├── linux/ optional BLE-MIDI receive bridge (see §9)
└── src/ build tooling (needs Node ≥ 17, no npm install)
├── build_studio.js assembles ../PocketMasterStudio.html
├── export_tree.js (re)writes ../json + ../json_nam + ../json_mixed
├── pmbuild.js core builder: roles, gates, caps, voicings, compilations, NAM, Mixed, library
├── pmhtml.js index.html + README.md
├── pmtabla.js presets_full.html + presets_print.html
├── pmmap.js map_Best50.html + printable
├── pmmd.js Markdown → HTML (docs)
├── pmedit.js in-app editing engine (add / definitive / delete / collections)
├── pmzip.js self-contained ZIP create/read (no external libs)
├── studio_app.js the UI controller (tabs, editor mount, live pages, flows)
├── README_STUDIO.md embedded as the app's README
└── assets/ build inputs: mld.json, factory presets, the editor, the doc markdowns
Rebuild the app: node src/build_studio.js (reads data/ + src/assets/, writes the HTML).
Regenerate the loose tree: node src/export_tree.js. Add/edit an artist: edit
data/<Artist>.json (or do it in the app and Save), then rebuild. Change behaviour (gates,
caps, page look): edit the relevant src/*.js module and rebuild.
The app embeds two gzip+base64 blobs: pm-payload (the source: data, catalog, factory presets,
collections, prompt, docs — plus, in your own saved copy, your personal content) and pm-editor (the PocketEdit editor with its baked library
stripped — a fresh one is injected at runtime from your current data). The main tabs live in
studio_app.js (MAIN): the editor mounts in a blob: iframe with a bluetooth Permissions-Policy
allow, and posts pm-connection / pm-download messages to the shell (the shell shows the
connection dot, saves downloads, routes a preset export into Paste JSON and turns the
presets sent by Make collection (pm-collection) into a collection).
Note on numbers: the Rate parameter is the only non-integer value in the catalog, so whole
Rate values keep their .0 (handled by stringify); every other value is an integer.
Commit the exported tree. The self-contained PocketMasterStudio.html works from GitHub Pages over
https:// (a secure context — Web Bluetooth, saving and export all work in Chromium). The loose
json/ files are there for browsing and for importing single presets into the standalone editor.
On Linux, Chromium can send MIDI to the pedal over BLE but usually can't receive its
notifications — so the embedded editor can't read/export presets (which the round-trip needs).
The small linux/ble_midi_bridge.py fixes that: it subscribes to the pedal's BLE
characteristic via BlueZ and forwards notifications to the editor over ws://localhost:8765. The
editor tries it automatically on Connect (a silent no-op on Windows/Mac/Android).
This is an optional browser/OS Bluetooth workaround, separate from the app — the app itself
needs nothing installed. The bridge needs Python + pip install dbus-fast websockets on the Linux
machine, and only matters when you want to read from the pedal on Linux. It works with the app
opened locally (file:// or http://localhost); over https:// the insecure ws:// is blocked
as mixed content. See linux/README_LINUX.md.
- Idea, design and testing: Sadurní. Development: AI (Claude, by Anthropic), directed by the author.
- The finding that the pedal bypasses its IR in Clone mode (so every NAM must be a full rig), and the idea of a configurable NAM slot setup, come from TheColdVoid1337 (https://github.com/TheColdVoid1337/PocketMasterStudio, issue #1 of this project); re-implemented here.
- The embedded editor is an adapted copy of PocketEdit by suckyble — https://github.com/suckyble/PocketEdit.
- The Linux BLE-MIDI receive bridge (
linux/ble_midi_bridge.py) and the Linux approach come from vahr76's PocketEdit fork — https://github.com/vahr76/PocketEdit. - The 5 NAM amp captures come from the TONE3000 community — https://www.tone3000.com. Neural Amp Modeler (NAM) captures are made and shared by their individual authors there; credit for each capture belongs to its original creator (see §5, NAM captures).
Artist, band and song names are used descriptively, to indicate the sound each preset aims to evoke. Not affiliated with, sponsored by or endorsed by any artist, band or manufacturer; all trademarks belong to their owners. Contains no copyrighted audio, lyrics or notation — the presets are original parameter settings.
The project's own work — the build/app code (src/*.js), the preset source and settings (data/,
collections.json), the generated preset trees and the docs — is released under the
MIT License, © 2026 Sadurní (see LICENSE).
Not covered (third-party, all rights reserved by their authors — their repositories publish no
license): the embedded PocketEdit editor by suckyble (src/assets/PocketEdit_multi_import_export.html,
also inside PocketMasterStudio.html), the Linux bridge from vahr76's fork (linux/ble_midi_bridge.py)
and the Sonicake factory presets / device catalog (src/assets/pocketmaster_batch_factory_presets_v1_3_3.json,
src/assets/mld.json). PocketMasterStudio.html is therefore a combined file: MIT for this project's
parts only. NAM captures are not distributed (see §5).
{ "name": "AC/DC", // display name (may contain "/") "songs": [ { "slug": "BackInBlack", // used in filenames "short": "BackBlck", // ≤ 8 chars, base of presetName "variants": [ // one entry per preset the song needs { "kind": "R", // C clean · R driven · D 2nd dist · H heavy · L/L2/L3 lead // "name": "MyName R", // optional explicit presetName (presets brought from the pedal) "role": "rhy", // cln → lds → rhy → hvy → ldr (level, gate, order) "desc": "Back in Black: greasy open Plexi riff", "mods": { // ONLY the modules/params you set; the rest are filled from mld.json "AMP": { "effect": "Brit 45", "enabled": true, "params": { "Gain": 60, "Vol": 84 } }, "IR": { "effect": "BritGN 4x12", "enabled": true, "params": { "Vol": 85 } } } } ] } ] }