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.
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.
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.
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.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.GE150PLUS.app for firmware flashing only.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.
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.
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.
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.
| Item | On this Mac | Newest published | Verdict |
|---|---|---|---|
| GE150 Plus editor | V2.1.3, from config.ini AppVersion=V2.1.3 | V2.1.3, Mac package dated 2026-08-13 | Current |
| GE150 Plus firmware | GE150PLUS_V2.1.3.mr, 1,158,272 bytes, bundled | V2.1.3, release notes stamped 2026.8 | Current |
| GE150 Pro firmware | n/a | V2.1.4 | Different model |
| GE150 Max firmware | n/a | V2.1.6 | Different model |
| Original GE150 editor | Not installed | Separate download, separate page | See 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.
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:
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.
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.
| Item | Value |
|---|---|
| Archive | GE150_Pro_V2.1.4_Mac.zip, 72,913,255 bytes, HTTP 200 |
| Installer | GE150PRO_V2.1.4_Mac_Setup.dmg, 73,054,984 bytes |
| Notes | GE150_Pro_Firmware_V2.1.4_Update.html, stamped 2026.8 |
| What V2.1.4 adds | NAM A2 model conversion and import, plus unspecified bug fixes |
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.
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.
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.
A full device backup exists and was content-checked rather than assumed:
| Check | Result |
|---|---|
| Container header | MOOER / MOOER_GE150PRO / V1.0.0 |
| Size | 57,898 bytes |
| Real preset names found inside | 18 of 18 checked, including NovemberRain, Crazy Diamond, Hotel Cali, Room335 |
| Presets catalogued | 203 extracted to a named-Table .xlsx |
| Two copies on the Desktop | byte-identical, md5 0c56d37de1b01d88d7ac8ea46307bd6a |
| Safe copy | ~/Projects/_outputs/ge150/backups/GE150PRO-device-backup-2026-11-02.backup |
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.
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.
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.
| # | Name | Target | Time ms | Dly Lvl | Fdbk | Rev Lvl | Decay | Gain |
|---|---|---|---|---|---|---|---|---|
| 01 | CAST MARE | Appleseed Cast, Mare Vitalis | 450 | 34 | 38 | 22 | 38 | 30 |
| 02 | CAST LOWOWL | Appleseed Cast, Low Level Owl | 520 | 42 | 48 | 30 | 48 | 27 |
| 03 | CAST SKY | Appleseed Cast, brighter | 380 | 31 | 34 | 20 | 33 | 31 |
| 04 | CAST SWELL | Appleseed Cast, largest wash | 610 | 46 | 57 | 32 | 55 | 25 |
| 05 | PAVE SLANT | Pavement, Slanted | 285 | 21 | 20 | 13 | 24 | 34 |
| 06 | PAVE CROOK | Pavement, Crooked Rain | 355 | 24 | 27 | 14 | 26 | 37 |
| 07 | PAVE GROUND | Pavement, Brighten the Corners | 430 | 26 | 31 | 17 | 30 | 35 |
| 08 | BUILT TAPE | Built to Spill | 470 | 31 | 39 | 23 | 41 | 29 |
| 09 | MODEST TAPE | Modest Mouse | 335 | 28 | 35 | 18 | 31 | 32 |
| 10 | TAPE SLAP | Short slapback | 118 | 20 | 13 | 12 | 22 | 30 |
| 11 | TAPE DUB | Dub repeats | 650 | 39 | 64 | 25 | 46 | 24 |
| 12 | TAPE HUGE | Largest ambient tape | 720 | 48 | 70 | 36 | 62 | 23 |
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 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.
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.
| Model | YELLOW COMP |
|---|---|
| Sustain | 35 |
| Level | 55 |
| Model | FULLDRV |
|---|---|
| Drive | 18 |
| Tone | 48 |
| Level | 58 |
| Model | 65 USTW, Fender 1965 Twin Reverb |
|---|---|
| Gain | 32 |
| Bass | 48 |
| Mid | 54 |
| Treble | 58 |
| Presence | 52 |
| Master | 80 |
| Model | USBASS410, Fender Bassman 4x10 |
|---|
| Model | NOISE KILLER |
|---|---|
| Threshold | 18 |
| Model | MOOER G |
|---|---|
| 100 Hz | -2 dB |
| 250 Hz | 0 dB |
| 630 Hz | +1 dB |
| 1.6 kHz | +2 dB |
| 4 kHz | +1 dB |
| Model | OFF |
|---|
| Model | TAPE |
|---|---|
| Level | 34 |
| Feedback | 38 |
| Time | 450 ms |
| SUB-D | 1/4 |
| Model | SPRING |
|---|---|
| Level | 22 |
| Decay | 38 |
| Tone | 45 |
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.
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.
| Preset | Amp | Gain | Bass | Mid | Treble | Pres | Mst | Front end and time based |
|---|---|---|---|---|---|---|---|---|
| 1. Continuum clean Slow Dancing territory | CAROL CL | 25 | 45 | 58 | 55 | 45 | 80 | YELLOW 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 CL | 32 | 48 | 64 | 50 | 40 | 80 | 808 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 CL | 30 | 42 | 68 | 58 | 52 | 82 | GOLD CLON at Drive 25, Tone 48, Level 70. The pick attack carries this one. |
| 4. Big live lead | CAROL OD | 38 | 45 | 62 | 52 | 48 | 78 | 808 in front, Drive 20, Level 72. About 380 ms delay with low feedback. Broader and more sustaining. |
| 5. Dead and Company | 65 US TW | 24 | 40 | 62 | 58 | 55 | 85 | PURE BOOST with very little added gain, enough output to push the amp model. Reverb restrained. |
| 6. Sob Rock polished clean | 65 US DX | 24 | 46 | 55 | 57 | 47 | 78 | YELLOW 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.
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.
| Setting | Base | Cowboys From Hell | Vulgar Display | Far Beyond Driven |
|---|---|---|---|---|
| Gain | 55 | 48 | 55 | 60 |
| Bass | 58 | 58 | 58 | 62 |
| Mid | 24 | 32 | 22 to 25 | 18 |
| Treble | 70 | 70 | 70 | 68 |
| Presence | 72 | 72 | 72 | 75 |
| Noise gate | 60 to 70 | 60 to 70 | 60 to 70 | 70 |
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.
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 basis | GE150 setting |
|---|---|
| Fixed A, short head | Tape Delay, SUB-D 1/16, Feedback 15 to 25, Level 20 to 25 |
| Fixed B, medium head | Tape Delay, SUB-D dotted 1/8, Feedback 25 to 35, Level 22 to 28 |
| Fixed C, long head | Tape Delay, SUB-D 1/4, Feedback 35 to 45, Level 25 to 32 |
| Multi A, heads 1 and 2 | Dual Delay, 1/16 plus dotted 1/8, Feedback 25 to 35 |
| Multi B, heads 2 and 3 | Dual Delay, dotted 1/8 plus 1/4, Feedback 30 to 40 |
| Multi C, heads 1 and 3 | Dual Delay, 1/16 plus 1/4, Feedback 30 to 40 |
| Worn tape wobble | Tape Delay, 450 to 650 ms, Feedback 40, Level 28, Ana Chorus Rate 6, Depth 10, Mix 8 |
| Dark aged repeats | Analog Delay, 450 to 600 ms, Feedback 35 to 45, Level 25 |
| Tape echo with spring | Tape Delay as above, Spring Reverb Level 10 to 18, Decay 20 to 35 |
| Runaway tape feedback | Tape Delay, Feedback 90 to 100, Level 15 to 20, expression pedal assigned to Feedback |
| Sound on Sound loop | GE150 Looper with Tape Delay around 400 ms, Feedback 45, Level 25 |
| Crinkle, bias, head wear | No 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.
| Section | Source | Kind of evidence |
|---|---|---|
| Faults 1 to 3, the fix | system_profiler SPUSBDataType, ps aux, plutil, codesign, lipo on this Mac | Observed command output, 2026-11-02 |
| Installed versions | /Applications/GE150PLUS.app/Contents/MacOS/config.ini and Firmware/GE150PLUS_V2.1.3.mr | Files on disk |
| V2.1.3 release notes | ~/Downloads/GE150_Plus_V2.1.3_Mac/GE150_Plus_Firmware_V2.1.3_Update.html | Mooer's own notes, shipped in your download |
| Newest published versions | Mooer GE150 Plus/Pro/Max download page | Web search, 2026-11-02 |
| Download date and chain | Firefox places.sqlite | Browser history, 2026-10-31 16:48 |
| 12 preset pack | ChatGPT code-interpreter cell, conversation Mooer GE150 Pantera Tone | Recovered generator source, rebuilt and validated locally |
| Appleseed Cast patch | Same conversation, assistant message with the full block table | Recovered text |
| Mayer presets | ChatGPT conversation Mayer Sound Variations | Recovered text |
| Pantera settings | Same Pantera conversation | Recovered text |
| El Capistan map | ChatGPT conversation Mooer GE150 Versus El Capistan | Recovered text |
| Effect and amp model names | ChatGPT conversation GE-150 Effects List | Recovered text, 151 models across 9 blocks |
.mo files import at all depends on section 3.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.
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.
GE150PRO.app/Contents/MacOS/GE150PRO.app/Contents/MacOS/file/, which is why a second attempt
reported that they already exist.device stays MOOER GE150. That is the only MOOER device string in the Pro binary.~/Projects/_outputs/ge150/mo-pro/, twelve files, schema and app renamed, every
other value untouched.That diagnosis was incomplete. See the next card for the actual cause.
Two things were wrong, and the second one is the whole story.
effectModule keys are the
numeric strings "0" through "8", not module names, and its fileInfo reads
device: "GE150PRO", app: "GE150PRO Edit", schema: "GE150PRO Preset".
Parameter names differ too: F.BACK rather than FEEDBACK, P.DELAY rather
than PRE DELAY.preset_name. Proven with a two-file
control: ZZTESTA.mo holding preset_name "ZZTESTA" appeared in the COMPUTER list.
zz_test_b_file.mo holding "ZZTESTB", byte-identical otherwise, did not. The same pair of
outcomes repeated with CAST MARE.mo against 01_CAST_MARE.mo. This is why every earlier
import copied the file into the library and still showed nothing..backup files restore.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/.
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 C | 37C CAP MULTI B | 37D CAP MULTI A | 38A CAP FIXED C |
| 38B CAP FIXED B | 38C CAP FIXED A | 38D CAP WORN TAPE | 39A CAP SOUND ON SND |
| 39B CAP RUNAWAY | 39C CAP TAPE SPRING | 39D CAP DARK AGED | 40A VOLTA TETRA |
| 40B ZEP ACHILLES | 40C ZEP KASHMIR | 40D TOOL PNEUMA RHY | 41A VOLTA CYGNUS |
| 41B SHINER EGG | 41C TOE GOODBYE | 41D TOOL PNEUMA CLN | 42A RH WEIRD FISH |
| 42B RUSH LIMELIGHT | 42C RUSH YYZ | 42D KC SCHIZOID | 43A RH PARANOID |
| 43B FAILURE SPACE | 43C KC FRACTURE | 43D DEFT DIG BATH | 44A DT PULL UNDER |
| 44B EITS BIRTH | 44C APC JUDITH | 44D APC 3 LIBRAS | 45A APPLESEED |
| 45B MAYER BIG LEAD | 45C MAYER BELIEF | 45D MAYER GRAVITY | 46A MAYER DEAD |
| 46B MAYER CONTINUUM | 46C PANTERA COWBOYS | 46D MAYER SOB ROCK | 47A PANTERA VULGAR |
| 47B PANTERA RHYTHM | 47C PANTERA FARBEYOND | 47D LOW LEVEL OWL | 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 |
Masters: ~/Projects/_outputs/ge150/mo-pro-final/ (the tape pack) and
~/Projects/_outputs/ge150/mo-pro-rest/ (Mayer, Pantera, Appleseed).
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.
| Amp | Was | Now | Mic | Distance | Factory source |
|---|---|---|---|---|---|
| UK30 CL | EL34 | EL84 | MD441 | 10 → 25 | UK 30 A |
| TRI REC DS | EL34 | 6L6 | MD441 | 10 → 50 | Tri Rect Lead |
| JAZZ 120 | EL34 | OFF | SM57 | 10 → 100 | Jazz 120 |
| MARKV DS | EL34 | 6L6 | SM57 | 10 → 64 | Mark4 Lead |
| HWT 103 | EL34 | EL34 | SM57 | 10 → 46 | HWT 103 |
| PLX100 | EL34 | EL34 | MD421 | 10 → 50 | Brit Plexi Dist |
| J800 | EL34 | EL34 | SM57 | 10 → 44 | Brit 800 Drive |
| 65 US DX | EL34 | 6V6 | SM57 | 10 → 39 | 65 Deluxe |
| HUGEN DS | EL34 | EL34 | SM57 | 10 → 55 | Hugen 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).
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.
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.
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).
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.
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 prints | Hits in the table | The editor prints | Hits |
|---|---|---|---|
| 65 US DLX | 0 | AMP 01: 65 US DX | 1 |
| US Bass 410 | 0 | CAB 03: US BASS 410 | 1 |
| Full Drv | 0 | DS 13: FULL DRV | 1 |
| Yellow comp | 0 | FX 07: YELLOW COMP | 1 |
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.
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.
| Slot | Preset | EQ off the device, stored | sha256 |
|---|---|---|---|
| 43C | KC FRACTURE | 100Hz 14, 250Hz 16, 630Hz 18, 1.6KHz 18, 4KHz 17 | 7bc1e038… |
| 44D | APC 3 LIBRAS | 100Hz 14, 250Hz 15, 630Hz 16, 1.6KHz 17, 4KHz 18 | 9898501a… |
| 42C | RUSH YYZ | 100Hz 16, 250Hz 15, 630Hz 19, 1.6KHz 18, 4KHz 17 | 19d84e50… |
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.
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.
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.
| Slot | Preset | Bytes | sha256 of the master | Device readback |
|---|---|---|---|---|
| 40A | VOLTA TETRA | 2384 | 67db5e7b37cc2614fb634601f7bcc30a89cd9614623bb246ad94168fa6c0f09b | match |
| 40B | ZEP ACHILLES | 2384 | 85c9080f54db504484be62091351cc2e9a65f24fbb584c8c421318eaba7a69a6 | match |
| 40C | ZEP KASHMIR | 2381 | bcdae2e84fe8b7de88819c3cc3edd272538c13d5df160dd0854c6d9124c289c3 | match |
| 40D | TOOL PNEUMA RHY | 2388 | 81cb93c94021abdef48d71b8533c21e4c54a4d2c5af268120c06d9bdd8ad09d9 | match |
| 41A | VOLTA CYGNUS | 2383 | 90599567745b39ff588c483da40804d56ce745c45d89d818aab368ef6eb0c51c | match |
| 41B | SHINER EGG | 2381 | 212b7dff00dec06ec421f7d2d2fea89afffdf19c2ca3f33a077e355ef8664519 | match |
| 41C | TOE GOODBYE | 2411 | 3243e66f5ed2ad30431339e532f91edc5fce0f0001a0a0beb604d8b27fafe62d | match |
| 41D | TOOL PNEUMA CLN | 2417 | f513f74f2c813f65cb4c2393acf5d0d436cfa7cda9a2ba5dccc2c708e8d62927 | match |
| 42A | RH WEIRD FISH | 2414 | 8ed987e28a88b733b465b7322ebfe164c0a3a5d57e576a18093d592d4d06af1b | match |
| 42B | RUSH LIMELIGHT | 2412 | 34ac1417a6a241d412cde8a85f23c97f37006280632aadab5bfe87c22a507669 | match |
| 42C | RUSH YYZ | 2382 | 19d84e50433d2a7769e39443f3b41dbc4786d6228b3716c9a60dacf49d8fae20 | match |
| 42D | KC SCHIZOID | 2382 | 3da10ea075597bcab9e111f79b0afa67c66b9c9f61478988b730e551a9ffd5b5 | match |
| 43A | RH PARANOID | 2382 | 512993442d21533fd713fb1e83e946b5c5f91ad4ad13ae280b42a2d8ddc126fb | match |
| 43B | FAILURE SPACE | 2412 | 4e6735096d803142f624ece544a9fc0eecf4e182df9a45405eebe38a2ad5c817 | match |
| 43C | KC FRACTURE | 2384 | 7bc1e038590125d031c037cddef0183c8b31f32ba2148db66e0a51edd7662473 | match |
| 43D | DEFT DIG BATH | 2412 | 933d817de5c3974c8936813839dbf592b4666a8951133c5eeb21c2dc814fa0c2 | match |
| 44A | DT PULL UNDER | 2383 | 7cf4f60cab85708b349332f69708afa9dd92ad40dd4cc532b18adc9d13dd3820 | match |
| 44B | EITS BIRTH | 2420 | 5e048fcdc52e96ce0352346e6424f681b3634d955a5f95ce359e79f58708b9bc | match |
| 44C | APC JUDITH | 2381 | 28c322769103377f73f4a73361f41b6e35fd76c52322cc02ac76187fd42b7dd9 | match |
| 44D | APC 3 LIBRAS | 2413 | 9898501a3227aa8b41778c6758da40fbe0de61d22f35e87b6426bc90b7508b90 | match |
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.
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.
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 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.
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.
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.
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.