Total found:2372
Dragging a sequence to start from another position is sometimes necessary just to start a sequence in the right place around a stadium. The user interface can also be used to generate interesting choreography by repeating a sequence multiple times starting at different positions progressing along a line or around a circle of positions. All of the use cases require that the sequence wraps around the line or circle of positions. The sequence in Figure 1 goes around all the positions in the circle, beginning at Pos-01 at the front. This sequence is easy to construct using the "clockwise" or "position names" options of the "Make into sequence..." dialog. You can easily imagine a sequence like this going around a sports stadium, starting in the end zone of home team. But what if you wanted the sequence to begin in the end zone of the visiting team? Referring back to the position names of Figure 1, you might want the sequence to begin at Pos-25 and wrap around from Pos-50 to Pos-01 and back to Pos-24. To create the sequence in this phase requires two steps. First, create the sequence normally. Second, with all the items in the sequence selected, drag the effect at Pos-01 to Pos-25 in the 3D view. Doing so shifts the entire sequence to start at Pos-25 and wrap around. The wrap around from Pos-50 to Pos-01 is based on their names. Wrapping relies on the premise that the relevant positions are sorted by their names and that the names have a common stem ("Pos-" in this example) followed by a number. Dragging the sequence from position N to position N + M moves all the effects + M in the sequence. If any of those positions don't exist, the effects wrap around through the lowest numbered position with the same stem. Figure 1 – If you want the sequence to start at the other side of the circle, it would need to start at Pos-25. If the show contained a Pos-51 somewhere outside the circle and unrelated to the sequence, it would be important that dragging the sequence didn't drag it through Pos-51. To avoid Pos-51, you would need to rename it with a different stem from the positions involved in the sequence. A position named Front-51, for example, wouldn't interfere with the sequence on Pos-01 through Pos-50 as it is dragged around the circle.
The "Make into sequence..." function in Finale 3D arranges the selected effects in a sequence, as shown in Figure 1. The function can arrange the effects in a variety of patterns like center-to-outside or in-pairs. The function can sort the effects according to their position coordinates left-to-right on the screen or around a circle, or according to their angles. The function can create multiple cycles of the sequence. It can "bounce" the cycles back and forth, and optionally remove the doubled up turnarounds on the ends. The function can handle chains and G-key groups to make sequences of subsequences. The function can keep pairs together. In combination with some drag-and-drop user interface, the function can create sequences at different phases. In short, while the "Make into sequence..." function is a simple concept, you can use it in a variety of ways in your choreography. Figure 1 – Select the effects and do "Make into sequence..." to spread them out evenly in time. Aside from the duration and interval, which have obvious meaning, the "Make into sequence..." dialog offers selectors for sorting the effects and for handling groups of effects. With the default choices of Figure 2, the sequence will sort the effects by position first, breaking ties by time. It will treat each effect as a separate time point, with the one exception of chains which it treats atomically as single time points without affecting the internal timing of their shells. The default settings from Figure 2 make sense if the sequence runs across a line of positions, but if the sequence is applied to a fan of effects at a single position, then sorting effects by position name doesn't have any effect. If you are putting a fan into a sequence, you should sort effects by angle, choosing any of the bottom four options in Figure 3. Figure 2 – The "Sort effects by" selector has patterns options. The angle options at the bottom of Figure 3 offer four patterns for the sequence. The position options also include the same four patterns, for three different manners of sorting the positions -- by their name, by their coordinates left-to-right on the screen, and clockwise around a circle. Figure 3 – Four different patterns are possible for angles or positions (and three sorting options for the positions). The default setting for the "Groups of effects" selector -- "Spread out in the sequence normally" -- treats every effect as a separate time point (with the exception of chains). If you change the selector to "Stick together as subsequences" then groups of effects at the same position, angle, time, or G-key group will be treated atomically as subsequences. This option enables you to put subsequences into sequences without interfering with the internal timing of the subsequences. If the "Sort effects by" selector is any of the position based sorts, then the "Stick together as subsequences" option will recognize all the effects at each position as a subsequence, and will keep them together; if all the effects are at the same position, then the option will recognize effects at the same effect time as subsequences, like pairs or flights on the timeline which are a kind of subsequence. If the "Sort effects by" selector is any of the angle based sorts, then the "Stick together as subsequences" option will recognize effects at the same angle as a subsequence; if all the effects are at the same angle, then the option will recognize effects at the same effect time as subsequences. If any of the selected items are in G-key groups (from the "Script > Groups > Combine as group" menu item), then the groups are treated atomically if the "Stick together as subsequences" option is chosen, and all effects not in the groups will be treated as independent time points in the sequence. Figure 4 – The "Groups of effects" selector enables sequencing subsequences or making multiple sequences. The final two options in the "Groups of effects" selector produce multiple cycles of the sequence. These options use only the existing selected effects for the cycles; they do not clone or add effects. Thus if you want N cycles of a sequence, you need to begin with N copies every effect in the sequence. Consider the sequence of Figure 1, which has just nine effects, one at each position. If you selected those nine effects and duplicated them (Control-D) a couple times into four times as many effects in total, then you'd have the right number of effects to make four cycles of the sequence. This simple example is a fine way of producing multiple cycles of a sequence: Select all nine positions. Click one of the effects in the effects window to add one effect to all nine positions. Click again, N times in total if you want N cycles of the sequence. Select all 9 * N effects, and do "Make into sequence..." Choose either of the multiple cycles options in the "Groups of effects" selector. That's it! Figure 5 – Bouncing sequences across positions usually look better if the turnarounds are not doubled up. The term "bouncing" means a sequence whose cycles go back and forth, like the zig-zagging shown in Figure 6. Bouncing sequences across positions generally look better if the turnarounds are not doubled up, but that means fewer effects are needed at the end points. When you select the bouncing option, Finale 3D recognizes if the end points would be doubled up and offers to remove the duplicates, as shown in Figure 5. If the selected effects already have the proper number of effects at the turnarounds then you won't get the dialog. The dialog just makes it easier to create bouncing sequences, since it is easy to add the same number of effects to every position. Figure 6 shows a bouncing sequence across a line of positions. Bouncing also applies to fan sequences. Unlike sequences across positions, bouncing sequences in cakes such as X-shape or Z-shape cakes usually do have doubled up effects on the turnarounds due to the way they are constructed in slices. So if you are using the "Make into sequence..." function to create a cake simulation you will probably select "No" to the dialog of Figure 5. Figure 6 – Zig-zags are just one of the bouncing patterns that are fun to watch. Referring back to the beginning of this article, the first paragraph mentions a drag-and-drop user interface for creating sequences at different phases. The word phase just means starting the sequence from a different position. If you want to start a sequence going around a stadium at a particular spot, you'll need to drag-and-drop the sequence to start at a different position after creating it. The technique is described in Dragging a sequence to start from another position.
The Hansol Sunshine 5 Head Flame System unit is a 5-head flame projector that can be controlled by any of the DMX-capable firing systems, such as Piroshow, Pyromac, PyroSure, fireTEK, Cobra, Pyrodigy and Mongoose. Figure 1 – Hansol Sunshine 5 Head Flame System The Hansol Sunshine 5 Head Flame System has a 5-channel DMX personality with independent control of the five heads, and a 1-channel pilot flame that can be configured to an independent DMX channel address. The pilot flame address can be shared by multiple fixtures. Some versions of the Hansol Sunshine also have a safety channel at a fixed DMX channel address, channel 1, which must be shared. Finale 3D combines the concept of safety channel and pilot flame and controls them both with a single "Safety Channel AND Pilot Flame" effect. If your version of the Hansol Sunshine requires a safety channel at DMX channel 1, that forces you to configure the pilot flame as DMX channel 2 so the two channels can be turned on together by the "Safety Channel AND Pilot Flame" effect. If your version of the Hansol Sunshine does not require a safety channel, then you can configure the pilot flame to any free DMX channel. Instructions for the two options, safety channel or not, are shown in Table 1. Each row in the table lists the Fixture Type for the positions representing the flame systems, the number of channels each such position will use to control its flames (5), the Fixture Type of the position representing the safety channel or pilot flame , and the number of channels that position uses (1 or 2). Table 1 – Safety channel options Option Flame system's Fixture Type in Finale 3D Flame system fixture number of channels Safety channel or pilot flame Fixture Type in Finale 3D Safety channel or pilot flame fixture number of channels Flame system fixtures share the same safety channel or pilot flame channels Option 1 "Hansol [055] Sunshine Fixture: 5 Head w/ Safety And Pilot" 5 "HANSOL [056/0000] Safety Channel AND Pilot Flame" 2 Yes, required Option 2 "Hansol [057] Sunshine Fixture: 5 Head w/ Pilot Only". The "Safety And Pilot" 5 "HANSOL [058/0000] Pilot Flame" 1 Optional The DMX channels used by the safety channel or pilot flame fixture types for Option 1 and Option 2 are shown in Table 2 and Table 3. Table 2 – DMX channels of the "HANSOL [056/0000] Safety Channel AND Pilot Flame" (Option 1) DMX Channel Meaning Effect in Finale 3D that controls channel Channel 1 (DMX Channel Base + 0) Safety channel ON/OFF (0-101 = OFF; 102-140 = ON; 141-255 = OFF) Part number HS11021 Channel 2 (DMX Channel Base + 1) Pilot flame ON/OFF (0-153 = OFF; 154-203 = ON; 204-255 = OFF) Part number HS11021 Table 3 – DMX channels of the "HANSOL [058/0000] Pilot Flame" (Option 2) DMX Channel Meaning Effect in Finale 3D that controls channel Channel 1 (DMX Channel Base + 0) Pilot flame ON/OFF (0-153 = OFF; 154-203 = ON; 204-255 = OFF) Part number HS12021 For Option 1, the pilot flame is the second channel of the "Safety Channel AND Pilot Flame" Fixture Type and the safety channel is the first. The safety channel must be at the fixed channel address 1, so set the "Pilot & Ignition Address" on your physical unit to be 2. For Option 2, the pilot flame is the first and only channel of the "Pilot Flame" Fixture Type, so set the "Pilot & Ignition Address" on your physical unit to be the same as the DMX Channel Base of the position configured as the "Pilot Flame" fixture in Finale 3D. Table 4 – DMX channels for the flame system fixtures themselves DMX Channel Meaning Effect in Finale 3D that controls channel Channel 1 (DMX Channel Base + 0) Head 1 ON/OFF (0-153 = OFF; 154-203 = ON; 204-255 = OFF) Various part numbers in the range HS11000- HS12021 Channel 2 (DMX Channel Base + 1) Head 2 ON/OFF (0-153 = OFF; 154-203 = ON; 204-255 = OFF) Various part numbers in the range HS11000- HS12021 Channel 3 (DMX Channel Base + 2) Head 3 ON/OFF (0-153 = OFF; 154-203 = ON; 204-255 = OFF) Various part numbers in the range HS11000- HS12021 Channel 4 (DMX Channel Base + 3) Head 4 ON/OFF (0-153 = OFF; 154-203 = ON; 204-255 = OFF) Various part numbers in the range HS11000- HS12021 Channel 5 (DMX Channel Base + 4) Head 5 ON/OFF (0-153 = OFF; 154-203 = ON; 204-255 = OFF) Various part numbers in the range HS11000- HS12021 Instructions To design a show for Hansol Sunshine 5 Head Flame System units, please follow these steps: Set up. (A) Follow the flame set up instructions in the Flame systems basic instructions and Exporting a firing system script for flame systems to configure positions in Finale 3D as your flame system fixtures and additionally to configure a position as a "safety channel or pilot" fixture, which can be shared by the flame system fixtures. (B) In the real world configure each physical unit's "Machine Address / Start Address" to be the start of the 5-channel range you allocate for it. (C) In Finale 3D configure the "DMX Channel Base" of the positions representing flame system fixtures to match the Start Addresses exactly. (D) In the real world configure each physical unit's "Pilot & Ignition Address" to be the number "2" if your flame system requires a safety channel (Option 1 in Table 1); or to be any free DMX channel address otherwise (Option 2 in Table 1). (E) In Finale 3D configure the "DMX Channel Base" of the safety channel or pilot fixture to be the number 1 if your flame system requires a safety channel (Option 1 in Table 1); or to be whatever channel address you chose for the pilot otherwise (Option 2 in Table 1); alternatively, Option 2 flame system fixtures can have their own safety channel or pilot fixtures instead of sharing one in common. Add the Assorted DMX supplier catalog to your Finale 3D account. Login to the finale3d.com website. At the top of the page, go to “My Account > Supplier Catalog Settings” (www.finale3d.com/supplier-catalogs-settings/). Find the Assorted DMX supplier catalog in the table, and turn the switch to ON. Then launch the Finale 3D application and synch to network. The Assorted DMX catalog will appear as one of the available collections in the effects window, which you can choose from the selector at the top of the window. This catalog contains effects for all types of Assorted fixtures currently supported in Finale 3D, together. Add flame effects to the show. (A) Right-click on the 5 Head Flame System positions to add compatible effects from the context menu or to filter the effects window to compatible effects. Choosing the DMX channel ranges for fixtures Each 5 Head Flame System fixture requires multiple channels, so if you are putting multiple fixtures in the same DMX Universe, you need to set the Start Address on the fixture in the real world and the corresponding DMX Channel Base on the fixture in Finale 3D to a range of channels that doesn't overlap with others. A DMX universe has channels 1-512. If you want to pack as many fixtures into the 512 channels of a DMX universe as you can, back-to-back ranges are the most efficient. Table 5 shows an example for 5 Head Flame System fixtures. Some DMX firing systems only support 50 or 100 channels, so you may not have all 512 channels to work with. The example of Table 5 shows fixtures that all share the same safety channel at DMX channel 1. The pilot flame is thus at channel 2, and the first fixture's DMX Channel Base is channel 3. By contrast, the example of Table 6 shows fixtures that do not have safety channels. The pilot flame channel or channels in Table 6 could be anywhere in the 1-512 range; the fixtures could share the same pilot flame channel or they could each have their own channel. The example illustrates a shared pilot flame channel at DMX Channel Base 1. Table 5 – Example channel ranges for flame systems with safety channels AND pilot flames Fixture DMX Channel Base Channels Used "Safety Channel AND Pilot Flame" 1 1-2 1 (first flame system fixture) 3 3-7 2 8 8-12 3 13 13-17 4 18 18-22 5 23 23-27 6 28 28-32 7 33 33-37 8 38 38-42 9 43 43-47 ... 52 508 508-512 Table 6 – Example channel ranges for flame systems with pilot flames ONLY Fixture DMX Channel Base Channels Used "Pilot Flame ONLY" 1 1 1 (first flame system fixture) 2 2-6 2 7 7-11 3 12 12-16 4 17 17-21 5 22 22-26 6 27 27-31 7 32 32-36 8 37 37-41 9 42 42-46 ... 52 507 507-511 Table 7 – Example files and downloads Download link Explanation Sunshine user manual.pdf Hansol Sunshine 5 Head Flame System user manual test-hansol-5-sunshine-head-flame-system01.fin Example show file test-hansol-5-sunshine-head-flame-system01.csv Example exported script
The online Finale 3D community features a forum, private messaging, your own personal homepage, a global user map, a monthly photo contest, and more. As you explore community areas, you will likely encounter references to "Pyro Points". This article is all about pyro points - what they are, how you get them, why you want them, and how you can use them. What are pyro points? Pyro points are the virtual currency of the Finale 3D community. As a Finale 3D user and member of the online community, you can earn pyro points, spend points points, and even tip pyro points to other users. Pyro points exist only within the Finale 3D community, they can't be acquired or spent anywhere else. Why do I want pyro points? There are multiple reasons you want pyro points. For starters, because the amount of pyro points your earn directly corresponds to your pyro status. Your pyro status conveys your level of engagement and standing in the community. Your status can be viewed by others on your public homepage and along side each of your forum posts. Figure 1 – Pyro status as it appears on your personal homepage and along side a forum post. How can I earn pyro points? If you're just starting out, the quickest way to earn pyro points is by completing the pyro points rewards activities on your My Profile page. By completing the pyro points rewards activities, you can earn up to 100 pyro points. The rewards activities are also a great introduction to the community and the Finale 3D software. In addition to rewards, you will also earn 1 pyro point each time another user likes one of your forum posts or directly gives you a pyro point. Last but not least, you can win pyro points by entering the monthly photo contest and other Finale 3D design competitions. Figure 2 – Pyro points rewards on My Profile page. Where can I see how many pyro points I have? You can check your pyro points balance any time by visiting your My Profile page. To view a complete list of all your pyro points transactions, use the View History link displayed under your pyro points balance. Figure 3 – Pyro points balance and link to view points transaction history on My Profile page. How does the number of pyro points I have correspond to my pyro status? Your pyro status is derived from the maximum number of pyro points you have earned in any calendar year. The more points you earn, the higher your status. Once you achieve a specific status level, you will never lose it. This means you will keep your current status until you earn a higher status; using your pyro points or entering a new calendar year will not affect your status. Figure 4 – Pyro statuses and the amount of pyro points you need to earn within a calendar year to achieve each status. Can others see my pyro points? Your pyro points balance, the number of points you have earned in the current calendar year, and your pyro points transaction history are private and visible only to you. Your pyro status, which is based on the highest number of pyro points you have earned in a any calendar year, is visible to all users. What can I do with my pyro points? When you like a forum post, you give the author of the post a pyro point. You can also give any user a pyro point for any reason directly from your My Profile page. When you give a pyro point, you can enter a description which will appear in the user's pyro points transaction history. Figure 5 – Liking a forum post and giving another user a pyro point from within My Profile.
Reports sometimes need to represent multiple position names in a single row, but only one position column is possible. Getting multiple position names into a single row is a conundrum. The solution is to use position groups to create nicknames for the groups of positions that appear in a single row. The circled cell in Figure 1 shows a row representing multiple positions in the Pinboard Cue Sheet report. Cue 05/A fires shots on Pos-01 and Pos-02. Rather than displaying the position names in a list (which is not an option), the report tests if the set of positions to be displayed matches a position group. If so, the report shows the group name. You can make position group names that are recognizable, like "Front" or "Shell Positions" or "Rooftop-A", etc. It is easy to tell position group names apart from position names themselves -- position group names always begin with the at-sign. Figure 1 – The Pinboard Cue Sheet shows position group names in Position column for rows that represent multiple positions. You can make position group names by selecting a set of positions and doing the menu item, "Positions > Position groups > Create position group..." Finale 3D automatically creates position groups when you insert effects into multiple positions at once. The position groups are displayed as orange flowers on the left side of the screen, as shown in Figure 2. You can click on the name of the position group underneath the flower to rename or delete it. Figure 2 – The orange flower position group names are displayed in rows that represent multiple positions. Sometimes the automatic creation of position groups is overwhelming, so it is worth mentioning that you can turn off the automatic creation of position groups with a setting in the "Show > Show settings" submenu. If you print a report and notice that one of the cells in the position column is blank, it is more than likely that the row represents multiple positions and that you don't have a position group created that is an exact match. The position cell will be blank in that circumstance.
Reports like the Wiring Script report shown in Figure 1 use conditional formatting to highlight columns or rows, change colors, and add borders based on the information in the cells. Figure 1 – The Wiring Script report uses a variety of conditional formatting options for highlighting and borders. In the example of Figure 1, the horizontal lines group the rows by rail and pin. If multiple shells of different effect types are fired together from the same rail and pin then they will be split out across multiple rows, but the horizontal lines give an indication that the rows go together with the same pin. Alternatively, you can turn on the light gray zebra striping and use conditional formatting to group rows with the same rail and pin in the same light gray highlighting, as shown in Figure 2. Figure 2 – Alternative formatting options employ light gray zebra-striping to group rows together instead of borders between rows. From the Script window's blue gear menu, do "Edit report template..." and choose "basic_wiring_script_portrait" to see the original Wiring Script report's configuration dialog. Paragraph 6 of the dialog controls the conditional formatting, as in Figure 3. Figure 3 – The conditional formatting options employed by the original Wiring Script report. A summary of the conditional formatting choices for original Wiring Script report is, Option A and G invert the colors of the Rail and Pin columns. Option C groups the rows with the same rail and pin, putting lines between the groups. Option D and E add the colors for angled effects. Option F highlights in yellow the rows whose pins have multiple e-matches. The full expression in the box is, "[or [= fullAddress prev.fullAddress] [= fullAddress next.fullAddress] [and [not chainRef] [> numDevices 1]]]". Options D-H are programming language expressions. If you are not a programmer, you can copy/paste examples from existing report templates. Option H highlights the notes in red if they are not blank. Figure 4 shows the conditional formatting choices for the modified Wiring Script of Figure 2. Figure 4 – The modification highlights every-other-row, except it keeps rows that have the same address highlighted together. The differences in Option C are a good jump off point for describing the how the conditional formatting options work. Conditional formatting options The conditional formatting Option C provides two selectors for terms, and a selector to choose how to compare them. If the comparison is true, then the choice in the formatting selector applies to the choice in the "applies to" selector. The terms are all the fields of the report rows. For each field you actually have an option of "this row" or "previous row" or "next row", which enables you to compare a cell value in a row to a cell value in the row above it or below it in the report. For some uses, comparing to the previous or next row is what you need to do. For other uses, you may compare two different fields of the same row. The examples of Figure 3 and Figure 4 compare the same field of a row to the previous row. The expression in Figure 3 is true if the fields are the same; the expression in Figure 4 is true if the fields are different. Looking back at Figure 1 and 2, the table of Figure 1 adds border above every row that has a different address from the row above it. This logical expression matches the selectors in Figure 3. The table of Figure 2 extends the light gray zebra striping to additional rows if they have the same address as the light gray shaded or white row above it. This logical expression matches the selectors in Figure 4. Option A and Option B are simpler types of expressions. Option A is the simplest of all. It doesn't even have any terms. The expression is true if you check the checkbox, and it will apply to every row in the report. This option offers an easy way to change the formatting for an entire column without any special conditions. Option B has a single term, which is a field of your choice. As the wording around option B explains, the expression is true whenever the field value is not blank or zero. Options D-H are programming language expressions. If you are not a programmer, you can copy/paste examples from existing report templates. If you are a programmer, the terms and function names are explained below. All options A-H are expressions. Option A is trivially true whenever you check the box. Option B is true based on the value of a single field. Option C compares two fields. Options D-H are free form expressions that can compare multiple fields. Options D-H can also be just simple expressions if you know what to type. For example, Option G in Figure 3 and 4 is the expression "true" which is not surprisingly true all the time. So Option G in this example is just like the checkbox Option A. Similarly, any expression that can be represented in Option B and C can also be represented in Options D-H. Options A, B, and C are just an easier user interface. Free-form expressions (Options D-H) Free form expressions are written in a simple programming language that has access to the field values of the current, previous, and next row. An expression in the programming language is either a term, or a function with terms as parameters. The terms themselves are field values of the rows, or literals like numbers or strings, or the result of functions operating on terms. Functions are written as square brackets containing the function name followed by the terms that the function operates on, separated by spaces. For example, the expression in Option F of Figure 3 and 4 that highlights the Devices in yellow if multiple e-matches connect to the pin is: [or [= fullAddress prev.fullAddress] [= fullAddress next.fullAddress] [and [not chainRef] [> numDevices 1]]] The interpretation of this expression in English phrasing is, ( fullAddress = prev.fullAddress ) OR ( fullAddress = next.fullAddress ) OR ( ( NOT chainRef ) AND ( numDevices > 1 ) ) This is a complicated expression, explained in Wiring Script report. In addition to counting the devices associated with the pin, it has to take into consideration that chains represent multiple devices but require only a single e-match (yet multiple chains can be e-matched to the same pin together). The conditional formatting is applied if the expression value converted to a boolean value is true. Most comparison functions return a boolean result, true or false. Other functions like abs (absolute value) return numbers. Term values are various types including numbers, strings, booleans, and a few other types. If the expression value is not boolean, it is converted to a boolean value following these rules: 1) undefined is false; 2) the number zero is false; 3) empty string is false; 4) everything else is true. Table 1 – Functions in conditional expressions Function Arguments Description and One or more terms Logical conjunction of terms. or One or more terms Logical disjunction of terms. = Two terms Compares if two terms are equal according to the following rules: 1) numbers compare to each other naturally; 2) symbols compare to each other naturally; 3) boolean values compare to each other naturally; 4) strings compare to each other naturally (case sensitive comparisons of characters in the strings); 4) undefined is equal to undefined; 5) all other comparisons between terms of different types are false. < Two terms Compares if two terms for the "less than" relationship according to the following rules: 1) numbers compare to each other naturally; 2) symbols compare to each other lexicographically (case sensitive comparisons of characters in the symbols); 3) boolean values compare to each other naturally, false being less than true; 4) strings compare to each other lexicographically (case sensitive comparisons of characters in the strings); 4) undefined is not less than undefined; 5) all other comparisons between terms of different types are the result of comparing the types themselves in an enumerated order, not comparing the values. > Two terms Similar to less than comparison. <= Two terms Similar to less than comparison. >= Two terms Similar to less than comparison. != Two terms Similar to equal comparison (but the opposite). not One term True if and only if the term's value is false or undefined. If the term is zero or empty string, the result of not is false (in some programming languages this is not the case). abs One term Absolute value function. containsSubstring Two terms and then optionally the symbol :caseSensitive True if the first term contains the second term as a substring, after converting terms to strings if they are symbols or string-type arrays. The search function is not case sensitive unless you add the :caseSensitive parameter. + One or more terms Adds the terms and returns the result. - One or more terms Subtracts the terms after the first term from the first term and returns the result. * One or more terms Multiplies the terms and returns the result. / One or more terms Divides the first term by the remaining terms and returns the result. round One term Rounds the number to the nearest integer. if Three terms If the first term converted to a boolean value is true, then return the second term; else return the third term. stringsEqual Two terms and then optionally the symbol :caseSensitive Compare two terms, after converting them to strings if they are symbols or string-type arrays. Returns true if they are the same. The function is not case sensitive unless you add the :caseSensitive parameter. string One term Convert the term to a string if it is a number or symbol or string-type array or already a string. symbol One term Convert the term to a symbol if it is a number or string or string-type array or already a symbol. int One term Convert the term to an integer if it is a double or already an integer (rounding down). double One term Convert the term to a floating point number if it is an integer or already a floating point number. type One term Return the type of the term, :bool, :string, :symbol, :int, :double, or :array. numberFromString One term Convert the term from a string to a number, after converting the term to a string if it is a symbol or string-type array. The conversion to a number permits both a dot or comma character as the decimal radix and allows characters after the number that are part of the number in the string, and allows leading whitespace. For example, " 1,23abc" converts to the number 1.23. The type of the returned number is integer if has no fraction; otherwise it is a floating point number. stringLength One term and then optionally the symbol :utfi Returns the length of the string, after converting the term to a string if it is a symbol or string-type array. The length is in Unicode characters (code points), unless the optional symbol :utfi is present, in which case the length is in UTF-8 or UTF-16 or UTF-32 code units, which is platform dependent. On Windows, :utfi means UTF-16 code units, and the length of the string is equivalent to the C++ function wcslen(). Table 2 – Terms in conditional expressions Term Example Description All row fields fullAddress The internal name (not the English name and not the localized name) of any script column, as defined in Script table columns. Terms are case sensitive, so exact capitalization is required. The value of the term is based on the internal representation of the field value, not the formatted representation. The value is the internal representation itself unless: 1) if the field is a numeric field and its value is undefined (blank), then the value of the term is zero; 2) if the field's internal representation is a symbol, then the value of the term is the symbol converted to a string. Literals "red", 0.0762, or 'pos1 Strings, numbers, and quoted symbols. Strings and symbols can contain backslash and double quotes internally if preceded by backslash. For example, "2.5"" is the string that prints out as: 2.5". A quoted symbol is a symbol preceded by single quote. If a symbol contains spaces or certain punctuation characters, it should be written as: #<"MYSYMBOL"> to avoid breaking apart. Since row fields are converted from symbols to strings automatically the need for quoted symbol literals is uncommon. prev prev.fullAddress A representation of the previous row in which the fields of the row can be accessed with the dot character. next next.fullAddress A representation of the next row in which the fields of the row can be accessed with the dot character. The script table has a field named "next" which conflicts with the term "next" that means the next row. To access the value of the field name, write: "this.next" instead of just "next". this this.fullAddress A representation of the current row in which the fields of the row can be accessed with the dot character. Since fields themselves are also defined terms, this "this" term merely provides an alternative representation for the fields themselves. Typing "this.fullAddress" is the same as typing "fullAddress" (both expressions without quotations). true true A boolean term whose value is true. false false A boolean term whose value is false. undefined undefined A term whose value is the undefined value. Numerical comparisons All functions including numerical comparisons operate on the internal representation of the field values, which are defined in Script table columns. Non-integer numerical comparisons require care because you need to know what the internal representation is, and you may need to take into account possible precision error such as with the conversions between inches and millimeters. In Finale 3D, distances and lengths are always represented internally in meters, with the exception of effect size which internally is a floating point number representing typed microns (1/1000th of a millimeter), for which the integer part of the number is the actual size and the fraction part of the number is type information indicating whether the size is to be displayed as inches or millimeters. Since a fraction of a micron is insignificant in pyro it doesn't affect the size in a meaningful amount, but it can affect comparisons for equality with literals. For example, you should not directly compare a size to 75mm using the expression [= size 75000] because even if the size is 75mm the type information in the fraction will make the comparison false. If you want to compare to 75mm explicitly you could use the expression, [= [round [/ size 1000]] 75]. For pyro it is usually not a great idea to compare effect sizes for equality because the conversion between inches and millimeters in pyro is extremely loosey goosey (is a 3" shell 75mm or 76.2?). If you need to compare sizes, compare in ranges. Instead of [= size 75000] please write something like [< [abs [- size 75000]] 2000] for whatever error tolerance you want. Types of numbers Numbers are either integers or floating point numbers. For comparisons, the type of a number doesn't matter because comparison functions will convert integers to floating point numbers when necessary. However math expressions involving only integers use "integer math" in which all intermediate and final values are themselves integers, incapable of representing fractional values. For example, [/ 3 2] is 1, whereas [/ 3.0 2] is 1.5 because the terms of the first expression are all integers and the terms of the second expression are not all integers. Expressions involving integers and floating point numbers will automatically convert the integers to floating point so the calculation can be completed entirely in floating point math. Comparing to the previous example, [/ [+ 3 0.0] 2] is 1.5, because [+ 3 0.0] converts the type of the number 3 from integer to floating point so it can be added to a floating point number. From that point, the final result of the expression is the same as [/ 3.0 2], which is 1.5. An equivalent expression to [/ [+ 3 0.0] 2] is [/ [double 3] 2]. Using integer math and the available functions in Table 1, you can test if a number is even or odd using an expression like [= [/ chainRef 2] [/ chainRef 2.0]], which has the value true if the variable chainRef (which holds an integer value) is even.
The Pinboard Cue Sheet report presents the list of cues for an operator to take some action in a manually fired show: to press a button on a firing system controller or to electrify a pin on a manual firing pinboard. Each cue is a pin number or a pin/bank number if the controller has multiple banks of pins. Since the cues are sequential for the benefit of the operator, the distinguishing characteristic of manually fired show scripts is that the pin or pin/bank numbers of the show are always in chronological order. In Finale 3D, the banks of pins are represented by the "Rail" addresses, which are often letters. Thus, analogous to how the the rail/pin address represents a module/pin or module/slat/pin for a computer fired show, the rail/pin address represents the bank/pin for a manually fired show, the only difference being that the rail/pin addresses in the manually fired shows are in chronological order. The Pinboard Cue Sheet report lists the pin number first and highlights it for the operator since the pin number is the button the operator needs to press for every action. The operator doesn't need to concern himself with the rail address for every single cue, only when the bank changes. Since banks of pins may have 25 or 50 or even 300 pins, the bank switching actions are relatively rare. Whenever a bank switch is required, Pinboard Cue Sheet reports calls attention to the fact with a black outline around the bank number. You can see in Figure 1 that bank "A" is outlined on the first row; and that the next outlined bank is "B", twenty-five rows later! Figure 1 – The Pinboard Cue Sheet shows position group names in Position column for rows that represent multiple positions. Every line in the Pinboard Cue Sheet report is a separate action. If an action fires effects from multiple positions in parallel, the names of all the positions involved would need to be combined somehow into the Position column in the report, but there would rarely be enough room to list them all on the page. The circled cell in Figure 1 shows the solution to this formatting conundrum. Cue 05/A fires shots on Pos-01 and Pos-02. Rather than displaying the position names in a list, the report shows a position group name chosen by the user for the group of positions. In this case "Pos-01/02" is shorter than "Pos-01, Pos-02" but it could be even better. The user can make position group names that are recognizable, like "Front" or "Shell Positions" or "Rooftop-A", etc. You can make position group names by selecting a set of positions and doing the menu item, "Positions > Position groups > Create position group..." Finale 3D automatically creates position groups when you insert effects into multiple positions at once. The position groups are displayed as orange flowers on the left side of the screen, as shown in Figure 2. You can click on the name of the position group underneath the flower to rename or delete it. Figure 2 – The orange flower position group names are displayed in rows that represent multiple positions. Combining all events with the same rail/pin onto the same row is a little different from the combining that the Wiring Script report does. Notably, the Wiring Script requires that combined rows have the same Position, but the Pinboard Cue Sheet report does not. You can see the Pinboard Cue Sheet report's combination criteria in paragraph 2 of its report configuration dialog, which you can get from the Script window's blue gear menu by doing "Edit report template..." and choosing "basic_cue_sheet_portrait". The word "Position" is not in any of the selectors of Figure 3. Figure 3 – Script rows are combined only if they have the same Rail, Pin, and Effect Time; but having the same Position is not required. The Pinboard Cue Sheet report also highlights non-empty notes fields in red, to call your attention to the notes. The highlighting and the outlining of the rail addresses are accomplished with the conditional formatting options in paragraph 6 of the report configuration dialog shown in Figure 4. Figure 4 – The conditional formatting parameters highlight fields based on logical expressions. Conditional formatting From the Script window's blue gear menu, do "Edit report template..." and choose "basic_cue_sheet_portrait" to see the configuration dialog with the paragraph 6 shown in Figure 4. For this report, Option A inverts the colors of the Pin column. Option B highlights the notes in red if they are not blank. Option C outlines the Rail cell whenever it changes from the row before. Option D and E add the colors for angled effects. The checkbox at the bottom turns on the zebra striping of every other row in light gray.
The Safety Distance report lists the positions and the relevant safety distance information. The "Position Safety Distance" is a property of the positions themselves, editable in the Positions window or in the Position Properties dialog. For each position, the report compares the Position Safety Distance with the maximum "Safety Distance" field of the effects launched at the position. Rows with inadequate Position Safety Distance values are highlighted in red. Figure 1 – The Safety Distance report highlights rows for positions with inadequate safety distances. The Safety Distance report is generated from the script rows by sorting the rows by position and combining together all the rows for each position. The combining operation for the effects' Safety Distance field takes the maximum value of the combined rows. Figure 2 shows the combining operation in the report configuration dialog, which you can edit from the Script window's blue gear menu, "Edit report template..." Figure 2 – Script rows at the same position are combined, resulting in one row per position. The highlighted rows of Figure 1 result from conditional formatting settings in the report configuration dialog. Option C of paragraph 6 in the dialog compares the "Effect Safety Distance" of each row to the Position Safety Distance, as shown in Figure 3. The Effect Safety Distance in script rows is simply a reference to the Safety Distance field of the effect definitions in the Effects window. Figure 3 – The conditional formatting parameters highlight fields based on logical expressions.
The Wiring Script report contains the information to wire up the effects in the show. Sorted by rail and pin, the rows in the script provide the position, effect part number and name, size, number of devices, angle, and notes. Notably, the report also has conditional formatting to group together rows that are on the same firing pin, and to highlight pins with multiple e-matches, angled effects, or notes. Since every pyro display company has its own style, you may want to customize this report to add or remove fields or to change the formatting. The default report works for most purposes, and is also a good basis to work from if you make your own report. Figure 1 – The Wiring Script report contains the information to wire up the effects -- and some fancy formatting. The first two columns are inverted colors just to emphasize them and to make this report recognizable. The horizontal lines group the rows by rail and pin. If multiple shells of the same effect type are fired together from the same rail and pin, then they will appear as a single row in the script with the Devices column counting the number of shells; but if the shells are of different effect types, then they are split out across multiple rows, one for each type of effect. From the Script window's blue gear menu, do "Edit report template..." and choose "basic_wiring_script_portrait" to see the report configuration dialog. Paragraph 2 of the dialog controls what script rows are combined together versus listed separately in the report. As shown in Figure 2, script rows are combined only if they have the same Rail, Pin, Position, and Part Number; or if they are chains. Figure 2 – Script rows are combined only if they have the same Rail, Pin, Position, and Part Number; or if they are chains. In the example in Figure 1, the group of three rows on 01/01 represent three shells; the group of three rows on 01/03 represent four shells; the single row for 02/03 represents two shells; and the single row 02/04 represents six shells. The yellow highlights call out any row whose pin has multiple e-matches attached to it. The yellow sections in the Figure 1 illustrate the e-match counting logic. It is easy to see why the yellow cells are yellow, but what about the "3" cell just above the yellow "6" cell at the bottom of the page? Why isn't it yellow? The red notes fields offer a hint. The effects on rail, pin 02/05 and /02/06 are in chains of three shells. Thus the 02/05 row only requires a single e-match for the chain and is therefore NOT yellow; whereas the 02/06 row has two chains of three shells and therefore requires two e-matches, turning it yellow. Figure 3 – The conditional formatting parameters highlight fields based on logical expressions. Conditional formatting From the Script window's blue gear menu, do "Edit report template..." and choose "basic_wiring_script_portrait", to see the configuration dialog with the paragraph 6 shown in Figure 3. For this report, Option A and G invert the colors of the Rail and Pin columns. Option C groups the rows with the same rail and pin, putting lines between the groups. Option D and E add the colors for angled effects. Option F highlights in yellow the rows whose pins have multiple e-matches. The full expression in the box is, "[or [= fullAddress prev.fullAddress] [= fullAddress next.fullAddress] [and [not chainRef] [> numDevices 1]]]". Options D-H are programming language expressions. If you are not a programmer, you can copy/paste examples from existing report templates. Option H highlights the notes in red if they are not blank.
If you sort by angle when addressing and your racks have fixed angle tubes, there is a possibility of gaps in module number sequences in the racks as shown in Figure 1. Why would the first rack have modules 01 and 03 instead of 01 and 02? Fortunately, there's a good reason, and there's a good solution. You just need to understand what is going on. Or if you just want to know the solution, Figure 3 sums it up. Figure 1 – A gap in the module number sequence. Why does the first rack have module 01 and 03 instead of 01 and 02? Figure 2 shows the addressing sort order that produces the rack assignments of Figure 1. Figure 2 looks pretty normal. There's nothing strange about about sorting by "Position > Angle > Event Time". So why is Figure 1 so weird? You would need to know a little more information. The racks in these figures are PyroLamas single shot racks with fixed angle tubes in 15 degree increments between the rows. The left-most row of tubes has -45 degree angling tubes to the left, the next row over to the right has -30 degree angling tubes, and so on to the right-most row of tubes at 45 degrees to the right. Thus in the first rack, the shots 0-9 of module 01 are all -45 degree shots, and A-F of module 01 are all -30 degree shots. Figure 2 – Sorting by "Position > Angle" can yield gaps if your rack tubes have fixed angles. The addressing procedure The apparent gaps in the module number sequence arise from the addressing procedure, which is: Sort the effects according to the sort criteria in paragraph 2 of the addressing dialog. For the effect that is first in the sorted list, follow step (3) on any unused pins of partially allocated rails (modules) and if none of them work then allocate a new rail and try its first pin. For the pin, try to find a rack and tube such that all the constraints in paragraph 3 of the addressing dialog are satisfied; if successful, assign the pin and tube to the effect being addressed. Repeat. The gap in Figure 1 can now be understood by walking through the addressing procedure: Sorted by angle, the first 10 effects easily fit in the left row of the first rack. The next 6 effects being assigned are also -45 degrees to the left (that's how many pins fill into the left-most rows of tubes in Figure 1). The problem is, the first rack doesn't have any more tubes angling that direction, so they must go into the second rack. But the "Rack Cluster" constraint in paragraph 3 of the addressing dialog prevents modules from being shared across racks that are not in the same cluster. Hence these 6 effects in the second rack get module 02. At this point, a gap in the module number sequence of the first rack is assured. Sorting by "Same Rack" or "Rack Number" Following the addressing procedure, you can see that the only way to avoid a gap in the module sequence in the first rack would be to sort the effects such that the effects that fit into the first rack get sorted first, before the effects that spill over into the next rack. The addressing sort options include a term that does just that -- Same Rack. Figure 3 shows where to put it. Figure 3 – Add the term "Same Rack" before "Angle" to fill out a rack before moving onto the next. The Same Rack term gives priority to effects that can fit into the same rack as the previous assignment. In this example, after filling the first 10 effects at -45 degrees into the first rack, the remaining -45 degree effects can no longer fit in that rack so they receive a lower sort priority. The -30 degree effects are the left-most effects that can fit into the empty tubes of the first rack, so they get allocated next. The result is shown in Figure 4. Figure 4 – Sorting by "Same Rack" avoids the gaps in module number sequences. Finale 3D has other special sort terms like Same Rack that can solve similar problems. The term "Rack Number" would also work fine in this example in place of Same Rack. Rack Number not only fills one rack before moving onto the next; it fills the racks in order of their Rack Number. Rack Number enables you to avoid gaps while filling racks according to how you've arranged them visually, as described in detail in Addressing based on layout of racks (Rack Number). The full set of special sort terms, useful for all kinds of purposes, is given in Special sort terms.