Since almost everyone in pyrotechnics has a different preference for labels, it is important that a labels engine is customizable. In Finale 3D, you can customize what information is in the labels, how it is formatted, the colors, the field sizes, and text sizes and padding. You can customize the page format to match the format of stickers on a sheet, such as Avery 5260, or to match the format of a roll printer, like Dymo 30252. You can customize the padding around the edges of the labels to accommodate for slight misalignment. You can customize the sort order of the labels, and whether they print out in columns or rows. You can print out one label per chain or one label per shell in the chain. You can define the criteria for page breaks. You can filter to arbitrary positions or product types or any other characteristic. In short, the labels in Finale 3D have a terrific amount of customization flexibility.
Figure 1 – Example labels printout
What labels can contain
Figure 1 shows part of a labels printout, to illustrate some of the content that can be in the labels. In this template, the upper left is the part number of the item. Below it in two colors is the firing system address. The top right is the launch position, and below that is the mortar angle. Notice that the mortar angle is color coded and contains both a number and angled line. If the label represents multiple shells, such as a chain, the mortar angle graphics show lines for all the shells.
Below the address on the left is the name of the effect. Below the angle on the right is a red “e-match hint” that tells the crew if multiple e-matches are connected to the same firing system pin, or if the label represents a chain. The middle two labels on the right are a V-pair of shells on the same firing system pin. Notice the firing system address field has inverted colors on a black background for only these two labels. That is an extra bit of formatting finesse to call attention to the fact that these two items are e-matched together on the same pin.
The bottom row in black includes the show date and name on the left, and a duplicate of firing system address on the right. The reason for duplicating the firing system address is to support folding the label in half, so either side you look at has the address on it (as well as being a backup in case one side of the label gets smudged or torn). On the subject of folding the labels, the thin lines in the corners and the tiny vertical lines in the center are there to help you ensure your labels are aligned to the sticker, and as guidelines for where to fold if you are folding them in half. These lines are also optional in the customizations.
Choosing a pre-defined labels template
The Finale 3D software includes a set of pre-defined labels templates that may be just what you need, or are at least a good starting point if you want to customize them further. In the main “File” menu, the labels menu is divided into five sections. The first four sections are sorted in different orders. The fifth is a set of labels specifically for chains. Each of the sections has a submenu of different pre-defined labels templates corresponding to formats commonly used in the pyrotechnics industry. If you use one of these format, then try printing out labels for your show and see if the result happens to be what you need!
All of the pre-defined labels templates other than the chains labels are configured to print out a single label per chain. The chain labels templates, by contrast, print out one label per shell or other item in the chain, and only print out labels for these items in chains. Thus if you want to print out labels for your entire show, including one label per item in the chain, then you can print out two batches of labels: a first batch with one label per chain, using any of the sort options; and a second batch of just the chains with one label per shell in the chains, using one of the chain labels options.
Figure 2 – Five different labels arrangements, each with many options for different sticker formats.
Customizing a labels template or creating a new one
The blue gear menu in the upper right of the script window has a menu item, “Create or edit labels template” (See Figure 3). This menu item opens the dialog of Figure 4, which edits the selected labels template or begins a new one. Labels templates are stored as blueprints, so when you edit an existing template or create a new one, the resulting blueprint will be one of the rows in the blueprints window.
You can see all the pre-defined labels templates and any additional templates you create by selecting the menu item, “Window > Blueprints window” and scrolling through the rows. You can also copy/paste blueprints from one show to another as described in Copying report and labels templates between shows. One thing to note is that the blueprints window contains other types of blueprints as well, like report templates and addressing blueprints. The leftmost column in the blueprints window, “Type”, indicates what kind of template each blueprint is.
Figure 3 – The blue gear menu in the upper right of the script window has a menu option for creating a custom label, at the bottom of the menu.
The dialog of Figure 4 includes all the customization fields for the labels template, beginning with the name, which is what identifies the blueprint, the title, which is what is printed at the top of the page if there is room, and the filter, which optionally filters the set of script rows used to generate the labels. For most applications the filter is blank because the most common need is to print labels for all the rows in the script, possibly combining chain rows into the same label.
The filter can be used for special purposes, like excluding cakes or printing out labels only for a set of launch positions. Any filter expression that you can type in the script window’s search box is also valid in the labels template filter field. You can exclude cakes by typing “parttype != cake”. You can print labels only for positions containing the word “front” by typing, “position += front”. A pre-defined template that makes use of the filter field is the chain labels template. Its filter field contains “chainref != “”” to exclude any row that does not have a chainref value (shown in the Chain column in the script).
Figure 4 – The labels customization dialog controls the label’s format, its page layout, and what’s in it.
Section 1 of the dialog lists the fields for sorting the labels. Section 2 combines consecutive rows that agree on all the specified terms (if any terms are specified). If you wanted to print out one label per module, for example, you could sort the labels by module number and then combine consecutive rows that agree on the module number. The labels will be generated from the combined rows. Some of the script fields have special formatting functions that handle combined rows. In fact, an example of these special formatting functions is prominent in Figure 1 at the top of this article: the angle field shows line graphics depicting the angles of all of the rows combined together into the row that generates the labels. That is the mechanism by which the three labels depicting chains in Figure 1 have five green lines in the angle field.
Section 2 also has checkboxes to combine rows that are part of the same chain, or part of the same group. These checkboxes are independent of the specified combining terms, and they can be used together. Combining by chains is quite common, because users more often prefer one label per chain to one label per shell in the chain. All the pre-defined labels templates except the chain labels templates have the combine-by-chain checkbox turned on.
Section 4 specifies the layout of labels on the page. With the controls in this section, you define the number of rows and column that fit within the sheet of paper. You also select the size of the sheet of paper (letter or A4) or in that same selector you can choose options for one-label-per-sheet, which is what is used for printing rolls of labels.
Label manufacturers provide template specifications for their label sheets, which you can use to fill out the fields in Section 4. After specifying the number of rows and columns and dimensions of the labels themselves, you need to specify the page margins surrounding the matrix of labels (sides, top, and bottom) in millimeters. This collection of information uniquely defines the dimensions of the gutters in between the labels, so even if your template specifications from the label manufacturer provide measurements for the gutters, you do not need to enter that information in Section 4 because it is redundant.
The last three fields in Section 4 specify the interiormargins within the labels. These margins have nothing to do with the specifications from the label manufacturer. Their function is to contract the information displayed in the label to pull it away from the edges, making your printed labels more tolerant of minor alignment errors that arise during the printing process. The more you increase your interior margins, the less likely it is that information near the edges might get cut off. There’s a cost of safety, though. The larger your interior margins, the smaller the text in the labels, which may make them harder to read.
Section 3 also pertains to the format of labels on the page. You can insert page breaks by specifying the page break fields. With the rows in sorted order, whenever two consecutive rows differ in any of the page break fields, a page break will be inserted.
Dividing the label content into boxes
Section 5 of the labels dialog contains the fields that control what is displayed in the label, and how it is formatted. The label content is divided into eight boxes, as illustrated in Figure 5. The boxes are referred to as rows — top, center, bottom, extra — each row with a left and right side.
Figure 5 – The label content is divided into eight boxes (four rows, each with left and right boxes).
The heights of the four rows are all relative to the interior height of the label, inside the interior margins. In Figure 5, the interior margins account for the fact that the red outlined boxes do not cover the complete area inside the four corners reflecting the actual dimensions of the label. The heights of the four rows should add up to 1.0. If you only want three rows in your labels, you can make the first three rows’ heights add to 1.0 and give the last row a height of zero to shrink it out of existence.
Each row has a “split” parameter that divides the row into left and right sides. The split parameter should also be a value from 0 to 1.0, with the value 0.5 indicating the left and right sides are split evenly. The “padding” field for each row controls the amount of spacing around the text within the row’s boxes. The padding number is from 0 to 0.5, indicating what fraction of the row’s total height is used for spacing on the sides around the text. The padding value is usually around 0.1 or 0.2. The value 0.0 makes the text expand maximally in the box. The value of 0.5 allocates the all the area of the row to the whitespace, shrinking the text out of existence.
Section 5 of the labels dialog has two selectors for each box, defining what data the box displays, and how the data is formatted. The options are explained in the next paragraphs.
Selecting what is displayed in the boxes
The first selector for each box specifies what goes into the box. The options include all the columns from the script window, in addition to a dozen or so special fields as described in Table 1.
Table 1 – Field values
|Part Number, Size, Type, Duration, etc. (the columns in the script window)||Same as in script window, with the exception of Angles* and Address|
|Angles*||Same as in script window, displays the numerical angle, followed by an ASCII character: \|/FBH*, for left, up, right, forward, back, heading (rotated about up axis), and multiple. If the label represents multiple effects, the numerical angle represents the first effect, and the ASCII character is asterisk. [ed: as of 2020-08-15 the FBH characters are not yet implemented]|
|Address||Similar to display in script window, except removes leading zeros on the pin numbers while continuing to sort by their numerical value (2 before 10 without requiring 02). If the label represents multiple (and different) addresses, then the Address field will be blank.|
|Pin||Same as in script window. If the label represents multiple addresses, then the pin numbers will be printed in ranges as efficiently as possible using “..” for ranges. For example, if pins 01..05 and 95..99 are all represented by the label, then Pin field will contain, “01..05 95..99”.|
|Module||Same as in script window. If the label represents multiple addresses, then the module numbers will be printed in ranges as efficiently as possible using “..” for ranges. For example, if modules 01..05 and 95..99 are all represented by the label, then Module field will contain, “01..05 95..99”.|
|Show Name, Show Date, Show Location, Show Field #1, Show Field #2||Show properties from the menu “Show > Set show information”|
|Show Date And Name, Part Number And Description, Size And Description||Combinations of two values, to fit more information into a single box on the label without requiring two boxes|
|E-Match/Chain Verbose Hint||A short hint about the e-match, chain timing, and/or delay fuses relating to the label (see Table 2)|
|E-Match/Chain Concise Hint||An alternative, more concise hint about the e-match, chain timing, and/or delay fuses relating to the label (see Table 2)|
|Pin Absolute||The pin address relative to the module, as opposed to the pin address relative to the slat, but otherwise the same as the Pin field described above. This value is useful for firing systems with slats or splitter boxes or virtual slats that use an absolute numbering system for the pin addresses.|
|Module/Pin Address||A combination of the Module and Pin Absolute fields, analogous to the Address field but converting the three part addresses from Module-Slat-Pin into two-part addresses with absolute pin numbering relative to the module itself, as in Module-Pin. If the label represents multiple addresses, the formatted output consists of the range of modules, then dash (“-“), then the range of mins. There is no way to know which pins belong with which modules. For example, if the label represents module 01, pins 95..99, and module 02, pins 01..05, the printed output will be “01..02-01..05 95..99”.|
|Module||The module number, by itself; same as the Rail if the firing system does not use slats. This field is useful in combination with the Pin Absolute field, for firing systems with slats or splitter boxes or virtual slats that use an absolute numbering system for the pin addresses.|
With regard to the Pin Absolute, Module/Pin Address, and Module fields, use these field to print labels with addresses based on module and pin (no slat). For example, if you use virtual slats (see Slats, virtual slats, and splitter boxes) to divide 32-pin FireOne modules into 4 slats of 8 pins each with addresses XXX-A-1, XXX-A-2, …, XXX-A-8, XXX-B-1, … then the corresponding module and absolute pin addresses are XXX-1, XXX-2, …, XXX-8, XXX-9, …
E-match/chain hints in the labels
The “E-Match/Chain Verbose/Concise Hint” field is a short phrase indicating the number of e-matches, or shells in a chain, or delays. The “Verbose” messages provide a hint for almost everything, including “1/1 e-match” for a single effect in non-exceptional circumstances. The “Concise” messages shorten the text a little, and ignore the common case of “1/1 e-match”, which makes the hints coincide with only the notable, non-common cases. The choice between verbose an concise hints is a personal preference. Table 2 shows the possible messages, which can be combined.
Table 2 – E-match/chain hints
|What Label Represents||E-Match/Chain Message|
|Chain of 5 shells with short delays or irregular delays between shells||Chain of 5|
|Chain of 5 shells with same delays between all shells of 2.0 seconds||Chain of 5 x 2.0s|
|Chain of 5 shells with 2.0 second delay in front of chain||Chain of 5; 2.0s|
|Third shell in chain of 5, the shell separated from the previous shell by 2.0 second delay||3/5 in chain; 2.0s|
|First e-match of three on same pin||1/3 e-matches|
|2.2 second delay fuse before effect||2.2s delay|
One of the pre-defined labels formats (“Chain labels”) prints one one label per shell in chains, and is filtered to chains only. The label format includes a verbose e-match/chain hint that specifies the delay before shell for each shell in the chain. Thus the information on these labels is exactly the information required to build arbitrary chains. You can use this labels format or one like it as an alternative to a chain building report printed as a table, if you like the idea of having a label for each shell in the chain that includes the delay in front the shell.
Selecting how the information in the boxes is displayed
The second selector for each box specifies the format or style of display in the box. The simple examples are just the color of the text and the color of the background, or outlining the box. Other styles, denoted as “Fancy”, do special formatting depending on the field value, such as changing the color based on the size. The options are shown in Table 3.
Table 3 – Field styles
|Black text on white, Red text on white, etc.||Colors of text and background|
|Bold black text on white, Bold red text on white, etc.||Colors of text and background, with bold font|
|Black outline on white, Black outline on red, etc.||Outline around the box|
|Fancy angle colors||Color is green if left-aiming, black if up, red if right-aiming|
|Fancy size colors||Color depends on size of effect, e.g., 3″ is different color from 4″|
|Fancy address colors||Two colors, black for the first part of the address and red for the second part, to distinguish the module from pin numbers visually; also color of text and background will invert (white text on black background) if multiple e-matches on same firing system pin, to call attention to that fact|
Text justification in the label boxes
Paragraph 6 of the labels customization dialog (see Figure 6) gives you options for justifying the text in any of the boxes to the left edge, right edge, center. The default is “smart”, which will automatically be left justification for the left boxes; and which will be right justification for the right boxes — unless the right boxes are wider than 50% (i.e., split < .5), in which case they will have left justification.
Figure 6 – Any of the fields can have left, right, or center text justification.
Some labels uses like that shown in Figure 7 require center justification within the label. It is easiest to use only the left boxes by making the row splits 1.0 (100% left, 0% right), and setting the text justification for the left cells to “Left”.
Figure 7 – Set the split to 1.0 and use the left boxes if your labels require center justification.
Table 4 – Template file provided by Avery for debugging printer scaling problems; and example labels files