Comments (20)
There's something odd about this dump. The content states 0x63 (99 decimal) bytes, but the byte count is only 79 decimal...
This is shorter than the configs for Mini MK1 (102 decimal), which has less items to configure, and much shorter than for the Mini MK2 (109 decimal).
from mpd-utils.
I should get the Mini Play next Tuesday 12/25/18 so is this dump someone else's Play ?
What will you need to start to migrate support to Play that I can provide on Ubuntu Studio with Jack and Midi Dump ?
Here is the suggested connections I use now with Qsynth that the Play will replace.
from mpd-utils.
Like I mentioned, I just faked a device by enabling a Midi loop-back with the name 'MPK Mini Play'.
If you'd like to help (once you get your hardware), use to connection panel to 'wire' the outgoing Midi from PC to MPK Play so that it also goes to a recorder. Send a program and recorded the SysEx which is actually sent. You should be able to use 'amidi -p XX:2 -r dump.bin'.
I suspect that it may be in a couple of different blocks, which would explain the above confusion...
Here's some details on the MPK MiniMk2, there's also the script for reading/adjusting the configs:
https://github.com/mungewell/mpd-utils/blob/master/sysex/sysex_mk2.md
https://github.com/mungewell/mpd-utils/blob/master/mpk_mini.py
The MPK Play is probably different enough to warrant a new script, hopefully somewhat similar though.
from mpd-utils.
I think I see why the MPK Play has a smaller config file, it does NOT send Prog and CC messages for the pads. The device doesn't have the extra buttons (CC and Prog) and these items are missing from the configuration editor.
This would 'save' 24 bytes:
https://github.com/mungewell/mpd-utils/blob/master/mpk_mini.py#L148
It also has 2 banks of 4 dials, rather than 1 bank of 8. Thought that requires the same amount of config/bytes.
from mpd-utils.
Santa left you a gift :-)
https://github.com/mungewell/mpd-utils/blob/master/mpk_play.py
simon@thevoid:~/mpd-utils-git$ python3 mpk_play.py -d play_examples/miniplay_ram.bin -o temp.bin
ListContainer:
Container:
preset = 1
pchannel = 0
dchannel = 0
octave = (enum) OCT_0 4
enable = (enum) OFF 0
mode = (enum) UP 0
division = (enum) DIV_1_4 0
clock = (enum) INTERNAL 0
latch = (enum) DISABLE 0
swing = (enum) SWING_50 0
taps = 3
tempo = 120
octaves = (enum) OCT_1 0
axis_x = (enum) PBEND 0
x_up = 0
x_down = 0
axis_y = (enum) CC1 1
y_up = 16
y_down = 0
ListContainer:
ListContainer:
Container:
note = 16
Container:
note = 17
Container:
note = 18
Container:
note = 19
Container:
note = 20
Container:
note = 21
Container:
note = 22
Container:
note = 31
ListContainer:
Container:
note = 32
Container:
note = 33
Container:
note = 34
Container:
note = 35
Container:
note = 36
Container:
note = 37
Container:
note = 38
Container:
note = 39
ListContainer:
ListContainer:
Container:
midicc = 48
min = 0
max = 127
Container:
midicc = 49
min = 0
max = 127
Container:
midicc = 50
min = 0
max = 127
Container:
midicc = 51
min = 0
max = 127
ListContainer:
Container:
midicc = 64
min = 0
max = 127
Container:
midicc = 65
min = 0
max = 127
Container:
midicc = 66
min = 0
max = 127
Container:
midicc = 67
min = 0
max = 127
Container:
transpose = (enum) TRANS_0 12
Container:
keys = 0
drums = 0
filter = 67
res = 0
reverb = 35
chorus = 0
attack = 0
release = 56
eq_low = 64
eq_high = 64
Container:
from mpd-utils.
I am not sure how to open this gift !
What can I do with the mpd-utils tool ?
I can get most function to operate as a General Midi but as attached image shows, the Play editor is unusable in Ubuntu when invoked using Wine.
from mpd-utils.
Assuming that the MPK Mini Play behaves similar to other devices....
The python script 'mpk_play.py' can take the configuration settings (miniplay_ram.zip) for the device and change certain parameters - such as the note/sounds/etc. The configuration settings themselves are a SysEx patch and can be directly downloaded to the device:
$ amidi -l
Dir Device Name
IO hw:1,0,0 MPD218 MIDI 1
$ amidi -p hw:1,0,0 -s example.mpd218
The dump ('-d') from above is a human readable version of the configuration. Normally you'd use the other command line parameters to change settings and then upload the new configuration to your device.
$ python3 mpk_play.py -h
Usage: mpk_play.py [options] FILENAME
Options:
-h, --help show this help message and exit
-o OUTFILE, --output=OUTFILE
write data to OUTFILE
-v, --verbose
-d, --dump dump configuration to text
-p PRESET, --preset=PRESET
change the profile number to PRESET
-t TEMPO, --tempo=TEMPO
change the tempo to TEMPO
-A, --arpeggio Interactively configure the Arpeggiator
-G, --general Interactively configure general settings
-J, --joy Interactively configure the Joystick
-T, --transpose Interactively configure the Transposing
-D DIAL, --dial=DIAL Interactively configure a Dial
-P PAD, --pad=PAD Interactively configure a Pad
-S, --sound Interactively configure Key and Drum sounds
-M SCALE, --scale=SCALE
Interactively configure multiple Pads as a scale
The settings are stored into the preset (termed 'favourite' by Akai) held in the configuration, this can be changed with the '-p' parameter. If you store a new configuration onto the device, you may have to select that particular 'favourite' again, to load it into current/RAM setting.
There is likely a SysEx command for retrieving the configurations (device->PC) and changing which is selected on the device.
from mpd-utils.
It hung but still ctl-c canceled then found a file...
Not sure what it did
$ amidi -l
IO hw:2,0,0 MPK mini play MIDI 1
$ amidi -p hw:2,0,0 -S 'F0 47 00 34 12 00 01 01 F7' -r recall_1.mpdplay
from mpd-utils.
The file that you posted does not look like the SysEx Config files that I have seen before.
The command that you give is for retrieving config from the MPD218:
https://github.com/mungewell/mpd-utils#downloading-from-the-device
I believe that you want to adjust it with the following ID's
Header = Struct(
Const(b"\xf0"), # SysEx Begin
Const(b"\x47\x7f"), # Mfg ID = Akai
Const(b"\x44"), # Dev ID = MPK Mini Play
Const(b"\x64"), # CMD = Dump/Load Preset
Const(b"\x00\x63"), # Len = 99bytes (7bit stuffed)
# Note: doesn't match actual size...
So I think that the retrieve command should be similar to the MPK Mini MK2 command...
$ amidi -p hw:1,0,0 -S 'F0 47 7f 44 66 00 01 01 F7' -r recall_1.play
from mpd-utils.
Is this helpful ?
$ lsusb
Bus 001 Device 035: ID 09e8:0044 AKAI Professional M.I. Corp.
$ sudo lsusb -d 09e8:44 -v
Bus 001 Device 035: ID 09e8:0044 AKAI Professional M.I. Corp.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x09e8 AKAI Professional M.I. Corp.
idProduct 0x0044
bcdDevice 2.00
iManufacturer 1 AKAI
iProduct 2 MPK mini play
iSerial 3 000000000000001
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 118
bNumInterfaces 3
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 52
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 1 Control Device
bInterfaceProtocol 0
iInterface 0
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 1.00
wTotalLength 9
bInCollection 1
baInterfaceNr( 0) 2
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 3 MIDI Streaming
bInterfaceProtocol 0
iInterface 0
MIDIStreaming Interface Descriptor:
bLength 7
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 1.00
wTotalLength 50
MIDIStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (MIDI_IN_JACK)
bJackType 1 Embedded
bJackID 1
iJack 0
MIDIStreaming Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 3 (MIDI_OUT_JACK)
bJackType 1 Embedded
bJackID 2
bNrInputPins 1
baSourceID( 0) 1
BaSourcePin( 0) 1
iJack 0
Endpoint Descriptor:
bLength 9
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 0
bRefresh 0
bSynchAddress 0
MIDIStreaming Endpoint Descriptor:
bLength 5
bDescriptorType 37
bDescriptorSubtype 1 (GENERAL)
bNumEmbMIDIJack 1
baAssocJackID( 0) 1
Endpoint Descriptor:
bLength 9
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 0
bRefresh 0
bSynchAddress 0
MIDIStreaming Endpoint Descriptor:
bLength 5
bDescriptorType 37
bDescriptorSubtype 1 (GENERAL)
bNumEmbMIDIJack 1
baAssocJackID( 0) 2
Device Status: 0x0001
Self Powered
$ amidi -l
Dir Device Name
IO hw:1,0,0 AG06/AG03 MIDI 1
IO hw:2,0,0 MPK mini play MIDI 1
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 01 F7' -r recall_1.play
^C
79 bytes read
$ hexdump recall_1.play
0000000 47f0 4400 0067 0147 0000 0004 0000 0000
0000010 0300 7800 0000 2010 1001 1020 1211 1413
0000020 1615 2017 2221 2423 2625 3027 7f00 0031
0000030 327f 7f00 0033 407f 7f00 0041 427f 7f00
0000040 0043 0c7f 0000 4040 4040 4040 4040 00f7
000004f
from mpd-utils.
Yes, that does help. :-)
It shows the same issue as the MPK Mini MK2, in that the 'files' recalled from device have a 0x67 rather than a 0x64. I saw that this needed to be corrected before they would upload.
See:
https://github.com/mungewell/mpd-utils/blob/master/sysex/sysex_mk2.md
It also has a slightly different ID and length count. I have just fixed these in the parser.
$ python3 mpk_play.py -d preset_play/preset_1.play > dump.txt
dump.txt
If you are up for some more experimentation... it would be helpful if you could retrieve all 8 presets from the device.
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 01 F7' -r recall_1.play
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 02 F7' -r recall_2.play
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 03 F7' -r recall_3.play
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 04 F7' -r recall_4.play
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 05 F7' -r recall_5.play
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 06 F7' -r recall_6.play
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 07 F7' -r recall_7.play
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 08 F7' -r recall_8.play
As above, once the 0x67 is changed to 0x64 it should be possible to change and upload these back to the device
$ python3 mpk_play.py -S preset_play/preset_1.play
[?] Key Sound [0]: 1
[?] Drum Sound [0]: 1
[?] Filter [64]:
[?] Resonence [64]:
[?] Reverb [64]:
[?] Chorus [64]:
[?] Attack [64]:
[?] Release [64]:
[?] EQ Low [64]:
[?] EQ High [64]:
$ amidi -p hw:2,0,0 -s preset_play/preset_1.play
Note: You may need to re-select the preset/favorite on the device (hold 'favorite' button and press pad) to bring the new settings into the RAM of the device... this is needed on the MK2.
from mpd-utils.
Make and zip all in one place
NOTE:
No favorite pad presses as no changes seen when done.
I was on 32 bit Insignia Win 10 tablet to see what editor saved without editing.
Factory.mpkplay.zip
$ mkdir presets
$ cd presets/
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 01 F7' -r recall_1.play
^C
163 bytes read
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 02 F7' -r recall_2.play
^C
79 bytes read
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 03 F7' -r recall_3.play
^C
79 bytes read
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 04 F7' -r recall_4.play
^C
79 bytes read
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 05 F7' -r recall_5.play
^C
79 bytes read
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 06 F7' -r recall_6.play
^C
79 bytes read
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 07 F7' -r recall_7.play
^C
79 bytes read
$ amidi -p hw:2,0,0 -S 'F0 47 7f 44 66 00 01 08 F7' -r recall_8.play
^C
79 bytes read
$
from mpd-utils.
Well the presets are all rather boring ;-) Seems that Akai did not change anything between them - previously I saw that the MPD218 was pre-configured with different settings for different applications (ie. preset 5 for working with MPC Essentials).
Were you able to change the preset settings and upload to your device?
from mpd-utils.
I am working on what I think are missing fonts for WINE due to failure during upgrade to Ubuntu 18.10
Adding Microsoft fonts to 18.10
UPDATE:
Found the needed font Arial32 at Sourceforge and installed.
Then I can get PLAY editor to run on same system.
Favorite 2 has selected different keys and drums but no difference in dumps
so need another command !
$ hexdump recall_2.play
0000000 47f0 4400 0067 0247 0000 0004 0000 0000
0000010 0300 7800 0000 2010 1001 1020 1211 1413
0000020 1615 2017 2221 2423 2625 3027 7f00 0031
0000030 327f 7f00 0033 407f 7f00 0041 427f 7f00
0000040 0043 0c7f 0000 4040 4040 4040 4040 00f7
000004f
$ hexdump recall_2a.play
0000000 47f0 4400 0067 0247 0000 0004 0000 0000
0000010 0300 7800 0000 2010 1001 1020 1211 1413
0000020 1615 2017 2221 2423 2625 3027 7f00 0031
0000030 327f 7f00 0033 407f 7f00 0041 427f 7f00
0000040 0043 0c7f 0404 4040 4040 4040 4040 00f7
000004f
$
I can watch with kMidimon when editor gets FAVORITE 2 then FAVORITE 1 with different patches.
22051,45.9564,0:1,,ALSA Port subscribed,131:0,24:0,
22051,45.9585,0:1,,ALSA Port subscribed,24:0,131:1,
22052,45.9609,24:0,-,System exclusive,79,,f0 47 00 44 67 00 47 01 00 00 04 00 00 00 00 00 00 03 00 78 00 00 10 20 01 10 20 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26 27 30 00 7f 31 00 7f 32 00 7f 33 00 7f 40 00 7f 41 00 7f 42 00 7f 43 00 7f 0c 00 00 40 40 40 40 40 40 40 40 f7
183265,381.8130,0:1,,ALSA Port start,131:1,,
183265,381.8144,0:1,,ALSA Port subscribed,131:0,24:0,
183265,381.8160,0:1,,ALSA Port subscribed,24:0,131:1,
183265,381.8174,24:0,-,System exclusive,79,,f0 47 00 44 67 00 47 01 00 00 04 00 00 00 00 00 00 03 00 78 00 00 10 20 01 10 20 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26 27 30 00 7f 31 00 7f 32 00 7f 33 00 7f 40 00 7f 41 00 7f 42 00 7f 43 00 7f 0c 00 00 40 40 40 40 40 40 40 40 f7
Just figured how to use kMidimon to get NEW buffer then do Get favs 1 and 2 and save as attached file that shows the parameter and data changing.
Also, I had turned on time stamp from when I was working with Roland MIDI clock.
kMidimon columns are
Ticks, Time, Source, Event kind, Chan, Data 1, Data 2, Data 3
kMidimon - Play Get Favorite 1 then 2.txt
from mpd-utils.
You should look closer... there is a difference between the following. Seems you have changed the key and pad sounds.
$ hexdump recall_2.play
0000000 47f0 4400 0067 0247 0000 0004 0000 0000
0000010 0300 7800 0000 2010 1001 1020 1211 1413
0000020 1615 2017 2221 2423 2625 3027 7f00 0031
0000030 327f 7f00 0033 407f 7f00 0041 427f 7f00
0000040 0043 0c7f 0000 4040 4040 4040 4040 00f7
000004f
$ hexdump recall_2a.play
0000000 47f0 4400 0067 0247 0000 0004 0000 0000
0000010 0300 7800 0000 2010 1001 1020 1211 1413
0000020 1615 2017 2221 2423 2625 3027 7f00 0031
0000030 327f 7f00 0033 407f 7f00 0041 427f 7f00
0000040 0043 0c7f 0404 4040 4040 4040 4040 00f7
000004f
from mpd-utils.
Good eyes !
I stared at it a while and missed that !
Is the kMidimon approach worth using to get more feedback when used with Play EDITOR ?
Just let me know what to record !
Next, I plan to decipher why some songs freeze the Akai MPK mini Play.
I will use Rosegarden to Import and see what is happening.
Some songs cause an artifact of spurious sounds that exist after song completes.
from mpd-utils.
I'd still like to know whether my python script can change the settings and whether you can upload the configuration to the device...
You kMidimon approach only records data from the device, it might be helpful to see what the editor sends. Although I suspect that we already know everything it does.
For the MPK Mini MK2 I experimented a lot with SysEx commands to the device, and was able to figure out a few more 'commands'. The data you posted at the start of this thread suggests that 'we' might be able to read (and set?) the Program/Global memories of the device, this would likely take a lot of experimentation to understand fully.
Re stuck notes. The device should be able to respond to 'all notes off' and 'panic' MIDI messages.
from mpd-utils.
I'll try your script once I can fully grasp how it is built or sent in use.
Stuck is dead brick PLAY meaning nothing responds so not able to reset
with buttons or software.
The attached text earlier is bi directional but I agree I should see the request to send or else it is saying source 0:1 data 1 131:1 is all that is needed. What ever that means.
from mpd-utils.
@mungewell
Not seeing any Midi traffic when using the play editor so suspect I need to find a way to
track USB traffic during edit.
I have the LPD8 set to send PC for top and middle of GM midi table so as to set sounds faster than
knob on play.
Also set the knobs on LPD8 to send the 4x2 presets.
The LPD8 knobs are set from a login at midi.org GM1-rev4.pdf page 5 spec thus:
knob CC PLAY display or behavior
K1 6 Modwheel - vibrato behavior
K2 7 Volume - behavior
K3 10 Pan - Behavior
K4 11 Expression - volume behavior
K5 64 Sustain - Behavior
K6 65 nothing seen
K7 66 Sustain - Behavior?
K8 67 nothing seen
Prefer to use CC indicated in the screen and on device.
Need to experiment more to see if I can make the LPD8 knobs do same as PLAY.
Eventually want the LPD8 knobs to do same as PLAY knobs but no documentation found of what
CC is used.
I will also could read deeper into GM spec on midi.org to find CC for
FILTER, RESONANCE REVERB AMT, CHORUS AMT
ATTACK , RELEASE, EQ LOW, EQ HIGH
LPD8 and Play send data of attached kmidimon log when editors request PRESET 1
LPD8 and Play preset receive.txt
from mpd-utils.
You may be interested in this comment from Akai
https://getsatisfaction.com/akai_professional/topics/mpk-mini-play-midi-from-pc-to-device
[edit] this is what that page used to say...
When the Internal Sounds button is toggled on, the MPK's knobs will control the parameters assigned to the knobs like filter, resonance, reverb, etc. When the Internal Sounds button is toggled off, the MPK's knobs will send MIDI CC via USB.
The Play's internal sounds will be controlled exclusively by the parameter knobs when the Internal Sounds button is enabled. The knobs will send MIDI CC via USB when the Internal Sounds button is toggled off but the internal sounds do not respond to incoming MIDI CC data
from mpd-utils.
Related Issues (3)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mpd-utils.