Its most common use is to merge data flows before feeding them to a multiconnector element (which cannot merge flows itself).
A Switcher is intended to direct all the data in an incoming path onto a selection from two output paths. It may be sent to one or other path, to both, or to neither. 'Director' messages sent to its 'Control' input are used to determine this. (It can also be set directly from its control panel.)
You'll notice that a Switcher element is almost unique in having three output pips. Two of these are the possible output connections ('Through' and 'Diverted'); the third is simply a pass-through of the 'Control' input if this should be wanted. There are two inputs: the incoming data (labelled 'Through', to match the undiverted output connector), and 'Control', where director messages will arrive.
'Director' messages are distinct from all other data flowing around a diagram, though they can use the same paths if it's convenient (usually probably not...). They are generated only by modules specifically designed to do so and are recognized only by certain other modules such as the Switcher. Most elements simply ignore them. Of course if you send Director data to the 'Through' input, it will be handled like anything else, and switched to the current output(s). Note that there are yet other types of 'Director' messages besides those recognised by the Switcher. At the moment, for instance, the GamePort module produces "Parameter" Director messages that drive certain other modules to generate MIDI events in response.
Director events, as handled by the Switcher, have sixteen possible 'tags' that can be set. Any subset of these tags may appear in a single event (depending on the source), and a Switcher will respond to them (or not) according to the checkboxes set in its panel. (There is an alternative type of director message that has a single numeric value code, rather than a set of tags. The Switcher, however, accepts the first sixteen of these codes as tags.)
At the top of the Switcher's control panel is an Indicator/Selector that shows the current state; clicking on this will bring up a menu allowing you to set the state manually. The possible states are Pass, Divert, Dupe, and Stop. In Pass, all data just goes straight on out the 'Through' output. With Divert, the data only appears on the 'Diverted' output; Dupe sends it to both, and Stop blocks it altogether.
The rest of the panel is taken up with the array of checkboxes that determine its response to director messages. A marked checkbox in a column will cause a matching tag in an incoming director message to set the switcher to the corresponding state (which will be reflected in the indicator above). You can check as many boxes as you wish in a column, but only one in each row. (If a message should have more than one tag set, and these happen to match conflicting checkbox settings, columns to the right take priority.)
Be careful that you connect to the intended inputs and outputs. The default (first connected) input and output are for data ('Through'). Use the popup menu on the connector after the link is made to ensure you are connected as you think.
The Stepper is a somewhat more complex module than most, intended for those configurations that may also be somewhat more complex. It is appropriate where you wish a repeated trigger event to step through a sequence of, say, path switches, rather than causing the same switch each time.
A Stepper element is controlled by 'Director' events of the same kind as those that drive the Switcher above. However, rather than these controlling the path of other events, they cause the Stepper to output other Director events, in a sequence that depends on the arriving events and the settings in its Control Panel. In most cases, the Stepper output will be fed to one or more Switcher elements to effect the desired path changes for each step.
Remember that there are sixteen possible 'marks' or 'flag-bits' that can be present in a Director event (at least as seen by the Stepper and Switcher). Each event that the Stepper outputs will only have one of the sixteen set, but it can be configured to respond to any subset of them arriving on its input.
The sequence of marks that will be output as the element is stepped is independent of the input set (both of course are configured in the element's control panel as described below). The element maintains a record of the next mark that it will output (shown in the right column of the panel). When a step is requested, it sends a Director event with that mark, and moves to the next in the sequence ready for the next step. Thus successive steps cycle repeatedly through the configured subset of marks in numerical order.
There are two effects that an arriving event may have — aside from being ignored. If any of its marks are in the set of those selected to cause a step, it will do so. If one of its marks is a member of the specified output-sequence group, the 'current mark' will be set to that value (before any possible step). (If the event has more than one mark in that set, the lowest of these will be chosen.) Setting a new current value, in itself, never causes an output event to be generated. If the event qualifies for both setting and stepping, though, both actions will occur — in that order. As you would expect, this is the case if a single mark is a member of both sets.
When you open the Control Panel for a Stepper element, you'll see three columns of sixteen: two sets of checkboxes on the left, and radiobuttons at right. Checked items in the leftmost ("Step:") column determine which marks in an arriving event will trigger a step (never more than one step per event, however many marks might match).
The second column ("Set:") specifies the sequence of output marks that will be stepped through. Provided that marks in trigger events do not match any checked here, the selected set will be cycled through in order. If an arriving event does have any marks that match those checked in this column, the lowest of these will be used to reset the state so that the cycle will run from that mark number at the next step. As noted above, if any marks in the same event match those in the Step: column as well, the next step will occur at that time.
The right-hand column ("Curr:") is mainly an indicator of the next mark to be sent (not the last one emitted!). At each trigger, the selected mark is output, and the indicator moves to the next mark number checked in the Set: column. Be aware, though, that no event will be output if the selected radio-button does not match any checked box in the Set: group; instead, the next trigger will simply move the state on to the first one it finds that is selected. (It follows that if no Set: items are checked, no output will ever happen.)
There is a probably non-obvious function of a Stepper that you might find use for at times. It is currently about the only way to change one mark number into another — i.e. to output an event with a certain mark when triggered by an event with a different specific mark. If there is exactly one item selected in the Set: group, this will simply be output for each step. Checking the mark numbers that you wish to generate the output mark in the Step: column then achieves the desired result.
The condition under which a packet arriving at the Trigger connector is translated into an output depends on its mode setting — selected from the popup menu in the lower part of the panel. Set to "Always" — the default — the designated director message is simply generated every time. When 'Primed', the next packet to arrive will trigger transmission; at the same time, the mode is changed to 'Primable', in which state further events will not trigger output. While in this 'Primable' state (and only in this state) a packet arriving at the 'Prime' input connector will switch the element to the 'Primed' state. By judicious use of these two inputs, you can have good control over the switching of paths within your configuration.
Two other modes are available from the popup selection menu. 'OneShot' is like 'Primed' except that after triggering it does not become primable again — it goes inactive until the mode is manually changed. The final mode is 'Off', which is presumably obvious.
As in general a considerable variety of events flow along any particular path in the configuration, you will almost certainly have to filter off the desired trigger events from the data stream (e.g. using marker and splitter elements in the MusicWeaver) and pass only these to the Trigger input.
A director message needs at least one of its tags set to have any effect on a Switcher. The TriggerSwitch control panel has a set of checkboxes to select the ones you want. It also has a button to trigger a message directly if you wish; this is active whatever the current mode setting, and does not affect that setting.
The element has two inputs: 'Trigger' and 'Prime', with the functions described above. The outputs are 'Switch Out', where the director messages appear, and pass-throughs of 'Trigger' and 'Prime'.