function remote_init() local items={ {name="Keyboard", input="keyboard"}, {name="Fader 1", input="value", min=0, max=127}, {name="Fader 2", input="value", min=0, max=127}, {name="Fader 3", input="value", min=0, max=127}, {name="Fader 4", input="value", min=0, max=127}, {name="Fader 5", input="value", min=0, max=127}, {name="Fader 6", input="value", min=0, max=127}, {name="Knob 1", input="value", min=0, max=127}, {name="Knob 2", input="value", min=0, max=127}, {name="Knob 3", input="value", min=0, max=127}, {name="Knob 4", input="value", min=0, max=127}, {name="Knob 5", input="value", min=0, max=127}, {name="Knob 6", input="value", min=0, max=127}, {name="Knob 7", input="value", min=0, max=127}, {name="Knob 8", input="value", min=0, max=127}, {name="Channel Pressure", input="value", min=0, max=127}, {name="Aftertouch", input="value", min=0, max=127}, {name="Rewind", input="button"}, {name="Fast Forward", input="button"}, {name="Stop", input="button"}, {name="Play", input="button"}, {name="Record", input="button"}, {name="Preset", input="button"}, {name="Edit", input="button"}, {name="Global", input="button"}, {name="Full level", input="button"}, {name="16 Levels", input="button"}, {name="Program change", input="button"}, {name="Left", input="button"}, {name="Right", input="button"}, {name="Bank A", input="button"}, {name="Bank B", input="button"}, {name="Bank C", input="button"}, {name="Bank D", input="button"}, {name="Preview", input="value", min=0, max=127}, {name="A1", input="button"}, {name="A2", input="button"}, {name="A3", input="button"}, {name="A4", input="button"}, {name="A5", input="button"}, {name="A6", input="button"}, {name="A7", input="button"}, {name="A8", input="button"}, {name="A9", input="button"}, {name="A10", input="button"}, {name="A11", input="button"}, {name="A12", input="button"}, {name="A13", input="button"}, {name="A14", input="button"}, {name="A15", input="button"}, {name="A16", input="button"}, } remote.define_items(items) local inputs={ {pattern="b? 10 xx", name="Fader 1"}, {pattern="b? 11 xx", name="Fader 2"}, {pattern="b? 12 xx", name="Fader 3"}, {pattern="b? 13 xx", name="Fader 4"}, {pattern="b? 14 xx", name="Fader 5"}, {pattern="b? 15 xx", name="Fader 6"}, {pattern="9? xx 00", name="Keyboard", value="0", note="x", velocity="64"}, {pattern="<100x>? yy zz", name="Keyboard"}, {pattern="b? 1E xx", name="Knob 1"}, {pattern="b? 1F xx", name="Knob 2"}, {pattern="b? 20 xx", name="Knob 3"}, {pattern="b? 21 xx", name="Knob 4"}, {pattern="b? 22 xx", name="Knob 5"}, {pattern="b? 23 xx", name="Knob 6"}, {pattern="b? 24 xx", name="Knob 7"}, {pattern="b? 25 xx", name="Knob 8"}, {pattern="d? xx", name="Channel Pressure"}, {pattern="a? 7C xx", name="Aftertouch"}, {pattern="F0 7F 7F 06 05 F7", name="Rewind", value="1"}, {pattern="F0 7F 7F 06 04 F7", name="Fast Forward", value="1"}, {pattern="F0 7F 7F 06 01 F7", name="Stop", value="1"}, {pattern="F0 7F 7F 06 02 F7", name="Play", value="1"}, {pattern="F0 7F 7F 06 06 F7", name="Record", value="1"}, {pattern="F0 47 00 68 40 00 02 02 01 F7", name="Preset", value="1"}, {pattern="F0 47 00 68 40 00 02 03 01 F7", name="Edit", value="1"}, {pattern="F0 47 00 68 40 00 02 04 01 F7", name="Global", value="1"}, {pattern="F0 47 00 68 40 00 02 00 01 F7", name="Full level", value="1"}, {pattern="F0 47 00 68 40 00 02 01 01 F7", name="16 Levels", value="1"}, {pattern="F0 47 00 68 40 00 02 05 01 F7", name="Program change", value="1"}, {pattern="F0 47 00 68 40 00 02 11 01 F7", name="Left", value="1"}, {pattern="F0 47 00 68 40 00 02 12 01 F7", name="Right", value="1"}, {pattern="F0 47 00 68 40 00 02 06 01 F7", name="Bank A", value="1"}, {pattern="F0 47 00 68 40 00 02 07 01 F7", name="Bank B", value="1"}, {pattern="F0 47 00 68 40 00 02 08 01 F7", name="Bank C", value="1"}, {pattern="F0 47 00 68 40 00 02 09 01 F7", name="Bank D", value="1"}, {pattern="F0 47 00 68 40 00 02 10 xx F7", name="Preview", value="x*127"}, -- You can replace the hex "01" with xx, and value="1" with value="x*127" for momentary messages {pattern="C? 00", name="A1", value="1"}, {pattern="C? 01", name="A2", value="1"}, {pattern="C? 02", name="A3", value="1"}, {pattern="C? 03", name="A4", value="1"}, {pattern="C? 04", name="A5", value="1"}, {pattern="C? 05", name="A6", value="1"}, {pattern="C? 06", name="A7", value="1"}, {pattern="C? 07", name="A8", value="1"}, {pattern="C? 08", name="A9", value="1"}, {pattern="C? 09", name="A10", value="1"}, {pattern="C? 0A", name="A11", value="1"}, {pattern="C? 0B", name="A12", value="1"}, {pattern="C? 0C", name="A13", value="1"}, {pattern="C? 0D", name="A14", value="1"}, {pattern="C? 0E", name="A15", value="1"}, {pattern="C? 0F", name="A16", value="1"}, } remote.define_auto_inputs(inputs) end function remote_probe() local controlRequest="F0 7E 7F 06 01 F7" local controlResponse="F0 7E 00 06 02 47 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? F7" return { request=controlRequest, response=controlResponse } end function remote_prepare_for_use() -- Put the MPD24 into Native mode to midi-enable the MPD's operating buttons local retEvents={ remote.make_midi("F0 47 00 68 30 00 25 22 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F7"), remote.make_midi("F0 47 00 68 30 00 04 01 00 27 38 F7"), remote.make_midi("F0 47 00 68 20 00 03 01 00 00 F7"), remote.make_midi("F0 47 00 68 20 00 03 01 00 02 F7"), remote.make_midi("F0 47 00 68 20 00 03 01 00 03 F7"), remote.make_midi("F0 47 00 68 20 00 03 01 00 0B F7"), remote.make_midi("F0 47 00 68 20 00 03 01 00 0C F7"), remote.make_midi("F0 47 00 68 20 00 03 01 00 0F F7"), } return retEvents; end