The ULA ring is a simple, open, and extensible way to connect many parts of a system together. All Ula subpatches can send messages to each other on single-wire ring, and they can be any sequence on the ring. The Ula controller can display all ring communication and stops stack overflow due to endlessly cycling messages. All messages passing through the Ula controller may optionally be printed to the to the Max debug window with a timestamp. Because the controller receives all ring messages, it can also manage message recording and playback, to recreate any AV composition on the Ula system.
This simple key-scale remapper, with eight scales and transposition, fits in the Ula modular system. It picks up [channel:pitch:gate] messages from any source, remaps the pitch, and forwards the message to the Polyvoice multichannel controller on the same channel. Preset scales are major, minor, blues, and pentatonic.
so far, Ula modules have not implemented global save and recall. It's a pretty simple addition.
The diagram shows, on the left, a top-level preset module injecting values into the Ula ring. The preset values are prefixed by an upperdcase 'R' to put them on the clobal reconfigure signal chain. On preset recall, an additional lowercase r is added, and for save, two lowercase s prefixes.
On the right, an Ula module has one additional router object to catch the preset recall and save signals. It must be before the SEL object, or the SEL object creates an error when it receives letters instead of numbers. So the additional router object must filter out all other messages with a letter prefix before they reach the SEL object.
For recalls, the preset object simpy expects an integer, so the router chain strips the 'R r' prefix and simply sends the subpatcher preset object an integer. For saves, the preset object expects an 's' prefix, which is why there is an additional 's' in the prefix for save messages.
The Ula 1.3 arpegiator is a multichannel, polyphonic arpeggiator with played-note ordering in the arpeggiation. Multichannel operation lets it arpeggiate different sounds as well as different notes. Each sound plays in a different voice, so the sounds can overlap and not cut each other off. It arpeggiates notes not only in the order they are played, but also drops notes which are no longer played--That is, it arpeggiates the notes currently pressed on a keyboard, in the order they were pressed.