Skip to content

Commit

Permalink
SysEx and Documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
mungewell committed Nov 20, 2018
1 parent 2b8b111 commit d28f66a
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 41 deletions.
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ a controller for a Digital Audio Workshop.

The configuration file is a propriatory format and specific to the MPD218.

'mpd219.py' is a command line application which can decode/encode the
'mpd218.py' is a command line application which can decode/encode the
configuration files. It may be possible to adjust/tailor the script
for other Akai devices.

Expand Down Expand Up @@ -186,6 +186,7 @@ Tested on MK2, Information for MK1 from:
https://github.com/gljubojevic/akai-mpk-mini-editor

It looks like several other Akai devices follow similar schemes, in
particular the MPD226, MPK-Mini and MPK2. Raise a bug if you'de like
to see a similar script for your device...
particular the MPD226, MPK-Mini (see above) and MPK2.

Raise a bug if you'de like to see a similar script for your device...

46 changes: 27 additions & 19 deletions sysex/sysex_data.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,22 +58,23 @@ Appart from this reformating they appear to be the same.
Global memory seems to be a store of the 'state of things' and can be changed
on the fly.

Changes to the Dial values will be reflected when the next midi data is
sent. Changes the LEDs status will be visible immediately, but cancelled
Changes forced to the Dial values will be reflected when the next midi data is
sent. Changes forced the LEDs status will be visible immediately, but cancelled
when the button is pressed.

```
0x0,00: Device Mode (see below)
..
0x0,03: Full Level. 0x00=off, 0x01=on
0x0,04: Note repeat. 0x00=off, 0x01=on
0x0,04: Note repeat. 0x00=off, 0x01=on (no LED on MPD218)
..
0x0,07: Pad LED mode. 0x00=Normal, 0x01=Preset, 0x02.. Div/Swing/Tempo
0x0,07: Pad LEDs mode. 0x00=Normal, 0x01=ProgSelect (Preset #),
0x02..= NRConfig (Div/Swing/Tempo)
..
0x0,0d-0x0,1e: Set Dial values, CC/Aftertouch
0x0,1f-0x0,30: Set Dial values, repeated???
0x0,31-0x0,42: Dials, INC-DEC-1/2 mode. 0x01 clock, 0x7f anti-clock
0x0,43-0x0,54: Dials, INC-DEC-1/2 mode. 0x01 clock, 0x7f anti-clock
0x0,0d-0x0,1e: Dial values, CC/Aftertouch
0x0,1f-0x0,30: Dial values, repeated???
0x0,31-0x0,42: Dials, INC-DEC-1/2 mode. 0x01 turned clock, 0x7f anti-clock
0x0,43-0x0,54: Dials, INC-DEC-1/2 mode. 0x01 turned clock, 0x7f anti-clock
0x0,55-0x0,64: Read Button Pressure (addr 0x1,2d below will stop notes/midi)
Expand All @@ -91,29 +92,36 @@ when the button is pressed.
0x1,29: WARNING unit freaks out, might be minimum pressure for NoteOn. default=0x15
0x1,2a: Note Off level? default 0x11, 0x00 keeps LEDs on and no note off is sent
..
0x1,2c: Midi Channel? default 0x09 - channel is normally pad/dial specific
0x1,2c: Midi Common Channel? default 0x09 - normally pad/dial specific
0x1,2d: Midi Output?. USB=0x00, ?=0x01 (stops Notes/CC/etc, SysEx still to USB)
..
0x1,32: Swing? default 0x32=50
0x1,2f: Tap Average. 2-4 taps
..
0x1,32: ? default 0x32=50
..
0x1,3a:
```

Features supported on the MPD-226 which the MPD-218 firmware might support
Features supported on the MPD-226/MPD-232 which the MPD-218 firmware might support
```
16 level
extra pad bank
off colors for pads
repeat toggle mode (226 has LED)
repeat gate
repeat toggle mode (226/232 has LED to indicate)
repeat gate (1-99%, sequenced note duty factory)
midi to din - on/off, set for each pad/dial individually
midi common control ch (USB A1-16=1..16, DIN B1-16=17..32)
midi to din
midi common control ch
pad threshold (0-10)
velocity curve (Linear, Exp1, Exp2, Log1, and Log2)
pad gain (1-10)
pad threshold
velocity curve
pad gain
tap average - number of taps needed 2-4
lock? - 0-off, 1-on
demo? - 0-off, 1-on
```


Expand Down Expand Up @@ -223,7 +231,7 @@ mode = 0x39
no LEDs lit, pads/dials/buttons reported via SysEx (use 0x1,2d to turn notes off).
This may be the route to 'proper' support within MPC Essentials/MPC2

# F/W and Serial
# Device enquiry - F/W and Serial

```
$ amidi -p hw:1,0,0 -S 'F0 7e 00 06 01 f7' -r serial.bin
Expand Down
45 changes: 26 additions & 19 deletions sysex/sysex_mk2.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@


Device enquiry
```
$ amidi -p hw:1,0,0 -S 'F0 7e 00 06 01 f7' -r serial.bin
^C
Expand All @@ -11,7 +11,7 @@ $ hexdump -Cv serial.bin
00000022
```


Knob position enquiry - the values for the 8 knobs will be reported as 0..0x7F values.
```
simon@thevoid:~/mpd-utils-git/sysex$ amidi -p hw:1,0,0 -S 'F0 47 00 26 60 00 03 00 00 01 f7' -r temp.bin
^C
Expand All @@ -32,26 +32,40 @@ simon@thevoid:~/mpd-utils-git/sysex$ amidi -p hw:1,0,0 -S 'F0 47 00 26 60 f7' -r
00000010
```

All knobs turned down to minimum
```
$ amidi -p hw:1,0,0 -S 'F0 47 00 26 60 f7' -r temp.bin ; hexdump -C temp.bin
^C
16 bytes read
00000000 f0 47 00 26 61 00 08 00 00 00 00 00 00 00 00 f7 |.G.&a...........|
00000010
```

No response, but turns off Arpeggitor, would seem to be a write of some form
last byte:
0x00 has no effect
0x01 turn off arp, and octave buttons
0x02 turn off arp, and octave buttons
0x04 turn off octave buttons
```
$ amidi -p hw:1,0,0 -S 'F0 47 00 26 62 00 01 01 f7' -r temp.bin ; hexdump -Cv temp.bin
All knobs turned up to maximum
```
$ amidi -p hw:1,0,0 -S 'F0 47 00 26 60 f7' -r temp.bin ; hexdump -C temp.bin
^C
16 bytes read
00000000 f0 47 00 26 61 00 08 7f 7f 7f 7f 7f 7f 7f 7f f7 |.G.&a...........|
00000010
```

select preset
```
$ amidi -p hw:1,0,0 -S 'F0 47 00 26 62 00 01 02 f7' -r temp.bin
^C ^^ preset to select
0 bytes read
```

Normally cmd 0x64 is used to upload a preset to the device, as per config file.

Malformed writes can corrupt presets, nothing is returned by keyboard crashes and
preset is 'bad' on next boot/read
```
$ amidi -p hw:1,0,0 -S 'F0 47 00 26 64 00 01 00 F7' -r temp.bin
```

This appears to be the command to read back the presets (0x00..0x04), however note that
This appears to be the command to read back the presets (0x00=ram, 0x01..0x04), however note that
'cmd 0x67' is not the same as the official presets, and these don't upload with tweaking
it to '0x64'
```
Expand All @@ -70,8 +84,7 @@ $ hexdump -Cv recall_4.mpk2
00000075
```



report current preset
```
$ amidi -p hw:1,0,0 -S 'F0 47 00 26 68 00 00 F7' -r temp.bin
^C
Expand All @@ -82,9 +95,3 @@ $ hexdump -Cv temp.bin
00000009
```

select preset
```
$ amidi -p hw:1,0,0 -S 'F0 47 00 26 62 00 01 02 f7' -r temp.bin
^C ^^ preset to select
0 bytes read
```

0 comments on commit d28f66a

Please sign in to comment.