Archive for the ‘tips & tricks’ Category

Screencast: MIDI Input Trigger & Variables

Friday, November 6th, 2009

This screencast demonstrates how the the MIDI Input trigger can be configured to capture variables, which can be used to create dynamic, musical lighting displays.

Pharos Podcast Launched

Tuesday, November 3rd, 2009

We have made the new Pharos screencasts available via a podcast, which you can subscribe to through iTunes or RSS. We hope you find this new service useful!

Screencast: DMX Input Trigger & Variables

Tuesday, October 27th, 2009

This screencast features an introduction to using variables within triggers in Pharos Designer.

First Pharos Designer screencast: matrix and transparency effects

Wednesday, October 14th, 2009

A while ago we posted about the effects that are possible with multiple pixel matrices, but we felt that text and screenshots weren’t the best media to present the information. So here’s our first screencast!

Subtleties of Timeline Status

Tuesday, September 29th, 2009

Users of Pharos Designer might have noticed that there are two timeline status conditions available for use in triggers: Timeline Running and Timeline Onstage.  What’s the difference?

If you’ve looked at the Project Status page of one of the Pharos controllers’ web interfaces you’ll probably have noticed that timelines are sometimes listed as Running (Inactive) or Holding at End (Inactive).  What does inactive mean in this case?

Pharos controllers can run up to 500 independent timelines.  When you start a new timeline through a trigger action, the currently running timelines aren’t released and the new timeline will only take control of the fixtures it has programming for, so the output is the amalgamation of the programming on all the running timelines.  The timelines that are controlling fixtures are onstageIf a timeline has not been released but is no longer controlling any fixtures because other timelines have taken over then the timeline is still running, but it is inactive.

You might create a background timeline that you want as the base state, and then have some effect timelines that run occasionally; perhaps you want to make it impossible to start an effect timeline while another effect timeline is still onstage.  In this case, for every trigger that starts an effect timeline, add a Timeline Onstage condition and select the background timeline.  Now an effect can only start if all other effects have finished, i.e. if the background timeline has control of the fixtures.

You might have two background timelines that swap each day as a result of a Real Time trigger.  If the first background timeline is running, you’ll want to start the second background timeline, and vice versa, but an effect timeline could be running at the point the Real Time trigger fires.  In this case, use the Timeline Running condition.

Introducing Scripting

Friday, July 31st, 2009

Project requirements can often lead to complicated triggering. Typically this can still be accomplished within the graphical trigger window as the standard capabilities offered here are extensive. However, a good show control system can cope with situations that are anything but standard. When things get non-standard then within Pharos we can use scripting.

Script uses a simple programming language that allows programmers to extend the functionality of the Pharos system themselves.

Let’s take a typical request for sequences to playback apparently at random, providing variety to someone viewing the installation regularly. A short script will allow the system to select from a list of sequences every time the script is run. Let’s say we have seven timelines and we want a different one to run randomly each evening at sunset. This requires one Astronomical trigger and a Run Script action.

Trigger for activating a script

Trigger for activating a script

Script launch button & editor

Script launch button & editor

Scripts are a whole chapter in themselves and you’ll find a beginner’s guide to scripting in the appendix of the Designer Help. But by way of introduction, this one will randomly choose a timeline from the table at the top when the script is run every sunset.

This and many other examples are available in the scripting guide. To use this script yourself, simply copy and paste the code below into the script editor in a selected action. You only need to make changes to the details in lines 2 and 3: replace the timeline reference numbers with the timelines in your show, and ensure that the total number of timelines in row 3 matches the number of references in row 2.

Notice the while loop in the code below – this ensures it will not pick the same timeline twice in succession. This protects against ‘true’ randomness but is desirable for designed or theatrical randomness!

-- which timelines should we cycle through?
timeline = { 22, 14, 24, 16, 15, 17, 21 }
n_timeline = 7

-- find an index different from the old one
while index == oldIndex do
    -- use the random function to set index
    index = math.random(1,n_timeline)
end

-- store the index for next time round
oldIndex = index

-- start the timeline whose number is at entry 'index'
start_timeline(timeline[index])

The Pharos Support Team is available to discuss project needs, and will always advise on the best solution and assist with script creation.

Tips for triggering special event days

Thursday, July 30th, 2009

Making provision for holiday and special event days can add complexity, and there are many approaches that work, but here’s the one I think is the cleanest. It takes advantage of the fundamental principle of trigger programming which is that a trigger is tested in the list order, and once is finds a match it stops looking (search is ‘absorbed on match’).

Triggers with conditions need to be higher in the list than the same trigger without a condition – so it matches the specific trigger before finding a general or ‘catch-all’ trigger. As a simplified example imagine an exterior project that turns on at sunset. For most of the year you have a default timeline, but in the winter you have a different sequence, and on Valentine’s Day you have a special sequence. They would all have a sunset trigger. The winter timeline would need a condition that matched December, January and February, and the yucky pink timeline would need a condition that matched 14th February.

Simplified trigger structure for special days

Simplified trigger structure for special days

Because on Feb 14th it would match the general trigger, the winter condition and the Valentine condition, the most specific trigger (equals Feb and equals 14) would need to be higher than the winter timeline (equals Dec, Jan and Feb) and the general trigger (no conditions) lowest. So for instance at sunset on Feb 13 the system will test the Valentine trigger but not match, so will pass on to the winter trigger which it will match, then it will stop looking. The following sunset it will match the first trigger and stop. Two weeks later in March it will not match either, and will instead match the trigger with no conditions.

Advanced Realtime mask for Feb 14: any time, any year, any day, only date 14 and month 2

Advanced Realtime mask for Feb 14: any time, any year, any day, only date 14 and month 2

Advanced Realtime mask for Winter: any time, any year, any day, any date, only months 1, 2, and 12

Advanced Realtime mask for Winter: any time, any year, any day, any date, only months 1, 2, and 12

Tip: If the Real Time condition is calendar based, but the trigger is astronomical, remember to select ‘Any Time’ in the editor before clicking the Advanced button. This selects all hours, minutes and seconds because variable time trigger events need to match at any time.

These triggering principles can be extended to a proper example. The design brief requires an early evening sequence to start at sunset, and a late evening sequence to start at 10pm. It turns off at midnight, except at weekends and holidays when it turns off at 2am. There are special sequences for holidays throughout the year which run all evening, without the change at 10pm.

This is what we need (only some of the holidays are programmed for illustration):

Trigger structure for special days

Trigger structure for special days

The default trigger #1 is sunset -30mins, but is lower in the list than all the special day sunset triggers, so will only play if none of them match first.

Two more useful features are also illustrated here and described in detail below. Firstly, using the advanced Real Time conditions to match moveable holidays, and secondly, using the Timeline Running condition to check the status of a ‘lockout’ timeline before activating triggers that only occur on non-special days.

Fixed special days such as New Year and Halloween, and seasonal conditions are simple to achieve, as illustrated above. However some events will change annually. Easter, for instance, requires a little bit of research and triggers for every year. Others, such as Thanksgiving can still be accommodated within one trigger as the variation is still within boundaries – the fourth Thursday in November can only fall between the 22nd and 28th. This condition is set to match any time, any year, only November, only Thursday, only 22 thru 28. Each year this will only match on the correct day.

Advanced Realtime mask for Thanksgiving: any time, any year, only month 11, dates 22-28 and day 4

Advanced Realtime mask for Thanksgiving: any time, any year, only month 11, dates 22-28 and day 4

Finally, the design brief had requirements for the Holidays to ignore the 10pm trigger and the midnight weekday turn off. To do this, these regular triggers need to check if it is a special day. Checking the calendar list might need a complicated script with a table, or checking that every special timeline is not running. By far the best way is to have the special day triggers also start a common ‘lockout’ timeline, and then the standard evening triggers only need to check if this one timeline has been activated.

This lockout timeline does not need any programming, it just needs to maintain for the day – so hold at end. We use a flag just to give it some duration, so it starts then holds.

Lockout timeline only needs a flag and release behaviour

Lockout timeline only needs a flag and release behaviour

If the timeline is running, the triggers will do nothing. If it is not running, they will execute their actions as normal.

Tips for Toggling Timelines

Tuesday, July 21st, 2009

A single trigger need not be restricted to a single outcome. Conditions are the main way to make this happen – providing logic to test clock, calendar and sun status, contact closure and DMX input status, or remote device status to determine what actions to execute.

Let’s look at a simple example of one of the most powerful status indicators in Pharos: Timeline Running.

The Timeline Running condition can be used as a countdown, a lockout, or to prove the current state of the system, or in this case just to toggle a timeline.

With a maintained switch it is easy to implement this: the input starts the timeline when it changes to Low/Closed, and releases the timeline on the High/Open change. But what do you do with a momentary switch, or some other single trigger?

The key to this is that we can use the Timeline Running condition to check if the timeline is already running.

When the trigger is received, the condition checks the current status of the timeline. If it is not running then starts it, if it is running then release it. This requires two triggers, one for each condition: “if it is NOT running” and “if it is running” with the appropriate actions.

Trigger structure for toggle timeline

Trigger structure for toggle timeline

Cool transparent effects with multiple pixel matrices

Wednesday, July 15th, 2009

If you’ve experimented with pixel matrices in Pharos before, you’ll know about the huge possibilities that the matrix presets offer, including transparency.  You can take this one step further by using the flexible tools for creating, resizing and laying out pixel matrices in Designer.

For this example I’ve used a 16 x 9 array of Color Kinetics’ iColor Tiles.  To start with, select all the fixtures in the Setup view in Designer and click the New Pixel Matrix button.  If you view this matrix in the Media view you’ll see the matrix is the same size as the pixel array (192 x 108).

Pixel matrix of all Color Kinetics' iColor Tiles

Pixel matrix of all Color Kinetics' iColor Tiles

2D Colour on Colour applied to matrix of all iColor Tiles

2D Colour on Colour applied to matrix of all iColor Tiles

If you program the 2D Colour on Colour preset onto this matrix with a Radial shape, the effect will spread out from the centre of the fixture array.

Offset radial 2D Colour on Colour

Offset radial 2D Colour on Colour

If you want to adjust the origin of the radial effect you can make a pixel matrix that’s larger than your fixture array and then place the fixture array off-centre.  If you move the fixtures to the bottom right of the oversized pixel matrix then the origin of the radial effect will move towards the top left of the fixture array, and vice versa.

By the way, once you have the first matrix containing all the fixtures, you can click the Copy button in the Media view to quickly create a new matrix ready for experimentation.

Fixtures positioned in bottom right of matrix

Fixtures positioned in bottom right of oversized matrix to offset effect origin

Simultaneous, transparent radial effects on offset pixel matrices

Simultaneous, transparent, radial effects on offset pixel matrices

Now for the interesting part: Pharos not only lets you create multiple pixel matrices for the same fixtures, but also allows you to run effects on them simultaneously.  So, if you create another oversized matrix with the fixtures in the top left and then program a radial 2D Colour on Colour effect with a transparent base onto all three matrices, you’ll end up with multiple, overlapping ripples being generated from three points on the fixture array!

This is a simple example, but it highlights the scope of the built-in matrix presets before media is even considered.

Dynamic Text debuts at the National Theatre

Thursday, July 2nd, 2009

The new sign at the National Theatre, London is the first project to utilise our new Dynamic Text feature. Enhancing the current functionality of displaying text on a lighting matrix with the LPCs and on a screen with the AVC, dynamic text allows users to change text in response to triggers or through the web interface.

Dynamic text presets can be added to timelines just like other pixel matrix effects. In the text entry field, entering text between angle brackets creates a text slot whose contents can be modified at any time while the show is running.  Text outside angle brackets is always shown.

Programming the text slot preset

Programming the text slot preset

The Set Text Slot trigger action can be used to change a slot to some pre-determined text, or you can capture the text from a third-party device like an SMS receiver, which would allow text messages to be displayed.

Pre-programmed text slot values changed via triggers

Triggers to change the text in text slots

Alternatively if the user goes to the trigger page on the controller’s web interface they can edit the slots directly.

Editing text on the web interface

Editing text on the web interface

These changes are stored in the controller and are maintained through any reset or show upload.

The preset says "Tonight <tonight's show>", the controller inserts the current value

The controller has inserted 'Macbeth' into the text slot "tonight's show"