Software Documentation

Software Documentation


Pro Last updated: August 12, 2023

16 Tube angle range constraints

Fan row racks like the AVM SFX-20 racks, or the CraigCo MinCom racks, or the PyroDigiT PLS30E/45P+ racks can be configured in Finale 3D with pre-defined tube angles of your choice, or with adjustable tube angles that accommodate effects at any angle (see Fan row racks). In the real world, though, many fan angle racks have physical constraints that restrict the tubes to angle ranges. Sometimes the angle ranges are different depending on whether the tubes are on the ends of the rows or in the interiors, as shown in Figure 1. To accommodate these physical constraints, Finale 3D supports angle range specifications in the rack definitions like “-90..50” to indicate a range from minus 90 degrees to positive 50 degrees.


Figure 1 – Tubes on the row ends may be able to lean more than tubes in the middle of rows.


Tube angle range constraints are only supported for one rack structure, as chosen in the rack definition dialog: Single-shot rack, adjustable fan angles of tubes in each row; or more colloquially, “Fan row racks”. The tube angle range specifications go into the “Tube fan angles” fields for each row, as shown in Figure 2.



Figure 2 – Tube angle ranges are in the “Tube fan angle” fields for the rows — only for adjustable fan angles of tubes racks.


Figure 2 shows one possible definition for the CraigCo MinCom X5 20 Shot Rack, diagrammatically shown from the side in Figure 1 and also shown below in Figure 3. When defining fan row racks in Finale 3D, it is imperative that the rows in the “Create Rack” dialog are oriented to match the rows with fanned tubes in the physical rack. Looking carefully at the rack in Figure 3, you can see that the rotation rods with clamps go slight up and to the right in the image, perpendicular to the red arrows. The square holders rotate on the rotation rods. Thus from the physical construction, you can see that the rows of fanned tubes align with the red arrows, and contain five holders each. If you looked at this rack from the left side, it would match the diagram of Figure 1, which shows the angle ranges of the holders.


Figure 3 – The rows of a fan row rack definition in Finale 3D must match the fans of the rack in the real world.


In a show with fans spreading left/right from the audience point of view, the rack of Figure 3 would need to be rotated 90 degrees from its identity orientation to orient the fans left/right, which is typically how you would see it in the rack layout view in Finale 3D, sideways.

From Figure 1 and Figure 3, you can now make sense of the “Tube fan angles” fields of the associated rack definition of Figure 2. The tubes on the ends of the rows can aim outward horizontally at 90 degrees. The tubes in the interiors of the rows are restricted to 50 or 53 degrees, depending on the end tubes. Angle ranges in Finale 3D can’t have dependencies, so the conservative definition of allowable angles for these rows is: -90..50,-50..50,-50..50,-50..50,-50..90.

The first range in the list (-90..50) applies to the first tube in the row, which is the “top” tube in the rack’s identity orientation, and is the left-most tube if the rack is rotated 90 degrees counter-clockwise for left/right fans, as it typically is. Looking at Figure 1, the first range in the list represents the left most tube, and -90..50 represents the angle range from horizontal left to diagonal up-and-to-the-right.


Adding racks and assigning tubes — this is where it gets hard

Using angle ranges is not as simple as defining racks as in Figure 2 and doing everything the same as you would without range constraints. When the tubes don’t all have the same angle ranges, which is usually the case if you are using angle ranges, then the functions that add racks and that assign tubes to effects can make bad decisions about which effects to put in which tubes.

The decisions won’t technically be wrong, because they will always satisfy the angle constraints you specify, but the decisions may not use the tubes that have the widest possible angle ranges for the best fitting effect angles. A simple example is this: imagine a show that contained just eight effects, four aiming to the left and four aiming straight up. If the add racks or addressing function assigned the straight up effects to the tubes on the left ends of the rows (the only tubes capable of aiming fully to the left), then none of the other tubes could accommodate the remaining four effects. The add racks function might add extra racks to accommodate the remaining effects; the addressing function might report a racking error if the rack layout doesn’t contain racks have compatible tubes.

There are two fundamental approaches to reduce or eliminate bad decisions about tube assignments. The approaches have tradeoffs, so neither can be said to be strictly better than the other.

  1. Make the different angle ranges within each row non-overlapping, e.g., -90..-51,-50..50,-50..50,-50..50,51..90.
  2. Assign addresses sorting by angle, left-to-right, and use the define the rack to use tube loading order “Across rows right to left”.

The first approach is the easiest, and it eliminates bad decisions completely by making it impossible to make a bad decision. The row end tubes can only be used for effects angling severely outward, and thus they cannot be misused for effects aiming upward that would be a better match for the interior tubes. The drawback of this approach is that it renders the end tubes unusable for upward effects. Imagine a show that had only upward effects, no angles at all. Such a show would only use the interior tubes, because the end tubes wouldn’t satisfy the angle range constraints.

The second approach requires that you sort your addressing order by angle, but if that is what you would choose to do anyway, then that’s not a big drawback. The strategy behind the second approach is to fill the most left leaning tubes with the most left leaning effects, which prevents bad decisions for any individual rack. If a launch position contains multiple fan row racks, though, this second approach is not guaranteed to eliminate all bad decisions, because the addressing algorithm attempts to fill one rack before moving on to the next. A show that uses multiple racks may get to filling the right end tubes of the first rack while still working through the upward effects before it gets to the right aiming effects that would be the best fit. In order to guarantee no bad decision with the second approach, you need to use only one fan row rack per position.


What’s the big deal?

Perhaps the phrase “bad decision” is too alarmist. All the Finale 3D functions will obey any angle constraints you specify, so you will never be in a situation in which Finale 3D provides a rack layout plan that doesn’t work in the real world. At worst case, depending on which approach you follow, Finale 3D may leave some rack tubes unused, resulting in extra racks that would not be necessary with a better tube assignment. In practice, the worst case may not apply to your shows; and if it does apply, it would likely be easy for you to recognize the extra racks in the rack layout plan. You could then fix the problem manually by dragging and dropping pins in the rack layout view. Or you may choose not to bother fixing the problem if the plan is good enough.


Approaches and considerations

If you choose the right approach for your shows, the rack angles are likely to provide good tube assignments, but choosing the right approach matters. The full list of approaches, and their tradeoffs and considerations, is shown in Table 1.


Table 1 – Angle range approaches and considerations

Approach Example Addressing requires sort by angle and tube loading order of “Across rows, right to left” Must restrict to at most one rack per position Can use row end tubes for all angles Guaranteed to work in real world Worst case wasted tubes
Different ranges do not overlap -90..-51,-50..50,-50..50,-50..50,51..90 NO NO NO YES Row end tubes may be wasted if show doesn’t contain effects in their overly restricted range
Overlapping ranges okay, but ensure effects assigned in efficient order -90..50,-50..50,-50..50,-50..50,-50..90 YES YES YES YES Row end tubes may be inefficiently allocated to upward tubes, requiring extra racks for angled tubes
A compromise approach: overlapping ranges okay for left end but not right end; no restriction of one rack per position -90..50,-50..50,-50..50,-50..50,51..90 YES NO Half of them (the left end tubes) YES Right row end tubes may be inefficiently allocated to upward tubes, requiring extra racks for angled tubes
Fully adjustable tube angles (don’t use angle ranges) < leave field blank > NO NO YES NO No wasted tubes, but angle constraints in the physical world may mean some tube assignments don’t work


Re-arrange tubes to avoid collisions

If an adjustable fan tube angle rack has any angle range constraints (“X..Y”) or specific angles (“X”) in the “Tube fan angles” field, the “Re-arrange tubes to avoid collisions” option in the addressing dialog will be limited to optimizations within each individual fan row, and it may not be able to avoid collisions if the angle ranges are defined in a way that forces collisions. For example, if the rack is defined with the left end tubes restricted to aiming right, and the right end tubes restricted to aiming left, there is nothing the “Re-arrange tubes” function can do to avoid the collisions.


Syntax for angles in the “Tube fan angles” field

The “Tube fan angles” field can be blank, meaning no restrictions, or it can contain a comma-separated list of specific angles or angle ranges. Angle ranges are in the syntax “X..Y” as in the previous examples. Specific angles are just numbers (“X”), and are equivalent to “X..X”. Since it is inconvenient to write -180..180 to mean no restriction for a particular tube, the syntax also supports leaving elements in the comma-separate list blank. A blank element is equivalent to -180..180. Thus “-180..180,-180..180,-180..180,-180..180,-180..180” has the same meaning as “,,,,”