Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
150 views100 pages

Mobius Manual

This document provides release notes for different versions of the Mobius software. It describes new features, fixes, and changes between each version. Some key updates include support for multi-channel audio interfaces, improved pitch shifting, concurrent scripting, mono track support, and simplified MIDI configuration.

Uploaded by

Andino Marino
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
150 views100 pages

Mobius Manual

This document provides release notes for different versions of the Mobius software. It describes new features, fixes, and changes between each version. Some key updates include support for multi-channel audio interfaces, improved pitch shifting, concurrent scripting, mono track support, and simplified MIDI configuration.

Uploaded by

Andino Marino
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 100

Mobius

Version 1.29
July, 2006

Contents
1 Introduction
2 What's New
2.1 Release 1.29
2.2 Release 1.28
2.3 Release 1.27
2.4 Release 1.26
2.5 Release 1.25
2.5.1 Bugs Fixed
New
2.5.2 Parameters
2.5.3 New Display
Components
2.5.4 New Script
Variables
2.6 Release 1.24
2.7 Release 1.23
2.8 Release 1.22
2.9 Release 1.19
3 Upgrading
3.1 Upgrading to
1.24
3.2 Upgrading 1.16
(or earlier) to 1.18
4 Getting Started
4.1 Mobius VST
Plugin
4.2 MIDI Devices
5 Concepts
6 User Interface
6.1 Using Buttons
6.2 Using The
Keyboard
6.3 Using Tracks
6.4 The Status Area
6.4.1 Configuring
the Status Area
6.5 Using Presets
6.6 Using Setups
6.7 MIDI Control
7 Global Parameters
8 Saving and Loading
8.1 Individual Loops
8.2 Quick Save
8.3 Projects
9 Functions
9.1 Unimplemented
EDP Functions
Supported EDP
9.2 Functions
9.3 Mobius Functions
9.3.1 Slip Functions
10 Parameters
10.1 Unimplemented
EDP Parameters
10.2 Supported EDP
Parameters
Mobius
10.3 Parameters
10.3.1 Mute Cancel
Function
10.3.1.1 Classes
11 Controlling Tracks
11.1 Focus Lock
11.2 Track Groups
11.3 Track Binding
Scope
11.4 Group Binding
Scope
Controlling
12 Feedback
13 Rate Shifting
14 Pitch Shifting
15 Bounce Recording
16 Synchronization
16.1 Drift Retrigger
16.2 Sync=Out
16.2.1 Speed Sync
Adjust
Unrounded
16.2.2 Sync Adjust
16.2.3 Controlling
Host Tempo
16.3 Sync=Out User
Start
16.4 Sync=In
16.5 Sync=MIDI Bar
16.6 Sync=MIDI Beat
16.7 Sync=Host Beat
16.8 Sync=Host Bar
16.9 Track
Synchronization
Missing
16.10 Synchronization
Features
16.10.1 Auto Start
Point
MIDI Sync
16.10.2 Indicators
16.10.3 Stop Sync
16.10.4 Tempo Select
16.11 Synchronization
Bugs
17 Interface Modes
17.1 InterfaceMode=L
oop
17.2 InterfaceMode=In
17.3 InterfaceMode=O
ut
InterfaceMode=S
17.4 tutter
17.5 InterfaceMode=E
xpert
InterfaceMode=Fl
17.6 ip
17.7 InterfaceMode=R
eplace
17.8 InterfaceMode=D
elay
18 Advanced Features
18.1 Latency
Calibration
18.2 Samples
18.3 Scripts
18.4 XML Files
External EDP
18.5 Control
18.6 Trace
19 Menu Reference
19.1 File Menu
19.1.1 Open Project
19.1.2 Open Loop
19.1.3 Save Project
19.1.4 Save Project
Template
19.1.5 Save Loop
19.1.6 Save Quick
19.1.7 Exit
19.2 Presets Menu
19.3 Configuration
Menu
19.3.1 Presets
19.3.2 Track Setups
19.3.3 MIDI Control
19.3.4 Keyboard
Control
19.3.5 Buttons
19.3.6 Scripts
19.3.7 Samples
19.3.8 MIDI Devices
19.3.9 Audio Devices
19.3.10 Global
Parameters
Display
19.3.11 Components
19.3.12 Palette
19.3.13 External EDP
19.4 Help Menu
19.4.1 Key Bindings
19.4.2 MIDI Bindings
19.4.3 About
20 The Future
21 Acknowledgments

1 Introduction
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 protected].
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.
2 What's New
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.
2.1 Release 1.29
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:
• Changing a track's Mono mode would not take effect
until Mobius restarted
• Preset alert popup cannot be disabled
• Audio blip when doing a Retrigger with an
immediate Mute
• Selecting a Setup doesn't immediately change
the Presets
• Occasional crash running scripts that don't end
with a Wait statement
2.2 Release 1.28
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:
• Crash opening the main window when running under
Usine
• Keyboard freeze and occasional crash when
selecting tracks with the keyboard
• When using Setups, a Reset after recording a
loop without changing any controls resets to the default
state rather than the state in the Setup
2.3 Release 1.27
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:
• Crash when binding keys to the UI functions related to
parameter control (NextParameter, PrevParameter,
IncParameter, DecParameter)
• Main track controls snapping back to original
values after changing tracks using the keyboard
• GlobalPause not working
2.4 Release 1.26
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:
• Off - the mode is unconditionally turned off
• Follow - the current mode is continued
• Remember - the mode in effect when the next
loop was last playing is restored
Until now, Mobius has operated as if the transfer mode was
Follow for all function types.
The following new functions have been added:
• Pause - halt playback then resume from the same
location
• Clear - erase the current loop contents leaving
an empty loop of the same size
• Instant Multiply 2 - immediately multiply the
loop by 2
• Instant Multiply 3 - immediately multiply the
loop by 3
• Instant Multiply 4 - immediately multiply the
loop by 4
In addition the features described in this section, see the
README file for more information on the bugs fixed in this
release.
2.5 Release 1.25
2.5.1 Bugs Fixed

• Crash deleting the plugin in many hosts when MIDI


devices are selected
• Loop switch functions can now operate as
mode ending events for Multiply and Insert mode
2.5.2 New Parameters

Overdub Transfer
A preset parameter that controls how overdub mode is carried
forward when switching loops. If set to Off overdub mode is
always off after switchign loops. If set to Follow the overdub
mode in the current loop is carried forward to the next. If set to
Remember the overdub mode of a loop is remembered when
leaving the loop, and restored when returning to it.
Modes Ignoring Secondary Feedback
A global parameter that lets you select loop modes during
which the Secondary Feedback control will not be active. This
is an advanced parameter that is used when the Interface
Mode parameter is set to Expert or Stutter. Normally all
recording modes are subject to Secondary Feedback when
using these interface modes.
2.5.3 New Display Components

Loop Number
A large number that may be displayed in the track strip to
make it easier to identify loops from a distance. The number
also functions as the focus lock indiciator, you can click on it
to activate or deactivate focus lock, and it will change color
when focus lock is active. This is easier to see than the small
focus lock button.
Loop Radar
An alternative to the horizontal "thermometer" that displays
the current playback position in the loop using a graphic that
resembles a pie chart or radar screen. This makes it easier to
determine the position in the loop from a distance.
2.5.4 New Script Variables

globalMute
Set to "true" if we are in global mute mode, and the current
track will be restored to play mode when the global mute is
canceled.
solo
Set to "true" if this track is currently being soloed.
nextLoop
Set to the number of the next loop if we are currently in a
quantized loop switch.
2.6 Release 1.24
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.
2.7 Release 1.23
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.
2.8 Release 1.22
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.
2.9 Release 1.19
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.
3 Upgrading
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.
3.1 Upgrading to 1.24
Release 1.24 made major changes to the way MIDI events
are bound to functions and controls. Among the changes are:
• No more Mobius global channel, Mobius receives on all
channels and bindings are made to a specific channel.
• No more "track channels".
• Function and controller bindings may now be
made for specific tracks and track groups.
• The long list of track/group number suffixed
controls in the MIDI Control dialog has been replaced by
a short list of unqualified names, and a Scope selector.
• MIDI Configuration and Preset definitions must
now assign a specific MIDI channel as well as a program
change number if they are to be called up with program
changes.
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.
3.2 Upgrading 1.16 (or earlier) to 1.18
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.
4 Getting Started
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.
4.1 Mobius VST Plugin
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.
4.2 MIDI Devices
Mobius uses MIDI devices in three ways:
1. Input devices are used to receive commands from a
footswitch, keyboard or control surface.
2. Output devices are used to send MIDI clocks
and other MIDI synchronization messages to a drum
machine or sequencer.
3. Through devices are used to pass MIDI
messages received from an Input device to another
device.
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.
5 Concepts
Before diving into the details, let's review a few fundamental
EDP concepts and define some extended Mobius concepts.
Function
An operation performed by Mobius at the request of the user.
Examples include Record, Overdub, and Multiply.
Event
An operation Mobius performs at a certain time in the future.
Events are scheduled during the processing of a function. A
function may schedule more than one event.
Function Trigger
An external stimulus that causes Mobius to perform a
function. There are three types of function triggers: pressing
keyboard keys, clicking UI buttons, and sending MIDI
messages.
Function Binding
The association of a function trigger with a function. For
example, the "R" key may be bound to the Record function.
SUS or Sustain Function
A function that begins to take effect when the trigger is "down"
and stops having effect when the trigger goes "up". For
keyboard triggers, this is a key going down and up. For UI
button triggers, this is the mouse button going down and up.
For MIDI note messages, down is note on and up is note off.
For MIDI control change messages, down is indicated with a
non-zero control value, up with a zero value.
Long Press
Holding down a function trigger for more than a few hundred
milliseconds. Some functions change behavior if they are
initiated with a long press.
Control
A named value that may be set by the user to control how
audio is recorded and played in a track. Examples include
Input Level, Output Level, Feedback, and Pan.
Control Binding
The association of a Control with a MIDI event. Controls are
almost always bound to MIDI continuous controllers so the
value may be accurately and smoothly changed. It is also
possible to bind controllers to MIDI notes where the velocity of
the note will set the controller value.
Parameter
A named value that may be set by the user to control how
functions are performed. Parameters may be changed at any
time. Examples include Quantize, InsertMode, and
AutoRecord.
Preset
A named collection of parameter values. There may be any
number of presets. One preset is selected which means that
its parameter values are being used when functions are
performed.
MIDI Configuration
A named collection of parameter values that determine how
Mobius processes MIDI messages. A MIDI Configuration is
similar to a Preset, but only contains parameters related to
MIDI. This separation allows you to define many presets
without having to duplicate a potentially large amount of MIDI
parameters in each.
Setup
A named collection of track parameters that define the state
for each track when it is reset. The track parameters that may
be set include control values such as input and output levels,
as well as assignments such as the preset, group, and focus
lock.
Global Parameters
A single collection of parameter values that control a few
aspects of Mobius behavior that do not need to be changed
dynamically, as is the case with Preset Parameters.
Sample
The smallest unit of digital audio.
Audio Channel
An audio device supports one or more channels depending on
configuration. Mono audio has one channel, stereo two
channels, and 5.1 surround has six channels.
Frame
One or more samples corresponding to the number of audio
channels. A mono frame will have one sample, a stereo frame
will have two samples etc. The frame is the smallest unit of
audio content that Mobius will deal with. Though not
technically correct, you can usually think of a frame and a
sample as being the same thing. Phrases like "sample
accurate positioning" really should be "frame accurate
positioning" because it rarely makes sense to talk about
individual samples within a frame.
Loop
A section of recorded audio content that may be played back
continuously and modified during playback.
Layer
A copy of a loop made before the loop is modified. A new
layer is created every time a loop plays from beginning to end,
and is modified during playback. Layers are the "history" of
the loop, when you use the Undo function, the previous layer
is restored and begins playing.
Track
A collection of loops. Only one loop in the track may be active
at a time, but more than one track may be playing a loop
simultaneously. You can think of a track like a virtual instance
of an EDP.
Mode
A track is always in one of several modes. Functions may
change the mode the track is in, and the mode may affect how
functions are performed. Example modes include Reset,
Record, Play, Multiply, and Switch Quantize.
Project
A collection of layers, loops, tracks, and configuration settings
stored on the file system. The current Mobius state, including
all audio content, may be saved to project files at any time. A
previously saved project may be loaded back into Mobius.
Script
A file containing the description of one or more Mobius
functions that are to be performed at certain times.
6 User Interface
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.
6.1 Using Buttons
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.
6.2 Using The Keyboard
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.
6.3 Using Tracks
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.
6.4 The Status Area
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.
6.4.1 Configuring the Status Area

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.
6.5 Using Presets
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.
6.6 Using Setups
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:
• Preset
• Input Level
• Output Level
• Feedback
• Secondary Feedback
• Pan
• Mono
• Group
• Focus Lock
• VST Input Port
• VST Output Port
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.
6.7 MIDI Control
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.
Input Level
Determines the amount of audio signal present at the audio
inputs that will be recorded. This is normally left at the highest
level of 127 but may be reduced if you need to "trim" a loud
input.
Output Level
Determines the level of the audio signal in a track that is sent
to the audio outputs. This is often lowered when mixing the
output of several tracks.
Feedback
Determines the level of the audio signal from the previous
layer that is copied into the next layer being recorded.
Secondary Feedback
A level of feedback that is used instead of the primary
feedback during some special modes.
Pan
Determines the balance between the left and right stereo
output. Note that this not a "true" pan in that panning hard left
will simply silence the right channel, the right channel is not
moved to the left.
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:
• Global
• Track 1
• Track 2
• Track 3
• Track 4
• Track 5
• Track 6
• Track 7
• Track 8
• Group 1
• Group 2
• Group 3
• Group 4
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.
7 Global Parameters
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.
Quick Save File
The location of the file where the current loop is saved when
selecting the Save Quick menu item from the File Menu. This
should be an absolute path name including a drive letter. If
this is a relative path, it will be relative to the Mobius
installation directory, which by default is:
c:\Program Files\Mobius
The name must not include the .wav extension. The actual
name of the file will be derived from the specified name plus a
number to make the name unique. This allows you to use the
Save Quick item several times without overwriting the file
containing the previous loop that was saved.
Noise Floor
Determines the minimum signal level that is considered to be
"interesting" content when overdubbing. This is used in the
implementation of what the EDP calls "auto undo". While
overdub is on and new content is added to the loop, a new
layer is generated at the end of each iteration through the
loop. If the new content is below the noise floor however, a
new layer is not generated. This allows you to leave overdub
on and listen to the loop a few times without having
unnecessary layers generated on each iteration.
Fade Frames
Mobius performs a cross fade whenever playback must
change abruptly such as when performing an unquantized
loop switch, replace, or unrounded multiply. This value is the
length of the fade in audio frames.
This is necessary to prevent "snapping" or "clicking" sounds
during playback caused by sudden changes in sample level.
Setting the number of fade frames to zero will remove all
cross fade processing. This can result in audible clicks which
are generally undesirable but can sometimes be used as a
rhythmic effect. Setting the value too high can result in audible
"pumping" or "breathing" which is also undesirable but might
be used as an effect.
Drift Resync Frames
The number of frames Mobius will allow a loop to drift out of
sync with a master clock when using one of the
synchronization modes. When the drift is greater than this
number of frames, the loop is retriggered to bring it back into
alignment with the master clock. See the Drift Retrigger
section for details.
Save Project Layers
When checked, complete layer histories are saved with a
project. By default, only the most recent layer is saved. Saving
layer histories can be interesting if you want to know more
about how Mobius manages memory, but is normally
undesirable as it requires more disk space.
BUG:There are problems restoring projects saved with layers,
avoid for now.
Monitor Audio Input
Causes the audio input for the active track to be sent
immediately to the audio output device. This can be used to
monitor the signal being sent to Mobius if you are not
monitoring using an external mixer or the sound card. This is
normally done only if you are using Mobius as a VST plugin,
and only if your sound card supports ASIO drivers.
16 Bit Wave Files
When checked, Mobius will save all audio content as 16-bit
integers. If not checked, audio is stored as 32-bit floating point
numbers. 32-bit is generally preferred, but not all audio
applications are able to open 32-bit files.
Group and Focus Lock Functions
Specifies which functions and scripts are sensitive to the track
group and focus lock settings. If a function or script name
does not appear in the panel on the right, it will be performed
only in the selected track.
Modes Ignoring Secondary Feedback
Specifes the loop modes during which the Secondary
Feedback control will not be active. This is an advanced
parameter that is used when the Interface Mode parameter is
set to Expert or Stutter. Normally all recording modes are
subject to Secondary Feedback when using these interface
modes.
8 Saving and Loading
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.
8.1 Individual Loops
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.
8.2 Quick Save
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:
c:\mystuff\mobius\quicksave
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.
8.3 Projects
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.
9 Functions
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).
9.1 Unimplemented EDP Functions
Let's start with a list of EDP functions Mobius definitely does
not implement.
• Loop Windowing - actually just LongUndo and
ShortUndo in a specific context
• Undo - no support right now for short undo
• ShortUndo - direct MIDI function
• LongMultiply - GeneralReset if the current loop
is in Reset, Substitute if the loop is not in Reset.
But the Multiply still runs for 400ms.
Some ambiguity on 5-37, suggests Long-Multiply
becomes SUSMultiply.
• Long presses while in SUSOverdub behave
like short presses
• LongReverse becomes a SUSReverse
• LongParameter returns to Play mode
• LongTrigger Resets the triggered loop (unless
SamplerStyle=Att)
• LongInsert does Replace. Not compatible with
SUSInsert? Have to set up an insert for 400ms?
• LongMute becomes SUSMute, MuteMode
always Continuous
• LongOverdub becomes SUSOverdub
• LongStartPoint does QuantStartPoint
• TempoSelect
• StopSync
• AutoStartPoint
• ParameterButton - remote control by virtually
pressing the parameter button
• Exit Parameters
• BeatTriggerSample - just use
• MIDIBeatSync
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
• MIDI Smart Buttons, also known as "Double
Clicks"
• MIDI Sync Indicators
• MIDI Data Wheel
• MIDI Pipe - not applicable?
• Dump - not applicable
• Load - not applicable
• SysEx - not applicable
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.
9.2 Supported EDP Functions
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.
Reset
GeneralReset
Record
Long press Record will perform Reset. Mobius doesn't throw
away all of the existing layers if you start recording over a loop
that already had content. It just adds new layers, and you can
then undo back to the previous layers. I'm not sure I like this,
but you can always use Reset to clear the layer list.
Overdub
Mostly as in EDP. Overdub is a "sticky" mode that you're
supposed to return to when you leave another mode. This
seems to work, but there are probably some complicated
mode transitions that cause overdub to be incorrectly turned
off. Mobius supports quantization of overdub functions with
extended OverdubMode parameter values.
Undo, LongUndo
Mobius only supports long undo, so the Undo, ShortUndo,
and LongUndo functions all do the same thing. Since Mobius
does not yet support loop windowing, you can undo an
unrounded multiply. I actually like this a lot so when loop
windowing is supported Mobius will provide specific functions
to move the window rather than overloading undo.
Unlike the EDP, Mobius undo is not constrained by the
application of the Reverse function. You can undo past the
point where a reverse was performed.
Scheduled events are always undone before the layer. So if
you have several quantized events stacked, you must press
Undo once for each event.
Multiply
Mostly as in EDP. I was unsure about multiply behavior so I
added a new MultiplyMode parameter with values Traditional
and Overdub. In traditional mode, when you end a multiply,
the multiply will continue until you have reached a cycle
boundary relative to where the multiply was started. So if you
start a multiply in the middle of a loop, then end the multiply
AFTER the middle of the next new cycle, a third cycle will be
added because you've already crossed the first cycle
boundary and the end has to be rounded up to the next cycle
boundary. In Overdub mode, multiply always ends in the
current cycle which made more sense to me. But this may be
a misinterpretation of how the EDP works.
Long press multiply doesn't work. Unrounded multiply during
rounding (described on 5-36) probably does not work.
Insert, InsertOnly
Mostly as in EDP. Long-press insert does not do Replace.
When in a loop with SamplerStyle=Once, Insert is supposed
to retrigger the current loop but leave the return transition. In
Mobius, Insert cancels the return and begins inserting in the
current loop.
Stutter, SUSStutter
During stutter mode, repetitions of the current cycle will be
inserted whenever the end of the cycle is reached. Mobius
stutters the cycle you were in when the function was
performed. The EDP manual suggests that the stuttered cycle
should be the one AFTER the current cycle. I have a slight
preference for the current cycle because you can get to the
next one just by quantizing. Let me know if you find this
difference upsetting.
Mute
Long-press Mute is not being be converted to SUSMute.
Mobius adds an additional MuteMode parameter value Pause.
Pause mode behaves like pause on a tape recorder, the
sound stops and so does the clock. When you unmute after a
pause, playback resumes from where it was paused.
Replace
Substitute
As in EDP, except that InterfaceMode has no effect.
Speed, FullSpeed, HalfSpeed
Reverse, Forward, Backward
As in EDP, but there is no undo restriction after changing
direction. You can undo past the layer where the direction was
changed.
NextLoop
Mobius allows any function to be "stacked" for application
after the switch. The new TimeCopyMode and
SoundCopyMode parameters may be used to specify which
mode you will be in after a timing or sound copy into an empty
loop.
SamplePlay
Retrigger
Start Point
SUSRecord
SUSOverdub
There may be cases where overdub is lost if you keep the
SUSOverdub trigger down at the same time as performing
other functions.
SUSMultiply
SUSUnroundedMultiply
SUSInsert
SUSUnroundedInsert
SUSMute
SUSReplace
SUSSubstitute
SUSReverse
SUSSpeed
SUSNextLoop
SUSMuteRetrigger
ReAlign
ReAlign doesn't always work correctly if you switch between
loops and layers that have a different cycle size. For best
results when synchronizing, avoid using unrounded multiply
and unrounded insert unless the Quantize parameter is set to
Cycle.
MuteReAlign
See ReAlign
QuantMIDIStartSong
MuteQuantMIDIStartSong
QuantStartPoint
9.3 Mobius Functions
This section describes new Mobius functions that are not
found in the EDP.
Play
End the current mode and return to play mode. This is like a
universal mode cancel function. It will get you out of modes
like Insert, Multiply, Rehearse, Replace, Substitute, Overdub,
and Mute and return you to Play. It does not cancel Reverse
or HalfSpeed. It can also be used to cancel a loop switch
when confirmation is on, since normally Undo is used as a
confirming action.
Pause
Mute the track and freeze the playback and record positions.
The effect is similar to pressing the pause button on a tape
deck. When pause is released, the track will continue playing
and recording from the same position. This behavior is also
available with the Mute function if the Mute Mode parameter is
set to Pause.
Global Pause
Perform a Pause function in all tracks.
Next Parameter
Move to the next dynamic parameter in the UI. See The
Status Area and Configuring the Status Area for more
information on dynamic parameters.
Previous Parameter
Move to the previous dynamic parameter in the UI. See The
Status Area and Configuring the Status Area for more
information on dynamic parameters.
Increment Parameter
Increment the current dynamic parameter value.
Decrement Parameter
Decrement the current dynamic parameter value.
Global Reset
Perform a GeneralReset function for all tracks.
Global Mute
Mute all tracks that are currently playing, but do not unmute
any tracks that are currently muted. After using Global Mute, if
you use it a second time, it will unmute only those tracks that
were muted previously. Note that this is different than simply
toggling the current mute state in all tracks.
Solo
Mute all tracks other than the active track, unmute the active
track if it is currently muted. If you immediately use Solo
again, it will restore the mute state of all tracks to what it was
before the first Solo.
Loop n
Trigger the numbered loop in the current track. The EDP
accomplishes this with MIDI note events relative to the
LoopTrig parameter. Mobius defines a specific function for
each loop trigger which may then be bound to arbitrary MIDI
events.
Previous Loop
Trigger the previous loop in the current track. The same as
the EDP's NextLoop function, but goes the other direction.
Clear
Erase the current contents of the loop, leaving an empty loop
of the same size as the original.
Slip Forward
Instantly move playback position forward.
Slip Backward
Instantly move playback position backward.
Multiply 2
Performs an immediate 2x multiply of the loop. This differs
from the Multiply function in that you do not have to wait for
the loop to be extended.
Multiply 3
Performs an immediate 3x multiply of the loop.
Multiply 4
Performs an immediate 4x multiply of the loop.
Trim Start
Removes the content of the loop from the beginning to the
current frame. This is the same as doing an unrounded
multiply from the beginning but requires only one function>
Trim End
Removes the content of the loop from the current frame to the
end. This is the same as doing an unrounded multiply to the
end, but requires only one function.
Redo
Returns to a layer that had previously been undone. The
number of layers that may be redone is controlled by the Max
Redo Layers preset parameter.
Next Track
Active the next track. The active track will have input focus
meaning that it will response to button, key, and MIDI events.
If the previously active track was running, it will still be
running.
Previous Track
Active the previous track.
Track n
Active the numbered track.
Next Group
Assign the track to the next track group, or remove the
assignment if the track is already in the last group. A long
press will always remove the assignment. By default there are
4 groups, so successive calls of the Next Group function
would assign group 1, 2, 3, 4, then back to no assignment.
Track Copy
Copies the content of the adjacent track on the left into the
current track.
Track Copy Timing
Copies the timing of the adjacent track on the left into the
current track.
Rate Up
Increase the playback rate to achieve a one semitone rise in
pitch.
Rate Down
Decrease the playback rate to achieve a one semitone fall in
pitch.
Rate Normal
Return the playback rate to normal.
Rate Next
Move to the next playback rate in the rate sequence. If you
are currently at the end of the sequence, move to the first rate
in the sequence. See the RateSequence parameter.
Rate Previous
Move to the previous playback rate in the rate sequence. If
you are currently at the beginning of the sequence, move to
the last rate in the sequence.
Rate Shift
Defines the center note for a rate shift range. Pressing this
note will return the rate to normal. Pressing a note below will
lower the rate, pressing a note above will raise the rate.
Pitch Up
Increase the pitch one semitone.
Pitch Down
Decrease the pitch one semitone.
Pitch Normal
Return the pitch to normal.
Pitch Next
Move to the next pitch in the pitch sequence. If you are
currently at the end of the sequence, move to the first pitch in
the sequence. See the PitchSequence parameter.
Pitch Previous
Move to the previous pitch in the pitch sequence. If you are
currently at the beginning of the sequence, move to the last
pitch in the sequence.
Pitch Shift
Defines the center note for a pitch shift range. Pressing this
note will return the pitch to normal. Pressing a note below will
lower the pitch, pressing a note above will raise the pitch.
Bounce Record
Start or stop a bounce recording. The contents of the playing
tracks may be mixed and copied to an empty track,
automatically muting the source tracks after the bounce. See
the Bounce Recording section for more details.
Sample Trigger n
Begin playback of a configured sample. See Samples for
more information.
Cancel Script
Cancel any script that may be running.
Pause Script
Pause execution of the script until a ResumeScript function is
received.
Resume Script
Resume a script that is paused after the evaluation
PauseScript function or a Wait resume statement.
Start Script Recorder
Begin recording user interaction with Mobius that can be
saved as a script.
Stop Script Recorder
Stop recording user interaction with Mobius.
Save Script
Save the user actions recorded by Start Script Recorder to a
script file. You will be prompted for the name of the file.
StartAudioRecorder
Begin capturing audio being sent to the output device.
StopAudioRecorder
Stop capturing audio being sent to the output device.
SaveAudio
Save the audio captured by the Start Audio Recorder function
to a file.
Save Loop
Perform a "quick save" of the current loop. See Saving and
Loading for details.
Debug
Run a debugging function. I use this to test various things, it
may or may not do something catastrophic. Think of it as that
big red button that you're never supposed to press.
Stop Song
Sends a MIDI Stop Song event. This happens during all
synchronization modes and is not subject to quantization.
9.3.1 Slip Functions

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.
Next Subcycle
Playback jumps to the next subcycle boundary.
Next Cycle
Playback jumps to the next cycle boundary. If there is only
one cycle in the loop, the effect is identical to Retrigger.
Next Loop
Playback jumps to the loop boundary. The effect is identical to
Retrigger.
Relative Subcycle
Playback jumps an amount equal to one subcycle, relative to
the current position. The ending position may not be on a
subcycle boundary.
Relative Cycle
Playback jumps an amount equal to one cycle, relative to the
current position. The ending position may not be on a cycle
boundary. If there is only one cycle in the loop, this will have
no affect.
Milliseconds
Playback jumps a configurable number of milliseconds.
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.
10 Parameters
10.1 Unimplemented EDP Parameters
The following parameters are either not implemented, or not
relevant for Mobius.
• Channel
• InterfaceMode=Delay
• Velocity
• LoopTrig - not necessary, triggers have unique
function names
• Source# - not necessary
• ControlSource - not necessary
• Overflow - not applicable
• Presets - not applicable
10.2 Supported EDP Parameters
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.
Feedback
See the Controlling Feedback section for full details on how
feedback can be used.
8thsPerCycle
Specifies the number of subcycles per cycle. There is no limit
on this value, though large values are practically useless.
AutoRecord
Determines whether we begin recording immediately when
entering an empty loop.
FeedBkCont
The MIDI controller number for adjusting feedback. Set in the
MIDI configuration rather than as a preset parameter.
InsertMode
My interpretation of Rehearse mode seems to be quite
different than the EDP, but I think I like mine better. I will
revisit this someday and add a parameter to let you switch
between the two behaviors.
LoopCopy
Both sound and timing copies are supported. Supports the
extended Mobius parameters TimeCopyMode and
SoundCopyMode.
MoreLoops
The number of loops in a track. Mobius just calls this "Loop
Count"
MuteMode
Mobius adds the mode Pause option. Pause behaves like
pause on a tape recorder, the clock stops as well as muting
the sound.
Quantize
RecordMode
RoundMode
SamplerStyle
Attack is partially supported. It will set the output level
according to the velocity of the Note On event, but will not go
into mute when the Note Off event is received. Once is buggy,
I do not recommend using it.
SwitchQuant
Also supports SubCycle and ConfirmSubCycle.
Threshold
Similar to EDP though the levels will probably feel different.
Mobius seems to be more sensitive.
VolumeCont
Specify the MIDI controller number for output level control. Set
in MIDI configuration rather than as a preset parameter.
Sync
See the Synchronization section for complete details.
Loop/Delay (InterfaceMode)
Partial support for modes In, Out, and Stutter. See the section
Interface Modes for complete details.
10.3 Mobius Parameters
The following are new Mobius parameters that are not found
in the EDP.
MuteCancel
Determines whether Mute mode is canceled when other
functions are used. See the Mute Cancel section for more
information.
NoFeedbackUndo
A boolean option. When true, suppresses the retention of
layers when the only change made to them during the last
iteration was the application of feedback.
MaxUndo
The maximum number of layers will retain for undo.
MaxRedo
The maximum number of layers will retain for redo.
TimeCopyMode
When performing a LoopCopy=Timing, this specifies the
mode you want to be in after the copy. By default this is Insert
mode, but you may also select Play, Overdub, or Multiply
modes.
SoundCopyMode
When performing a LoopCopy=Sound, this specifies the mode
you want to be in after the copy. By default this is Multiply
mode, but you may also select Play, Overdub, or Insert
modes.
MultiplyMode
Determines how a multiply is ended. With a value of Tradition
multiply ending should be as on the EDP. With a value of
Overdub, the multiply will end no later than then end of the
current cycle. That is, we will not necessarily add a multiple of
full cycles relative to the time the multiply was started. This
may reflect my misinterpretation of how multiply works on the
EDP.
OverdubMode
May be set to Quantize or SUSQuantize so that overdub may
be quantized like other functions.
TrackCopy
Determines what happens when you activate a track that has
no content. If the value is Timing, the timing of the active loop
in the last track will be copied into a new loop in the new track.
If the value is Sound, the content of the active loop in the last
track is copied into the new track.
No Layer Flattening
When checked, Mobius will not merge the content fed back
from the previous layer with new content while the layer is
recorded. Instead, the content of each layer will be merged
dynamically as the loop plays. This can be useful as a
technique but requires more CPU overhead. See the
Controlling Feedback section for more information.
Rate Sequence
May be set to 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). Once a rate sequence is defined, the rate
may be changed using the Rate Next and Rate Previous
functions.
Rate Shift Retrigger
When checked, causes the loop to be retriggered whenever
the rate changes with the RateUp, RateDown, RateNormal,
RateNext, RatePrev, and RateShift functions.
Pitch Sequence
Same as Rate Sequence but defines a sequence for the itch
Shift function that changes pitch without changing tempo.
Pitch Shift Retrigger
When checked, causes the loop to be retriggered whenever
the rate changes with the PitchUp, PitchDown, PitchNormal,
PitchNext, PitchPrev, and PitchShift functions.
Bounce Quantize
Selects the quantization level to be used with the Bounce
Record function.
Overdub Transfer
Controls how overdub mode is carried forward when switching
loops. If set to Off overdub mode is always off after switching
loops. If set to Follow the overdub mode in the current loop is
carried forward to the next. If set to Remember the overdub
mode of a loop is remembered when leaving the loop, and
restored when returning to it.
Reverse Transfer
Controls how reverse mode is carried forward when switching
loops. If set to Off the direction is always forward after
switching loops. If set to Follow the direction of the current
loop is carried forward to the next. If set to Remember the
direction of a loop is remembered when leaving the loop, and
restored when returning to it.
Rate Transfer
Controls how both the Half Speed and Rate Shift modes are
carried forward when switching loops. If set to Off rate is
always returned to normal after switching loops. If set to
Follow the current rate is carried forward to the next loop. If
set to Remember the rate of a loop is remembered when
leaving the loop, and restored when returning to it.
Pitch Transfer
Controls how Pitch Shift is carried forward when switching
loops. If set to Off pitch is always returned to normal after
switching loops. If set to Follow the pitch of the current loop is
carried forward to the next. If set to Remember the pitch of a
loop is remembered when leaving the loop, and restored
when returning to it.
10.3.1 Mute Cancel

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:
• Mute - A function that takes a loop in or out of mute
mode.
• Modal Edit - A function that modifies the loop,
and enters a mode that lasts until the mode is canceled.
• Instant Edit - A function that modifies the loop,
but does not enter a mode.
• Trigger - A function that changes the playback
and record position of the loop.
• Effect - A function that changes the way the
loop is played, but does not result in a permanent
modification.
• Global - A global function that does not affect
a particular track, or performs an operation that may
temporarily override mute modes.
This table shows the available values for the Mute Cancel
parameter:
Never
Mute mode is not canceled until you use another Mute
function. Note that mute may still be temporarily canceled with
global functions such as Solo.
Edits
Mute mode is canceled whenever a function that modifies the
loop is used. This includes both the Modal Edit and Instant
Edit functions.
Triggers
Mute mode is canceled by the Modal Edit and Instant Edit
functions as well as the Trigger functions such as Next Loop,
Retrigger, etc.
Effects
Mute mode is canceled by the Modal Edit, Instant Edit, and
Trigger functions as well as the Effect functions such as
Reverse, Halfspeed, etc.
Custom
The functions that cancel mute mode may be individually
selected.
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.
10.3.1.1 Function Classes

The Mute functions are:


• Mute
• Mute On
• Mute Off
• Sustain Mute
• Sustain Mute Retrigger
• Mute Realign
• Mute Start Song
• Play
The Modal Edit functions are:
• Reset
• General Reset
• Global Reset
• Record
• Sustain Record
• Rehearse
• Overdub
• Sustain Overdub
• Multiply
• Sustain Multiply
• Sustain Unrounded Multiply
• Insert
• Insert Only
• Sustain Insert
• Sustain Unrounded Insert
• Stutter
• Sustain Stutter
• Replace
• Sustain Replace
• Substitute
• Sustain Substitute
the Instant Edit function are:
• Instant Multiply X
• Undo
• Redo
• Start Point
• Trim Start
• Trim End
• Clear
• Slip Forward
• Slip Backward
• Quant Midi Start Point
the Trigger functions are:
• Next Loop
• Previous Loop
• Sustain Next Loop
• Sustain Previous Loop
• Retrigger
• Sample Play
• Loop Trigger X
• Realign
the Effect functions are:
• Speed
• Fullspeed
• Halfspeed
• Rate Down
• Rate Up
• Rate Next
• Rate Previous
• Rate Shift X
• Rate Normal
• Pitch Down
• Pitch Up
• Pitch Next
• Pitch Previous
• Pitch Shift X
• Pitch Normal
• Reverse
• Forward
• Backward
The Global functions are:
• Track X
• Focus Lock
• Track Group
• Checkpoint
• Sample X
• Start Song
• Stop Song
• Sync Master
• Resume Script
• Start Script Recording
• Save Script Recording
• Stop Script Recording
• Start Audio Recording
• Save Audio Recording
• Stop Audio Recording
• Save Loop
• Bounce
• Pause
• Sustain Pause
• Global Mute
• Global Pause
• Solo
11 Controlling Tracks
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:
• Focus Lock
• Track Groups
• Track Binding Scope
• Group Binding Scope
11.1 Focus Lock
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.
11.2 Track Groups
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.
group1
Loop over all tracks in group 1
group2
Loop over all tracks in group 2
group3
Loop over all tracks in group 3
group4
Loop over all tracks in group 4
focused
Loop over all tracks with focus lock on
muted
Loop over all tracks whose loop is muted
playing
Loop over all tracks whose loop is playing (not muted)
11.3 Track Binding Scope
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:
• Focus Lock
• Mute
• Solo
• Retrigger
• Reverse
• Speed
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.
11.4 Group Binding 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.
12 Controlling Feedback
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:
1. Continuous
2. One Time
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.
1. Flattening
2. Dynamic Merging
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.
13 Rate Shifting
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.
• Rate Up
• Rate Down
• Rate Next
• Rate Prev
• Rate Normal
• Rate Shift
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.
14 Pitch Shifting
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.
• Pitch Up
• Pitch Down
• Pitch Next
• Pitch Prev
• Pitch Normal
• Pitch Shift
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.
15 Bounce Recording
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.
16 Synchronization
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.
• Master - Mobius is the sync master and sends MIDI
clocks to other devices
• Slave - Mobius is a sync slave and receives
clocks from another device
• Peer - One Mobius track is the sync master for
other Mobius tracks (EDP calls this brother sync)
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.
Off
No synchronization is performed.
Out
Mobius is the sync master and sends MIDI clocks. MIDI Start,
Stop, and Continue messages are sent automatically.
Out User Start
Mobius is the sync master and sends MIDI clocks. MIDI Start
messages must be sent manually.
In
Mobius is a sync slave and receives MIDI clocks. The start
and end of the loop are determined by the Quantize and
8thsPerCycle parameter.
MIDI Beat
Mobius is a sync slave and receives MIDI clocks. The start
and end of the loop are quantized to a MIDI beat.
MIDI Bar
Mobius is a sync slave and receives MIDI clocks. The start
and end of the loop are quantized to a MIDI bar as determined
by the 8thsPerCycle parameter. This is the same as In except
that the Quantize parameter does not have to be set.
Host Beat
Mobius is a sync slave and receives beats from the VST host.
The start and end of the loop are quantized to a beat as
defined by he VST host.
Host Bar
Mobius is a sync slave and receives beats from the VST host.
The start and end of the loop are quantized to a bar as
defined by he VST host.
The Track Sync Mode parameter is valid only when Sync
Mode is Out or Out User Start. See Track Synchronization for
details.
16.1 Drift Retrigger
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.
16.2 Sync=Out
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:
• Record End (with Record or any alternate ending)
• Unrounded Multiply
• Unrounded Insert
• Start Point
• Unmute when MuteMode=Start (retrigger)
• Mute then Undo when MuteMode=Continuous
(retrigger)
• Loop Switch when SamplerStyle is Start,
Once, or Attack
• ReAlign (at the local loop start point)
• Mute ReAlign
• Mute/Multiply (same as ReAlign)
• MIDI Start Song (EDP calls this
QuantMIDIStartSong)
• Mute + MIDI Start Song (EDP calls this
MuteQuantMIDIStartSong)
A MIDI Stop Song message is sent after the following
functions:
• Reset
• General Reset
• Global Reset
• Record Start
• Mute when MuteMode=Start
16.2.1 Speed Sync Adjust

The new Mobius parameter Speed Sync Adjust controls how


output MIDI clocks are generated when switching to half
speed.
• Tempo - Clock rate is cut in half, like the EDP
• Resize - Clock rate stays the same, loop pulse
count is doubled to prevent it from retriggering in the
middle
• Continue - Both clock rate and pulse count
stay the same, causing the loop to be retriggered at its
midpoint
16.2.2 Unrounded Sync Adjust

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:
No Changes
No change to either the tempo or pulse count. The loop will
continue counting sync pulses and retrigger the loop. If the
new loop is longer than the previous loop, it will be retriggered
before it plays to completion. If the new loop is shorter than
the previous loop, the loop will play to completion, then play a
portion of the front of the loop again before retriggering.
Change Tempo
The tempo of the outbound MIDI clocks is changed to match
the number of pulses in the new loop. This is perhaps the
most musically useful mode.
Change Pulses
The tempo of the outbound MIDI clocks is not changed, but
the pulse count is adjusted to match the tempo. The loop will
not retrigger in the middle as is the case with No Changes, but
it may not sound in sync with the external device.
16.2.3 Controlling Host Tempo

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:
1. A VST host capable of slaving to MIDI clocks
2. A MIDI loop back device
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.
16.3 Sync=Out User Start
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:
• MIDI Start Song (EDP calls this QuantMidiStartSong)
• Mute + MIDI Start Song (EDP calls this
MuteQuantMidiStartSong)
• ReAlign
• Mute ReAlign
• Mute/Multiply (same as ReAlign)
A MIDI Stop Song message is sent immediately after the
following functions:
• Reset
• General Reset
• Global Reset
• Record Start
• Mute when MuteMode=Start
16.4 Sync=In
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 mode is not available when Mobius is running as a VST
plugin. Use Sync=Host Bar or Sync=Host Beat instead.
16.5 Sync=MIDI Bar
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.
16.6 Sync=MIDI Beat
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.
16.7 Sync=Host Beat
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.
16.8 Sync=Host Bar
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.
16.9 Track Synchronization
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:
Off
Track sync is not enabled, the recording will not be quantized.
Sub Cycle
The recording will begin or end at the next subcycle of the
master track.
Cycle
The recording will begin or end at the next cycle of the master
track.
Loop
The recording will begin or end at the next loop start point of
the master track. This is what the EDP does.
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.
16.10 Missing Synchronization Features
16.10.1 Auto Start Point

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.
16.10.2 MIDI Sync Indicators
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.
16.10.3 Stop Sync

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.
16.10.4 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.
16.11 Synchronization Bugs
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:
• The SamplePlay function can cause an unrecoverable
dealignment in some sync modes.
• The Sampler Style parameter values Once and
Attack can confuse the sync pulse counter resulting in
incorrect drift retriggers.
• MIDI Song Position is not recognized when
realigning to an device while Sync=In.
• ReAlign after a dealignment from an
unrounded operation doesn't always work. Sometimes
this causes a premature drift retrigger, after which the
loop should be in sync.
• Switching between loops and layers that have
a different cycle length can confuse the pulse counter
and cause unnecessary drift retriggers.
• Leaving mute when Mute Mode is Pause can
cause a dealign because a MIDI Song Position is not
sent to the external device.
17 Interface Modes
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:
• Input Level
• Output Level
• Feedback
• Secondary Feedback
• Pan
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.
17.1 InterfaceMode=Loop
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.
17.2 InterfaceMode=In
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.
17.3 InterfaceMode=Out
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.
17.4 InterfaceMode=Stutter
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.
17.5 InterfaceMode=Expert
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.
17.6 InterfaceMode=Flip
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.
17.7 InterfaceMode=Replace
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.
17.8 InterfaceMode=Delay
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:
• Variable - Like the EDP, MIDI controllers may change
behavior when InterfaceMode=Delay
• Fixed - MIDI controllers do not change
behavior
18 Advanced Features
18.1 Latency Calibration
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.
18.2 Samples
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.
18.3 Scripts
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.
18.4 XML Files
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:
• ui.xml - configuration related to the user interface
• mobius.xml - configuration related to the non-
UI portions of the looping engine
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:
preset
Defines the selected preset for this track. Each track may
have a different preset, if no preset is selected the default
preset specified in the mobius.xml configuration file will be
used.
active
Set to true to indicate that this is the active track. There
should be only one track marked active, if no tracks are
marked active Mobius will automatically activate the first one.
outputLevel
Determines the initial value for the output level knob in each
track. If not specified, the output level will default to 127 (the
highest).
feedbackLevel
Determines the initial value for the feedback knob in each
track. If not specified, feedback will default to 127 (the
highest).
The Loop element may have the following attributes:
active
Set to true to indicate that this is the active track. There
should be only one track marked active, if no tracks are
marked active Mobius will automatically activate the first one.
frame
The playback position. If not specified playback starts from
frame 0 (the beginning of the loop).
The Layer element may have the following attributes:
cycles
The number of cycles in the layer. Although the entire layer
content is stored in one wave file, it can be logically broken up
into more than one cycle.
audio
Specifies a file system path to a wave file.
protected
Marks the wave file as being protected. Protected files will not
be overwritten or deleted when you save the project.
id
A unique numeric identifier for this layer. You will see these in
projects saved by Mobius, but you don't need to specify them
when writing a project by hand. They are used with Segment
elements to build complex layers that reference content from
other layers.
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.
18.5 External EDP Control
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.
MIDI Control
Controls which device will be responsive to functions initiated
by buttons, keys, or MIDI events. A value of Mobius means
that only the Mobius program will receive functions, EDP
means that only the external EDP will receive functions, and a
value of Both means, astonishingly, that both devices will
receive functions.
Channel
The channel on which the EDP receives MIDI messages.
Base Note
The first note or controller to which the EDP will respond. This
is what the EDP calls the Source# parameter.
Controllers
When checked, the EDP responds to MIDI continuous
controller events, otherwise the EDP responds to MIDI key
events. This is what the EDP calls the ControlSource
parameter.
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.
18.6 Trace
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:
1. Errors
2. Major operations
3. Minor operations
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.
19 Menu Reference
19.1 File Menu
19.1.1 Open Project

Loads a project from the file system. See the Saving and
Loading section for more details.
19.1.2 Open Loop
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.
19.1.3 Save Project

Saves a project to the file system. See the Saving and


Loading section for more details.
19.1.4 Save Project Template

Saves the current track configuration to a project without


saving any of the audio content. See the Saving and Loading
section for more details.
19.1.5 Save Loop

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.
19.1.6 Save Quick

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.
19.1.7 Exit

Halts Mobius and closes the window. All track content will be
lost.
19.2 Presets Menu
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.
19.3 Configuration Menu
19.3.1 Presets

Displays a dialog for editing presets. See the Using Presets


section for more information.
19.3.2 Track Setups

Displays a dialog for changing the initial settings for all tracks.
19.3.3 MIDI Control

Displays a dialog to specify how Mobius responds to MIDI


events. See the MIDI Control section for more information.
19.3.4 Keyboard Control

Displays a dialog to specify how Mobius responds to the


computer keyboard. See the Using The Keyboard section for
more information.
19.3.5 Buttons

Displays a dialog to specify which function buttons are


displayed at the top of the window. See the Using Buttons
section for more information.
19.3.6 Scripts

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.
19.3.7 Samples
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.
19.3.8 MIDI Devices

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.
19.3.9 Audio Devices

Displays a dialog to specify the audio input and output


devices. See the Getting Started section for more information.
19.3.10 Global Parameters

Displays a dialog to specify miscellaneous parameters that


affect the operation of Mobius. See the Global Parameters
section for more information.
19.3.11 Display Components

Displays a dialog to specify which loop status components are


displayed in the UI. See the Configuring the Status Area for
more information.
19.3.12 Palette

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.
19.3.13 External EDP
Displays a dialog to specify parameters necessary to control
an EDP hardware device. See External EDP Control for more
information.
19.4 Help Menu
19.4.1 Key Bindings

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.
19.4.2 MIDI Bindings

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.
19.4.3 About

The ubiquitous about dialog. Nothing really interesting here


besides the version number which you should include when
reporting problems.
20 The Future
Mobius is still under active development and I welcome any
feature requests. Apart from bug fixes, the expected order of
development will probably be:
• Pitch Shifting, Time Stretching, and Variable Playback
Rate
• Loop Windowing
• Script enhancements
• MAC Port
21 Acknowledgments
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

You might also like