Meris SysEx

Meris documentation:

Disclaimer: the information in this page is not "official". Always check the documentation that came with your Meris pedal as well as the Meris website.

Generic MIDI SysEx specification

Ref: https://www.midi.org/specifications/item/table-1-summary-of-midi-message

A MIDI System Exclusive message has the following format:

N is the number of bytes of the messages.

OffsetDataMerisDescription
0F0Mark the start of the SysEx message
1id0x00Manufacturer's ID
2id0x20Manufacturer's ID
3id0x10Manufacturer's ID
4..N-2xxdata (N-5 bytes)
N-1F7Mark the end of the SysEx message

Note: "Japanese Group" manufacturers have only one ID byte. See [https://www.midi.org/specifications/item/manufacturer-id-numbers] for more details.

Manufacturer ID used by the Meris pedals is 0x00 0x20 0x10 (in decimal: 00 32 16)

Meris SysEx format

  • Offset: index from the start of the SysEx data. First byte (0xF0) has offset 0.
  • Bytes: number of bytes to consider for this parameter
OffsetBytesDescriptionValue(s)
01Start of the SysEx message0xF0
13Manufacturer ID0x00 0x20 0x10
41Prod ID (user definable, matches midi channel - 1)0..15
51Group ID01 = pedal series
61Model number0 = Ottobit Jr
1 = Mercury7
2 = Polymoon
3 = Enzo
71Commandsee table below
81Preset number0..15
9......data......
1End of the SysEx message0xF7

Command byte

CommandValueDescription
Preset Request0x25Ask the pedal to send back the data for the current preset. Please see the notes after this table.
The pedal will send back the data with a Preset Data message.
Preset Data0x26The sysex message contains the data for a preset. The pedal will immediately applies these settings.
Globals Request0x27Ask the pedal to send back its global settings.
Globals Data0x28The sysex message contains the global settings data
Preset Write0x29Ask the pedal to save the current settings to memory (this will overwrite the currently selected preset).
Global setting Write0x2AThe sysex contain the new value for a specific global setting.

Notes:

  • The Prod ID byte must match the pedal MIDI channel (0=ch. 1, 1=ch. 2, ...).
  • The Preset Request command sends back the saved values of the current preset number. The command is "read saved preset", not "read current values".
  • The response to a Preset Request is a Preset Data message, with command byte 0x26.
  • The Preset Write command is the sysex version of the Press and hold the ALT button on the pedal.
  • To read or write a specific preset, one has to first set a Program Change (PC) command to select the preset, then send the Preset Request command.
  • The pedal sends back all the MIDI message it receives. These echo messages can simply be ignored.

Examples:

Examples with an Enzo pedal set to channel 1.

MessageDescription
F0 00 20 10 00 01 03 25 F7Read current Enzo preset (00=chan 1, 01=pedal, 03=Enzo, 25=read-preset)
F0 00 20 10 00 01 03 29 F7Save current preset to memory (00=chan 1, 01=pedal, 03=Enzo, 29=preset-write)

Loading and saving presets

The Read and Write commands work with the presets saved in the pedal's permanent memory, not the currents settings of the pots and knobs, that may be different from the one saved in the memory.

The preset is always the one currently selected. In order to work with a specific preset (read it, write it), the preset must first be selected with a Program Change command.

Send and write presets:

To send a preset to the pedal, simply send a Preset Data message. This will overwrite the current settings. This does not save the preset in the permanent memory of the pedal. To do that, you have to send a Preset Write message or to press and hold the Alt button on the pedal.

Read presets:

The Request Preset command must be used to read the currently selected preset. The pedal will sent the saved data for that preset.

To read specific preset, a Program Change (PC) command has to be sent first in order to select the preset.

Preset read examples

We use SendMIDI and ReceiveMIDI utilities.

Mercury7 and Enzo ate connected to the MIDI ports of a Focusrite Scarlett interface. Mercury is set to channel 3 and Enzo is set to channel 2.

Mercury7

Mercury7 on channel 3 connected to the MIDI ports of a Focusrite Scarlett interface.

$ sendmidi dev scarlet system-exclusive hex 00 20 10 02 01 01 25

$ receivemidi dev scarlet
system-exclusive hex 00 20 10 02 01 01 26 08 7F 50 70 7F 3F 7F 00 04 58 7F 3F 00 7F 7F 00 00 00 58 50 70 7F 50 7F 00 04 00 7F 3F 00 dec

Enzo

$ sendmidi dev scarlett system-exclusive hex 00 20 10 01 01 03 25

$ receivemidi dev scarlet
system-exclusive hex 00 20 10 01 01 03 26 0A 78 33 7F 7F 41 39 00 00 66 00 00 53 7F 00 00 00 3F 7F 33 7F 7F 41 39 00 00 66 00 00 53 dec

Enzo preset data format

  • Offset: index from the start of the SysEx data. First byte (0xF0) has offset=0.
  • Bytes: number of bytes to consider for this parameter
OffsetBytesDescription
01Start of the SysEx message (0xF0)
13Manufacturer ID = 0x00 0x20 0x10
41Prod ID (user definable, matches midi channel - 1)
51Group ID (01 = pedal series)
61Model # (0=Ottobit Jr, 1=Mercury7, 2=Polymoon, 3=Enzo)
71Command (see table above)
81Preset number
91Pitch (CC 16)
101Filter (CC 17)
111Mix (CC 18)
121Sustain (CC 19)
131Filter envelope (CC 20)
141Modulation (CC 21)
151Portamento (CC 22)
161Filter type (CC 23)
171Delay level (CC 24)
181Ring modulation (CC 25)
191Filter bandwidth (CC 26)
201Delay feedback (CC 27)
211Bypass (CC 14)
221Envelope type (CC 9)
231Synth mode (CC 29)
241Waveshape (CC 30)
251Tempo (CC 15)
261Pitch (CC 16) - second value when using EXP
271Filter (CC 17) - second value when using EXP
281Mix (CC 18) - second value when using EXP
291Sustain (CC 19) - second value when using EXP
301Filter envelope (CC 20) - second value when using EXP
311Modulation (CC 21) - second value when using EXP
321Portamento (CC 22) - second value when using EXP
331Filter type (CC 23) - second value when using EXP
341Delay level (CC 24) - second value when using EXP
351Ring modulation (CC 25) - second value when using EXP
361Filter bandwidth (CC 26) - second value when using EXP
371Delay feedback (CC 27) - second value when using EXP
1End of the SysEx message (0xF7)

Mercury7 preset data format

  • Offset: index from the start of the SysEx data. First byte (0xF0) has offset=0.
  • Bytes: number of bytes to consider for this parameter
OffsetBytesDescription
13Manufacturer ID = 0x00 0x20 0x10
41Prod ID (user definable, matches midi channel - 1)
51Group ID (01 = pedal series)
61Model # (0=Ottobit Jr, 1=Mercury7, 2=Polymoon, 3=Enzo)
71Command
81Preset number
91Space Decay (CC 16)
101Modulate (CC 17)
111Mix (CC 18)
121Lo Freq (CC 19)
131Pitch Vector (CC 20)
141Hi Freq (CC 21)
151Predelay (CC 22)
161Mod Speed (CC 23)
171Pitch Vector Mix (CC 24)
181Density (CC 25)
191Attack Time (CC 26)
201Vibrato Depth (CC 27)
211Bypass (CC 14)
221Swell (CC 28)
231Algorithm (CC 29)
241not used (always 0)
251not used (always 0)
261Space Decay (CC 16) - second value when using EXP
271Modulate (CC 17) - second value when using EXP
281Mix (CC 18) - second value when using EXP
291Lo Freq (CC 19) - second value when using EXP
301Pitch Vector (CC 20) - second value when using EXP
311Hi Freq (CC 21) - second value when using EXP
321Predelay (CC 22) - second value when using EXP
331Mod Speed (CC 23) - second value when using EXP
341Pitch Vector Mix (CC 24) - second value when using EXP
351Density (CC 25) - second value when using EXP
361Attack Time (CC 26) - second value when using EXP
371Vibrato Depth (CC 27) - second value when using EXP

MIDI resources

  • MIDI specifications: https://www.midi.org/specifications
    • https://www.midi.org/specifications/item/the-midi-1-0-specification
    • https://www.midi.org/specifications/category/reference-tables
  • Manufacturer MIDI ID Numbers: https://www.midi.org/specifications/item/manufacturer-id-numbers
  • http://www.personal.kent.edu/~sbirch/Music_Production/MP-II/MIDI/midi_system_exclusive_messages.htm
  • SendMIDI and ReceiveMIDI tools:
    • https://github.com/gbevin/SendMIDI
    • https://github.com/gbevin/ReceiveMIDI
© StudioCode - Made with 11ty and tailwindcss.