Total found: 308
Using piggyback slats or modules that fire in parallel

Shows that use firing system slats in some positions and not others require addressing the different sections of the show with different rules.  The Pro and Hobbyist versions of Finale 3D support slats in slightly different ways.  The Hobbyist version uses "Sections."  The Pro version uses "Sections" and also adds the option of using "Addressing Blueprints" which allow for more addressing customization for different sections of the show.  Both the Hobbyist and Pro versions also support slats by manual addressing, of course, which allows any kind of address assignment but which generally requires more work than the automatic functions. The dialogs relating to addressing for slats or modules that fire in parallel are the "Address Show" or "Addressing Blueprint" dialog, for defining the addressing rules, and the "Position Properties" dialog, for specifying which positions the rules apply to and for defining the boundaries within which modules or slats can be shared.   The relevant fields in these dialogs are shown circled in Figure 1 and Figure 2. Figure 1 – The "Address Show" dialog specifies the addressing rules.   Figure 2 – The "Position Properties" dialog assigns section names and addressing rules (addressing blueprints) to positions.   General principles In the sections of the show that use slats, you need the slats themselves NOT to be shared across positions, while the parent modules of the slats ARE shared across the positions.  For example, if positions Front-1, Front-2, Front-3, Front-4, and Front-5 all use slats from the same module, they are all sharing that module, which can be located anywhere, but they are not sharing the individual slats, which are located at the positions in which they are used exclusively.  For this scenario, the basic constraints are, Table 1 – Constraints for sharing modules across positions Modules constrained to same (no constraint) Slats constrained to same Position   By contrast, positions that use pins directly on the modules, would constrain each module to a single position so that wires from the module do not stretch to other positions. Table 2 – Constraints for NOT sharing modules across positions Modules constrained to same Position Slats constrained to same (no constraint)   Some firing systems provide a method of replicating a slat or module with piggyback units that fire in parallel, as if they were wired together.  Finale 3D supports addressing piggy back slats either manually by hand or automatically using blueprints. If you manually assign all the slat and module addresses by hand, you can assign the same module number at multiple positions to represent the fact that the same module addresses are firing in parallel at the different positions.  Usually that would be an error, but in the case of piggyback units, it is not an error.   Addressing the show using blueprints (Pro) The “Address show with blueprints assigned to positions” function (a Pro feature) uses addressing templates (Blueprints) to encapsulate the different rule sets that apply to the different sections of the show.  A section of the show that uses the pins directly on the modules and does not share modules among positions would use the blueprint, or rule set, represented by Table 2.  A section of the show that uses slats at different positions connected to a common (shared) module would use a blueprint represented by Table 3.  A section of the show that uses piggy back slats firing in parallel at different positions would use the blueprint represented by Table 4.  If you are using piggy back slats or modules, you also need to change the "Max e-matches per pin" limit in paragraph 1 of Figure 1 from "1" to as many piggy back slats or modules as are being shared. If the original positions in the show have both piggyback and non-piggyback units, then you need to split the positions into two parts, such as splitting a position named Front-01 into Front-01A and Front-01B, moving all the effects destined for the piggy back slats to A or B.   Assuming you’ve separated the piggy back positions, the next step is to create the two blueprints for the slats: Piggyback Slats, and Normal Slats.  Assign these blueprints to the respective positions, and assign a “Normal Modules” blueprint represented by Table 2 to the positions that use pins directly on the modules. Table 3 – “Normal Slats” blueprint for sharing modules with non-piggy back slats Modules constrained to same (no constraint) Slats constrained to same Position   The Piggyback blueprint has different constraints: Table 4 – “Piggyback Slats” blueprint for sharing piggy back slats Modules constrained to same (no constraint) Slats constrained to same (no constraint)   The final step, after assigning the blueprints to the positions (by right clicking on the positions and clicking “Edit position properties” in the context menu), is to address the show with the function “Address show using blueprints assigned to positions.”   Addressing the show without using blueprints (Hobbyist or Pro) Since the Hobbyist version doesn't support blueprints, you aren't able to assign different rule sets to different sections of the show.  However, you can use the section field to define the boundaries for sharing.  In some cases, that's all you need.   Take for example the scenario in which a section of the show (say, the front positions) share piggy back modules and the other positions do not share modules. In this example, you can select all the front positions, then right click one and do "Edit position properties" to edit the properties of those positions as shown in Figure 2.  Set the section field of those positions to the same name (e.g., "front") so they are in the same section.  Then edit the position properties of the other positions in the show individually, and assign each one of them its own unique section name.  Then address the show using the constraints of Table 4 (no constraints).  Since modules are inherently restricted to the same section (see the text on the first line of paragraph 3 in Figure 1), the front positions in the same section will be allowed to share the same modules, which is what the piggy back modules are doing in reality, while the other positions in their own sections will not be allowed to share modules.

Restricting modules to racks or rack clusters

Every display company has a different scheme for arranging its racks, but most companies arrange their racks in groups (“Clusters” in Finale 3D terminology) of some kind.  Generally, companies do not want e-match wires extending between groups of racks, which imposes constraints on the firing system addresses. Consider the example of a display company that uses Pyrodigital field modules with 16 pins, along with wooden racks with 5 tubes each, nailed together in clusters of three racks housing 15 tubes per cluster.  The company attaches a single field module to each cluster. For ease of setup, the company decides that it is willing to let one pin per module go unused, allowing the other 15 pins to match up with the 15 tubes in the rack assembly to which the module is attached.  From an addressing perspective, this company needs to add the constraint that a module is restricted not to a single rack, but to a single rack cluster.   Table 1 – Sort order and constraints for eliminating wires between rack clusters Addresses sorted by Position > Size > Angle Modules constrained to same Position, Size, Angle, Rack Cluster   Addressing the show with these sort criteria and constraints will result in one module per rack cluster, and that module’s 16th pin will go unused to avoid wires running between the rack clusters.  The two screenshots below show the effect of snapping the racks together into clusters before addressing.  Both examples have the same sort criteria and constraints, from the table above.  In the first example, the racks are addressed in one big group, and cannot subsequently be separated into clusters without wires running between the clusters.  In the second example, the racks are arranged in clusters of three before assigning the addresses, and the Rack Cluster constraint ensures no wires run between the clusters. Figure 1 – Impossible to split racks into clusters after addressing (photo: Finale 3D).     Figure 2 – Splitting the racks into clusters before addressing results in one module per cluster.  

Addressing with sorts and constraints and custom fields

Choosing the best sort order for the addresses can affect the efficiency of setting up the show from end to end.  The rack layout, for example, depends on the addresses of effects with different angles and sizes.  If a module addresses multiple size or angle effects, that forces the crew to setup racks for each of those sizes or angles within reach of the module. Both the sort order and constraints affect how often a module serves multiple sizes or angles.  Constraints prevent a module from serving multiple sizes or angles, at the expense of unused pins.  Sort order reduces the occurrence, with fewer unused pins.  If you sort the modules by size, then only the module at the transition between one size and the next will serve multiple sizes.  Same for angles.  If there are many modules at the position, then these few transition modules may be acceptable. Table 1 – A good choice for sort order and constraints for many types of shows Addresses sorted by Position > Size > Angle Modules constrained to same Position, Size   The table above shows a good choice for the sort order and constraints for a wide range of shows.  Another option is to constrain modules by Position, Size, and Angle-Plus-Minus, where Angle-Plus-Minus means that modules can serve left-leaning, straight up, or right-leaning angles, without regard to the specific number of degrees, but cannot serve any combination of angles that lean different directions.    Adding the Angle-Plus-Minus constraint causes additional pins to go unused at the transitions between the three groups of angles, but not nearly as many pins as if you add Angle to the constraints. If Angle-Plus-Minus isn’t exactly what you want to use as a constraint, you can also make your own field in the Custom Script Field, and use that as a constraint.  As an example, you could make your own version of the Angle-Plus-Minus field by sorting the script by angle and filling in the values L and R in the Custom Script Field for the left-leaning and right-leaning effects (using the letters L and R is an example; you could use any notation you want).  Having added those field values to the Custom Script Field, you would address the show with the sort and constraints of: Table 2 – A choice for sort order and constraints that allows splitting apart angled rack groups Addresses sorted by Position > Size > Angle Modules constrained to same Position, Size, Custom Field   The Custom Position Field is another field that you can use for addressing sorts and constraints.  As you can guess from the name, this field is a property of the positions.  Each script row inherits the Custom Position Field from the position at which the script row is located.  If you want to sort or constrain addresses based on a property of the positions, you can set the Custom Position Field values on the positions themselves, rather than setting the Custom Script Field for each script row individually.  As a simple example, imagine that your positions were named A, B, and C, and for some reason you wanted addresses to be assigned by order of positions but in the order B, A, C.  You could set the Custom Position Field values for A, B, and C, to 2, 1, 3, respectively, and then assign addresses sorted by the Custom Position Field.

Supported languages

The following table shows the languages supported by Finale 3D.  There are two aspects to supporting a language: 1) creating simulations automatically based on effect descriptions, enabling you to import an inventory or create effects one by one in your own language; and 2) displaying the user interface text in your language.  The table shows whether these aspects are supported for each language.  Please contact support@finale3d.com if you are interested in translating to a language that is not yet supported.   Table 1 – Supported languages Language Automatic simulations from effect descriptions User interface Brazilian Portuguese Pending ✓ Bulgarian Pending ✓ Chinese Simplified Pending ✓ Chinese Traditional Pending Pending Dutch ✓ ✓ English ✓ ✓ French ✓ ✓ German ✓ ✓ Hungarian Pending ✓ Italian ✓ ✓ Japanese Pending ✓ Maltese Pending ✓ Norwegian Pending ✓ Polish ✓ ✓ Portuguese ✓ ✓ Romanian Pending ✓ Russian ✓ ✓ Spanish ✓ ✓ Turkish Pending ✓ Ukrainian Pending ✓  

Making a language translation file

This section contains instructions to create a language translation file for localizing the Finale 3D user interface to a non-English language.  Please contact will@finalefireworks.com if you are interested in translating to a language that is not yet supported. The process of creating a language translation file is: Begin with a blank translation file template that you can get from will@finalefireworks.com or copy from C:UsersYOURNAMEAppDataRoamingfinale3dfinale3d-filesapp.nwtranslationstranslations_template.txt and rename to store it locally somewhere convenient on your hard drive. Using a text editor, replace all the translation phrases with your translations.  The translation phrases all begin with "XX" and are in all-caps, so they are easy to recognize. Also change the header line from "en" to whatever your language designation is (e.g., "fr" for French). If you see three question marks (???) in a translation phrase, please include the same ??? in your translation.  These question marks indicate a parameter that the software will replace with a number or word when it displays the phrase to the user.  Also, if the translation phrase includes backslash-n (n), that indicates a line break.  Please include the same backslash-n in your translation.  Also, if the translation phrase includes a curly bracket phrase like {{ ~p}} or {number_of_modules}, please include the exact same curly bracket phrase without translating the interior. Save your text file in the UTF-8 or UTF-16 Unicode format. From Finale 3D, select the menu item "File > Admin > Install language translation file..." and select your file. That's all there is to it!  In the future, if a software update adds some text, you can update your translation file by, From Finale 3D, select the menu item "File > Admin > Update language translation file for any missing phrases..." and select your file. The update function will preserve all your translations, and will add any new phrases needing translation.  If any of your existing translations are no longer needed, the update function will add the comment "NON-MATCHING" in front of them so you can delete them whenever you want.   The update function never deletes anything. With those basic instructions, you can get started right away, but it is worth reading a few more details to understand how it all works:  When the user selects a language from the "File > Languages" menu of Finale 3D, the software loads a language translation file that translates all the English phrases in the user interface into the selected language.  Finale 3D has approximately 4000 such phrases, some being just a single word; others being a sentence or two.  The language translation file thus consists of about 4000 pairs of lines.  The first line in each pair is the English phrase; the second line is the corresponding translation in the other language. Here is a "before" and "after" explanation.  The first figure below is the beginning of the blank translate template file ("before"); the second is the beginning of the Russian translation file ("after"): en 0. || Playback mode: XX PLAYBACK MODE: 1. || Render mode: XX RENDER MODE: 2. ||'Matching' means the part numbers are the same. XX'MATCHING' MEANS THE PART NUMBERS ARE THE SAME. Figure 1 – Blank translate template file ("before translation").   ru 0. || Playback mode: режим воспроизведения: 1. || Render mode: графический режим: 2. ||'Matching' means the part numbers are the same. «Соответствие» означает, что номера деталей совпадают. Figure 2 – After translating to Russian ("after translation").   The first line in the translation file ("ru") is actually a header line that designates the language.  The header line contains one of these language codes, depending on the language. Table 1 – Language codes Language code Language bg Bulgarian en English es Spanish fr French pt Portuguese pl Polish ru Russian zhHans Chinese Simplified zhHant Chinese Traditional de German nl Dutch tr Turkish ja Japanese it Italian   After the "ru" language designation in the example, the first translation pair is, 0. || Playback mode: режим воспроизведения: The first line in the pair is the English phrase to be translated. It begins with a comment (in this case "0. "), followed by two vertical bars, followed by the exact text of the English phrase. The comment is either a count or the words "NON-MATCHING" if the translation phrase is obsolete. The comment -- all the text before the two vertical bars -- has no effect on the actual translation. The comments are included as a nicety for the person doing the translation, so you can keep track of where you are. The text after the comment and double bars is the exact text of the English phrase. Please leave this text exactly as it is. The second line of the pair is the translation, which should match the meaning of the English phrase, and should have the same punctuation at the beginning and end of the phrase. Some of the translation phrases are fractional parts of sentences that get combined in the user interface to make full sentences, so it is important that if the English phrase begins with punctuation or a space, then the corresponding translation phrase must also begin with the same punctuation or space, so the punctuation and spacing are correct when combined. Look at this first pair -- do you notice that there's a space after the double bar, before the word "Playback?" There's also a corresponding space at the beginning of the Russian translation phrase.

Fire Pioneer

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: 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 Special characteristics Description 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). Segments Fire Pioneer supports dividing a show into multiple segments corresponding to songs.  By default, every song file you add to your show in Finale 3D corresponds to a separate segment, beginning with zero for the first and counting up. Finale 3D provides an export option for Fire Pioneer to export the script as a single file, in which case the segment number will be zero for all rows in the exported file, or as "One script file per segment", in which case the segment numbers in the files correspond to the segment numbers of the songs.  See segments for instructions. Timecode FSK timecode files for Fire Pioneer contain a segment number embedded in the timecode signal along with the timing information.  The segment number must correspond to the segment number in the associated script file.  If you have a show with multiple songs, each song representing a segment, then you should export the show from Finale 3D using the "One script file per segment" export option, which will generate multiple script files, one for each song. To generate the associated audio files that include the songs on one channel and the timecode on the other channel, use the function, "File > Export > Export soundtrack...". In the export soundtrack dialog, select "Music mono (mixed)" for either the left or right channel and "Fire Pioneer FSK (one file per segment)" for the other channel.  This will generate multiple WAV files, one for each song, with the embedded segment numbers corresponding to the segment numbers in the script file. If you want verify any timecode file is correct or ascertain what segment number it contains, please try the function, "File > Tools > Analyze timecode in soundtrack file..."  This function works on all timecode files, whether they are generated from Finale 3D or from other software.     Table 3 – Export options Option name Description Segments Either "One script file" or "One script file per segment"   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 4 – Specifications of script fields Field name Description 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 segment number, 0-9999, with 0 being the default value (defined by songs or segment markers 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 5 – Example files & tools Download link Explanation test_firepioneer.fin Example show file firepioneer.csv Example exported file (CSV) cueManager3.exe Fire Pioneer cueManager application

Cross-loading chains with angled shells or using fan-racks

Show designers usually avoid splitting chains across racks if the chained shells are straight up, but if shells are fanned out at angles then they may choose to spread the chained shells across multiple racks that are tilted at the required angles, usually one shell per rack ("Cross-loading").  Alternatively, designers sometimes use racks or rack assemblies that are pre-built with tubes angled to match the angles of the chained shells ("fan-racks").  When you layout your racks in Finale 3D, you sometimes need to add constraints in the addressing procedure to direct the software to put chains in the racks you intend for them, when multiple alternatives exist.   Figure 1 – Rack layout with three possibilities for racking chains of fanned shells   For example, Figure 1 shows a rack layout with various possibilities for racking a show consisting of seven chains of 5 shells each (-20, -10, 0, 10, and 20 degree angles).  The group of five vertically oriented racks in the top left are fanned out at the matching angles, so each chain of five shells could be cross-loaded with one shell in each of those racks.  The group of seven horizontally oriented racks in the top right are fan-racks, each with five tubes at the matching angles (there is no way to tell the angles of the individual tubes from looking at the rack layout diagram, though you would know what types of racks they were if you added the racks and arranged the layout yourself).  The seven chains could all be loaded into these fan-racks, one chain per rack.  The third possibility is the pairs of racks at the base of the diagram.  Since the pairs of racks aren't close together, this option is probably undesirable or even physically impossible, but a rack layout for a show containing independent shells in addition to chains in the same position may have racks like these, and it may be necessary to direct the software not to load chains into them. All three of these possibilities presume the show designer wants each chain to have fanned out shells instead of firing five chains simultaneously, one angle per chain.  By the time you address the show, you've already made this decision,  because the chains in the script either contain shells at fanned out angles or at one angle per chain.   Figure 2 – The bad possibility--chains assigned to unintended racks, far apart   Figure 2 illustrated the bad possibility, in which each chain's shells are spread across racks that are far apart.  The numbers in the racks (0-6) are the pin numbers firing the seven chains.  All the shells of a chain are ignited by the same pin, so as you can see, the five shells of the chain fired by pin 0 occupy the top-left tube of each pair of racks.  This racking assignment might be the result of addressing the show with the addressing settings shown in Figure 3.   Figure 3 – No rack related constraints, so chains may end up in any racks with matching angles   The Finale 3D addressing algorithm will assign racks to shells roughly in the order the racks were inserted into the rack layout, subject to their compatibility, so you could avoid Figure 3 by cutting the pairs of racks out (control-x) and pasting them back (control-v) to make the software consider them last.  There's a better solution though -- to use constraints to filter out the possibilities that you don't want.  Let us imagine that you would like to cross-load the chains into the racks in the upper left.  What's the difference between those racks and the pairs of racks at the bottom?  The racks in the upper left are all close together, in the same "rack cluster" (i.e., snapped together in the rack layout view).  To restrict chains to the same rack cluster, ensuring the shells are close together, you can simply add the constraint, "pin constrained to a single rack cluster".  The reason that constraint applies to chains is that all the shells of a chain are ignited fuses that trace back to the same pin on the firing system module, so constraining shells of the same pin to a single rack cluster will necessarily constrain shells of the same chain to a single rack cluster.   Figure 4 – Constraining a pin to a single rack cluster constrains chains to a single rack cluster.   The addressing settings of Figure 4 add the rack cluster constraint to the pin. The result is shown in Figure 5.   Figure 5 – The pairs of racks at the bottom do not satisfy the rack cluster constraint for the chains.   If you would prefer to use the fan-racks in the upper right, each chain being housed in a single rack, the constraint is simply "pin constrained to a single rack", i.e., just as in Figure 4 except "Rack" instead of "Rack Cluster." Figure 6 – The rack constraint forces each chain to go into a single rack.   The result of the rack constraint is that the chains go into the fan racks, since those are the only racks in the layout that satisfy the constraint that each chain's shells (all on the same pin) go into the same rack.   Figure 7 – The fan-racks each have tubes at -20, -10, 0, 10, 20 matching the of the chain's shells.   If you notice, the addressing settings in Figures 3, 4, and 6 all sort chains first, after positions.  This sorting option doesn't matter in this example show consists only of chains, but for shows that have positions with chains and individual shells, it is often a good idea to address the chains first so they fill up the racks first, and individual shells fill in the leftover tubes.  If you have fan racks in the rack layout intended especially for chains, you need the sort order to prevent the individual shells from filling them up.  

Account setup

Congratulations on your purchase of Finale 3D! This page includes instructions for activating or moving licenses between computers, assigning licenses to other company employees, and connecting to the company inventory account (if the company uses Finale Inventory).  All these settings are menu items in the "My Account" menu at the top of the finale3d.com website after you login to the website.  Skip over any steps you don't care about, and follow the instructions that you need: Activating machine licenses.  Each Finale 3D license that you buy or that is assigned to you automatically creates a machine activation on the first machine you log into. If you need to change machines because the machine breaks or for some other occasional need, please click the Reset Machine button to clear the machine activation. Then the license will automatically create a machine activation on the next machine you log into. You can reset the machine activations for each license up to 12 times per year. If you need to change computers more often than that, you can buy additional machine licenses for a small cost to extend the number of machines a user license can operate on. Finale 3D: Reset Machine Activation   Figure 1 – Reset machine activation video tutorial Assigning licenses to other company employees.  Individuals who purchase Finale 3D for themselves can ignore this step, because when you purchase a license it is automatically assigned to you (the purchaser) by default.  If you are the administrator or owner of a fireworks company, however, you can purchase all the licenses that your company needs, and you can assign them -- or re-assign them -- to your employees (for example, if an employee leaves the company, you can re-assign the license to a different employee).The 'Assign Licenses to Other People' page shows all the licenses you have purchased, and who they are currently assigned to.  At any time, you can click on the "Assignee email" field and re-assign a license to a different user.  The user you assign the license to doesn't even need to have a Finale 3D account at the time you make the assignment.  Whether he already has an account or makes his account later, the next time he logs in with the assignee email address, he will see the license assigned to him in the Machine Activations page. Finale 3D: Assigning Licenses   Figure 2 – Assigning licenses video tutorial Configuring what supplier catalogs are downloaded to your computer.  Supplier catalogs are commercially available effects lists (with simulations) managed by suppliers.  When you subscribe to supplier catalogs, they appear as options in the blue selector menu in Finale 3D's Effects window. You will receive updates to these collections automatically when suppliers update their specifications or simulations.  You can subscribe to any of the supplier catalogs, or none of them. Finale 3D takes a little longer to launch and check for updates the more catalogs you subscribe to, so to keep things fast it is usually best to subscribe only to the catalogs you expect to use. Finale 3D: Access Supplier Catalogs   Figure 3 – Supplier catalog video tutorial Connecting to a Finale Inventory account.  Finale 3D can connect directly to your own Finale Inventory account if you have one, or indirectly to a Finale Inventory account that another user (usually the owner or administrator of the account) gives you access to. If you don't have an account yourself, then please leave the inventory connection fields blank.  If you have a Master Inventory account from Finale Business, please copy/paste the URL from your Finale Business account page settings into the URL field (the first field), and enter your existing Finale Business username and password (not your 3D login email) in the next two fields.  If you have a paid Finale Inventory account, copy/paste the URL that you use to access your account from the web (it looks like, https://app.finaleinventory.com/YOUR_COMPANY_NAME_HERE/sc2/), and enter whatever username and password you use to access Finale Inventory in the next two fields. If you are the administrator of an inventory account for a company or club, you can grant permissions to allow other Finale 3D users to access the inventory account that you are directly connected to, and you can control whether these users have the ability to make changes or see prices. You can also turn off your own ability to make changes, if all you want is read-only access. To add users, just enter the email address they use to login to Finale 3D (or will use if they don't yet have an account). The next time they login, they will see this inventory. Finale 3D: Connecting Finale Inventory   Figure 4 – Finale Inventory connection video tutorial Adjusting settings for the Finale Inventory accounts you are connected to.   Your Finale 3D application can connect to multiple Finale Inventory accounts at the same time.  For example, if you work for a company, you may have access to that company's inventory account.  Yet you may also have access to your own inventory account, or to a club inventory account.    All of the inventory accounts that you have connected to directly or been given access to will appear on the Finale Inventory Settings page, so you can configure them.    With each inventory, you have some options. Turn off 'Download Inventory' to completely ignore that Finale Inventory. Turn on 'Chains Count As One' if the Finale Inventory quantities for chains of N shells are just one for the whole chain. Turn on 'Available Column Does Not Include Unreceived Purchase Orders' if you want 'Available' to mean simply quantity on hand minus quantity reserved for sales orders. Turn on 'Break Apart And Recombine Assortment Quantities In Sales Orders' if you want to convert sales order quantities from generic assorted shells to the specific shells in the assortment. Finale 3D: Finale Inventory Settings   Figure 5 – Finale Inventory settings video tutorial

Importing models

The Pro version of Finale 3D imports models in the SketchUp model format, which have the filename extension "skp". If you want to use a free, publicly available model, there are more than a million models of buildings, bridges, and other fireworks venues all around the world, available in the SketchUp 3D Warehouse. You can download and add models to your Finale 3D scene following these steps: Visit https://3dwarehouse.sketchup.com and search for a model of a specific structure (e.g., typing "golden gate bridge" into the search box) or search for a generic structure (typing "barge"). On the search results page, select the "Models" tab. Click on the thumbnail image for a model to view the details. In the details panel, look at the number of polygons in the model. Finale 3D can import models of up to 100,000 polygons, but as a general rule you should look for a model with 10,000 polygons or so. If it is a very simple model, as low as 500 polygons might be okay. If it is complex, 50,000 polygons is no problem. But if the model has only one or two polygons, that's a clue it is not a real 3D model. If it has more than 100,000 polygons, it may be too complex for real time simulation. After finding a model with the right level of complexity, select "Download > SketchUp 2023 Model" to download the model to your computer. From Finale 3D, choose the menu item "Scenery > Models > Add model", and select the SketchUp model that you downloaded to your computer. That's it! If you want to use your own model that is in a different format, then you will need to convert your model to the "skp" format. Some modelling applications can save in this file format directly, in which case simply save the model in the "skp" format and that's all there is to it. If your modelling application does not save in the "skp" format, then you'll need to the SketchUp Pro software to import your model from its native format and to save it in the "skp" format. At the time of this writing, the free version of SketchUp does not include the capability of importing from other model formats. To import and convert models to the "skp" format, you will need to use the SketchUp Pro desktop modeling software, available from https://www.sketchup.com/plans-and-pricing/compare SketchUp Pro can import files in a variety of formats including: 3DS, DAE, DWG, DXF, STL, KMZ. Once you've downloaded and launched SketchUp Pro, import your model and make any required changes. If the original model has millions of polygons or tens of megabytes of textures, you may need to edit the model to reduce its complexity. One way to reduce model complexity is using the "Skimp" plugin for SketchUp, available from https://skimp4sketchup.com When your model is ready to export from SketchUp Pro, do File > Save as... and choose "SketchUp 2023 (*.skp)" in the save as dialog.

FireOne

To create and export a FIR or SEM script for the FireOne firing system, please follow the steps below.  For "Scripted DMX", please export a FireOne CSV script as described here. Design the show. If you are creating a semi-automatic show (SEM file), then select the ranges of the effects on the timeline corresponding to triggered sequences and assign them a track number by right clicking on the selected group and doing "Edit properties..." from the context menu. Address the show ("Addressing > Address show"). Export the script ("File > Export > Export firing scripts"). Step 3 creates the script file, which is a FIR file or SEM file depending on your choices in the dialog.  The file format details are described in this section. Figure 1 – Fireone control panel   FireOne has two firing system script formats, FIR and SEM, for standard start-to-end shows and for manually triggered “semi-automatic” shows, respectively.  The script files are mostly the same, except for the difference in file extension and a few fields, which are specified in the tables below.   Table 1 – File format and encoding File format Extension Text encoding Field delimiter End-of-line MDB .FIR or .SEM UTF-16 Not applicable Not applicable FIR and SEM files are actually MDB files with the extension renamed.  MDB is the 32-bit format for Microsoft Access database applications.  It used to be that Microsoft Access and Excel could open MDB files directly, making it easy to view the data in FireOne script files, but after the transition to 64-bit systems Microsoft no longer supports reading or writing MDB files from its applications.  For your convenience, Finale 3D has a function, “File > Tools > Open firing system script as generic table” which opens a FIR or SEM file as a generic table for you to view or copy/paste into Excel or other applications, if you have need.   Table 2 – Special characteristics Special characteristics Description Time representation All times are represented in decimal fractions of a second, either as a string in a time format "00:00:00.00" or as an integer milliseconds.  In spite of the fact that the integer fields are in milliseconds and that FireOne hardware ostensibly supports millisecond resolution (as does Finale 3D), the FIR and SEM files are only capable of representing hundredth of a second resolution. SMPTE 29.97 NDF The FireOne controller does not compensate for the slower-than-wall-clock rate of time progression in SMPTE 29.97 NDF timecode inside the controller, but Finale 3D provides an option to "Adjust times for SMPTE 29.97 NDF timecode" in the FireOne script exporter.  For detailed instructions see SMPTE 29.97 NDF (non-drop frame). Sort order of rows In FIR files, rows are sorted ascending by event time.  In SEM files, rows are sorted first by event number (corresponding to the Track number in the Finale 3D script), then ascending by event time.  Thus in the SEM files each sequence of rows with the same event number is a contiguous sequence, beginning with the first row having a delay time of 0. What rows represent Each row represents a unique module-pin-eventTime combination, and contains all the information in the script file that is associated with that module-pin-eventTime 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.  However, two flame projector shots at different times, triggered by the same module-pin, will be two rows because they are at different times. Chains counting as one unit Some display companies follow the convention that one chain is one unit for stock keeping records; others follow the convention that a chain of five shells is five units.  The FireOne FIR and SEM files have a Qty field that represents the number of units.  The meaning of this field for chains -- whether it is the number of shells in the chain or just one per chain -- cannot be determined from the file intrinsically, so when you import a FireOne FIR file into Finale 3D, you are given the option to choose whether chain quantities indicate the number of chains or devices.  When you export a FIR or SEM file from Finale 3D, the quantity is always counting individual devices (not full chains). Time base Finale 3D only supports the hundredths-of-a-second time base HH:MM:SS.XX for FireOneFIR and SEM script files, both for importing and exporting.  Please make sure your firing system is configured for the hundredths-of-a-second time base, as opposed to a frames time base. Tables in the FIR and SEM file FireOne FIR and SEM files exported from Finale 3D will contain two tables, SMPTE and FireData.  The SMPTE table will contain a single row with four fields: TimeBase, ShowName, CuesPerSlat, ReportTimeBase; the fields having values HH:MM:SS.XX, the name of the show, 32, and hh:mm:ss.x.  The FireData table will contain the fields defined in the table below. Special characters FIR and SEM file data may include all Unicode characters (represented in UTF-16 in the MDB file). Semi-automatic firing In Finale 3D, the Track property in script rows indicates the sequence identifier for semi-autonomous firing mode (please unhide the Track property in the script to use this feature). The rows in each sequence of a SEM file have time values relative to the first event in the section, which is always time zero. In the Finale 3D script, the sections can be in any order and can even have interwoven events, but generally people place the sections one after another in the Finale 3D script, with some space in between to tell the apart. To create an SEM file instead of a FIR file, please choose "Semi-Automatic (SEM)" from the export options dialog when you export the script. See Semi-automatic firing for instructions. Using only 30 pins In the addressing dialog and the position properties dialog, you can choose the "FireOne Module, 30 Pins" instead of the standard "FireOne Module" if you want to leave the last two pins unused. You can also create a custom module in the "Addressing > Addressing settings" menu with an arbitrary maximum number of used pins. Multi-hit pins Non-pyro effects like flames and relays can be triggered multiple times on the same module-pin. 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. Slats While FireOne modules all have 32 pins, you may have hardware to divide the pins up into slats, such as four slats of 8 pins each, for the purpose of igniting effects at multiple launch positions without all the ematches extending all the way to the module.  When using slats it is essential that the pin numbers used for effects at a position correspond only to the slats at that position. Finale 3D’s addressing functions support addressing constraints based on slats to allow slats from the same module to be located at different positions. Although FireOne module/pin addresses don’t provide any indication of slats (each module’s pins are 1-32 no matter how you might partition them into slats), you can configure the modules in Finale 3D as having “virtual slats” in order to make use of the slat-based addressing constraints. Virtual slats allow you to partition the channels of a module into separate slats for which you can assign addressing constraints to guarantee good pin assignments for your physical layout. For example, suppose you have one module with 32 pins that are distributed out to four launch positions on four physical “slats” or “rails” with 8 pins each. It would be important to have the addressing constraint that each slat is restricted to a single launch position, for otherwise you might have wires running from position to position. To partition the pins into virtual slats, create a custom FireOne module with a rail address template like #99-D-#8 to split the 32 pin modules into four 8-pin slats, A, B, C, D. Because these are virtual slats, even though their addresses appear like “2-B” and “3” for module 2, slat B, pin 3 (of slat B), the addresses are converted automatically in the exported FIR or SEM script the contiguous 32-pin range of the module. The virtual slat address “2-B” and “3” convert to module 2, pin 11 (pins 1-8 correspond to slat A, so the third pin in slat B is pin 11). Ignored fields in FIR and SEM files The FIR and SEM file format includes the following fields that are ignored by Finale 3D for importing and exporting: ID, ScriptTime, BreakTime, Type, Length, SayWhen, SayWhenText, SayWhat, Conflict, PyroSlat, PyroCue.  The ScriptTime and BreakTime fields are obsolete fields in the file format.  The Type field is ignored when importing into Finale 3D because it is a free form text field that may not match the specific type values permitted in Finale 3D’s Type field; and ignored when exporting to avoid confusion about that. When you export a firing script for FireOne, Finale 3D presents an "Export Options" dialog with the option to export a FIR file or SEM file, as shown in Table 3.   Table 3 – Export options Option name Description Script Type Choose one Standard Script (FIR) or Semi-Automatic Script (SEM).   The script data rows in the FIR and SEM files contain the fields shown in Table 4 and Table 5, in addition to the ignored fields mentioned above.  Except where noted, Finale 3D both imports and exports these fields, allowing you to import existing shows previously scripted in other software and saved as FIR files, or to re-import shows previously exported from Finale 3D.  Obviously, since FIR files do not contain all the information in a Finale 3D show file, such as the coordinates of the positions, some information is lost if you export a FIR file and then re-import it.  But in all cases, when you import FIR files Finale 3D will create simulations from the descriptions automatically and layout the positions in a reasonable default arrangement, so importing FIR files usually produces a usable result for making a render or editing the script.   Table 4 – Specifications of script fields Field name Description LaunchTimeMS (Integer) Event time in milliseconds, rounded to nearest hundredth of a second LaunchTimeText (String) Event time in the format 00:00:00.00 ScriptTimeMS (Integer) Effect time in milliseconds, rounded to nearest hundredth of a second ScriptTimeText (String) Effect time in the format 00:00:00.00 DelayTimeMS (Integer) The value 0 (different for SEM files; see below) DelayTimeText (String) The value "00:00:00.00" (different for SEM files; see below) Slat (Integer from 1 to 99) Module address number Cue (Integer from 1 to 32) Pin address number Position (String, up to 10 UTF-16 code units) Launch position names, separated by spaces; but truncated to 10 characters in accordance with the file format restrictions Qty (Integer) Number of devices Priority (Integer from 1 to 16) Safety/hazard group number from the "Hazard" column, 1 by default Description (String, up to 60 UTF-16 code units) The effect name, or first effect name if there are multiple Comment (String, up to 60 UTF-16 code units) Combined notes from all rows in the Finale 3D script associated with this module-pin combination, with redundant notes eliminated, separated by spaces ProductNumber (String, up to 16 UTF-16 code units) The part number of the effect, or the first effect if there are more than one; the first effect being arbitrarily chosen if there are multiple effects at the same time for this module-pin combination Size (String, up to 8 UTF-16 code units) The caliber with or without units, e.g., 3 or 3" or 75mm (greatest caliber if multiple effects); or "na" if blank Event (Integer) The value 0 (different for SEM files; see below).  Ignored when importing FIR files. Effects (String, up to 16 UTF-16 code units) The angle of the first shot, printed as signed integer.  Angles exported from Finale 3D follow the convention that 0 is up and negative numbers are to the left.  Angles imported into Finale 3D follow that convention by default, but the user has the option of selecting a different angle convention at time of import. Duration (String, unknown length limit) This field is not exported by Finale 3D, but it is imported.  When imported, it is interpreted as the duration of the effect, if the field is not empty.  The units (milliseconds, seconds, etc.) can be specified by the user at the time of importing. If the field is empty, Finale 3D will generate a default duration based on the effect type and size. Location (String, unknown length limit) This field is not exported by Finale 3D, but it is imported as the “Storage Location” field. Cost (String, unknown length limit) This field is not exported by Finale 3D, but it is imported as the “Cost” field. VendorNumber (String, up to 20 UTF-16 code units) The Manufacturer field of the effect, or of the first effect if there are more than one; the first effect being arbitrarily chosen if there are multiple effects at the same time for this module-pin combination The firing rows in an SEM file are the same except for these changes:   Table 5 – SEM file differences Field name Description Field name Description DelayTimeMS (Integer) Event time delta from the first firing row in the triggered sequence, in milliseconds rounded to nearest hundredth of a second DelayTimeText (String) Event time delta in the format 00:00:00.00 Event (Integer from 1 to 999) Track number, or 1 if no track number An example SEM script file is shown below, with the vertical bar (|) separating fields.  This example consists of two tracks, each with nine consecutive shots separated by 0.1 seconds.  Scrolling to the right, you can see the last numerical field in each row, which is the Event field, representing the track, is “1” for the first nine rows and “2” for the second nine rows.  You can also see, in approximately the middle of the rows, that the DelayTimeMs fields of the rows are 0, 100, 200, … 800, 0, 100, 200, … 800, reflecting the fact that the first event in each track has a delay time of zero, and the subsequent rows in the track have delays that increase by 100ms. ID|ScriptTime|Position|Qty|BreakTime|Duration|Priority|Cost|Location|Comment|LaunchTime|Description|ProductNumber|Size|Color|VendorNumber|Type|ScriptTimeMS|LaunchTimeMS|DelayTimeMS|ScriptTimeText|LaunchTimeText|DelayTimeText|Effects|Event|Slat|Cue|Length|SayWhen|SayWhenText|SayWhat|Conflict|PyroSlat|PyroCue 2||Pos-01|1|||1||| |0.0|extérieur vert centre bleu|P1249|3.94||||5000|1720|0|00:00:05.00   |00:00:01.72   |00:00:00.00   |-45   |1|1|1||||||| 3||Pos-02|1|||1||| |0.0|extérieur vert centre bleu|P1249|3.94||||5100|1820|100|00:00:05.10   |00:00:01.82   |00:00:00.10   |-34   |1|2|1||||||| 4||Pos-03|1|||1||| |0.0|extérieur vert centre bleu|P1249|3.94||||5200|1920|200|00:00:05.20   |00:00:01.92   |00:00:00.20   |-22   |1|3|1||||||| 5||Pos-04|1|||1||| |0.0|extérieur vert centre bleu|P1249|3.94||||5300|2020|300|00:00:05.30   |00:00:02.02   |00:00:00.30   |-11   |1|4|1||||||| 6||Pos-05|1|||1||| |0.0|extérieur vert centre bleu|P1249|3.94||||5400|2120|400|00:00:05.40   |00:00:02.12   |00:00:00.40   |      |1|5|1||||||| 7||Pos-06|1|||1|||note1|0.0|extérieur vert centre bleu|P1249|3.94||||5500|2220|500|00:00:05.50   |00:00:02.22   |00:00:00.50   |11    |1|6|1||||||| 8||Pos-07|1|||1|||note2|0.0|extérieur vert centre bleu|P1249|3.94||||5600|2320|600|00:00:05.60   |00:00:02.32   |00:00:00.60   |23    |1|7|1||||||| 9||Pos-08|1|||1|||note3|0.0|extérieur vert centre bleu|P1249|3.94||||5700|2420|700|00:00:05.70   |00:00:02.42   |00:00:00.70   |34    |1|8|1||||||| 10||Pos-09|1|||1||| |0.0|extérieur vert centre bleu|P1249|3.94||||5800|2520|800|00:00:05.80   |00:00:02.52   |00:00:00.80   |45    |1|9|1||||||| 11||Pos-01|1|||1||| |0.0|extérieur vert centre bleu|P1249|3.94||||10000|6720|0|00:00:10.00   |00:00:06.72   |00:00:00.00   |-45   |2|1|2||||||| 12||Pos-02|1|||1||| |0.0|extérieur vert centre bleu|P1249|3.94||||10100|6820|100|00:00:10.10   |00:00:06.82   |00:00:00.10   |-34   |2|2|2||||||| 13||Pos-03|1|||1||| |0.0|extérieur vert centre bleu|P1249|3.94||||10200|6920|200|00:00:10.20   |00:00:06.92   |00:00:00.20   |-22   |2|3|2||||||| 14||Pos-04|1|||1||| |0.0|extérieur vert centre bleu|P1249|3.94||||10300|7020|300|00:00:10.30   |00:00:07.02   |00:00:00.30   |-11   |2|4|2||||||| 15||Pos-05|1|||1||| |0.0|extérieur vert centre bleu|P1249|3.94||||10400|7120|400|00:00:10.40   |00:00:07.12   |00:00:00.40   |      |2|5|2||||||| 16||Pos-06|1|||1||| |0.0|extérieur vert centre bleu|P1249|3.94||||10500|7220|500|00:00:10.50   |00:00:07.22   |00:00:00.50   |11    |2|6|2||||||| 17||Pos-07|1|||1||| |0.0|extérieur vert centre bleu|P1249|3.94||||10600|7320|600|00:00:10.60   |00:00:07.32   |00:00:00.60   |23    |2|7|2||||||| 18||Pos-08|1|||1||| |0.0|extérieur vert centre bleu|P1249|3.94||||10700|7420|700|00:00:10.70   |00:00:07.42   |00:00:00.70   |34    |2|8|2||||||| 19||Pos-09|1|||1||| |0.0|extérieur vert centre bleu|P1249|3.94||||10800|7520|800|00:00:10.80   |00:00:07.52   |00:00:00.80   |45    |2|9|2||||||| Figure 2 – Example FireOne SEM script for semi-automatic firing   Table 6 – Example files Download link Explanation fireone_tiny_fir.fir Example exported FIR file fireone_tiny_sem.sem Example exported SEM file fireone_tiny_fir.fin Example show file addressed for start-to-end firing (FIR) fireone_tiny_sem.fin Example show file addressed for semi-automatic firing (SEM)