Software Documentation

Software Documentation

Firing SystemsDocumentation

Integration Intermediate Last updated: October 20, 2021

8 Fire Control G2

The Fire Control G2 firing system supports DMX for lights or special effects, and a variety of module types for pyro.  To create and export a script for the Fire Control G2 firing system, please follow these steps:

  1. Design the show.
  2. Choose module type per-position (right-click position and “Edit position properties”; optional).
  3. Address the show (“Addressing > Address show”).
  4. Export the script (“File > Export > Export firing scripts“).

If your show uses a single type of module along with, optionally, DMX, then you can skip Step 2 and choose the module type for the entire show when you address the show in Step 3.  Step 3 creates the script “.fcp” file, which is a JSON file with a length header that you can import into your firing system or look at in a text browser.


Figure 1 – The Fire Control G2 firing system


The various different module types use different formatting for their pin numbers — letters for Fire Control’s own FM modules; hexadecimal numbers beginning with zero for Pyrodigital modules; and decimal numbers beginning with one for FireOne modules.  As you can see in Figure 2, Finale 3D supports all three formatting conventions, and applies the matching formatting convention for the module type in the script window.


Table 1 – File format and encoding

File format Extension Text encoding Field delimiter End-of-line
JSON fcp UTF-8, no BOM, preceded by 32 bit big-endian integer representing the length of the rest of the file N/A CRLF 


The JSON script file for Fire Control G2 controllers is a “project” file that contains an “equipment” section and a “shows” section that together contain the information required to fire the show and to populate the user interface of the controller in a human readable way, including channel label names for any DMX fixtures used in the project.

The “shows” section may contain multiple shows, and each show may contain multiple “cues”, and each cue may contain multiple “events”.  The hierarchical organization of the project as shows and cues is based on the use of the “Track” field of the script in Finale 3D, as explained in Table 2 below (please unhide the “Track” field in the script window to see it).  If the you leave the Track field in Finale 3D blank, the project will contain a single show, which will have a single cue representing the entire show, and the event times in the cue will be relative to the beginning of the show in Finale 3D unless you have explicitly added a show export offset in the “Show > Set show information…” dialog.  In other words, leaving the Track column blank in Finale 3D results in a full show script, as you would use for a pyromusical.

If you want to organize parts of the show in Finale 3D as shows and cues on the Fire Control G2 controller, you will use the Track field in Finale 3D as shown in Table 2.


Table 2 – Special characteristics

Special characteristics Description
Module types For exported Fire Control G2 scripts, Finale 3D supports Pyrodigital, FireOne, and Fire Control FM16 modules, in addition to DMX, in the same show.

Pyrodigital (16 pins) and DMX
FireOne (32 pins) and DMX
Fire Control G2 FM16 (16 pins) and DMX

You can set the module type on a per-position based by right-clicking the position in Finale 3D and doing “Edit position properties”.  If all modules are in the show are the same type, then you can simply select the module type when addressing the show; and setting the position properties is unnecessary.

(shows and cues)
The Fire Control G2 script organizes sections and subsections of the Finale 3D show file as “shows” and “cues”, corresponding to values in Finale 3D‘s “Track” field.

  • If you leave the Track field in Finale 3D empty, then the exported script file will contain a single “show” named “Show #1” with a single cue named “Cue #1”, and the times of the events will be relative to the beginning of the show in Finale 3D.
  • If you specify one or more Track values, then the exported script file can contain multiple “shows” or “cues”, and the times of the events will be relative to the first event in each cue.

To use the Track field to divide the Finale 3D show into “shows” and “cues”, set the Track value to :

show name : cue name

to specify a show and cue for the event (no spaces before or after the colon).  If you set the Track value to a name without a colon, that will define a cue name alone, for a default show name.  Thus if you want a single show and multiple cues, you do not need to concern yourself with entering show names or colon characters.  Likewise, if you want multiple shows each with one default cue for the entire show, then you can set the Track value to the show name, followed by colon, with no cue name.

In the Finale 3D script, the track sections can be in any order, but must not contain any interwoven or overlapping events.  Separate tracks in DMX scripts therefore need separate safety channels.

(backup cues)
The Fire Control G2 user interface supports binding cues to faders on the system wing panel.   The cues available to bind are in a special show called “backups” in the “shows” section of the script file.  If you want to designate some sections of your show as backup cues that can be bound to wing faders, use the “Track” field in Finale 3D to create a show in the show section of the script file named “backups”.  See the “Shows section” paragraph below for further details.
Structure of G2 script file The Fire Control G2 script is a JSON file with these four key/value pairs:

“id”: “1068bbe1-f0f2-4e74-93ba-9cb9fe4d49c3”,
“name”: “test-fire-control01”,
“equipment”: <equipment section>,
“shows”: <shows section>

The “id” is a GUID created at the time of export, identifying the project.  The “name” is the name of the show in Finale 3D.  The “equipment” and “shows” are explained below.  The term “show” in Fire Control’s terminology is different from the definition of a “show” in Finale 3D, which is a separate .fin file.

Equipment section Finale 3D writes fields for fm, pd, f1, and dmx in the equipment section if they are used in the show.

“equipment”: {
“fm”: [{ “addr”: “1”, “id”: “{c612ca16-8dc1-4714-ba38-0832557e492d}”, “pos”: [“0”, “0”], “hwgen”: “G1”, “relay”: “false”, “wless”: “false”}],
“pd”: [{ “addr”: “2”, “id”: “{2bda2bbe-f86b-406c-9d42-1f81cf60eae4}”, “pos”: [“0”, “0”]}],
“f1”: [{ “addr”: “3”, “id”: “{90da29c8-6d29-45f8-a3c5-694d4a87b2fa}”, “pos”: [“0”, “0”]}],
“dmx”: [{“addr”: “1”, “id”: “{f74a2dab-52a6-4680-ae23-40db816ff285}”, “name”: “04DMX”,”channels”: [{ “address”: “1”, “name”: “ON/OFF”}]
}, {“addr”: “10”, “id”: “{ebb4a6d1-3d25-4972-ae9f-65e43d6b9a24}”, “name”: “05DMX”, “channels”: [{“address”: “10”, “name”: “Angle”}, {“address”: “11”, “name”: “Speed”}, {“address”: “12”, “name”: “Ignition” }, {“address”: “13”,”name”: “Open Time”}, {“address”: “14”,”name”: “Macro”}, {“address”: “15”,”name”: “Safety Channel”}]}]}

In the equipment section of the script, all equipment (modules) other than DMX fixtures will contain the following variable properties:

“addr”: “1”
“id”: “{c612ca16-8dc1-4714-ba38-0832557e492d}”
“pos”: [“0”, “0”]

The “addr” field is the integer module number beginning with “1”, a global address for all modules in the project of all types, excluding DMX.   The “id” is a GUID used to identify the piece of equipment, created at time of export.  The “pos” coordinates are zero since they appear to be unsupported in Fire Control G2.

The Fire Control G2 FM16 module equipment definitions exported by Finale 3D will also contain the following constant properties with pre-defined values:

“hwgen”: “G1”
“relay”: “false”
“wless”: “false”

The DMX fixtures in the equipment section contain properties of the form,

“addr”: “1”
“id”: “{f74a2dab-52a6-4680-ae23-40db816ff285}”
“name”: “04DMX”
“channels”: [{ “address”: “1”, “name”: “ON/OFF” }]

wherein “addr” is the DMX Channel Base from Finale 3D, “name” is the position name, “id” is a GUID created at time of export, and “channels” are an array of absolute channel numbers (as you would see on the fixture itself, not offsets relative to the DMX Channel Base) and their names.

Shows section The shows section of the script contains an array of “shows” each with the fields shown below.  The “shows” in an exported Fire Control G2 script are parts of a single show file in Finale 3D.

“shows”: [{
“project”: “1068bbe1-f0f2-4e74-93ba-9cb9fe4d49c3”,
“id”: “6c72fe99-1bba-4dee-9015-018c55507c73”,
“name”: “showx”,
“timer”: “internal”,
“cues”: <cues section>
}, {
“project”: “1068bbe1-f0f2-4e74-93ba-9cb9fe4d49c3”,

The “project” field refers to the GUID of the project file.  The “id” field is a GUID created at time of export identifying the show — unless the show is named “backups” in which case the “id” field value is “backups” instead of a GUID.   In the Fire Control G2 software, cues in the “backups” show can be bound to faders on the wing.

The name of the show is either “Show #1” by default, or a name extracted from the “Track” field in Finale 3D, as explained below.  The “timer” field is always “internal” for shows exported from Finale 3D.  The cue section is defined below.

Cues section The cues sections of shows define separately triggerable sections of a show.  Cues and shows in Fire Control G2 terminology are both extracted from the “Track” field in Finale 3D.  If the Track fields are blank in Finale 3D, the single show in the exported script will contain a single cue called “Cue #1” by default.  In this case, the event times will be relative to the beginning of the show in Finale 3D unless you have explicitly added a show export offset in the “Show > Set show information…” dialog.

“cues”: [{
“note”: “B”,
“state”: “NotFired”,
“events”: <events section>
}, {
“note”: “C”,

The “note” field is the name of the cue, which is extracted from the Track field in Finale 3D.  The “state” field is always written as “NotFired” from Finale 3D.  The “events” field is an array explained below.

Events section  The events section contains the firing events and DMX events, sorted by time and intermixed.  The events refer to the hardware in the equipment section by GUID.  The key/value pairs in the events have some differences between the module types and additional differences for DMX events.

“events”: [{
“time”: “0”,
“out”: “0”,
“note”: “Red Comet”,
“type”: “pyro”,
“fm”: “{c612ca16-8dc1-4714-ba38-0832557e492d}”
}, {
“time”: “0”,
“out”: “0”,
“note”: “Red Comet”,
“type”: “pd”,
“pd”: “{2bda2bbe-f86b-406c-9d42-1f81cf60eae4}”
}, {
“time”: “0”,
“out”: “0”,
“note”: “Red Comet”,
“type”: “f1”,
“f1”: “{90da29c8-6d29-45f8-a3c5-694d4a87b2fa}”
}, {
“time”: “0”,
“dmx”: “{f74a2dab-52a6-4680-ae23-40db816ff285}”,
“type”: “dmx”,
“chan”: “0”,
“holdlevel”: “255”,
“holdtime”: “300”

The “time” is an integer in milliseconds, relative to the start of the cue.  The “out” field is the pin number represented as a decimal integer index beginning with zero, independent of the module type.  Pin numbers for Pyrodigital modules are thus 0-15, not 0-F; and for FireOne are 0-31, not 1-32; and for Pyro Control modules are 0-15, not A-P.  The “note” is the effect name.  The “type” is “pyro” for fm modules, and is “pd” or “f1” for pd and f1 modules, respectively; and is “dmx” for dmx events.  The “fm” or “pd” or “f1” or “dmx” field contains a GUID referring to the corresponding module or fixture defined in the equipment section.

DMX events contain “chan” which is a 0-based index into the channels of the DMX personality of the fixture defined in the equipment section.  The “holdlevel” is the channel value and “holdtime” is the duration for which the value is held before being reset to zero.  Fire Control G2 controllers support additional DMX controls for fading up and down before and after a hold time, but Finale 3D does not currently use these capabilities.

Exported scripts from Finale 3D may contain long “holdtime” values for events that are held indefinitely in the show design, such as an angle of a moving head or a flamer nozzle, for which it may not be desirable to reset the value to zero in between shots.  While these long “holdtime” values may appear awkward when viewed in the Pyro Control G2 interface, they are not errors.


When you address a show containing different module types for the Fire Control G2 controller, the rail and pin addresses in Finale 3D may be in different formats, as shown in Figure 2.


Figure 2 – Script with three positions using three different types of modules — FM, PD, and F1.


Table 3 – Example files

Download link Explanation
test-fire-control01.fcp Example exported file  (CSV)
test-fire-control01.fin Example show file (FIN)