Navigation Actions - FunkybotsEvilTwin/CSIWiki GitHub Wiki

Bank

Use the Bank action followed by the zone name and the number of channels you'd like to bank the surface by to navigate your hardware. It's common to place the Bank action for a track.zon and selectedtrack.zon in your "Buttons" zone, then have the bank actions for FXMenus, Sends, and Receives in their respective zone files.

Here's the new syntax in a typical Track zone...

     BankLeft                   Bank Track -8
     BankRight                  Bank Track 8
     ChannelLeft                Bank Track -1
     ChannelRight               Bank Track 1 

For comparison, here is the new syntax in a SelectedTrack zone...

     BankLeft                   Bank SelectedTrack -8
     BankRight                  Bank SelectedTrack 8
     ChannelLeft                Bank SelectedTrack -1
     ChannelRight               Bank SelectedTrack 1 

And here's the full list of supported Bank zones/types...

    Bank Track
    Bank VCA
    Bank Folder
    Bank TrackSend
    Bank TrackReceive
    Bank TrackFXMenu
    Bank SelectedTrack
    Bank SelectedTrackSend
    Bank SelectedTrackReceive
    Bank SelectedTrackFXMenu
    Bank MasterTrackFXMenu

GoHome, AllSurfacesGoHome

Assign this action to a button to return to the Home Zone and effective reset your Control Surface. If your surface supports feedback, you will see a light engaged when the Home zone is active.

Zone "Buttons"
    GlobalView                  GoHome
ZoneEnd

If you would like all surfaces on your Page to return home with a single CSI action, you can use the AllSurfacesGoHome action to return all Home at once.

Zone "Buttons"
    F1                           AllSurfacesGoHome
ZoneEnd

GoAssociatedZone

Use the GoAssociatedZone action to activate Associated Zones in CSI such as Sends, Receives, FX Menus, etc. The syntax for this action is GoAssociatedZone folowed by the Associated Zone name. Here is an example below for an MCU/X-Touch style Buttons zone. If your surface supports feedback, you will see a light engaged when the Associated Zone is active.

Zone "Buttons"

    Track                       GoHome
    Pan                         GoAssociatedZone VCA
    EQ                          GoAssociatedZone Folder
    Send                        GoAssociatedZone SelectedTrackSend
    Global+Send                 GoAssociatedZone TrackSend
    Plugin                      GoAssociatedZone SelectedTrackFXMenu
    Global+Plugin               GoAssociatedZone TrackFXMenu
    Instrument                  GoAssociatedZone SelectedTrackReceive
    Global+Instrument           GoAssociatedZone TrackReceive
    MidiTracks                  GoAssociatedZone SelectedTrackTCPFX
    Inputs                      GoAssociatedZone MasterTrackFXMenu

GoSubZone, LeaveSubZone

Use the GoSubZone action when you want to create custom SubZones to be called up on-demand. The SubZones need to be listed as SubZones within the surface definition. In the below example, we've got two SubZones, one for a "Marker" zone and another for a "Zoom" SubZone. The syntax to flag the included SubZones and the buttons to activate them would look like this...

Zone "Buttons"
    SubZones
        "Marker"
        "Zoom"
    SubZonesEnd
     Marker                             GoSubZone "Marker"
     Zoom                               GoSubZone "Zoom"

The SubZone itself would look like any other standalone .zon file. Also note that once we are in one of those custom SubZones, we need a way to exit the SubZone. You may want to use the same button you used to activate the SubZone in order for it to behave like a toggle. See the example below from the Marker SubZone.

Zone "Marker"
    Up                   Reaper 40613   // Delete marker near cursor
    Down                 Reaper 40157   // Insert marker at current or edit position
    Right                Reaper 40173   // Go to next marker or project end
    Left                 Reaper 40172   // Go to previous marker or project start

    JogWheelRotaryCW     Reaper 40173   // Go to next marker or project end    
    JogWheelRotaryCCW    Reaper 40172   // Go to previous marker or project start
    
    Marker               LeaveSubZone
ZoneEnd

Click here to learn about FX SubZones.

GoPage, NextPage, PageNameDisplay

If using multiple Pages, the buttons on surface can be assigned to switch between Pages. Use the CSI GoPage action to jump between Pages in CSI. Use NextPage to cycle between Pages. In the below example, I have a Page called Home and another called Mix. Those Pages will point to different zone folders that are configured to function differently based on the page. See Pages for more details about when and how to use Pages in CSI, for now we'll just focus on the actions to change pages.

On my Home page, I may want to utilize the "Channel" button on my surface to enter the Mix Page. Note: this "Buttons.zon" exists on the "HomePage" Page, and is different than the "Buttons.zon" on the "Mix" Page.

Zone "Buttons"
        Channel         GoPage "Mix"  // Activates the Mix page
ZoneEnd

But in order to get back to the HomePage, I probably want to make sure I have the opposite happening when the Mix page is active. Note: this "Buttons.zon" exists on the "Mix" Page, and is different than the "Buttons.zon" on the "HomePage".

Zone "Buttons"
        Channel         GoPage "HomePage"  // Activates the Home page
ZoneEnd

You could also use the NextPage action to just cycle through the Pages in your CSI setup. In a two-page setup this would essentially be a toggle but if you had 3 or more pages it will cycle through them.

Zone "Buttons"
        Channel         NextPage  // Cycles through the list of pages
ZoneEnd

Finally, while not a Navigation Action, the PageNameDisplay action can be assigned to a Display widget in order to show the name of the currently active Page.

MainDisplay     PageNameDisplay

ToggleSynchPageBanking

This action will toggle whether or not surface banking stays in sync when you change Pages in CSI. Example: if your surface is banked to show channels 25 to 32 on your HomePage, then you switch to a second page, do you want to maintain the banking position? This is enabled by default. This action will toggle the behavior.

Zone "Buttons"
     F8     ToggleSynchPageBanking
ZoneEnd

ToggleScrollLink

This action toggles the behavior where Reaper's MCP will follow CSI's banking and scroll in sync with the surface. Note: as of the August 5, 2022 CSI release, this defaults to Off (previously defaulted to On).

Zone "Buttons"
     F7     ToggleScrollLink
ZoneEnd

if you want to have ToggleScrollLink default to "On", you could include it in your Home.zon along with an OnInitialization virtual widget as shown below. Important note: ToggleScrollLink is actually a "Page-level" action. So if you had included "OnInitialization ToggleScrollLink" in two surface zone files, or shared one zone folder between two devices, the action would actually fire twice thus not actually changing the state (changing it from it's default off state, to on, to off again). The current workaround would be to only include this action in one surface home.zon and not to share zone folders between two surfaces if you want ScrollLink enabled by default.

Zone "Home"
	OnInitialization ToggleScrollLink
     	IncludedZones
     	   	"Buttons"
     	   	"Track"
     	   	"SelectedTrack"
		"MasterTrack"
     	IncludedZonesEnd
     	AssociatedZones
     	   	"SelectedTrackFXMenu"
     		"SelectedTrackSend"
     		"SelectedTrackReceive"
     		"TrackSend"
     		"TrackReceive"	
     	AssociatedZonesEnd
		
ZoneEnd

ClearFXSlot

ClearFXSlot deactivates the currently mapped FX slot. Very handy if you have an 8-channel surface like an MCU, X-Touch etc., that you use to map FX using FXMenu and want to return to the menu.

Typical usage:

Zone "VST: UAD Harrison 32C (Universal Audio, Inc.)" "Har32C"

	Plugin      		ClearFXSlot

When you press Plugin you will be returned to the FXMenu.

If you would like this included in Auto-Generated FX Zones, you can also add this to your FXEpilogue.zon

Zone FXEpilogue
     Plugin              ClearFXSlot
ZoneEnd

ClearFocusedFX

Use the ClearFocusedFX action if you're using FocusedFX and find that after unfocusing the FX, that your prior zone is not returning. Example: you're calling up FocusedFX from a Track zone, and after unfocusing the FX, you expect the track zone to return. You would use the ClearFocusedFX action to let CSI know that you're no longer in a FocusedFX state and restore the Track.zon.

Zone "Buttons"
     Alt+Plugin     ClearFocusedFX
ZoneEnd

ClearFocusedFXParam

If you're calling a separate FocusedFXParam zone and want to clear it and return to the prior zone, you'd use the ClearFocusedFXParam action.

Zone "FocusedFXParam"
     Fader1                             FocusedFXParam
     DisplayUpper1                      FocusedFXParamNameDisplay
     DisplayLower1                      FocusedFXParamValueDisplay
     F1                                 ClearFocusedFXParam
ZoneEnd

ClearSelectedTrackFX

If you're using a SelectedTrackFX setup, and need to clear that zone(s) and return to the prior setup, you would use the ClearSelectedTrackFX action.

Zone "Buttons"
     F8       ClearSelectedTrackFX
ZoneEnd