To create and export a script for the Fire Pioneer firing system, please follow these three steps:
- Design the show.
- Address the show (“Addressing > Address show”).
- 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 Fire Pioneer software.
Figure 1 – Fire Pioneer control panel
The CSV header row defines the fields, and the terminology is similar to the column headers in Finale 3D. A few differences to note are:
- Track in Finale 3D means “Segment” in Fire Pioneer, no difference.
- Hazard in Finale 3D means “Priority” in Fire Pioneer.
- Part Number in Finale 3D doesn’t have a corresponding field in the Fire Pioneer script format, so it is stored in the “EffectComment1” field in the exported Fire Pioneer script.
The other minor variations in terminology and adaptations are explained in Table 3, below.
Table 1 – File format and encoding
|File format||Extension||Text encoding||Field delimiter||End-of-line|
|Text||.CSV||UTF-8 with BOM (0xef 0xbb 0xbf)||; (semi-colon)||CRLF|
The script contains rows for the firing events, i.e., unique combinations of module, pin, and ignition-time. Multiple effects can be combined on a single cue. The special characteristics of the script are shown in the following table:
Table 2 – Special characteristics
|Sort order of rows||Rows sorted ascending by effect time.|
|What rows represent||Each row represents a unique firing event, a module/pin/event-time combination. For example, a chain of five shells will be one row, not five. A pair of shells shot together from the same position will be one row, not two, even if the shells are different effects. A flight of shells shot together from multiple positions with the same module-pin using scab wire is still one row.
Events at different times are necessarily different rows, even if their addresses are the same. For example, two flame projector shots at different times, triggered by the same module-pin address, will be two rows because they are at different times.
|Header||The file contains a single header row with the column names, in the same format as the CSV data rows themselves.|
|Multi-hit pins||Non-pyro effects like flames and relays can be triggered multiple times on the same module-pin address. The standard pyro addressing functions in Finale 3D assign pins sequentially, so it may be easiest to address multi-hit pins in Finale 3D by editing the script table by hand and then locking the edited rows so the show can be re-addressed for pyro without affecting them.|
|Special characters||The characters ‘ and “ and , and ; and \ and tab and newline will be filtered out of any text fields.|
|Minimum separation between cues||None required; millisecond resolution supported.|
|Module specifications||Supports 99 modules (numbered 1-99), each module with 32 pins (numbered 0-31).|
After the header, each row in the script has a number of fields separated by the semi-colon character. The names of these fields and their descriptions are the following:
Table 3 – Specifications of script fields
|Eid||The row number in the script, beginning with 1.|
|EventDescription||The word “Event” immediately followed by the row number in the script, beginning with 1.|
|EffectDescription||A description of the effect, preceded by a count in parentheses if the row represents more than one device, such as for a chain or a pair of effects ignited together.|
|ScriptTimeText||The effect time, formatted as HH:MM:SS,DDD.|
|Position||The position name.|
|Angle||ASCII-art characters (\ | /) indicating the angles of the shots; multiple characters if multiple devices are ignited by this firing row, e.g., \/ for an angled pair.|
|Qty||Number of devices ignited by this firing row if more than 1, or 1 as the minimum value.|
|Address||The firing system address of the shot: a four digit number, the first two digits being the module number (1-99), and the second two digits being the pin number (0-31).|
|Priority||The Hazard class, from 0-8, with 0 being the default value (the Hazard field in Finale 3D).|
|Segment||The track number, 0-9999, with 0 being the default value (the Track field in Finale 3D).|
|Comment||The script notes for the row (the Notes field in Finale 3D).|
|ScriptTimeMS||The effect time, in milliseconds.|
|FireTimeMS||The event time, in milliseconds.|
|Type||The type of the effect, which in Finale 3D is restricted to one of these enumerated values: cake, candle, single_shot, shell, ground, rocket, mine, comet, flame, other_effect, not_an_effect, rack.|
|Cal||The size of the effect, including units (e.g., 75mm); since double quote characters are filtered out of the exported Fire Pioneer script file, they will be missing from effect sizes in inches (e.g., 2.5 instead of 2.5″) (the Size field in Finale 3D).|
|Breaktime||The prefire time of the effect, formatted as a floating point number (the Prefire field in Finale 3D).|
|Duration||The duration of the effect, formatted as a floating point number.|
|VendorNumber||The manufacturer part number of the effect (the Manufacturer Part Number field in Finale 3D).|
|Location||The standard storage location for the effect (the Storage Location field in Finale 3D).|
|PRICE1||The standard price for the effect (the Price field in Finale 3D).|
|PRICE2||The standard cost for the effect (the Cost field in Finale 3D).|
|PRICE3||Finale 3D writes 0 to this field.|
|EffectComment1||Finale 3D writes the part number in this field (the Part Number field in Finale 3D).|
|EffectComment2||Finale 3D leaves this field blank.|
|FireoneSlat||Finale 3D writes 0 to this field.|
|FireoneCue||Finale 3D writes 0 to this field.|
|PyroAddr||Finale 3D writes 0 to this field.|
An example script is shown below. Notice the last two rows are at the same event time but have different modules and therefore cannot be combined into a single row.
Eid;EventDescription;EffectDescription;ScriptTimeText;FireTimeText;Position;Angle;Qty;Address;Priority;Segment;Comment;ScriptTimeMS;FireTimeMS;Type;Cal;Breaktime;Duration;VendorNumber;Location;PRICE1;PRICE2;PRICE3;EffectComment1;EffectComment2;FireoneSlat;FireoneCue;PyroAddr 1;Event1;Green Chrysanthemum;00:00:05,000;00:00:02,760;Pos-01;|;1;0100;0;0;;5000;2760;shell;2;2.24;1,02;G2SH1003;;1,45;0,0;0;G2SH1003;;0;0;0 2;Event2;Green Chrysanthemum;00:00:05,100;00:00:02,860;Pos-02;|;1;0200;0;0;;5100;2860;shell;2;2.24;1,02;G2SH1003;;1,45;0,0;0;G2SH1003;;0;0;0 3;Event3;Green Chrysanthemum;00:00:05,200;00:00:02,960;Pos-03;|;1;0300;0;0;;5200;2960;shell;2;2.24;1,02;G2SH1003;;1,45;0,0;0;G2SH1003;;0;0;0 4;Event4;Green Chrysanthemum;00:00:05,300;00:00:03,060;Pos-04;|;1;0400;0;0;;5300;3060;shell;2;2.24;1,02;G2SH1003;;1,45;0,0;0;G2SH1003;;0;0;0 5;Event5;Green Chrysanthemum;00:00:05,400;00:00:03,160;Pos-05;|;1;0500;0;0;;5400;3160;shell;2;2.24;1,02;G2SH1003;;1,45;0,0;0;G2SH1003;;0;0;0 6;Event6;Green Chrysanthemum;00:00:05,500;00:00:03,260;Pos-06;|;1;0600;0;0;;5500;3260;shell;2;2.24;1,02;G2SH1003;;1,45;0,0;0;G2SH1003;;0;0;0 7;Event7;Green Chrysanthemum;00:00:05,600;00:00:03,360;Pos-07;|;1;0700;0;0;;5600;3360;shell;2;2.24;1,02;G2SH1003;;1,45;0,0;0;G2SH1003;;0;0;0 8;Event8;Green Chrysanthemum;00:00:05,700;00:00:03,460;Pos-08;|;1;0800;0;0;;5700;3460;shell;2;2.24;1,02;G2SH1003;;1,45;0,0;0;G2SH1003;;0;0;0 9;Event9;Green Chrysanthemum;00:00:05,800;00:00:03,560;Pos-08;|;1;0801;0;0;;5800;3560;shell;2;2.24;1,02;G2SH1003;;1,45;0,0;0;G2SH1003;;0;0;0 10;Event10;Green Chrysanthemum;00:00:05,800;00:00:03,560;Pos-09;|;1;0900;0;0;;5800;3560;shell;2;2.24;1,02;G2SH1003;;1,45;0,0;0;G2SH1003;;0;0;0
Figure 1 – Example Fire Pioneer script
Table 4 – Example files
|firepioneer.csv||Example exported file (CSV)|
|test_firepioneer.fin||Example show file|