Type any phrase to search documentation

Software Documentation

Exporting a firing system scriptDocumentation

IntegrationIntermediate Last updated: November 11, 2019

22 Pyromac

To create and export a script for the Pyromac firing system in Finale 3D, please follow these steps:

  1. Add positions for your physical DMX devices (DMX only).  If you are using DMX devices like flame units, each physical DMX device must have its own position (no pyro from the DMX position!), and they all must be configured with the same module number, 901, independent of what Pyromac module they are actually connected to.   All Pyromac modules serve the same global DMX universe.  If you have multiple physical DMX devices that you want to operate independently, you need to configure them to listen to different ranges of DMX channels, and correspondingly you need to configure their positions in Finale 3D with the proper DMX Channel Base.
  2. Configure the DMX positions (DMX only).  If you are designing a show with flame units or other DMX devices, (a) set the DMX positions’ “Module Type” to Pyromac DMX Device, (b) set their “Start Module” to 901, (c) set their “DMX Channel Base” to the DMX channel range they listen to, minus one (don’t forget to subtract one!), and (d) set their “Section” to be the same for all of them, (for example, “DMX”), and (e) set the Section of each pyro position to be a unique name.  See Flame systems basic instructions and Exporting a firing system script for flame systems for further instructions.
  3. Address the show (“Addressing > Address show”).  If you have DMX positions, then on the “Addressing > Address show…” dialog remove the “Position” constraint from the modules line in paragraph (3) to allow the DMX positions to share the same module number (901).  With the “Position” constraint removed, the modules can be shared across positions having the same Section.  Since you’ve configured your DMX positions to have the same Section, they can share module 901.  Since you’ve configured each of your pyro positions to unique Sections, they cannot share modules with each other or with the DMX positions.
  4. Export the script (“File > Export > Export firing scripts“).

If the script contains DMX for flame systems, please see Flame systems basic instructions for instructions to set up the show and Exporting a firing system script for flame systems for further instructions for exporting a script.  Step 4 creates the script file, which is a text file with a “TXT” extension.  While it is possible to open this file in a text editor, the file is not meant for humans to read or write.  It contains only the data that the controller requires for shooting the show.  For pyro, most Pyromac users will not need to concern themselves with the file format described in this section. DMX setup and configuration are complicated, so you may want to examine the script visually to ensure it represents what you expect. The file format described in this section provides the necessary details.

Figure 1 – The Pyromac firing system



Table 1 – File format and encoding

File format Extension Text encoding Field delimiter End-of-line
Text .TXT ASCII Semicolon 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

Special characteristics Description
Sort order of rows Rows sorted ascending by effect time, then by module number, then by pin number.
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 ignition times are necessarily different rows, even if their addresses or effect times 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 two-line header row with boilerplate text that defines the columns:

Pyromac firing system
Cue;Time;Delay;Address (Mod,Pins);"Note";Duration
Time resolution The Pyromac system supports hundredths of a second resolution.
Semi-automatic firing The exported script will be semi-auto if any event contains a valid “Track” in Finale 3D; tracks may be integers 1-9999 or letters followed by integers in that range (example: “1” and “Trk1” are both okay).  In the exported script, the “Cue” field contains the track number formatted with four digits 0001-9999 (letters stripped out), if set; otherwise it contains the same-time cue count in the same four digit format. Tracks must be in chronological order in the Finale 3D show.
DMX support Pyromac supports DMX  devices in a single, global DMX universe shared across all modules.  In Finale 3D, please assign the DMX positions’ “Start Module” = 901 to avoid interfering with the assignment of pyro addresses in the range 1-900.  See Table 1 in  Exporting a firing system script for flame systems for details.  As of July 22, 2019 the Pyromac system limits the DMX channel range  to channels 1-50.  Please consult your Pyromac user’s manual to confirm the supported channel range if you want to use DMX channels outside of the range 1-50.
DMX resting state Pyromac asserts that the resting state for DMX channels is value = 0. All DMX events in the Pyromac script contain a duration.  The Pyromac system sets the DMX channel to the specified value for the duration of the effect, and then automatically sets the channel value back to zero.  As a consequence, the Pyromac system may be considered safer to use for flame systems without requiring a DMX safety channel (since turning off a DMX channel does not depend on a successful “off” event).
Overlapping DMX events Some types of DMX devices like flame systems with rotating nozzles have DMX channels that may need to remain in a resting state with a non-zero value in between events. In the case of the Explo X2 Wave Flamer, the nozzle angle should not return to a rest position after every shot because multiple shots from the same angle in quick succession would require leaving the nozzle where it is, since it cannot rotate instantaneously. So how do Finale 3D and Pyromac support events that do not return the DMX value to zero at the end of the event duration, given that Pyromac automatically resets the DMX value to zero at the end of the event duration?

Overlapping DMX events provides an answer. If Pyromac encounters a second event for a DMX channel during the duration period of a first event for the same DMX channel, the second event will overwrite the DMX value and duration immediately to whatever its value and duration should be for the second event. For example, consider three events setting the value of a DMX channel to 128, then 64, then 192, and them (automatically) back to 0:

Time = 0 ms, DMX value = 128, duration = 99990 ms (99,99 seconds)
Time = 1000 ms, DMX value = 64, duration = 1000 ms
Time = 1500 ms, DMX value = 192, duration = 1000 ms

  • If the second event had a duration of 500 ms, the output value would change directly from 64 to 192 at 1500 ms, and then from 192 back to 0 at 2500 ms.
  • If the second event had a duration of 400 ms, the output value would change from 64 to 0 (not 128) at 1400 ms and then to 192 100 ms later, and finally back to 0 at 2500 ms.
  • If the second event had a duration of 600 ms, the output value would change directly from 64 to 192 at 1500 ms when the third row arrives, and back to 0 at 2500 ms.

The overlapping DMX mechanics facilitate a strategy for representing events that have long lasting effects — simply set their duration to “forever”! The long duration, in combination with the ability to interrupt the duration period with a different event, provide a means of representing a persistent state change event that holds its value until another event changes it.

Long-lasting DMX events Pyromac DMX events are limited to 99990 ms (99,99 seconds). If a user adds a DMX event like a safety channel with a duration longer than 99,99 seconds, Finale 3D will automatically partition the long-lasting event into a string of multiple shorter events back to back. No event in the exported script will be longer than 99,99 seconds. DMX effects that set a persistent value (i.e., a value that lasts “forever” or until overwritten by another event) face a similar problem, since “forever” is longer than 99,99 seconds. For all long-lasting effects, including “forever” effects, Finale 3D exports strings of multiple events back to back to hold DMX channel values until the end of the show.
Module Types Finale 3D supports four Pyromac module types for pyro ignitions, Pyromac 10 Channel, Pyromac 15 Channel, Pyromac 16 Channel, Pyromac 32 Channel, in addition to the module type Pyromac DMX Device, which represents the DMX side of a Pyromac module.
DMX representation in the script DMX rows are mixed in with pyro rows in the script, sorted by effect time.  DMX rows are distinguished by the module number field: if module number <= 900, then the module number represents a true module number, for pyro ignitions; if the module number > 900, then the number is actually the DMX channel number + 900.  DMX rows re-use the pin column to hold the DMX value for the event, from 0-255. DMX rows have  an additional required field — duration — after the notes field (the duration field is optional for pyro ignitions, but not optional for DMX). The Pyromac system limits the DMX channel range  to channels 1-50, so the DMX module number field contains numbers in the range 901 to 950.

After the header, each row in the script has a number of fields separated by the semicolon character.  The names of these fields and their descriptions are the following:

Table 3 – Specifications of script fields

Field name Description
Cue For standard pyromusicals, the Cue field is the sequential count of unique firing times.  Two events having the same effect time would have the same value in the Cue field.  For  semi-automatic firing, the cue field contains the track number from the “Track “field in the script in Finale 3D.
Time The effect time in the format HH,MM,SS.DD. For standard pyromusicals, the effect time is relative to zero; for semi-automatic firing, the effect time is relative to the first ignition time in the track (the event time). The first event in a semi-automatic track thus must have the same value its Time field and its Delay field, since Delay is the time difference between the ignition time and the effect time.
Delay The prefire time in the format HH,MM,SS.DD; for DMX rows this value must be 00,00,00.00.
Address (Mod,Pins) The value 1-900 for module number, or 901-999 for DMX channel numbers 1-99; comma; then the pin number from 1-32 or the DMX value from 0-255.
“Note” The effect name, in double quotes.
Duration For DMX events, the duration field (required) is the duration of the effect in the format HH,MM,SS.DD.  For pyro ignition events, this field is optional (but if the semicolon is present, the field must be included in the valid time format).


An example script containing six (6) shells, three (3) DMX safety channel events, and sixty-three (63) DMX flame shots across nine MAGICFX Flamaniac flame units. Please see Exporting a firing system script for flame systems for a full description of this example.

Pyromac firing system
Cue;Time;Delay;Address (Mod,Pins);"Note";Duration
0001;00,00,03.58;00,00,02.24;010,01;"White Chrysanthemum"
0002;00,00,04.08;00,00,02.24;010,02;"Red Chrysanthemum"
0002;00,00,04.08;00,00,02.24;010,03;"Blue Chrysanthemum"
0003;00,00,04.90;00,00,00.00;901,128;"MAGICFX DMX Safety Channel";00,00,01.50
0004;00,00,05.00;00,00,00.00;913,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0005;00,00,05.10;00,00,00.00;923,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0006;00,00,05.20;00,00,00.00;933,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0007;00,00,05.30;00,00,00.00;943,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0008;00,00,05.40;00,00,00.00;953,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0009;00,00,05.50;00,00,00.00;963,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0010;00,00,05.60;00,00,00.00;973,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0011;00,00,05.70;00,00,00.00;983,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0012;00,00,05.80;00,00,00.00;993,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0013;00,00,06.67;00,00,00.00;901,128;"MAGICFX DMX Safety Channel";00,00,02.00
0014;00,00,06.76;00,00,00.00;911,255;"MAGICFX L45 Medium DMX Mode1";00,00,00.50
0014;00,00,06.76;00,00,00.00;921,255;"MAGICFX L45 Medium DMX Mode1";00,00,00.50
0014;00,00,06.76;00,00,00.00;931,255;"MAGICFX L45 Medium DMX Mode1";00,00,00.50
0014;00,00,06.76;00,00,00.00;941,255;"MAGICFX L45 Medium DMX Mode1";00,00,00.50
0014;00,00,06.76;00,00,00.00;951,255;"MAGICFX L45 Medium DMX Mode1";00,00,00.50
0014;00,00,06.76;00,00,00.00;961,255;"MAGICFX L45 Medium DMX Mode1";00,00,00.50
0014;00,00,06.76;00,00,00.00;971,255;"MAGICFX L45 Medium DMX Mode1";00,00,00.50
0014;00,00,06.76;00,00,00.00;981,255;"MAGICFX L45 Medium DMX Mode1";00,00,00.50
0014;00,00,06.76;00,00,00.00;991,255;"MAGICFX L45 Medium DMX Mode1";00,00,00.50
0015;00,00,06.96;00,00,00.00;912,255;"MAGICFX L22.5 Medium DMX Mode1";00,00,00.50
0015;00,00,06.96;00,00,00.00;922,255;"MAGICFX L22.5 Medium DMX Mode1";00,00,00.50
0015;00,00,06.96;00,00,00.00;932,255;"MAGICFX L22.5 Medium DMX Mode1";00,00,00.50
0015;00,00,06.96;00,00,00.00;942,255;"MAGICFX L22.5 Medium DMX Mode1";00,00,00.50
0015;00,00,06.96;00,00,00.00;952,255;"MAGICFX L22.5 Medium DMX Mode1";00,00,00.50
0015;00,00,06.96;00,00,00.00;962,255;"MAGICFX L22.5 Medium DMX Mode1";00,00,00.50
0015;00,00,06.96;00,00,00.00;972,255;"MAGICFX L22.5 Medium DMX Mode1";00,00,00.50
0015;00,00,06.96;00,00,00.00;982,255;"MAGICFX L22.5 Medium DMX Mode1";00,00,00.50
0015;00,00,06.96;00,00,00.00;992,255;"MAGICFX L22.5 Medium DMX Mode1";00,00,00.50
0016;00,00,07.16;00,00,00.00;913,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0016;00,00,07.16;00,00,00.00;923,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0016;00,00,07.16;00,00,00.00;933,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0016;00,00,07.16;00,00,00.00;943,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0016;00,00,07.16;00,00,00.00;953,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0016;00,00,07.16;00,00,00.00;963,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0016;00,00,07.16;00,00,00.00;973,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0016;00,00,07.16;00,00,00.00;983,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0016;00,00,07.16;00,00,00.00;993,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0017;00,00,07.36;00,00,00.00;914,255;"MAGICFX R22.5 Medium DMX Mode1";00,00,00.50
0017;00,00,07.36;00,00,00.00;924,255;"MAGICFX R22.5 Medium DMX Mode1";00,00,00.50
0017;00,00,07.36;00,00,00.00;934,255;"MAGICFX R22.5 Medium DMX Mode1";00,00,00.50
0017;00,00,07.36;00,00,00.00;944,255;"MAGICFX R22.5 Medium DMX Mode1";00,00,00.50
0017;00,00,07.36;00,00,00.00;954,255;"MAGICFX R22.5 Medium DMX Mode1";00,00,00.50
0017;00,00,07.36;00,00,00.00;964,255;"MAGICFX R22.5 Medium DMX Mode1";00,00,00.50
0017;00,00,07.36;00,00,00.00;974,255;"MAGICFX R22.5 Medium DMX Mode1";00,00,00.50
0017;00,00,07.36;00,00,00.00;984,255;"MAGICFX R22.5 Medium DMX Mode1";00,00,00.50
0017;00,00,07.36;00,00,00.00;994,255;"MAGICFX R22.5 Medium DMX Mode1";00,00,00.50
0018;00,00,07.56;00,00,00.00;915,255;"MAGICFX R45 Medium DMX Mode1";00,00,00.50
0018;00,00,07.56;00,00,00.00;925,255;"MAGICFX R45 Medium DMX Mode1";00,00,00.50
0018;00,00,07.56;00,00,00.00;935,255;"MAGICFX R45 Medium DMX Mode1";00,00,00.50
0018;00,00,07.56;00,00,00.00;945,255;"MAGICFX R45 Medium DMX Mode1";00,00,00.50
0018;00,00,07.56;00,00,00.00;955,255;"MAGICFX R45 Medium DMX Mode1";00,00,00.50
0018;00,00,07.56;00,00,00.00;965,255;"MAGICFX R45 Medium DMX Mode1";00,00,00.50
0018;00,00,07.56;00,00,00.00;975,255;"MAGICFX R45 Medium DMX Mode1";00,00,00.50
0018;00,00,07.56;00,00,00.00;985,255;"MAGICFX R45 Medium DMX Mode1";00,00,00.50
0018;00,00,07.56;00,00,00.00;995,255;"MAGICFX R45 Medium DMX Mode1";00,00,00.50
0019;00,00,08.83;00,00,00.00;901,128;"MAGICFX DMX Safety Channel";00,00,01.50
0020;00,00,08.93;00,00,00.00;993,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0021;00,00,09.03;00,00,00.00;983,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0022;00,00,09.13;00,00,00.00;973,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0023;00,00,09.23;00,00,00.00;963,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0024;00,00,09.33;00,00,00.00;953,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0025;00,00,09.43;00,00,00.00;943,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0026;00,00,09.53;00,00,00.00;933,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0027;00,00,09.63;00,00,00.00;923,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0028;00,00,09.73;00,00,00.00;913,255;"MAGICFX Up Medium DMX Mode1";00,00,00.50
0029;00,00,10.71;00,00,02.24;010,04;"White Chrysanthemum"
0030;00,00,11.21;00,00,02.24;010,05;"Red Chrysanthemum"
0030;00,00,11.21;00,00,02.24;010,06;"Blue Chrysanthemum"

Figure 2 – Example Pyromac script


Table 4 – Example files

Download link Explanation
magicfx_pyromac_standard.fin Example show file
magicfx_pyromac_standard.txt Example exported file (TXT)
magicfx_pyromac_semi_auto.fin Example show file
magicfx_pyromac_semi_auto.txt Example exported file (TXT)