|2.1||Start Point and End Point|
|2.2||Reset, Empty, Clear, and Silent|
|2.4||Cycles and Subcycles|
|3.1||Empty Loop Action = Record|
|3.2||Empty Loop Action = Copy Sound|
|3.3||Empty Loop Action = Copy Timing|
|3.4||Other Ways To Copy Loops|
|4.1||Empty Track Action|
|4.1.1||Empty Track Action = Copy Sound|
|4.1.2||Empty Track Action = Copy Timing|
|4.2||Track Copy Functions|
|6.1||Track Sync Master|
|6.2||Track Sync Unit|
|6.3||Track Sync Example|
|6.4||Changing the Track Sync Master Track|
|7.2||Recommended Track Configurations|
|8||MIDI Slave Sync|
|8.1||Configuring MIDI Devices for Slave Sync|
|8.2||Configuring the MIDI Sync Source|
|8.3||Using MIDI Slave Sync|
|8.4||Recommended Track Configurations|
|9||MIDI Master Sync|
|9.1||Configuring MIDI Devices for Master Sync|
|9.2||Configuring MIDI Master Sync Source|
|9.3||Recommended Track Configurations|
|9.4||MIDI Master Sync Parameters|
|9.5||Out Sync Manual Start|
|9.6||Calculating The Tempo|
|9.7||Adjusting The Tempo|
|9.7.1||Out Sync Speed Adjust|
|9.7.2||Out Sync Resize Adjust|
|9.8||Changing the MIDI Sync Master Track|
|9.9||Controlling Plugin Host Tempo|
|9.10||Mute and Pause during MIDI Master Sync|
|10||Drift, Dealign and Realign|
|10.1||The External Loop|
|10.2.1||Drift Resync Frames|
|10.2.2||Drift Correction and Track Sync|
|10.3.1||Realign with Track Sync|
|10.3.2||Realign with MIDI Master Sync|
|10.3.2.1||Out Sync Realign Action = Send MIDI Start|
|10.3.3||Realign Alternatives - MIDI Start and Mute MIDI Start|
|10.3.4||Realign Alternatives - Sync Start Point|
Unless you intend to record only one loop into one track, you will eventually be faced with the problem of synchronization. At a high level, synchronization is the creation of multiple loops and tracks that will play with a consistent rhythm without drifting apart. If you like to record "ambient" loops you may not need synchronization, but most users will eventually need some form of synchronization.
There are three techniques for creating synchronized loops:
Loop Copy instantly copies one loop to another. The target loop can be in the same track or a different track. Since the loops are exactly the same size or have Related Sizes they will play together without drifting apart.
Synchronized Recording involves adjusting the beginning and ending of a new loop recording so that the finished loop has a size that is exactly related to another loop. There are three ways to make synchronized recordings: track sync, host sync, and MIDI slave sync. With track sync, recording will be synchronized to the playback location of another track. With host sync, recording is synchronized with beat or bar pulses from the transport running in the plugin host application. With MIDI slave sync, recording is synchronized to beat or bar pulses coming from an external MIDI clock. All of these are sometimes referred to as forms of slave sync since you are letting another loop or clock source determine the length of a recording.
MIDI Clock Generation is a form of synchronization that causes MIDI clocks to be sent out at a tempo that is calculated from the length of one of the Mobius tracks. Devices following this MIDI clock will then play in sync with the loop in the Mobius track. Here the loop you are synchronizing isn't inside Mobius, it is being played by another device such as a drum machine or sequencer. This is sometimes referred to as master sync since Mobius is controlling another device.
Each of these techniques will be discussed in more detail in later sections. But first it is important to understand a few concepts described in the next section. Be sure to read Concepts before jumping to the other sections.
You can think of the Start Point as simply the beginning of a loop. The loop normally plays from the start point to the end and then repeats. We also use the confusing term End Point. You can almost always think of the start point and the end point as being the same thing. It is that moment in time after the last sample of the loop has played and before we have gone back to playing the first sample in the loop.
If you get deeper into Mobius scripting you will find that there are actually some subtle differences between start point and end point, but you do not need to be concerned about that to understand synchronization.
There are two important states that a loop can be in but the terms used to describe those states are sometimes used inconsistently in the forums and even in the documentation. Usually it is clear from the context what the meaning is, but here we will give precise definitions for these terms.
When you first start Mobius, all loops are in a state called Reset. The loops contain nothing, they cannot be played or manipulated in any way until you record something into them. While the official term for this is Reset we sometimes use the term Empty to mean the same thing. An empty loop contains nothing.
When you use certain features like Empty Loop Action or Empty Track Action, loops can be created that have a size but they do not contain any audible content. Loops in this state are said to be Clear or Silent.
The problem word is Empty. It is common to think of a silent loop as empty but technically this is not correct. The loop is not empty, it can play and be operated upon just like any other loop. It just doesn't have anything audible in it.
When we say that two loops have a related size it means that their sizes have an exact mathematical relationship that will allow them to play together consistently forever. In the simplest case two loops may be exactly the same size. But if one loop is exactly twice as long as another the sizes are still related and they will play consistently. The smaller loop will play twice each time the larger loop plays and this pattern will continue forever.
In mathematical terms, loops with related sizes have a common factor. There is some fraction of the loop that can be multiplied to equal the size of all of the related loops. For example, assume we have three loops, one is 2 seconds long, one is 4 seconds long, and one is 8 seconds long. Although the loops are not the same size, they will play together consistently because they share a common factor of 2 seconds. When the 8 second loop plays once the 4 second loop will have played exactly twice and the 2 second loop will have played exactly 4 times. This pattern will repeat consistently forever.
Now assume we have a loop that is 2 seconds long and one that is 3 seconds long. These loops also have a related size, the common factor is 1 second. What is interesting about this relationship is that when the 3 second loop is finished playing for the first time the 2 second loop will have repeated once and will be in the middle. The next time the 3 second loop plays it will sound different because the 2 second loop is starting from a different location. When the 3 second loop finishes playing a second time, the 2 second loop will be at its start point again. This pattern will continue consistently forever.
The set of loops in the first example (2, 4, and 8 seconds) were all even multiples of the common factor of 2 seconds. Each time the longest loop plays the combination will sound the same.
The set of loops in the second example (1, and 3 seconds) were not even multiples of the common factor of 1 second. The second time the 3 second loop plays it will not sound the same as the first time it played because the two loops are out of phase. If you have a set of loops that are not all even multiples of the common factor it may take many plays of the longest loop before they are all once again in phase. This can be used to create interesting polyrhythms. You can also create a set of loops that when played together result in complex evolving patterns that continue to change over a long period of time. You can also create a bunch of unlistenable noise.
When you record a loop for the first time it will have one cycle. You add cycles to a loop by using functions such as Multiply and Insert. The easiest way to add cycles is by using the Instant Multiply 2 function, each time you use this function the loop is copied and appended to the end of itself, and the number of cycles is doubled. The cycle count is the number of times the original loop has been multiplied.
For example, record a loop about 2 seconds long, then execute the Instant Multiply 2 function. The loop will now be 4 seconds long and contain 2 cycles. From the listener's perspective nothing has changed, they continue to hear the original loop repeating over and over. But structurally the loop has changed, it now contains two copies of the original loop. One use for this technique is to record a short loop representing a measure or two of a rhythmic pattern. Then multiply this loop by 4 or 8 to create a longer loop with several repetitions of the pattern. Finally use the Overdub function to record a long bass line over the repeating rhythm pattern.
A subcycle is simply a division of a cycle. It is defined by the Subcycles preset parameter which defaults to 4. When a loop is first recorded it will have one cycle and 4 subcycles which you can see as white tick marks under the loop meter. The number of cycles in a loop will stay the same until you change the loop length with functions like Multiply. But you can change the number of subcycles at any time just by changing the Subcycles parameter. Changing the number of subcycles does not modify the loop in any way, it simply changes the number of tick marks under the loop meter.
Often the number of subcycles is chosen so that they represent "beats" in the time signature of the loop. For example if you record a loop representing two measures of music in 4/4 time, then set Subcycles to 8, each subcycle will be the same length as one quarter note. Subcycles can also represent larger units of music. If you record a loop containing an entire 12-bar blues chord progression, then set the Subcycles parameter to 12, each subcycle will represent one measure of music.
Cycles and subcycles are important for quantization. You can make functions execute exactly on a cycle or subcycle boundary which is useful for rhythmic effects and also for track synchronization.
The simplest form of synchronization is to create several loops in one track whose sizes are either the same, or multiples of a common factor. For example the first loop may represent 2 bars of music, the second loop 4 bars, and the third 8 bars. Though the loops aren't the same size, they are all multiples of a bar so you can switch among them without changing the perceived tempo.
When you switch from one loop to another, there are many automated actions that can be taken when the switch occurs. If the next loop is empty, by default the track simply halts and sits in Reset mode waiting for you to do something. You can now use the Record function and attempt to record another loop that is rhythmically related to the first loop, but without some fancy footwork there will always be a little delay from when the switch happens till you get around to pressing the Record button. This disrupts the rhythm and is usually noticeable to the listener.
To maintain a consistent rhythm, you need the recording of the next loop to begin immediately and automatically after the switch happens. Luckily there are several ways to do that which we'll discuss later.
Another problem synchronizing loops is controlling when the loop switch happens. By default, the switch happens immediately so you need to be careful to press the footswitch (or whatever trigger device you are using) at exactly the right time. If you have good footswitch technique this may work for you but many people find it easier to have Mobius automatically switch loops when the loop reaches an interesting synchronization point. This is called switch quantization.
Switch quantization is controlled by the Switch Quantize preset parameter which may have these values:
For a thorough discussion of switch quantization see Loop Switching . For the purpose of creating new synchronized loops the most common values are Loop and Cycle.
When Switch Quantize is set to Loop, the switch will be delayed until the current loop plays to the end and wraps back around to it's Start Point. All you need to do is execute the loop switch function any time before the end of the loop and Mobius will enter Switch Quantize mode. At the exact moment the loop reaches the start point, Mobius will automatically perform the loop switch.
If you have used one of the Multiply functions to create a loop with more than one cycle, you may wish to set Loop Quantize to Cycle instead. Mobius will wait until the end of the current cycle and then switch. If the loop has only one cycle, then this will behave the same as setting Switch Quantize to Loop.
Now that we know how to switch loops at exactly the right time, we'll discuss what happens after the switch. As mentioned earlier, if you switch to an empty loop the default behavior is for Mobius to just sit there in Reset mode waiting for you to do something. If you keep playing your instrument you can give the audience something to listen to for awhile and then use the Record function when you're ready to record the next loop. This can work fine if your timing is very good, but recording synchronized loops is easier if you use the Empty Loop Action preset parameter.
|Empty Loop Action|
When Empty Loop Action is set to Record, the Record function will begin automatically whenever you switch to an empty loop. This can help you maintain a consistent rhythm, you won't have to fill for a few bars before you manually start recording the new loop, recording begins immediately after the switch. The only thing you need to remember to do is press the Record button when you are done recording.
If you have a good sense of time, you can create several loops using this technique that are very close to the same size. But it is almost impossible for humans to make loops exactly the same size, they will always be off by a few milliseconds or more. Depending on the style of music you perform, this may not be noticeable. But if you want the most accurate timing possible, you will need to use some form of loop copy described in the next two sections.
When Empty Loop Action is set to Copy Sound and you switch to an empty loop, the current loop will be instantly copied to the next loop. This is called a Sound Copy. From the listener's perspective, they won't know the copy happened, they will still be hearing the original loop.
You may now begin changing the copied loop using Overdub, Multiply or any other function. When you are finished modifying the copied loop you can use the same technique to create another loop, or you may switch back to the original loop.
When you first switch to a copied loop, you will be placed in a mode defined by the Sound Copy Mode preset parameter. The possible values are:
The default value is Play.
When Sound Copy Mode is set to Play the copied loop will simply start playing. When set to any of the other values, it behaves as if that function were automatically executed immediately after the copy. If you know you want to immediately begin overdubbing into the copied loop set the parameter to Overdub or Multiply>. Insert is less common, you will immediately begin the insertion of a new empty cycle so the listener will not hear the copied loop until you end the insert.
If you set this parameter to Overdub, Multiply, or Insert, you must then remember to execute that function again to cancel that mode. For example, when Sound Copy Mode is set to Multiply you will immediately begin multiplying the copied loop. You must press the button for the Multiply function when you are finished multiplying.
Some people find it convenient to assign the Play function to a button. Play is like a universal mode canceling function, if you are in any recording mode (Record, Multiply, Insert etc.) pressing Play will cancel that mode and return you to Play mode. So after you have performed a loop copy you don't need to think about Sound Copy Mode and execute the corresponding function to end the mode, just use Play and it will cancel whatever mode you are in.
When Empty Loop Action is set to Copy Timing and you switch to an empty loop, a new clear loop will be instantly created that is exactly the same size as the previous loop. This is called a Time Copy. Review the Reset, Empty, Clear, and Silent section of the Getting Started manual if you are not sure about the difference between "empty" and "clear". A clear loop has a size and it can be played and modified, it just starts out with no audio content.
In addition to copying the size, time copy will also copy the number of cycles.
When you first switch to a time copied loop, you will be placed in a mode defined by the Time Copy Mode preset parameter. The possible values are:
The default value is Play.
This parameter has the same possible values as Sound Copy Mode described in the Empty Loop Action = Copy Sound section. You can select Multiply but this is less useful here because there is no audio content to repeat so it behaves almost the same as Insert. The main reason to use Multiply here is if the source loop had several cycles and you wanted to immediately use "remultiply" to remove some of the cycles from the end. See Resizing Loops for more information on using the Multiply function to make the loop smaller.
While setting the Empty Loop Action parameter is a convenient way to create synchronized loops, there are other ways to accomplish the same thing. When you set the Switch Quantize parameter and use one of the loop switching functions, you will see Switch Quantize displayed as the mode in the user interface. Older users of the EDP sometimes refer to this as the "lame duck period".
While you are in Switch Quantize mode you may trigger other functions that will "stack" and be executed immediately after the loop switch. Some stacked functions behave normally, Reverse for example is just delayed until after the switch, then you will immediately change direction. A few functions however have special meaning when they are used during Switch Quantize mode:
Note that the Sound Copy or Time Copy will always happen, even if the next loop is not empty. If Overdub is used you will always end up in Overdub mode. If the Multiply or Stutter is used the ending mode will be determined by the Sound Copy Mode parameter. If Insert is used the ending mode will be determined by the Time Copy Mode parameter.
NOTE: This is behavior carried over from the EDP. It is likely to be replaced in a later release with a more flexible way to specify how functions stacked during Switch Quantize mode behave.
In the previous section we discussed ways to create synchronized loops by coping one loop into another within the same track. Similar techniques exist for copying loops from one track to another track which can then play at the same time. We refer to this technique as track copy but note that the term is a bit misleading. When we say track copy it sounds like that might mean copying the entire contents of one track into another. But what this actually means is copying a single loop from one track into a single loop of a different track.
Empty Track Action is a preset parameter that can cause the loop playing in the active track to be immediately copied to an empty loop in a different track when that track is selected.
|Empty Track Action|
We first need to clarify what "empty track" means. Tracks contain some number of loops, but only one of these loops can be selected for playing or recording. An empty track is one whose selected loop is empty. The track may contain other loops that are not empty, but if the selected loop is empty, then the track is considered to be empty.
To use the Empty Track Action parameter you must select an empty track. This can be done in several ways:
If you are familiar with Mobius scripting note that the for statement does not select tracks. This means you can use the for statement to manage tracks without activating the Empty Track Action.
It is important to note that selecting a track will never be quantized, it always happens immediately. Quantization is important when you switch loops since you will be changing what is heard, but when you select tracks, you continue to hear what is playing in the original track so it doesn't matter as much when the change happens.
When Empty Track Action is set to Copy Sound and you select an empty track, the current loop in the current track will be instantly copied to the empty loop in the new track. This is a Sound Copy which means that all of the audio content will be copied. This is a relatively unusual option to use for track synchronization since it will change what you hear. To the audience it will sound like the loop you are copying from suddenly became twice as loud since you are now playing two copies the same loop.
This mode is usually used only in scripts where in addition to the sound copy you can immediately take other actions like muting the source track, changing the playback rate or direction, or altering the copy with a function like Shuffle. The overall volume level may still increase, but the resulting sound will be more interesting than simply making it louder.
When you first switch to a copied loop, you will be placed in a mode defined by the Sound Copy Mode preset parameter. The possible values are: Play, Overdub, Mulitply, and Insert. The default value is Play.
See Empty Loop Action = Copy Sound for more information on using Sound Copy Mode
When Empty Track Action is set to Copy Timing and you switch to an empty track, a new clear loop will be instantly created that is exactly the same size as the source loop and will have the same number of cycles. A clear loop has a size and it can be played and modified, but it starts without any audio content.
This is the most common value to use with the Empty Track Action parameter because it will not immediately change what is being heard. The new clear loop will begin playing but the audience will not hear any change until you begin modifying the new loop.
When you first switch to a copied loop, you will be placed in a mode defined by the Time Copy Mode preset parameter. The possible values are: Play, Overdub, Mulitply, and Insert. The default value is Play. The most common alternative is Overdub.
See Empty Loop Action = Copy Timing for more information on using Time Copy Mode
You can also accomplish sound or timing copies by executing functions. The copy happens immediately when the function is executed. There are two functions Track Copy and Track Copy Timing.
The Track Copy function will copy the sound the loop playing in the track to the left of the active track into the active track. The contents of the loop in the active track will be lost and replaced with the copy. If the active track is track number 1, then the copy is taken from the highest numbered track (which is 8 unless you have changed it). The effect is similar to Empty Track Action = Copy Sound except that the active track doesn't have to be empty.
The Track Copy Timing function will copy the length of the loop playing in the track to the left but not the sound. The new loop is clear which means that has a length and can be played but it starts with no audible content. The effect is similar to Empty Track Action = Copy Timing except that the active track doesn't have to be empty.
In the remainder of this document we will discuss various forms of synchronized recording. There are several parameters that can be used to control these forms of synchronization, all are defined in the Track Setup. See Track Setups in the Exploring Mobius manual for more information about creating track setups.
Bring up the Track Setup configuration window and select the Synchronization tab.
Most of the parameters under the Synchronization tab apply to all tracks. For example when you set Realign Time the same realign time will be used for all tracks. Two of the parameters however can be overridden so that each track may have a different value. The two parameters are Sync Source and Track Sync Unit.
Each track may have a Sync Source which defines how the track will be synchronized. Often you will want all tracks to have the same sync source, but sometimes you may have tracks that need a different synchronization style. The default sync source for all tracks is set in the Default Sync Source field under the Synchronization tab.
The possible values are:
The value selected here will be used by all tracks unless they override it. To override the Default Sync Source parameter select the track under the Tracks tab and set the Sync Source field.
In the previous example the default sync source was MIDI and track 1 has the sync source set to Default. This means that track 1 and all other tracks with sync source Default will be using sync source MIDI. This is the easiest way to make all tracks use the same sync source. Have all tracks set their sync source to Default then you can just change the one parameter Default Sync Source to set the sync source for all tracks.
Occasionally though you may want tracks that use different sync sources. For example most tracks would use MIDI to sync with an external drum machine but one track is used for arrhythmic drones and should not sync to MIDI clocks. To override the sync source in selected tracks set the Sync Source parameter to something other than Default.
In the previous example track 8 has Sync Source set to None which will disable the default MIDI sync source.
The simplest way to create synchronized tracks is to set the Sync Source parameter to Track. When this is enabled, the Record function will be quantized so that it aligns with divisions of a loop playing in another track. Unlike using Empty Track Action the new loop may be smaller or larger than the other loop. But because the loops will both be multiples of a common factor (such as a beat or measure), they will play in sync.
|Sync Source Track|
To use track sync, you first record a track freely without synchronization. The first track recorded becomes the track sync master and you will see the words "Track Master" appear above the loop meter. Once the track sync master has been set, other tracks that are recorded will be forced to have a size that is exactly related to the master track. If the master track is reset, the next available track to the right that is not empty is chosen as the new master.
When enabling track sync, you also must set the Track Sync Unit setup parameter which has these values: Subcycle, Cycle, and Loop. This is one of the synchronization parameters that may be set differently for each track. The default unit is set with the Default Track Sync Unit parameter under the Synchronization tab of the track setup window. Unless you override this the parameter will be used for all tracks.
|Default Track Sync Unit|
To override this value for some tracks, set the Track Sync Unit parameter under the Tracks tab.
|Track Sync Unit Override|
The default is Loop. In this example we have overridden this in track 1 to be Subcycle.
When the track sync unit is Loop the starting and ending of a recording will be aligned with the loop start point of the master track. Setting this parameter to Cycle or Subcycle allows you to record synchronized tracks that are shorter than the master track but will still play in sync.
To experiment with track sync, open the preset window, select the Synchronization tab and make sure Empty Track Action is set to None. Then open the track setup window, select the Synchronization tab, and make sure that Default Sync Source is set to Track and Default Track Sync Unit set to Loop. Then select the Tracks tab and make sure that the track you want to use has both Sync Source and Track Sync Unit set to Default.
Now record a loop in the master track. Any track can be the master track, it is simply the first one you record a loop into. The word Track Master will be displayed in the Sync Status area near the center of the Mobius window. The loop playing in the master track is called the master loop. Make the loop at least a few seconds long so you can experiment with Track Sync Unit values.
Now select an empty loop in another track. Wait until the master loop is near its midpoint and press Record. You should see the word Synchronize displayed as the mode in the Mobius window. This means that Mobius is waiting until the master loop reaches an interesting synchronization point before beginning the recording. In this case we have set Track Sync Unit to Loop so Mobius will begin recording exactly when the master loop reaches its start point.
Wait for the recording to start, then press the Record button again. You will see the words Record Stop with a white triangle pointing to the right underneath the loop meter. This is an event marker that indicates when something will happen as the loop advances.
Normally event markers have a triangle pointing up at the exact location within the loop where the event will happen. When the triangle is on the right edge of the loop meter pointing to the right it means that the event will happen at an unknown time in the future, in this case when the master track reaches its start point. When that happens the recording stops, the event marker is removed, and the new loop enters Play mode. The new loop will have the same number of cycles as the master loop.
By setting Track Sync Unit to Cycle or Subcycle you can create loops that are not an exact multiple of the master loop length. Recording will begin and end whenever the master loop reaches a cycle or subcycle boundary. If the master loop only has one cycle, the Cycle sync unit will behave the same as the Loop sync unit.
To experiment with this set Default Track Sync Unit to Subcycle and set the Subcycles preset parameter to 4. Record a master loop that represents one measure of music in 4/4 time. Now each subcycle will represent one quarter note "beat" in the master loop. Select an empty loop in another track, wait until the master loop is almost at its start point and press Record. The new track will enter Synchronize mode for a moment then begin recording when the master loop reaches its start point which is also the start of the first subcycle. Let the recording proceed for 6 beats then press Record again slightly after the beginning of the 6th beat. A Record Stop event will appear and the recording will be rounded up to the end of the 6th beat. The resulting loop will be two beats longer than the master loop but its size is still a multiple of the same beat length. It will go in an out of phase with the master loop but will always stay in sync. This can be used to create interesting polyrhythms.
When you record a synced loop, we try to keep the same cycle length as the master loop. If Track Sync Unit is set to Loop or Cycle the cycle length in the synced track will always be the same as the cycle length in the master track. Every time the master track reaches a cycle boundary, the cycle count in the synced loop is increased. This is another way to create loops with several cycles.
When Track Sync Unit is set to Subcycle we may not be able to keep the same cycle length. If the number of subcycles you record is an even multiple of the Subcycles parameter then we can keep the same cycle length. For example if the Subcycles parameter is 4 and you record 12 subcycles of the master loop, the synced loop will have 3 cycles since 12 divides evenly by 4. But if you had recorded 10 subcycles or any other number that can't be divided evenly by 4 we cannot maintain the same cycle length. In these cases the synced loop will have only one cycle.
Normally once a track becomes the track sync master it will continue to be the master for the entire performance. In some special cases though you may want to make a different track the master. This can be accomplished in two ways: using the Sync Master Track function or the Reset function.
The Sync Master Track function will make the currently selected track the new track sync master. This is the most flexible way to select a sync master track.
If you use the Reset function to reset the current track sync master, Mobius will automatically select a new sync master. It will select the first track to the right of the old master track that has a non-empty loop.
Host Sync can be used to record Mobius loops that are in sync with something being played by the plugin host application. Typically this is used when you want the host to play pre-recorded background tracks or drum patterns that are then combined with Mobius loops created in real-time. This option is only available when Mobius is running as a plugin in a host that supports the concept of a "transport". Transports usually have buttons like "start", "stop", and "pause", they have a place where you can enter a tempo and a time signature, and while they are running they count off beats and bars. All hosts do this differently.
NOTE: Mobius currently does not support host sync in the Audio Units plugin, host sync is only available in the VST plugin. This will be fixed soon.
When the host transport is running, it will notify the plugins whenever a the start of a beat or bar is reached. Mobius calls these notifications "pulses". If the transport is not running, Mobius will not be receiving any pulses and it will not be able to record loops. You may need to manually click a "start" button to get the transport started.
To use host sync, set the Sync Source parameter to Host, then set the parameter MIDI/Host Sync Unit to either Beat or Bar.
|Sync Source Host|
The Record function will now be quantized so that it starts exactly on a beat or bar pulse from the plugin host. This is a bit like using Track Sync with Default Track Sync Unit set to Cycle or Subcycle. You can record loops that are exact multiples of the host bar length, or you can record loops with an odd number of beats so that the loop goes in and out of phase with the host. Most people set MIDI/Host Sync Unit to Bar.
The procedure for creating a host synced loop is usually this:
There are several important points here. First because the start and ending of the recording are being quantized, you need press the button ahead of the beat/bar. If you press the record button right when you hear the beat/bar in the backing track, you may actually be a little bit late which means that recording will be delayed until the next beat/bar. This may take some practice. Always press early, if you try to land right on the beat it will often be too late.
Another important point is that the track in the host application will be playing and is normally audible before you ever get around to doing anything with Mobius. Occasionally though you may want the host track and the Mobius loop recording to start at exactly the same time. To do that you have to "arm" Mobius for recording before you start the host's transport. With the transport in the "stop" state, select the loop you want to record and execute the Record function, Mobius will enter Synchronize mode waiting for a pulse from the host. When you are ready click the "start" button in the host transport, the host tracks will begin playing, Mobius will receive a beat/bar pulse and will begin recording.
Once Mobius loops have been created it will constantly monitor the pulses coming from the host application to check for drift. If we notice that the Mobius loop has drifted away from the host pulses we will make an instant adjustment to the playback position to bring it back into alignment. For example, if a host synced loop was recorded with 4 bar pulses, every time we receive 4 pulses we check the Mobius loop position and expect it to be at its start point. If instead the loop is a little before or after the start point this may indicate that drift has occurred. If this keeps getting worse we make a drift correction. Usually this is not a problem for host sync unless the host is doing a bad job sending beat/bar pulses. What can cause problems though is changing the host transport tempo after the Mobius loop has been recorded. We will start seeing beat/bar pulses come in at a different rate, they will never match the loop playback position and we will keep jumping around trying to bring the Mobius loop back in sync with the transport. This can be done on purpose to achieve a "glitchy" effect but it is usually not what you want. Once you have recorded host synced loops in Mobius you should never change the host transport tempo.
See the section Drift Correction for more information on how we compensate for drift.
It is important to note that Mobius does not respond when you stop the host transport. It will continue merrily along playing loops while the host tracks become silent. This will be addressed in a future release, but until then if you want to stop the host tracks and the Mobius loops at the same time you will need to use one of the following techniques.
The easiest thing may be to simply arrange your performance so that you don't have to stop both the host and Mobius tracks at the same time. First do a Global Reset or Global Pause in Mobius to make it silent, then let the host backing tracks play a little, maybe with a fade out, then stop the host transport. Or stop the host transport first and let the Mobius loops play a little longer, maybe using feedback or a fade script to let the loops decay gradually.
If it is important that you silence the host tracks and the Mobius tracks at exactly the same time, one of these techniques must be used.
Unfortunately, none of these are very easy to set up. In the first case you would select a MIDI message like NOTE 32 and program the host so that it stops the transport when it receives this note, then in Mobius bind this note to the Global Pause function. The problem with this approach is that most hosts will not pass MIDI messages to the plugins if they use them for their own control. The host might pass NOTE 33 but it knows that NOTE 32 is used to stop its own transport and assumes that the plugins will not be interested in the note.
The problem with hosts not passing MIDI messages can be avoided if you have a MIDI controller that is capable of sending different MIDI messages for the same button. Program the device to send one message like NOTE 32 to stop the host transport and NOTE 33 to do a Global Pause in Mobius. As long as the note numbers are different, the host will pass the ones it doesn't use to the plugins. Unfortunately not many inexpensive MIDI controllers can send multiple notes from the same button. It may be possible however to simply press two buttons at nearly the same time. Either the host or Mobius may stop a few milliseconds before the other, but it may not be noticeable.
The final option is the most complex but also the most flexible. Here, you bind a MIDI message to run a Mobius script. The script first does a GlobalPause to silence Mobius, then it uses the MidiOut script function to send a MIDI message to the MIDI device configured in the Plugin Output Devices panel of the MIDI Control window. The device selected must be a "loopback" device such as MIDI Yoke (available only on Windows). The plugin host then opens this same MIDI loopback device to receive its control messages. To the host it looks like Mobius is just another footswitch sending MIDI messages. Program the Mobius script so that it sends the MIDI message the host will recognize to stop the transport. Now by pressing one switch on the MIDI controller, both Mobius and the Host will stop at the same time. Note though that you don't have to just stop the host transport, the script can make the host do anything that is controllable with MIDI messages such as gradually decreasing the levels of the host tracks for a fade out effect.
See the Controlling Plugin Host Tempo section for more information on using loopback devices.
There are two recommended track configurations for Host Sync. The simplest is to have all tracks set Sync Source to Host and MIDI/Host Sync Unit to Bar. All tracks will follow bar pulses from the host.
The second configuration is to have one track use Sync Source = Host and record that first so that it becomes the track sync master track. Then have all other tracks use Sync Source = Track. Then you will have only one track that needs to follow the host and the others will follow the Mobius master track.
The differences between the two approaches are subtle. We recommend that new users use the first approach and have all tracks use Sync Source = Host. The main reason to use the second approach is to have more control over the granularity of the synchronization points. For example you can record synced loops that are fractions of the size of a host beat by setting Track Sync Unit = Subcycle and setting Subcycles to a large value. Or you can record synced loops that are many host bars in length by setting Track Sync Unit = Loop.
Since each track can have a different Sync Source it is possible for tracks to use a combination of Host Sync, MIDI Master Sync and MIDI Slave Sync at the same time. We are aware of no practical reason to do this, unless you know exactly why you are doing this it is strongly not recommended.
MIDI Slave Sync can be used to create loops that stay in sync with another device that generates MIDI "beat clocks". Usually this will be a hardware drum machine or sequencer but it could also be another software applications that send MIDI clocks. In this manual we will refer to this as a "drum machine" though it can be any hardware or software that generates MIDI beat clocks.
When using MIDI Slave Sync, Mobius receives a stream of MIDI clock messages and identifies which clocks represent "beats" and "bars". When you record loops, the start and end of the recording will be quantized to either a beat or bar boundary. This is similar to using Host Sync except the beats and bars are defined by an external hardware device or another application. This type of synchronization is usually not as accurate as Host Sync so you may experience Drift Correction more often.
MIDI Slave Sync is almost never used if you are running Mobius as a plugin. In that case it is usually better to use Host Sync instead.
NOTE: MIDI "beat clock" is not the same thing as "MIDI Time Code". Mobius does not support MIDI Time Code, it only recognizes the simple beat clock messages: Start, Stop, Continue, and Clock.
To use MIDI Slave Sync you will need to arrange to have MIDI beat clock messages from the drum machine routed into Mobius. If you are running Mobius standalone there is only one way to do this. Open the MIDI Devices configuration window and select the MIDI device connected to the drum machine in the panel labeled Input Devices on the left side. You can select more than one device in this panel, but only one of them should be connected to something that sends MIDI beat clock.
As mentioned earlier it is almost never necessary to use MIDI Slave Sync when running Mobius as a plugin. Instead you usually use Host Sync mode and let the host control the tempo. There are however a few cases where you may need to use MIDI Slave Sync with the plugin:
In these cases you can get MIDI beat clock into Mobius in two ways:
For normal Mobius control, we always recommend the first approach, letting the host open the MIDI device. This prevents conflicts that can happen when Mobius and the host attempt to open the same devices. Unfortunately this usually does not work very well for MIDI Slave Sync. Hosts usually add a significant amount of timing jitter to MIDI clock messages. This can make it difficult for Mobius to correctly calculate the size of synchronized loops which will cause them to drift out of sync more rapidly.
If you seem to be doing Drift Correction too often you may need to take the second approach and have Mobius open its own private connection to a MIDI device. This will result in a smoother stream of clock pulses and more accurate loop lengths. To do this open the MIDI Devices configuration window and select the MIDI device connected to the drum machine in the panel labeled Plugin Input Devices on the right side.
The problem with letting Mobius open a private MIDI device when running as a plugin is that the host often tries to open the same device. Sometimes this is unavoidable, the host will simply open every available device and not let you choose which ones you actually need. Sometimes there will be a preferences window where you can select the devices to open. If at all possible, try to make the host open MIDI devices that are different than the devices Mobius uses. If Mobius and the host try to open the same device there can be conflicts that in some cases can lead to crashes, usually when you delete the Mobius plugin.
Whether this will work or not depends on your host and the MIDI device drivers. You will simply have to try it to see if it works. If you are unable to specify exactly which MIDI devices the host will open and you have crashes deleting the Mobius plugin then you will probably need to use a different host. If this happens please contact us so we can see if there is something we can do to make Mobius behave better in that host.
After configuring a MIDI device from which we can receive beat clock messages, locate the Default Sync Source setup parameter and set it to MIDI. Then set MIDI/Host Sync Unit to either Beat or Bar. The Record function will then be quantized and executed exactly on the MIDI clock at the start of the next beat or bar. Finally set the Beats Per Bar parameter to the number of beats in one bar.
|Sync Source MIDI|
Determining when the next MIDI beat occurs is relatively easy. The MIDI specification says that there will be 24 Clock messages in every beat, so Mobius simply counts clocks. Every time 24 clocks are received, Mobius generates a beat pulse for synchronization. Note that for this to work it is important that the device that is generating clocks also sends a MIDI Start message when it has begun playing. Mobius will see the Start message and reset the clock counter so the beats in the drum machine and the beat pulses inside Mobius will be aligned. If Start is not sent Mobius can't tell if a clock is at the beginning, middle, or end of a beat. It will generate beat pulses at the correct tempo but the timing of the beats may not align with the drum machine.
Determining when the next MIDI bar occurs is more complicated because MIDI does not have a way to say what the time signature is or where bars are located. Instead you define the length of a MIDI bar using one of two Mobius parameters: Beats Per Bar or Subcycles. Beats Per Bar is found under the Synchronziation tab of the track setup window as shown in the previous capture.
If Beats Per Bar is set to a value other than zero, that will be the number of beats in one bar. If Beats Per Bar is empty or zero, the number of bar beats is determined by the value of the Subcycles preset parameter. It is recommended that you set the Beats Per Bar parameter so that you can use Subcycles for quantization that is not dependent on the size of a bar. For example you may set Beats Per Bar to 4 if you are using 4/4 time but have Subcycles set to 8 so the smallest quantization unit is an eighth note.
The procedure for creating a MIDI synced loop is usually this:
Like Host Sync you need to remember to press the Record button ahead of the beat/bar where you want recording to begin. If you try to press the record button right when you hear the beat/bar in the drum machine, you may actually be a little bit late which means that recording will be delayed until the next beat/bar. Always press early.
Also like Host Sync the drum machine will be playing and is normally audible before you ever get around to doing anything with Mobius. If you want the drum machine and the Mobius loop recording to start at exactly the same time you have to "arm" Mobius for recording before starting the drum machine. To do this press Record in Mobius before starting the drum machine. Mobius will enter Synchronize mode waiting for a sync pulse. Then start the drum machine.
Once Mobius loops have been created it will constantly monitor the MIDI clocks to check for drift. If we notice that the Mobius loop is drifted away from the MIDI clocks we will make an instant adjustment to the playback position to bring it back into alignment. For example, if a MIDI synced loop was recorded over 96 MIDI clocks, every time we receive 96 clocks we check the Mobius loop position and expect it to be at its start point. If instead the loop is a little before or after the start point this may indicate that drift has occurred. If this keeps getting worse we make the drift adjustment. This is frequently a problem with MIDI sync because there can be considerable jitter in MIDI clocks that make accurate timing of the start and end of the recording difficult. Even if the clocks were just slightly early or late, this can result in the loop being too short or too long which will cause noticeable drift after several repetitions.
Once MIDI synced loops have been recorded it is important that you do not change the tempo of the MIDI clocks. Mobius will start seeing clocks come in at a different rate, they will never match the loop playback position and we will keep jumping around trying to bring the Mobius loop back in sync with the transport. This can be done on purpose to achieve a "glitchy" effect but it is usually not what you want. Once you have recorded MIDI synced loops in Mobius you should never change the tempo of the MIDI clocks. See the section Drift Correction for more information on how we compensate for drift.
Since Mobius does not respond to the MIDI Stop message, it can be difficult getting the drum machine and Mobius to stop at exactly the same time. The simplest thing is to just do a Global Pause in Mobius to silence it, let the drum machine continue for a few bars then stop it. See the Synchronizing Stop section for some other ways to stop Mobius, this was written for Host Sync but the techniques can be used with MIDI sync as well.
There are two recommended track configurations for MIDI Slave Sync. The simplest is to have all tracks set Sync Source to MIDI. Tracks will all follow the MIDI clocks and not each other.
The second configuration is to have one track use the MIDI sync source and record that first so that it becomes the track sync master track. Then have all other tracks set Sync Source to Track. Then you will have only one track that needs to follow MIDI clocks and the others will follow the Mobius master track.
The differences between the two approaches are subtle. We recommend that new users use the first approach and have all tracks use the MIDI sync source. Because MIDI clocks are subject to more jitter than other sync sources, the second approach can result in tracks that play together more reliably over time since only one of them will be syncing to the MIDI clock and all the others will have an exact size relationship with the track following the MIDI clocks.
Most people that synchronize Mobius with external devices use MIDI Master Sync for one important reason: you get to control the tempo from Mobius, rather than trying to follow a previously set tempo. For example, when using Host Sync or MIDI Slave Sync, you need to start playing a pre-recorded sequence, drum pattern, or click track so you can hear the tempo to follow. Then you record Mobius loops in sync with that tempo. When you use MIDI Master Sync you start by freely recording a loop in Mobius in whatever tempo you feel like at that moment. As soon as the loop is recorded, Mobius starts sending out MIDI "beat clocks" that drum machines, sequencers, or other devices can lock onto and begin playing backing tracks in sync with the Mobius loop. You make the other devices follow your loop tempo rather than the other way around. In the looping community this is commonly called "first loop capability".
If you prefer to have backing tracks that are audible before you start creating loops, you can still use MIDI Master Sync to set the tempo. Start by recording a silent Mobius loop just to set the tempo of the MIDI clocks. Then after the slave device starts playing, select a different Mobius track and use Track Sync to record loops that are in sync with the original silent loop.
Note that the MIDI messages that Mobius will send for master synchronization are "beat clock" messages: Start, Stop, Continue, and Clock. This is not the same thing as "MIDI Time Code". If you have a device or application that requires MIDI Time Code for slave sync, you will not be able to use it with Mobius.
To use MIDI Master Sync you will need to select a MIDI output device. Open the MIDI Devices configuration window. If you are running Mobius standalone select a device in the Output Device panel, if you are running Mobius as a plugin select a device in the Plugin Output Device panel. You may only select one device in each panel.
If you are running Mobius as a plugin this is one of those rare circumstances where you must create a private connection directly to a MIDI device rather than sending MIDI through the plugin host application. While it is possible for a VST or Audio Unit plugin to send MIDI messages to the host and then have the host pass those to a MIDI device, Mobius does not do this. Mobius can only send MIDI beat clock messages directly to a MIDI device. This is because plugin hosts almost always introduce timing jitter to the MIDI messages sent by plugins. This isn't always bad for MIDI messages like notes or continuous controllers, but it is unacceptable for MIDI clocks.
If you select a Plugin Output Device in Mobius, look at the MIDI configuration in your host application and try to make the host not select the same device. There are occasionally problems with certain combinations of hosts and MIDI device drivers that can cause a crash when you delete the Mobius plugin. What happens is that the host opens a connection to a MIDI device and assumes that it has complete control over the device. Then when the Mobius plugin is inserted, Mobius opens another connection to the same device. When you delete the Mobius plugin, Mobius thinks it is in control of the device and closes the connection. With some MIDI device drivers, this makes the original MIDI connection opened by the host invalid and if the host attempts to use it, it may crash.
To select MIDI Master Sync, locate the Default Sync Source setup parameter and set it to Out. Then make sure all tracks in the set have their Sync Source parameter set to Default. Also set Default Track Sync Unit to the desired value.
|Sync Source Out|
The first track you record a loop into will become the MIDI Sync Master track. A tempo will be calculated based on the loop length and a few parameters, a MIDI Start message will be sent to the configured MIDI output device followed by a stream of MIDI Clock messages at the calculated tempo. If you have a drum machine or sequencer configured to listen to the same MIDI device it should begin playing.
Once a track becomes the MIDI sync master, all other tracks that have Sync Source set to Out will behave as if they were using Track Sync. There can only be one master track in control over the MIDI clocks being sent, the other tracks will slave to the master track. This is important so it deserves repeating. Setting Sync Source to Out is almost exactly the same as setting it to Track. One track will be designated the master and other tracks will sync to the master track. The primary difference between this and Track Sync is that the master track will also send out MIDI clocks.
When the MIDI Sync Master track is selected, the word Master or less often MIDI Master will be displayed in the Sync Status component near the center of the Mobius window. Master means that the track is functioning as both the MIDI Sync Master track and the Track Sync Master track. This is usually what happens. If you see the words MIDI Master it means that the track is functioning only as the MIDI Sync Master track and some other track is the Track Sync Master. Above the Sync Status component you will see the word Tempo followed by the tempo of the master loop, rounded to one tenth.
Once you have recorded the master loop you must be careful about changing it. It is permissible to change the master loop, or even record a different loop in the master track, but this may change the cycle length of the loop which may in turn change the tempo of the generated MIDI clocks. See the Adjusting The Tempo section for more information.
A common technique to ensure that the tempo remains consistent is to first record a silent loop in the master track and let it run forever. Then use Track Sync to record audible content in other tracks synced to the master track.
For normal MIDI Master Sync looping, set the Default Sync Source to Out and make sure the Sync Source parameter for each track is set to Default. Also set Default Track Sync Unit to your desired unit for syncing tracks when they are not the master track.
Only one track can be the sync master, it will be the first one that is recorded and is normally never changed. Since the other tracks cannot be the sync master, they will behave as if the sync source was set to Track.
There are several setup parameters that control how MIDI master sync behaves. These are all found on the bottom half of the Synchronization tab in the Track Setups window. The names of these parameters all begin with "Out Sync". These will be discussed in sections below.
Normally when you use the sync source Out, a MIDI Start message is sent immediately after recording the master track to the slave device. Sometimes though you may want to delay starting the slave device, possibly to evolve the loop a bit before bringing in a background rhythm. This can be done by checking the Out Sync Manual Start setup parameter.
After finishing the recording of the master track Mobius will calculate the clock tempo and begin sending MIDI clocks, but it will not send a Start message. This allows the slave device to begin locking onto the MIDI tempo. When you are ready to start the slave device, execute the MIDI Start or Mute MIDI Start functions.
The MIDI Start function will wait for the start point of the master loop, then send a MIDI Start message. There is no way to control the quantization, it will always happen at the master loop's start point.
The Mute MIDI Start function will immediately mute the master loop as if the Mute function had been used, wait for the start point, send a MIDI Start message, and at the same time unmute the loop.
There is another relatively obscure way to perform MIDI Start that was copied from the EDP. If you are already in Mute mode and you use the Multiply function, the Multiply function will be converted to the Mute MIDI Start function. For this to work Multiply must be added to the Mute Cancel Functions global parameter.
When a MIDI Sync Master loop has been recorded, the tempo of the generated MIDI clocks is calculated with this formula:
beatsPerMinute = 60 / ((cycleFrames / beatsPerBar) / sampleRate)
Or broken up for clarity:
framesPerBeat = cycleFrames / beatsPerBar secondsPerBeat = framesPerBeat / sampleRate beatsPerMinute = 60 / secondsPerBeat
The cycleFrames term has the number of frames (pairs of stereo samples) in one cycle of the loop. This is usually the same as the number of frames in the entire loop since new loops usually have only one cycle.
The beatsPerbar term will be the value of the Beats Per Bar setup parameter if it is greater than zero, otherwise it will be value of the Subcycles preset parameter. It is recommended that you set Beats Per Bar in the setup so that you can use Subcycles for quantization without affecting the MIDI clock tempo. For example a common value for Beats Per Bar is 4 but you might want Subcycles set to 16 for fine grained quantization.
The cycle is assumed to be one bar long so cycleFrames divided by beatsPerBar results in framesPerBeat. The sampleRate term is the sample rate of the audio device, this will usually 44100 (the CD sample rate) or 48000 but other rates are possible. framesPerBeat divided by sampleRate results in secondsPerBeat. Finally dividing 60 by secondsPerBeat results in the base tempo expressed in the most common unit of Beats Per Minute (BPM).
This tempo formula can result in very small or very large tempos which are usually undesirable. To keep the tempo within a usable range, we make a final adjustment to the tempo using two setup parameters: Out Sync Min Tempo and Out Sync Max Tempo.
First the tempo is divided by 2 until it reaches a value that is less than or equal to the value of the Out Sync Max Tempo parameter. For example if the tempo was 450 and the Out Sync Max Tempo parameter was 200, the adjusted tempo would be 112.5 (450 / 2 = 225 / 2 = 112.5).
Next the tempo is multiplied by 2 until it reaches a value that is greater than or equal to the value of the Out Sync Min Tempo parameter. For example if the tempo was 20 and Out Sync Min Tempo was 60, the adjusted tempo will be 80 (20 * 2 = 40 * 2 = 80).
Note that it is possible for the Out Sync Min Tempo and Out Sync Max Tempo parameters to be in conflict if the values are not far apart. In this case the Out Sync Min Tempo wins. For example assume Out Sync Max Tempo is 200, Out Sync Min Tempo is 150, and the base tempo is 450. We first make the Out Sync Max Tempo adjustment which divides it down to 112.5. Since this is below Out Sync Min Tempo it gets multiplied back up to 225. You will never have tempos that are below Out Sync Min Tempo but you may have tempos that are above Out Sync Max Tempo if the tempo range isn't large enough.
Once you have recorded a MIDI Sync Master track there are several actions you can make that may disrupt the tempo of the MIDI clocks being generated. These include:
In these cases, two setup parameters control what will happen to the tempo of the generated MIDI clocks:
These parameters have may either be set to None which means that the current tempo is not changed, or Change Tempo which means that the tempo will be recalculated so that it matches the new characteristics of the loop.
Out Sync Speed Adjust is the most important. It is used whenever the master loop playback rate changes. A common looping technique is to change the playback rate of a loop so that it either an octave higher or lower and thereby either half as long or twice as long. These changes can be made while keeping the master sync tempo at a consistent rate and the drum machine pattern still "fits" with the loop. For example if a drum pattern plays once when the loop is at normal speed, it will play twice if the loop is at half speed. But the rhythm of the drum pattern is still usually compatible with the rhythm of the loop even though the drum machine is now twice as fast. To accomplish this effect set Out Sync Speed Adjust to None.
If you rate shift the master loop at intervals other than an octave, the resulting length of the loop will no longer fit within the drum machine pattern evenly. This can be used to create interesting polyrhythms. If you set Out Sync Speed adjust to Change Tempo then the drum machine tempo will follow the loop tempo. One use for this technique is to gradually reduce the speed of both the master loop and the drum pattern until they practically halt as a way to end a performance.
Out Sync Resize Adjust used whenever the loop playing in the master track changes size. This is relatively unusual but it can happen when switching loops, using Undo and Redo, or after applying some functions to the loop. If you are creating strictly synchronized loops using quantization and time copy, the loops and layers will tend be the same size, or a multiple of a common factor. Switching between these loops and layers can be done without changing the tempo of the generated clocks. If however you have been using functions like Unrounded Insert, Unrounded Multiply and Trim you may have loops and layers that do not have compatible sizes. In those cases if Out Sync Resize Adjust is set to Change Tempo a new tempo will be calculated based on the size of the new loop. If this parameter is set to None the original sync tempo will be preserved but since the loop is not of a related size it will drift in and out of phase with the drum machine or sequencer.
Normally once a track becomes the MIDI sync master it will continue to be the master for the entire performance. In some special cases though you may want to make a different track the master. This can be accomplished in two ways: using the Sync Master MIDI function or the Reset function.
The Sync Master MIDI function will make the currently selected track the new MIDI sync master. This is the most flexible way to select a master track.
If you use the Reset function to reset the current MIDI sync master track, Mobius will automatically select a new master. It will select the first track to the right of the old master track that has Sync Source set to Out and has a non-empty loop.
After selecting a new master track, the length of the master loop may have a different cycle length than the previous loop. In this case the Out Sync Resize Adjust parameter is used to determine whether the tempo should change.
If after using the Reset function no suitable sync master track can be found, a MIDI Stop message will be sent and MIDI clocks will no longer be generated.
When Mobius is running as a plugin you can sometimes use MIDI Master Sync to set the tempo used by the plugin host transport. For this to work the host needs to support slaving its transport to MIDI beat clocks, not all hosts support this.
You will need to use a MIDI Loopback device. On Windows the one we recommend is MIDI Yoke available at www.midiox.com . On Mac, you can use a built-in OS X feature called the MIDI IAC Driver. A tutorial on setting up this driver can be found here .
Configure Mobius as usual for MIDI master sync and select the loopback device in the Plugin Output Devices panel of the Audio Devices configuration window.
You will then need to configure the plugin host so that it can receives MIDI clocks from the same loopback device. This will be different in every host, if it isn't obvious post a message to the Mobius forums.
Now record the initial loop in Mobius. MIDI clocks will be generated and if things are connected properly the host should lock onto the tempo and display it in its transport.
This technique is known to work in Ableton Live.
NOTE: The behavior described in this section was developed for a problem one Mobius user was having with a slave device. It is unfortunately rather complicated and not as flexible as it should be. This is likely to change in a future release.
When you use the Mute or Pause functions in the MIDI sync master loop, the external device being synchronized may also be made to stop and then resume when the master loop is unmuted. This behavior is controlled by a combination of the Mute Mode preset parameter and the Out Sync Mute Action setup parameter.
The Mute Mode parameter may have these values:
If Mute Mode is set to Pause the Mute function will behave exactly the same as the Pause function. The loop will freeze when then Mute/Pause function is executed, then resume from its previous location when Mute/Pause is executed again.
If Mute Mode is set to Start the loop will continue playing silently while it is in Mute mode, then when leaving Mute mode the loop will be restarted from the beginning.
If Mute Mode is set to Continue the loop will continue playing silently while it is in Mute mode, then when leaving Mute mode it will simply resume playing from its current location.
If Mute Mode is set to Continue in the MIDI Sync Master loop we will continue to send MIDI Clock messages to the slave device so that it can remain in sync with the silent loop.
If Mute Mode is set to Start or Pause in the MIDI sync master loop, we may try to stop the slave device as well as silencing the Mobius loop. How this happens is determined by the Out Sync Mute Action parameter which may have these values.
When set to Send Stop/Start continue clocks, entering Mute or Pause mode will cause a MIDI Stop message to be sent to the slave device. MIDI Clock events will continue to be sent so the slave device can continue tracking the clock tempo. When exiting Pause mode a MIDI Continue message is sent to the slave device. When exiting Mute mode a MIDI Start message is sent to the slave device. This is the Out Sync Mute Action you normally use when the slave device recognizes the MIDI Start, Stop, and Continue messages. It allows the slave device to keep receiving MIDI Clock messages while it is stopped so it can track changes to the clock tempo. When the slave device is finally resumed it will already know the desired tempo.
Send Stop/Start stop clocks is the same except that it also stops sending Clock messages while in Mute and Pause modes. This may be necessary if you have a device that gets confused if it keeps receiving Clock messages after a Stop. This is rare. If you think you have a device that requires this option please let us know so we can mention it in the documentation.
Stop clocks is used when the slave device does not understand the MIDI Stop message. Here we simply stop sending Clock messages when in Mute or Pause mode. This is also relatively rare. It may be of use with tempo sensitive effects like a panner or tremolo. Such devices don't have the concepts of start and stop, they simply lock onto a clock tempo.
If Continue clocks is used, we do not send a MIDI Stop message when entering Mute or Pause modes and we continue sending Clock messages. The Mobius loop will become silent, but the slave device will continue playing normally.
When we exit Mute mode we will always send a MIDI Start message when Mute Mode is set to Start. When we exit Pause mode we will always send a MIDI Continue message. These messages are always sent even if the slave device does not recognize them. If the MIDI Clock events had been turned off they will be resumed.
When a synchronized loop is created using Host Sync, MIDI Slave Sync, or MIDI Master Sync there is the possibility that the Mobius loop may drift out of alignment with the host, drum machine, or even the internal timer used to generate MIDI master clocks. Drift is something that is not supposed to happen. In an ideal world there would be no drift but unfortunately differences in the speed of clocks running in different hardware devices, MIDI lag and jitter, and stress on the CPU can all result in timing errors that cause drift.
Drift is usually very small, but over time as a loop plays the drift may accumulate until it becomes audible. Loops may start to sound slightly out of phase, and rhythm patterns may start to sound sloppy. Mobius is constantly monitoring the amount of drift and when it reaches a certain threshold it will make a correction to bring the loops back into alignment. This process is described in more detail in the Drift Correction section. Note that drift only happens when synchronizing with something outside of Mobius. Tracks within Mobius will never drift relative to each other.
Dealign is a deliberate action by the user that causes a Mobius loop to go out of alignment with other loops either inside or outside Mobius. There are many ways to cause a dealign, among them:
Once a loop has been knocked out of alignment, it will remain that way until the user does something to change the alignment. Alignment is never corrected automatically like drift. To bring the loop back into proper alignment you must use the Realign or Mute Realign functions. This is described further in the Realign section.
Since Mobius can synchronize in several ways, it becomes difficult to talk about drift and realign without using word salad like "the plugin host or the drum machine or the master MIDI clock". This just gets worse as new synchronization types are added. To make this easier to talk about, Mobius uses a concept called the external loop that gives us a simple way to think about all synchronization types.
The external loop represents anything outside of Mobius that we want to synchronize with. The external loop has a size and it plays from beginning to end at a fixed speed. When it reaches the end it wraps back to the beginning and repeats forever. The external loop has a size in frames or samples like a Mobius loop but it does not contain any audible content. In addition, the external loop has a size measured in pulses.
A pulse is a message sent to Mobius at a regular interval from the thing we want to synchronize with. When you use Host Sync a pulse is a beat event sent by the plugin host to all of the plugins when the host transport is running. When you use MIDI Slave Sync a pulse is a MIDI Clock message generated by a drum machine or other device. When you use MIDI Master Sync a pulse is a notification from an internal timer that is used to send MIDI Clock messages to another device. Mobius doesn't care what the pulse actually is, it simply needs to receive them at a consistent tempo.
When you begin recording a synchronized loop using Host Sync or MIDI Slave Sync we delay the start of the recording until the next pulse is received. Then we start counting the number of pulses that are received while the loop is recording. When you end the recording, we round the loop up to the next pulse. We now have created two things: a Mobius audio loop with a size in frames and an external loop with a size in pulses. The Mobius loop size will be close to an exact multiple of the distance between pulses.
When you record a synchronized loop using MIDI Master Sync we don't wait for pulses since there aren't any until after the loop is recorded. Recording starts and ends immediately. Once the recording has finished we then calculate a tempo for the MIDI clocks using the algorithm from Calculating The Tempo. We can then calculate the number of MIDI clocks that will be sent each time the new loop plays, this is the number of pulses in the external loop.
At this point we have an external loop with a size in frames and pulses. We begin "playing" this loop silently, it will advance at exactly the same rate as the other Mobius tracks though it is invisible and you won't hear it. We also continue to receive pulses from the sync source. We keep a counter that is incremented when each pulse is received. When this counter is equal to the number of pulses in the external loop, the counter is set back to zero and we begin counting up again. For example, using MIDI Slave Sync we record a Mobius loop that is 96 MIDI clock pulses long. When the loop has finished recording, we start the external loop pulse counter from zero and add one each time a MIDI clock is received. When this counter reaches 96 we are at the end of the external loop and set the counter back to zero.
When the external loop pulse counter wraps back to zero, this is called the external loop start point. This is an important moment in time that is used for both drift correction and the Realign function.
NOTE: It is not necessary to fully understand this section in order to make effective use of synchronization. Drift correction normally just works and you don't need to worry about it. But if you are curious about what the mysterious Drift Resync Frames global parameter does, read on.
Once a synchronized loop has been recorded, we create the external loop and it begins "playing" and we begin counting sync pulses. Whenever the external loop reaches its start point, we check for drift.
The algorithm for calculating drift is complicated but at a high level we compare the current playback frame position of the external loop with the ideal position calculated from the pulses that have been counted. The result is the number of frames of drift. If the drift frames are positive it means that the Mobius tracks are ahead of the external loop pulses, if the drift frames are negative it means the Mobius tracks are behind the external loop pulses.
When the amount of positive or negative drift exceeds a certain threshold a drift correction is made. A drift correction is an immediate jump in the Mobius loop playback position to bring it back into alignment with the external loop. This is usually not noticeable but with some loops it may be heard as a soft "bump". This happens more often with MIDI Slave Sync because jitter in the MIDI clock stream can result in greater drift. It rarely happens with Host Sync. Surprisingly it can happen with MIDI Master Sync even though Mobius is in control over the clocks. This is because sync pulses are generated by timer provided by the operating system that is not synchronized with the audio stream being processed by the audio interface hardware. The amount of drift is usually very small, but over time it can be audible.
A small amount of drift is normal and tends to balance out over time. For example, on one pass of the loop we may be 100 frames ahead of the external loop, on the next 200 behind, then 80 ahead, then 127 behind. As long as the drift does not steadily increase in either direction the drift is normal and does not need to be corrected. The threshold at which drift correction occurs is defined by the global parameter Drift Resync Frames.
The default value for Drift Resync Frames is 2048. Like a lot of strange looking numbers in Mobius the reason this is 2048 instead of 2000 or 2500 is because 2048 is an exact power of two. It is not necessary that this number be a power of two, 2500 would work just fine but programmers have this weird affection for powers of two. Just humor them.
There is rarely any need to change the default value of Drift Resync Frames, the one exception would be if you were using MIDI Slave Sync with an extremely jittery MIDI clock. If you feel that drift correction is happening too often, you can try increasing this number by 1000 until it stops happening. What is "too often"? A Mobius loop should be able to play at least a few times before drift correction. If you hear a drift correction bump every time the loop reaches the start point, then try raising the Drift Resync Frames. Please contact us if you have to do this, it may indicate a problem with Mobius or something unusual about your system.
It might be tempting to set Drift Resync Frames to a very small value thinking that you will get "tighter" synchronization. This is absolutely not recommended. A small amount of drift is perfectly normal, if you set the parameter too low you may end up doing a drift correction on every pass of the loop. The only reason this can be set lower than 2048 at all is to simulate extreme conditions for testing.
If you set the Drift Resync Frames parameter to a large value, greater than 10000, you may begin hearing gradual changes to the loop. If you are syncing with a drum machine or something with an strong rhythm, the Mobius loop may start to feel like it "drags" or "rushes" compared to the background rhythm. If you are recording non-rhythmic loops then drift not even be noticeable.
If you are using simple Track Sync and the master track did not use Host Sync, MIDI Slave Sync, or MIDI Master Sync then there will never be any drift correction. Tracks will always play in perfect sync forever.
If the master track did use any of the other sync modes, then tracks synced with the master track may need drift correction. The rule is: whenever a track has a drift correction applied, all of the other tracks that were synced to that track will also have the same amount of drift correction applied.
For example, assume that track 1 had Sync Source set to MIDI and all the other tracks had Sync Source set to Track. Track 1 is recorded and synced with the MIDI clock pulses coming from a drum machine. Tracks 2 and 3 are recorded with Track Sync so they are exactly the same size as track 1. Sometime later we decide that track 1 has drifted too far away from the MIDI clock pulses, and we to correct track 1 by moving the playback position 3028 frames backward because it was rushing.
Next we look for all tracks that were recorded using Track Sync We find tracks 2 and 3. Those two tracks will also have their playback position adjusted 3028 frames backward so that they continue to be in exact alignment with the master track.
As we mentioned before earlier, Dealign is a deliberate action by the user that causes the Mobius loop to go out of alignment with the external loop. Some of the ways to cause a dealign are:
Once a loop has been knocked out of alignment, it will remain that way until the user does something to change the alignment. Alignment is never corrected automatically like drift. To bring the loop back into proper alignment you must use the Realign or Mute Realign functions.
The only difference between the two realign functions is that Mute Realign will first perform an immediate unquantized Mute function, then do the realign. From the listeners perspective the loop that is out of alignment will suddenly stop, while the external loop (drum machine, host track, etc.) will continue playing. Then when the realignment point arrives the Mobius loop will be brought out of Mute mode and start playing aligned with the external loop.
In all but one case described below what happens during a realign is that the playback position of the Mobius loop is moved so that it matches the current playback position of the external loop. Typically realign is delayed until the external loop reaches its start point. This gives the listener some sense of closure from one of the loops before they are abruptly brought back into alignment. The timing of the realign can however be controlled in some cases with the Realign Time synchronization parameter which may have these values.
For most users it is recommended that you leave this at the default value of Start Point. Setting this to Next Bar or Next Beat will cause the realign to happen when the external loop reaches the next beat or bar pulse. Setting this to Now will cause the realign to happen as soon as the next sync pulse is received. For Host sync this will be the same as Next Beat but for MIDI and Out it will be on the next MIDI clock which will make it feel like it happens almost immediately.
For loops that were created with Track Sync the Realign Time parameter specifies the location in the master track where the realign will occur. When Realign Time is set to Now the realign will happen immediately. When Realign Time is set to Start Point the realign happens when the master track reaches its start point.
The other two values are a bit confusing since Mobius tracks don't have beats and bars. If Realign Time is set to Next Bar the realign will happen when the master track reaches the beginning of the next loop cycle. When set to Next Beat the realign happens when the master track reaches the start of the next subcycle.
Loops that are the MIDI sync master can perform a realign in one of two ways determined by the Out Sync Realign Action parameter. The parameter may have these values.
Restart Loop is the default. It will cause the playback position of the Mobius loop to be adjusted to bring it into alignment with the external loop. This is how realign works in all other sync modes.
This is a special realign mode that is only available when using MIDI Master Sync. Rather than making adjustments to the Mobius loop to bring it into sync with the timer pulses, we will tell the external device to restart itself to bring it into alignment with the Mobius loop.
What happens is that a MIDI Start message will be sent exactly when the Mobius loop reaches its start point. This should cause the drum machine or sequencer to restart its pattern at the same time. The Mobius loop and the external loop will then be both aligned at their start points.
Note that when using this special mode, the realign only happens when the Mobius loop reaches its start point. This means that the Realign Time parameter is ignored.
This option is essentially the same as using the MIDI Start or Mute MIDI Start functions as described in the Realign Alternatives section.
For the track that is the MIDI Sync Master there are two additional functions that can be used to bring the Mobius loop and the external loop back into alignment. These can be used instead of the Realign and Mute Realign functions.
The MIDI Start function will be automatically quantized to the Mobius loop start point, then it will send a MIDI Start message to the drum machine, sequencer or other device being slaved to Mobius. This should cause the slave device to restart its pattern. The Mobius loop and the external loop will now be both aligned at their start points and begin playing in alignment.
The Mute MIDI Start function behaves the same way, but first it does an unquantized Mute function to silence the Mobius loop, then when the start point is reached it unmutes the Mobius loop at the same time as it sends the MIDI Start message.
The effect is essentially the same as Out Sync Realign Action = Send MIDI Start. You might prefer this though if you are using Out Sync Manual Start because you won't need to reserve another footswitch for the Realign function. Since you will already have a footswitch assigned to the MIDI Start function to get the slave loop started at the very beginning of the performance, you can use the same footswitch to realign the slave loop later.
The Sync Start Point will make the Mobius loop start point match the external loop start point. When the function is executed it schedules a pending Start Point function and waits for the external loop start point. When the pulse representing the external loop start point is received, it executes the Start Point function.
This is arguably not a "realign" since we're not changing the positions of either the Mobius loop or the external loop. Rather we are saying that we want to make the current dealignment permanent. Once Sync Start Point is done, a Realign function will restore the Mobius loop and the external loop to the positions they had after the Sync Start Point, this may be different than the alignment the loops had when they were first recorded.