When Finale 3D‘s addressing sorts and constraints aren’t sufficient to implement the addressing scheme you have in mind, custom fields may provide a workaround. You can manually “program” sorts and constraints by entering values of your own device as Custom Script Fields in the script, or the various other custom fields. For example, if you wanted to sort an arbitrary 50% of your script events before the other 50%, you could assign to the Custom Script Field of the first 50% the value “1” or “A”; and to the second 50% the value “2” or “B”. Then add Custom Script Field as one of the sorts in the addressing dialog. Voila!
Some addressing schemes are most easily expressed using constraints with wildcards. For example, if 25% of your script events are incompatible with another 25% of the events yet the remaining 50% of the events are compatible with everything, you can “program” that manually by assigning to the Custom Script Field of the first 25% the value “A”; and to the second 25% the value “B”; and to the remaining 50% not assigning any value. A blank value is interpreted as a wildcard. Thus if you add Custom Script Field as a constraint in the addressing dialog for modules, the “A” events will never share modules with the “B” events, but the wildcard events will share with both the “A” events and the “B” events.
Wildcards are disabled by default. To enable them, select the checkbox “Treat blank values of custom fields as wildcards” in the addressing dialog. There are eight fields that support wildcards, six that are options for the module/slat/pin constraints, and two that are options for the rack constraints.
Table 1 – Constraints that support wildcards
Constraint | Field | Field refers to | Blank means wildcard | Editable in which window |
---|---|---|---|---|
Module/Slat/Pin | Custom Script Field | The event | Yes | Script window |
Module/Slat/Pin | Custom Part Field | The event’s effect | Yes | Effects window |
Module/Slat/Pin | Custom Position Field | The event’s position | Yes | Positions window |
Module/Slat/Pin | Custom Numeric Field | The event | Yes | Script window |
Module/Slat/Pin | Rack Custom Field | The event’s rack instance | Yes | Racks window |
Module/Slat/Pin | Rack Custom Part Field | The event’s rack’s definition | Yes | Effects window |
Rack | Custom Script Field | The event in the rack | Yes | Script window |
Rack | Custom Part Field | The effect of the event in the rack | Yes | Effects window |
Example requiring wildcards
The rack shown in Figure 1 is a real world example that requires wildcards to implement the constraints. The rack has rows that tilt independently to whatever angles are required for the show, but the outside rows are the only ones capable of the extreme 60 degree angle. Thus with rows of four tubes, each rack is capable of at most four 60 degree effects (and four others at 60 degrees in the other direction). There’s no way to express the constraint “this rack supports effects of any angle but it is limited to at most four effects at 60 degrees” using the standard sorts and constraints and rack definitions.
Figure 1 – The rows can be any angle — except only the outside rows are capable of the extreme 60 degree angles.
In Finale 3D you can obviously create a rack definition with pre-defined angles but there are drawbacks to that approach, most notably that you need to figure out all the rack row angles on your own instead of letting Finale 3D do it for you. Wildcards provide a faster solution, albeit still somewhat manual.
If you sort the effects by angle, all 60 degree effects will be addressed in order and will fill up racks together unless constraints prevent it. Knowing that the 60 degree effects can only fill racks four at a time, you can assign to the Custom Script Field of the first four 60 degree effects in the script the value “A”, and to the next four the value “B” and so on for as many 60 degree effects as there are. The addressing algorithm, if sorting by angle, will then assign the four “A” effects to the first rack, then the four “B” effects to the next rack and so on filling the 60 degree effects into suitable rows, and will then go back and fill the remaining rows of the partially filled racks with the other angle effects, satisfying the constraint that each rack has only four 60 degree tubes!