Software Documentation

Software Documentation

Firing System AddressingDocumentation

Basic Last updated: December 7, 2020

8 Conditional sorting based on effect type

As described here, the order in which script rows are assigned firing system addresses and racks is based on a sequence of sort terms like “Position > Angle”, meaning that the rows are sorted first by position, and then ties are broken by angle.  Additional terms added to the end of the sequence are successive tie breakers. “Position > Angle > Part Number”, for example, break ties for effects in the same position with the same angle according to their part number.

There are circumstances in which it is useful to sort different kinds of effects differently, such as sorting cakes differently from items that go into mortars.  If the items being sorted differently are in different positions, then you can use addressing blueprints assigned to the positions to define different sort criteria for the different effects, but if the items are in the same position then blueprints don’t provide a solution.

The only way to create a conditional sort for items in the same position is to represent the conditional sort somehow in the list of sort terms.  Toward this end, Finale 3D includes thirty or so special sort terms designed expressly for representing basic conditional sorts.

Consider a simple example of sorting cakes differently from non-cakes.  The tube size in cakes generally doesn’t factor into the desired sort order for cakes since it doesn’t affect the wiring or racking, but for non-cakes the tube size may be integral to the arrangement of racks and wiring.  Thus if a position contains cakes and non-cakes, it is reasonable to want a conditional sort that takes into account size for non-cakes but ignores size for cakes so that cakes can be sorted by other criteria.  The goal and the solution are shown in Table 1.


Table 1 – A conditional sort that ignores size for cakes

If cake Part Number
If non-cake Size > Part Number
Conditional sort Cakes Last > Size — Non-Cakes > Part Number


All conditional sorts should contain a term that splits apart the groups of effects that are sorted differently by sorting one group ahead of the other.  In the example of Table 1, the term “Cakes Last” splits apart the cakes from non-cakes by putting the non-cakes first.  The next term, “Size — Non-Cakes”, is a tie breaker for items that compare equally with respect to “Cakes Last”.  The ties may be comparisons of cake to cake, or non-cake to non-cake, but any comparison of cake to non-cake is not a tie — the cakes are last.  “Size — Non-Cakes” applies no preference to cakes; it only sorts non-cakes against each other according to their size.  Thus “Size — Non-Cakes” operates as a tie breaker for the non-cakes and leaves the cakes as they are.  The final term in this conditional sort, “Part Number”, applies to everything, so it operates as a tie breaker for non-cakes of the same size, and a tie breaker for cakes of any size.


Table 2 – A conditional sort that applies different sort terms for cakes and single-shots

If cake Rack Type > Part Number
If single-shot Angle > Size > Part Number
Conditional sort Cakes First > Angle — Non-Cake > Size — Non-Cake > Rack Type — Cake > Part Number


The example of Table 2 applies to a position that includes cakes and single-shots.  Like the previous example, the goal is to exclude size from the cake comparisons, but in this example the goal is also to exclude angle from the cakes and to include rack type for the cakes only.  The scenario underlying this example is a position with two kinds of cakes — slice cakes and box cakes.  The designer wants to put the slice cakes in cake racks but has chosen to ignore racks for the box cakes since they just sit on the ground.  The designer uses the “Rack Type” field of the script to distinguish the slice cakes from the box cakes (for example, giving the slice cakes a rack type of the word “slice” while leaving the rack type of the box cakes blank).

The technique and mechanics of this second example are the same as the first:  Begin by separating the two types of effects that sort differently (“Cakes First”); then use variations of sort terms that apply to one group of effects or the other group for the sort terms that the groups do not have in common.  You can see how the conditional sort of Table 2 implements the goals of the two lines above it.

The technique illustrated by Table 1 and Table 2 is capable of representing basic conditional sorts involving the common sort terms that tend to apply to a subset of effect types.  To see what is possible, please refer to the full list of terms here.