Loop Length Control with Variator
The final goal is to let a sequence loop and to change its length, if possible in realtime. This can be done with the Touch Tracks object in Single trigger mode. But this causes two problems:
1. First you must press the corresponding key whenever the desired loop length is over, which is boring and
2. second you must press the trigger key just in time which may get difficult for counting 17/8 measures as example.
So the best thing is to automate the trigger impulse so you can concentrate on more important aspects of your music.
What you need for this task is a bar counter. A good way to count things in many DSP programs and also in the Logic environment is to implement a ramp generator (sawtooth wave). This is accomplished by a sequence of short notes of one pitch (here D#8, in the Sequence Loop length in the GrooveFolder) , but of ascending velocity values which runs parallel to the events that shall be looped (in the Sequence Pattern 1 in the Groove Folder)
|
|
 |
|
Both sequences, i.e. the ramp generator and the other events to be looped must be in the same folder . This folder is then placed somewhere in the TouchTracks object.
IMPORTANT: THE TWO INSTRUMENT TRACKS (here called Orx 1) INSIDE THE FOLDER MUST NOT BE MUTED !! WHEREAS THE INSTRUMENT IN THE ARRANGE WINDOW HAS TO BE MUTED !!!!
So when the pattern is started ( how this is done will be explained later) the ramp generator produces a sequence of increasing values which are proportional to the time that the pattern has been running since the starting time.
Next you have to tell Logic when to trigger the pattern again, i. e. the measure of the loop. This value can be adjusted by a simple fader. Now Logic has to compare somehow the value of the ramp generator with the desired value for the loop length and then send a new trigger to the TouchTracks object.
|
|
Data Flow
First you must create an instrument which will appear in the arrange window (here called Orx1. This instrument can be understood as the internal source for whatever shall be looped, and then be modified (transposed, remapped etc), before it is sent to a MIDI Sound Module This second Instrument must be adjusted with MIDI Channel and Port so that the desired data get out of the computer.
|
|
 |
|
Orx 1 has three outlets. The first outlet feeds a fader (Loop Indicator ) which serves as a pure realtime indicator of the value of the time / bar length since the start of the loop.
The second outlet filters out all other information except the values of the ramp generator ( D#8/16 thru only) Thes values feed the comparator mechanism.
The third serves as the source for the events that shall be looped This is routed to a filter (Filter D#8) that removes the note values (D#8) coming from the lick length folder. The remaining data yield finally in the expander, but are of no furtherr interest for the Loop length control mechanism.
To start the whole thing the Groove Pattern has to be triggered. You cannot use the TouchTracks Object for triggering in this situation, because multiple triggers have to be created. Therefore a mapped instrument was chosen which has the advantage that you can type in the name of the Lick so that you can have an overview of your patterns like in the Touch Tracks object itself.
Now if you trigger a note number in this mapped instrument, either with the mouse or by connecting the mapped instrument to a midi controller and using this controller, this note number is routed thru a splitter and from there triggers the according Pattern in the TouchTracks Object for the first time. Of course the sequencer must be running . In the given example the note is c# -2. This note value (pitch) is also routed to the Note on to CC transformer, which strips the note off value off the trigger note (which would result in an undesired velocity value of zero) , and converts the pitch value to an arbitrary controller, in this case CC 16/36/Val. These values are routed to a fader (Set Trigger Note Pitch) which converts the CC16/36 to Meta events (Meta 127: Transformer operation). These Meta events are then fed to the central comparator mechanism.
|
|
The comparator
The comparator has three inputs.
1. The first (upper) tells the comparator which note/ pattern is to be retriggered. This comes from the mapped instrument
2. The second (mid) comes from the lick length pattern, i.e. the note D#8 with increasing velocity.
3. The third (lower) comes from the Lick Length fader which defines the desired loop length.
The Loop Length Fader fader is a text fader so that you can scale or adjust the shown length values to your needs in conjunction with the map in the Set Trigger Treshold transformer. This has something to do with the chosen resolution of the Loop Length control which is nonlinear, i.e. higher with shorter loop lengths. It also has something to do with the fact that the loop length setting should be adjustable by external controlers such as drehbank etc.
To understand what goes on lets have a closer look at the comparator by double clicking on it and thus opening thje transformer window.
|
|
 |
|
If you click on different note keys of the mapped instrument you will see how the value in the box below Fix will change accordingly.
If you change the value of the LickLength fader you will see how the value in the box below Inside will change.
What does that mean? With the LichLength fader you set a condition value for the incoming D#8 velocity values. If these velocity values reach the values given in the Inside window as minimum value, a note value is let thru by the whole transformer. Values below this value are filtered out. In other words the Loop length fader sets a threshold for the comparator to trigger the Touch Track object again
As the incoming note´s pitch (originally D#8) is also transformed to the pitch of the trigger-note. this yields in a new trigger sent to the TouchTracks Object. and the process starts from the beginning.
For musical reasons the Start parameter of the TouchTracks object has been set to Next 16th. Therefore the timing of the Loop Length contol pattern is critical and should not be changed.
Also it is not advisable to modifiy the mechanism to achieve Loop lengths lengths shorter than 1/8 bar.
|
|
| Download the LoopLength environment for logic >>>>> |