FX Mapping: Automapping, Learn Mode, and Remap Window - FunkybotsEvilTwin/CSIWiki GitHub Wiki

This page will attempt to cover everything needed to get CSI users familiar with how to use the Auto-mapping, Learn Mode, and Remap Window features in CSI. The page will first cover some basics, assuming you already have support files for your surface, but goes into more detail so you can setup these features with any surface, even if support files don't exist.

Auto-Mapping

The AutoMapFX action will automatically create an fx.zon mapping the focused FX/instrument in Reaper. With this action assigned to a button on your surface, focus the FX, then press the AutoMapFX button. All FX parameters will be assigned to the controls on your surface in the order specified in the SurfaceFXLayout Zone and FXLayouts Zone.

Zone "Buttons"

    Aux                         AutoMapFX

Additionally, if you utilize an FX Menu and do not have a map for a particular FX or instrument plugin, simply activating the FX via the GoFXSlot action in CSI will cause a prompt to appear on screen asking whether you'd like to auto-map the plugin or Learn it. Selecting auto-map will create the fx.zon and activate the mapping.

Learn Mode

Learn Mode is an easy-to-use way to map FX and instruments and works like many MIDI learn systems in plugins. Basically, you move a control on the plugin, move a control on your surface, and now they're linked. The high-level process is:

  1. Either focus the FX in Reaper and press the GoAssociatedZone LearnFXParams button on your surface, or
  2. Using the FXMenu, use the GoFXSlot action to activate the FX - a menu will appear on-screen asking you to Automap or Learn the plugin, select "learn"
  3. Next, move an FXParam in Reaper with your mouse
  4. Touch a control on the surface - now they're linked
  5. Repeat steps 3 and 4
  6. When you run out of controls, latch your modifier and learn the modified set of controls
  7. If you need to delete an assignment because you messed up or change your mind just touch the control on your surface, then press the EraseLastTouchedControl button
  8. When done, press the SaveLearnedFXParams button

That's literally it! You should now be able to go in and activate and use your newly created fx.zon like any other.

Note: Learn Mode will only allow for one control to be mapped per cell/channel: one fader, or one rotary, or one rotary push. If you want to double or triple up on assignments (example: Rotary1 AND RotaryPush1), learn one of those, then use the Remap window afterwards to manually add the additional assignments.

Remap Window (RemapAutoZone)

Running the RemapAutoZone action with an FX zone activated will open the Remap window for manually editing auto-mapped and Learned FX mappings. This is useful for moving things around, changing aliases, and more advanced editing.

Zone "Buttons"
    Busses                      RemapAutoZone

With the FX active on your surface, trigger the RemapAutoZone action -- e.g. press Busses

A new window will appear. Remap Window

You can directly edit the FX alias at the top.

The auto generated Zone lines appear in a list box.

Click to select an item.

Double-click or press the Edit button to go into more advanced options.

To reorder the item you can drag or, if you're on Windows, press the Up and Down buttons near the top of the screen (not shown here as they're not needed on Mac). Another note for Windows users: you can only select the row by clicking in the first column with the widget name. Mac users can click anywhere in the row.

Press Save to apply the changes.

Below is a screen print of the Edit/Advanced view.

Advanced View

The Edit/Advanced window has options for stepped parameters where you can select the number of steps in a given parameter, or if you're a more advanced user, enter the exact step values. This is also where you can create secondary and tertiary assignments within a given cell/channel (example: map Rotary1 AND a RotaryPush1 - though only 1 will be able to get the displays, unless you have an SCE24, or similar multi row surface).

How to Setup/Create Zone Files for Auto-Mapping and Learn

Auto-mapping and Learn require some zone files setup to provide CSI instructions as to how your surface behaves and how you'd like the mappings to work by default. CSI Support Files for the included surfaces should include the appropriate zone files already, however, if you're setting up a different surface or want to edit the mappings/behavior, you should keep reading.

SurfaceFXLayout Zone

A SurfaceFXLayout.zon file is the first requirement for auto-mapping and Learn mode. This zone type dictates the available widgets for FX mapping, the default widget for automapping (whether a fader or a rotary), which displays they will be assigned to, and more.

Let's begin with a typical SurfaceFXLayout for an MCU-style device with Rotary, Rotary Push, and Fader widgets along with 2 displays. If you want auto-mapping to put the FXParams on the Rotary encoders by default, your SurfaceFXLayout.zon would look like this (notice we're defining the default RingStyle as dot in the Rotary line):

Zone SurfaceFXLayout
    Rotary FXParam RingStyle=Dot
    DisplayUpper FixedTextDisplay
    DisplayLower FXParamValueDisplay    
ZoneEnd

#WidgetTypes Rotary RotaryPush Fader
#RingStyles Dot Fill BoostCut Spread
#DisplayRows DisplayUpper DisplayLower

If you wanted to put the FX parameters on the fader by default, we'd make changes to the default mapping in the SurfaceFXLayout.zon as shown below (notice we also changed the order in the #WidgetTypes line):

Zone SurfaceFXLayout
    Fader FXParam
    DisplayUpper FixedTextDisplay
    DisplayLower FXParamValueDisplay    
ZoneEnd

#WidgetTypes Fader RotaryPush Rotary
#RingStyles Dot Fill BoostCut Spread
#DisplayRows DisplayUpper DisplayLower

Let's say you didn't want to use RotaryPush as your buttons in FX zones, you wanted to use the Select buttons instead, that would look like this...

Zone SurfaceFXLayout
    Fader FXParam
    DisplayUpper FixedTextDisplay
    DisplayLower FXParamValueDisplay    
ZoneEnd

#WidgetTypes Fader Select Rotary
#RingStyles Dot Fill BoostCut Spread
#DisplayRows DisplayUpper DisplayLower

FXLayouts Zone

The next requirement is an FXLayouts zone. This zone is utilized by auto-mapping and also by the Learn Mode and Remap window.

This provides a second set of instructions to CSI about which modifier mappings to allow (if any), how many cell-rows the surface has (example: the Mackie C4 has 4 rows: A, B, C, D), and how many channels.

In the FXLayouts examples shown below, the first set of quotes in each line represents the modifiers you want to use in the zone files (first block has empty quotes to represent: unmodified). The second set of quotes in each line represents the rows (if any). The number represents the number of channels/cells (all the examples below use 8 channel surfaces as they are the most common, but in a FaderPort16, the number would be 16).

Here is what an FXLayouts zone for an MCU-style surface would look like. This file uses Shift, Option, Control, Alt, Shift+Option, Shift+Control, Shift+Alt modifier combinations. Other modifier combinations would not work unless added to this zone. You can add as many combination as you'd like.

Zone FXLayouts
     "" "" 8
     "Shift" "" 8
     "Option" "" 8
     "Control" "" 8
     "Alt" "" 8
     "Shift+Option" 8
     "Shift+Control" "" 8
     "Shift+Alt" "" 8
ZoneEnd

Here's what an FXLayouts zone would look like in a surface with 4 rows (A, B, C, D) like a Mackie C4, but in this case, we want to reverse map them so the D row (top left) gets mapped first. This example only uses Shift, Control, Alt modifiers with no combinations (but additional combinations could be added).

Zone FXLayouts
    "" "D" 8
    "" "C" 8
    "" "B" 8
    "" "A" 8
    
    "Shift" "D" 8
    "Shift" "C" 8
    "Shift" "B" 8
    "Shift" "A" 8
    
    "Option" "D" 8
    "Option" "C" 8
    "Option" "B" 8
    "Option" "A" 8
    
    "Control" "D" 8
    "Control" "C" 8
    "Control" "B" 8
    "Control" "A" 8
    
    "Alt" "D" 8
    "Alt" "C" 8
    "Alt" "B" 8
    "Alt" "A" 8
ZoneEnd

LearnFXParams

For Learn Mode to work, you will need a LearnFXParams zone. This zone has 2 specific actions that only work within this zone type: SaveLearnedFXparams, and EraseLastTouchedControl. Assign these to buttons on your surface.

SaveLearnedFXParams will write the FX.zon file and take you back to the Home zone.

EraseLastTouchedControl allows you to move a control, then delete the FXParam assigned to that control for editing. Note: the other actions will all broadcast from surface to surface, but EraseLastTouchedControl would need to have a button assigned to it on each surface since CSI will need to know which control to delete.

Zone LearnFXParams

    ChanStrip           SaveLearnedFXParams
    Function            EraseLastTouchedControl
    
ZoneEnd

Entering Learn Mode

GoAssociatedZone LearnFXParams is the CSI action needed to activate the Learn mode.

Zone Buttons

        Track               GoAssociatedZone LearnFXParams
...
ZoneEnd

Make sure you also add it to the AssociatedZone list in your home.zon.

Zone Home
    OnInitialization ToggleEnableFocusedFX
    OnInitialization ToggleEnableFocusedFXMapping
    OnInitialization ToggleRestrictTextLength 7
    IncludedZones
       Buttons
       Track
       MasterTrack
    IncludedZonesEnd
    AssociatedZones
       SelectedTracks
       SelectedTrackSend
       SelectedTrackReceive
       SelectedTrackFXMenu
       MasterTrackFXMenu
       TrackSend
       TrackReceive
       TrackFXMenu
       VCA
       Folder
       SelectedTrackTCPFX
       LearnFXParams
    AssociatedZonesEnd
ZoneEnd