Software Documentation

Software Documentation

Firing System AddressingDocumentation

Basic Last updated: September 20, 2021

7 Wildcards in constraints

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!