I wrote some code that allows me to activate certain cue lists and thereby trigger alternate console scenes based on which understudies are on in split tracks, allowing the Group assignments to be consistent with how the show is usually mixed. I think it’s a pretty elegant solution.


The show I am currently mixing utilizes split tracking for understudy coverage in certain cases where one actor is out. What this means is that multiple people step in and cover multiple aspects of the absent person’s “track” or speaking/singing roles.  Here is an example of how this might work on my show:

ABBY (actor name) plays “Miss 1” and “Miss 2” (characters) in the show, as well as singing and dancing in the ensemble.

If ABBY is OUT, BETTY (fellow ensemble actor) understudies “Miss 1”, but CARRIE (swing actress) covers “Miss 2”. Therefore, in one performance BETTY is playing parts belonging to both ABBY’s track and her own, and CARRIE is playing parts belonging to both ABBY’s track and BETTY’s track. So neither BETTY nor CARRIE is saying 100% of their “usual” lines as far as line-by-line mixing was concerned.

The DM2000 is not an ideal console for line-by-line mixing of large cast musicals to begin with, for some reasons that my colleague Daniel Lundberg outlined nicely below:

“With most modern theatre consoles we would have assigned vocals or groups of vocals to VCA masters on a cue-by-cue basis, but the automation on the DM2000 made this difficult: we couldn’t recall just the VCA assignments in a snapshot. The VCA assignments on the DM2000 are considered part of the fader, so using VCAs would mean recalling every fader’s level in every cue. This wouldn’t work because if we adjusted a band level in one song, for instance, the adjustment would be overwritten when we recalled the next cue.”

Full link to Daniel’s blog post outlining how he handled mixing on this console here:

The way I have chosen to program my show is by using the console’s 8 built-in Control Groups (what Daniel refers to above as “VCAs”; I will refer to them as “Groups” for sake of clarity).  As Daniel mentions above, both Group assignment and fader level are recalled per-scene.  This means that to get someone “ungrouped”, 2 console scenes are required: 1 to bring the fader down to –inf, and 1 to ungroup the channel.  If these two tasks were handled in a single scene, the channel would ungroup instantaneously and be audible through the system before it finished fading down.  Using 2 scenes each time I want to change Groups was impractical, as the console also has a limit of 98 scenes.  For this production I am using about 70.

In addition to controlling Group assignments, some scenes alter band levels and activate certain routing and auxing needs for the show, so no scene can necessarily be skipped or replaced without altering the intended sound of the show.  The Groups also cannot be easily “Bypassed” (i.e. a person cannot be made “automation-safe” for a portion of the show, as Grouping is recalled per-scene), since oftentimes folks who don’t speak in a scene might still be Grouped but faded down from the previous scene, so it would be a challenge to know in my head when I could or could not run an input fader “wild” successfully.

Once the my scenes are all programmed in pre-production with my all Grouping data inputted, they are recalled in performance by sending midi program changes to the console using our playback software, SFX 6 (Program Change 1 = recall Scene 1). This method of scene recall also allows us to go out of order with scenes, as each trigger is an absolute recall (ie “recall scene 5, recall scene 6” as opposed to “next”).

With all this information in mind, I set out to answer my fundamental question:

In the case of an actor absence, how can I keep my programming as close to my existing line-by-line assignments as usual, with a minimum of deviations, but still maintain everything else about a typical show (band levels, etc)?

I first took this question to some of my veteran colleagues on the theatre-sound Google group, and here are some of the ideas that others have used commonly:

Idea #1: swap the xlr patch back and forth in performance so that the correct actor is always in the correct Group

As I am the only one with access to the XLR hard patch during the show (i.e. this cannot be done for me by someone else backstage in my venue setup), I ruled this method out.  I felt it would be too easy for me to forget a patch change or get off track while doing my live mix in performance.  This would also have added the issue of actors’ EQs and other settings not corresponding to where they were patched, and as Daniel articulated, this could not be recalled in a show scene without potentially messing up the Group assignments.

Idea #2: create separate console files for each of these split track scenarios, and load them as needed

This would have worked, but the DM2000 does not make it obvious to the user which file is loaded, so this could potentially cause confusion. Also, if a new actor was to join the company during the run (which happened in this case), information in my split track console files would become incorrect and they would all have to be redone. So this method was also ruled out.

Thinking through these methods, and how my system was different from those that my colleagues were describing led me to come up with my own unique solution that I feel uses my resources elegantly and leaves a minimum amount of room for error. Which was this-

Idea #3: use SFX to trigger alternate sets of console scenes where the programming corresponds to that day’s split track scenario

If I could make this solution work, it would mean that I did not have to destroy any of my “default” show programming, and that no hard patching or changing of EQs (potentially messing up my groups) would be required in performance.

Here’s how I did it.

I began by analyzing the cover sheets I was given by stage management that explained who would cover which parts in case of absence.  I cross-referenced these with the actor-cue-breakdown I had created in pre-production to program the Groups for the show so that I could see where I had to make changes (ie it tells me who needs to be Grouped WHERE and WHEN).  Using those sheets, I could figure out exactly which console scenes would need to be altered and how, then made copies of those scenes with new scene #s using my remaining unused scenes after 70, which is my “end of day” scene.  Here’s what this looked like.

Console Group programming for my original and alternate scenes side-by-side. Performers’ names (except Joy H and Megan L) blurred for privacy.


For visual clarity, I write “GrpA” in CAPS when a person is faded UP in a Group, and “grpa” when they are Grouped but faded DOWN (meaning that they will be Ungrouped in the subsequent scene).This sheet also generates itself in vertical where the actors are ordered by input numbers, and that document is what I use to program the show.

We can see above that in my original Scene 42, MEGAN is in Group C, as she plays the “Milk Seller”. If JOY (initials JH) is out, MEGAN understudies parts of JOY’s role, but still plays the “Milk Seller”.  So for this scenario, I would patch MEGAN into JOY’s input channel for the entire show, then trigger Scene 71 instead of Scene 42 so that MEGAN would still come up in Group C.  JESSICA (swing) is plugged into MEGAN’s input channel and her mic is not in a Group, as in this scene she would be covering JOY not MEGAN, and JOY’s track does not speak/sing in Scene 42.

I wound up doing this for 5 different split track scenarios, and creating about 11 alternate console scenes in total.  I only created alternate Scenes where individual pickups needed to be made correctly, and ignored those where both tracks were in the ensemble (i.e. JOY and MEGAN are both in Group F later on for Scene 46, so no new scene was needed as the original Group programming would still be correct).

The next challenge was how to trigger these alternate scenes, and, more precisely, how to ONLY trigger them if we were running a split track scenario. For this, I turned to SFX.

I created 5 new copies of my “Sound Control List” (its SFX ID is “A”), which is what I use on SFX to trigger the console scenes for the show, as well as some sound effects, with all the triggers being in sequential show order.  The list is controlled by a MIDI button that sends a certain NOTE ON, which SFX recognizes as “GO on List A”.  In my alternate copies of “List A” (I called them lists “F” through “J”, respectively) I then replaced the triggers for the original scenes with ones for my alternate scenes as needed.  However, unless I could figure out how to deactivate or activate these lists per scenario, my console would think that all six lists wanted to be firing each time I hit my GO button, which would lead to lots of double-GOs and mass midi confusion…

I solved this by writing a Script into SFX that asks the user which of these cue lists needs to be enabled, and based on their answer, disables all the other cue lists. This prevents accidentally running the wrong sequence of scenes, as the cue lists other than the one needed for the show literally will not function or respond to presses of the MIDI GO button.

When the Prompt for the script is triggered, this popup box appears:


Then for each option (in this case the options are “JOY, KAREN, SHANNON, RICHARD, CLEVE, and DEFAULT) there is an if/else statement that responds based on which name the user clicks. Each of these if/else statements has code to activate that person’s cue list and to disable all the other cue lists, including the default one (List “A”). SFX then makes your chosen control list the top one, and the MIDI GO button will trigger that list only.  Here is the “JH OUT” Control list (List “F”), having been activated after I clicked “JOY”.


At this point in my preshow I will already have swapped the correct mic rigs onto the correct transmitters, adjusted my analog gain pots as needed, and recalled the actors’ EQs into the correct channels (I do this in my first safe scene of the show, which is my RF check scene). So all that will change about the show in performance is which scenes the SFX fires and are therefore recalled on the console. The line-by-line mix can be performed as usual on the usual faders.

Thanks to Colin on SFX-Users Yahoo Group, whose PickMagic script I used as a starting point for my own script. Thanks also to my high school computer science teacher, Gordon Campbell, who taught me to parse out my methods and think in a logical way that led me to these conclusions.

I am happy to share more information or make my script syntax available. If that interests you, or you have other questions, my contact info is to the right of this blog post. We’ll be testing it live this weekend, as JOY has a contractual release, and MEGAN and JESSICA will be on.

Wish me luck, and thanks for reading!