|2.5.3||New Display Components|
|2.5.4||New Script Variables|
|3.1||Upgrading to 1.24|
|3.2||Upgrading 1.16 (or earlier) to 1.18|
|4.1||Mobius VST Plugin|
|6.2||Using The Keyboard|
|6.4||The Status Area|
|6.4.1||Configuring the Status Area|
|8||Saving and Loading|
|9.1||Unimplemented EDP Functions|
|9.2||Supported EDP Functions|
|10.1||Unimplemented EDP Parameters|
|10.2||Supported EDP Parameters|
|11.3||Track Binding Scope|
|11.4||Group Binding Scope|
|16.2.1||Speed Sync Adjust|
|16.2.2||Unrounded Sync Adjust|
|16.2.3||Controlling Host Tempo|
|16.3||Sync=Out User Start|
|16.10||Missing Synchronization Features|
|16.10.1||Auto Start Point|
|16.10.2||MIDI Sync Indicators|
|18.5||External EDP Control|
|19.1.4||Save Project Template|
Welcome to Mobius! Mobius is a tool for the real-time creation and manipulation of audio loops. It was inspired by the venerable Gibson Echoplex Digital Pro (EDP) with Loop IV software. Mobius implements much of the Loop IV functionality, removes some limitations, and adds many new features. Because the EDP is an extremely complex device, I do not have the resources at this time to write a comprehensive user's manual. Instead, I will focus on those aspects of Mobius that are different from the EDP. It is strongly recommended that you either already be familiar with the EDP, or that you study the EDP manual to fully understand what Mobius does.
The EDP manual is available here.
If you are new to looping, Loopers Delight is the best place to explore and learn.
If you find problems, I kindly ask that you report them. The best place to report bugs is the Yahoo discussion group. You can also email me bug reports at email@example.com. Even if you don't find any problems feel free to send me a note letting me know what you liked or didn't like.
If you are a new user, proceed directly to the Getting Started section.
Thank you for helping me make Mobius better! I hope you enjoy it as much as I do.
This section is intended for users that already have experience with an earlier release of Mobius. If you are a new user, proceed directly to the Getting Started section.
The major new features in this release are support for multi-channel audio interfaces, and more options for canceling mute mode.
The standalone version of Mobius can now use all of the channels available on the selected audio interface, previous releases could only use the first two channels as a stereo pair. Channels are grouped into stereo pairs called "ports". For example, if an audio interface has 8 input and output jacks, there will be 4 stereo input and output ports.
Ports are selected in the Track Setup dialog. The selectors labeled ASIO Input Port and ASIO Output Port are used to select the port numbers, each track may have a different input and output port. See the Using Setups for more information.
The Mute Cancel feature first introduced in release 1.26 has been significantly enhanced. Several new cancel modes are now available including Never and Custom. See the section Mute Cancel for more information.
The Slip Forward and Slip Backward can be used to cause the playback position to immediately jump forward or backward by a selectable interval. See the Slip Functions section for more information.
In addition the following bugs have been fixed:
The major new features for this release are concurrent scripts, mono tracks, improved pitch shifting.
Concurrent scripts means that you can have more than one script running in a track at the same time. Previously if you attempted to use a script when there was another one waiting for an event, the first script would be canceled. This will make scripts behave more like built-in functions, and should resolve a number of reported problems related to scripting.
Most of the clicking noises during pitch shifting have been eliminated, though you may still hear some if you are using a keyboard controller and are changing pitches very rapidly (about 16th notes at 120 BPM). There is still however a significant amount of latency added by the pitch shifter, changes in pitch will sound as if they are delayed by about 1/10 second.
Mono track mode allows a track to have a single mono input channel that is then panned in a stereo output field. This is useful for instruments that are inheriently mono, such as accoustic instruments that are not passed through a stereo effects device. Previously such devices would be panned hard left or hard right and could not be moved. See the Using Setups section for more.
MIDI bindings to select Setups, Presets, and MIDI Configurations have been simplified and now work like bindings for functions and controls. Bindings for all configuration objects are now done in the MIDI Control dialog. A third panel labled Configuration contains the names of each configuration object, prefixed by the type of that object (Preset, Setup, or MIDI). This allows you to use MIDI note and control change events to select configuration objects, previously you were limited to using program change events.
To help position display components in the UI, when the shift key is helf down, the components will be erased and only their borders will be drawn. This is especially helpful for components that are often invisible such as the Tempo Display or the Message Area.
The Preset Alert display component has replaced with the Messages component. The preset alert formerly would popup a window whenever the preset changed, because this window would temporarily take keyboard focus, the keyboard would appear to freeze. Presets changes are now displayed in a normal UI component in the main Mobius window, keyboard focus does not change. The component is called Messages and may be selected in the Dispaly Components dialog.
The Restore on Reset parameter has been added to the Track Setups. This parameter lets you define which track parameters will be changed to the values defined in the setup whenever the Reset function is used. If no parameters are selected, the track will stay in its current state after a reset (though all audio content will be lost).
In addition the following bugs have been fixed:
The major new feature in this release is Setups. Setups provide a mechanism to set the initial operating parameters for all tracks including controls like output level and pan, as well as assignments like presets and groups. You can think of it like a "global preset" for quickly configuring the tracks for a particular performance. See Using Setups for details.
NOTE: The default project template concept used in previous releases to assign VST ports and other track parameters is no longer supported. When you upgrade to 1.27 the default project will be converted into a setup with the name "Default Setup". After this conversion the default project will not be used, and you may delete the file "init.mob" in the Mobius installation directory.
Release 1.26 changed the behavior of the functions that control playback direction, rate and pitch so that they do not cancel Mute mode. There were a few users however that preferred the old behavior where these functions will always cancel Mute mode. This behavior may now be controlled with the Mute Cancel parameter. When this parameter is set to Major Modes only functions that change the mode will cancel Mute (the 1.26 behavior). If this is set to Always any function that modifies the loop will cancel mute mode, including the Reverse, Speed, Rate, and Pitch functions (pre 1.26 behavior).
In addition the following bugs have been fixed:
This release includes a number of changes related to the scheduling of functions that affect how the loop is played: Reverse, Half Speed, Rate Shift, and Pitch Shift.
When quantizing, these functions (along with Overdub) may now be stacked on the same quantization point, previously they would be scheduled on successive quantization points. For example, this allows you to enter Reverse and Half Speed mode at exactly the same time by using quantization and calling both functions before the quantization point.
When using the Pitch Shift and Rate Shift functions, we will first look for an existing function event of that type scheduled at the next quantization point. If we find one, we modify the pitch or rate value accordingly rather than scheduling another event. This can be used with the incremental functions like Rate Up and Rate Down to scroll to any desired rate. The last rate selected before the quantization point will be used.
Reverse, Half Speed, Rate Shift, and Pitch Shift functions will now no longer take you out of Mute mode. This can be used to make dramatic changes to the way the loop is played without each change being individually audible.
Finally, the Reverse, Rate, and Pitch functions now have transfer modes in the preset. These modes control how the pitch, rate, and direction are carried forward into the next loop when using one of the loop switching functions. The transfer modes for each function type have the following values:
Until now, Mobius has operated as if the transfer mode was Follow for all function types.
The following new functions have been added:
In addition the features described in this section, see the README file for more information on the bugs fixed in this release.
The most significant new function is Bounce Recording which allows you to capture the output of several tracks, mix them together, and copy the result into an empty track which can then be triggered and manipulated like any other loop.
The new Solo function behaves similar to a solo button on a mixing console. When first used all tracks other than the active track are unmuted. When used a second time, the mute state of all tracks is restored to what it was before the first Solo.
The new Global Mute function mutes all tracks that are currently playing, but does not unmute any tracks that are currently muted. If you use Global Mute a second time, it will restore the previous track mutes, unmuting only those tracks that were playing previously. If you do a Global Mute, then start changing the mute state of tracks manually, global mute mode is canceled.
MIDI control has also been improved. You are now able to store the MIDI channel with a function or controller binding rather than requiring that function events all come in on the same channel. Further, there are now binding scopes for each track and group allowing you to make a MIDI binding to any function or control, and have that binding performed in only one track or group of tracks. See the MIDI Control section for more details.
MIDI device selection has been improved. You may now select any number of input and output devices, and you may select one device to be used a "MIDI through". This allows Mobius to respond to commands sent by different devices that are not connected in a MIDI through chain, and send MIDI synchronization messages to more than one device. If a MIDI through device is selected, all events received from the MIDI input devices will be echoed immediately to the through device. See the MIDI Devices section for more.
Finally a "technology preview" of the Pitch Shifting function is available for the curious. Note though that this is still in development and it has many problems. It is provided only to give you and idea for how pitch shifting will eventually work within Mobius.
The major new feature in this release is Rate Shifting. This allows you to change the playback and recording rate of the loop, similar to the original Half Speed function, but with a full range of rates that correspond to the notes of the chromatic scale.
See the Rate Shifting section for more information.
The major new feature in this release is track groups. Track groups are similar to the existing focus lock feature but more powerful. When tracks are assigned to groups, a function performed in one track can automatically be performed in all other tracks in the same group. MIDI continous controllers may also be bound to a new set of track group controls so that the output level, feedback, and pan of all tracks in a group may be set at the same time.
The way MIDI continuous controllers are assigned has been redesigned and a new concept called Controls has been introduced. A Control is a mobius parameter that may have a large range of values. Controls are bound to MIDI events in the MIDI Control dialog similar to the way functions are bound. All MIDI binding is now done in the MIDI Control dialog and stored in the mobius.xml file, there is no more Tracks dialog that stored MIDI bindings in the project files which was a source of confusion.
If you had previously assigned track controllers in the initial project, these will be automaticaly converted to the new format, but only for the default project. If you have created your own named projects that contain track controller bindings, these cannot be converted to the new format. Send me mail if you need help with the conversion.
A new global parameter named Group and Focus Lock Functions allows you to specify the functions that will obey focus lock and track groups. For example, you may want the Next Loop function to obey track groups, but not the Record or Overdub functions.
See the section Controlling Tracks for more information.
The major new feature in this release is continuous feedback where changes to the feedback level are recorded into the next layer as it is recorded. This differs from the previous behavior where feedback was only applied once for the entire layer when you reached the end of the loop and created a new layer. By allowing feedback to vary continuously, you can "sculpt" the material being copied into the next layer.
Note though that a side effect of continuous feedback is that you can no longer use the "Save Project Layers" option to save just the new material overdubbed in each layer to a file, the layer files will contain all of the material copied from the previous layers as well. If you prefer the old behavior, you can disable layer flattening by checking the new "No Layer Flattening" preset parameter.
See the section Controlling Feedback for full details.
The interface modes Expert, Stutter, Replace, and Flip are now supported. See the Interface Modes section for details.
A number of changes to the scripting language have been made. If you have been writing scripts they may not behave as they did in an earlier release, especially if you have been using Wait statements. Please read the new scripting manual, or post a message to the Yahoo group if you are having a problem using an old script with this release.
This section is intended for users that already have experience with an earlier release of Mobius. If you are a new user, proceed directly to the Getting Started section.
For most upgrades, you may simply install the new version of Mobius into the same directory as the previous version. All of the configuration performed in the previous version will be carried over to the new version.
Occasionally, a release may introduce changes to the user interface that require modifications to the UI configuration. Since we will not overwrite an existing UI configuration when upgrading, what you see in the Mobius UI may not match what is described in the manual if you have made changes to the UI configuration.
If you would like to start over with a UI configuration that matches what is in the manual, before installing the new version rename the file ui.xml in the Mobius installation directory to ui.save. You will lose changes you have made to the button list, display components, and color palette. All other non-UI configuration such as MIDI and audio device selection will be preserved.
You may also keep your current UI configuration and manually add the new components. After the install, bring up Mobius and select the Display Components item from the Configuration menu. There may be new components on the left side of the Components selector that may now be displayed. See the section Configuring the Status Area for more information.
Note that when selecting a display component that has never been selected before, it will usually be drawn in the upper left corner of the Mobius status area. You will normally want to move this to another location by holding down the Shift key, then clicking and dragging the left mouse button over the new component. If you already have a component near the upper left corner, the new component may be hidden and you will need to move the existing components before the new component is visible and can be moved.
Some components, such as Minor Modes and Synchronization are not always visible. The Minor Modes will only be visible if the Overdub, Reverse, or Half-Speed modes are active. The Synchronization component (displays the MIDI tempo) will only be visible if MIDI clocks are being received. Before you can move these components you will have to make them visible.
Release 1.24 made major changes to the way MIDI events are bound to functions and controls. Among the changes are:
Mobius will attempt to upgrade your current MIDI function and control bindings to the new format. There is one case however where this may fail. If you currently have the Mobius global channel set to "Omni" Mobius will assume that all of your bindings will use MIDI channel 1. If you have been using Omni, but sending events on a channel other than 1, you will have to modify your MIDI bindings after the upgrade to set the desired channels. If all bindings will use the same channel, the easiest thing to do run the old version of Mobius before you install the new one, and select this channel as the global channel in the MIDI Control dialog. Then after you install the upgrade, this should channel should be automatically assigned to all of your bindings. If however you are using events on several channels, you will have to manually edit each MIDI binding after the upgrade and assign the desired channel.
There will be no upgrade path for the "track channel" feature, because I don't think anyone actually used it. If you do, post a message to the Yahoo group or send me private email and we'll discuss how to proceed.
The External EDP feature has been changed such that you no longer select a MIDI output device. Instead you must first select a general purpose MIDI Through device. See the MIDI Control section for details on how to select a through device.
There is a new color in the palette used in the loop meter when the track is muted. Releases prior to 1.16 do not have this color defined in the palette and since the UI configuration is not replaced on an upgrade, the color will default to bright blue and will not appear in the Palette window. To make this color appear so that it can be changed, you will need to edit the ui.xml file contained in the installation directory.
Locate the <Palette> element, and add the following line somewhere inside it:
<PaletteColor name='muteMeter' key='613' rgb='16711680'/>
Mobius must not be running when you make this change. The next time you start, you should see "Mute Meter" appear in the color palette.
After launching Mobius, you should proceed immediately to the Configuration menu and select the Audio Devices item. Here you must select an input and output device.
You should select an ASIO device if one is available for your sound card. This will provide the lowest possible latency and make Mobius feel more responsive.
NOTE: The standalone version of Mobius cannot currently access all of the channels in a multi-channel audio device, it can only use the first two channels. If you need access to all channels, you will have to run Mobius as a VST plugin, and route device channels to Mobius tracks in the host application.
NOTE: There is an ASIO device on my system named Adobe Default Windows Sound that does not appear to work very well. If you have this, I don't recommend that you use it, in my experience the device advertises extremely high latency values.
If you do not have ASIO devices, you may select either MME or DirectSound devices. These will both have higher latency than ASIO. Mobius compensates for latency so it is still quite usable, though you will occasionally hear "skips" in audio playback after certain events.
At the bottom of the dialog you will see a field labeled Suggested Latency Milliseconds which will default to 10 for ASIO devices and 100 for other devices. This is the latency we request when opening the device, though the device may not obey it. You may experiment with lowering this value, but if it is too low you may have audible "clicks" during playback and have "dropouts" during recording.
The primary factors that determine what the lowest latency can be are the operating system, CPU speed, and sound card. A relatively recent machine (4 years or less) running Windows XP or 2000 will perform best. Windows NT is the worst, with Windows 98 somewhere in between. DirectSound devices may allow lower latencies than MME devices, though not dramatically so.
The default latencies are average for a modern machine. If you are running NT, you probably need to increase MME/DirectSound suggested latency to 200 or more. ASIO devices are not usually sensitive to the operating system, so 10 is a reasonable starting point for all.
Below the suggested latency field are fields labeled Override Input Latency Frames and Override Output Latency Frames. Leave these alone for now. If you feel that overdubs aren't being aligned properly, you will need to adjust how Mobius performs latency compensation by setting these values. See Latency Calibration for more information. You normally don't have to set these values when using ASIO devices.
You should next proceed to the Configuration menu and select the MIDI Devices item. A dialog will appear allowing you to select an input and output device. If you want to control Mobius with a MIDI controller such as a foot switch or expression pedal, you will need to select an input device.
You only need to select an output device if you want Mobius to send synchronization messages.
Once you have devices configured, send an audio signal to your sound card. You should see a narrow horizontal rectangle in the center of the screen flickering according to the level of the signal. This is the Audio Meter. If you don't see any movement in the audio meter, check your connections or try a different audio device.
When Mobius is receiving audio, press the R key to begin recording. Play something, then press R again to stop the recording and begin looping. Mobius is not smart about compressing signals to avoid digital overload, so if you notice distortion, lower the signal level.
NOTE:One common error when setting up a software looper is having the audio output of the looper feed back into the input. For example, it is common to have several sound sources connected to a mixer, then have the mixer output connected to the input of the sound card. If the output of the sound card is also connected to the mixer, you can have feedback. When Mobius is overdubbing, anything that is currently playing may then be included in the overdub (with a slight delay). The loop will become increasingly louder and sound "metallic".
If the output of the sound card is connected directly to the speakers this should not be a problem. If you are using a mixer, you will have to find a way to exclude the channel containing the sound card output from the "bus" being sent to the sound card input. If you have a Mackie, Mute Alt 3-4 combined with Control Room Source buttons can accomplish this nicely.
If you've created a loop and it plays back without distortion then you're ready to proceed. If not, drop me a note and we'll try to figure out what's happening.
Mobius may be run either standalone or as a VST plugin. Plugins are physically DLL files, the name of the Mobius plugin DLL is, surprisingly, mobius.dll and may be found in the installation directory (usually c:\Program Files\Mobius).
If your VST host application supports more than one plugin directory (many do not) configure it to include the Mobius installation directory. If the host allows only a single directory, you will need to copy Mobius.dll into that directory. One common convention is to use c:\Program Files\VstPlugins as a shared plugin directory though that is not always the case. Look to see which directory the VST host is using before copying Mobius.dll. You only need to copy the one Mobius.dll file, leave everything else in the Mobius installation directory. The Mobius installation program will automatically copy Mobius.dll to c:\Program Files\VstPlugins if it exists, so if that is the directory you normally use for plugins, you should not need to do any further copying.
After copying the DLL or adding Mobius to the host's search path, you may need to ask the host to "rescan" its plugin directories. Some hosts may do an automatic rescan automatically each time they are started, others do not.
Note that unlike most VST plugins, Mobius opens two windows. The first is a small window containing a blue oval that is under control of the VST host, this is called the VST editor window. The second is the main Mobius window. I wanted more control over the main window, such as the ability to resize it after changing the display configuration, and giving it a menu bar. You cannot resize a VST editor window, or give it a menu bar.
The VST editor window will contain UI components that the host creates, often there is one to select a "preset". These components are not currently recognized by Mobius. You must do all of your interaction in the main Mobius window. If you close the main window, you can open it again by clicking on the blue oval in the VST editor window.
Audio devices selected for Mobius in standalone mode will not be opened when running as a VST. The VST host must open the audio devices and route them to Mobius.
Mobius normally receives MIDI events directly from the VST host so it is not usually necessary to configure MIDI input or output devices if all you use is the VST plugin. See MIDI Devices for information on some special cases where Mobius may need to open its own MIDI devices.
The Monitor Audio Input global parameter is usually checked when running as a VST. This allows you to monitor the input signal being sent to Mobius which may have passed through other plugins. See the Global Parameters section for more information. When input monitoring is turned on, you should disable any monitoring you may be doing with an external mixer or with the sound card. If not, you may hear a slight "flanging" sound because the signal passing through Mobius will be delayed slightly from the signal being sent to the sound card. Because of latency, it is really only practical to enable input monitoring if you are using ASIO drivers.
If you are using a VST host that displays more than one input and output port for the plugin, you may assign each Mobius track to a different port. Hosts that expose multiple ports include Bidule, Audio Mulch, Energy XT, and Live.
Assigning tracks to ports provides several useful performance options, such as having some tracks take input from a soft-synth rather than live audio. You may also insert a different effects plugin after the output of each track, making each track sound different even though they are driven by the same input signal.
The plugin provides 8 stereo input ports and 8 stereo output ports. VST ports are assigned as part of a Track Setup see the Using Setups section for details.
Mobius uses MIDI devices in three ways:
Mobius has two different operating modes: as a standalone application, and as a VST plugin. Each mode has different requirements for MIDI devices.
In standalone mode you almost always select at least one input device so that Mobius may be controlled, usually by a footswitch. You may also select one or more output devices if you want to use the external synchronization features to control a drum machine. Selecting a through device is uncommon, but may be used in cases where the MIDI input contains commands for Mobius and one or more other devices that can receive them from the through device.
In VST mode, you often do not need to open any MIDI devices, instead the VST host opens all of the devices. Mobius receives MIDI events from the VST host and does not care which device they came from. If you want to use external synchronization however, it will be necessary to have Mobius open one or more output devices even when running as a plugin. This is because most VST hosts do not recognize MIDI clocks generated by a plugin. Selecting a through device in a VST plugin is uncommon but provided for advanced routing.
NOTE: When running as a VST plugin, it is very important that you do not let Mobius open any of the same MIDI devices that the VST host is opening. This can cause conflicts since neither Mobius or the host knows the other has already opened the devices, which can cause the VST host to crash when you open and then close the Mobius plugin. It is usually safe to let Mobius and the host open the same MIDI Yoke device, but not a hardware MIDI device.
Because there are different device requirements for standalone and VST modes, Mobius allows you to specify two different sets of devices. When you open the MIDI Devices... dialog, there will be two columns of device selection panels. The column on the left selects devices for standalone mode, and the column on the right for VST mode.
You may select any number of input devices, any number of output devices, but only one through device. If you select a through device, all events received on all input devices will be passed immediately to the through device. If you select more than one input device, Mobius will receive commands from all devices. If you select more than one output device, MIDI synchronization messages will be sent to all of them at exactly the same time.
The through device may be the same as one of the output devices.
Before diving into the details, let's review a few fundamental EDP concepts and define some extended Mobius concepts.
The Mobius UI is functional though a bit crude. It is built upon a UI toolkit that I'm developing because MFC and ATL make me ill. Another goal is that the toolkit be machine independent to assist in porting to the Mac though that won't happen for awhile. Don't worry if you don't understand what any of this means, just be aware that the Mobius UI will feel a bit different and look rather plain compared to other Windows applications. The UI will continue to improve, I've just been focusing more on the looping engine than flashy graphics.
The Mobius window is divided into three areas. The button area at the top is where the configurable function buttons are arranged. The status area in the center contains several components that display the status of the loop and the current parameters. The track area at the bottom has controls for each of the tracks.
The button area may contain any number of function buttons. All of the EDP "Direct MIDI" functions, and all of the extended Mobius functions may be assigned a button. To perform a function assigned to a button, simply click on the button. If the function name begins with "Sustain" this is a sustained function, the function will be active as long as the mouse button is pressed.
To configure buttons, pull down the Configuration menu and select the Buttons... item. A dialog box appears with two large panels containing function names. The panel on the right contains the functions that will have buttons in the UI, the panel on the left contains the functions without buttons. In the center is a column of buttons that move functions between the panels. Function buttons will be displayed in the order in which they appear in the right panel.
To add a button, select a function in the left panel by clicking on it, then click on the button labeled >. To remove a button, select a function in the right panel and click on the button labeled <. The button labeled >> will move all of the functions to the right panel, and oddly enough the button labeled << will move them all to the left.
I personally don't find the >> button very useful, but hey, you be the judge. Mobius isn't smart about resizing the window if the number of buttons starts to crowd the other areas, so if the track area is overlaying part of the status area, make the window taller. Mobius will remember the window size in the UI configuration file. If you want to control Mobius exclusively from the keyboard or MIDI, then you may remove all the buttons to reduce display clutter.
Functions may also be activated by pressing keys on the computer keyboard. To bind buttons to keys, pull down the Configuration menu and select the Keyboard Control... item.
The panel on the left contains a list of all of the functions, with the current key binding displayed along the right margin. To change a key binding, highlight a function name by clicking on it. The current key binding, if any, will be displayed in a text box to the right of the function list.
To change the binding you may type the name of the key in the text box, though it is much easier to enable key capture. Enable key capture by clicking the checkbox under the test field. Now, any key you press will be entered into the text field and bound to the function.
You may also assign functions to keys combined with the Shift, Control, and Alt keys. For example "C" and "Shift-C" may reference different functions. More than one modifier may be used, for example "Ctrl-Shift-C", "Ctrl-Shift-Alt-C". Go nuts.
The "Caps Lock" key is not recognized as a shift modifier and cannot be bound. The "Print Screen" and "Num Lock" keys cannot be bound. The right "Windows" key may be bound, but cannot be used as a key modifier. The left "Windows" key may also be bound but I don't recommend it since Windows will popup the start menu whenever this is pressed.
The keys in the number pad will have different names depending on the state of the "Num Lock" key. If Num Lock is down, the keys will appear as "Num 0", "Num 1", etc. If Num Lock is up, the keys will be duplicates of the arrow and page keys. Keeping Num Lock down will provide you with more unique keys to bind. The keys in the number pad are different than the number keys in the row above the letter keys. For example, "1" and "Num 1" may be bound to different functions.
If the key is bound to a sustained function, the function is active for as long as the key is pressed.
A window containing a summary of all the key bindings may be displayed by pulling down the Help menu and selecting the Key Bindings item. This is what Windows calls a modeless dialog meaning that you can leave it open while you return to the main Mobius window.
A track in Mobius is like stereo EDP. Each of the tracks has independent feedback and output levels and may be set to a different preset. You may build up a loop in one track, then switch to another track and build up another loop. Tracks play simultaneously.
Each track is represented by a column of controls arranged in a row at the bottom of the display. One track is considered the active track and will be displayed with a white border. You select a track by clicking on or near the knobs for that track, or by using the left and right arrow keys. The active track has input focus meaning that it will respond to functions initiated by buttons, the keyboard, or by MIDI.
Most functions will only be performed in the active track. A few functions, known as global functions, will affect all tracks. For example, a General Reset performed in one track will not affect other tracks, but a Global Reset will perform a General Reset in all tracks.
The small round button at the top of each track column is the Focus Lock Button which will turn red when clicked. When focus lock is on, it means that the track will respond to button, keyboard, or MIDI events even if it is not the active track. This can be used to create or modify several tracks at the same time. A more powerful option for controlling multiple tracks is described in the Track Groups section.
Three circular knobs control feedback, output level, and pan position. To change the value of a knob, click and hold the mouse inside the knob and drag the mouse up or down or left and right. I recommend configuring two MIDI pedals to control output and feedback instead. If you are among the legion of FCB1010 owners, you will want to do this.
The first rectangle at the bottom of each track column displays the progress of loop playing in this track. It is a smaller version of the loop meter in the main status area. The second rectangle is the output level meter, it will fill with color according to the strength of the audio in this track.
At the bottom of the track strip is some empty space in which the track group will be displayed when one is assigned. See the section Controlling Tracks for more information on track groups.
See the section Using Presets for more information on selecting presets for each track.
See the section Using Setups for more information on initializing all tracks.
NOTE:If you have several loud tracks playing simultaneously, it is easy to cause digital clipping, which sounds very nasty. Mobius is not smart about compression. If you experience this, turn down the output level in one or more tracks.
The status area contains several components that help you understand what is happening in the active track.
On the far left is a column of rectangles called the Loop List that represent the number of loops in the track This is a visual representation of the parameter the EDP calls "MoreLoops". A track may have up to 8 loops, but only one of them will be audible. The top rectangle represents the first loop, the active loop will be highlighted.
Next to the loop rectangles are the Dynamic Parameters which display a selection of parameters from the current preset. You may change dynamic parameters while Mobius is running, but these changes are not stored in the preset. They will be lost when you exit Mobius or select a different preset. To make permanent changes to the presets see the Using Presets section.
One of the dynamic parameters is considered the active parameter and will have a white rectangle around its value. Using the default key bindings, you can set the active parameter using the 8 (up) and 2 (down) keys on the number pad. Be sure that Num Lock is on. To change the active parameter value use the 4 (left) and 6 (right) keys on the number pad. Use the 5 key on the number pad to restore the original value stored in the preset.
To the right of the dynamic parameters are the Counter, Audio Meter and Loop Meter. The Counter is arranged somewhat like the LEDs on the EDP. The large numbers in the center show the loop position in seconds. The small number on the left is the number of the current loop. The numbers on the right indicate the current cycle and the total number of cycles in the loop.
When MIDI clock synchronization is being received, the tempo of the MIDI clocks will be displayed above the counter.
The Audio Meter fills with color in response to the strength of the signal present in the selected audio input device.
The Loop Meter fills with color to show the playback position within the loop. Under the meter, white markers will appear wherever a quantized event will be performed. Above the name of the event will be a small white triangle. If the triangle is pointing up, the event will happen in the current loop at that position. If the triangle is pointing to the right (or left if going in reverse), the event will happen in a later repetition of the loop.
When a user initiates a function, Mobius schedules one or more events to perform the operations required by that function at the right time. Most functions, such as starting a multiply, schedule a single event. Ending a multiply is an example of a complex function, it will schedule both a Record End event to stop recording when Round Mode is off, and a Multiply End event to finally end multiply mode. There are also many other events that are not displayed related to playback transitions and latency adjustments.
To the right of the loop meter is a set of three adjacent circles called the Blinkers. The first circle flashes each time playback reaches a sub-cycle boundary, the second circle flashes on cycle boundaries, and the third circle flashes on the loop boundary.
To the right of the blinkers is a word indicating the current mode. When the loop is in reset, "Reset" is displayed, during multiply mode "Multiply" is displayed etc.
Above the blinkers and the mode may be text that indicates that the overdub, reverse, or half speed modes are active. These are referred to as minor modes and will remain active even when the major mode changes.
Across the top of the status area is the Layer List, this is a horizontal row of yellow rectangles representing the layers in the current loop. A layer is created whenever you make a modification to the loop during playback, or whenever a loop plays to the end with feedback less than 100%. You won't see the layer list until you complete the first recording. When you use the Undo function, you will be returned to the previous layer, if there are no more layers to undo, you will enter Reset mode.
Like the EDP, Mobius will not create a new layer unless there was an audible or structural change to the loop. So if for example you leave overdub on, but don't play anything new, no new layer will be created.
If you don't happen to like the layout of the status area, you can remove components you don't want, and change their position in the window.
To change the position of a component, move the mouse over it then press and hold the Shift key while pressing and holding the left mouse button. You can now drag the component to a new location. To assist in moving components, when the shift key is pressed, the components will be erased and only their border is drawn. This is is useful for components such as Tempo Display that are normally invisible.
To add or remove components, pull down the Configuration menu and select the Display Components item. A dialog appears with four selection controls. The controls behave like the controls for displaying buttons described in the Using Buttons section. Select the items you want displayed in the left panel and click the > button, or select the items you want removed in the right panel and click the < button.
The first selector labeled Components determines which major components will be displayed in the status area.
The second selector labeled Dynamic Parameters determines which preset parameters will be displayed. The parameters will be displayed in the order they are selected in the right box, so if you want them in a particular order, clear the selection with the << button, and add them one at a time in the desired order. The parameters will only be displayed if you also have Parameters selected in the Components selector at the top.
The third selector labeled Main Track Controls determines which track knobs will be displayed in the common track control strip which is normally on the right side of the Mobius window. This will be visible only if Track Controls is selected in the Components selector.
The fourth selector labeled Track Strip Controls determines which track knobs will be displayed in the track strip at the bottom of the Mobius window. The same sub-components are available for both the track strip and the common track strip. If you like large cluttered windows, you can disable the shared Track Controls component and duplicate all the track knobs in the bottom track strip.
NOTE: There are some display bugs that may cause the display to draw incorrectly after the Track Strip Controls list is modified. You should restart Mobius whenever this list is changed.
A preset is a named collection of parameter values. On any given track, one preset is active and each track may have a different active preset. You may activate a preset by selecting an item from the Presets Menu, by selecting a preset within the Presets configuration dialog, or by sending a MIDI program change message. When you select a preset, the preset name will be displayed briefly in a popup window over the main Mobius window.
To define a preset, pull down the Configuration menu and select the Presets... item. At the top of the dialog is a row labeled Selected Preset containing a pull down selection list and a pair of buttons. When you select a preset from the list, the values of the other fields in the dialog change to reflect the values stored in that preset. The preset is also made the active preset for the active track.
To define a new preset, click the New button. A copy of the currently selected preset will be made and added to the list. The preset will be given an initial name of the form Preset n where n is a number. Unless you like ambiguously named presets, you will want to change the generated name. The second row labeled Name has a text field where you may enter a name of your own. Note that this name will not be shown in the pull down list until you save the preset.
Under the name field is a row labeled Program Change containing a text box where you may enter a number from 1 to 128, another pulldown menu labeled Channel where you select a channel number from 1 to 16. When Mobius receives a MIDI program change with this channel and number, the preset will be selected. If the program change field is empty, this preset cannot be selected with MIDI.
Under the program change field are a variety of other fields for the preset parameters. These are described in more detail in the Parameters section. When you have made the desired changes, click the Save button. If you wish to discard the changes, click the Cancel button.
After having created one or more presets, you may delete a preset you no longer want by selecting it and pressing the Delete button. The next preset in the list is then automatically selected.
A track setup is a named collection of track parameter values. They are used to define an initial state for all tracks before recording, and also define the state the track each will return to when it is reset. The following parameters may be specified for each track:
In addition you may designate which track should be the active track after a global reset.
You may have several track setups designed for different performances. Setups may be selected from the Track Setups... menu or with a MIDI program change.
When a setup is selected, all tracks that are currently empty will be modified to have the parameters defined in the setup. Tracks that are not empty will not be modified. When a track is reset with either the Reset or GlobalReset functions, it will be modified to have the parameters defined in the setup if they have been changed.
If all tracks are empty when a setup is selected, the active track is also changed to the one specified in the setup.
A common application of track setups is to configure a mix using different Output Level and Pan values for each track.
Once a track has been reset to the state defined in the setup, if you use the Reset function again in an individual track to toggle between the state defined in the setup and the default track state. In the default track state, most controls are at 100%, Secondary Feedback is at 0%, Pan is centered, Focus Lock is off, and there is no group assignment.
If the Mono option is checked, the track is configured to assume that there is a single channel input signal that is then panned between the two output channels. This is a "true" pan, unlike the usual pan that is simply controls the levels of the left and right channels. Note though that there are still 2 input channels for every track. Each channel will be combined before panning.
At the bottom of the dialog is a multi-select field labeled Restore After Reset. The field contians the names of some track parameters that are stored in the setup. When one of these parameters is highlighed, its value will be restored to the value set in the setup after the Reset function is used.
Some users like to have the track return to an initial state after a Reset, others prefer it to be left in its current state. This parameter gives you control over which track parameters will be changed. If no parameters are selected, the track will stay in its current state after a reset (though all audio content will be lost). Many users prefer to have the track level controls (Input Level, Output Level, Feedback, Pan) return to the values defined in the setup, but want focus lock and group assignments to stay the same.
The ASIO Input Port and ASIO Output Port selectors are used to select which port of the audio interface is to be used as the input and output of the track, when Mobius is running standalone. The number of ports is determined by your audio interface. Ports correspond to a stereo pair of channels on the audio interface. If for example your audio interface has 8 input jacks, there will be 4 input ports. Port selection is only available if you are using an ASIO driver for the audio interface.
The VST Input Port and VST Output Port selectors are used to select ports when Mobius is running as a VST plugin. Each port corresponds to a stereo pair of "pins" on the plugin. Some hosts will display pins visually and allow you to draw lines to connect them. Other hosts may display the port names in a menu. Not all hosts support plugins that have more than one pair of input and output pins.
Previous sections have described ways to bind Mobius functions to computer keyboard keys and UI buttons. Functions may also be bound to MIDI program change, note, or control change events. The behavior of the function is always the same, regardless of how it was initiated.
Besides functions, Mobius also supports a set of Controls which may be given MIDI bindings. Controls are used for parameters whose values vary over a large range, the following table lists the available controls.
Controls are almost always bound to MIDI continuous controller numbers, though it is also possible to bind them to MIDI notes. When using note bindings, the velocity of the note determines the controller value.
In addition to functions and controls, each of the configuration objects (Presets, Setups, and MIDI Configurations) may also be given a MIDI binding. The configuration object will be activated when the associated MIDI event is received.
To define MIDI bindings, pull down the Configuration menu and select the Midi Control item. Mobius supports the definition of several Midi Configurations which contain different bindings.
The ability to dynamically select MIDI configurations was developed for controllers such as the Ground Control Pro, which have a global set of "instant access" buttons plus a row of buttons that send program changes. Since the instant access buttons always send the same MIDI events, you can change their behavior by defining several different MIDI configurations, and selecting them with the program changes. This might also be useful if you have performance situations that require using different controllers.
The Selected Configuration. field has a pull down menu of all the current MIDI configurations. To the right of the pull down menu are a pair of buttons. The New button will add a new configuration by making a copy of the current configuration and generating a unique name. The Delete button will remove the current configuration from the list.
The Name field has a text box where you may change the name of the selected configuration. Note that the new name will not be reflected in the pull down menu until the you save by clicking Ok in the window.
Below the Name field are three list boxes labeled Function, Control, and Configuration. When you select a name in any of these boxes it will become selected and turn red. The current binding for the selected item will be displayed in the fields below the Control selector. Once a field is seldcted, you may specify a MIDI binding by manually changing the Scope, Type, Channel, and Value fields.
The most efficient way to assign MIDI bindings is to let Mobius automatically assign MIDI events sent from an device. Any MIDI events received by Mobius are displayed in the box at the bottom of the window. If you check the MIDI Capture box, the Type, Channel, and Value fields will automatically be set according to the MIDI events being received.
A MIDI Binding is defined in one of several scopes, selected with the pulldown menu labeled Scope. The available scopes are:
Each of these scopes may have a completely different set of MIDI bindings. Most bindings are made in the Global scope. Global bindings affect the active track, any track that has focus lock, and any track that is in the same group as the active track. This is where most of the function bindings are defined.
If you make a binding in one of the 8 track scopes, it will only affect that one track. If you make a binding in one of the 4 group scopes, it will only affect the tracks that are currently a member of the group.
Track and group bindings are most useful if you have a MIDI control surface or keyboard with lots of programmable knobs and sliders. One common application is to assign a different MIDI continuous controller to the Output Level in each track scope, giving you direct control over the level of each track, such as you would with a mixing console.
Track scope function bindings are useful for functions like Mute and Solo.
Group scope bindings affect only the tracks in the group. The Output Level control in a group scope behaves in a special way by maintaining the same relative levels of the tracks in the group. For example if one track is at level 127 (max) and one at level 100, decreasing the group level by 10 to will lower the level of the first track to 127 and the second track to 90. This allows you to set up a mix of tracks in a group, then fade the entire group in and out using a group controller while maintaining the original mix.
Note that unlike Mobius versions before 1.24, we now store the MIDI channel with the MIDI binding. This means that note 24 on channel 2 and note 24 on channel 6 can do different things.
Also note that it is possible to have the same MIDI event bound to different things in different scopes. For example, "note 42 channel 3" may be bound to Record in global scope and Reverse in Track 1 scope. In this case both functions will be performed when this MIDI event is received.
The Max Track Groups field lets you select how may track groups to support up to a maximum of four.
There are a few parameters that affect the operation of Mobius regardless of which Preset or MIDI Configuration is active. These are called global parameters. To set global parameters, pull down the Configuration menu and select the Global Parameters... item.
Mobius provides several options for saving and loading audio content. You may save or load individual loops as well as projects containing all layers in all loops in all tracks.
To load an individual loop, select a track, and use the Next Loop, Previous Loop or numbered loop trigger functions to select the target loop. If the AutoRecord option is on, recording may begin but it will be canceled during the load. Once the track is selected, pull down the File menu and select the Open Loop item. A standard open file dialog will be displayed, navigate to the directory containing the file you want to load and select it. Mobius can only load Windows wave files having the .wav extension.
The target loop will be reset before the loop is loaded. After the loop is loaded, the track will be in pause mute mode. The loop will begin playing from the beginning as soon as you perform the Mute function to bring it out of mute mode.
If you don't have any wave files handy, Mobius includes one you can experiment with. From the Open Loop dialog, navigate to the samples subdirectory of the Mobius installation directory (normally c:\Program Files\Mobius\samples) and select the file named gcloop.wav. No, this isn't me, I assembled it from a commercial loop library. This one is fun to use with subcycle quantized unrounded multiply. Splice out a bar, then undo back to the full loop, splice out a different bar, repeat!
To save an individual loop, select the track and the loop you want to save, pull down the File menu, and select the Save Loop item. A standard Save File dialog will appear, navigate to the directory where you want to save the loop, and select or enter a file name. Mobius can only save Windows wave files.
The quick save feature allows you to save the current loop to a file without having to interact with a dialog window. This is handy if you build a loop you would like to remember, but don't want to put down your instrument in order to interact with the computer.
A quick save may be performed by pulling down the File menu and selecting the Save Quick item. While you don't have to interact with a dialog window, you still have to select the menu item. A more interesting way to perform a quick save is by binding a button, key, or especially a MIDI event to the Save Loop function. You could for example bind the Save Loop function to a button on a MIDI foot controller, whenever you build something interesting just pounce on the button and the loop will be saved.
By default, the saved loop files are stored in the Mobius installation directory with the base name mobiusloop plus a number to make it unique, for example mobiusloop1.wav, mobiusloop2.wav etc. Every time you perform the Save Loop function, a new unique file name is generated by adding one to the highest numbered quick save file in the directory.
You may change the directory and base file name for quick save files by pulling down the Configuration menu and selecting the Global Parameters item. In the dialog, the field named Quick Save File may be set to a file system path including the base file name. For example:
Files will be saved in the c:\mystuff\mobius directory with the name quicksave plus a number to make the name unique. For example quicksave1.wav and quicksave2.wav. Do not specify a number or the .wav extension in the global parameters dialog, these will be added automatically.
If you perform a quick save into a directory that already contains quick save files, Mobius will probe the directory to find the highest file number it must use in order to generate a unique file name. This ensures that a quick save will not overwrite an existing quick save file made during a prior Mobius session.
A project is a collection of files that contain the complete state of Mobius at a moment in time, including the audio content of all loops in all tracks. You can use projects to capture a complex collection of loops that have just been improvised, or to define a set of background loops for a new performance.
To save a project, pull down the File menu and select the Save Project... item. A dialog appears requesting you to select a Mobius project file. It may take several seconds to save the project. During that time try not to perform any functions, or the project may be saved with loop changes you did not intend.
To load a project, pull down the File menu and select the Load Project... item. Again, a dialog appears requesting you to select an existing Mobius project file. When you load a project, a Global Reset is performed, meaning that all of the current loops and tracks will be lost.
A project actually consists of several files, a single project file with the .mob extension, and one or more .wav files containing audio content. If you have a complex collection of loops and tracks, there may be many files in a project. If so you may find it convenient to keep each project in a separate directory.
As an example, assume we've saved a project named "myproject" that has two tracks, each with two loops. The project files that would be saved are:
myproject.mob myproject-1-1-1.wav myproject-1-2-1.wav myproject-2-1-1.wav myproject-2-2-1.wav
The files containing audio are suffixed with three numbers. The first is the number of the track, the second is the number of the loop within the track, and the third is the number of the layer within the loop. Depending on how the loop was constructed, the layer number will usually be different than 1.
The project .mob file contains the information necessary to reconstruct Mobius state from all of the audio files. See the XML Files section for more on the contents of this file.
If the global parameter Save Project Layers is set, then a loop's layer history is also stored in the project. See the Global Parameters section for more information on setting this parameter. When layers are saved, more than one .wav file may be saved for each loop, for example:
myproject-1-1-3.wav myproject-1-1-2.wav myproject-1-1-1.wav
As mentioned earlier, the third number in the file name is the layer number. These will be random numbers, though the most recent layer will usually have a higher number. Saving layers may be interesting if you use undo as a performance technique, and you want to start with a complex loop, and undo back to something simpler. I use this during testing, but find it to be of limited practical use since it can require a large amount of disk space if the loop length is long and you have a lot of layers.
In addition to the audio content, the project will also save the selected MIDI configuration, the selected presets in each of the tracks, the selected track, and the selected loop within each track.
NOTE: When you save a project with the same name as an existing project, all of the wave files in the existing project will be deleted first. This is necessary to avoid "garbage files" if you remove tracks or loops from the project. This will only occur however if the file is contained in the same directory as the project file. This is so you can add files to a project from a sample library and not have those files be deleted when the project is deleted.
In addition to audio files, the project also includes the current settings for each track including the selected preset, feedback, output, and pan values. A project template contains all of these track settings, but not any of the audio content. Creating a project template can be useful if you want to have different configurations for different performances, but don't want to start with any initial audio content. To save a project template, pull down the File menu and select the Save Project Template item.
In this section we will list all of the Mobius functions and provide a brief description of how these differ from the EDP. If there is a corresponding EDP function, and the function is said to be implemented, then you can assume it will behave like the EDP (assuming of course I have interpreted the manual correctly).
Let's start with a list of EDP functions Mobius definitely does not implement.
I will eventually implement Loop Windowing, TempoSelect, and some of the long presses. Things related to "beat sync" are not really relevant for Mobius since everything must be controlled through MIDI. MIDI control over parameter values may be useful but I would prefer the ability to directly bind MIDI continuous controllers to parameters rather than virtually pushing the EDP parameter buttons.
This list contains a collection of things described in the manual that are also not implemented, but they're not exactly functions.
Event "gravity" refers to the EDP's behavior of quantizing events back to a previous quantization boundary rather than moving to the next one if you are within a few milliseconds of the last boundary. In my testing, I have not been in many situations where I felt this was needed. I'm interested in hearing from anyone that has come to rely on this. A Mobius feature that may lessen the need for this is that you can "stack" more than one quantized event. For example, if you want to go into reverse and half speed at the same time, turn quantization on and perform the Reverse and Half Speed functions. You will see them stacked on the same quantized frame.
BUG: This doesn't work as intended, the second function will be quantized to the next boundary, which is consistent with the way quantized SUS functions work. These may both be useful behaviors, but are probably function specific. It makes sense to stack non-destructive functions like Reverse and Speed with one destructive function like Insert or Multiply, but it doesn't make sense to stack two destructive functions, the first one will have no effect.
You can assume that the following functions behave in the same way as the EDP excepted as noted. Please let me know if you find otherwise.
This section describes new Mobius functions that are not found in the EDP.
The Slip Forward and Slip Backward functions allow you to instantly move the playback position forward or backward. The effect is similar to a Retrigger, except that you have more control over where the new playback position will be.
The amount of slippage is determined by two preset parameters: Slip Mode and Slip Time. The Slip Mode. parameter may have one of these values.
When Slip Mode is set to Milliseconds the amount of slippage is determined by the Slip Time parameter. This is set to a positive integer number of milliseconds. For example, slip time value of 1000 would cause the Slip Forward function to slip forward 1 second.
The following parameters are either not implemented, or not relevant for Mobius.
You can assume that the following parameters behave in the same way as the EDP except as noted. Please let me know if you find otherwise.
The following are new Mobius parameters that are not found in the EDP.
The Mute Cancel parameter controls whether mute mode is canceled when using other functions. In order to understand the mute cancel options, we must classify functions into one of the following groups:
This table shows the available values for the Mute Cancel parameter:
When Mute Cancel is set to Custom the functions that cancel mute mode are defined by the global parameter named (surprisingly) Mute Cancel Functions. This parameter is set in the Global Parameters dialog, it cannot have a different value in each preset. To select the functions that cancel mute mode, move them from the left panel to the right panel.
The Mute functions are:
The Modal Edit functions are:
the Instant Edit function are:
the Trigger functions are:
the Effect functions are:
The Global functions are:
The simplest way to control a track is to make it the selected track by clicking on it with the mouse, or using one of the track selection functions bound to a UI button, key or MIDI event. The selected track will have a white border around it in the track strip. MIDI events bound to functions or controls in the global scope will then be processed in the selected track.
Often it is desirable to control a track when it is not currently selected, or to control more than one track at the same time. There are several options available:
The focus lock feature was one of the first methods of controlling multiple tracks. It has now been supplemented with the more powerful track group feature. When focus lock is enabled for a track, the track will receive function triggers even when it is not the selected track. For example, if focus lock is enabled in tracks 1, 2, and 3, track 1 is selected, and the Reverse command is performed, the Reverse will be performed in tracks 1, 2, and 3.
There are three ways to enable focus lock for a track, by clicking on the focus lock button in the track strip, with the FocusLock function, and with scripts. See the scripting manual for more information about controlling tracks with scripts. In the standard track strip, the focus lock button is the small circle at the top which will fill with red when clicked. If you do not see a small circle you have customized the track strip. Pull down the Configuration menu and select the Display Components item. In the multi-select field labeled Track Strip Controls make sure that the item labeled Focus Lock is moved to the panel on the right side.
Using the FocusLock function will toggle focus lock on and off.
You may not want all functions to obey focus lock. For example you may want NextLoop, Retrigger, and Mute to obey focus lock but not Record and Overdub so you can control the recording of tracks individually but still mute them at the same time. A global parameter can be used to specify which functions will obey focus lock and track groups. Pull down the Configuration menu and select the Global Parameters... item. Then in the field labeled Group and Focus Lock Functions, move the functions you want to obey focus lock to the panel on the right side.
Track groups are a more powerful alternative to Focus Lock. A track may be assigned to up to 4 track groups, functions performed in a track will automatically be performed in all other tracks in the same group. As examples, track groups can be used to organize tracks by instrument (piano, bass, drums, lead) or by their location in a composition (verse, bridge, chorus).
Tracks are assigned to a group using the Track Group function. You select a specific group by using Track Group several times to cycle through the group numbers. The first time you use Track Group the track will be assigned to group 1, the second time to group 2, and so on. If the track is assigned to the highest group 4, using Track Group again will remove the group assignment and return the track to normal. The pattern is:
none -> 1 -> 2 -> 3 -> 4 -> none -> 1 -> 2 -> 3 -> 4 -> none
Using MIDI, if you perform a long press of Track Group the group assignment will be removed.
In the default track strip, track groups are displayed at the bottom of the track strip as "Group 1", "Group 2", etc. Each group name is displayed in a different color. You can specify the color you want for the group names in the Palette... dialog. If you are upgrading from an earlier version and do not see group names, bring up the Display Components dialog, and make sure the Group item is in the right panel of the selection field labeled Track Strip Controls.
Like the focus lock feature, you may not want all functions to obey the track group assignment. You can use the Group and Focus Lock Functions global parameter to specify which functions should be automatically performed in other tracks in the group.
If you find that 4 track group is more than you need, you can reduce the number using the Max Track Groups parameter in the MIDI configuration. Select the MIDI Control configuration dialog, and look for the Max Track Groups field. Use the selector to specify how many track groups you want. This will reduce the number of times you have to use the Track Group function to cycle through the group assignments. If you set Max Track Groups to 1, groups will behave the same as Focus Lock.
If you are using scripts and you want to assign a particular group you can use the TrackGroup statement with a numeric argument. For example:
!name Set Group 3 TrackGroup 3
There have also been some extensions to the scripting language to make it easier to loop over all the tracks in a group or all tracks with a certain quality. The following symbols may be used after the for statement> to loop over tracks in a specific state.
Each track has a binding scope, which means that you can bind MIDI events to functions and controls that will operate only within that track. Binding scopes were described earlier in the MIDI Control section.
To make a track specific binding bring up the MIDI Control dialog, locate the pulldown menu labeled Scope and select one of the numbered track names. You may now make MIDI bindings to functions and controls as usual.
A common application of track binding is to assign a unique MIDI continuous controller number to the Output Level control of each track. This allows you to use a MIDI controller with lots of knobs as a "mixer" to balance the levels of each track.
Another useful application is to bind a MIDI event to a function that will be performed in only one track. This can be done for any function, but is especially useful with these:
Forcing a function to run in only one track has been done in previous releases of Mobius using scripts and the "for" statement.
for 4 Mute next
For simple track targeting like this you now no longer need to use scripts, you can simply make a binding to the Mute function in the "Track 4" scope.
Like track binding scopes, there is also a binding scope defined for each of the track groups. To make a group specific binding bring up the MIDI Control dialog, locate the pulldown menu labeled Scope and select one of the numbered group names. You may now make MIDI bindings to functions and controls as usual.
When a function or control in a group scope is triggered, it will be performed for all tracks currently in that group.
The group control for Output Level behaves differently than other control bindings. The output level of the tracks in the group will be changed relative to their current output level, rather than all set to the same value. This allows you to set up a mix of several tracks with different output levels, then adjust the overall output level of the group "bus" without changing the mix of track levels. For example, assume track 1 and 2 are in the same group and track 1 has output level 127 and track 2 has output level 64. If you reduce the group output level from 127 to 97, the effective level for track 1 will be 97 and the effective level for track 2 will be 34.
Feedback controls the level of the audio content copied from one layer into the next. Feedback can operate in two styles which have different uses:
With Continuous feedback, the feedback level is constantly being used to adjust the level of the audio from the current layer being copied into the next layer. This can be used to create volume swells or to "sculpt" the layer. This is how feedback on the EDP behaves.
With One Time feedback, the feedback level is only used when the loop reaches the end point and a new layer is created. The current feedback level at the end point is applied to the entire layer. The only advantage to this mode is that if you bump the feedback pedal by accident, you have until the end of the loop is reached to move it to the correct position.
Currently, the implementation of these feedback modes is dependent to another important mode, the Layer Flattening mode.
Mobius provides two ways to combine the audio content of the layers into the loop that you hear being played.
When flattening the full content of a layer is copied into the next layer as it is being recorded. When the recording of a layer completes, everything necessary to play the layer is contained in one large block of audio.
When dynamic merging the content of a layer is not copied into the next layer, instead the next layer references the content from the previous layer. We then continually combine the contents of a layer with the layers it references as the layer plays.
The main advantage of dynamic merging is that we may require less memory if you tend not to overdub over the entire layer. For example, if you have a loop 10 seconds long, but only overdub 2 seconds worth of new material, the new layer will only require memory for 2 seconds. With flattening, each new layer requires memory for the full 10 seconds whether or not there was any actual new recording during those seconds.
Another interesting consequence of dynamic flattening is that when you save a project, you can create audio files containing only the new content overdubbed into each layer. These files can then be remixed to create variants of the loop.
There are two big disadvantages of dynamic flattening. First, if you create many layers, the overhead of constantly merging the content from all the layers can require too much computer power which can result in missed audio interrupts which sound like "clicks". Second, continuous feedback is not available in this mode because we are not copying the content from one layer into the next. Only one level of feedback can be applied to all of the content referenced in the previous layer.
Choosing between layer flattening and dynamic merging is done with the No Layer Flattening preset parameter. When this parameter is checked, we will perform dynamic merging.
Most people will prefer to use layer flattening. There is however one interesting performance technique that is provided by dynamic merging. If you set the MaxUndo parameter to a non-zero value, Mobius will operate like a delay line with a fixed number of repeats. For example, set MaxUndo to 4, drop feedback slightly and record a loop. With feedback reduced, we will create a new layer on each repeat. But the MaxUndo parameter restricts us to keeping only the most recent 4 layers. Once the first layer plays 4 times, it will no longer be heard, it has "fallen off the edge" of the layer list. This can also be used to reduce the "wall of sound" effect when doing continuous overdubs. Material in older layers will be removed each time a new layer is created, letting the loop evolve without waiting for a gradual feedback decay.
The rate shifting feature allows you to adjust the playback and recording rate of the loop so that both the perceived pitch and tempo of the loop change. This is similar to the Half Speed function except that you are not limited to a single rate shift of 1 octave down.
Rate shifting may be controlled in several ways using these functions.
The Rate Up and Rate Down functions move the rate up or down by one semitone relative to the current rate.
The Rate Next and Rate Prev functions select rates defined in the Rate Sequence preset parameter. A rate sequence is a space delimited list of numbers which represent positive or negative rate changes in semitone increments. For example a rate of "1" is one semitone above normal, a rate of "-7" is 7 semitones below normal (or a perfect fifth lower). The rate sequence "wraps" on the edges so if you are on the last rate in the sequence, Rate Next will move to first rate in the sequence.
The Rate Normal function returns the rate to normal, no matter how it was shifted.
Perhaps the most useful function is Rate Shift. This allows you to use a keyboard controller to instantly access a large range of rates spread over several octaves. You normally bind a MIDI note event to the Rate Shift function, this becomes the rate center note. When you press the rate center note, the rate returns to normal. Where it gets interesting is that the notes above and below the center note are automatically assigned to semitone rate shifts relative to the center note. Notes below the center note lower the rate, notes above raise the rate. This allows you to "play" the loop chromatically, similar to using a sampler.
Note that Mobius will attempt to bind rate shift functions in a 4 octave range on either side of the center note. For best results, it is recommended that the center note use a MIDI channel that is not being used for any other functions. If a rate shift note is already assigned to another Mobius function, the previous function will have priority. To avoid these conflicts use a different channel.
When the rate is shifted, the playback of the loop will be affected by the setting of the Rate Shift Retrigger preset parameter. If this parameter is checked, then the loop will be retriggered whenever the rate is shifted. This makes it behave like a sampler. If the parameter is not checked, the rate is simply shifted without retriggering.
NOTE: Pitch Shifting is provided in release 1.24 as a "technology preview". There are still bugs in it and I do not consider it ready for real use. Still you may find it interesting to get a sense for what will eventually be provided.
Pitch shifting is very similar to Rate Shifting except that the pitch is changed without changing the tempo of the loop. In all other respects the functions and parameters used to control pitch shifting are identical to those for rate shifting.
Pitch shifting may be controlled in several ways using these functions.
The Pitch Up and Pitch Down functions move the pitch up or down by one semitone relative to the current pitch.
The Pitch Next and Pitch Prev functions select pitches defined in the Pitch Sequence preset parameter. The Pitch Sequence the same as the Rate Sequence described in Rate Shifting.
The Pitch Normal function returns the rate to normal, no matter how it was shifted.
Finally Pitch Shift allows you to use a keyboard controller to instantly access a large range of pitches spread over several octaves. The Pitch Shift function is bound to a MIDI note in the same way as the Rate Shift function. See Rate Shifting for more information on how the notes are selected, and the issues this can cause.
When the pitch is shifted, the playback of the loop will be affected by the setting of the Pitch Shift Retrigger preset parameter. If this parameter is checked, then the loop will be retriggered whenever the pitch is shifted. If the parameter is not checked, the pitch is simply shifted without retriggering.
The Bounce Record function allows you to capture the output of several tracks, mix them together, and copy the result into an empty track. This is similar to the bounce down mixing technique used with a multi track recorder.
When the Bounce Record function is first called, it begins capturing the output of any track that is currently playing. The track output is mixed together "post fader" so the Output Level control of each track may be used to control the track mix in the recording.
When Bounce Record is called a second time, the captured and mixed track output is copied to the first empty track (from the left). The source tracks are then immediately muted, and the new track immediately begins playing. This new track contains a single loop with the captured output from the other tracks. This loop can then be manipulated as usual.
Any number of bounce recordings can be made, but you must have at least one empty track. If there are no empty tracks when the second Bounce Record is called, the recording is thrown away.
Note that bounce recording is a special kind of "global mode" that is not related to any particular track or loop. While you are bounce recording, you can be manipulating tracks and loops in any way, including recording new loops, multiplying, overdubbing, triggering, and rate shifting. Mobius is recording the entire process.
Bounce recording can be especially useful with the Retrigger, Rate Shift and Pitch Shift functions. Once a loop is created, you can play a chord progression using Rate Shift or Pitch Shift, record the result of that performance, and bounce this into a new track to serve as a background loop.
The timing of the bouce recording may be controlled with the Bounce Quantize parameter. Bounce quantization is not affected by the Quantize parameter that is used with other functions. This is because bounce quantization is almost always set to Loop or Cycle, but you may not wish to use this same quantization for the functions that build the loop.
Mobius supports a number of synchronization options that allow you to create loops that stay in sync with drum machines and sequencers. There are three styles of synchronization available.
The style of synchronization is determined by setting the Sync Mode and Track Sync Mode parameters in the preset. The following sync modes are available.
The Track Sync Mode parameter is valid only when Sync Mode is Out or Out User Start. See Track Synchronization for details.
Like the EDP, Mobius maintains synchronization with an external clock by periodically comparing the current playback position with the position we are supposed to have according to the clock. If the positions are not the same, a drift has occurred. When the amount of drift exceeds a certain threshold, the loop will be automatically retriggered to make the playback position match the clock. This is called drift retrigger.
Depending on the contents of the loop, drift retrigger may produce a soft audible "bump" due to the sudden change in playback position. Cross fading is performed to make this transition smoother so it will not sound like an unpleasant "click".
The global parameter Resync Drift Frames sets the number of frames Mobius will allow a loop to drift out of alignment before retriggering. It is common for a slight drift to correct itself over time, so this parameter should not be set too low or we will retrigger too often. A value slightly greater than the ASIO buffer size is recommended. The default value is 256.
Out sync behaves like the EDP. MIDI clocks are sent as soon as the loop length is established. MIDI Start Song and Stop Song messages are sent automatically.
The tempo of the MIDI clocks is determined by the length of the loop and the value of the 8thsPerCycle parameter. When using external synchronization, you should think of the value of 8thsPerCycle as being the number of "beats" in a bar. Most of the time a beat will correspond to a quarter note. So if you are trying to synchronize with a 4/4 drum pattern that is 4 beats long, set 8thsPerCycle to 4 (or a multiple of 4).
The tempo is determined by this formula:
tempo = beats * (60 / loop seconds)
For example, if you create a loop 2 seconds long, and 8thsPerCycle is 4, then the tempo will be 4 * (60 / 2) = 120
The tempo range can be constrained by the Minimum Sync Tempo and Maximum Sync Tempo preset parameters. If the tempo produced by this formula is less than the minimum sync tempo, it will be doubled until it exceeds the minimum tempo. Similarly, if the tempo is greater than the maximum sync tempo, it will be halved until it is less.
A MIDI Start Song message is sent after the following functions:
A MIDI Stop Song message is sent after the following functions:
The new Mobius parameter Speed Sync Adjust controls how output MIDI clocks are generated when switching to half speed.
The new Mobius parameter Unrounded Sync Adjust controls how synchronization is performed after an unrounded operation like Insert or Multiply that may change the cycle length. The possible values are:
Some VST hosts may allow Mobius to behave as a sync master, defining the tempo based on the length of the recorded loop. This is sometimes referred to as "first loop capability". For this to work, you need two things:
This configuration works reasonably well with Ableton Live. I have not had much success with Sonar due to the way their "audio engine" turns on and off. You cannot do this with FL Studio because it does not allow slave sync when running standalone. Supposedly FL Studio allows external sync when running as a VST plugin but I have not had the opportunity to test that.
For a loop back device on the PC, use MIDI Yoke at www.midiox.com/myoke.htm. I do not recommend the older Hubi's Loopback Device as it does not run well on Windows XP. Select one of the MIDI Yoke output devices in the MIDI Devices... dialog. Then configure the VST host to receive MIDI sync from the MIDI Yoke input device with the same name as the Mobius output device.
The Plugin Opens MIDI Out global parameter must be set when controlling host tempo since the Mobius plugin must be able to open the MIDI output device.
Out User Start mode behaves like the EDP. MIDI clocks are sent as soon as the loop length is established but MIDI Start Song and Stop Song messages must be sent manually. The tempo is determined in the same way as Sync=Out.
A MIDI Start Song message is sent when the loop reaches its start point after the following functions:
A MIDI Stop Song message is sent immediately after the following functions:
Sync mode In behaves as it does on the EDP. The length of a cycle is predefined by the tempo of the incoming MIDI clocks and the 8thsPerCycle parameter. The 8thsPerCycle specifies the number of MIDI beats in the cycle, where a MIDI beat is always 24 MIDI clocks. The length of the cycle may be calculated with this formula:
cycleSeconds = 60 / (tempo / 8thsPerCycle)
For a tempo of 120 and an 8thsPerCycle of 4, the cycle length will be 2 seconds. The end of the initial record will always be rounded up to a multiple of this number of seconds. If you record more than the number of cycle seconds, the loop will contain more than one cycle.
The beginning of the recording is determined by the Quantize parameter. When Quantize=Off, the recording will begin on the next MIDI clock. When Quantize=SubCycle, the recording will begin on the next MIDI beat (24 clock boundary). When Quantize=Cycle or Loop, the recording begins on the next MIDI bar, where a bar contains the number of MIDI beats specified by 8thsPerCycle.
This is functionally the same as Sync=In when Quantize=Cycle. The recording is always quantized to the start of a MIDI bar, and ends on a MIDI bar. The length of the bar is determined by 8thsPerCycle but Quantize does not have to be set. This allows you to begin modifying the new loop using whatever Quantize parameter you desire without having to change presets.
This mode is not available when Mobius is running as a VST plugin. Use Sync=Host Bar instead.
In this mode the start and end of the recording are simply quantized to a MIDI beat boundary and is not affected by the tempo, the Quantize parameter, or the 8thsPerCycle parameter. This is similar to what the EDP calls beat sync except that beats are defined by MIDI clocks rather than analog pulses.
This mode is not available when Mobius is running as a VST plugin. Use Sync=Host Beat instead.
In this mode the start and end of the recording are quantized to a beat as defined by the VST host. This is similar to MIDI Beat except that MIDI clocks are not used.
This mode is only available when Mobius is running as a VST plugin.
In this mode the start and end of the recording are quantized to a bar boundary as defined by the VST host. Unlike MIDI Bar the length of the bar is unrelated to the 8thsPerCycle parameter. The bar length is set in the host and cannot be controlled by Mobius.
This mode is only available when Mobius is running as a VST plugin.
What Mobius calls Track Synchronization is similar to what the EDP calls Brother Sync. It provides a way to synchronize the start and end of a new recording with a loop playing in another track. With the EDP, brother sync is enabled by connecting cables between two or more devices. In Mobius, track synchronization must be enabled with the Track Sync Mode preset parameter.
Track sync is only available when the Sync parameter is set to Out or Out User Start. If you are using one of the input sync modes, you must synchronize tracks from the same external master clock, or by using the Track Copy parameter combined with one of the track selection functions.
When track sync is enabled, the first track that records a loop becomes the track sync master and all other tracks will synchronize to the master track. Any track may become the track sync master. If a track that was the sync master is reset, the next track to finish recording a new loop becomes the sync master.
Once the track sync master has been selected, all other tracks that have track sync enabled will quantize the start and end times of the first recording to the master track. Recording of the slave track will not begin until the master track reaches a point determined by the Track Sync Mode parameter. The possible values for this parameter are:
Track Sync Mode will also affect the processing of the ReAlign function. If ReAlign is performed in a track that is a track sync slave, the realign will happen when the master track reaches its loop start point. ReAlign always happens at the master loop start point, even if Track Sync Mode is Sub Cycle or Cycle.
In track sync modes Cycle and Loop the cycle length of the new loop will be the same as the master loop, and the new loop may end up with more than one cycle. As you pass the master loop cycle start point during recording you will see the cycle counter incrementing.
Track sync mode Sub Cycle is more complicated. After ending a recording, if the new loop length is an even multiple of the master loop cycle length, the cycle lengths will be the same and the new loop may contain more than one cycle. If the new loop length is not an even multiple of the master cycle, the new loop will be reorganized to have only one cycle.
Sub Cycle track sync is a bit like Sync=MIDIBeat or Sync=HostBeat. It can be used to create a loop whose rhythm stays in sync with the master track, but by allowing the cycle sizes to differ the new loop will continually shift in and out of phase with the master loop.
Mobius does not currently support what the EDP calls Auto Start Point. When any form of synchronization is on, Mobius will periodically retrigger the loop so that it stays in sync with the MIDI clock. This "drift retriggering" is disabled when Overdub or another recording mode is active. If retriggering were allowed during recording, it could cause gaps in the recording which you would hear as clicks.
If drift retrigger is disabled and an overdub is left on for several iterations of the loop, the loop can go out of alignment with the MIDI clocks. What Auto Start Point does is automatically set the start point of the loop rather than retriggering it, but only if the feedback level is low enough that the old content of the loop will be inaudible.
Currently in Mobius, if you leave overdub on, the loop will gradually go out of sync with the external device. This may be corrected by leaving overdub and performing a ReAlign.
The EDP will send MIDI note messages at various synchronization points such as the loop start point, global MIDI start point, cycle start point, and sub-cycle start point. Mobius does not.
On the EDP, pressing overdub when the track is reset and Sync=In toggles reception of incoming sync. It also toggles adherence to the tempo specified by TempoSelect. I'm assuming a side effect of this is that you lose the ability to "arm" overdub mode during reset.
Mobius does not yet support this feature, though I don't really like losing the ability to control overdub in reset. Common functions like Multiply and Insert don't do anything in reset mode, I would rather use those. I will probably add a preset parameter that lets you choose which function will trigger Stop Sync. The same is true for the use of the Undo and Overdub functions to control Tempo Select.
On the EDP, pressing Undo while in reset mode when Sync=Out activates Tempo Select mode. While in Tempo Select mode, the Overdub function changes behavior and cancels Tempo Select rather than arming Overdub mode.
Mobius does not support this feature, and like Stop Sync it seems that functionality is actually taken away which I don't like. Perhaps the same parameter used to select the Stop Sync trigger function could be used for Tempo Select as well.
The primary problem Mobius has with synchronization is in handling alignment when switching among loops and layers that have a different cycle length. You can usually get the loop back in sync with the device, but it may take an extra use of the ReAlign function or a premature drift retrigger may be performed. If you avoid operations such as unrounded multiply that redefine the cycle length, you may not notice these bugs.
Some of the known bugs include:
Mobius provides support for Interface Modes except Delay. But note that for modes such as Replace and Flip to work as documented, you must have continuous feedback enabled. Continuous feedback is normally enabled, but it may be disabled with the No Layer Flattening preset parameter. If the interface modes are not behaving as you expect, make sure this parameter is not checked.
One of the things EDP interface modes do is specify what is controlled by the feedback knob on the front panel and by an expression pedal plugged into a jack on the back panel. For example, in the default Loop mode both the knob and the expression pedal control feedback. But in In mode, feedback is controlled only by the knob and the expression pedal controls input level.
Mobius obviously does not have a jack on the back panel, so some of the text in the EDP manual will not apply to Mobius. You can accomplish the same things, but in slightly different ways.
Mobius supports a complete set of MIDI continuous controller bindings for direct control of these track controls:
Binding a MIDI controller to the Feedback control is similar to plugging an expression pedal into the back of the EDP. Binding a MIDI controller to Secondary Feedback is similar to turning the feedback knob on the front panel of the EDP. Depending on Interface Mode the MIDI controller bound to Feedback may actually be routed to a different control such as Input Level.
NOTE: The controller mapping described here only applies to MIDI continuous controller bindings. The knobs displayed in the UI always perform the function indicated by their label. In other words the knob labeled Feedback always controls feedback, regardless of the interface mode.
If you have a MIDI control surface with lots of knobs, or a lot of MIDI foot pedals, you may not need some of the controller mapping features provided by simple interface modes In and Out.
The following sections will describe each of the interface modes in detail.
This is the same as the EDP except that there is only one way to control feedback, with a MIDI continuous controller bound to the Feedback track control. The Secondary Feedback control is ignored in this mode.
The MIDI controller bound to the Feedback control will instead control the Input Level control and feedback must be controlled with the MIDI controller bound to Secondary Feedback.
The MIDI controller bound to the Feedback control will instead control the Output Level control and feedback must be controlled with the MIDI controller bound to Secondary Feedback.
Essentially the same as Loop mode except that the Insert function will perform a Stutter rather than an Insert. Stutter is sometimes referred to as "single cycle multiply". While in Stutter mode, repetitions of the next cycle will be continually inserted into the loop, and you may overdub new material on top of the stuttered cycles.
Mobius also supports Stutter and SUSStutter functions that you may use any time without needing to change interface modes.
If SwitchQuant is on during Stutter mode and you trigger a new loop followed by an Insert, the EDP will perform a stutter into the next loop. Mobius does not currently support this.
The Secondary Feedback control is supposed to be active during Substitute mode allowing you to overdub rather than completely replace the previous material. This is not currently supported.
This mode requires that the No Layer Flattening preset parameter not be checked.
The Feedback track control determines feedback while the loop is playing, and the Secondary Feedback control determines feedback during Overdub, Multiply, and Substitute modes. There is no mapping of controllers so you must either have two MIDI controllers bound to these track controls or use the knobs in the UI.
The EDP docs indicate that in Sample Play mode, feedback is always 100% and the feedback controller controls output level instead. Mobius does not support this.
This mode requires that the No Layer Flattening preset parameter not be checked.
The MIDI controller bound to Feedback controls both Feedback and Input Level at the same time, but the feedback range is reversed. At toe up, feedback is 100% and input level is 0%, making it function similar to a "hold" pedal.
During Overdub mode, feedback is determined by the Secondary Feedback control. Unlike the EDP however, the feedback range is not reversed. Since this only controls one thing, I didn't see much value in reversing the range but if someone feels strongly about this I can change it.
Like InterfaceMode=Stutter, the Insert function will perform a Stutter rather than an Insert.
I'm not sure if NextLoop+Insert is also supposed to perform a stutter, currently it does not.
When in Mute you are supposed to be able to continue recording silently. Mobius does not support this.
This mode requires that the No Layer Flattening preset parameter not be checked.
The MIDI controller bound to Feedback controls both Feedback Level and Output Level at the same time.
This is not currently supported.
During Delay mode, the controller bound to the Feedback control will control Input Level instead and feedback must be controlled with Secondary Feedback.
In this case I don't like the reassignment of the controllers. Since Mobius UI knobs are much more difficult to use than hardware knobs, most users will want to have another MIDI controller assigned to Secondary Feedback. If you have to have two controllers, then you may as well just assign them to Feedback and Input Level and not bother with Secondary Feedback. This can be changed with the Pedal Mode parameter set in the MIDI Control... dialog. This parameter may have these values:
This section is mostly irrelevant if you are using ASIO devices, though you may find it useful to understand latency issues.
Most of my testing has been done using MME drivers, specifically because they introduce high latency. Systems that synchronize recorded audio with what is being played must perform latency compensation. ASIO tends to hide errors in latency compensation, MME makes them painfully obvious.
Because looping is to a large degree delayed playback of previously recorded material, latency is actually much less of an issue than in an application like a virtual instrument. Latency is noticeable whenever an abrupt change in playback occurs, such as ending the initial recording, and unquantized functions such as loop switch, loop trigger, and unrounded multiply. If you are quantizing functions, you may not often hear the effects of latency compensation.
When you make an abrupt change, say a loop switch, Mobius will already have buffered a few thousand frames from the current loop. We can start buffering frames from the next loop, but they will be delayed a few hundred milliseconds while we play the frames that are already in the buffer. What output latency compensation does is begin buffering the next loop not from the first frame, but at an offset equal to the number of frames from the old loop that are already buffered. The bad effect is that a small portion of the front of the next loop will be skipped. The good effect is that when the next loop finally becomes audible, it will be at its proper playback position, the same position it would be in if there were zero latency. This is important if you are playing rhythmically and want the rhythm to be maintained during the switch. Without this there would be a few milliseconds of "extra time" inserted whenever you switch that is likely to annoy your drummer.
When you are quantizing, Mobius is usually able to anticipate where the change in output buffering needs to occur so that the switch occurs seamlessly without loss. This early buffering of the next loop can cause an audible glitch if you cancel the switch (or change the target loop) very close to the point where the switch is scheduled. If we have already started buffering the next loop, a few milliseconds of it will still be heard before hearing the correct loop. In practice this should be a relatively rare problem as most people don't change their mind about which loop to trigger 100 milliseconds before the trigger is to be performed.
Latency compensation must also be performed to ensure that overdubs are aligned properly with the audio that was being heard during the overdub. Without compensation the overdub may sound slightly ahead of or slightly behind where it should be.
Mobius uses information returned by the device to estimate the amount of latency compensation to be performed. This can usually be calculated with reasonable accuracy by knowing the number and size of the buffers used by the audio device driver. But there are other factors besides buffer size that contribute to latency, so sometimes the estimate is not correct and requires manual adjustment.
At the bottom of the Audio Devices... dialog, there are two fields labeled Override Input Latency Frames and Override Output Latency Frames. After you select a device and reopen the dialog, the default latency adjustment values are shown to the right of these fields. If you enter a number into either field, it will override the default value.
The easiest way to determine what these values should be is to perform a calibration. Click the Calibrate Latency button and another dialog will popup with information about the calibration process. In order to calibrate, you must physically connect the left or right output channel of the sound card to the left input channel of the same card. For most cards this can be done with a cable that has mini-plugs on both ends. If the sound card output is being sent to a mixer, you probably have a way to connect the output to the input in the mixer. This is called a loop back connection.
Once you have made a loop back connection, click the Start button on the calibration dialog. If you are monitoring the sound card's output, you will hear a series of clicks. If the loop back connection is not correct, after about 10 seconds a message dialog will popup saying that calibration timed out waiting for an input signal. If this happens check your connections and try the calibration again. If the calibration was successful, a message dialog will pop up displaying the total measured latency, and the recommended values for input and output latency frames. Click the Accept button to copy these values into the latency fields of the Audio Devices dialog, or click Cancel to keep the current values.
If you want to tweak the latency values manually, start by increasing the values for both latencies by 10 until it sounds right. You normally shouldn't have to add more than a few hundred frames. If it is still way out of alignment, stop adding to the input latency and start making more radical adjustments to the output latency, up or down in increments of 500. If that is required, submit a bug report with information about your computer and sound card.
To get a better understanding of what these values mean, you can think that at any moment in time Mobius is receiving sound that was performed a few milliseconds in the past, and is playing sound that will be heard a few milliseconds in the future. Input latency is the number of frames it takes a sound to "get into" Mobius. If you set input latency too low, you will be recording sound that was performed before the time you triggered the record function. If you set input latency too high, you will lose some of the sound immediately after you triggered the record function. It is more critical that input latency be correct because miscalibration can result in unwanted sound or loss of sound at the record start point. If an overdub sounds like it has the right content but isn't aligned properly, then adjust output latency not input latency.
If you set output latency too low, overdubs will sound like they are playing too late. If output latency is too high, overdubs will sound like they are playing too early. Deliberately adjusting output latency too low can actually be useful to compensate for monitoring latency. If you perform live using monitor speakers some distance away, it will take a noticeable amount of time for the sound to travel from the speakers to your ears. If you are overdubbing to this sound, it may not be aligned properly on playback. Raising output latency can help bring the overdubs back into alignment.
Samples are a feature I developed to for unit testing. These are probably not very useful for performance but who knows. Let me know if you discover a technique!
A sample is just an audio .wav file you can bind to buttons, keys, or MIDI events. The function names are Sample Trigger 1, Sample Trigger 2 etc. Up to 8 samples may be loaded.
When triggered, a sample plays from beginning to end without interruption and then stops. If you trigger it again before the last sample playback finishes, we will start another overlapping playback of the sample. Sample playback is independent of whatever you are doing with tracks, the sample output will be merged with the track output.
So far pretty boring, but what makes samples interesting for testing is that while the sample is playing, the output is fed into the audio INPUT of the tracks. So if the tracks are recording, they will record the samples you are playing, then loop them. I use this so I can get audio content into the loops using just the keyboard, without having to stop and reach for an instrument.
To configure samples pull down the Configuration menu and select the Samples... item. To add a new sample, click the Add button. Use the file explorer to select a .wav file. The sample will be added to the list in the center of the dialog. To delete a sample, select it in the list and click the Delete button. The order the samples appear in the list determines which function they are bound to, the first sample will be bound to Sample Trigger 1 etc. If you want to change the function bindings, you can select a sample and use the Move Up and Move Down buttons to reorder the list.
Scripts can be used to automate complex sequences of Mobius functions or to temporarily override parameter values when performing functions. Scripts are a complicated topic described fully in a different document.
Any number of scripts may be loaded. Scripts are run by binding script trigger functions to buttons, keys, or MIDI events. To configure scripts, pull down the Configuration menu and select the Scripts... item. The script dialog appears.
To add a new script, click the Add button. Use the file explorer to select a Mobius script file, normally with the ".mos" extension. The script will be added to the script list in the center of the dialog. To delete a script, select it in the list and click the Delete button. After adding a script, its name will appear in the function lists for the MIDI Control, Buttons, and Keyboard dialogs.
All configuration data you specify under the Configuration menu are stored in XML files. If you understand how the files are structured, you may edit them in any text editor as an alternative to using the Mobius configuration dialogs. Perhaps more interesting is that you can copy these files to create a backup of the current configuration, or to email your configuration to someone else. There are two configuration files:
Configuration of the UI and the engine are in separate files so that the engine can in theory be embedded in other UIs with different configuration mechanisms. If you are interested in writing a "skin" for Mobius, contact me and I'll provide information on the Mobius engine API.
I'm not going to provide exhaustive documentation on the XML files right now, but if you're comfortable with HTML you should be able to figure them out. The element and attribute names generally match those you would see in the UI dialog boxes, though spaces are removed and a capitalization style known as "camel case" is used.
A project file is also an XML file. I'll provide a little more information on these, because I find it useful to be able to define the contents of a project in a text editor rather than loading loops one at a time into Mobius, then saving the project. This example shows the basic structure of a project file:
<Project> <Track preset='Basic Looping' active='true' outputLevel='100'> <Loop> <Layer cycles='1' audio='test.wav'/> </Loop> <Loop active='true'> <Layer cycles='2' audio='samples/gcloop.wav' protected='true'/> </Loop> </Track> </Project>
There is a single root element named Project that contains one or more Track elements. tracks are loaded into Mobius from left to right. Each Track element may contain one or more Loop elements. You can have any number of Loop elements, but if you have more than the value of the Loop Count parameter in the current preset, the extra loop elements will be ignored.
A Loop element may have zero or more Layer elements. The first layer element is the layer, which is what you will hear when the loop is played for the first time. Other layers represent the history of the loop, these will be played only if you use the Undo function to step backward through the layer history. A Loop with no layer elements represents a loop in Reset mode.
The Track element may have the following attributes:
The Loop element may have the following attributes:
The Layer element may have the following attributes:
In projects saved by Mobius with the Save Layers option, you may also see Segment elements. Segments are used to reference a portion of the audio in a layer without actually copying the audio. When you use multiply for example, the layer will contain one segment for each multiplied cycle, that references the same backing layer. This then is combined with any new content overdubbed during the multiply in real time. You don't really need to understand any of this, though it does provide some insight into how Mobius manages memory. Basically, we always try to avoid copying previously recorded audio because audio buffers are large and take time to copy. Instead, audio buffers are referenced through a hierarchy of segments that are "flattened" in real time to produce the audio you actually hear.
It is possible to use Mobius to send MIDI messages to an EDP hardware device. Any function performed with a key, button, or MIDI message can be redirected to the EDP instead of Mobius, or sent to both Mobius and the EDP at the same time. This is something I use during testing to compare how Mobius and the EDP respond to functions. This probably has limited practical use, but I would be curious to know if you find one.
To use this feature you must first select a MIDI Through device. This must be a MIDI device to which the EDP is connected. See the MIDI Control section for more on seleting a through device.
Next, pull down the Configuration menu and select the External EDP item. A dialog appears with the following parameters.
When triggering functions with MIDI messages, Mobius will automatically translate the trigger message into the message the EDP needs according to the Base Note and Controllers parameters. That means you don't have to program a foot controller or control surface to send contiguous note or controller messages that the EDP requires. Mobius will convert random messages into contiguous note or controller messages for you.
If you really want to gain a deep understanding of what Mobius is doing, you can enable trace messages. This is not for the faint of heart, but I encourage anyone comfortable with the DOS shell to enable trace and run Mobius from the command line. When Mobius recovers from an unusual situation, it prints a trace message to the shell window. Knowing these messages really helps me diagnose and fix bugs. Trace is lost if you launch Mobius from the start menu or a desktop icon, you can only see trace if you launch Mobius from a DOS shell.
To launch Mobius from the shell, cd to the installation directory which is usually c:\Program Files\Mobius, then type mobius. The Mobius window will be displayed and the shell window will remain suspended until the Mobius window is closed. Trace messages will be printed to the shell window as Mobius runs.
There are three levels of tracing that may be enabled:
Level 1 messages are the most interesting because they are only displayed when something unexpected happens. A level 1 message will be displayed with the prefix "ERROR:". If you see any of these please try to capture them and send them to me in an email describing approximately what you were doing.
Level 2 messages are displayed during normal operation and provide insight on what is happening in the looping engine. These aren't errors, so I don't need to know about them unless they can provide context around a level 1 error message.
Level 3 messages are also not errors, but they are printed during every audio interrupt. This means that there will be thousands of them and they will slow down operations, causing audible glitches. There is rarely any need to enable this level of trace.
To enable trace you will need to edit the mobius.xml file in a text editor. Notepad will suffice, though if you're at this level you probably have something better. Look at the first MobiusConfig element and locate the attribute tracePrintLevel. The default level should already be 1, so you need to change this only if you want to see level 2 messages. To set the level, change the number in quotes after the =, for example tracePrintLevel='2'.
You may also notice the traceDebugLevel attribute. This controls the level of trace sent to what Windows calls the "debug output stream". If you know what this is, and have a debug output stream viewer such as dbwin32 you can use this instead of sending trace to the shell window. Using the debug output stream incurs a little less overhead and you do not have to launch Mobius from the shell in order to see the trace messages.
Loads a project from the file system. See the Saving and Loading section for more details.
Loads a single loop from the file system. The current loop will be reset before loading. After the loop has been read, Mobius will enter Mute mode. See Saving and Loading.
Saves a project to the file system. See the Saving and Loading section for more details.
Saves the current track configuration to a project without saving any of the audio content. See the Saving and Loading section for more details.
Saves the current loop to the file system. A dialog will be displayed allowing you to specify the location of the file. The loop is stored in a standard .wav file. See the Saving and Loading section.
Saves the current loop to the file system without prompting you for a location. The location will be determined by the global parameter Quick Save File, specified in the Global Parameters dialog.
The actual name of the file will be the name specified in the global parameter, plus an integer to make the name unique. See the Saving and Loading section.
Halts Mobius and closes the window. All track content will be lost.
A dynamic menu whose items will have the same names as the currently configured presets. Selecting a menu item will activate that preset. See the Using Presets section for more information on presets.
Displays a dialog for editing presets. See the Using Presets section for more information.
Displays a dialog for changing the initial settings for all tracks.
Displays a dialog to specify how Mobius responds to MIDI events. See the MIDI Control section for more information.
Displays a dialog to specify how Mobius responds to the computer keyboard. See the Using The Keyboard section for more information.
Displays a dialog to specify which function buttons are displayed at the top of the window. See the Using Buttons section for more information.
Displays a dialog to specify the names of files containing Mobius scripts to be bound to buttons, keys, or MIDI events. See the Scripts section for more information.
Displays a dialog to specify the names of files containing audio samples be bound to buttons, keys, or MIDI events. See the Samples section for more information.
Displays a dialog to specify the MIDI input and output devices. There are two sets of devices, one used when Mobius runs as a standalone application, and one when it runs as a VST plugin.
Displays a dialog to specify the audio input and output devices. See the Getting Started section for more information.
Displays a dialog to specify miscellaneous parameters that affect the operation of Mobius. See the Global Parameters section for more information.
Displays a dialog to specify which loop status components are displayed in the UI. See the Configuring the Status Area for more information.
Displays a dialog to specify the colors used in the Mobius window. To change a color, click on the colored box. A standard color selection dialog will appear, select a color and click Ok. When you are finished selecting colors for the various display components click Ok on the palette dialog and the color selections will be applied.
Displays a dialog to specify parameters necessary to control an EDP hardware device. See External EDP Control for more information.
Displays a dialog that summarizes the functions that are bound to computer keyboard keys. This is a non modal dialog, meaning that you can leave it open and still interact with the main Mobius window.
Displays a dialog that summarizes the functions that are bound to MIDI events. This is a non modal dialog, meaning that you can leave it open and still interact with the main Mobius window.
The ubiquitous about dialog. Nothing really interesting here besides the version number which you should include when reporting problems.
Mobius is still under active development and I welcome any feature requests. Apart from bug fixes, the expected order of development will probably be:
Echoplex Digital Pro and EDP are trademarks of the Gibson Guitar Corporation.
Loop IV is a trademark of Aurisis Research, LLC
Live is a trademark of Ableton.
Bidule is a trademark of Plogue Art et Technologie Inc. and is available at www.plogue.com
Chainer is available at www.xlutop.com
Audio Mulch is available at www.audiomulch.com
EnergyXT is available at www.xt-hq.com