Create a latching button on Core PRO

Updated by Brett Patram

Scope

This HelpDoc will dive into the topic of utilizing latching memory slots to help create a "push on, push off" behavior for a button

This document is for users of Pathfinder Core PRO.

Description

Here is the problem we are trying to solve for:

"I have a User Button on my console (imagine this is a Fusion LCD 10 button module, Quasar MTS user buttons or router control panels)When I push the button the first time I want to route Program 1 of the console into the air chain.When I push the same button a second time I want to route my automation playback audio into the air chain.If I press the button a third time I want to put the studio live again, and so on in a loop"

The problem above can be solved in part by using a Latching Memory Slot in Pathfinder Core PRO. Latching Memory Slots offer these two unique features: The value of the memory slot can only be set True or False, the memory slot can be "triggered" to flip flop between True or False.

You can take a User Button and bind the "mousedown" state so that it "triggers" the memory slot. Each press of the button will flip the value between True and False. If the memory slot value was TRUE, pressing the button will change it to FALSE. Press the button again and the slot value will go back to TRUE and so on.

Logic Flows (or bindings in User Panels themselves) elsewhere can read this memory slot value. The TRUE or FALSE value of the latching memory slot can be used to signify two possible states.

We start our example by defining what TRUE and FALSE will signify:

TRUE = Studio is LIVE

FALSE = Automation audio ONLY (studio bypassed)

In table form, here is what we want the memory slot values to do when set:

If Memory Slot Value = TRUE, then do these things:

If Memory Slot Value = FALSE, then do these things:

Route Livewire channel 5009 (Program 1 bus) to DST 3 on an xNode

Route Livewire channel 7012 (Automation mix) to DST3 on an xNode

Set the button Indicator property to ON

Set the button Indicator property to OFF

Set the User Button Caption to say "LIVE!!!"

Set the User Button Caption to say "STUDIO BYPASS"

Configuration

  1. Create memory slot

Go to the Memory Slots page and create a new Latching Memory Slot with the parameters below. Set the Name field to be something relevant to your installation

  1. Create user panel button

If you have an existing user panel, add a new button onto the canvas. Otherwise, create a new user panel, add a button and save the panel

This is also a good time to set the "backcoloroff" and "backcoloron" properties of the button. These define which color the button will show if the indicator is ON or OFF. The default is Green for "backcoloroff" and Red for "backcoloron"

  1. Map user panel button to hardware (optional)

This step is optional if you do not have a hardware user button. However, if you have a hardware button such as those found in Axia Router Control Panels, Element,Fusion and Quasar consoles you will need link them together.

A step by step how-to can be found here, look at section "Map the software button to the hardware button"

Save your changes to the user panel

  1. Set the "mousedown" action of button

Here we will set the "mousedown" action of the button to "trigger" the latching memory slot

Click the small button next to "mousedown" under event

At the bottom of the page select the End Point icon (right side) of the mini logic flow

When the Property Selector window appears, select "API" property mode first

Expand MemorySlots, find the name of your Latching Memory Slot and open expand that too.

Choose "Trigger" as the Property.

Click the Select button.

The "Translator Properties" window will appear.

The translator only needs one statement: True = True (If button is pressed down, trigger the latching memory slot)

Click on the first default translator line *=* to highlight it.

Modify it as shown below, True = True

The Translator Properties should only have one entry as shown:

Click Done on the "Translator Properties" window

Clicking Done on the "Translator Properties" window, will bring up this question prompt:

Click Cancel

Save your changes to the user panel

  1. Set the "indicator" property of button

Click on the small button next to "indicator" property

At the bottom of the page, select the Start Point icon (right side) of the mini logic flow

The "Property Selector" window appears. In a previous step we had selected "API" property mode. Make sure to set it back to "simple"

Expand Memory, find the name of your Latching Memory Slot and expand that too. Choose "SlotValue" as the Property.

Click the Select button.

A "Translator Properties" window will appear.

Click on the first default translator line *=* to highlight it

We want to modify the first line so that it is set as True = ON. Click the Add button

Modify the second line so that it appears as False = OFF

The Translator Properties list should like this:

Click the Done button

Clicking Done on the "Translator Properties" window, will bring up this question prompt

Click Cancel

Save your changes to the user panel

  1. Set the "caption" property of button

Click the small button next to "caption" property

At the bottom of the page select the Start Point icon (right side) of the mini logic flow

The "Property Selector" window appears.

Expand Memory, find the name of your Latching Memory Slot and expand that too. Choose "SlotValue" as the Property.

Click the Select button.

A "Translator Properties" window will appear. We want to use two translator lines

Click on the first default translator line *=* to highlight it

We want to modify the first line so that it is set as True = "LIVE!!!". Click the Add button

Modify the second line so that it appears as False = STUDIO BYPASS

The Translator Properties list should like this:

Click Done on the Translator Properties window

Save your changes to the user panel

  1. Create a Logic Flow outside the user panel

Up to this point we have the following programmed:

Each press of the button will "trigger" the memory slot between True and False.

The Indicator of the button is set ON and OFF by the current memory slot value.

The Caption of the button is also set by the current memory slot value.

Now we will create a Logic Flow outside of the user panel. The logic flow will read the latching memory slot value. The logic flow will set a route change to a destination on an xNode. The value of the memory slot will determine which Livewire channel is routed to the destination

Go to the Logic Flows page and create a new logic flow

Double Click on the Start Point (Left Icon)

The "Property Selector" window appears.

Expand Memory, find the name of your Latching Memory Slot and expand that too. Choose "SlotValue" as the Property.

Click the Select button.

Double Click on the End Point (Right Icon)

The "Property Selector" window appears. We are going to find a Destination of an xNode that feeds audio to our studio transmitter link.

Expand Routers, expand Axia Audio, Find the Destination that corresponds to the Device and Destination we wish to make the change to. Expand that. Select CurrentSourcePath

In my example I have an xNode on 10.0.18, Destination #1 which is named STL INPUT, is what I want to make the change to

I selected the "CurrentSourcePath" property. However you could also select "CurrentChannelNumber" property
Using "CurrentSourcePath" will give us a dropdown menu in the List Translator windows, to help find Livewire Source we want to Route to the xNode Destination.
Using "CurrentChannelNumber", you will need to know the Livewire channel number. The List Translator will expect a numerical value provided by you

Click the Select button

Double click on the List Translator (middle icon)

A "Translator Properties" window will appear. We want to use two translator lines

Click on the first default translator line *=* to highlight it

We want to modify the first line so that it is set as True = The Source we wish to route to the xNode destination. Click the Add button

For my example here, this will route Program 1, Livewire channel 1001, from an Axia Studio Engine to the xNode Destination when the memory slot value is True (this is our live studio audio)

Modify the second line so that it appears as False = The Source we wish to route to the xNode destination

For my example here, this will route VMIX 1 sub mix, Livewire channel 216, from an Axia Studio Engine to the xNode Destination when the memory slot value is False (this is our automation only audio mix)

Here is what the two entries should look like. The first entry might not show the Source name correctly, this is just a display bug.

Click Done on the Translator Properties window

Apply your changes to the logic flow page

Test it out

Let's verify and review everything is working as expected

Launch the User Panel you created. Go to the User Panels page and click the Window icon next to the panel name the button exists in

Press the button several times, we should see several things change on each press

The Caption on the button should change between "LIVE!!!" and "STUDIO BYPASS"

The color of the button should change between Red and Green

The Memory Slot Value should change between True and False

The Logic Flow should be setting the Route of Program 1 or VMIX1 Sub to the xNode destination

The xNode destination, as seen from the xNode web gui, should also change between channel number 1001 and 216 (you will need to refresh the web page to see the changes)

Additional thoughts...

It is worth noting that some properties in Core PRO have a value called "swap". An example of this would be a console fader's ON_State property. In this case, the use of a latching memory slot is extra work. Just bind the the button's "mousedown" property to set "swap" value of the console fader ON_State.

The Latching Memory Slot by design only has two values, or two state. If you need more than two conditions possible, This HelpDoc, goes over the same scenario as this HelpDoc but instead utilizes a Numeric Memory Slot. The end of that document then shows how easy it is to support more than two states

The steps outlined above can be easily manipulated handle other uses:

  • Change the end point of the logic flow to set a GPIO port's GPO Pin state instead. One could use this to manually start and stop iProfiler Skimmer Recordings on demand
  • Use the latching memory slot value as a conditional on other flows as a "lock/ unlock". This could be used to prevent other buttons from working until they are "unlocked" first, by pressing the one "lock/unlock" button
  • In its truest form, "latch" down the Talkback command to a codec or headphone source.

Let us know how we can help

If you have further questions on this topic or have ideas about improving this document please contact us


How did we do?