Software Documentation

Software Documentation

Firing SystemsDocumentation

Integration Intermediate Last updated: October 20, 2021

23 PyroDigiT

To create and export a script for the PyroDigiT firing system, please follow these three steps:

  1. Design the show.
  2. Set the Section field for launch positions with AFC32 units (Right-click positions and edit position properties to enter the AFC32 unit number 1-99 servicing those positions, if any, into the Section field.).
  3. Address the show (“Addressing > Address show”).
  4. Export the script (“File > Export > Export firing scripts“).

Step 3 creates the script file, which is a CSV file that you can import into the PyroDigiT software.

Figure 1 – PyroDigiT Master 999 Touch control panel


The PyroDigiT CSV is a human-readable text file that contains the essential information for the PyroDigiT Master 999 Touch to fire the show.


Table 1 – File format and encoding

File format Extension Text encoding Field delimiter End-of-line
Text CSV UTF-8 Tab CRLF 

The script contains five header lines, followed by a single header row with the column names of the rows, followed by the rows themselves. The special characteristics of the script are shown in the following table:


Table 2 – Special characteristics

Special characteristics Description
Sort order of rows Rows are sorted by ignition time.
What rows represent Each row identifies a unique firing pin ignition (i.e., unique rail address, pin address, ignition time).
Module types Rows in the script can represent multiple types of modules:

pyrodigit_slave_15 — 15 pins
pyrodigit_slave_30 — 30 pins
pyrodigit_slave_60 — 60 pins
pyrodigit_afc32_sm15 — 15 pins

Slave modules connect directly to PyroDigiT Master 999 Touch controllers and therefore only need a single module number XXX to identify the slave, in the Rail Address field in the exported script.   SM15 slats  connect to AFC32 units, which connect to Master 999 Touch controllers.  Thus SM15 slats require two fields for their addresses: XXX to identify the slat in the Rail Address field; and YY to identify the AFC32 unit, in the AFC32 Address field. (See Using AFC32 units, below.)

Special characters Fields include any Unicode characters except: ‘ , ; ” \ tab and newline and other control characters.
Support for semi-autonomous firing The Cue and Track fields support semi-autonomous firing mode.  Cue numbers begin at one and increment with each new ignition time or each new track group of effects.  The Track is an optional identifier associating a collection of rows that are to be fired together as a sequence or “macro” with a single trigger in semi-autonomous mode on the firing system.  Cue numbers do not increment within a track group of effects.
Header The file contains a five line header, consisting of:

Unique identifier (a SHA1 checksum of the file contents)
Show name
Music path
Show date
Show location

Each script row has the following fields:


Table 3 – Specifications of script fields

Field name Description
Cue The cue count, beginning with one and incrementing at each new ignition time or at each new track group of effects.  The cue count does not increment within a track group of effects even if the effects in the track group have different ignition times.
Ignition Time The exact time of the firing system’s “ignition event” (application of a voltage to a pin) that ignites e-matches or triggers a sequencer that ultimately leads to the ignition of effects. Format is HH:MM:SS.DDD.
Duration The duration represents the lifetime of the perceived visual effect, which is usually interpreted for shells as the time from break to dissipation of the stars. Format is in seconds with two digits after the decimal point.
Device Count The number of devices (shells) represented by the row.  May be more than one in the case of chains or multiple e-matches connected to the same firing system pin.
Delay The delay from the ignition time to the perceived visual effect.  This delay typically includes the lift time (for shells) plus any fuse time between the ignition time and the first launch of the effect.  Format is in seconds with two digits after the decimal point.
Effect Name The name of the effect.
Size The device caliber.  Format is either a number followed by double-quote for inches or “mm” for millimeters, or the string “NA” or blank for effects for which the caliber term is not applicable.
Category A user defined string identifying the category of the effect.
Type One of several pre-defined terms that have specific meaning in Finale 3D (see Why is ‘Type’ so important? What depends on it?).
Angles A list of angles in degrees, separated by spaces, for the effects represented by this row in the script. 
Position The name of the launch position from which the effect is fired.
Module Type The type of module or slat: pyrodigit_slave_15, pyrodigit_slave_30, pyrodigit_slave_60, pyrodigit_afc32_sm15.
AFC32 Address For effects fired from SM15 slats connected to AFC32 units, the Section field in the script is the AFC32 unit number, from 1-99. The addressing functions copy the Section field from the launch position into the script event’s Section field at the time of addressing, so please specify the AFC32 unit for each launch position by editing the position properties prior to addressing the show.  (See Using AFC32 units, below.)
Rail Address The module number XXX in the case of slave modules or slat number XXX in the case of SM15 slats connected to AFC32 units (see Section field for identifying the AFC32 units). 
Pin Address The pin number.
Part Number A user-defined identifier for the effect.
Manufacturer Part Number The manufacturer part number.
Track A string identifying a group of effects that are to be fired as a sequence with a single trigger if the firing system is in semi-autonomous mode.

The example script below shows an exported script with nine pairs of shots and two different types of modules.  The cue numbers are the same for both effects in each pair.  The rail address of the AFC32 unit 15-pin slats contain two numbers to identify the AFC32 unit and the slat independently.


My Test Show
New York
Cue	Ignition Time	Duration	Device Count	Delay	Effect Name	Size	Category	Type	Angles	Position	Module Type	AFC32 Address	Rail Address	Pin Address	Part Number	Manufacturer Part Number	Track
1	00:00:02.760	1.02	2	2.24	(2) Red Chrysanthemum ...	2"	2 Assorted	shell	0 0	Pos-01	pyrodigit_slave_15		001	1	G2SH1000	G2SH1000	
2	00:00:05.260	1.02	2	2.24	(2) Red Chrysanthemum ...	2"	2 Assorted	shell	0 0	Pos-02	pyrodigit_slave_15		002	1	G2SH1000	G2SH1000	
3	00:00:07.760	1.02	2	2.24	(2) Red Chrysanthemum ...	2"	2 Assorted	shell	0 0	Pos-03	pyrodigit_slave_15		003	1	G2SH1000	G2SH1000	
4	00:00:10.260	1.02	2	2.24	(2) Red Chrysanthemum ...	2"	2 Assorted	shell	0 0	Pos-04	pyrodigit_afc32_sm15	01	004	1	G2SH1000	G2SH1000	
5	00:00:12.760	1.02	2	2.24	(2) Red Chrysanthemum ...	2"	2 Assorted	shell	-30 30	Pos-05	pyrodigit_afc32_sm15	01	005	1	G2SH1000	G2SH1000	
6	00:00:15.260	1.02	2	2.24	(2) Red Chrysanthemum ...	2"	2 Assorted	shell	-30 30	Pos-06	pyrodigit_afc32_sm15	01	006	1	G2SH1000	G2SH1000	
7	00:00:17.760	1.02	2	2.24	(2) Red Chrysanthemum ...	2"	2 Assorted	shell	0 0	Pos-07	pyrodigit_afc32_sm15	01	007	1	G2SH1000	G2SH1000	
8	00:00:20.260	1.02	2	2.24	(2) Red Chrysanthemum ...	2"	2 Assorted	shell	0 0	Pos-08	pyrodigit_afc32_sm15	01	008	1	G2SH1000	G2SH1000	
9	00:00:22.760	1.02	2	2.24	(2) Red Chrysanthemum ...	2"	2 Assorted	shell	0 0	Pos-09	pyrodigit_afc32_sm15	01	009	1	G2SH1000	G2SH1000		

Figure 1 – Example PyroDigiT script with slaves and AFC32 slats


Using AFC32 units

As discussed above, PyroDigiT AFC32 units require two addresses for their pins, XXX to identify the slat number, and YY to identify the AFC32 unit itself.  When you address the show using Finale 3D‘s addressing functions, Finale 3D assigns the slat numbers XXX for all the shots, but the addressing functions do not take into consideration the AFC32 unit numbers YY for the shots.  You need to specify the AFC32 unit numbers yourself, prior to addressing the show, by setting the numbers in the “Section” field of the launch positions’ position properties.


Figure 2 – Set the position properties’ Section field to the AFC32 unit number


Since you may want multiple launch positions to use the same AFC32 units you can set multiple positions’ Section fields to the same AFC32 unit number.  Here are two examples.

In the first example, the user has four launch positions total, A, B, C, D.  Each launch position has 16 x 15-pin slats.  Thus 64 15-pin slats are required in total, which means two AFC32 units are required.  So the user sets the Section field of launch position A and B to 01 (for example), and sets the Section field of launch positions B and C to 02.  The rows in the exported script will thus include AFC32 numbers YY and slat numbers XXX of,

At position A:

At position B:

At position C:

At position D:

Figure 3 – Example addresses for two launch positions A and B sharing the same AFC32, and two other launch positions C and D sharing a different AFC32


Alternatively, the user may want to put a separate AFC32 at each of the positions A, B, C, D.  That would require four AFC32 units instead of two, which is less efficient but maybe the user wants to do it anyway.  To do that, the user specifies the Section of position A is 01; the Section of position B is 02; the Section of position C is 03; the Section of position D is 04.  When the user exports the script, it will contain,

At position A:

At position B:

At position C:

At position D:

Figure 4 – Example addresses for four launch positions A, B, C, and D each with its own AFC32


Since the AFC32 Address is not part of the Rail Address or the Pin Address, it is is not present in the standard label configurations.  To get the AFC32 Addresses to be included on the labels, you will need to modify an existing labels template or create a new one that has the Section field from the script window as one of the displayed fields (recall that the AFC32 Address comes from the Section field in Finale 3D.)  Instructions for configuring labels templates are, Labels basic instructions.

Table 4 – Example files

Download link Explanation
test_pyrodigit.csv Example exported file  (CSV)
test_pyrodigit.fin Example show file