// title: akai-mpkmini2.desc.scd // author: vtz // description: // An improved version of the modality toolkit description file for the akai mpk mini mk2 // To be used with modality toolkit installed on supercollier, and the akai mpk mini mk2 // code: // contributed by gil fuser // rework to add layout and full support of all features by vtz /* * todo: * test on osx * * All pads form prog 1 & 2 has been setted to midinote from 1 to 31 starting at 1 for prog1, bankA, ending at 31 for prog2, bankB * this as been done for midinote, cc and progr change * use the akai mkp mini mkII editor to do that * joystick up down change to CC1 on midinote 10 * * other prog are left at factory setting, this could be change when needed MKtl(\x, "*mpk*2").gui; MKtl(\x).trace; */ ( deviceName: "MPKmini2", protocol: 'midi', deviceType: 'midiKeyboard', elementTypes: [\knob, \key, \pad, \bend], status: ( linux: "tested and working", osx: "tested desc only, looks ok, no gui info yet. 2016-03-17, adc", win: "tested and working"), idInfo: "MPKmini2", // hardwarePages: [1, 2, 3, 4], deviceInfo: ( vendorURI: 'http://www.akaipro.com/product/mpk-mini-mkii', manualURI: 'http://6be54c364949b623a3c0-4409a68c214f3a9eeca8d0265e9266c0.r0.cf2.rackcdn.com/988/documents/MPK%20mini%20-%20User%20Guide%20-%20v1.0.pdf', features: [\pianoKey, \pad, \knob, \bender], notes: "All pads form prog 1 & 2 has been setted to midinote from 1 to 31 starting at 1 for prog1, bankA, ending at 31 for prog2, bankB\n" "It as been done for midinote, cc and progr change\n" "Use the akai mkp mini mkII editor to do that\n" "Joystick up down change to CC1 on midinote 10\n" "Pros 2 & 3 uses default presets.\n" "Every key was mapped\n" "For more flexibility use the [MPK MiniMKII editor](http://www.akaipro.com/product/mpk-mini-mkii#downloads).", longName: "AKAI MPKmini mk2" ), elementsDesc: ( elements: [ // ------- bend ------------ ( key: \bend, midiChan: 0, midiMsgType: \bend, elementType: \bender, spec: \midiBend ), ( key: \joy, midiChan: 0, \midiNum: 10, midiMsgType: \cc, elementType: \bender, spec: \midi, style: (row: 0, column: 1) ), // ------ pad ------------- ( key: \pad, elements: [ ( shared: (groupType: \noteOnOff, midiChan: 9, spec: \midiCC, elementType: \pad), elements:((0..31)).collect { |i, j| (key: (i).asSymbol, shared: (midiNum: i, style: (row: 1, column: j*0.6, width: 0.8) ) ) } ), ( shared: (groupType: \noteOnOff, midiChan: 9, spec: \midiCC, elementType: \pad), elements:((48..53)++(55)++(57)++(59..75)).collect { |i, j| (key: (i).asSymbol, shared: (midiNum: i, style: (row: 2, column: j*0.6, width: 0.8) ) ) } ) ] ), // ------ pad into button ------------- ( key: \bt, shared: (\midiMsgType: \cc, \elementType: \pianoKey, \spec: \midiVel ), elements: [ ( shared: (\midiChan: 9), elements: (0..31).collect { |i, j| (key: (i).asSymbol, \midiNum: i, style: (row: 3, column: j*0.6, width: 0.8)) } ), ( shared: (\midiChan: 0), elements: (20..35).collect { |i, j| (key: (i).asSymbol, \midiNum: i, style: (row: 4, column: j*0.6, width: 0.8)) } ), ] ), // ------ pad into program change ------------- ( key: \pch, \midiChan: 9, \midiMsgType: \program, \elementType: \wheel, \spec: \midiProgram, style: (row: 5, column: 1) ), // ------ knob ------------- ( key: \kn, shared: (\midiMsgType: \cc, \elementType: \knob, \midiChan: 0, \spec: \midiCC), elements: ((1..8)).collect { |i, item| item = item + 1; (key: (i).asSymbol, \midiNum: i, style: (row: 6, column: item*0.6, width: 0.8)) } ), // ------ piano key ------------- ( key: \key, shared: (elementType: \pianoKey, midiChan: 0, groupType: \noteOnOff), elements: (0..120).collect { |midiNum, i| var pos = Piano.pos(midiNum % 48, 0); (key: midiNum, shared: ( midiNum: midiNum, style: (row: (4 - (i div: 48 * 2)) + (pos.y * 0.9) + 7 , column: pos.x * 0.6, width: 0.8, color: pos.color) ) ) } ), ] ) );