We have observed at several occasions that the overlapping of Chant events was problematic because of the monophonic, continuous control model of the synthesizer. OM-Chant provides several tools allowing to deal with transitions and handle the succession and possible overlaps between control events, introducing interesting and flexible solutions for the generation of "phrases" with the synthesizer.
In the example below we observe the evolution of the f0 control curve from the examples from section "Time and Structure / Chord-Seq", if the durations of the notes overlap.
The function CH-TRANSITIONS processes a sequence of Chant events of a given type pairwise, and allows to determine the control behaviour on the overlapping intervals.
The arguments of CH-TRANSITIONS are :
An example of a simple transition process is provided in the tutorial patch "ch-transition-1", derived from the "chant-chord-seq" example used in a previous section. The CH-FOF and CH-F0 events are now collected and returned separately from the OMLOOP. The overlapping interval of the events will be handled for the CH-FOF objects only, using the fade-in/fade-out mechanism (and hence hide the artifact produced by the overlapping sections of the CH-F0). |
The transition handler patch must have one input connected to a TRANSITION-INFO object, and one output returning the list of events corresponding to the processing of two successive events.
In order to design this process, TRANSITION-INFO provides some information, updated at each new iteration :
In the example of the tutorial patch "ch-transition-1" this process simply adjusts the two events' onset and durations to the "solo" time intervals, leaving the overlapping intervals empty. The fade in/fade-out allows to shut the FOF down between the transformed events.
For a pair of sucessive events, two new modified events are returned.
Since the transition process is not always straightforward to conceive and understand, a visualization utility has been added to the CH-TRANSITIONS tool, allowing the observation of the construction of the events and the values of a given parameter during the successive steps of the process.
The third (optional) input of CH-TRANSITIONS allows to connect, as a list, the name of a slot of the Chant event being processed (e.g. f0 for CH-F0, freq, amp... for CH-FOF, etc.) and a range for the values of this parameter. In the previous example, since we added a fade in/ou, we would probably want to observe the amp slot => (amp 0.0 1.0).
A window appears, showing the initial state of our system :
Use the up
and down
arrow keys to separate the events vertically and better visualize the succession of events.
By using the TAB
key, you can unfold the algorithm and observe the sequence as processed by the transition handler patch at the successive steps of the process.
In this section we give some more advanced examples of transition handling strategies.
In the patches "ch-transition-1" and "ch-transition-inter-f0" are proposed several solution for the transition modifying the temporal properties of the events in order to cancel the ovrelapping intervals.
In "ch-transition-inter-f0" is proposed other transition strategy consisting in generating a tansitory event between each two successive events.
The transition handler patch therefore takes two events as input, and returns 3 : the two original, modified events, and a new one spreading over the overlapping interval.
The function GEN-INTER-EVENTS helps implementing this transitory event generation process for complex, compound Chant events.
GEN-INTER-EVENTS takes two events and a list of RULES, and returns an adequately parameterized event of the same type, valid on the inter-event interval.
Rules are formatted as pairs of [PARAM VALUE] where :
An exemple is provided in the tutorial patch "ch-transition-inter-event".
The function GEN-INTER-FOFS is a specialization of GEN-INTER-EVENT allowing to use an object of type PHONEME to describe the transition between two CH-FOF objects.
A PHONEME is a special type of CLASS-ARRAY object defining transition profiles for a number of keyword parameters. Add/remove kewords with The <transition> input deteremines the profile of the interpolation used at applying the PHONEME between two Chant events. |
An example is provided in the tutorial patch "ch-transition-phoneme".
GEN-INTER-FOFS's <sr> optional input also allows to control the sample rate of the transition.
A solution to handle transitions between overlapping events is to determine how to merge them into a new comprehensive one.
The tutorial patch ch-transition-fusion provides an example with the case of the modulated CH-F0 events seen in the previous examples. In this case, each two successive events produce a new one (generated with the BPF-CROSSFADE function). At the end, CH-TRANSITIONS therefore returns one signle inclusive event for the whole F0 sequence. |
The snapshot of the process, obtained using the visualization option in CH-TRANSITIONS, allows to better understand this mechanism. |
The function FOF-MORPH creates a non-linear interpolation (morphing) between the formantic parameters of two (or more) CH-FOF events. The morphing is effective on the portion where the CH-FOF events are overlapping.
One or two BPFs can be given as an input to determine the "morphing profile". If two events are overlapping, only the first one is used ; and if three events are overlapping, the two BPFs will define the "3D morphing" profile.
Tutorial patch "transition-morphing" shows how to use this function as a means to control the transitions with CH-TRANSITIONS.