Layout definitions

Lexan overlays

To simplify use with various daws, several lexan overlays are available; overlays are placed on the right side of the Mackie Control and give the buttons new labels relevant to the referenced daw. Of course, the Mackie Control doesn't "know" that an overlay is placed on the surface; it always behaves the same way and sends the same commands. It is up to the receiving daw to determine the meaning of each command. The lexan overlay is simply a way to tell the user how the daw will handle each button.

The plugin also allows you to select a lexan overlay to be used, and as with the physical unit, this doesn't change the way commands are sent - it only gives you, as a user, a better view over which commands the selected daw is using.

Each lexan overlay is defined in an xml file, and the plugin is prepared to handle customized layouts if the default layout doesn't work as expected.

Please note that the layout xml files bundled with the plugin are created by looking at the lexan overlays for the various daws. The layout for Cubase/Nuendo is verified against Cubase and is "fairly good," even though I expect experienced Mackie users to find areas for improvement.

The other layouts are not tested against their corresponding daw, and I expect adjustments and improvements to be required. I hope that users with other daws can verify/modify (as described below) the layout files and share improved versions for future updates.

Creating customized overlays

In the plugin folder, the subfolder MackieLayouts contains the layout xml files for the various daws. The layout dropdown in the editor is populated with the names of the files found (with valid layout content)

Please do not edit the files in the MackieLayouts folder.

In case a bundled layout file needs improvements or if you want to add a file for another daw, please do as follows:

  1. Create a folder Trevliga Spel in your Documents folder.

  2. Create a folder MackieLayouts in the Trevliga Spel folder.

  3. To change an existing layout, copy the file you want to improve from the plugin MackieLayouts folder to your Trevliga Spel/MackieLayouts folder. Do not rename the file.

  4. If you want to create a new layout, copy one of the files from the plugin MackieLayouts folder to your Trevliga Spel/MackieLayouts folder and rename the file to reflect the new daw.

  5. Make whatever changes you want (as described below) to the file in your Trevliga Spel/MackieLayouts folder.

If the plugin finds a file in your personal folder with the same name as a file in the plugin folder, the file in your personal folder will be used. The fact that the file is found in the personal folder is indicated by an asterisk before the layout name in the dropdown.

Please note that the naming of the layout files is very important. Especially the fact that you should not rename a copy of a default file unless you intend to use it for some other daw. All Stream Deck buttons reference the used layout using the file name (without the path).

  • Assume that you have a Stream Deck profile with all buttons referencing, e.g., the Pro Tools layout (i.e., the Pro Tools.xml file). Suppose you want to modify the layout and create a copy in your Trevliga Spel/MackieLayouts. In that case, all buttons will automatically switch to the customized version (since the file name is the same and the plugin prioritizes custom files before the default ones).

  • If you later send the improved file to be included in future releases, you can remove the custom file once it is released, and the plugin will automatically switch back to the released and updated layout file.

  • If you rename the file after copying it, all buttons will lose the reference to the layout, and you need to re-attach them to your copy.

  • When creating a new file for a new daw, file naming is also important. Please select a "good" name if the layout is included in a future release. If you do that from the beginning, all your buttons will automatically reference the correct layout once it is released.

The plugin reacts in real-time when file changes are made. The addition or removal of files in the Trevliga Spel/MackieLayouts folder will immediately be visible in the Layout dropdown. Changes in the Daw Functions part of a specific layout file will immediately be visible in the Function dropdown. If you add or edit a file in the MidiPluginFiles folder and it isn't visible in the Layout dropdown, there's probably some xml syntax error in the file.

Layout file syntax

Each layout file has the following structure:

<?xml version="1.0" encoding="utf-8" ?>
<MackieLayout version="1">
  <Section Name="Daw Functions">
        <Button id="40" Name="VPot Assign: Track" Type="Toggle"></Button>
        <Button id="41" Name="VPot Assign: Send" Type="Toggle"></Button>
        .
        .
        <Button id="70" Name="Undo" Type="Push"></Button>
        <Button id="70" Name="Edit History" Type="Push" Modifier="83"></Button>
        .
        .
        <Button id="83" Name="Misc: Shift" Type="Hold"></Button>
        <Button id="90" Name="Markers &amp; Control: Solo" Type="Toggle"></Button>
        <Dial id="1" Name="Fader Banks: Bank Left/Right">
            <Button direction="ccw" id="46" ></Button>
            <Button direction="cw" id="47" ></Button>
        </Dial>
    </Section>
  <Section Name="Transport">Placeholder</Section>
  <Section Name="Time Display">Placeholder</Section>
  <Section Name="Channel Strips">Placeholder</Section>
</MackieLayout>
  •  The plugin does not use the version attribute in the MackieLayout tag. If I make any changes in a file included in the plugin, I will increase this version number. If you have made a copy of such a file, you can see if the original file has been updated after a plugin update.

  • The Daw Functions section contains the definitions for the daw-specific buttons on the Mackie Control.

  • The tags define button functions, i.e., functions triggered by physical buttons on an actual Mackie device. These functions are available for buttons and the Press action for dials. 

  • The tags define button functions that can be used by rotating a dial, functions like cursor movements and track selections. These functions are available in Rotate and Rotate while pressed actions for dials.

  • The Transport, Time Display and Channel Strips sections are created in code, and the content cannot be modified in the layout file. These section lines are placeholders only, determining in what order the sections will be listed in the Section dropdown.

Attribute

Description

Button - id

The id of the button as defined in the image below. 40 is the lowest id, and 90 is the highest.

Button - Name

The name that should be displayed in the Function dropdown.

In an xml file, some characters are reserved for the xml structure itself, and you must not use those characters in the Name attribute. If you want to have any of the following characters displayed in the dropdown, please use the following replacement strings (without the quotes):

  • To display the < character, please use "&lt;"

  • To display the > character, please use "&gt;"

  • To display the & character, please use "&amp;"

  • To display the " (quote) character, please use "&quot;"

Button - Type

The type of button, i.e., how it should react when you press it. Allowed entries are Push, Toggle and Hold.

This attribute is no longer used

  • All buttons on a real Mackie Control act as Hold buttons; the Daw will determine how a button press should be interpreted. Starting with version 2.0.6, the plugin will force all buttons to the Hold type regardless of what is set in the file. This is done to better conform to the functionality of a real Mackie Control.

Button - Modifier

The id of a modifier button as defined in the image below. If no modifier button should be used, the attribute should be removed.

Some buttons on a Mackie Control can have multiple functions depending on if a modifier button (e.g., Shift) is pressed simultaneously. Cubase will, e.g., undo the latest change if the Undo button is pressed, but if the Shift is pressed simultaneously, Cubase will display the Edit History instead. Different daws have different setups of modifier buttons.

It is possible to assign the modifier key (e.g., Shift) to a Stream Deck button and use it the same way as on a Mackie Control - press shift, press another key, and then release shift. However, you must be familiar with the lexan overlay for the daw and what modified features are available for different buttons.

To simplify things, you can have double entries for a button in the layout file - one for the button standalone and one for the button together with a modifier button. Suppose you assign a "modified" entry to a Stream Deck button. In that case, the plugin will automatically send the code for the modifier button (if needed), then send the "real" command, and finally send the code to release the modifier button (unless it was actually "On" before the button press, in which case it is left "On").

Dial - id

An id for the dial. This is never shown but is used to keep track of the selected function. It must be unique among dials.

Dial - Name

The name that should be displayed in the Function dropdown.

In an xml file, some characters are reserved for the xml structure itself, and you must not use those characters in the Name attribute. If you want to have any of the following characters displayed in the dropdown, please use the following replacement strings (without the quotes):

  • To display the < character, please use "&lt;"

  • To display the > character, please use "&gt;"

  • To display the & character, please use "&amp;"

  • To display the " (quote) character, please use "&quot;"

Dial:Button - id

The id of the button that should be triggered when the dial is rotated.

Dial:Button - direction

The rotation direction when the button should be triggered.

  • cw=clockwise
  • ccw=counterclockwise

Mackie Control button layout

...on the Cubase/Nuendo lexan overlay.