Software Documentation

Software Documentation

Firing SystemsDocumentation

Integration Intermediate Last updated: March 31, 2023

24 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.

To compile the CSV script file from Finale 3D and download it to the PyroDigiT controller, please follow these steps:

  1. Download and install the “Finale 3D to PyroDigiT System Compiler” application (link available at the bottom of this page).
  2. Launch the compiler application and click “Select Finale 3D CSV”. After selecting the file, the software reads the script contents and displays the various tracks into which the show is divided.
  3. For each track, called “Section X”, enter a name and select a music file. Or, if the show is not divided into tracks, enter a name and select the music for the whole show.
  4. Click on “START>>” to compile the show. The PyroDigiT Pyroshow software is not required, the show is now ready to be downloaded to the PyroDigiT controller.
  5. Launch the PyroDigiT “Project Manager” application and download the show to the PyroDigiT controller.

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
pyrodigit_afc32_sm30 — 30 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 and SM30 slats  connect to AFC32 units, which connect to Master 999 Touch controllers.  Thus SM15 and SM30 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-automatic firing The Cue and Track fields support semi-automatic 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-automatic mode on the firing system.  Cue numbers do not increment within a track group of effects.
Start/end times for semi-automatic tracks To specify the start and end time of a track, if different from the track’s first and last events’ times, insert an empty event at the start time, before the track’s first event, and an empty event at the end time, after the track’s last event.  Empty events are events that do not have a Part Number, and therefore do not have fields like Type or Description.  Empty events do have valid Track fields, however, and the Track field must match the track of (pyro) events with which the empty cue is associated (see Empty events, below).
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, pyrodigit_afc32_sm30.
AFC32 Address For effects fired from SM15 or SM30 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 or SM30 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-automatic 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.

 

1234567890
My Test Show
C:\Users\wharvey\Documents\finale_3d_website_media\test_pyrodigit02.mp3
NYE
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:
01-001
01-002
01-003
...
01-016

At position B:
01-017
01-018
01-019
...
01-032

At position C:
02-033
02-034
02-035
...
02-048

At position D:
02-049
02-050
02-051
...
02-064

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:
01-001
01-002
01-003
...
01-016

At position B:
02-017
02-018
02-019
...
02-032

At position C:
03-033
03-034
03-035
...
03-048

At position D:
04-049
04-050
04-051
...
04-064

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.

 

Empty events

Empty events are used to specify the start and end time of tracks in the exported script, if different from the tracks’ first and last event times themselves.  In the example shown in Figure 2, both tracks have start and end times that are 2-seconds before and after the events in the track.  To add empty events in Finale 3D, simply use the menu item, “Script > Insert empty cue”.

Empty events in Finale 3D are events that do not have Part Numbers.  Empty events in a show will not be included in the exported PyroDigiT script unless they have a non-empty Track field that matches a track that contains non-empty cues.  In the exported script, all fields of empty events are blank except the Ignition Time, possibly the Effect Name, and the Track.  The Effect Name will contain the Notes field from the event in Finale 3D, which can be used for comments or names of tracks in the exported script.

 

1230086691

C:\Users\will\Downloads\test-pyrodigit02.mp3


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
	00:00:01.000																1
1	00:00:03.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM15-ON-20	pyrodigit_afc32_sm15	20	001	1	G2XX1000	G2XX1000	1
1	00:00:04.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM15-ON-20	pyrodigit_afc32_sm15	20	001	2	G2XX1000	G2XX1000	1
1	00:00:05.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM15-ON-20	pyrodigit_afc32_sm15	20	001	3	G2XX1000	G2XX1000	1
1	00:00:06.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM15-ON-20	pyrodigit_afc32_sm15	20	001	4	G2XX1000	G2XX1000	1
1	00:00:07.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM15-ON-20	pyrodigit_afc32_sm15	20	001	5	G2XX1000	G2XX1000	1
1	00:00:08.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM15-ON-20	pyrodigit_afc32_sm15	20	001	6	G2XX1000	G2XX1000	1
1	00:00:09.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM15-ON-20	pyrodigit_afc32_sm15	20	001	7	G2XX1000	G2XX1000	1
1	00:00:10.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM15-ON-20	pyrodigit_afc32_sm15	20	001	8	G2XX1000	G2XX1000	1
1	00:00:11.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM15-ON-20	pyrodigit_afc32_sm15	20	001	9	G2XX1000	G2XX1000	1
1	00:00:12.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM15-ON-20	pyrodigit_afc32_sm15	20	001	10	G2XX1000	G2XX1000	1
	00:00:14.000																1
	00:00:23.000																2
2	00:00:25.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM15-ON-20	pyrodigit_afc32_sm15	20	001	11	G2XX1000	G2XX1000	2
2	00:00:26.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM15-ON-20	pyrodigit_afc32_sm15	20	001	12	G2XX1000	G2XX1000	2
2	00:00:27.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM15-ON-20	pyrodigit_afc32_sm15	20	001	13	G2XX1000	G2XX1000	2
2	00:00:28.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM15-ON-20	pyrodigit_afc32_sm15	20	001	14	G2XX1000	G2XX1000	2
2	00:00:29.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM15-ON-20	pyrodigit_afc32_sm15	20	001	15	G2XX1000	G2XX1000	2
2	00:00:30.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM15-ON-20	pyrodigit_afc32_sm15	20	002	1	G2XX1000	G2XX1000	2
2	00:00:31.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM30-ON-20	pyrodigit_afc32_sm30	20	003	1	G2XX1000	G2XX1000	2
2	00:00:32.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM30-ON-20	pyrodigit_afc32_sm30	20	003	2	G2XX1000	G2XX1000	2
2	00:00:33.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM30-ON-20	pyrodigit_afc32_sm30	20	003	3	G2XX1000	G2XX1000	2
2	00:00:34.000	2.14	1	0.0	Red Comet	2"	2 Assorted	comet	0	SM30-ON-20	pyrodigit_afc32_sm30	20	003	4	G2XX1000	G2XX1000	2
	00:00:36.000																2

Figure 2 – Example script with two tracks that have start/end times specified by empty events

 

Table 4 – Example files & tools

Download link Explanation
test_pyrodigit.csv Example exported file  (CSV)
test_pyrodigit.fin Example show file
FTP Compiler 1.1.3.exe Finale 3D to PyroDigiT System Compiler