Behringer CMD MM-1 support script

Hi, everyone,

as you may have noticed in the last few days since I’ve got my Behringer CMD MM-1 controller, I’ve been trying to write a script for mAirlist to support the device. Tonight I reached a first milestone: The script works as a notification script, detects the player’s states when loading and changes button states as the players change states. If you’d like to use or adapt it, please feel free. I’ve made the script available on GitHub: - it’s available under Apache 2.0 license you may use, modify and distribute it freely - I’d just like you to mention me as the author or as a contributor, if you reuse parts of it.

The script makes the following assumptions towards mAirlist: I’m using two playlists, playlist one has two players (1-1 and 1-2) and playlist wo has one player (2-1). The players are mapped to the first three faders on the MM-1, channel 1: 1-1, channel 2: 1-2, channel 3: 2-1. I’m using the “CUE” buttons of the MM-1 for the START/PAUSE commands. I’m using the two “side buttons” (in DJ-Software they’re typically used to assign the player associated with the fader to either side of the cross fader (the latter I don’t use in mAirList!)) above the CUE buttons (always marked ‘1’ and ‘2’) to control player PFL (button 1) and button 2, when in PFL mode for “end monitor”. When the Player is playing, I’m setting the “CUE” button to blink, when the player reaches EOF the “2” button starts to blink, too.

One thing’s still missing: I’m using the MM-1 for voice tracking, too. So in VT mode I’m using a different set of commands for the buttons. This isn’t recognized by the script, yet, until now it only works when in Assist / Auto mode.

@Torben: are there some functions / procedure like “onVoicetrack…” or similar, which tells me mAirlist is entering / leaving the voicetrack recorder / editor? I found “onAutomationOn” and “onAutomationOff”, but nothing for voicetracking?

For your reference I’ve included the section from my remote.ini which describes the MM-1 mappings:

[Remote2] Type=MIDI Enabled=on Device=1 Message0=0094307F Action0=NOVT PLAYER 1-1 START/PAUSE;VT PLAYER A START Message1=0094317F Action1=NOVT PLAYER 1-2 START/PAUSE; VT PLAYER B START Message2=0094127F Action2=NOVT PLAYLIST 1 EXTRAPFL ON/OFF; VT RECORD START Message3=0094207F Action3=VT RECORD STOP Message4=0094117F Action4=NOVT CARTWALL NEXT SET; VT SAVE Message5=0094107F Action5=NOVT CARTWALL PREVIOUS SET; VT RECORD CANCEL Message6=00B4B080 Action6=NOVT PLAYER 1-1 VOLUME $DATA2/100; VT PLAYER A VOLUME $DATA2/127 Message7=00B4B180 Action7=NOVT PLAYER 1-2 VOLUME $DATA2/100; VT PLAYER B VOLUME $DATA2/127 Message8=00B4B280 Action8=NOVT PLAYER 2-1 VOLUME $DATA2/100 Message9=0094327F Action9=PLAYER 2-1 START/PAUSE Message10=00B40341 Action10=PLAYLIST 1 CURSOR DOWN Message11=00B4033F Action11=PLAYLIST 1 CURSOR UP Message12=0094037F Action12=PLAYLIST 1 RECYCLE Message13=0094137F Action13=PLAYER 1-1 PFL ON/OFF Message14=0094147F Action14=PFL END MON Message15=0094177F Action15=PLAYER 1-2 PFL ON/OFF Message16=0094187F Action16=PFL END MON Message17=00941B7F Action17=PLAYER 2-1 PFL ON/OFF Message18=00941C7F Action18=PFL END MON

If you have any more suggestions, please let me know - I hope someone may find the script useful. But before you start bashing me, please keep in my mind: I didn’t touch Pascal for the past 20 years (I think the last version I used was Turbo Poascal 5.5 on MS-DOS ;-))

Thus, a short disclaimer: the script is provided “as is” with no express or implied warranty or fitness for a particular purpose. Use it at your own risk, I can not be held liable for any damage that my occur by using this script.

One more thing: a big fat thank you to Torben for his relentless support, Thomas “Kloppi” Kloppholz for his LC-1 script which gave me the initial idea of writing this script and that served me as a starting point (I copied some of the initial code from there, so he’s also mentioned in the header ;-)) and also a big thank you to all the contributors of scripts in this forum - your articles helped me to solve a lot of the problems I came across while working on this script without having to ask my myself :slight_smile:

Kind Regards,


P.S.: I’m still encoutering a strange issue which may be in conjunction with the script / controller: every now and then a track wil hang in a very short (< 1 sec.) loop for a while and then continue… I’m still investigating that, fact is that I don’t see anything in the system log… I’ll come back to that problem when I can say more about it.