CONTROL SURFACE EMULATION OF THE MACKIE CONTROL UNIVERSAL Art Hunkins www.arthunkins.com abhunkin AT uncg DOT edu August 2007 Many recent versions of leading DAW's, such as Ableton Live, include control surface inputs for the Mackie Control Universal. The MCU control surface is comprehensive, but costly; it is possible, however, to emulate its functions on lower-cost controllers through the use of MIDIOx scripts in Windows. Depending on the capability of the particular control surface, this emulation will be anywhere from minimal to fairly complete. This package of scripts accomplishes this task through two types of VBScripts: 1) generic scripts adaptable to particular levels and types of controllers; 2) specific scripts for individual control surfaces. The former type is wide-ranging in its application but requires extensive customization; the latter type is limited to unique controllers but relatively easy to customize (or indeed may be used "out of the box" in some cases). The scripts should work with any Windows DAW that permits selection of the Mackie Control Universal as control surface. (They also should work on any version of Windows from Win95 up.) Some of the scripts, however, implement *16* channels of control rather than 8. These particular scripts require that both MCU and MCU eXTender be selectable as control surface inputs on separate ports to your DAW. (This is possible, for example, in Ableton Live 5 and higher.) The major downside of these scripts is that they are very demanding on system resources. The demand is such that when a DAW is handling a substantial load itself, audio can stutter. As a result, success of these scripts is dependent both on hardware system power and audio load. (This "major load" limitation is inherent in MIDIOx scripting, it seems.) Useful MCU-emulation control devices and scripts should include the following items (most of those described here do so): 1) VERY IMPORTANT: 8 rotary pots. These are the VPots. (Ideally they are endless encoders. Sliders are a satisfactory substitute.) 2) VERY IMPORTANT: 8 or 9 faders. The ninth fader is the master fader. (A data entry slider or mod wheel is an adequate substitute for the latter; rotary pots are OK substitutes for all.) 3) IMPORTANT: 13 button controllers (8 + 5). 20 are even better (8 + 8 + 4). These are one or more sets of 8 buttons which function as Mute, Solo, Rec Arm, Select, VPot-Switch, as selected by the 4 or 5 additional buttons. (The second set of 8 serves as an independent Channel Select.) All of these "buttons" (especially the basic set of 8) may be keyboard keys. 4) SOMEWHAT IMPORTANT: jog wheel - again, ideally an endless encoder (as most jog wheels would be). Optionally, a ninth rotary pot (or slider). 5) DESIREABLE: as many additional buttons as possible - especially, a set of 4 for cursor control and 5 for transport control. (Again, these *may* be keyboard notes.) As observed below, the older Roland MCR-8 Multi Controller is a near-ideal match for the above list. Personally, I wouldn't seriously consider as a DAW control surface any unit that didn't meet the first three of the above criteria. Capsule descriptions of the scripts follow. Complete descriptions are contained in the scripts themselves (open them in any text editor). Please note that: 1) In all scripts, the only MIDI messages passed through are those used by the script; all others are deleted - including unused keyboard notes. This should help keep the DAW from responding to spurious messages. 2) Most scripts identify related sets ("banks") of 8 or 16 controls by their first controller or note number; thus, controller presets are usually selected (or programmed) so that their bank members are numbered consecutively. This is a *requirement* for the generic scripts. 3) In contrast to *native* DAW interfaces to some of the control surfaces represented here, these scripts implement a substantially greater number of controls. For the most part, DAW implementations deal with faders and/or VPots only. GENERIC SCRIPTS-- All generic scripts deal with *absolute* controller data only. Generic2MCU1.vbs Emulates continuous controllers only - 9 faders, 8 vpots, and jog wheel. (Two button controllers optional.) Generic2MCU2.vbs Emulates continuous controllers only; channel 1 only. Many button controllers/functions may be enabled as well, including DAW-specific and Transport/Navigation functions. All buttons are continuous controllers. (Functions are selectable, and are assigned to specific controllers by the user. Mute, Solo, Rec Arm, Channel Select and VPot-Switch functions are specified either as separate sets of 8 buttons, or a single multi-function set. All this is done within the script itself.) Fairly easy to customize. Generic2MCU2-16.vbs The same as Generic2MCU2, except 16 channels instead of 8. This is done by emulating both an MCU and MCU eXTender on two separate ports. Generic2MCU3.vbs The same as Generic2MCU2, except that all buttons/keys issue note on/off instead of continuous controller messages. This version is appropriate for keyboard-based MIDI controllers. Fairly easy to customize. Generic2MCU3Peavey.vbs Customized version (and instructive example) of Generic2MCU3 for Peavey 1600 or 1600x control surface. Also works with Kenton Control Freak Studio Edition and comparable units. 1600(x).syx Optional preset (sysex) file for either Peavey 1600 or 1600x that permits Generic2MCU3Peavey.vbs to work. (None of the factory presets for either the 1600 or 1600x are compatible with the script. The alternative is to program/ modify your own preset.) Directions for installing the preset are included in Generic2MCU3Peavey.vbs. ControlFreakSE58.syx Optional preset (sysex) file for Kenton Control Freak Studio Edition that permits Generic2MCU3Peavey.vbs to work. (None of the factory presets for Control Freak SE are compatible with the script. The alternative is to program/modify your own preset.) Directions for installing the program/ preset are included in Generic2MCU3Peavey.vbs. The sysex automatically installs itself as program 58. Generic2MCU3-16.vbs The same as Generic2MCU3, except 16 channels instead of 8. This is done by emulating both an MCU and MCU eXTender on two separate ports. Generic2MCU3-16Peavey.vbs Customized 16-channel version (and instructive example) of Generic2MCU3-16 for two Peavey 1600, 1600x or comparable control surfaces that have a total of 32 (16 + 16) continuous controllers and 24 or more momentary-contact buttons or keys. 1600(x)-16.syx Optional preset (sysex) file for either Peavey 1600 or 1600x that permits Generic2MCU3-16Peavey.vbs to work. Installed on the "add-on" Peavey 1600(x) in tandem with 1600(x).syx for the 1600(x) "base" unit. (None of the factory presets for the 1600 or 1600x are compatible with this script. The alternative is to program/modify both of your own presets.) Directions for installing the two presets are included in Generic2MCU3-16Peavey.vbs. Generic2MCU4.vbs The same as Generic2MCU2, except that multiple channels are available. Appropriate for full-featured control surfaces that work with multiple channels (often through various button combinations). Requires substantial customization. Generic2MCU5.vbs The same as Generic2MCU4, except that all buttons/keys issue note on/off instead of continuous controller messages. This version is appropriate for keyboard-based MIDI controllers and/or full-featured control surfaces. Also requires substantial customization. SPECIFIC (DEDICATED) SCRIPTS-- 4Control2MCU.vbs Native Instruments 4Control. Minimal emulation (but still 8 faders, 8 vpots, master fader and jog wheel!) BCRBCF2MCU.vbs For Behringer BCR2000 and BCF2000. (Only BCR implements master fader and jog wheel.) BCD2MCU.vbs For Behringer BCD2000 and BCD3000, both DJ units. Not well laid out for our purposes, but have lots of buttons for a substantial and customizable emulation. BCD2MCU has a more user-friendly layout than BCD2MCU2, but lacks the LED feedback of the latter. BCD2MCU2.vbs See above. BCD2MCU2 has a less user-friendly layout than BCD2MCU, but it features LED feedback of several key parameters (tracks muted, track soloed, channel selected, and multifunction switch setting selected). XPro2MCU.vbs For M-Audio X-Session Pro, another DJ unit. Also not well laid out for our purposes, it is actually two emulations in one - depending on setting of a TRANSPORT variable. TRANSPORT mode emulates (optionally) all transport functions, plus five other buttons for a modestly customizable setup. "Multi" mode buttons implement Mute, Solo, Rec/Rdy and Channel Select functions only. iControl2MCU.vbs For M-Audio iControl. Windows XP only. MiniDesk2MCU.vbs For JL Cooper MiniDesk (CS32). Nearly complete emulation. MiniDesk2MCU16.vbs The same as MiniDesk2MCU, except 16 channels instead of 8. This is done by emulating both an MCU and MCU eXTender on two separate ports. Substantial emulation. Nano2MCU.vbs For Behringer Nano (BCN44). Minimal emulation (but still 8 faders and vpots, 8 select and mute switches!) PocketDial2MCU.vbs For Doepfer Pocket Dial. (Doepfer's Pocket Control and Pocket Fader should use one of the generic scripts.) StudioMix2MCU.vbs For the Peavey StudioMix. Substantial emulation. Tascam4282MCU.vbs For the Tascam US-428. Substantial emulation. TMD10002MCU.vbs Highly precustomized, substantial emulation for the Tascam TM-D1000. Specifically designed for Ableton Live 5 and up. Very limited capacity to customize further. TMD10002MCU16.vbs The same as TMD10002MCU, except 16 channels instead of 8. This is done by emulating both an MCU and MCU eXTender on two separate ports. NOTE: The specific layout for functions implemented in the TM-D1000 scripts (specifically for Ableton Live 5 and higher) is detailed in the file TMD10002MCULayout.txt. UC16-XSession2MCU.vbs For Evolution UC-16 and X-Session. The X-Session, with its programmable buttons, has considerably more emulation capability than the UC-16. UC332MCU.vbs For Evolution UC-33(e). Implements Transport controls and many individual button functions. UC332MCU2.vbs For Evolution UC-33(e); alternate version to the above. Implements multiple 8-button sets (VPot-Switch/Rec Arm/Solo/Mute/Select), instead of Transport controls and many individual button functions. EdirolPCRX02MCU.vbs For all Edirol PCR-30/50/80 series MIDI controllers (including "A" and "M" models). It is not compatible with the newer PCR-300/500/800 series, nor with the PCR-1/M1. Substantial emulation; uses keyboard as buttons. EdirolPCRX002MCU.vbs For Edirol PCR-300/500/800. It is not compatible with the older PCR-30/50/ 80 series. Substantial emulation; does not use keyboard. LV12MCU.vbs For Faderfox micromodul LV1. MCR82MCU.vbs For Roland MCR-8 Multi Controller. Substantial emulation. (This low-cost "vintage" controller adapts extremely well to MCU emulation.) CS102MCU.vbs For JL Cooper CS-10 or CS-102 Control Station. Limitations: only 6 VPots; no Master Fader. D12MCU.vbs For Digidesign D1 Remote Controller. Substantial emulation. (Limitations: only 4 physical VPots; button press toggles to VPots 5-8. One VPot also doubles as Jog Wheel.) Xboard2MCU.vbs For E-mu Xboard 25, 49 and 61. Uses keyboard as buttons. Axiom2MCU.vbs For M-Audio Axiom 49 and 61 (doesn't work with Axiom 25). EvolutionMK2MCU.vbs For Evolution MK-449C and MK-461C; reduced capability (no VPots, and choice of Jog Wheel *or* Master Fader) with MK-425C. Uses keyboard as buttons. ReMOTE2MCU.vbs For Novation ReMOTE 25, 49 and 61 (doesn't work with SL or LE series). ReMOTESL2MCU.vbs For Novation ReMOTE ZeRO SL, 25 SL, 37 SL and 61 SL (doesn't work with the ReMOTE or ReMOTE LE series). Substantial emulation. Requires installation of a custom template, SL-MCU.syx, included in this distribution. This simple procedure is detailed in ReMOTESL2MCU.vbs. UFx2MCU.vbs For CME UF5, UF6, UF7 and UF8. Substantial emulation. Uses keyboard as buttons. This implementation is quite tricky because 1) various USB driver versions have modified the single preset, and 2) that preset was very non- standard to begin with. These scripts require the MIDIYoke and MIDIOx utilities, which can both be downloaded (free) from: http://www.midiox.com. Follow the steps below to prepare for performance (note that a number of these steps need only be done once): 1) Download and install MIDIYoke and MIDIOx on your Windows computer. (Instructions are available on-site and as part of the download package.) 2) Edit your VBScript, if necessary, by right-clicking on its icon and selecting Edit. (Complete descriptions of the script, and directions for its modification, are contained within the script.) 3) Run the script by left-clicking on its icon. This, in turn, will open MIDIOx. 4) In MIDIOx, click on Options | MIDI Devices, and select MIDI Yoke Junction: 1 as MIDI Output. (If performing a 16-channel script, select both MIDI Yoke Junction: 1 *and 2* as MIDI Output. Also, in the script, PORTA must be assigned the same port number as MIDI Yoke Junction 1; PORTB, the same as MIDI Yoke Junction 2.) 5) Select your MIDI Input device. 6) Minimize MIDIOx. 7) In your DAW (Preferences), select MIDI Yoke: 1 as MIDI Input Port, and Mackie Control as your Control Surface. (If performing a 16-channel script, also select MIDI Yoke Junction: 2 as the *second*-choice MIDI Input Port, with Mackie XT as Control Surface.) 8) When finished, close your script (and MIDIOx) by clicking on Actions | Stop WScript in MIDIOx. (Do not simply close MIDIOx!) The author invites feedback, especially regarding bugs and suggestions for improvement. He can be contacted at the email address above. The scripts mention two links which can be significant aids to customizing these scripts for particular DAW's. Complete MCU specs are laid out in this source: http://home.comcast.net/~robbowers11/MCMap.htm . Overlays for particular DAW's (as well as the native MCU silkscreen) can be viewed at the MCU "home page": http://www.mackie.com/products/mcu . Integrating the information in these two sources with that found in your control surface manual, should allow you to customize to your heart's content. Those interested in the above Mackie Control Universal emulation scripts should also check out Kip Chatterson's free GenMce (Generic Mackie Control emulator) at http://home.earthlink.net/~flipotto. Among its advantages/ features: it works with all controllers and DAW's, it is completely customizable, has a user-friendly GUI, little to no CPU overhead, and sports extensive documentation. PC only.