Mooer GE150 Rig Sheet

A GE150 Pro running Plus software: five faults, the right V2.1.4 package, and every preset recovered out of ChatGPT
Built 2026-11-02 on Jacks-iMac. Preset values recovered from 8 ChatGPT conversations plus the original code-interpreter cell. Nothing on this page was invented.
5faults found
12tape presets rebuilt
6Mayer presets
V2.1.4ready to flash
GE150 Proeditor live in English

1. Why the app did nothing, and the fix

Fault 1

The pedal was never on the USB bus. A full system_profiler SPUSBDataType sweep returned a Samsung T7 Shield, the Bluetooth controller, the FaceTime camera, a 2.4G receiver, and a PNY flash drive. No Mooer device, and no USB audio or MIDI interface of any kind. You confirmed this yourself, that the device had not been added yet.

Fault 2

The app that was running is the firmware updater, not the editor. The process alive on this Mac was /Applications/GE150PLUS.app/Contents/MacOS/GE150PLUSUpdate. That outer bundle has CFBundleExecutable = GE150PLUSUpdate and ships one firmware image at Firmware/GE150PLUS_V2.1.3.mr. Its only job is flashing. The preset editor is a second application nested inside it.

Fault 3

A charge-only cable will look identical to a broken app. The editor links libusb-1.0.0.dylib and libhidapi.0.dylib, so it reaches the pedal over raw USB and HID rather than over a MIDI port. It needs a true data cable on the pedal's USB editing port. With power-only wiring the pedal lights up and the editor still reports nothing attached.

Fix, in order
  1. Plug the pedal into the Mac with a data USB cable, into the pedal's USB editing port, and power the pedal on.
  2. Confirm the Mac sees it before opening anything: system_profiler SPUSBDataType | grep -i mooer. A line of output means you are clear to proceed. Silence means the cable or the port, so swap the cable first.
  3. Launch the editor, which is the nested bundle, not the outer one:
    open "/Applications/GE150PLUS.app/Contents/MacOS/GE150PLUS.app"
    That path is already verified to launch on this Mac, process GE150PLUS under PID 28530 during this session.
  4. Keep the outer GE150PLUS.app for firmware flashing only.
  5. Back up your current device presets inside the editor before importing anything. Dragging a preset onto a DEVICE slot overwrites that slot.

The Chinese interface, and why it cannot be switched from inside

Fault 4

The updater has no language button. Its binary contains only four buttons, closButton, messageBoxButton, openFileButton and startButton. The editor is the one that carries QPushButton#languagebutton and a LanguageManager. So the Chinese window is the updater, and no amount of clicking inside it will change the language.

Both apps read /Device/CurrentLanguage out of config.ini and load either Chinese.qm or English.qm. Yours sat at CurrentLanguage=0, which is Chinese. The English file is 16 bytes, a valid but empty Qt translation, so selecting it lets the built-in English source strings show through.

Why the obvious fix fails

Editing config.ini inside /Applications/GE150PLUS.app returns Operation not permitted. That is macOS 13 App Management protection, not file permissions, since the file is -rw-r--r-- and owned by you. ~/Applications is protected the same way. Editing it in place would also break Mooer's code signature.

Fixed, and verified on screen

A copy of the bundle now lives in an ordinary folder, outside App Management's reach, with CurrentLanguage=1 set in both the updater and the nested editor, the Firefox quarantine flag cleared, and an ad-hoc signature applied so Gatekeeper accepts it.

open ~/Projects/_outputs/ge150/GE150PLUS-EN.app

Proof it worked. The relaunched app put up an English dialog reading "Error, The device is disconnected." That single screen confirms the language switch and independently confirms Fault 1, in the app's own words.

The original in /Applications was left untouched and still opens in Chinese.

Worth doing once

The bundle still carries a Firefox download quarantine flag, com.apple.quarantine: 03c1;6ae6624b;Firefox. It is correctly signed by Shenzhen MOOER Audio Co., Ltd, team ID 67DUZ7D49G, so Gatekeeper will allow it. If macOS ever refuses to open it, clear the flag with xattr -d com.apple.quarantine /Applications/GE150PLUS.app rather than reinstalling.

2. Updates: what you have against what exists

ItemOn this MacNewest publishedVerdict
GE150 Plus editorV2.1.3, from config.ini AppVersion=V2.1.3V2.1.3, Mac package dated 2026-08-13Current
GE150 Plus firmwareGE150PLUS_V2.1.3.mr, 1,158,272 bytes, bundledV2.1.3, release notes stamped 2026.8Current
GE150 Pro firmwaren/aV2.1.4Different model
GE150 Max firmwaren/aV2.1.6Different model
Original GE150 editorNot installedSeparate download, separate pageSee section 3

You pulled this yourself on 2026-10-31 at 16:48, from Mooer's GE150 Plus/Pro/Max download page, straight into ~/Downloads/GE150_Plus_V2.1.3_Mac.zip. Firefox history records the whole chain, the product page then the CDN file. There is nothing newer to fetch for the Plus.

What V2.1.3 changed

The release notes that shipped inside your download say two things. It added support for converting and importing NAM A2 models, and it fixed several known bugs, with no detail given on which. The notes also set out how NAM loading works, and this part matters if you plan to load captures:

3. Settled: the pedal is a GE150 Pro, and the software was the wrong build

Fault 5, the big one

The pedal is a GE150 Pro, and every piece of software installed was the GE150 Plus build. The Plus editor and the Plus updater cannot talk to a Pro, so no cable and no language fix would ever have made that combination work.

Once the pedal was connected it named itself on the USB bus, which settles the model from the hardware rather than from memory:

GE150Pro:
  Product ID: 0x5703
  Vendor ID:  0x0483  (STMicroelectronics)
  Speed:      Up to 480 Mb/s

It also enumerates as a USB audio device, so it appears under audio inputs and outputs as GE150Pro alongside the editing connection.

Correct package, downloaded and verified

The Pro line runs its own release, V2.1.4, not the Plus V2.1.3. The direct CDN link returns 403, so it has to come through Mooer's signing endpoint, the same route the browser uses.

ItemValue
ArchiveGE150_Pro_V2.1.4_Mac.zip, 72,913,255 bytes, HTTP 200
InstallerGE150PRO_V2.1.4_Mac_Setup.dmg, 73,054,984 bytes
NotesGE150_Pro_Firmware_V2.1.4_Update.html, stamped 2026.8
What V2.1.4 addsNAM A2 model conversion and import, plus unspecified bug fixes
Correction: the presets CAN import, once the firmware is current

I said earlier these .mo files would never load on a Pro. Mooer's own V2.1.1 release notes say otherwise: "Presets are now fully cross-compatible between GE150 Plus, GE150 Pro, and GE150 Max" and "GE150 presets can now be imported into GE150 Plus/Pro/Max." The restriction runs one way only, since presets made on the new models cannot go back to an original GE150.

So the 12-preset tape pack should import into your Pro after the firmware reaches V2.1.1 or later. The Pro editor already carries *.mo as a preset filter and a Preset import successful ! message, which matches.

The Pro's model names also line up. Its FX/COMP list is 01 CRY WAH, 02 535 WAH, 03 AUTO WAH, 04 TALK WAH AH, 05 TALK WAH OH, 06 TOUCH WAH, 07 YELLOW COMP, 08 BLUE COMP, 09 S-COMP, 10 RED COMP, 11 LIMIT, 12 INTEL REDUCER: the original GE150's eight in the same order, with four added. YELLOW COMP, which the Appleseed patch needs, sits at 07.

3b. The firmware update, and the error it threw

What the updater said

Running the V2.1.4 updater against the connected pedal produced one dialog, read directly from the app:

Error
Equipment version is too low

The cause is the pedal was in normal mode, not update mode. It was enumerating as a USB audio device at the time, which only happens in normal operation. Mooer's procedure requires the unit be put into update mode first, before the software can talk to its bootloader.

Mooer's update procedure, verbatim from their page
  1. Power on the unit while holding down footswitches A + B to enter update mode. The screen will display "Updating".
  2. Connect the GE150 Pro to your computer using the included USB cable.
  3. Launch the editor software and start the update process.
  4. Do not power off or disconnect the device during the update.

Their own notes add: back up custom presets with the previous editor before updating, and always keep a backup of your tones. That is already done, verified below.

Backup verified before any flash

A full device backup exists and was content-checked rather than assumed:

CheckResult
Container headerMOOER / MOOER_GE150PRO / V1.0.0
Size57,898 bytes
Real preset names found inside18 of 18 checked, including NovemberRain, Crazy Diamond, Hotel Cali, Room335
Presets catalogued203 extracted to a named-Table .xlsx
Two copies on the Desktopbyte-identical, md5 0c56d37de1b01d88d7ac8ea46307bd6a
Safe copy~/Projects/_outputs/ge150/backups/GE150PRO-device-backup-2026-11-02.backup
Working, confirmed on screen

The GE150 Pro editor is open, in English, and reading your pedal. Verified end state, with the pedal connected over USB:

The Pro numbers presets by bank and slot, as in 22C, rather than the original GE150's P001 to P200. The empty COMPUTER panel on the left is where preset files load before being dragged onto a device slot.

4. The 12 preset tape pack, rebuilt

ChatGPT generated this pack as real .mo files and handed back a sandbox link. That zip was never downloaded, confirmed against both your Downloads folder and Firefox download history, and the sandbox has long since expired. The generator code survived inside the conversation, so the pack has been rebuilt locally from that exact code, with the same schema and the same twelve value sets.

Verified

12 of 12 files written. 12 of 12 pass JSON and schema validation, meaning the full nine block effectModule, fileInfo.schema = "GE150 Preset", and delay TYPE 4, the Tape model. All 12 carry a distinct time, level and feedback triple, so these are twelve different settings rather than renamed copies. Not tested against a physical pedal, because the pedal is not connected.

#NameTargetTime msDly LvlFdbkRev LvlDecayGain
01CAST MAREAppleseed Cast, Mare Vitalis4503438223830
02CAST LOWOWLAppleseed Cast, Low Level Owl5204248304827
03CAST SKYAppleseed Cast, brighter3803134203331
04CAST SWELLAppleseed Cast, largest wash6104657325525
05PAVE SLANTPavement, Slanted2852120132434
06PAVE CROOKPavement, Crooked Rain3552427142637
07PAVE GROUNDPavement, Brighten the Corners4302631173035
08BUILT TAPEBuilt to Spill4703139234129
09MODEST TAPEModest Mouse3352835183132
10TAPE SLAPShort slapback1182013122230
11TAPE DUBDub repeats6503964254624
12TAPE HUGELargest ambient tape7204870366223

Every preset also carries amp tone values. Presets 05, 06 and 09 use amp and cab TYPE 0, presets 04 and 12 use reverb TYPE 1, preset 06 uses reverb TYPE 0, and preset 08 uses reverb TYPE 3. All others sit on amp and cab TYPE 1 with reverb TYPE 4, the Spring model. The complete grid is in SETTINGS.tsv and SETTINGS.json beside the presets.

The .mo format, for the record

The original GE150 editor reads .mo files, and they are plain JSON rather than an opaque blob, which is the only reason this pack could be rebuilt at all. The structure is three top level keys, effectModule holding all nine blocks, Exp for expression pedal assignment, and fileInfo for the device stamp.

{"effectModule":{"FX/COMP":{"TYPE":6,"SWITCH":0,"Data":{...}},
  "DS/OD":{...},"AMP":{"TYPE":1,"SWITCH":1,"Data":{"GAIN":30,"BASS":48,
  "MID":52,"TREBLE":58,"PRES":52,"MST":78}},"CAB":{...},"NS GATE":{...},
  "EQ":{...},"MOD":{...},
  "DELAY":{"TYPE":4,"SWITCH":1,"Data":{"LEVEL":34,"SUB-D":1,"TIME":450,"FEEDBACK":38}},
  "REVERB":{"TYPE":4,"SWITCH":1,"Data":{"PRE DELAY":12,"LEVEL":22,"DECAY":38,"TONE":45}}},
 "Exp":{...},
 "fileInfo":{"app":"GE150 Edit","device":"MOOER GE150","preset_name":"CAST MARE",
  "schema":"GE150 Preset"}}

Block type numbers are zero based, so Tape is delay TYPE 4 and Spring is reverb TYPE 4.

5. Appleseed Cast, the full block by block patch

This one was built against documented Chris Crisci gear, Fender Twin and Hot Rod DeVille 4x10 amps, with a Deluxe Memory Man, DL4, Boss digital delay, tremolo and Fulldrive on the board. The amp choice is Fender rather than high gain for that reason.

FX / COMP

ModelYELLOW COMP
Sustain35
Level55

DS / OD

ModelFULLDRV
Drive18
Tone48
Level58

AMP

Model65 USTW, Fender 1965 Twin Reverb
Gain32
Bass48
Mid54
Treble58
Presence52
Master80

CAB

ModelUSBASS410, Fender Bassman 4x10

NS

ModelNOISE KILLER
Threshold18

EQ

ModelMOOER G
100 Hz-2 dB
250 Hz0 dB
630 Hz+1 dB
1.6 kHz+2 dB
4 kHz+1 dB

MOD

ModelOFF

DELAY, the important block

ModelTAPE
Level34
Feedback38
Time450 ms
SUB-D1/4

REVERB

ModelSPRING
Level22
Decay38
Tone45

Playing notes that came with it. Stay on the neck pickup, or neck plus bridge, with guitar volume around eight or nine. The patch stays articulate under light playing, and harder picking starts pushing the Fulldrive model.

Two variants. For the big Low Level Owl passages, raise delay level to about 40, feedback to 45, and spring to 28. For Mare Vitalis, keep the numbers above, because that record wants a more immediate attack and less wash.

On SUB-D. It sets the subdivision used by tap tempo, so 1/4 gives straight quarter note repeats and keeps the pattern from getting busy.

6. Six John Mayer presets

These lean on three models the GE150 happens to have, CAROL CL after a Two Rock Coral, GOLD CLON after a Klon Centaur, and 808 after a Tube Screamer. Mayer rigs have run Two Rock, Dumble, Tube Screamer, Klon, compressor, delay and spring reverb, so the ingredients line up unusually well. Keep them in six consecutive slots.

PresetAmpGainBassMidTreblePresMstFront end and time based
1. Continuum clean
Slow Dancing territory
CAROL CL254558554580YELLOW COMP light, compression 30, output near unity. Spring reverb 22. Strat position four for the scooped rhythm sound, position five for more neck weight.
2. Gravity
warm lead and rhythm
CAROL CL324864504080808 at Drive 18, Tone 43, Level 68. Roughly 300 ms subtle analog delay, spring reverb 25. Neck pickup for most leads.
3. Belief
harder attack, bigger mids
CAROL CL304268585282GOLD CLON at Drive 25, Tone 48, Level 70. The pick attack carries this one.
4. Big live leadCAROL OD384562524878808 in front, Drive 20, Level 72. About 380 ms delay with low feedback. Broader and more sustaining.
5. Dead and Company65 US TW244062585585PURE BOOST with very little added gain, enough output to push the amp model. Reverb restrained.
6. Sob Rock
polished clean
65 US DX244655574778YELLOW COMP 25, subtle chorus 15, about 420 ms delay with low feedback, restrained reverb. Wider and softer in the upper mids than preset 1.

The three that cover most playing without further tweaking are Continuum Clean, Gravity, and Big Live Lead.

7. Pantera, three records

Amp PV5050 DS with cab PV 5050 412, modeled on a Peavey 5150 and its 4x12. Starting from the Metal Zone model gets you further away, so start here.

SettingBaseCowboys From HellVulgar DisplayFar Beyond Driven
Gain55485560
Bass58585862
Mid243222 to 2518
Treble70707068
Presence72727275
Noise gate60 to 7060 to 7060 to 7070
Checked and found absent

There is no verifiable factory Pantera or Dimebag preset in the original GE150 factory set. Start from whichever factory preset on your unit already uses the PV5050 amp model and overwrite it. Preset names shift between firmware versions and user backups, so a fixed preset number cannot be promised. For reference the original GE150 has 200 slots, P001 to P050 for full range output, P051 to P100 for an amp return, and P101 to P150 for a normal amp input.

8. El Capistan mapped onto GE150

You asked whether the GE150 covers the Strymon, so here is each El Capistan basis against the GE150 setting that reaches for it.

El Capistan basisGE150 setting
Fixed A, short headTape Delay, SUB-D 1/16, Feedback 15 to 25, Level 20 to 25
Fixed B, medium headTape Delay, SUB-D dotted 1/8, Feedback 25 to 35, Level 22 to 28
Fixed C, long headTape Delay, SUB-D 1/4, Feedback 35 to 45, Level 25 to 32
Multi A, heads 1 and 2Dual Delay, 1/16 plus dotted 1/8, Feedback 25 to 35
Multi B, heads 2 and 3Dual Delay, dotted 1/8 plus 1/4, Feedback 30 to 40
Multi C, heads 1 and 3Dual Delay, 1/16 plus 1/4, Feedback 30 to 40
Worn tape wobbleTape Delay, 450 to 650 ms, Feedback 40, Level 28, Ana Chorus Rate 6, Depth 10, Mix 8
Dark aged repeatsAnalog Delay, 450 to 600 ms, Feedback 35 to 45, Level 25
Tape echo with springTape Delay as above, Spring Reverb Level 10 to 18, Decay 20 to 35
Runaway tape feedbackTape Delay, Feedback 90 to 100, Level 15 to 20, expression pedal assigned to Feedback
Sound on Sound loopGE150 Looper with Tape Delay around 400 ms, Feedback 45, Level 25
Crinkle, bias, head wearNo GE150 equivalent. Its Tape model carries one fixed texture with no separate controls.

At 120 BPM, sixteenth, dotted eighth and quarter notes come out to 125, 375 and 500 milliseconds, which are the divisions Strymon uses across its Fixed and Multi modes. The GE150 gives you Tape, Dual Delay, Spring, subdivision control, and an eighty second looper, so one row above is the only genuine gap.

9. Where each number came from

SectionSourceKind of evidence
Faults 1 to 3, the fixsystem_profiler SPUSBDataType, ps aux, plutil, codesign, lipo on this MacObserved command output, 2026-11-02
Installed versions/Applications/GE150PLUS.app/Contents/MacOS/config.ini and Firmware/GE150PLUS_V2.1.3.mrFiles on disk
V2.1.3 release notes~/Downloads/GE150_Plus_V2.1.3_Mac/GE150_Plus_Firmware_V2.1.3_Update.htmlMooer's own notes, shipped in your download
Newest published versionsMooer GE150 Plus/Pro/Max download pageWeb search, 2026-11-02
Download date and chainFirefox places.sqliteBrowser history, 2026-10-31 16:48
12 preset packChatGPT code-interpreter cell, conversation Mooer GE150 Pantera ToneRecovered generator source, rebuilt and validated locally
Appleseed Cast patchSame conversation, assistant message with the full block tableRecovered text
Mayer presetsChatGPT conversation Mayer Sound VariationsRecovered text
Pantera settingsSame Pantera conversationRecovered text
El Capistan mapChatGPT conversation Mooer GE150 Versus El CapistanRecovered text
Effect and amp model namesChatGPT conversation GE-150 Effects ListRecovered text, 151 models across 9 blocks
Stated limits

Superseded 2026-11-03. The pedal is connected, Pro-format files were built, and 55 presets are on it. The last card on this page carries the current state, including an EQ defect found on 2026-11-04.

2026-11-03 · why the presets would not load

The twelve .mo files declared themselves as a plain GE150. Their fileInfo carried "schema": "GE150 Preset" and "app": "GE150 Edit". The Pro editor binary accepts only GE150PRO Preset and GE150PRO Edit, both of which appear as literal strings inside GE150PRO.app/Contents/MacOS/GE150PRO.app/Contents/MacOS/GE150PRO.

That diagnosis was incomplete. See the next card for the actual cause.

2026-11-03 · solved, twelve presets on the pedal

Two things were wrong, and the second one is the whole story.

On the pedal now: 48A TAPE HUGE, 48B TAPE DUB, 48C TAPE SLAP, 48D BUILT TAPE, 49A MODEST TAPE, 49B PAVE CROOK, 49C PAVE GROUND, 49D PAVE SLANT, 50A CAST SKY, 50B CAST SWELL, 50C CAST LOWOWL, 50D CAST MARE.

Readback check: 48A and 48B were dragged back off the pedal into COMPUTER and compared field by field against the files that were sent. TAPE HUGE returned TIME 720, F.BACK 70, LEVEL 48, DECAY 62, reverb LEVEL 36. TAPE DUB returned TIME 650, F.BACK 64, LEVEL 39, DECAY 46, reverb LEVEL 25. Both matched on every delay and reverb field. Master set: ~/Projects/_outputs/ge150/mo-pro-final/.

2026-11-03 · the other twelve, and a reverb correction

Twelve was one pack out of the whole ask. ChatGPT had packaged one file, GE150_Appleseed_Pavement_Tape_Presets.zip, and written everything else out as settings tables it never packaged: six Mayer presets, a Pantera rhythm patch with three album variants, and a block-by-block Appleseed Cast patch with a Low Level Owl variant. Those twelve are now built and on the pedal too.

This count was wrong when it was written. A second zip existed and this page missed it. The correction, and the twenty presets inside it, are in the card above.

Model numbers were read from the editor, not guessed. AMP: 65 US DX 0, 65 US TW 1, PV 5050 DS 36, CAROL CL 40, CAROL OD 41. CAB: US BASS 410 is 2, PV 5050 412 is 18. DS/OD: 808 is 1, PURE BOOST 2, FULL DRV 12, GOLD CLON 19. DELAY: TAPE is 3. REVERB: SPRING is 4.

A defect in the first twelve, now fixed. They inherited REVERB TYPE 3 from the reference preset, which is PLATE. ChatGPT specified SPRING for the El Capistan character. All twelve were rebuilt on TYPE 4 and re-written to the pedal. A readback of TAPE SLAP from slot 48C returns REVERB TYPE 4 and DELAY TYPE 3 with DECAY 22, LEVEL 12, P.DELAY 12, TONE 52 and TIME 118, F.BACK 13, matching what was sent.

Where ChatGPT gave no numbers, delay level and feedback keep the reference values rather than invented ones. The EQ question that held this section open is now settled, below.

37B CAP MULTI C37C CAP MULTI B37D CAP MULTI A38A CAP FIXED C
38B CAP FIXED B38C CAP FIXED A38D CAP WORN TAPE39A CAP SOUND ON SND
39B CAP RUNAWAY39C CAP TAPE SPRING39D CAP DARK AGED40A VOLTA TETRA
40B ZEP ACHILLES40C ZEP KASHMIR40D TOOL PNEUMA RHY41A VOLTA CYGNUS
41B SHINER EGG41C TOE GOODBYE41D TOOL PNEUMA CLN42A RH WEIRD FISH
42B RUSH LIMELIGHT42C RUSH YYZ42D KC SCHIZOID43A RH PARANOID
43B FAILURE SPACE43C KC FRACTURE43D DEFT DIG BATH44A DT PULL UNDER
44B EITS BIRTH44C APC JUDITH44D APC 3 LIBRAS45A APPLESEED
45B MAYER BIG LEAD45C MAYER BELIEF45D MAYER GRAVITY46A MAYER DEAD
46B MAYER CONTINUUM46C PANTERA COWBOYS46D MAYER SOB ROCK47A PANTERA VULGAR
47B PANTERA RHYTHM47C PANTERA FARBEYOND47D LOW LEVEL OWL48A TAPE HUGE
48B TAPE DUB48C TAPE SLAP48D BUILT TAPE49A MODEST TAPE
49B PAVE CROOK49C PAVE GROUND49D PAVE SLANT50A CAST SKY
50B CAST SWELL50C CAST LOWOWL50D CAST MARE 

Masters: ~/Projects/_outputs/ge150/mo-pro-final/ (the tape pack) and ~/Projects/_outputs/ge150/mo-pro-rest/ (Mayer, Pantera, Appleseed).

2026-11-03 · the 20 measured against the pedal's own factory presets

ChatGPT scored its own pack 6 out of 10 and asked for gain staging, gates, effect levels and modulation speed to be checked. Three of those are stored numbers, so they were checked against a baseline pulled off the pedal: 15 factory presets dragged out of banks 01 to 15, one per amp model, covering every one of the nine amps the twenty use.

Finding 1, the cabinet was never specified. All twenty blueprints left CAB empty, so all twenty inherited the reference preset's EL34 power tube, SM57 and mic distance 10. The factory presets assign a tube per amp and run the mic at 25 to 100. Seven had the wrong power tube. The two Jazz 120 presets were running an EL34 on an amp that is solid state and whose factory preset sets TUBE to OFF.

AmpWasNowMicDistanceFactory source
UK30 CLEL34EL84MD44110 → 25UK 30 A
TRI REC DSEL346L6MD44110 → 50Tri Rect Lead
JAZZ 120EL34OFFSM5710 → 100Jazz 120
MARKV DSEL346L6SM5710 → 64Mark4 Lead
HWT 103EL34EL34SM5710 → 46HWT 103
PLX100EL34EL34MD42110 → 50Brit Plexi Dist
J800EL34EL34SM5710 → 44Brit 800 Drive
65 US DXEL346V6SM5710 → 3965 Deluxe
HUGEN DSEL34EL34SM5710 → 55Hugen HiGain

Finding 2, one master level for all twenty, now closed. Every blueprint wrote AMP master 65, identically. The factory presets run master 52 to 100 (median 98.5, mean 87.6, n=14) and Brandon’s other 35 presets run 78 to 100 (median 100, mean 93.2), so 65 left the new twenty quieter than everything around them on the same pedal. All twenty were re-written at master 93, the mean of the presets he already keeps, which is a loudness match against his own library rather than an invented number. Per-preset level matching still needs a guitar and an ear, so 93 is a floor to play from, not a final mix.

Finding 3, there is no guitar plugged in. Recording the pedal's own USB output with a gain-100, gate-off factory preset loaded returns -91 dBFS, which is digital silence. Nothing can be said about how the noise gates behave on a real signal until there is a real signal. The pedal does present itself as a full duplex Core Audio device at 44.1 kHz, which looked like a re-amp route. The manual closes that door. Page 18 describes the USB-C port as an OTG playback path whose level is set by the phone’s own volume, page 19 gives its output a separate OTG LEVEL control, and the CAB SIM THRU section lists “OTG audio output” beside the left, right and headphone jacks. USB audio is mixed in at the output stage the same way the AUX IN practice jack is, so it never reaches the amp and effects chain. Re-amping is impossible on this unit, and the gate check needs a guitar in the instrument jack and someone playing it.

What was corrected and re-written. All twenty were rebuilt with the factory tube, mic, centre and distance for their amp, then rebuilt again at master 93, and all twenty written to slots 40A to 44D. Readbacks of 40A VOLTA TETRA and 42B RUSH LIMELIGHT come back byte-identical to the v3 masters, both carrying MST 93.

A slot defect the re-write caught. 40A was holding a second copy of ZEP ACHILLES, duplicating 40B, and VOLTA TETRA was on no slot at all. Nineteen of the twenty had been written; the twentieth had been silently lost to a mis-targeted drag in the first pass. Reading the slot names off the device list before each write is what found it.

Masters: ~/Projects/_outputs/ge150/mo-pro-new20-v3/. Baseline: ~/Projects/_outputs/ge150/factory-baseline/ (15 factory presets).

2026-11-04 · all twenty at master 93, two byte-identical readbacks

The master-level pass is finished. Slots 40A to 44D each hold the preset they are supposed to hold, each at AMP master 93. The device list was read back after every batch, and 40A VOLTA TETRA and 42B RUSH LIMELIGHT were pulled off the pedal and compared byte for byte against the v3 masters. Both match.

Two failure modes worth writing down

The screensaver eats drags. Fourteen consecutive writes reported no import dialog and nothing changed on the pedal. The cause was the 8-minute idle timer firing mid-batch: macOS composites a full-screen secure window over everything, so each drag landed on that instead of the editor, and the Mac then sat at the password prompt. A batch of GUI writes has to hold the display awake for its whole run.

caffeinate -d -i -w $$ &   # for the lifetime of the script

Signalling the screensaver process is the wrong recovery. It leaves an orphaned secure surface that WindowServer will not give up, which black-screened this Mac once before. Input dismisses a saver; a signal does not.

Estimated row positions overwrite the wrong slots. Two writes aimed at 43D and 44B landed on 41C and 42B, quietly replacing TOE GOODBYE and RUSH LIMELIGHT. Reading row centres off a screenshot by eye was accurate to about 11 points against a 27-point row pitch, close enough to hit most of the time and close enough to miss by a whole row after a scroll. The fix is to measure rather than estimate: the selected row draws a solid rgb(152,198,24) band, so scanning one pixel column for that colour gives an exact anchor, and every other row follows from the 26.9-point pitch.

ys = [y for y in range(280,1250) if px[300,y] == (152,198,24)]
centre = (ys[0] + ys[-1]) / 4          # screenshot is 2x retina
row(n) = centre + (n - anchor_index) * 26.9

Both damaged slots were restored from the measured grid, and the device list was re-read to confirm all twenty names.

2026-11-03 · 31 more presets written, 55 now on the pedal

The twenty that were missing were in the most recent ChatGPT conversation, packaged as GE150PRO_20_New_Tone_Designs_2026-11-03.zip and never converted. ChatGPT had shipped them as JSON tone recipes rather than .mo files, on purpose, so as not to repeat the invalid-format problem. With the parameter dictionary extracted, converting them is mechanical.

Every model name resolved against the extracted table, with one spelling correction: ChatGPT's “65 US DLX” is the editor's 65 US DX. The rest matched on normalised names.

The EQ scale is resolved. The definition reads -16 to +16 with default 0. The pedal's own reference preset stores 16 in every band. Stored value is decibels plus 16, so flat is 16. Written into APC 3 LIBRAS as 14, 15, 16, 16, 16 and read back in the editor as -2, -1, 0, 0, 0. EQ is now on in all twenty.

Read back off the hardware. RUSH YYZ was dragged back off slot 42C and APC 3 LIBRAS off 44D. Both files the pedal returned are byte-identical to the files that were sent, so every parameter survived the round trip.

Masters: ~/Projects/_outputs/ge150/mo-pro-new20/ (the twenty) and ~/Projects/_outputs/ge150/mo-pro-cap/ (the eleven El Capistan modes, now at 37B–39D).

2026-11-03 · the format is now extracted, not inferred

The editor carries its own parameter dictionary. The model names are not plain strings anywhere in the 32 MB binary, in any encoding, because they sit in a zlib-compressed Qt resource. Decompressing the stream at offset 13,722,184 yields 21,425 bytes of XML that defines every chain, every model, and every parameter's range.

Validation first. Nine model indices had already been read off the editor by eye. The extracted table agrees with all nine: 65 US TW 1, PV 5050 DS 36, CAROL CL 40, 808 1, GOLD CLON 19, TAPE 3, SPRING 4, PV 5050 412 18, ANA-CHORUS 11.

It immediately caught six wrong files. Three El Capistan Fixed presets had no subdivision set, and the three Multi presets were written with a TIME field that Dual Delay does not accept. All six were rebuilt against the extracted definitions and re-verified in the COMPUTER list.

Reference: ~/Projects/_outputs/ge150/GE150PRO-model-definitions.xml and GE150PRO-model-index.json. This is the app's own declarative description of its interface, which is a different thing from reconstructing an audio algorithm. For the USB wire protocol or the pedal firmware, static reading of this kind gets you nothing and a real disassembler would be the tool.

2026-11-04 · a peer audit's label findings, checked against the extracted table

A separate session ran a ten-minute nudge loop against the ChatGPT conversation that authored the tone blueprints. Its final pass reported four model labels as wrong against Mooer's printing: 65 US DX should read “65 US DLX”, US BASS 410 should read “US Bass 410”, FULL DRV should read “Full Drv”, and “Yellow Comp” should read “Yellow comp”.

All four proposed corrections are wrong, measured against the editor's own model definitions. Counted in the decompressed Qt resource, each form the editor prints appears exactly once and each form the audit proposed appears zero times.

Audit said Mooer printsHits in the tableThe editor printsHits
65 US DLX0AMP 01: 65 US DX1
US Bass 4100CAB 03: US BASS 4101
Full Drv0DS 13: FULL DRV1
Yellow comp0FX 07: YELLOW COMP1

The audit's two columns were reversed. The first three labels already matched the editor, so acting on it would have replaced three correct labels with the blueprint's own spellings, which is where they came from: the 20-preset blueprint on disk contains “65 US DLX” four times, “Full Drv” four times and “Yellow comp” twenty times, and YELLOW COMP never.

The fourth finding was real, and its proposed fix was wrong too. This page had written “Yellow Comp” in two preset rows, matching neither the editor's casing nor the audit's. Both rows now read YELLOW COMP.

Every model number on this page was re-checked in the same pass. Thirteen claims, each matched to the extracted table by converting its one-based display number to the zero-based index the .mo files store: 65 US DX 0, 65 US TW 1, PV 5050 DS 36, CAROL CL 40, CAROL OD 41, US BASS 410 2, PV 5050 412 18, 808 1, PURE BOOST 2, FULL DRV 12, GOLD CLON 19, TAPE 3, SPRING 4. Thirteen of thirteen agree.

The blueprint pack probably stopped changing at its ninth pass, and that is a self-report, not a measurement. The claim that all 55 designs went byte-for-byte unchanged at V9 and stayed identical through V14 comes from the generator asserting it about its own output. Nothing was diffed. The packs exist only as attachments in the conversation, and a search of ~/Downloads and ~/Projects/_outputs/ge150 for any V9 to V14 artifact, changelog, slot audit or parameter dump returns nothing, so there is no local file to check it against.

What holds without trusting the generator is weaker and still useful: from the eleventh pass on, the defects it reported stopped naming the pack and started naming its own earlier paperwork, each version bump leaving the previous handoff stale. That is a structural tell rather than a claim about bytes. Treat V9 as the last version where a tone plausibly changed, with “plausibly” carrying real weight. Settling it needs V9 and V14 downloaded and diffed by someone with the thread open. Loop data: ~/Projects/_outputs/chatgpt-nudge-loop/LOOP-DATA-2026-11-04.md.

2026-11-04 · every EQ boost in the twenty was dropped

The blueprints were checked against the twenty masters field by field, 20 presets across 9 chains. Model indices: 150 of 150 correct. Amp knobs including the master at 93: 120 of 120 correct. EQ: all 46 of the requested boosts were missing.

The split is exact. Of the EQ values the blueprints asked for, 29 negative cuts landed, 25 zeros landed, and 0 of 46 positive boosts landed. All 46 sat at 16, which is the stored value for 0 dB. Every one of the twenty presets is affected, between one and three bands each.

The cuts landing is what proves the reading. A wrong band mapping would misplace a cut as readily as a boost, and every cut is in its right band: a −1 dB low mid reads 15 at 250 Hz. Factory presets are the second control, spanning 13 to 21 with 58 of their 79 values sitting exactly on 16, so values above 16 are legal and Mooer uses them.

The extracted table defines each band as -16_16_1_0_, meaning −16 to +16 dB, step 1, default 0, stored with an offset of 16. The conversion applied that offset to zero and negative values and skipped the positive ones. This is a separate matter from where the blueprint pack converged, which concerns the designs rather than their conversion.

Fixed, and now on the pedal. The twenty masters were rebuilt as ~/Projects/_outputs/ge150/mo-pro-new20-v4/: 46 bands corrected, 46 field changes in total, none outside the EQ block, and the blueprint check returns 20 of 20 clean. All twenty were written to slots 40A–44D, every write confirmed by the editor's own dialog.

All twenty were then read back off the hardware. Twenty of twenty match their masters by sha256, each with a fresh file mtime proving the bytes came from the device rather than from the copy already on disk. Nineteen matched on the first pass; the twentieth is below.

SlotPresetEQ off the device, storedsha256
43CKC FRACTURE100Hz 14, 250Hz 16, 630Hz 18, 1.6KHz 18, 4KHz 177bc1e038…
44DAPC 3 LIBRAS100Hz 14, 250Hz 15, 630Hz 16, 1.6KHz 17, 4KHz 189898501a…
42CRUSH YYZ100Hz 16, 250Hz 15, 630Hz 19, 1.6KHz 18, 4KHz 1719d84e50…

Subtract 16 for dB: KC FRACTURE reads −2, 0, +2, +2, +1, which is its blueprint exactly. Amp master is 93 on all three.

Two things the write pass taught, both now built into the scripts. The editor window moved twice while this ran, once by 1316 points, and the first write used absolute screen coordinates, so it landed inside another application. Every coordinate is now window-relative and the origin is re-read before each drag, and the writer refuses to act unless the editor is frontmost. Separately, the first readback reported a clean match without having done anything at all, because a float coordinate hit bash integer arithmetic and the click never fired; the file mtime check caught it and printed that the result proved nothing. A verification step needs its own evidence that it ran.

2026-11-04 · the twentieth preset, and an invented value

Reading all twenty back rather than a sample turned up one disagreement. ZEP KASHMIR came off the pedal differing from its master in exactly one field: the MOD block's PITCH, device 0 against master 0.1. Everything else in the file was identical.

The master was the wrong one. The converter contained a special case that inserted PITCH = 0.1 whenever a DETUNE block arrived without a pitch, carrying the comment “smallest audible detune; unit unverified”. The blueprint for ZEP KASHMIR specifies rate_hz 0, depth 9, mix 16 and no pitch at all, so 0.1 was invented rather than derived.

It never reached the pedal either. Every other value in a .mo is an integer, the editor coerced the float to 0, and the hardware has held 0 all along. The extracted table defines DETUNE's pitch as -20_20_0.1_1_, a −20 to +20 range in steps of 0.1, which the file almost certainly stores as an integer count of those steps.

Fixed at the source. The special case is gone from ~/Projects/_outputs/ge150/convert20.py, which now leaves the parameter at its range default and reports it as unspecified instead of filling it. The master was set to 0 to agree with the hardware, so no further write to the pedal was needed, and all twenty now match.

What this left open. ZEP KASHMIR's Detune block was switched on with a pitch of 0, and the blueprint never said how much detune it wanted. Its depth 9 has no home in a DETUNE block, whose only parameters are PITCH, MIX and TONE, and reading depth as the detune amount would be a guess.

Resolved by switching the block off, 2026-11-04. Enabled at zero is not the neutral state it looks like: the block still runs at MIX 16, and a time-domain pitch shifter passing a 16 percent wet copy through its buffer comb-filters against the dry signal whether or not the pitch offset is zero. That is the expected behaviour of the algorithm class rather than something measured on this unit. Switching MOD off removes the colouring without substituting another invented number.

One field changed, effectModule 6 SWITCH from 1 to 0. Every other block is untouched, written to 40C and read back matching at bcdae2e84fe8 with a fresh mtime. A SWITCH check across all twenty presets now reports 179 of 180 blocks agreeing with their blueprints and exactly one divergence, this one, so the deliberate change is visible to a test rather than hidden inside a passing total.

Where the recommendation came from, and what it rests on. The call to disable rather than guess came through Brandon from a ChatGPT pass that also argued the part should lean on the Danelectro in DADGAD and the amp rather than modulation, and noted that the phasing often cited on that recording sits on the drums. Those are its historical claims and they were not checked here. The reason the block is off is the one above: no source gives a detune amount, and zero with the block live is not reliably neutral.

2026-11-04 · all twenty hashes, so the claim is checkable

Saying twenty of twenty match is a report. These are the numbers behind it, so anyone holding the masters can check it instead of taking the report's word. Each row is one slot: the sha256 of the master in ~/Projects/_outputs/ge150/mo-pro-new20-v4/, and whether the copy read back off the pedal has the same digest.

Reproduce with shasum -a 256 ~/Projects/_outputs/ge150/mo-pro-new20-v4/*.mo.

SlotPresetBytessha256 of the masterDevice readback
40AVOLTA TETRA238467db5e7b37cc2614fb634601f7bcc30a89cd9614623bb246ad94168fa6c0f09bmatch
40BZEP ACHILLES238485c9080f54db504484be62091351cc2e9a65f24fbb584c8c421318eaba7a69a6match
40CZEP KASHMIR2381bcdae2e84fe8b7de88819c3cc3edd272538c13d5df160dd0854c6d9124c289c3match
40DTOOL PNEUMA RHY238881cb93c94021abdef48d71b8533c21e4c54a4d2c5af268120c06d9bdd8ad09d9match
41AVOLTA CYGNUS238390599567745b39ff588c483da40804d56ce745c45d89d818aab368ef6eb0c51cmatch
41BSHINER EGG2381212b7dff00dec06ec421f7d2d2fea89afffdf19c2ca3f33a077e355ef8664519match
41CTOE GOODBYE24113243e66f5ed2ad30431339e532f91edc5fce0f0001a0a0beb604d8b27fafe62dmatch
41DTOOL PNEUMA CLN2417f513f74f2c813f65cb4c2393acf5d0d436cfa7cda9a2ba5dccc2c708e8d62927match
42ARH WEIRD FISH24148ed987e28a88b733b465b7322ebfe164c0a3a5d57e576a18093d592d4d06af1bmatch
42BRUSH LIMELIGHT241234ac1417a6a241d412cde8a85f23c97f37006280632aadab5bfe87c22a507669match
42CRUSH YYZ238219d84e50433d2a7769e39443f3b41dbc4786d6228b3716c9a60dacf49d8fae20match
42DKC SCHIZOID23823da10ea075597bcab9e111f79b0afa67c66b9c9f61478988b730e551a9ffd5b5match
43ARH PARANOID2382512993442d21533fd713fb1e83e946b5c5f91ad4ad13ae280b42a2d8ddc126fbmatch
43BFAILURE SPACE24124e6735096d803142f624ece544a9fc0eecf4e182df9a45405eebe38a2ad5c817match
43CKC FRACTURE23847bc1e038590125d031c037cddef0183c8b31f32ba2148db66e0a51edd7662473match
43DDEFT DIG BATH2412933d817de5c3974c8936813839dbf592b4666a8951133c5eeb21c2dc814fa0c2match
44ADT PULL UNDER23837cf4f60cab85708b349332f69708afa9dd92ad40dd4cc532b18adc9d13dd3820match
44BEITS BIRTH24205e048fcdc52e96ce0352346e6424f681b3634d955a5f95ce359e79f58708b9bcmatch
44CAPC JUDITH238128c322769103377f73f4a73361f41b6e35fd76c52322cc02ac76187fd42b7dd9match
44DAPC 3 LIBRAS24139898501a3227aa8b41778c6758da40fbe0de61d22f35e87b6426bc90b7508b90match

What these twenty rows do not cover. They are the twenty presets in 40A to 44D. The other 35 on the pedal were written in earlier passes and have never been read back, so there is no hash evidence for them and none is claimed. And a matching digest says the pedal holds the intended data; it says nothing about whether the data sounds right, which needs a guitar in the instrument jack.

2026-11-04 · the other 35 read back, and what that found

The twenty had been read back off the hardware; the other 35 never had. Reading all of them found defects in three of the four sets, none of which a sample would have caught.

The 12 tape presets: a fix this page already claimed

This page said the twelve were rebuilt on REVERB TYPE 4 and re-written to the pedal. Nine of the twelve were still on TYPE 3, which is PLATE rather than SPRING. The masters were right all along; the write had not landed. The readback this page cited as proof was TAPE SLAP, which happens to be one of the two that did land. All nine have been rewritten and all twelve now read back matching.

The 12 Mayer, Pantera and Appleseed presets: EQ dropped on purpose, then forgotten

The builder carried the line EQ: ChatGPT gave dB offsets, the Pro scale is unknown, left off. That blocker was removed when the model table was extracted: every band is -16_16_1_0_ with a storage offset of 16. The Appleseed Cast patch's EQ is documented on this page, 100 Hz −2, 250 Hz 0, 630 Hz +1, 1.6 kHz +2, 4 kHz +1 dB, so APPLESEED and its Low Level Owl variant were rebuilt with it and both verify off the device. The Pantera EQ is described in prose only, “pull the middle down a long way”, with no numbers, so it stays off rather than guessed.

The pedal truncates a preset name to 16 characters. “PANTERA FARBEYOND” is 17 and came back as “PANTERA FARBEYON”, so a readback wrote a differently named file and the comparison silently read a stale one. The master is renamed to 16 characters and the builder now truncates and says so.

The 11 El Capistan presets: a block the pedal threw away

CAP WORN TAPE's chorus was not running at the setting it was given. Its MOD block is ANA-CHORUS, which takes RATE, MIX, TONE and DEPTH. The master carried F.BACK, inherited from the reference preset, and no TONE or DEPTH. The pedal rejected the malformed block and substituted its own defaults, so a chorus intended at MIX 8, RATE 6 was running at MIX 50, RATE 50. Rebuilt with the correct fields and verified: the device now reports MIX 8, RATE 6.

A parameter validator now checks every value in all 55 masters against the extracted table, resolving paraPos inheritance, with the 15 factory presets as the control. The factory set shows zero stray fields, which is what makes a stray field a defect rather than a quirk. All 55 masters are now clean.

What is still wrong, and what is now sourced

Three presets do not match: CAP MULTI A, B and C each read back with TIME B exactly 40 ms higher than the master. A round-trip test showed the bias compounds, since writing the value the device reported produced another +40. The test preset was restored to its master, so all three sit in the state they started in.

The range is now sourced. DUAL DELAY TIME B is 40_2500_1_0_ ms in the extracted Pro model index, so an earlier version of this page was wrong to say no source gives it. TIME A carries that identical range and does not drift. The three CAP MULTI presets are also the only ones of the eleven El Capistan patches built on DUAL DELAY, which is why they are the only three holding a TIME B field that can disagree with anything.

The compounding does not identify which side carries the bias. A write that adds the minimum and a readback that adds the minimum each predict a compounding +40, so the round trip cannot separate them, and an earlier version of this page implied more than the test showed. One write does separate them. Set TIME B to 2500, the top of the range. A write-side addition would need 2540, so the pedal clamps and reads back 2500. A readback-side addition reads back 2540, which the range does not allow. No compensation is applied until that write has been run, and it needs the pedal attached, which it is not.

A mistake of mine, and the repair

During the tape rewrite the PRESET list auto-scrolled by one row near the bottom edge, and the last drag of the batch landed on 50D, overwriting CAST MARE with a copy of CAST LOWOWL. The master was safe on disk. 50C was rewritten with the correct CAST LOWOWL and CAST MARE was restored to 50D, both verified by readback. The write script already re-reads the window origin before each drag; it does not yet re-read the list's scroll position, which is the hole this went through. Single writes are now followed by a screenshot check before the next one.

Where the 55 stand. 52 of 55 read back off the hardware byte-identical to their masters. The three exceptions are the TIME B behaviour above. Nothing here says how any of it sounds.