Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

02 — MIDI CC / Program Change reference

Everything on this page is confirmed from USB captures (Dual Stomp Lite, firmware V1.1.1, Stomp Manager 1.0.2) unless marked (unverified).

Channels — who talks on which

DirectionMIDI channelStatus bytes
Pedal → host (reports)1B0 (CC), C0 (PC)
Host → pedal (commands)2B1 (CC), C1 (PC)

The pedal reports every change made on the hardware as a CC/PC on channel 1. The official app commands the pedal on channel 2 using the same CC numbers. The pedal does not echo host commands back, but it does report the consequences (e.g. after a model change it sends the new model’s knob values).

For a few controls (0x3B, 0x3F, 0x41, 0x49) the official app mirrors the pedal’s ch-1 report back on ch 2. Doing that is optional, as far as we can tell.

Value conventions

  • Knob/slider values: 0–100, the exact number shown in the app (not 0–127).
  • Enumerations/dropdowns: 0-based index (order = order shown in the app).
  • Module head byte (first CC of each module) = (bypassed ? 0x40 : 0x00) | model_index
    • bit 6 set = module OFF (this is confirmed: turning the amp off sends 0x40, on sends 0x00).
    • bits 0–5 = model index, 0-based (the app’s list is 1-based: app “09. Klone” = model 8).

Program change

MessageMeaning
C0 nn (pedal→host)pedal switched to preset index nn
C1 nn (host→pedal)select preset index nn

nn is 0-based; the app labels presets P01…P99, so P(nn+1). Example: app “P85 DB751 Bass” = index 84 = 0x54. The same 0-based index is used in SysEx preset reads/writes.

After a preset change the pedal sends a burst of CCs with the new preset’s values. The burst appears to contain only values that differ from the previous preset, so keep full state from a SysEx preset read and apply the CCs on top.

Module map

CC 0x3B (page) value == module index. “Head” = model + on/off CC.

Module index (CC 0x3B)ModuleHead CCParam CCsModels
0OD/FX0x000x0C–0x0F16
1AMP0x010x12–0x1730 stock + 10 user (NAM)
2CAB0x020x1A–0x1E30 stock + 10 user (IR)
3MOD0x030x2C–0x2F13
4DELAY0x040x30–0x337
5REVERB0x050x36–0x396
6GATE0x060x08–0x091
7EQ0x070x20–0x2B2
8LOOP (page only)—see Looper
9DRUM (page only)—see Drum

Params are in app display order: first slider = first CC of the range, and so on.


OD/FX — head 0x00, params 0x0C 0x0D 0x0E 0x0F

#AppModel0x0C0x0D0x0E0x0F
001Red CompOUTPUTSENSITIVITY
102RS CompSUSTAINLEVEL
203Yellow DistOUTPUTDistortion
304Boost RCGAINVOLUMEBASSTREBLE
405Boost ACGAINVOLUMEBASSTREBLE
506DS1GAINTONEVOLUME
607TS9DRIVETONELEVEL
708BD2LEVELTONEGAIN
809KloneVOLUMEDRIVETONE
910Ratt2DISTFILTERVOLUME
1011Red DriveDRIVETONELEVEL
1112CruncherVOLUMETONEGAIN
1213MuffVOLUMETONESUSTAIN
1314BoostGAIN BOOST (switch 0/1)VOLUME
1415Face FuzzGAINTONEOUTPUT
1516ST DriveVOLUMEGAINFILTER

AMP — head 0x01, params 0x12–0x17

All amps (stock and user) have the same six knobs:

CC0x120x130x140x150x160x17
KnobGAINBASSMIDDLETREBLEPRESENCEMASTER
#Model#Model#Model
0Black Twin10Mar Plexi10020Fryman HB
1Tweed 5F111Jazz CL21Fryman DS
2Bassguy12Mes Rector22PVH 61
3Prince Rev13Mes MKIV Lead23Eddie 51
4Tweed 5F814Mes MKV Red242Rock J35
5Deluxe Rev15Mes LStar CL25Ampug SV Bass
6Bdotone CL16Cornfed M5026Ampug Port Bass
7Voxy 30HW17ODS-10027FR Bass
8Mar J80018Spawn Qrod28Mes 400 Bass
9Mar J4519Soloist 10029Agula DP751
30–39USER AMP 01–10 (NAM slots, see 05)

CAB — head 0x02, params 0x1A–0x1E

CCControlValues
0x1AMIC0 E906, 1 M160, 2 MD421, 3 R121, 4 SM57, 5 SM58, 6 SM7B, 7 U47
0x1BPOSITION0 EDGE, 1 MIDDLE, 2 CENTER
0x1CLOW CUT (Hz)raw 0–100, raw 0 = 20 Hz (Hz curve unverified, probably a log table 20…1000 Hz)
0x1DHIGH CUT (Hz)raw 0–100, raw 100 = 20000 Hz (unverified curve, probably 5000…20000 Hz)
0x1EVOLUME0–100

User IR slots (models 30–39) hide MIC/POSITION but use the same CCs for LOW CUT/HIGH CUT/VOLUME.

#Model#Model#Model
0Twin 21210Mar V30 41220Fryman 412
1Tweed 11011Jazz 21221Fryman 212
2Bassguy 41012Mes OS 41222PVH 412
3Prince 11213Mes Trad 41223Eddie 412
4Tweed 21014Mes V30 212242Rock 212
5Deluxe 11215Mes EV 11225Ampug 810
6Bdotone 21216Cornfed 21226Ampug 410
7Voxy 21217ODS 21227FR 210
8Mar G12M 41218Spawn 41228Mes 410
9Mar Silver 21219SLO 41229Agula 810
30–39USER IR 01–10 (shown as -- when empty)

MOD — head 0x03, params 0x2C 0x2D 0x2E 0x2F

#Model0x2C0x2D0x2E0x2F
0Chorus-1INTENSITYDEPTHRATE
1Chorus-2RATEDEPTH
2Stereo ChorusINTENSITYWIDTHRATE
3VibratoRATEDEPTH
4DetuneLMIXR
5FlangerLEVELRATEWIDTHFEEDBACK
6Phaser 90SPEED
7Phaser 100INTENSITYSPEED
8Chorus+SPEEDWIDTHMODE (0 CHORUS, 1 FLANGER)INTENSITY
9Uni VibeSPEEDVOLUMEINTENSITYMODE (0 CHORUS, 1 VIBE)
10TremoloRATEDEPTH
11Chorus-3RATEDEPTHTONE
12HarmonyKEY (0–11: C C# D Eb E F F# G Ab A Bb B)MODE (0 MINOR, 1 MAJOR)HARM (0–9: -8TH -6TH -5TH -4TH -3TH 3TH 4TH 5TH 6TH 8TH)MIX

DELAY — head 0x04, params 0x30 0x31 0x32 0x33

#Model0x300x310x320x33
0Analog DelayTIMEFEEDBACKLEVEL
1Digital DelayTIMEFEEDBACKLEVEL
2Mod DelayTIMEFEEDBACKMODLEVEL
3Tape DelayTIMEFEEDBACKLEVEL
4Reverse DelayTIMEFEEDBACKLEVEL
5Pan DelayTIMEFEEDBACKLEVEL
6Physical DelayTIMEFEEDBACKLEVEL

TIME is shown as 0–100 in the app (not ms).

REVERB — head 0x05, params 0x36 0x37 0x38 0x39

#Model0x360x370x380x39
0RoomDECAYTONELEVEL
1HallDECAYTONEPRE DELAY (ms)LEVEL
2PlateDECAYLEVEL
3SpringDECAYLEVEL
4ShimmerLEVELDECAYSHIMMER
5DampLEVELDEPTH

GATE — head 0x06, params 0x08 0x09

Single model (Noise Gate). 0x08 THRESHOLD, 0x09 DECAY. (0x07 is the EQ head, not a gate param.)

EQ — head 0x07, params 0x20–0x2B

Raw 50 = slider centre (presumably 0 dB; the dB scaling is unverified).

#Model0x200x210x220x230x240x250x260x270x280x290x2A0x2B
06-band EQ100Hz220Hz500Hz1.2kHz2.5kHz6.4kHz
110-band EQGAIN31Hz62.5Hz125Hz250Hz500Hz1kHz2kHz4kHz8kHz16kHzVOLUME

Global / transport CCs

CCDirMeaningValues
0x3AbothPreset VOL (top slider in app)0–100
0x3BbothPage / module shown on the pedal. Host→pedal makes the pedal display jump to that modulemodule index (table above)
0x3FbothDrum on/off1 playing, 0 stopped
0x40pedal→hostDrum pattern (flat)style*10 + pattern, 0–99
0x41bothDrum level0–100
0x42pedal→hostLooper REC level0–100
0x43pedal→hostLooper PLAYBACK level0–100
0x44pedal→hostLooper statesee below
0x44host→pedalLooper button commandsee below
0x45pedal→hostTuner: note detected1 detected, 0 released
0x46pedal→hostTuner: pitch class0–11, C=0
0x48pedal→hostTuner: cents0x32 (50) = in tune, lower = flat, higher = sharp (~1 unit/cent, unverified)
0x49bothLooper LOOP SYNC0 Off, 1 On
0x4Apedal→hostLooper LOOP MODE0 NR, 1 AR

Host→pedal 0x40 (drum pattern) and 0x42/0x43 (loop levels) were confirmed on Linux by sending the ch-2 CC and reading 0x19/0x18 back: the values change, and the pedal sends no ch-1 report or drum notify in reply. Host→pedal 0x4A is still unverified (0x18 has no field for the loop mode).

Drum patterns (CC 0x40)

Styles (value / 10): 0 Pop, 1 Rock, 2 Metal, 3 Disco, 4 Funk, 5 Blues, 6 Hip Hop, 7 Jazz, 8 Latin, 9 Metro. Pattern within style = value % 10 (app shows Pop 01…Pop 10). Metro patterns are time signatures: 4/4, 2/4, 3/4, 5/4, 6/8, 7/8, 9/8, 10/8, 11/8, 12/8.

Changing the pattern also makes the pedal send a SysEx drum NOTIFY carrying that pattern’s default BPM (see 03). BPM has no CC; it only travels in SysEx 0x19.

Looper

State report (pedal → host, B0 44 vv): vv = (layer_flags << 4) | state

state (low nibble)meaning
0empty / cleared
1recording
2playing
3overdubbing
4stopped
flags (high nibble)meaning
0x1_an overdub layer is on top (UNDO available)
0x2_base layer only (after the first take, or after an undo; REDO toggles back to 0x1_)

Clean sequence captured: 01 rec → 22 play (base only) → 03 overdub → 12 play (+layer) → undo 22 → redo 12 → 04 stop → 00 clear.

Button commands (host → pedal, B1 44 vv)

vvButton
01REC / PLAY / DUB (record → play → overdub → play …)
02STOP
04CLEAR
08UNDO / REDO

Footswitch behaviour on the pedal (for reference): L = rec/play/dub, hold L = undo, R = stop, hold R = clear.