dexter
2010-07-06 01:10:52
Hi guys,
I'm a happy MPD24 owner since 2007. My controller lives a lot, sees many party and experiments ...
My great friend MidiOX watches the input ... now I'll move the K1 knob - CH3 #10 controller ...
Noting strange. Realy. Now, let's press down the so widely discussed MMC, then CC << button :
Great! My cables are well connected!
If you ares still here, you already asking : WTF?
Next, let's use our MidiOX and dump the magic sysex code below : (on the MPD, not your MidiYoke)
Now, let's move the same knob, K1, starting from 0 and going upwards:
What is going here? The still sends it's actual position, the B1 oo 05, and a SYSEX code SYSX: F0 47 00 68 41 00 02 oo pp F7, where oo is the controller code 1-7 for the knobs, 8 - 0D for the faders and pp is the controller value, from 0 to 7F. All the sysex data dumped is common for ALL presets.
Now, let's press the << button :
The B0 Control Change value, which depends from the preset is here, but we have the press up and down position also as SYSEX ...![Very Happy :D](../../../images/smilies/icon_biggrin.gif)
Now press ANY of the other buttons, like FULL LEVEL, Preview, ABCD ...![Very Happy :D](../../../images/smilies/icon_biggrin.gif)
La vie est belle, non?
I'll let you discover the oo et pp values of the Sysex code for each button.
Stay connected for few seconds more before rewriting your Bome's rules.
Let's go back to the K1 knob. push it downwards ... in a "normal mode, noting happens, the B0 goes to 00 (in my preset). But now he continues to send its position :
What does it means? That's right, A REAL INFINITE CONTROLLER :
Now, my example : making a 4 channel EQ, on for channels :
A snapshot will explain this better :
![Image](http://xdex.bassheads.org/media/cut_a.jpg)
Each send button, in the following order ECDB (standing for lo-lowmid-himid-hi) sends to a return channel with a lowpass-bandpass-bandpass-hipass 48db/oct filters, with a phase compensation, exciters, separate comp per channel etc. Sending all of them to Master, the A send remains unused. I'll not explain in more depth the setup of Ableton Live.All sends are set as Relative (lin) Signed bit 2. This is important for the following bome's setup :
How Does it works: You press and hold PREVIEW and select Between ABCD, for example A and C will route the K1-3-5-7 to the sends of channel 1 in live, and the K2-4-6-8 to channel 3 in ableton. Pressing Prev AB=ch 1 - 2, CD = 34 etc etc ...
Pressing only preview inits the setup; the FULL LEVEL also plays as another shift: FL + A sends all values to max, as relative controllers it sends few times the controller upwards; FL + 3 does the same with ch 3 etc... My PRESET button is set as a global SHIFT, and I use it to send a KILL EQ actions:
Here comes the Bome code. Come parts are inspired from this topic : http://www.bome.com/forums/viewtopic.php?f=3&t=2347
Enjoy
Note that this is a first cut, now I'm preparing an ableton Control Surface Setup in Python to handle all that mess. It will take a while to complete it !
And, at last, there is another sysex to dump :
It sends only the buttons sysex, not the controllers
I sniffed a lot more code from the MPD, but the first one is the greatest one![Wink :wink:](../../../images/smilies/icon_wink.gif)
Join me at lacagedesrats {at} free {dot} fr
None of this information comes from AKAI, VYZOR or any other. The code was recuperated using MidiOX, MidiYoke, SendSyex from Bome and the Vyzex editor.
I'm a happy MPD24 owner since 2007. My controller lives a lot, sees many party and experiments ...
My great friend MidiOX watches the input ... now I'll move the K1 knob - CH3 #10 controller ...
Code: Select all
TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT
0000422C 5 -- B2 0A 01 3 --- CC: PAN
00004262 5 -- B2 0A 02 3 --- CC: PAN
00004341 5 -- B2 0A 03 3 --- CC: PAN
000043B1 5 -- B2 0A 04 3 --- CC: PAN
00004411 5 -- B2 0A 05 3 --- CC: PAN
000044A2 5 -- B2 0A 06 3 --- CC: PAN
0000454F 5 -- B2 0A 07 3 --- CC: PAN
000045FC 5 -- B2 0A 08 3 --- CC: PAN
Code: Select all
00039A98 5 -- B0 73 7F 1 --- Control Change
If you ares still here, you already asking : WTF?
Next, let's use our MidiOX and dump the magic sysex code below : (on the MPD, not your MidiYoke)
Code: Select all
F0 47 00 68 30 00 04 01 00 27 38 F7
Code: Select all
TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT
00095F87 5 -- B1 0A 01 2 --- CC: PAN
00095F88 5 -- F0 Buffer: 10 Bytes System Exclusive
SYSX: F0 47 00 68 41 00 02 00 68 F7
000961D0 5 -- B1 0A 02 2 --- CC: PAN
000961D0 5 -- F0 Buffer: 10 Bytes System Exclusive
SYSX: F0 47 00 68 41 00 02 00 69 F7
000962B0 5 -- B1 0A 03 2 --- CC: PAN
000962B0 5 -- F0 Buffer: 10 Bytes System Exclusive
SYSX: F0 47 00 68 41 00 02 00 6A F7
000964B8 5 -- B1 0A 04 2 --- CC: PAN
000964B9 5 -- F0 Buffer: 10 Bytes System Exclusive
SYSX: F0 47 00 68 41 00 02 00 6B F7
000965A1 5 -- B1 0A 05 2 --- CC: PAN
000965A1 5 -- F0 Buffer: 10 Bytes System Exclusive
SYSX: F0 47 00 68 41 00 02 00 6C F7
00096821 5 -- B1 0A 06 2 --- CC: PAN
00096822 5 -- F0 Buffer: 10 Bytes System Exclusive
SYSX: F0 47 00 68 41 00 02 00 6D F7
Now, let's press the << button :
Code: Select all
TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT
000DA0AD 5 -- B0 73 7F 1 --- Control Change
000DA0AD 5 -- F0 Buffer: 10 Bytes System Exclusive
SYSX: F0 47 00 68 40 00 02 0A 01 F7
000DA55B 5 -- F0 Buffer: 10 Bytes System Exclusive
SYSX: F0 47 00 68 40 00 02 0A 00 F7
The B0 Control Change value, which depends from the preset is here, but we have the press up and down position also as SYSEX ...
![Very Happy :D](../../../images/smilies/icon_biggrin.gif)
Now press ANY of the other buttons, like FULL LEVEL, Preview, ABCD ...
![Very Happy :D](../../../images/smilies/icon_biggrin.gif)
La vie est belle, non?
I'll let you discover the oo et pp values of the Sysex code for each button.
Stay connected for few seconds more before rewriting your Bome's rules.
Let's go back to the K1 knob. push it downwards ... in a "normal mode, noting happens, the B0 goes to 00 (in my preset). But now he continues to send its position :
Code: Select all
TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT
001308ED 5 -- F0 Buffer: 10 Bytes System Exclusive
SYSX: F0 47 00 68 41 00 02 00 7F F7
00130C26 5 -- F0 Buffer: 10 Bytes System Exclusive
SYSX: F0 47 00 68 41 00 02 00 7E F7
00130EA0 5 -- F0 Buffer: 10 Bytes System Exclusive
SYSX: F0 47 00 68 41 00 02 00 7D F7
0013117A 5 -- F0 Buffer: 10 Bytes System Exclusive
SYSX: F0 47 00 68 41 00 02 00 7C F7
00131416 5 -- F0 Buffer: 10 Bytes System Exclusive
SYSX: F0 47 00 68 41 00 02 00 7B F7
00131690 5 -- F0 Buffer: 10 Bytes System Exclusive
SYSX: F0 47 00 68 41 00 02 00 7A F7
Now, my example : making a 4 channel EQ, on for channels :
A snapshot will explain this better :
![Image](http://xdex.bassheads.org/media/cut_a.jpg)
Each send button, in the following order ECDB (standing for lo-lowmid-himid-hi) sends to a return channel with a lowpass-bandpass-bandpass-hipass 48db/oct filters, with a phase compensation, exciters, separate comp per channel etc. Sending all of them to Master, the A send remains unused. I'll not explain in more depth the setup of Ableton Live.All sends are set as Relative (lin) Signed bit 2. This is important for the following bome's setup :
How Does it works: You press and hold PREVIEW and select Between ABCD, for example A and C will route the K1-3-5-7 to the sends of channel 1 in live, and the K2-4-6-8 to channel 3 in ableton. Pressing Prev AB=ch 1 - 2, CD = 34 etc etc ...
Pressing only preview inits the setup; the FULL LEVEL also plays as another shift: FL + A sends all values to max, as relative controllers it sends few times the controller upwards; FL + 3 does the same with ch 3 etc... My PRESET button is set as a global SHIFT, and I use it to send a KILL EQ actions:
Here comes the Bome code. Come parts are inspired from this topic : http://www.bome.com/forums/viewtopic.php?f=3&t=2347
Code: Select all
---------------------------------------------------------------
Translator 35: 1_UP
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 00 pp F7
Rules:
if h1==127 then exit rules, skip Outgoing Action
qq=h1
ss=hc+176
if pp<qq then exit rules, execute Outgoing Action
if pp>=qq then exit rules, skip Outgoing Action
Outgoing: MIDI ss 00 h0
Translator 36: 3_UP
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 02 pp F7
Rules:
if h3==127 then exit rules, skip Outgoing Action
qq=h3
ss=hc+176
if pp<qq then exit rules, execute Outgoing Action
if pp>=qq then exit rules, skip Outgoing Action
Outgoing: MIDI ss 02 h0
Translator 37: 5_UP
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 04 pp F7
Rules:
if h5==127 then exit rules, skip Outgoing Action
qq=h5
ss=hc+176
if pp<qq then exit rules, execute Outgoing Action
if pp>=qq then exit rules, skip Outgoing Action
Outgoing: MIDI ss 04 h0
Translator 38: 7_UP
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 06 pp F7
Rules:
if h7==127 then exit rules, skip Outgoing Action
qq=h7
ss=hc+176
if pp<qq then exit rules, execute Outgoing Action
if pp>=qq then exit rules, skip Outgoing Action
Outgoing: MIDI ss 06 h0
================
Translator 40: 2_UP
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 01 pp F7
Rules:
if h2==127 then exit rules, skip Outgoing Action
qq=h2
ss=hd+176
if pp<qq then exit rules, execute Outgoing Action
if pp>=qq then exit rules, skip Outgoing Action
Outgoing: MIDI ss 00 h0
Translator 41: 4_UP
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 03 pp F7
Rules:
if h4==127 then exit rules, skip Outgoing Action
qq=h4
ss=hd+176
if pp<qq then exit rules, execute Outgoing Action
if pp>=qq then exit rules, skip Outgoing Action
Outgoing: MIDI ss 02 h0
Translator 42: 6_UP
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 05 pp F7
Rules:
if h6==127 then exit rules, skip Outgoing Action
qq=h6
ss=hd+176
if pp<qq then exit rules, execute Outgoing Action
if pp>=qq then exit rules, skip Outgoing Action
Outgoing: MIDI ss 04 h0
Translator 43: 8_UP
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 07 pp F7
Rules:
if h8==127 then exit rules, skip Outgoing Action
qq=h8
ss=hd+176
if pp<qq then exit rules, execute Outgoing Action
if pp>=qq then exit rules, skip Outgoing Action
Outgoing: MIDI ss 06 h0
================
Translator 45: 1_DOWN
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 00 pp F7
Rules:
if h1==0 then exit rules, skip Outgoing Action
qq=h1
ss=hc+176
if pp<=qq then exit rules, skip Outgoing Action
if pp>qq then exit rules, execute Outgoing Action
Outgoing: MIDI ss 00 h9
Translator 46: 3_DOWN
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 02 pp F7
Rules:
if h3==0 then exit rules, skip Outgoing Action
qq=h3
ss=hc+176
if pp<=qq then exit rules, skip Outgoing Action
if pp>qq then exit rules, execute Outgoing Action
Outgoing: MIDI ss 02 h9
Translator 47: 5_DOWN
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 04 pp F7
Rules:
if h5==0 then exit rules, skip Outgoing Action
qq=h5
ss=hc+176
if pp<=qq then exit rules, skip Outgoing Action
if pp>qq then exit rules, execute Outgoing Action
Outgoing: MIDI ss 04 h9
Translator 48: 7_DOWN
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 06 pp F7
Rules:
if h7==0 then exit rules, skip Outgoing Action
qq=h7
ss=hc+176
if pp<=qq then exit rules, skip Outgoing Action
if pp>qq then exit rules, execute Outgoing Action
Outgoing: MIDI ss 06 h9
================
Translator 50: 2_DOWN
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 01 pp F7
Rules:
if h2==0 then exit rules, skip Outgoing Action
qq=h2
ss=hd+176
if pp<=qq then exit rules, skip Outgoing Action
if pp>qq then exit rules, execute Outgoing Action
Outgoing: MIDI ss 00 h9
Translator 51: 4_DOWN
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 03 pp F7
Rules:
if h4==0 then exit rules, skip Outgoing Action
qq=h4
ss=hd+176
if pp<=qq then exit rules, skip Outgoing Action
if pp>qq then exit rules, execute Outgoing Action
Outgoing: MIDI ss 02 h9
Translator 52: 6_DOWN
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 05 pp F7
Rules:
if h6==0 then exit rules, skip Outgoing Action
qq=h6
ss=hd+176
if pp<=qq then exit rules, skip Outgoing Action
if pp>qq then exit rules, execute Outgoing Action
Outgoing: MIDI ss 04 h9
Translator 53: 8_DOWN
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 07 pp F7
Rules:
if h8==0 then exit rules, skip Outgoing Action
qq=h8
ss=hd+176
if pp<=qq then exit rules, skip Outgoing Action
if pp>qq then exit rules, execute Outgoing Action
Outgoing: MIDI ss 06 h9
================
Translator 55: VALUE & DETECTIONS
Options: stop=false
Incoming: MIDI F0 47 00 68 41 00 02 xx qq F7
Rules:
if xx>7 then exit rules, skip Outgoing Action
if xx==0 then h1=qq
if xx==1 then h2=qq
if xx==2 then h3=qq
if xx==3 then h4=qq
if xx==4 then h5=qq
if xx==5 then h6=qq
if xx==6 then h7=qq
if xx==7 then h8=qq
Outgoing: (none)
Translator 56: MANUAL
Options: stop=false
Incoming: MIDI F0 47 00 68 40 00 02 02 pp F7
Rules:
Label "def valies : 7 et 71"
if pp==0 then h0=7
if pp==0 then h9=71
Label "pedal down = KILL"
if pp==1 then h0=63
if pp==1 then h9=127
Outgoing: (none)
---------------------------------------------------------------
Translator 58: CHANNEL SELECT ABCD
Options: stop=false
Incoming: ABCD, GA SETTING
Rules:
if ha==1 then exit rules, skip Outgoing Action
if hf==1 then exit rules, skip Outgoing Action
if oo<6 then Goto "EXIT"
if oo>9 then Goto "EXIT"
if oo==6 then qq=101
if oo==7 then qq=102
if oo==8 then qq=103
if oo==9 then qq=104
if oo==16 then qq=105
ga=qq-100
exit rules, execute Outgoing Action
Label "EXIT"
exit rules, skip Outgoing Action
Outgoing: MIDI 90 qq 7F 80 qq 00
Translator 59: PRESET BUTTON
Options: stop=false
Incoming: MIDI F0 47 00 68 40 00 02 10 pp F7
Rules:
ha=pp
if pp==1 then Goto "DOWN-ASSIGN"
if pp==0 then Goto "UP-CLEAR"
exit rules, skip Outgoing Action
Label "DOWN-ASSIGN"
hb=0
hc=1
hd=2
exit rules, execute Outgoing Action
Label "UP-CLEAR"
ha=0
Outgoing: (none)
Translator 60: CHANNEL EQ 1 - PREVIEW MODE
Options: stop=false
Incoming: ABCD, GA SETTING
Rules:
if ha==0 then exit rules, skip Outgoing Action
if he==hc then exit rules, skip Outgoing Action
if pp==0 then exit rules, skip Outgoing Action
Label ""
if oo<6 then Goto "EXIT"
if oo>9 then Goto "EXIT"
if oo==6 then qq=101
if oo==7 then qq=102
if oo==8 then qq=103
if oo==9 then qq=104
if oo==16 then qq=105
ga=qq-100
hc=ga+1
he=ga+1
exit rules, execute Outgoing Action
Label "EXIT"
exit rules, skip Outgoing Action
Outgoing: (none)
Translator 61: CHANNEL EQ 2 - PREVIEW MODE
Options: stop=false
Incoming: ABCD, GA SETTING
Rules:
if ha==0 then exit rules, skip Outgoing Action
if pp==0 then exit rules, skip Outgoing Action
if hc==0 then exit rules, skip Outgoing Action
if oo<6 then Goto "EXIT"
if oo>9 then Goto "EXIT"
if oo==6 then qq=101
if oo==7 then qq=102
if oo==8 then qq=103
if oo==9 then qq=104
if oo==16 then qq=105
ga=qq-100
hd=ga+1
exit rules, execute Outgoing Action
Label "EXIT"
exit rules, skip Outgoing Action
Outgoing: (none)
---------------------------------------------------------------
Translator 63: EQ RESET - FULL LEVEL SHIFT
Options: stop=false
Incoming: setting HF global
Rules:
hf=pp
Outgoing: (none)
Translator 64: EQ RESET - MIDI OUT
Options: stop=false
Incoming: MIDI F0 47 00 68 40 00 02 oo pp F7
Rules:
if hf==0 then exit rules, skip Outgoing Action
if pp==0 then exit rules, skip Outgoing Action
if oo<6 then Goto "EXIT"
if oo>9 then Goto "EXIT"
if oo==6 then qq=101
if oo==7 then qq=102
if oo==8 then qq=103
if oo==9 then qq=104
if oo==16 then qq=105
ss=qq+77
exit rules, execute Outgoing Action
Label "EXIT"
exit rules, skip Outgoing Action
Outgoing: MIDI ss 00 7F ss 02 7F ss 04 7F ss 06 7F ss 00 7F ss 02 7F ss 04 7F ss 06 7F ss 00 7F ss 02 7F ss 04 7F ss 06 7F ss 00 7F ss 02 7F ss 04 7F ss 06 7F ss 00 7F ss 02 7F ss 04 7F ss 06 7F
Enjoy
Note that this is a first cut, now I'm preparing an ableton Control Surface Setup in Python to handle all that mess. It will take a while to complete it !
And, at last, there is another sysex to dump :
Code: Select all
F0 47 00 68 30 00 04 01 00 27 08 F7
I sniffed a lot more code from the MPD, but the first one is the greatest one
![Wink :wink:](../../../images/smilies/icon_wink.gif)
Join me at lacagedesrats {at} free {dot} fr
None of this information comes from AKAI, VYZOR or any other. The code was recuperated using MidiOX, MidiYoke, SendSyex from Bome and the Vyzex editor.