Racks and Mortars

Overview

Show design encompasses three main areas: choreography, addressing, and site layout. Whereas choreography obviously specifies what effects are shot when and where, addressing and site layout deal with the setup required to make the show possible. Addressing is the specification of what module and pin "addresses" will ignite the effects. Site layout is the specification of what mortars and racks will hold the shells and where such mortars, racks, and other equipment are located in the launch positions.

Finale's site layout capabilities themselves divide into two areas: automatic rack assignment, and manual editing. Since it would be tedious to layout each mortar and rack by hand, most people begin by using Finale's automatic rack assignment to generate an initial site layout for their show. Then they customize the site layout by editing it before printing out reports for setting up the show.

Automatic Rack Assignment

The automatic rack assignment occurs after the choreography and addressing of the show. The algorithm takes as input the fully addressed show or launch position, and produces as output a collection of racks with mortars for the effects, each mortar specified individually by the module and pin address of the effect it contains.

Since the automatic rack assignment occurs after the choreography and addressing, it does not affect any of the addresses, which have already been determined. Thus you can think of addressing and rack assignment as two phases: first the module and pin addresses are determined in the addressing phase, then second the rack assignments are determined in the rack assignment phase. It is helpful to remember these two phases are separate when you are trying to understand why an automatically generated site layout is the way it is. The site layout is always generated to accommodate the addresses determined by the addressing phase.

Chords

Devices that are ignited by the same pin are called "chords," an analogy to musical chords which are notes played at the same time. The obvious example of a chord in a fireworks show is a chain, since it contains multiple shells ignited by the same fuse, and thus the same pin. Other examples are also common though. Some show designers use multiple e-matches on the same pin in order to get by with fewer pins. Some firing systems require that simultaneous effects are put on the same pin because they are not able to energize multiple pins simultaneously. Manually fired shows basically require that a single pin is used for simultaneous effects because it is easiest to press one button at a time on a manual controller or pin board.

Chords are relevant to rack layout because all the devices on the same pin must be connected to that pin by wires. If the mortars containing devices ignited by the same pin are close together, then less wire is required and the layouts produced are more organized. It is also helpful if the mortars for a chord are not just near each other, but are also laid out sensibly. For example, if a show contains 10-mortar racks and chains of ten shells, then it is sensible to layout each chain it its own rack if the angles of the shots are the same.

Sometimes the most sensible layout is not so obvious though. If a company uses 10-mortar racks and has chains of twelve shells, then it may be more sensible to "cross-load" the chains across twelve racks rather than "straight load" the chains snaking around one rack and onto the next rack.

Chords that involve shots at multiple angles are also not obvious. If a company uses racks that are pre-arranged together in groups of five racks, then it would probably be most natural to "mix-load" a 6-shell W-chain having angles -30, -15, 0, 0, 15, 30 into a row of five shells across the racks with the extra 0-angle shell on the next row. However if the company used racks that were not pre-arranged together, then it would probably be most natural to cross-load all six shells in a single row across six racks.

Fan-in-rack

Finale's site layout capabilities support fan-in-rack type racks that contain mortars of multiple angles in the same rack, but the automatic rack assignment algorithm will never generate an initial site layout using fan-in-rack type racks. If you have that type of equipment then you need to manually edit racks and set the angles of their mortars after generating the initial site layout. Thus for purposes of describing the automatic rack assignment algorithm we can assume that all the mortars in a rack are aiming the same direction, and that the rack itself can be tilted to accommodate shots at an angle.

Cross-loading, Mix-loading, and Straight-loading

The rack assignment algorithm will load the shells of a chord in racks using "straight-loading" or "cross-loading" or "mix-loading" depending on the circumstance and options that you specify in the Show menu.

  • Cross-loading means each shell in the chord goes on a different rack, even if multiple shells have the same angle.
  • Mix-loading means shells with different angles go on different racks, but shells of the same angle go on the same rack. In the example above, the 6-shell chain with angles -30, -15, 0, 0, 15, and 30 degrees would require five racks if mix-loaded, because both 0-angle shells would go on the same rack.
  • Straight-loading means all shells in the chord go on the same rack or snake around to another rack if they don't fit. Disregarding fan-in-rack type racks, straight-loading is only possible if all shells in the chord have the same angle. In that circumstance, straight-loading and mix-loading are in fact the same thing.

The rack assignment algorithm treats chains and non-chain chords differently. Non-chain chords, i.e., shells that are e-matched together on the same pin but are not part of the same chain, are always mix-loaded, which is the same thing as straight-loaded if the shells are all at the same angle. Chains, however, may be cross-loaded or mix-loaded depending on the option you select in the Show menu:

  • Cross-load all chains
  • Cross-load mixed angle chains and chains that don't fit racks
  • Cross-load mixed angle chains only
  • Do not cross-load chains

If you specify the "Cross-load all chains" option in the Show menu then every chain will be cross-loaded across exactly the number of racks as there are shells in the chain, one shell per rack. The other three options will cross-load or mix-load the chain depending on the circumstance:

  • If the option "Do not cross-load chains" is selected, the chain will be mix-loaded.
  • If the shells in the chain, in order, are at various angles that are neither sweep entirely from left to right nor entirely from right to left, then the chain will be mix-loaded since cross-loading the chain would result in mortars aiming into each other. For example, if a chain's shells in order of ignition are at angles -15, 0, 15, 15, 0, -15, then the chain will be mix-loaded since the angles sweep from left to right and back to left. Mix-loading will assign the chain in two rows of mortars across three racks, making two W-shapes back-and-forth.
  • If the option "Cross-load mixed angle chains only" is selected and all the shells in the chain have the same angle, then the chain will be mix-loaded.
  • If the option "Cross-load mixed angle chains and chains that don't fit racks" is selected and all the shells in the chain have the same angle and the number of shells in the chain equals the number of mortars in the rack, then the chain will be mix-loaded, which just means straight-loaded in this circumstance since the angles are the same.
  • Otherwise the chain will be cross-loaded.
Splitting Chords

A second difference between chain and non-chain chords is that the rack assignment algorithm will not split a straight-loaded chain chord over multiple racks unnecessarily if the "Sort chains first and avoid splitting" option is set (see below). Straight-loaded non-chains can always be split. The splitting issue only pertains to mix-loaded and straight-loaded chords since they involve multiple mortars per rack. Mix-loaded chords are never split unnecessarily whether or not they are chains.

A chord fits without splitting at a given mortar position in the racks if the chord's maximum number of mortars per rack does not exceed the number of remaining mortars in the rack beginning at the given mortar position. To avoid splitting straight-loaded chains, the rack assignment algorithm will always assign a chain chord beginning at a mortar position in the rack that allows it to fit if there is such a position. For example, 5-shell chains that are straight-loaded into 10-mortar racks will never begin at mortar position 6, 7, 8, 9, or 10 in the racks because doing so would run off the end of the racks. A 12-shell chain, however, could begin at any position since there is no way to load a 12-shell chain into a 10-mortar rack without splitting off part of it onto a second rack.

Order of Pins in Racks

When you look at the initial site layout produced by the rack assignment algorithm, you may want to understand why it looks as it does. You should be able to understand the layout of individual chains and devices that are e-matched together based on the explanation of chords, but you may also want to understand the order in which mortars are assigned to effects, which determines the order of the pins in the racks.

The rack assignment algorithm assigns mortars by order of caliber, considering first all the devices of the least caliber, then all the devices of the next higher caliber, and so on. Within each caliber, the order of assignments is straight forward if there are no chains or devices e-matched together: The devices are sorted first by module, then by angle, then by pin. All the first module's left-angled shots are assigned first, in pin order, then all of its up-angled shots, and so on, and then the next module's shots are assigned.

By default, the rack assignment algorithm creates the initial site layout allowing multiple modules to be wired to the same rack, so if the first module leaves a rack unfilled, the next module will start filling its remaining open mortars. You can change this default from the "Show > Set rack assignment options" menu:

  • Allow multiple modules per rack
  • One module per rack

You can also restrict an individual rack to "same module" in the manual editing phase if you want only one module per rack. As you can easily see from this algorithm, if all the shots are at the same angle and no chains or chords, then the mortars will be assigned simply in the module/pin order. If you have multiple angles and you still want module/pin order, then just make sure that the shots themselves are addressed to modules and pins sorted by angle before any criteria other than launch position or caliber. From the "Show > Set addressing options" menu the second and third option will work:

  • Sort by ignition time
  • Sort by launch position > caliber > angle > category > product ID
  • Sort by launch position > caliber > angle > ignition time
  • Sort by launch position > product ID
  • Sort by product ID

If you also have single-angle chains and you still want module/pin order, then you need to set an option to ensure that chains are assigned in order also. Otherwise chains will be assigned before the non-chains, and will be laid out in racks so as to avoid splitting across multiple racks if possible. The options are,

  • Keep chains in order and allow splitting
  • Sort chains first and avoid splitting

If you have chains or devices e-matched together across multiple angles, then obviously it is impossible to lay out the racks in module/pin order. The rack assignment algorithm will attempt to produce an optimal rack layout that minimizes wiring and that loads chains and other chords neatly across or along the racks in rows. Returning to an earlier example, if you choose not to cross-load chains, a 6-shell chain with angles -30, -15, 0, 0, 15, and 30 degrees would require only five racks, because both 0-angle shells would go on the same rack. If this is the first chain loaded into racks, it would be easy to load the chain in one row across five racks with the extra 0-degree shell consuming one mortar in the next row. If a second chain of the same type were then loaded, it could also be loaded across one row of the five racks with its extra 0-degree shell consuming one mortar of the next row. Additional such chains could be loaded the same way, and all the chains would be neatly and sensibly laid out in the racks, but each chain would be leaving empty mortars on the row in which it filled only a single 0-degree shell. Since these empty mortars could be used for other individual shells, the rack assignment algorithm makes all if its assignments to cross-loaded and mix-loaded chords before the individual shells, so the remaining shells can fill the unused mortars.

The Rack Assignment Algorithm

Addressing all the scenarios discussed above, the rack assignment order for each caliber is:

  • First the rack-length-aligned, straight-loaded chords and, if the "sort chains first" option is set, the straight-loaded chains
  • Then the cross-loaded and mix-loaded chords
  • Then the remaining straight-loaded chords and individual shells

The rack-length-aligned, straight-loaded chords in the first group are the most independent of the items since each such chord takes up one or more full racks, leaving no extra unused mortars. By assigning them first, the rack assignment algorithm can guarantee that these chords all start flush at the beginning of a rack, and consume exactly the right number of racks. The straight-loaded chains in the first group are not necessarily rack-length aligned, but will never be split over multiple racks unnecessarily, as discussed above. Together, all the chords in the first group are assigned sorted by the criteria: rack-length aligned first, then by module, then by angle, then by pin.

The cross-loaded and mix-loaded chords of the second group are assigned sorted by the criteria: cross-loaded first, then by module, then by maximum number of shells per rack, then by pin. The mix-loaded chords are never split unnecessarily, as discussed above.

Finally, the remaining straight-loaded chords and individual shells are assigned sorted by module, angle, and pin, as discussed above. These shells may fill in the unused mortars skipped over in the first or second group to avoid splitting chains or mix-loaded chords.

Rack Positions

The racks in the initial site layout will be grouped by caliber and sorted left-to-right by angle so none of the racks aim toward each other. In practice, most people have in mind specific groupings for racks. Sometimes people have racks that are pre-arranged in groups of specific numbers or angles of racks. From the perspective of rack positions and groupings, the initial site layout is thus just a starting point. You can reposition the racks in the manual editing phase by selecting them and dragging them into the groups that you want.