Sei sulla pagina 1di 361

Mobius Looper Manuals Complete, March 2012

Installation Getting Started Exploring Techniques Synchronization Reference Using Scripting Using OSC to control Mobius

Mobius 2.0 Installation Guide


April 2012

Contents
1 2 3 3.1 3.2 4 5 5.1 6 7 7.1 8 9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 9.10 10 11 Introduction Documentation Installation Windows Installation OS X Installation Running Standalone Mobius Audio Device Configuration Audio Device Recommendations The First Loop MIDI Device Configuration MIDI Device Recommendations Other Control Options Mobius Plugin Recommended Hosts Plugin Insertion Plugin Pins Dual Window Mode Plugin MIDI Devices Plugin Parameters VST Patches Bypass Audio Input Monitoring Plugin Audio Devices and Latency Compensation Tuning Latency Next Steps

1 Introduction
Welcome and thank you for your interest in Mobius, the world's most powerful livelooping software! If you already know what Mobius does, you may skip ahead to the Documentation section.

If you're still wondering what the heck is this looping thing is all about, Mobius essentially lets you to make live audio recordings and play them back in an endless loop. While a loop is playing you may add to it and modify it in many ways. One of the most common uses for a looper is to record background parts for "one man band" solo performers but this is just scratching the surface of what Mobius can do. If you would like more information on the history and evolution of looping techniques the Loopers Delight web site is the best place to explore and learn. Mobius was inspired by many hardware and software loopers of the past and present, but most of its core features can be traced to the Gibson Echoplex Digital Pro (EDP) with Loop IV software. Though not technically an emulator, if you are familiar with the EDP you should feel at home. From a foundation of EDP features, Mobius adds multiple tracks, chromatic pitch and speed shifting, instant loop editing, scripting, and much more. Be warned that Mobius is a complex program with an enormous number of options. Many people say that it is "too complicated", the user interface is "ugly", and the documentation is "boring". All of these are true. If you are looking for a DL-4 emulator with photo realistic knobs you can just plug in and play then look elsewhere. If you are looking for a new musical instrument you can customize to work the way you want it to, then you've come to the right place. Just be prepared to do some reading and ask a lot of questions. If you decide to take the plunge, we strongly recommend you join the Mobius Support Forums . This is where most Mobius discussion happens. Mobius free because it is people like you that have helped make Mobius what is today. All we ask is that you report bugs and help diagnose them. You are also encouraged to send feature requests. We can't guarantee that we'll implement every request but just knowing what people want to do helps us make design decisions that may make those things possible in the future. Thank you for helping us make Mobius better, we hope you enjoy it!

2 Documentation
Because Mobius is a complex application, the documentation has been broken up into several parts to make it easier to digest. The documentation is installed with the product and is also available on the web at the Mobius Document Index . If you are new to Mobius, please read at least the Getting Started With Mobius manual before you begin. Then at least skim Exploring Mobius to become familiar with some of the more advanced features. The other manuals go into more depth on techniques and options, you won't need to read these right away but you should return to them once you become more comfortable with the basics.

Getting Started With Mobius - Introduces fundamental Mobius concepts and the user interface Exploring Mobius - Explains more advanced concepts, control options, and customization Mobius Techniques - Tutorials on some of the commonly used looping functions and techniques

Mobius Synchronization - Explains how to synchronize Mobius with other devices and applications Mobius Reference - A complete reference of all functions, parameters, and internal variables Mobius Scripting - Explains how to write Mobius scripts

3 Installation
Read the sections Windows Installation or OS X Installation for the installation steps specific to your operating system. If you are upgrading a previous installation, usually you just install the new version over the previous version. All of your previous device setups, bindings, and other configuration will be preserved. While you can have more than one version of Mobius installed, this is not recommended. When Mobius runs, it reads configuration files from a directory that is shared by all installations on the machine. If you try to run Mobius binaries from an old version with newer configuration files, Mobius may not work properly. If you try to run new Mobius binaries with older configuration files, the files may be automatically upgraded and will no longer work with the binaries from the older version. The one exception to this rule is that you are allowed to run a 1.x version of Mobius and a 2.x version at the same time.

3.1 Windows Installation


Mobius is supported on Windows XP, Vista and 7. It is not a native 64-bit application but it is known to work on 64-bit hardware. Mobius is distributed as an executable installer. When you run the installer it will prompt you for an installation directory. The default is c:\Program Files\Mobius 2. The Mobius executables, initial configuration files, and example files will be placed in this directory. NOTE: If you are upgrading from an earlier Mobius release, you will have two installation directories. C:\Program Files\Mobius normally contains the version 1 installation and C:\Program Files\Mobius 2 contains the version 2 installation. You can use both versions at the same time. This will allow you to experiment with the new features in 2.0 but still return to the previous release if you encounter problems. The installer will also copy the Mobius VST plugin to the directory c:\Program Files\VstPlugins which is the most common directory for VST plugins. If you are using a different plugin directory you must manually copy the MobiusVst2.dll file from the installation directory to your plugin directory. NOTE: If you decide to move Mobius to a different directory after installation you must reinstall, you cannot simply move or rename the directory. During installation an entry in the Windows registry is created that contains the path to the installation directory. Moving or renaming this directory will not update this registry entry, you must run the installer again to update the registry. If the Mobius UI is blank or displays a lot of question marks, it usually means that the registry does not point to the correct installation directory.

All of your custom configuration settings are stored in the installation directory in two files: mobius.xml and ui.xml. Unlike other applications, customizations are not stored in the Documents and Settings directory for your user account. This means that if you delete the installation directory you will lose your customizations. If you wish to reinstall or upgrade, do not run the uninstaller or delete the current installation directory. Just install into the same directory that was used by the previous installation. All of your customizations will be preserved.

3.2 OS X Installation
Mobius is supported on OS X 10.5 or later on Intel machines. The older version 1.42 is a universal binary that will run on 10.4 PPC machines but this is no longer maintained and is not recommended for new users. Mobius is distributed as standard installation package. Once it is downloaded, opening it will launch the OS X Installer which will guide you through the installation steps. Four folders will be created:

/Applications/Mobius 2 - The standalone application and example files /Library/Audio/Plug-Ins/Components/Mobius 2.component - The Audio Unit plugin /Library/Audio/Plug-Ins/VST/Mobius 2.vst - The VST plugin /Library/Application Support/Mobius 2 - The folder containing configuration files

The configuration folder contains mobius.xml, ui.xml, and host.xml. This is also commonly used for user written scripts. NOTE: If you are upgrading from an earlier Mobius release, you will have two application folders. /Applications/Mobius normally contains the version 1 installation and /Applications/Mobius 2 contains the version 2 installation. You can use both versions at the same time. This will allow you to experiment with the new features in 2.0 but still return to the previous release if you encounter problems. To install a later release of Mobius version 2, you simply run the installer again and it will replace the files in the application folder and the two plugin folders. It will not replace the configuration folder so all of your previous configuration will be preserved. It is possible to have both Mobius version 1 and Mobius version 2 installed at the same time. It is however not recommended that you have more than one minor version installed. For example you may have both version 1.45 and 2.0 installed, but not 1.42 and 1.45 or 2.0 and 2.1. Each major release of Mobius stores configuration information in a shared location, /Library/Application Support/Mobius for version 1 and /Library/Application Support/Mobius 2 for version 2. Different minor versions may change these shared configuration files so once you upgrade to 1.45 you will not be able to go back to 1.42. If you are upgrading to a minor release number, it is a good idea to make backup copies of the Application Support files in case you need to downgrade.

4 Running Standalone Mobius

Even if you intend to use Mobius as a VST or Audio Units plugin, it is recommended that you start using it as a standalone application. Plugin host applications add a another layer of complexity to the setup process, when you are just getting started it can be difficult to tell whether a problem is caused by Mobius or the host application. There are also some user interface customizations that can only be performed in the standalone Mobius window. Once standalone Mobius has been configured and is working properly, you can advance to using the plugin. The Mobius Plugin section discusses this in more detail. To run standalone Mobius you must configure audio devices, this is described in the Audio Device Configuration section. Most people will also want to configure one or more MIDI devices such as footswitches or control surfaces. This is described in the MIDI Device Configuration section. On Windows, you run Mobius by selecting the Mobius item with the blue orb icon from the start menu, or by running mobius.exe from the command line. On OS X, you run Mobius by clicking the application icon from the Mobius 2 folder inside the Applications folder. After running Mobius you should be greeted with a window that looks similar to this:

5 Audio Device Configuration


Using standalone Mobius requires the selection of an audio device. If you do not select a device you can still do things like arranging and resizing the user interface or creating function bindings, but Mobius can't be used for looping. Pressing buttons in the UI or sending MIDI commands will have no effect, Mobius will appear to be frozen. When you select an audio device it is important to choose one with low latency. Latency is a complex topic covered in more detail in the Tuning Latency section. For now you can think of it as the amount of time it takes to get an audio signal from an input channel of an audio device, through the computer, and back to an output channel of an audio device. Mobius can compensate for latency in some cases so it is still quite usable regardless of which device you choose. But with high latency devices you may hear "skips" or "lag" in the sound when you do certain things. To get low latency you will usually have to buy an aftermarket audio interface rather than using the one that came bundled with your computer. External Firewire or USB interfaces are recommended. If you have a laptop, PCMCIA cards can work well. There are many choices in aftermarket audio interfaces, some work better than others. You will need to do some research and ask questions on forums to find the one that works best for you. But generally speaking the so called "integrated" audio interfaces that came with the computer do not perform well. They can be fine when you're just getting started but if you want to use Mobius for serious live performance, almost everyone buys a professional audio interface. To configure an audio device, start standalone Mobius, open the Configuration menu and select the Audio Devices item.

If you use OS X, you will see two selection panels, one labeled Input Device and one labeled Output Device. Normally you select the same device for both input and output but this is not required. On OS X you are always using a Core Audio device driver which will usually have low latency.

OS X Audio Device Configuration Window If you use Windows, life is a bit more complicated. There are three selection panels, one labeled ASIO Devices, one labeled Input Device and one labeled Output Device. You should always select an ASIO device if one is available as these have the lowest latency. An ASIO device will provide both inputs and outputs so you only need to make one selection.

PC Audio Device Configuration Window If you do not have any ASIO devices on Windows, you may select an MME device. You must select one device from the Input Device panel and one device from the Output Device panel. If you have more than one audio device, normally you will select the same one for both input and output. MME devices tend to have very high latency, they are fine for exploring Mobius features but are not recommended for serious use. At the bottom of the dialog you will see a set of fields with labels Suggested Latency Milliseconds, Override Input Latency Frames, and Override Output Latency Frames. Leave all of these fields empty. Do not press the Calibrate Latency button. Once Mobius is configured and working properly, read the Tuning Latency section for more information about optimizing latency for your system. Once you have selected an audio device click the Ok button to close the window.

5.1 Audio Device Recommendations

6 The First Loop


Connect an instrument or microphone to the input channels of the audio device. Mobius operates in stereo so it always uses audio device channels in stereo pairs called "ports". By default Mobius always uses the first input and output port. If you have an audio interface with more than one pair of stereo channels, Port 1 is usually channels 1 and 2, port 2 would be channels 3 and 4 etc. Check the level meters on the audio interface to make sure that a signal from your instrument is being received. External Firewire and USB devices usually have a software "mixer" application, make sure the fader levels on all channels have been raised. Run Mobius and play something on your instrument. In the center of the Mobius window is a thin rectangle called the audio meter you should see it flicker as you play your instrument. If you do not see any movement in the Mobius window try connecting your instrument to a different set of input channels on the audio interface.

If your interface has channels on both the front and back, it may be unclear which ones are 1 and 2. If you've tried sending a signal through all of the devices inputs and you still see nothing flickering in the Mobius window, post a message on the forum and we will try to help. If you see that lovely audio meter flicker, click the button labeled Record at the top of the Mobius window. You should see some numbers in the center of the window changing. Play something on your instrument, then click the Record button again. What you recorded should start playing back in an endless loop. If you don't hear anything, make sure you have speakers or headphones connected to the first pair of output channels on your audio device. If you have a device with multiple channels try connecting speakers to all of the other channels. If you still don't hear anything, post a message on the forum. If you hear your first loop playing, congratulations! If you hear some "clicks" or "pops" while the loop is playing there are two common explanations. The first is that the instrument level is too high and you are having digital "clipping". Try lowering the instrument level and try again. Clicks can also happen when the default latency setting for your audio device is too low. Read the Tuning Latency section to learn how to raise the latency. 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 audio device. If the output of the audio device 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 audio device 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 audio device output from the "bus" being sent to the audio device input. If you are familiar with Mackie mixers, Mute Alt 3-4 combined with Control Room Source buttons can accomplish this nicely.

7 MIDI Device Configuration


While you can control Mobius using the computer keyboard or clicking buttons in the window, most people control Mobius with a MIDI device such as a footswitch or a control surface. Footswitches are widely used because they allow the musician to keep both hands on their instrument. Control surfaces with rows of faders and knobs are very convenient for setting track levels and adjusting feedback. Mobius can also send messages to other devices using MIDI. The most common use for this is to send MIDI clock pulses to a drum machine or sequencer so that drum patterns or pre-recorded accompaniment tracks can be played in sync with the Mobius loop. You can use any device that sends MIDI commands to control Mobius. Many newer MIDI devices will connect to the computer though a USB port. For devices that only support connection with a MIDI cable, you will also need to buy a MIDI interface for your computer. See the MIDI Device Recommendations section for more information on buying MIDI interfaces and devices.

MIDI Device Configuration Window To configure MIDI devices open the Configuration menu and select the MIDI Devices item. There are two columns of device selection panels, the panels on the left select devices to be used when Mobius runs as a standalone application, the panels on the right select devices to be used when Mobius runs as a plugin. If you have MIDI devices that connect directly to the computer using a USB cable, the names you see should be similar to the name of the device like "Korg nanoKontrol". If you have MIDI devices that connect with MIDI cables to an external MIDI interface, the names you see will be usually be numbered port names like "Some Device Port 1", "Some Device Port 2", etc. When using MIDI interfaces make sure you select the same port that your MIDI device is connected to. When selecting devices it is important to select only the ones that you really need. You can select as many input devices as you want, but if Mobius will only be receiving commands from one of them it will waste time looking at messages from the others. If you run Mobius as a plugin, it is very important that you only select devices that are not also being opened by the host application. If both Mobius and the host try to use the same device this can cause problems like commands being performed twice, and in some cases even crashes. Selecting MIDI devices for the Mobius plugin is rare, you usually let the host manage the MIDI devices and have it route MIDI into and out of the plugin. This is discussed in more detail in the Mobius Plugin section. Input Devices are selected if you want to receive MIDI commands to control Mobius. When you run Mobius standalone you almost always select at least one input device. When you run Mobius as a plugin you almost never select an input device. Instead you let the plugin host manage the MIDI devices and you let the host route MIDI into and out of Mobius. Output Devices are selected if you want Mobius to send messages to another hardware device or plugin. The most common use for this is to send MIDI clock pulses to a drum machine or sequencer. Using scripts it is also possible to send any MIDI message to another device to do things like changing patches or triggering samples. If you are running Mobius as a plugin, selecting an output device is common in one special case: sending MIDI sync pulses through a "loopback" device to control the tempo of the host application. This is discussed in more detail in the Mobius Plugin section. If you are not intending to send MIDI pulses to another device or to the host application, you normally will not select an output device. Through Devices are selected if you want to send a copy of the MIDI message received from the input devices to other devices. This is relatively uncommon, but you might want to use this if the footswitch can send commands to both Mobius and something else, and you don't have a MIDI splitter. All MIDI messages received by the input devices are simply sent immediately to all the through devices.

7.1 MIDI Device Recommendations


First determine whether you need a MIDI interface. You will need a MIDI interface if you want to control Mobius using a footswitch, keyboard, or other MIDI device that can only connect with MIDI cables. You will also need a MIDI interface if you want to

send MIDI commands to a drum machine or other device that can only be connected with MIDI cables. If all of the devices you want to use can connect directly to the computer with USB cables, then you do not need a MIDI interface. If you do need a MIDI interface, there many relatively inexpensive ones available. Unlike audio interfaces, MIDI interfaces are not very complicated and almost anything from a reputable brand will work fine. The simplest interfaces will little more than a cable with a pair of MIDI in/out connectors on one side, a USB connector on the other and a "lump" in the middle. Larger interfaces will support more than one input and output port. If you only need to use the MIDI interface with Mobius a simple "1 by 1" interface is enough. Popular brands include M-Audio, E-MU, and MOTU. Before you by a MIDI interface though, check to see if your audio interface also includes one. Many audio interfaces also include a 1x1 MIDI interface. Probably the most asked question regarding MIDI devices is "what's the best MIDI footswitch"? Unfortunately there isn't a very large selection of MIDI footswitches and most are rather expensive. By far the most popular MIDI footswitch used with Mobius is the Behringer FCB-1010. In many ways it is the ideal footswitch: it sends note on and off messages, it has "banks" so you can assign up to 100 Mobius commands to switches, and it has two integrated expression pedals to control track level and feedback, and at $150 USD it is among the least expensive footswitches available. The problem many people have with it is that it is large. It takes up a lot of floor space and dragging it to gigs can be inconvenient. There are smaller footswitches available but most of them cost several times more. If you are new to MIDI and are unsure of what would be best for you post a message to the forum and we'll try to help. When you look for footswitches there are two important things to consider: does it support "momentary" switches and does it support "banks". A momentary switch is one that sends a MIDI message when you press it and also when you release it. Some switches will send note messages (Note On when pressed Note Off when released) and some will send continuous control messages (CC greater than zero when pressed and CC zero when released), both of these types can be used with Mobius. While you can do basic looping without momentary switches, if you want to use some of the more advanced features like "sustain functions" or "long press behavior" you will need momentary switches. Many of the cheapest footswitches were designed for keyboard players to select patches and they only send MIDI program change messages. Switches that only send program changes are not momentary. The concept of "banks" is common but manufacturers call it by different names. A bank is basically a set of MIDI messages assigned to each switch and different banks can cause the switches to send different MIDI messages. For example bank 0 of the popular FCB-1010 might send MIDI note numbers 0 through 9, bank 1 would send note numbers 10 through 11, etc. Banks are important because there are literally hundreds of things in Mobius that could be assigned to a MIDI message. With footswitches that don't have banks, you will be limited to a small number of things you can control with your feet. Footswitches that support banks typically have a set of "up" and "down" switches to scroll through the banks. The FCB-1010 has 10 banks of 10 switches allowing you to send 100 different Mobius commands. There are other footswitches that work great with Mobius and are relatively small such as the GORDIUS Little Giant and the Rocktron All Access. Unfortunately they are several times more expensive than the FCB-1010, but if money is less important than size, definitely check those out.

A control surface is typically a device that tries to emulate a mixer track strip, usually with a fader and one or more rotary knobs for each track. While we don't think these are as essential as a footswitch, they are very nice for adjusting Mobius track output levels, input levels, pan, and feedback. There are many choices here that vary greatly in size and features. The Korg Nano series are inexpensive and small. The Novation Remote series combines a control surface with a keyboard which is handy for chromatic pitch shifting. Behringer, Mackie, M-Audio and AKAI all make interesting control surfaces. If you aren't sure what you need we recommend you first spend some time learning what you can do with Mobius tracks, then look for the controller that meets your needs. As usual, forums are a good source for reviews and advice.

8 Other Control Options


It is also possible to control most Mobius functions using the computer keyboard. The keys are "momentary" switches so they can be used for sustain functions and longpress behavior. If you're exploring Mobius for the first time and aren't sure if you want to invest money in a footswitch, a cheap alternative is to buy any USB keyboard, pry most of the keys off, then step on the ones that remain. This is obviously not a very durable option for live performance, but it does work. Mobius also supports the Open Sound Control (OSC) protocol, with default support for the TouchOSC application that runs in the Apple iPhone and iTouch devices. This is an advanced topic that is not yet fully documented. If you are interested in OSC post a message on the forums or send me email.

9 Mobius Plugin
On Windows, Mobius may be used as a VST plugin. On OS X Mobius may be used as either a VST plugin or an Audio Units plugin. Be sure to read the Installation section and make sure the plugin files have been copied to a place that will be seen by your host application. Host applications vary widely in how they deal with plugins. Even hosts that operate in similar ways may use different terminology when talking about plugins. This makes it difficult to write a comprehensive document on using the Mobius plugin. We will give you some general guidelines and go into some detail on a few popular hosts, but it is simply not possible to document how to use Mobius in every host application. If you have never used a plugin with your host before, try starting with a simple plugin like a digital delay or soft synth to become familiar which using plugins in your host. Mobius is an unusual plugin. Most plugins fit into one of two categories, they are either effects or synths. Typical effects plugins are compressors, filters, and reverbs. They receive audio, and send out processed audio, and they don't support MIDI control. A synth plugin normally receives MIDI events, sends out audio, but does not receive audio for processing. Mobius is like a combination of an effect and a synth. It needs to receive and send audio like an effect, but it also needs to receive MIDI events like a synth. Many hosts, particularly older DAWs, have trouble with this. They either can't support the dual nature of the Mobius plugin, or they require complicated configuration to make the necessary connections.

Mobius is also unusual in that it supports 16 input and output channels or "pins". The vast majority of effects plugins only support a single set of stereo input and output channels. Some hosts will simply refuse to load Mobius because it has more than 2 channels. Others will load it but will only let you access the first 2 channels. Some hosts do not let effects plugins have direct access to MIDI devices. Instead they control plugins only through "parameter automation". In this style of host, the plugin advertises a set of parameters that may be controlled by the host. The host then allows the user to set up associations between MIDI events and these parameters. In this situation, you have to configure the Mobius functions and parameters to make available to the host. Then you do all of your MIDI mappings in the host. While this works it can be difficult to set up, and the host may not support parameters that behave like "momentary buttons" which will prevent you from using some Mobius features. Then there is synchronization. Mobius is also unusual in that it tries to provide synchronization of loop recording with the host's transport controls if it has them. Unfortunately hosts differ radically in how they implement the horrible VST specification, so trying to get synchronization to work on a new host is almost always a problem. If this is starting to sound scary, unfortunately it is. There are several popular hosts that work well for Mobius and we try to support them whenever they have a new release. But we simply cannot guarantee that Mobius will work with every host out there, and we don't have the resources to even try. If you have a problem with your favorite host and are willing to spend some time with us to diagnose them, we may be able to work with you. But otherwise you will have to consider one of the recommended hosts.

9.1 Recommended Hosts


In our experience, plugin hosts come in roughly four varieties. 1. Recorders - typical digital audio workstations 2. Arrangers - oriented toward arranging short audio clips in loops and sequences 3. Racks - simulates a rack of synth and effect hardware 4. Modular - a "boxes and wires" graphical user interface The Recorder style is familiar to most people. These are the traditional DAWs that have a user interface organized like a multi-track tape recorder. Examples of this style include Cockos Reaper, Cakewalk Sonar, Steinberg Cubase, and Apple Logic. They excel at recording, mixing, and non real-time editing. While they are widely known they are not always good hosts for Mobius. They often have a hard time dealing with effects that need both MIDI and audio inputs and they may not support plugins that have many channels. Generally they are designed for studio use rather than real-time performance. We try to make an effort to support Reaper and Logic, support for the others will be spotty. The Arranger style is usually designed more for live performance. Here the focus is on arranging pre-recorded samples or recording short samples of a fixed length and applying effects to them in real time. Examples of this style include Ableton Live, Sony ACID, Apple Garage Band, and FL Studio. These often have many of the same

problems as the Recorder-style hosts but they can be better. Of these, Ableton Live is an outstanding host for Mobius and is actively supported. The Rack hosts attempt to simulate a hardware rack of effects and synths and most do not provide audio recording and editing. They are oriented toward "always on" plugins that are constantly responding to MIDI and audio in real time. Examples of this style include Apple Mainstage, Audiofile Engineering RAX, and Brainspawn Forte. These can be good hosts for Mobius but they are relatively unusual among the current user base so support may be spotty. Of these, we actively support Apple Mainstage. The Modular hosts typically present a user interface that uses pictures to represent plugins and other devices, and lets you draw "wires" to connect them. Examples of this style include Plogue Bidule, AudioMulch, Usine, and Max/MSP. Modular hosts are well suited for Mobius because they make it easy to visualize all of the input and output channels and make connections to them. They excel at creating "patches" combining effects and synths controlled by MIDI. They typically are not as easy to use for traditional linear audio and MIDI recording and editing. We use and recommend Bidule and AudioMulch.

9.2 Plugin Insertion


On Windows the installer will copy the Mobius VST plugin to the directory c:\Program Files\VstPlugins which is the most common directory for VST plugins. If your host can be configured to load plugins from more than one directory, make sure VstPlugins is on the list. If the host must load plugins from a different directory you must manually copy the MobiusVst2.dll file from the installation directory to your plugin directory. You only need to copy that one .dll file, leave all the other files in the installation directory. Once the plugin files have been copied to the proper directory, the Mobius plugin should appear in the host application. Where this appears will be different in every host. The VST plugin may be named either "Mobius 2", or "MobiusVst2". The AU plugin should be named "Mobius 2". Some hosts organize plugins by the manufacturer name so there may be an item named "Circular Labs" you need to expand to see the plugin. If you do not see the plugin you may need to ask the host to "rescan" the plugin directory. If your host has the concept of tracks and you have a choice between inserting Mobius in an audio track or a MIDI track, you usually want to insert it in an audio track, then arrange to have MIDI routed to that track.

9.3 Plugin Pins


Some hosts may refuse to load plugins that have more than one pair of stereo input and output channels, by default Mobius has 8 pairs of stereo channels. If the host will not the insert the Mobius plugin, try reducing the number of channels. Run standalone Mobius, bring up the Global Parameters dialog, select the Limits tab and find the parameter named Plugin Ports. Change this parameter value to 1, click Ok, and close standalone Mobius. Now run the host application again, ask it to rescan plugins, and try inserting the Mobius plugin. Whether this works or not please

post a message with your results on the forums or send us email. We are interested in compiling a list of those hosts that require this workaround. If the host does support multi-channel plugins then you have the option of having each Mobius track receive from and send to different channels. Mobius organizes channels into stereo pairs called "ports". Each track may be configured to have one input port and one output port. 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. This is described in more detail in the Track Setups section of the Getting Started manual.

9.4 Dual Window Mode


Unlike most VST plugins, Mobius by default opens two windows when running under a Microsoft operating system. The first is a small window containing the Mobius icon and the text Click to open Mobius window. The second is the main Mobius window. The first small window is the normal "editor" window created by the VST host. Most plugins put all of their user interface in this window. This window does however have some limitations for Mobius users. First, the window cannot be resized so if you change the layout of the Mobius user interface it may not be possible to display everything. A more serious limitation is that computer keyboard key events are often not passed along to he plugins so you cannot use the keyboard to control Mobius. Because of these limitations, by default Mobius opens a second window over which it has complete control. This window may be resized and will receive keyboard events just like the standalone Mobius window. If you close the main window, the VST editor window will remain open, simply click anywhere inside the editor window to reopen the main window. If you close the editor window, both windows will be closed. Some people prefer to have Mobius put the user interface into to the VST editor window. This is possible if you are willing to live with the limitations. Bring up the Global Parameters dialog, find the parameter named Dual Plugin Edit Window, and uncheck the checkbox. Close the both the Mobius main window and the editor window and ask the host to reopen the editor window. You may need to restart the host application for this change to take effect. We have had reports of crashes using single window mode with some hosts. The causes for this are unclear, but if you are experiencing crashes using the plugin in single window mode, try enabling dual window mode. Dual window mode cannot be enabled in the Mac Audio Unit plugin. Dual window mode may be enabled in the Mac VST plugin but it is not the default.

9.5 Plugin MIDI Devices


Mobius normally receives MIDI events directly from the VST host so it is not usually necessary to select MIDI input or output devices for the plugin. If at all possible you

should try to arrange to let the host manage the MIDI devices and route MIDI events into Mobius. There are two special circumstances where you might want the Mobius plugin to open it's own MIDI devices: 1. The host is unable to route MIDI events to an "effects" plugin 2. You want Mobius to generate a master MIDI clock to synchronize the host The first case used to be rare and only seen on very old hosts, but it is unfortunately becoming more common in modern hosts like Mainstage. The philosophy coming into vogue is that plugins shouldn't have to know anything at all about MIDI, they should get all of their control signals through plugin parameters. It is then the hosts job to associate a MIDI event with each plugin parameter. This works fine for your typical effects plugin with a dozen or so parameters, but Mobius literally has hundreds of parameters. Further some Mobius features like pitch and speed shift are meant to be controlled using MIDI notes like a synthesizer. It is possible to control almost everything using plugin parameters if necessary, this is described in the Plugin Parameters section. But depending on the host it may be more convenient just to let Mobius open a private MIDI device connected directly to your footswitch or control surface. To select a MIDI input device open the MIDI Devices dialog and find the device selector labeled Plugin Input Devices. Select the device that is connected to your MIDI controller. Note that some hosts may already be in control of the devices you select in Mobius, this can cause conflicts and in some cases crashes. If you select a MIDI device for the Mobius plugin you should configure the host so that it does not open the same device. Usually there will be a dialog where you can pick which MIDI input and output devices the host will use. Unfortunately some hosts simply open every available MIDI device. The other common reason to have the plugin open a MIDI device is to send master MIDI clocks to the host. Plugins cannot normally be the sync master for the host, but this is possible if the plugin can generate MIDI clocks sent to a "loopback" device. This is discussed in more detail in the Controlling Plugin Host Tempo section of the Mobius Synchronization manual. While it is possible to select a Plugin Through Device in the MIDI Devices window, we are not aware of an interesting use for this. If you find one let us know!

9.6 Plugin Parameters


Most plugins support parameters which can be controlled by the host. Common examples are output level, delay time, or filter curve. Some hosts support parameter automation where a sequence of parameter values can be programmed to change in time with an audio or MIDI track. Mobius is unusual because it has hundreds of parameters. These include the continuous controls like Input Level and Pan, preset parameters like Loop Count and Quantize, and functions like Record and Reset. Each of these parameters can be further scoped to a particular track or track group.

Because most hosts do not deal well with plugins that have more than a few dozen parameters, you must explicitly select the parameters to expose to the host. The default set of plugin parameters is:

Input Level Output Level Feedback Secondary Feedback Pan Selected Track Quantize Mode Switch Quantize

You may declare additional parameters in the Plugin Parameters dialog from the Configuration menu. The Plugin Parameter Bindings section of the Exploring Mobius manual has more information on configuring plugin parameters. As mentioned in the Plugin MIDI Devices section, some hosts only allow plugins to be controlled through parameters, direct access to MIDI events is not possible. For these hosts you can either configure Mobius to open a private MIDI device, or you can declare all of the functions you want to use as plugin parameters, and associate them with MIDI events in the host. Binding MIDI events with plugin parameters is complex and different in every host. If you are not familiar with this process, the best thing to do is post questions on the forum.

9.7 VST Patches


Most VST plugins support the notion of a "programs" or "patches" which are selectable from a open menu in the editor window. Mobius does not support the VST patch menu. Changing Mobius operating behavior is done through popup menus in the main Mobius user interface.

9.8 Bypass
It is important to note that when a plugin is bypassed that no audio is "flowing" through the plugin. Without a steady stream of audio flowing through the plugin the Mobius user interface will appear to be hung. If you need to silence the Mobius plugin yet still have it be responsive to keyboard or MIDI commands, you will need to use Mobius functions such as Reset or Mute rather than bypassing the plugin.

9.9 Audio Input Monitoring


If you are processing the audio signal from your instrument through an effects plugin before sending it into Mobius, it is common to want to monitor your signal "through the computer" rather than with a "side chain bus". Monitoring your instrument while you loop is a complex topic that will not be explored fully here. The main thing to understand is that if you play something on your instrument, you see the Mobius

input level meter flickering, but you don't hear anything, you may need to enable input monitoring in Mobius. Bring up the Global Parameters dialog and find the parameter named Monitor Audio Input. Check the checkbox and click Ok. If you can now hear your instrument then you are monitoring "through the computer". This means that you will hear the effects that all the plugins in the chain, including Mobius, are having on your signal. This is a perfectly fine way to monitor but it has consequences, primarily that you may hear a latency delay between the time you do something on your instrument and you hear the processed sound. The alternative is to use some form of side chain monitoring, typically this is done with a hardware mixer outside the computer or with audio interfaces that support "zero latency monitoring". If your instrument is a MIDI controller, or if you are guitar player using an amp modeling plugin then you have little choice but to monitor through the computer since it is the plugins that are defining the sound of the instrument you want to monitor. If you are using external hardware go generate the sound you want to monitor, it is best to do side chain monitoring to avoid the latency delay. Something to be aware of is that when you have the Monitor Audio Input option checked, the sound you are hearing might have a "metallic" quality that sounds like "flanging". If you hear this it often means that there is some form of chain monitoring active that is being combined with the through-the-computer monitoring. Because the through-the-computer signal will be slightly delayed, when combined with the side chain it will sound very much like a flanging effect is being applied. In this case you either need to disable the side chain monitoring, or uncheck Monitor Audio Input. Also when you monitor through the computer, you normally want to disable Mobius latency compensation. Rather than have Mobius do the compensation, you are already compensating mentally by adjusting your playing technique by playing slightly "ahead". The reasons for this are complicated and discussed more in the Tuning Latency section.

9.10 Plugin Audio Devices and Latency Compensation


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. The input and output latency override values are however still used when Mobius runs as a plugin. When you are just getting started and intend to use Mobius primarily as a plugin, it is recommended that you do not set latency overrides and instead let the host give Mobius the input and output latency. If you do want to switch between plugin and standalone Mobius you will want to configure Mobius to use the same buffer size as you use in the plugin host application so the latency overrides will match. Unfortunately because Mobius configures latency using milliseconds rather than buffer sizes it can be difficult to know how Mobius latency compares to the host. As a general rule, a buffer size of 256 is the same as 5 milliseconds. So a buffer size of 512 would correspond to 10 milliseconds, 128 would correspond to 2 milliseconds, etc.

Again, it is best initially to simply make sure that the two latency override values are empty or set to zero. Latency calibration is covered in more detail in the Tuning Latency section.

10 Tuning Latency
Latency compensation is a complex topic and we recommend that you not be obsessed with it when you are just getting started. If you are using an ASIO or Core Audio device driver, latency is so small that many people don't even notice it. For those new to looping, timing problems with the loop start and end points or the alignment of overdubs are more often due to footswitch technique than latency. If you feel you need to fine tune latency compensation you can go through the calibration process described in this section. Typically people use the latency calibration dialog to find the starting values, then manually tweak latency overrides by ear until they sound right. A common misconception is that latency is a fixed quality of a particular audio interface. If you buy audio interface X you will have low latency, but audio interface Z will have high latency. The brand of audio interface certainly has an effect on latency but there are many other factors that determine the minimum latency you can achieve. These include the speed of the CPU, the amount of memory, the firewire chipset, shared memory in the graphics card, wireless network adapters, and the other software you have running. Latency isn't something you can just add up based on your hardware and software. It is something you tune to be as small as possible without causing audio distortion. Tuning latency is similar to finding the maximum comfortable operating speed of a car. It may be possible to drive your car at 120 MPH but it may be noisy and hard to control at that speed. Setting latency too low is like driving a car too fast. You are putting demands on the computer that it may not be able to meet reliably. Raising latency is like slowing down your car, it may take longer to do some things but you'll arrive safely. The consequence of having latency too low is that you will "miss an interrupt" or have "buffer underrun". The audio device is constantly asking the computer for little blocks of audio to play. If the computer cannot respond in time the audio interface will leave a gap in the digital audio stream, this will sound like a harsh "click" or "pop". Raising latency gives the computer more time to respond to requests from the audio device so these audible glitches don't happen. 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, or trim. If you are "quantizing" functions, you may not hear any glitches because quantizing will delay the function long enough that we can compensate for latency. When you make an abrupt change, say a loop switch, Mobius will already have buffered some frames from the current loop. We can start buffering frames from the next loop, but they will be delayed a few 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 a few 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 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 latency must be adjustment manually. 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.

11 Next Steps
If you have been able to install and configure Mobius and record your first loop, proceed to the Getting Started manual for more depth on the user interface and an introduction to the most common looping functions.

Getting Started With Mobius


March 2012

Contents
1 Introduction 2 Concepts 2.1 Channel 2.2 Port 2.3 Frame 2.4 Loop 2.5 Layer 2.6 Cycle 2.7 Subcycle 2.8 Track 2.9 Loop Switch 2.10 Synchronization 2.11 Function 2.12 Mode 2.13 Event 2.14 Quantization 2.15 Script 2.16 Parameter 2.17 Preset 2.18 Control 2.19 Setup 2.20 Project 2.21 Trigger 2.22 Sustainable Trigger 2.23 Target 2.24 Binding 2.25 Binding Scope 2.26 Sustain Function 2.27 Long Press 3 User Interface 3.1 Menus 3.2 Button Area 3.3 Status Area 3.3.1 Floating Track Strip

3.3.2 Instant Parameters 3.3.3 Loop Status Cluster 3.3.3.1 Counter 3.3.3.2 Audio Meter 3.3.3.3 Loop Meter 3.3.3.4 Mode 3.3.3.5 Beaters 3.3.3.6 Minor Modes 3.3.3.7 Sync Status 3.3.3.8 Message 3.3.4 Layer Bars 3.3.5 Loop Bars 3.4 Track Strips 3.4.1 Track Number 3.4.2 Loop Radar 3.4.3 Loop Status 3.4.4 Output Level Control 3.4.5 Output Level Meter 4 Controlling Mobius 4.1 Binding Popup Windows 4.1.1 Binding Set Selector 4.1.2 Bindings List 4.1.3 Selecting Targets 4.1.4 Selecting a Scope 4.1.5 Binding Arguments 4.1.6 Trigger Binding Fields 4.1.7 Command Buttons 4.2 MIDI Bindings 4.2.1 Selecting MIDI Triggers 4.2.2 Multiple MIDI Binding Sets 4.2.2.1 Multiple MIDI Bindings Example 4.2.3 Showing MIDI Bindings 4.3 Keyboard Bindings 4.3.1 Showing Keyboard Bindings 5 Using Mobius 5.1 Using Presets 5.1.1 Preset Window 5.1.2 Preset Switch Tab 5.1.3 Preset Effects Tab 5.1.4 Preset Other Tab 5.1.5 Setting Parameters 5.1.6 Managing Multiple Presets

5.1.7 Selecting Presets with Menus 5.2 Using Functions 5.2.1 Modal and Instant Functions 5.2.2 Major Modes 5.2.3 Minor Modes 5.2.4 Reset, Empty, Clear, and Silent 5.2.5 Record 5.2.6 Reset 5.2.7 Overdub 5.2.8 Undo and Redo 5.2.9 Mute and Pause 5.2.10 Multiply 5.2.11 Instant Multiply and Divide 5.2.12 Replace 5.2.13 Insert 5.2.14 Reverse 5.2.15 Speed Toggle 5.2.16 Next Loop 5.2.17 Shuffle 5.3 Using Controls 5.3.1 Input Level 5.3.2 Output Level 5.3.3 Feedback 5.3.4 Secondary Feedback 5.3.5 Pan 5.3.6 Other Controls 5.4 Common Parameters 5.4.1 Loops Per Track 5.4.2 Quantize Mode 5.4.3 Subcycles 5.4.4 Overdub Quantized 5.4.5 Switch Quantize 5.4.6 Empty Loop Action 5.4.7 Switch Location 5.4.8 Switch Duration 5.4.9 Enable Secondary Feedback 5.4.10 Record Threshold 5.5 Using Feedback 5.6 Using Tracks 5.7 Using Scripts 6 Next Steps 7 Troubleshooting

7.1 7.2 7.3 7.4

Mobius is just frozen, it doesn't do anything! Record Stops Suddenly I edited an XML file, now everything is screwed up! I registered my script files but they won't run

1 Introduction
This manual will help you quickly get started doing basic looping with Mobius. We will introduce some of the major concepts and terms, describe the user interface, and give examples of some of the most common ways to use Mobius. You are expected to have read the Installation Guide and completed a successful installation test. Once you have finished this manual, Exploring Mobius will give you more information about how Mobius can be controlled and customized. The Mobius Synchronization manual has detailed information about creating loops and tracks that play together in perfect synchronization. The Mobius Techniques manual has detailed information and tutorials for some of the major looping techniques. The Mobius Reference manual will have an exhaustive description of every function, parameter, control and variable. You can skim this to get a feel for what is available, but normally you should read this last. The Mobius Scripting manual will have all the details about how to write and use Mobius scripts. Most users will want to use scripts at some point but it is recommended that you first become comfortable with basic Mobius use.

2 Concepts
Mobius is a complex application and it is difficult to talk about it without using some unusual jargon. In this section we will introduce some of the fundamental concepts and terminology that you will see throughout the documentation. You should read this section before you read anything else. Don't feel like you need to fully understand everything right away, just read through it and remember the terms so that when you see them later you can return here for review.

2.1 Channel
A channel is a stream of digital audio samples. Channels correspond to the physical inputs and outputs of your audio interface, or to the "pins" in the VST or AU plugin. Mobius is continually receiving audio from two or more channels and continually sending audio out to two or more channels.

2.2 Port
A port is a collection of adjacent channels. Mobius always processes digital audio in stereo, so it organizes channels into stereo pairs, one for the left channel and one for the right. These pairs of channels are called ports. If for example you have an audio

interface with 8 input channels, channels 1 and 2 will be port 1, channels 3 and 4 will be port 2, and so on. Mobius does not currently support ports with more than two channels, such a the 6 channels necessary for 5.1 surround. This may be addressed in future releases.

2.3 Frame
A frame is the smallest unit of digital audio that Mobius will use. Frames consist of a set of samples of digital audio, captured at a moment in time from one Port. Currently Mobius always processes audio in stereo, so a frame always contains two samples, one for the left channel and one for the right. Most of the time you can think of a frame and a sample as the same thing. It is a single slice of audio, whether it be mono, stereo, or surround. So what is commonly called "sample rate" is really "frame rate" in Mobius.

2.4 Loop
A loop can be thought of as one independent digital audio recording. Loops are typically allowed to play from beginning to end then repeat indefinitely, but you can use loops in other ways. Loops may be of any length and contain audio from any port. After a loop has been recorded you may add more audio by overdubbing. A loop may be altered in many ways using Functions. Loops can be made to evolve over time using Feedback.

2.5 Layer
While you can think of a loop as one digital audio recording, it may actually be built from several pieces known as layers. When you record a loop for the first time it will have one layer. Every time you modify the loop with Overdub or some other loop editing function, a new layer is created. Layers are the history of the loop and you can change which layer is currently playing. The most common use for layers is to undo a change you don't want. For example, if you're overdubbing new audio and you play a wrong note, you can delete the current layer and return to the previous layer.

2.6 Cycle
A cycle is a subdivision of the loop. Loops initially will contain only one cycle, but through various operations such as Multiply additional cycles may be added. Cycles are always the same length. Cycles are sometimes the same as measures in music notation, but not always. Cycles are primarily of interest for Quantization.

2.7 Subcycle

A subcycle is a subdivision of a Cycle. The number of subcycles in a cycle is defined by a Parameter that can be changed at any time. Subcycles are sometimes the same as beats in music notation, but not always. Subcycles are primarily of interest for Quantization.

2.8 Track
A track contains a set of loops with Controls that determine how the loops are recorded and played. Mobius tracks are similar to tracks in other audio applications. All tracks can be playing at the same time and can be mixed together using traditional controls like output level and pan. If you are familiar with looping hardware you can think of each track as one hardware looper that can be used independently and mixed together. Tracks can contain several loops but only one loop can be playing at a time. This is called the active loop. Changing loops in a track is called Loop Switching. The loops in a track can be of any length but most of the time various Synchronization methods are used to create loops that are exact multiples of each other so that they are rhythmically compatible.

2.9 Loop Switch


A loop switch is the act of changing the loop that is currently playing within a track. This is an important event because there are many options available to control when the switch happens and what happens to the new loop after it is activated.

2.10 Synchronization
Synchronization is a very complex topic but basically it refers to techniques that can be used to create loops with precise control over their size. This is important if you want to create loops that play together with a consistent rhythm. It is practically impossible to create loops in different tracks that are exactly the same size just by tapping the start and end with a footswitch. They may be close but there will always be a few milliseconds of difference and the loops will gradually go out of phase if you let them play long enough. If you wish to create loops in different tracks that will play together without drifting apart, you will always want to use some form of synchronization. Synchronization can also be used to create loops that play in time with an external device such as a sequencer or drum machine.

2.11 Function
A function is a named action performed by Mobius at the request of the user. Examples include Record, Overdub, and Reset. Causing a function to be performed is called executing the function.

Mobius provides many functions, some like Record will be used frequently, others are used only is special situations. We will introduce the most commonly used functions in this manual, the rest will be discussed in the Reference Manual . The behavior of a function may be altered by setting Parameters Functions may be combined in complex ways using Scripts

2.12 Mode
A mode is a temporary state that a track can be in. Modes are usually caused by Functions. Some functions take effect immediately and are then finished. Other functions have both a start and an end time. Functions that have both a start and end time are called modal functions. While the function is active the track is in a mode. The current mode is displayed in the user interface. The most common example is Record mode. When the Record function starts the track enters Record mode, when it ends the track enters another mode, usually the Play mode. While you are in a mode, functions may have different behavior. A function that does one thing when in Reset mode may have a different behavior when in Switch Quantize mode. This will be discussed in the detailed documentation for each function.

2.13 Event
An event is an action Mobius performs at a certain time in the future. Events are scheduled during the execution of a function. A function may schedule more than one event. In the user interface, events are displayed on a timeline so you can see what will be happening as the loop plays. Each track has its own list of scheduled events. The most common use for events is to perform a quantized function.

2.14 Quantization
Quantization causes the execution of functions to happen at a precise time. When quantization is disabled functions are executed immediately. When quantization is enabled, the execution of the function will be delayed until the next quantization boundary. Quantization is frequently used to build loops that have a regular rhythmic quality. The three quantization boundaries are Loop, Cycle, and Subcycle. You will see several phrases in the documentation used to describe the effects of quantization, such as "when quantizing", "during quantization", or "quantized function". All of these refer to the same concept.

2.15 Script

A script is a text file containing statements in a programming language. Scripts allow you control Mobius in very complex ways. In the simplest case scripts can be used as "macros" to perform a set of functions at exactly the same time. In more complex cases scripts can use conditional logic to adjust their behavior depending on what is currently happening. Scripting is a complex topic that will be covered in detail in the Mobius Scripting manual. For now you can think of scripts as a way to extend and customize the builtin Mobius functions. You don't need to understanding scripting right away, but most people will eventually use them.

2.16 Parameter
A parameter is named value that can be changed to control how Mobius behaves. There are four categories of parameters: global parameters, setup parameters, track parameters and preset parameters. Global parameters define general operating characteristics such as whether input monitoring is enabled, or the amount of latency compensation. Global parameters are usually set in a popup window opened by the Global Parameters item from the Configuration menu. Preset parameters change the way functions are performed, examples include Record Threshold, Quantize Mode, and Subcycles. Most of the time when we talk about parameters we are referring to preset parameters. Preset parameters are usually set in a popup window opened by the Presets item from the Configuration menu. Setup parameters define characteristics shared by all tracks, primarily these are related to synchronization. Track parameters define a few characteristics of each track such as the track name, group number, and input focus. These are relatively unusual and are used mostly in scripts. Parameters have a type which determines how they are shown in the UI and used in scripts.

Integer - a small positive number String - a short line of text Boolean - a true or false value, displayed as a checkbox Enumeration - one of a fixed set of values, displayed as a menu

2.17 Preset
A preset is a named collection of parameter values. While you can change parameters individually using MIDI or scripts, you will usually change parameters in bulk by selecting presets. You may need only one preset, or you may define several with parameters chosen for different looping styles. Each track has an active preset that may be changed at any time, even while a loop is playing. Each track may have a different active preset.

2.18 Control
A control is a named value that controls how audio is recorded and played in a track. Controls are similar to Parameters but their values are always integers and they have a larger range than most parameters. They are usually set by a MIDI device that sends continuous controller messages such as a rotating knob or a foot pedal. There are five built-in controls: Input Level, Output Level, Feedback, Secondary Feedback, and Pan. See the Using Controls section for more information.

2.19 Setup
A setup is a named collection of parameters, presets, and controls for all tracks. Setups also contain parameters that define how the tracks will be synchronized. You may define several setups to configure tracks in different ways. There is always one active setup. Setups may be changed at any time, even while loops are playing. Note however that tracks may not immediately change to include everything in the new setup. If a track is already playing a loop, synchronization options defined in the setup will not take effect until the track is fully reset. There are many ways to use setups, but usually they are designed with a particular performance piece in mind. You can name each track to indicate which instruments will be used in them, define a level and pan mix for those instruments, decide which preset to use in each track, and decide how the tracks will be synchronized.

2.20 Project
A project is a complete snapshot of Mobius state. It includes the current Setup plus the current control settings for each track which may be different than the setup. It also includes all of the audio content: tracks, loops, and layers. Once a project has been saved it may be loaded back into Mobius at a later time. Projects are not saved as a single file on the file system, there is a project directory file contain all the non-audio information, plus one or more audio files for each loop. The audio files are stored as standard wave files and may be loaded into other music applications.

2.21 Trigger
A trigger is an external stimulus that causes Mobius to do something. There are several types of trigger:

User Interface - clicking a button or turning a knob with the mouse Computer Keyboard - pressing and releasing a key MIDI - receiving MIDI messages from a foot controller or control surface Plugin Parameter Automation - receiving messages from the VST or AU host application OSC - receiving messages in the Open Sound Control network protocol

While Mobius supports all of these trigger types, by far the most common trigger is a MIDI foot controller, which are often called footswitches. Because of this, you will see phrases like "tap the Record switch" or "press Reset" in the documentation. Just remember that while we usually talk about MIDI footswitches, you can also do the same things with other triggers types.

2.22 Sustainable Trigger


A sustainable trigger causes Mobius to take action twice, once when the trigger is pressed or turns on and another when the trigger is released or turns off. The sustainability of a trigger is important if you want to use Sustain Functions or Long Press functions. The following triggers are usually sustainable:

UI Button Computer keyboard key MIDI Note MIDI Continuous Control OSC message

With UI buttons, Mobius is notified when the mouse button is pressed and when it is released. Similarly with computer keyboard keys, Mobius is notified when the key is pressed and released. With MIDI notes, Mobius expects to receive a NOTE ON message when the key (or footswitch) is pressed and a NOTE OFF message when the key is released. With MIDI control changes, Mobius will treat a non-zero CC value as "on" and a zero value as "off". This is useful for some footswitches that cannot send MIDI notes. MIDI Program Change messages are however not sustainable. There is no on/off state for a program change. If you are just starting Mobius you do not need to fully understand sustainable triggers, except for one common problem. If you are using a MIDI controller that sends note or continuous control messages you must make sure that the controller sends messages when you press a switch and when you release a switch. This is usually called "momentary" mode. If your controller operates in "toggle" mode or if it does not send messages at all when the switch is released Mobius will not work correctly. The most common problem caused by this is pressing a switch to do the Record function and having the record continue for about 1/2 second then stop. See the Record Stops Suddenly item in the Troubleshooting section for more information.

2.23 Target
A target is anything in Mobius that can respond to a Trigger. These include Functions, Controls, Parameters, Presets, and Setups. For example triggers can be used to start and stop a function, to change the value of a control, or to select a preset.

2.24 Binding

A binding is the association of a Trigger with a Target. Once a binding is defined, every time a trigger is received it will be sent to the target. A simple example is to bind the computer keyboard key 'R' to the function Record. Once this is done, every time you press R a recording will start or stop. Most users will bind MIDI messages from a footswitch or control surface to functions and controls so they can operate Mobius without being near the computer. In the user interface, bindings are created using several popup dialog windows for each trigger type. Just remember that while the user interface may be different they're all doing the same thing, associating a trigger with a target.

2.25 Binding Scope


A Binding may be given a scope to more precisely specify which tracks will respond to the trigger. In this manual we will always assume the default global scope which means that triggers are sent to the currently selected track. It is also possible to cause a trigger to be sent to a specific track even if it is not selected. This is an advanced topic that will be discussed in the Advanced Control section of the Exploring Mobius manual.

2.26 Sustain Function


A sustain function is a special type of Function that can respond to a trigger twice, the first when the trigger is pressed and the second when the trigger is released. These can only be used with Sustainable Triggers. One example is Sustain Record. With the normal Record function you tap a footswitch once to start recording and again to stop. With the Sustain Record function you press and hold the footswitch to start recording, and the recording stops as soon as you release the footswitch. Many functions have both normal and sustain versions, these will be displayed as different items in the UI. If you bind a sustainable trigger to a non-sustainable function, the release event is simply ignored. If you bind a non-sustainable trigger to a sustainable function it will not work properly. The function may never turn off or it may begin its Long Press behavior. Scripts always behave as sustainable functions and they can use the sustain time in powerful ways.

2.27 Long Press


A long press happens when you use a Sustainable Trigger and you hold it in the "on" position for a certain period of time. By default this time is 500 milliseconds or 1/2 of a second. When a long press happens, the function that was begun when the trigger was pressed may change what it does. This is called the "long press behavior". One example is the Record function. If you bind a trigger to the Record function and you hold that trigger down for 1/2 second, it will change into the Reset function and the loop will be erased and all layers lost.

Not all functions have long press behavior, if they do it will be highlighted in the documentation for that function, these are referred to as "long press functions". If a function supports long press, you must use a Sustainable Trigger in order to use it. If you use a long press function with a non-sustainable trigger such as a MIDI program change, the long press behavior will never activate. A common problem that new users encounter is trying to bind the Record command to a trigger that sends a MIDI NOTE ON message but does not send a corresponding NOTE OFF message. This can happen with some footswitches. What happens is that the recording starts but within 1/2 second the loop resets. Mobius keeps waiting for the NOTE OFF but it never comes so it activates the long press behavior and resets the loop. If this happens to you then it is almost always a problem with the footswitch. This problem is also common when you try to bind the Record function to a plugin host parameter if the host does not support the "momentary button" concept.

3 User Interface
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 many components that display the status of the current loop in the active track. The track strips at the bottom have controls and status indicators for each of the tracks.

Each of these areas is highly customizable. You can remove things you don't want and add optional things that aren't shown here. In the status area you can move the components around to create alternate layouts that might look better to you. This ability to customize the display is one of the reasons why Mobius has a rather primitive appearance compared to most modern applications. Photo-realistic brushed aluminum faceplates with bouncing analog needles will not be found here. In this manual we will only talk about the default user interface. See Customizing the User Interface in the Exploring Mobius manual for more information on changes you can make to the user interface.

3.1 Menus
Configuration of Mobius is performed using a set of popup dialog windows you open from the menus. There are several ways to access the menus depending on which operating system you use and whether you are running Mobius standalone or as a plugin. In all situations, the Mobius menus are accessible when you right-click the mouse button somewhere inside the status area. A popup menu will appear near the current location of the mouse. When Mobius is running standalone an application menu bar is also available. Under the Windows operating system, the application menu is displayed at the top of the Mobius window. Under the OS X operating system, the application menu is displayed at the top of the screen when the Mobius window is selected.

When Mobius is running as a VST or AU plugin, the application menu bar is usually not available. The one exception is under Windows when the Dual Plugin Windows option is enabled. In this case, Mobius is in full control over the window and adds a menu bar. We will talk frequently about opening various configuration windows. These are all opened by first selecting Configuration from the main menu, then one of the submenu items that appear.

3.2 Button Area


The button area may contain any number of buttons that execute functions and scripts. This can be convenient for infrequently used functions that you don't need have accessible from a footswitch. To perform the function simply click the button with the mouse. Buttons are Sustainable Triggers so you can use them with Sustain Functions. The function will begin when you press the mouse button and end when you release it. Any number of buttons may be added. They will automatically be arranged on one or more rows in the button area. As you resize the Mobius window, the buttons will be rearranged to fit within the new window width. If you make the window narrower, more rows of buttons may be added. This will shift the status area down which may cause it to overlap with the track strips. If this happens you will need to make the window taller.

Multi-line button area See Customizing Buttons in the Exploring Mobius manual for more information on changing buttons.

3.3 Status Area


The status area contains many components that display the state of the selected track. You can add or remove components and move them to new locations. Some components are initially invisible and will appear only when certain things happen in the track. To see the names and outlines of all active components, press and hold the Z key on the computer keyboard.

Default status area component outlines As you add or move components in the status area you may notice that some of the components are erased with a black rectangular area. This indicates that one or more components overlap. When this happens you need to use Z to switch to outline mode, and drag the components so that they no longer overlap. To drag a component in outline mode, click on it with the left mouse button, hold the button down, and move the mouse to a new location.

Moving components is not necessary unless you customize them and sometimes after upgrading to a new release. See Customizing the Status Area in the Exploring Mobius manual for more information on changes you can make to the status area.

3.3.1 Floating Track Strip


In the default layout, the Track Strip component is shown on the left edge of the status area. This component contains knobs to control levels in the currently selected track. It is called a floating strip because it can be moved around the status area, whereas the track strips along the bottom of the window are fixed and cannot be moved.

Default floating track strip As you select different tracks the knobs will be redrawn to display the current levels in that track. To change the value of a knob, press and hold the left mouse button over the knob. To raise the value drag the mouse up or to the right. To lower the value drag the mouse down or to the left. Release the mouse button when the desired value is reached. See the Using Controls section for more information about what each of the controls do.

3.3.2 Instant Parameters


In the default layout, the Instant Parameters component is shown to the right of the Floating Track Strip. This component displays the values of selected parameters and allows you to change them.

Default instant parameters When using the default set of keyboard bindings, you can change the highlighted parameter using the 8 (up) and 2 (down) keys on the numeric keypad. Use the 6 (right) and 4 (left) keys to change the selected value. Changes you make here are not stored permanently in the preset, they temporarily override the value from the preset. The original preset value will be restored as soon as you select a different preset, or you perform a Full Reset. You can change which parameters are displayed in this component, this is described in detail in the Visible Parameters section of the Exploring Mobius manual.

3.3.3 Loop Status Cluster


In the default layout, the loop status cluster is shown in the center of the screen. This is not a single component but a set of components that are often arranged to be near each other.

Default loop status components

3.3.3.1 Counter The counter displays several pieces of loop information including the active loop number, the current playback position within the loop, and the current cycle within the loop.

Example Counter On the left is a small number that displays the active loop number. Recall that a track may contain any number of loops, but only one can be active at a time. In the center the larger digits show the current location in the loop in seconds. The digits to the left of the decimal point represent seconds, and the digits to the right represent tenths of a second. On the right are two smaller numbers separated by a slash. The number to the right of the slash is the number of cycles in the current loop, the number to the left of the slash is the number of the cycle that is currently being played or recorded. Cycles are created when you extend the loop using functions such as Multiply and Insert. Until you use those functions the loop will always have one cycle and the counter will always display 1/1. 3.3.3.2 Audio Meter The audio meter displays the level of the audio signal being received by the current track. It is a thin horizontal rectangle displayed between the Counter and the Loop Meter.

Audio meter showing the presence of a signal The audio meter will fill with color from the left to right as the signal becomes louder. The meter will usually flicker as the level changes. Note that the level displayed here is what mixing consoles call "post fader". It is the level of the track input after it has passed through the Input Level control and represents the level of the signal that will be recorded. 3.3.3.3 Loop Meter The loop meter is a very useful component that shows your current location in the loop using a graphical "thermometer". When you are at the loop start point, the loop meter will be empty. As the loop plays it will gradually fill with color until you reach the end point where the loop meter will be completely full. Then the meter is cleared and begins filling again.

Loop meter with a scheduled event

To give you an even better idea of where you are in the loop, a series of tick marks is drawn under the loop meter. The longer marks represent cycles and the smaller marks represent subcycles. When you use quantization, functions may be delayed until some time in the future. When this happens an event is displayed under the tick marks with a small triangle showing when the event will happen. There may be several events scheduled to happen at the same time. In this example at the beginning of the 3rd cycle the loop will enter reverse mode and half-speed mode at exactly the same time. If the event triangle points up it means the event will happen as soon as the loop meter reaches that point. If the triangle points to the right (or the left if going in reverse) it means the event will happen during a later repetition of the loop. 3.3.3.4 Mode Recall that at any given time a loop is in a Mode, such as Reset, Record, or Play. The name of the current mode is displayed to the right of the Audio Meter.

The names of the possible modes are described in the section Major Modes. 3.3.3.5 Beaters The beaters are a set of three "lights" that flash briefly when the loop playback position reaches certain important points.

The first light flashes whenever a subcycle boundary is reached. The second light flashes whenever a cycle boundary is reached, and the third light flashes whenever the loop start/end point is reached. Watching the beaters can help give you a sense of the loop rhythm if you are overdubbing over a non-rhythmic loop. 3.3.3.6 Minor Modes The Minor Modes component displays a number of interesting loop states. These differ from the major Modes because a loop can be in any number of minor modes at the same time. The minor modes are displayed in a line above the Counter.

The possible minor modes are:


Capture Master MIDI Master Mute Overdub

PitchBend PitchOctave PitchStep Reverse SpeedBend SpeedOctave SpeedStep SpeedToggle TimeStretch TrackMaster Window

See the Minor Modes section for more information on what each of these modes means. 3.3.3.7 Sync Status The Sync Status component is a small line of text displayed above the Minor Modes. When synchronization is enabled for the track, this component may display information about the nature of the synchronization.

For example, if the track is configured to generate a master MIDI clock this will display the tempo of the MIDI clocks. If the track is configured to follow an external sync source such as a MIDI clock or plugin host, the component will display the tempo of the external clock as well as the current beat and bar numbers. For MIDI, beat and bar numbers are guesses since MIDI clocks do not say what the time signature is. The way the counters work is every time we receive a MIDI start event we reset the beat and bar counters to 1. Then we start counting clocks, every 24 clocks is considered to be one beat. The number of beats in a bar is determined by the preset parameter named Record Beats/Bar. When this number of beats is received, we reset the beat counter back to 1 and increment the bar counter. 3.3.3.8 Message The Message component is used to display messages from scripts and a few messages generated internally by Mobius. It is a large rectangular area normally positioned under the loop meter and above the track strips. Because this component is normally invisible you will need to press the Control-Z key (assuming you have the default key bindings) to see where it is.

Whenever a preset is changed, Mobius will display the name of the new preset in the message area.

Scripts may use the Message statement to display a short message to let the user know what the script is doing. Messages from scripts will be displayed for a few seconds then be erased. The amount of time a message is displayed can be controlled by the global parameter named Message Duration. Using messages is an advanced topic that is primarily of interest to scripters. If you never intend to use scripts you can remove this component to save space, though this is not recommended since even non-scripters will often use scripts written by someone else.

3.3.4 Layer Bars


The Layer Bars component is displayed just under the Button Area. It consists of a set of vertical rectangles or "bars" that resemble dominoes. The bars represent the Layers in the active loop. The layer bars are initially invisible. When the loop is recorded one layer is created and one bar is shown. As you modify the loop and create more layers, more bars are added. The bar for the current layer is shown in an brighter color than the other layers.

Layer bars before undo Until you use the Undo function, the current layer will always be the last one displayed on the right. When you use undo, you move backwards to the previous layers. Each time you press undo you move back one layer. The highlighted layer will appear somewhere in the middle of the list.

Layer bars after undo The component can be constrained to have a fixed number of bars. The default maximum number of layer bars is 10. A loop may have more layers than this, but only 10 bars will be displayed. Once the number of layers is greater than 10, a small number is displayed in the upper left corner. This number indicates the number of layers that are not being displayed on the left.

Layer bars with maximum bars and overflow counter A special layer bar is displayed if you use the Checkpoint function. A checkpoint can be used to collapsing a number of layers together if you don't care about the layers in between two checkpoints. When you use Undo and Redo you will move between checkpoints and jump over all the layers in between. A checkpoint layer is shown in a highlighted color different than the color used for the current layer.

Layer bars with a checkpoint

3.3.5 Loop Bars


The Loop Bars component displays the number of loops in the current track and highlights the one that is active. It displays loops using colored rectangles similar to the Layer Bars except that the rectangles are horizontal and stacked vertically.

The loop bars component is not enabled by default because there are several other ways to show the current loop. The Counter displays the current loop as a number. There is also a graphical representation of the loops that can be displayed in the Track Strips that many people find more useful.

3.4 Track Strips


The Track Strips area displays summary status for all of the tracks. Each track has one track strip arranged in a row along the bottom of the window. The components in each track strip can be changed, but each strip will have the same components. These track strips are sometimes called fixed or docked strips to distinguish them from the Floating Track Strip. The floating track strip can be moved in the status area, but the fixed track strips at the bottom cannot be moved.

Default track strip The example above shows the default track strip components. Notice that the selected track will have a white rectangle drawn around its track strip.

3.4.1 Track Number


The Track Number component will display either the track number or the track name that was defined in the Setup. When the track has focus lock the number or name will be displayed in a different color. Clicking on the number or name will toggle focus lock.

3.4.2 Loop Radar


The Loop Radar displays progress through the loop as a pie-chart which is often lovingly referred to as the "loop pacman". When the loop is at its start point the radar will be empty, as the loop plays it will draw a clockwise filled arc. When the loop is at the end point it will display as a complete filled circle, then clear and start over.

3.4.3 Loop Status


The Loop Status component shows the status of each loop in the track. Each row represents one loop. If the loop has content a green rectangle is drawn. The active loop will be drawn with a white border. If you are performing a Loop Switch, the next loop will be drawn with a red border.

3.4.4 Output Level Control


This knob controls the output level of the track, it is a duplicate of what is displayed in the Floating Track Strip component in the status area. Being able to instantly access the output level control for all tracks makes it easier to mix them.

3.4.5 Output Level Meter


The Output Level Meter is similar to the Audio Meter except that it shows the level of the audio signal being played in the loop. It is another "thermometer" that will bounce around according to the average loop level being played.

4 Controlling Mobius
While you can control Mobius with the mouse by clicking on buttons and dragging knobs, most users will want to control Mobius using a MIDI footswitch or some other form of MIDI control surface. The keys on the computer keyboard also provide a convenient way to control Mobius. Recall from the Concepts section that a Trigger is an external stimulus that causes Mobius to do something. The most common examples of triggers are receiving MIDI events and detecting a computer keyboard key press. A Binding is the association of a trigger with a Target, the most common type of target is a function, script, or track control. By configuring bindings you can control almost every aspect of Mobius using MIDI or the keyboard.

4.1 Binding Popup Windows


Bindings are defined through a set of popup dialog windows. The windows for binding MIDI events, computer keyboard keys, and plugin parameters all share some components. The following image shows the binding window for MIDI events.

Example Binding Window The binding windows for MIDI events, keyboard events, and plugin parameters all use this style of user interface with a few differences that are described in later sections.

4.1.1 Binding Set Selector


At the top are the Binding Set Selector components. These are displayed only in the MIDI binding window. The components here allow you to create several sets of bindings which may be activated at different times. The MIDI Bindings section describes these components in more detail.

4.1.2 Bindings List

On the left is the Bindings panel. This lists all of the bindings that are defined. The first column will have the name of the target, the second text representation of the trigger. The third arguments column contains the optional binding arguments.

4.1.3 Selecting Targets


On the upper right is the Targets panel where you select a target for binding. This is a tabbed panel with each tab containing the names of one type of target. The Functions tab will have a list of all built-in functions arranged in alphabetical order. Function names that begin with Sustain are Sustain Functions and are normally bound to a trigger that has both a "down" and an "up" state such as MIDI notes.

Function Targets The Scripts tab will have a list of all loaded scripts. If you have not added any script files or directories from the Scripts configuration window then this tab will be empty. The Controls tab will have a list of all the built-in track controls. See Using Controls for more information on what these do. Control targets are almost always bound to MIDI continuous controllers.

Control Targets The Parameters tab will have a list of all the built-in loop and track parameters. Global parameters are not on this list.

Parameter Targets Parameter bindings are relatively uncommon, but one use for them is to bind a MIDI continuous controller to a parameter with a fixed set of values such as Quantize Mode. The MIDI controller range will be divided by the number of values in the parameter. With the MIDI controller at zero the first parameter value is selected, with the MIDI controller at 127 the last parameter value is selected. Other parameter values are selected as the MIDI controller sweeps between 0 and 127. The Configurations tab will have a list of all the user-defined presets, setups, and extended MIDI bindings.

Configuration Targets The name of the configuration will be prefixed with Preset:, Setup:, or Bindings: to indicate what it is. The example above shows a few of each type. If you are running Mobius for the first time, you should see only one preset and one setup in the list named "Default".

Configurations are commonly bound to MIDI program changes though MIDI notes and computer keys may also be used. When this trigger is received the preset, setup, or binding set is made active.

4.1.4 Selecting a Scope


The Scope selector restricts the target to a particular track or track group. When the scope is Global the binding is performed in currently selected track, this is the most common binding scope. The scopes Track 1 through Track 8 force the binding to be performed in a specific track no matter which is currently selected. The scopes Group A through Group D force the binding to be performed on all tracks in one of the track groups.

Scope Selector The most common use for scoping is to assign different MIDI continuous controllers to specific track Controls such as Output Level. This is typically done with control surfaces that have groups of faders and knobs similar to a mixing console. Each group of faders and knobs can be scoped to a specific Mobius Track. When you are just getting started we recommend you only use Global scope. The Advanced Control section of the Exploring Mobius manual has more detail on the use of binding scopes.

4.1.5 Binding Arguments


The Arguments text field is used to enter one or more words and numbers that can change the way the binding operates. This is an advanced topic covered in the Binding Arguments section of the Exploring Mobius manual.

The Mysterious Arguments

4.1.6 Trigger Binding Fields


Between the Scope selector and Arguments are fields that define the binding trigger. These will change depending on the trigger type and are discussed in more detail in the sections below. This example shows the trigger fields for MIDI bindings.

MIDI Trigger Fields

4.1.7 Command Buttons


Under the Bindings panel are the Command Buttons which are used to create new bindings, update existing bindings, and delete bindings.

Command Buttons To create a new binding select a target, scope, and trigger and click New, a new binding will be added to the list. To delete a binding select it in the binding list and click Delete. To modify a binding select it in the binding list and notice that the target, scope, and trigger components change to have the values for the selected binding. Now change the target, scope, or trigger and click the Update button. The previous binding is changed to have the new values.

4.2 MIDI Bindings


To create MIDI bindings, open the Configuration menu and select the MIDI Control item. The major sections of this window were described in Binding Popup Windows, here we will describe the features specific to MIDI bindings.

MIDI Binding Window

4.2.1 Selecting MIDI Triggers


The Trigger for MIDI bindings is specified with a set of three fields. The first is a menu that selects the type of MIDI event, the second the MIDI event channel, and the third the MIDI event value.

MIDI Trigger Fields The MIDI event type is specified with a menu containing these items.

Note - Note On or Note Off event Control - Continuous controller event Program - Program change event

The Channel field is used to select one of the MIDI channels from 1 to 16. The binding will only be executed if the MIDI event comes in on this channel. There is no omni mode, you must select a channel. The Value field is use to specify the note number, continuous controller number, or program change number. It is a text field, you must type in the number. To make it easier to create MIDI bindings, Mobius supports what is commonly called a "MIDI learn". The read-only text area below the Value field will show the MIDI events currently being received. To use this feature you must have previously selected one or more MIDI Devices. Just press keys or turn knobs on your MIDI controller and you should see them in the MIDI capture field. If you check the MIDI Capture box, the three trigger fields are changed to reflect the last MIDI event that was received. This makes entering the type, channel, and value for a MIDI binding much easier. The typical steps for creating MIDI bindings are:

1. 2. 3. 4.

Check the MIDI Capture box Select a target (function, control, parameter, or configuration) Select a scope Press a key, turn a knob, or move a fader on your MIDI device, the trigger fields should change to reflect the MIDI event 5. Click the New command button to add the binding

4.2.2 Multiple MIDI Binding Sets


MIDI bindings are unusual in that you can create more than one set of bindings. The first set of bindings is always named Common Bindings and are always active. Additional sets of bindings may be optionally enabled and merged with the common bindings. These are called extended bindings and sometimes overlay bindings. You might want to create several extended bindings if you have several MIDI controllers that you use at different times. Or to make different bindings for different locations such as a home studio and a performance space. This is an advanced feature, the majority of Mobius users only have a single set of MIDI bindings.

Binding Set Selector At the top of the MIDI binding window is the binding set selector The field at the top labeled Active Bindings is a menu containing all of the defined binding sets. The currently selected binding set is active the one that is active. Note that this menu is a little confusing because the first binding set named Common Bindings is always active so you use this menu to select which binding set you want active in addition to the common bindings. If Common Bindings is selected here it means only the common bindings are active with no extensions. If anything else is selected it means that that binding set is active and it will be combined with the common bindings. Below the active binding menu is a text field labeled Name which has the name of the binding set. The first binding set has no name, it is always displayed as "Common Bindings" and this cannot be changed. Extended binding sets may be given any name. When you first create them they will be given automatically generated names like "Bindings 1" and "Bindings 2". Edit the name field to set the preferred name, then click the Rename button. To create a new extended binding set click the small New button to the right of the active bindings menu. A new empty binding set is created and added to the menu. To delete a binding set, first select it from the active bindings menu then click the small Delete button. When you click Ok in the MIDI bindings window the extended binding set that is currently shown in the active bindings menu is made active. If you have been editing several binding sets be sure to leave the one you want to use now selected when you close the window. After you create extended binding sets, the binding sets themselves may be bound to a MIDI event, when that MIDI event is received it causes that set to be activated. Binding sets will be shown under the Configurations tab in the target selector.

4.2.2.1 Multiple MIDI Bindings Example While several uses for multiple MIDI binding sets have been discovered by users, the original goal of this was to provide more flexibility for the Ground Control Pro foot controller. This controller has some nice features but one unfortunate design choice is that it can only be configured with 12 "instant access" buttons. An instant access button is what you must use if you want momentary switches that send something both when they're pressed and when they're released. The problem is that there are no "banks" of instant access switches like there are on other footswitches, you only get 12 of them and what they send cannot be changed without reprogramming. To help work around this limitation you can create several extended binding sets that bind the same MIDI events from the instant access switches to different Mobius functions. In effect the binding sets become "banks" that reassign what the switches do. To switch between banks you then bind one row of switches (usually the top or bottom) to the binding sets themselves. For example switch 1 selects binding set A, switch 2 selects binding set B, etc. When set up in this way the top four switches are effectively bank select switches that change the behavior of the bottom 8 switches. This raises the number of Mobius functions at your disposal from 12 to 32.

4.2.3 Showing MIDI Bindings


A window containing a summary of all the MIDI bindings may be displayed by pulling down the Help menu and selecting the MIDI Bindings item. This is a "modeless dialog" that you can leave open while you interact with the main Mobius window.

MIDI Bindings Summary Window

4.3 Keyboard Bindings


To create keyboard bindings, open the Configuration menu and select the Keyboard Control item. The major sections of this window were described in Binding Popup Windows, here we will describe the features specific to keyboard bindings.

Keyboard Binding Window The Trigger for keyboard bindings is specified with a single field labeled Key. This is a text field into which you type the name of the key you want to bind. The key names must follow certain rules, for example letters must be in upper case and control key combinations are written as "Ctrl+" followed by the key letter. It is possible to learn these rules but by far the easiest way to make key bindings is to check the Capture checkbox.

Keyboard Trigger Fields When key capture is checked, the name of any key you press, including combinations of shift and modifier keys, is automatically entered into the text field.

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 it is not recommended since Windows will popup the start menu whenever this key 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. The typical steps for creating key bindings are: 1. 2. 3. 4. 5. Check the Key Capture box Select a target (function, control, parameter, or configuration) Select a scope Press a key with or without modifier keys on the computer keyboard Click the New command button to add the binding

Note that while it is possible to bind keys to track controls (Output Level, Pan, etc.) this is not normally done because keys cannot behave like continuous controllers. Keys are however Sustainable Triggers so they may be used with the sustain functions. If the key is bound to a sustain function, the function is active for as long as the key is pressed.

4.3.1 Showing Keyboard Bindings


A window containing a summary of all the keyboard bindings may be displayed by pulling down the Help menu and selecting the Key Bindings item. This is a "modeless dialog" that you can leave open while you interact with the main Mobius window.

Keyboard Bindings Summary Window

5 Using Mobius
In this section we will discuss some of the more common ways to use Mobius and describe some of the menu items and configuration windows. When you have finished this section you should have a good overview of what Mobius can do. The Mobius Techniques manual will go into more depth on functions and techniques. The Mobius Reference manual will have an exhaustive description of every function, parameter, control and variable.

5.1 Using Presets


Before we dive into Mobius functions, it is important to understand presets. Recall that Parameters are named values that can change how Mobius behaves. Many

functions are sensitive to one or more parameters so in order to understand what a function does, you need to understand the parameters that may effect it and what the parameter values mean. In this section we will not document what every parameter means, but we will show you how to change them. The Using Functions section will talk about how a few parameters are used with certain functions and the Common Parameters section will describe more parameters that are used with many functions. Parameters are usually set by using Presets, a named collection of parameter values. You may define several presets with different parameter values. Each track always has one active preset. Presets may be changed at any time and each track can have a different preset. To manage presets, open the Configuration menu and select the Presets item.

5.1.1 Preset Window


The preset window is divided into two sections. At the top are components for selecting, renaming, creating, and deleting presets. The large area at the bottom contains of a tab panel with the parameter values for the selected preset. The first tab labeled General has most of the parameters you will see referenced in the function documentation.

Preset Window

5.1.2 Preset Switch Tab


The Switch tab contains parameters that define what happens when you switch between loops.

Loop Switch Parameters

5.1.3 Preset Effects Tab


The Effects tab contains parameters related to pitch and speed shifting.

Effects Parameters

5.1.4 Preset Other Tab


The Other tab contains miscellaneous parameters that didn't fit in the other tabs.

Other Parameters

5.1.5 Setting Parameters


Parameter values are either numeric, text, boolean, or "enumerations". Numeric parameters are displayed with a small text field where you can type in a number. There is usually a minimum and maximum value defined for numeric parameters. Text parameters have a longer text field where you can type in free-form text. Boolean parameters are displayed with a checkbox to turn them on or off. Enumeration parameters are displayed with a menu where you select one of the allowed values. When you see a parameter referenced in the documentation for a function and would like to try it out, bring up the preset window, locate the parameter in one of the tabs, change the parameter, and click Ok. Be careful though. Until you are comfortable with the basic operation of Mobius it is recommended that you not make changes to parameters unless you are certain about what they will do. If Mobius starts acting weird or if something that worked yesterday suddenly stops working, it is very often because you were experimenting with parameters and forgot to put them back to their default values. Mobius installs with one default preset named oddly enough "Default". You can change this preset but if you're just getting started it is recommended that you make a copy of it and change the copy. That way you can always get back to the default parameter set if something goes wrong.

5.1.6 Managing Multiple Presets


At the top of the preset window is a set of components that let you create, delete, select, and rename presets.

Preset Management Components To create a new preset simply click the New button. A new preset is created and selected. The new preset will have a copy of the parameters from the preset that was selected when you clicked New. If you want to make a new preset that is similar to an existing preset, be sure to select the right existing preset before you click New. When a new preset is created it will be given a generated unique name starting with "Preset" followed by a number. To change this name, click on the Name text field and type in the desired name.

Renaming a new preset Next click the Rename button to save the name you entered into the preset. You must remember to click Rename.

Renamed preset

Once you have created several presets you can switch between them by using the Selected Preset menu at the top. The preset that is selected in this menu will become the active track preset when you click Ok on the preset window. If you are making changes to several presets, be sure to remember to select the one you want to be active before closing the window.

Selecting a preset To delete a preset simply select it and click the Delete button. The preset is deleted and removed from the selection menu. Be careful with the delete button, there is no "are you sure" prompt. If you delete a preset by accident click Cancel at the bottom of the preset window and open the window again. After making changes to one more presets that you are happy with, you must click the Ok button. If you click Cancel or the window close button all changes you have made will be lost.

5.1.7 Selecting Presets with Menus


Another way to select presets is by using the Presets menu in the menu bar.

Selecting a preset This menu will contain the names of all defined presets with a check next to the one that is active in the current track. To change presets simply select another one from the menu. If you just need to change presets without editing any parameter values using this menu is easier than opening the preset dialog.

5.2 Using Functions


Recall that a Function is a named action performed by Mobius at the request of the user. In order to make Mobius do anything you have to use functions. Several phrases are used to describe the act of using a function, we usually say "executing a function" though "running a function", "performing a function", and "triggering a function" are sometimes seen in forum conversation. To execute a function you must associate it with a Trigger through a processed called Binding. In the initial installation there are a few functions bound to buttons in the UI and to keys on the computer keyboard. While you can use Mobius with just the computer almost everyone will at some point invest in a MIDI hardware controller, usually a footswitch. The Controlling Mobius section describes the most common ways to make function bindings. In this section we focus on what the functions do and not on how they are executed. We will use the terms "press" and "release" when talking about using a trigger to execute a function. Sometimes the trigger will be referred to as "the button". The trigger may actually be a UI button, computer key, MIDI footswitch, or something else. But in all cases function triggers are normally buttons of some kind that can be pressed and released.

So instead of saying something technically accurate like "perform the down transition of a sustainable trigger bound to the Record function" we will just say "press Record".

5.2.1 Modal and Instant Functions


When some functions are executed they will continue to have an effect on the loop until they are canceled. These are called modal functions while the function is active the loop is said to be in a mode. While the loop is in a mode some functions may change their behavior. There are two types of modal functions: major modal functions and minor modal functions. The difference between these is that a loop can only be in one major mode at a time, but it may be in several minor modes at a time. If you are in a major mode and you use a function that has a different major mode, the first major mode is canceled. If a function is not modal, it is said to be an instant function which means it has a onetime effect on the loop and then it is finished. Reset and Instant Multiply are examples of instant functions. Record and Overdub are examples of modal functions.

5.2.2 Major Modes


A loop is always in one major mode which is displayed in the Mode component in the user interface. Most of the major modes are temporary and caused by the execution of a function. A few represent the basic states a loop can be in when no function is active. The possible major modes are:

Reset - The loop is empty Run - A short-lived mode used during latency compensation, not usually seen Play - The loop is playing without being affected by a function Record - The Record function is active Threshold - The loop is waiting to begin recording until an audio signal of sufficient loudness is received Overdub - The Overdub function is active Multiply - The Multiply function is active Insert - The Insert function is active Stutter - The Stutter function is active Rehearse - The Rehearse function is active, and is in the review phase Rehearse Record - The Rehearse function is active, and is in the record phase Replace - The Replace function is active Substitute - The Substitute function is active Mute - The Mute function is active Pause - The Pause function is active Confirm - The loop is waiting for confirmation after a loop switch Switch - The loop is waiting for a quantize point before performing a loop switch

Synchronize - The loop is waiting for a synchronization point before beginning recording

5.2.3 Minor Modes


A loop may be in any number of minor modes at the same time. Most of the minor modes are activated by the execution of a function, but some are related to synchronization and reflect various sync states a loop may be in once it has been recorded.

Capture Master MIDIMaster Mute Overdub PitchBend PitchOctave PitchStep Reverse SpeedBend SpeedOctave SpeedStep SpeedToggle TimeStretch TrackMaster Window

The Reverse, Speed, and Pitch modes are called "effect" modes because they behave like applying audio effects to the track in real-time. The Master, TrackMaster, and MIDIMaster are synchronization modes you will see after recording the track that has been designated the sync master track. TrackMaster means that it is behaving as the track sync master, MIDIMaster means that the track is behaving as the MIDI sync master, and just Master means it is both track and MIDI sync master. Overdub is strange because it is both a minor mode and a major mode. Unlike other major modes if you start in Overdub mode then change to a different mode like Multiply when you leave Multiply mode you will return to Overdub mode. In effect the system always remembers if you started in Overdub mode and returns you there. This "pending" overdub mode is indicated by showing Overdub in the minor mode list. The Reverse, Speed, Pitch, and Overdub modes may be active while the loop is in Reset mode. Even though the loop is empty, the minor modes are "armed" and will become active once you start recording a new loop.

5.2.4 Reset, Empty, Clear, and Silent

There are two important states that a loop can be in but the terms used to describe those states are sometimes used inconsistently in the forums and even in the documentation. Usually it is clear from the context what the meaning is, but in this section we will give precise definitions for these terms. When you first start Mobius, all loops are in a state called Reset. The loops contain nothing, they cannot be played or manipulated in any way until you record something into them. While the official term for this is Reset we sometimes use the term Empty to mean the same thing. An empty loop contains nothing. When you use certain features like Empty Loop Action, loops can be created that have a size but they do not contain any audible content. Loops in this state are said to be Clear or Silent. The problem word is Empty. It is common to think of a silent loop as "empty" but technically this is not correct. The loop is not empty, it can play and be operated upon just like any other loop. It just doesn't have anything audible in it. This is especially important in the discussion of "loop switching" with Next Loop and Empty Loop Action because "empty" loops will behave differently than "silent" loops.

5.2.5 Record
It all starts with Record. When a loop is empty is said to be in a reset state. Unless you choose to work only with pre-recorded loops you must always begin by recording audio into an empty loop. There are several ways to record loops but the one that most people start with is to use the Record function. You press Record once to begin recording and again to end the recording. Immediately after ending the recording the loop begins playing and continues forever until you modify it in some way. Another function that can be used to record a loop is Sustain Record. With this function recording starts when you press Sustain Record and ends when you release it. This is especially useful if you want to create very short loops. Some people like to have recording start automatically when they begin playing, then press Record to stop. You can do this by setting the Record Threshold preset parameter. When this parameter is zero, recording always starts immediately. When this parameter is set between 1 and 8, it the input level of the track must exceed the threshold before recording will start. Until then the track enters Threshold mode. Small values for the threshold will make it very sensitive, higher values will require a very loud signal. You will need to experiment with thresholds to find the one that works best for your input signal.

5.2.6 Reset
So now you've recorded a loop, how do you get rid of it? The Reset function will throw away the loop and return it to reset mode. You can bind a footswitch to the Reset function but if you are using a controller that supports Sustainable Triggers it is easier to use a Long Press of the Record function. Just press and hold Record for about 1/2 second and the loop will be reset. There are three versions of the Reset function.

Reset - reset the current loop Track Reset - reset all loops in the current track Global Reset - reset all loops in all tracks

5.2.7 Overdub
Once you have recorded a loop one of the most common looping techniques is to add more audio to the loop as it is playing, then when the loop plays back from the beginning you hear the original loop plus the new material. This process is called "overdubbing" and is done with the Overdub function. As the loop is playing, press Overdub to begin overdubbing and press Overdub again to stop. You should hear what you overdubbed the next time the loop plays from the beginning. You can also overdub using the Sustain Overdub function. Like other sustain functions, the overdub starts when you press the button and ends when you release it. If you do a lot of overdubs, the combined audio can reach the point of digital clipping and sound like harsh distortion. You may need to reduce the input level of the track so you can overdub several times without overloading. Overdub is often used in combination with the Feedback control. If you reduce feedback and keep overdub on, you can create an endlessly evolving loop as old layers fade out and new overdubs take over.

5.2.8 Undo and Redo


Once you start overdubbing, you will notice bars being added to the Layer Bars in the user interface. Each bar represents one pass over the loop during which an overdub was applied. If you decide you don't like something you've overdubbed you can use the Undo function to return to the previous layer. You can keep using Undo to move back layers until you reach the first recorded layer. If you have the Maximum Redo parameter set, then as you undo, the current layer will be moved to the redo list, displayed to the right of the highlighted layer bar. When you have one or more redo layers you can use the Redo function to move forward to the next redo layer. A Reset of the loop will delete all layers.

5.2.9 Mute and Pause


Sometimes you want to silence a loop but not completely throw it away like the Reset function does. There are several ways to do this, the most common is to use the Mute function. When you press Mute the loop will be silenced but it will continue to play. You will see the loop meter advancing but no sound will be output from the track. To end mute mode, press Mute a second time or use another function that is configured to end a mute (see below).

There are several options for what happens when you end a mute. These are controlled by the Mute Mode preset parameter. The possible values for this parameter are:

Continue - resume playing at the current playback location without moving Start - restart the loop from the beginning Pause - resume from the paused location

The last mute mode Pause actually changes the Mute function so that it behaves the same as the Pause function. Pause behaves like pause button on an old tape machine, when you press Pause the first time it freezes the loop, no sound is output and the loop does not advance. When you press Pause a second time it unfreezes the loop and continuous playback from the last location. The most common way to end mute mode is to press Mute a second time. But other functions can be configured to automatically cancel mute mode without having to press Mute. This is controlled by the preset parameter Mute Cancel which has these values:

Never - mute is never canceled automatically, you must use the Mute function Edits - mute is canceled by an editing function as Overdub Triggers - mute is canceled by an editing function or a loop triggering function such as NextLoop Effects - mute is canceled by editing functions, triggering functions, or by effects functions such as Reverse Custom - mute is canceled by a set of functions you choose Always - mute is canceled by any function

When you use the Custom mute cancel mode, you specify the functions you want to cancel with a global parameter. From the Configuration menu select Global Parameters, select the Functions tab then find the selector labeled Mute Cancel Functions. Move the functions you want to cancel mute to the panel on the right. Note that another option for silencing a loop is to simply turn the Output Level down. If you bind a MIDI expression pedal to the Output Level control you can quickly sweep the track output level up or down using the pedal.

5.2.10 Multiply
Often after recording a loop you would like to overdub something that is longer than the original loop. If you just use the Overdub function the overdub will "fold" over on itself rather than making the loop longer. The Multiply function is similar to Overdub except that it will extend the loop for as long as you are in multiply mode. When you press Multiply for the first time you will enter the Multiply major mode. During this mode whenever you let the loop play for the length of one cycle, a new cycle is appended or inserted. Recording is active during the multiply so you may overdub new material over the cycles being multiplied. It is important to understand that Multiply can behave differently if you use it again after the loop has been multiplied once. This behavior is determined by the Multiply Mode preset parameter which has these values.

Normal - Multiply behaves similar to the Echoplex EDP

Simple - Multiply simply extends the loop when necessary it never reduces the loop length

The default multiply mode is Normal which makes it behave similar to the multiply function on the Echoplex EDP. We will not go into full detail on how multiply behaves but the most important thing to know is that if the loop has already been multiplied once, using it again will perform a "Remultiply" which can end up reducing the loop length as well as extending it. You can think of it like marking a region of text in a text editor and cutting it. When you use multiply in an already multiplied loop, the section of the loop between the beginning and the end of the multiply is cut out and the content on either side is discarded. A new layer is created containing only the section of the loop that was covered by the multiply. Multiply behavior is complicated and difficult to understand for new users. If you do not already understand roughly how the EDP does multiply, it is recommended that you set Multiply Mode to Simple.

5.2.11 Instant Multiply and Divide


While the Multiply function is a "modal" function that you must start and stop, Instant Multiply will instantly multiply the current loop by some number. There are three builtin versions of instant multiple, more multiples are available using scripts.

Instant Multiply 2 Instant Multiply 3 Instant Multiply 4

The Divide function is similar to Instant Multiply but it works the other way, the loop is instantly divided by some divisor. There are three built-in versions of this function, more divisors are available using scripts.

Divide 2 Divide 3 Divide 4

5.2.12 Replace
The Replace function is similar to what recording systems call "punch in". While the replace function is active, the previous contents of the loop are erased and replaced with the audio signal currently being received by the track. Replace is a modal function, the replace begins when you press the button for the first time and ends when you press the button a second time. It is fun to use Replace with the Quantize Mode parameter set to Sub Cycle. This allows you to create punches that follow a strict rhythm.

5.2.13 Insert
The Insert function will insert new material into the loop. Unlike Replace it does not overwrite the existing loop, instead it makes the loop longer by inserting space at the beginning, middle, or end of the loop. Insert is a modal function, the insert begins when you press the button the first time and ends when you press it a second time.

Insert will normally "round off" so that a full cycle is inserted. When you press Insert a second time, an event to end the insert is scheduled for some time in the future, and Insert mode will continue until that time is reached. This is useful if you want to create rhythmic loops and think of cycles like one or more measures in the time signature. If you want to create non-rhythmic or "glitchy" loops you can create an "unrounded insert" by ending insert mode by pressing the Record button rather than the Insert button.

5.2.14 Reverse
The Reverse function will toggle the playback direction. This is a minor modal function, reverse starts when you press the button the first time and ends when you press the button a second time. But unlike major modal functions you can be in reverse mode at the same time you are in other modes like Multiply or Overdub. Changing direction as you overdub can result in some very interesting effects. While you are in reverse mode, the word Reverse will appear in the Minor Modes Component in the user interface. You will also see the Loop Meter and Loop Radar draw in reverse.

5.2.15 Speed Toggle


The Speed Toggle function will by default toggle half-speed mode. This is a minor modal function, half-speed starts when you press the button the first time and ends when you press the button a second time. Like Reverse, minor modal functions can be active at same time you are in other modes like Multiply or Overdub. You can even have Speed Toggle and Reverse active at the same time. While you are in half-speed speed mode, the word SpeedToggle -12 will appear in the Minor Modes Component in the user interface. This indicates that the speed is being temporarily lowered by 12 semitones and will be raised when the function is executed again. You will also see the Loop Meter and Loop Radar draw more slowly and in a different color. A common use for the Speed Toggle function is to record something while in halfspeed mode, then when you return to normal speed what you recorded plays twice as fast and one octave higher. Speed Toggle (like Reverse) can be used while the loop is in Reset mode. Although the loop is empty you will see "SpeedToggle -12" appear in the in the Minor Modes Component. This means that the mode is "armed" and will be active when you eventually record the loop. Note that when used with binding arguments, Speed Toggle can toggle between any semitone shift up or down, not just one octave down.

5.2.16 Next Loop


The Next Loop function will move to the next loop in the track. This is a rather complex process called loop switching. Many things can happen when you switch loops, these are discussed in more detail in the Mobius Techniques manual. For now you can experiment with using Next Loop to record different loops, then cycle over them. As you will see, with the default preset parameters, switching to an

empty loop halts playback and the next loop sits in Reset mode until you press Record to begin recording. Trying to create another loop that is the same size as the first "by ear" is next to impossible. There are many options for creating new loops that don't disrupt the flow of the performance. One is to set the Empty Loop Action parameter to Record. If this is set, whenever you switch to an empty loop, recording begins automatically. You do however still need to press Record to stop the recording. To create loops that are exactly the same size, or an exact multiple, set Empty Loop Action to Copy Timing. Now when you switch to an empty loop, a new clear loop will be automatically created that is exactly the same size as the original loop. You can then begin overdubbing into this new loop. Next Loop is just one of many functions that perform loop switches.

Next Loop Previous Loop Sustain Next Loop Sustain Previous Loop Loop 1 Loop 2 Loop 3 Loop 4 Loop 5 Loop 6 Loop 7 Loop 8 Restart

Previous Loop works the same as Next Loop but it selects the loop in the other direction. The numbered Loop functions cause a switch to a specific loop. The Sustain Next Loop and Sustain Previous Loop functions must be bound to a Sustainable Trigger. If they are not, they behave the same as Next Loop and Previous Loop. What the sustain functions do is switch to the new loop for as long as the function button is held down, then return to the original loop. The Restart function restarts the current loop from the beginning. It doesn't sound like it would be a loop switch function but it is essentially a switch away from and then immediately back to the current loop. All of the features that are available when switching to a different loop are also available with Restart. The numbered Loop functions are similar. If you are not in the numbered loop, then it switches to that loop. If you are already in the numbered loop then it does the same thing as Restart.

5.2.17 Shuffle
Shuffle is a fun function you can use to slice a loop into pieces then reorder them. This is an "instant function" that will have immediate effect on the loop rather than placing you into a mode. When the Shuffle button is pressed all of the subcycles of

the loop are immediately arranged. You can change the granularity of this slicing by changing the Subcycles parameter. How the slices are rearranged is controlled by the Shuffle Mode parameter. It has these values:

Reverse Shift Swap Random

With Reverse the slices are arranged in reverse order. For example starting with slices 1234 the new order will be 4321. With Shift the slices are shifted to the right by one. For example 1234 becomes 2341. With Swap pairs of slices are reversed. For example 1234 becomes 2143. With Random the slices are reordered randomly.

5.3 Using Controls


A control is a named value that effects how audio is recorded and played in a track. Controls are similar to Parameters but their values are always integers and have a larger range than most parameters. They are usually set by a MIDI device that sends continuous controller messages such as a rotating knob or a foot pedal. Like MIDI, the value of a control will range from zero to 127.

Default track controls in the status area

5.3.1 Input Level


Input Level controls the amount of attenuation (volume reduction) applied to the audio stream coming in from the audio interface or the plugin host. A value of 127 means that the audio is unmodified. Lowering the value attenuates the audio using an approximate logarithmic curve. Usually input level is left all the way up, but you may want to reduce it if you have different instruments routed to each track and you want to balance their input levels.

5.3.2 Output Level


Output Level controls the amount of attenuation applied to the track output as it is sent to the audio device or plugin host. Like Input Level a value of 127 means the audio is passed unmodified. Output levels are frequently changed to balance the track mix. Functions that add new material to a loop such as Overdub can cause a loop to become progressively louder. After several overdubs it may be necessary to reduce the output level to match the other tracks. Output levels are also commonly changed as an effect, such as temporarily muting tracks or performing a gradual fade in or fade out.

5.3.3 Feedback
Feedback controls how the loop decays over time. With feedback set at 127 the loop does not decay, it will play that way forever or until you change it with looping functions. With feedback reduced the loop will gradually become softer every time it plays until it eventually decays to silence. A common looping technique is to use Overdub with feedback reduced. You can keep adding new layers to the loop but old layers will decay. In this way you can create evolving loops that change gradually over time.

5.3.4 Secondary Feedback


Secondary Feedback is like Feedback except that it is active at different times. It must be enabled by selecting the Enable Secondary Feedback preset parameter. For more on using feedback see the section Using Feedback.

5.3.5 Pan
Pan adjusts the relative output levels of the left and right channels of the track.

5.3.6 Other Controls


There are a number of additional controls related to speed and pitch shifting. These are discussed in detail in the Speed Shift , Pitch Shift , Time Stretch , sections of the Mobius Techniques manual.

5.4 Common Parameters


In the Using Presets we described how you can change parameters and in the Using Functions we introduced a few parameters and showed how they are used with certain functions. In this section we will introduce a few more of the most commonly used parameters. The Mobius Techniques manual has more information on each of these parameters and how they can be used.

5.4.1 Loops Per Track


The Loops per Track parameter determines how many loops will be in the track. The default is 4, the minimum number is 1 and the maximum is 8. Note that since this is a preset parameter, and since each track can have a different preset, it is possible for each track to have a different number of loops. This can be useful when done carefully, but when you're just starting out it is recommended that you make all tracks have the same number of loops to ensure that functions like Next Loop and Loop Trigger work consistently. Bug Alert: There are some glitches in the user interface when you change the Loops per Track parameter and the Loop Status component is selected in the track strip. Since this component displays a row for each loop if you increase the number of loops this component will need to grow taller which makes the entire track strip taller.

Currently the track strip will not automatically resize to show the additional loops, you must close and restart Mobius to rebuilt the track strips with the new size.

5.4.2 Quantize Mode


Recall that Quantization is a general term used to describe how Mobius can adjust the timing of a function so that it begins or ends at a precise point in the loop. The Quantize Mode parameter is the primary way to enable quantization for most functions. Not all functions obey quantization and some like Overdub have other parameters that determine whether they are quantized. But most do, so if you feel like functions are not happening when you want them too then quantization is probably enabled. The parameter may have these values. Off Subcycle Cycle Loop When Quantize is Off quantization is disabled. Functions start immediately and usually end immediately. Some functions like Multiply and Insert have their own rounding behavior and will sometimes defer their ending even when quantization is off. When Quantize is Subcycle, Cycle, or Loop quantization is said to be enabled. The three values define what are called the "quantize points" or "quantization boundaries". When quantization is enabled and a function that obeys quantization is executed, the execution is delayed until the next quantize point. When Quantize is Loop the quantization point is the beginning of the loop (or the end depending on how you look at it). Functions are delayed until the loop plays to the end and wraps back around to the start point. When Quantize is Cycle the quantization points are at the beginning of each cycle. Until you use functions such as Multiply that add cycles, a loop will have only one cycle and this quantize mode behaves the same as Loop. If you have cycles, you will see them in the Loop Meter as longer tick marks. When Quantize is Subcycle the quantization points are at the beginning of each subcycle. A subcycle is an even division of the cycle and is determined by the Subcycles parameter. Depending on how you build the loop, subcycles are often the same as "beats" and cycles the same as "bars" in a time signature. But this does not have to be the case, cycles and subcycles can represent any span of time. Though it is not a hard rule, in general most people use cycles to split the loop up into a relatively small number of major sections. These might be bars, phrases, or even one full chord progression. Dividing these into subcycles is then a matter of preference, the subcycles may represent beats, bars, or even finer grains like 8th or 16th notes. The point of using quantization is to make changes to the loop at rhythmically exact times. This is often used when you are synchronizing with an external device such as a drum machine or sequencer. For example you may want to enter Reverse mode at

the exact moment the loop reaches the start point. Or you may want to use Replace to punch in notes on a precise quarter note grid.

5.4.3 Subcycles
The Subcycles parameter sets the number of subdivisions in each cycle. This is used most often with the Quantize Mode parameter to define quantization points. You can see subcycles in the Loop Meter as the shorter tick marks. While the number of cycles in a loop stays the same until you extend or shorten it, you can change the number of subcycle divisions at any time just by changing the Subcycles parameter. You will see the subcycle tick marks in the Loop Meter change but otherwise the loop is unaffected.

5.4.4 Overdub Quantized


As mentioned in the Quantize Mode section, not all functions obey quantization. One of these is the Overdub function. The reason is that usually you want more flexible control over when overdubs begin and end, and since overdubs merge with the existing loop the exact start and end points are not as important rhythmically. There may be cases though where you want overdubs to be quantized. If for example you are overdubbing into an empty loop you might want to make an exact grid of quarter notes similar to what you can accomplish with the Replace function. It is possible to make Overdub sensitive to quantization by checking the Overdub Quantized preset parameter. This parameter applies only to Overdub and dependent on Quantize Mode parameter. If Overdub Quantized is checked but Quantize Mode is Off, the Overdub function will not be quantized.

5.4.5 Switch Quantize


Loop switching is a very powerful operation with many options. Because so much can be done during a loop switch it is given it's very own quantization mode set using the Switch Quantize parameter. The various loop switching functions described in Next Loop do not obey the Quantize Mode parameter, they will only obey the Switch Quantize parameter. Switch Quantize is similar to Quantize Mode but has a few extra values:

Off Confirm Subcycle Confirm Subcycle Cycle Confirm Cycle Loop Confirm Loop

When the value is Off the switch happens immediately.

When the value is Subcycle, Cycle or Cycle the switch happens at the next quantization point. When you use one of the loop switch functions the loop will enter Switch mode while it waits for the next quantization point. The three "Confirm" modes require an extra confirmation action before the switch will happen. When you use one of the loop switch functions the loop will enter Confirm mode. To exit confirmation mode execute the Confirm function. What happens now is determined by the combination of the confirmation option and the quantization point. If the value is Confirm the switch happens immediately, if it is any of the other three the loop enters Switch mode and waits for the next quantization point before doing the switch. While the loop is in Switch or Confirm modes you can execute other functions to control what happens to the next loop when the switch is eventually performed. This is sometimes referred to as the "switch quantization period" and more casually on the forums as the "lame duck period". This is a complex topic that is described fully in the reference guide. But here are a few examples of functions you can use during the switch quantization period.

Record - forces the next loop to be rerecorded Overdub - copies the original loop to the next loop if it is empty Insert - copies the timing from original loop to the next loop if it is empty Reverse - toggles the playback direction of the next loop Speed Toggle - toggles the speed of the next loop

You can press any number of functions during the switch quantization period. In the Loop Meter You will see them "stack" under the switch quantization point. This is referred to as "function stacking". Some stacked functions are simply queued for execution after the loop switch, similar to normal quantization. Other functions have special behavior when they are stacked, Overdub for example does not simply turn on overdub mode in the next loop, it performs a sound copy from one loop to the next.

5.4.6 Empty Loop Action


The Empty Loop Action parameter is used when switching to a loop that is "empty" or in Reset mode. If Empty Loop Action is Off nothing happens and the track usually enters Reset mode waiting for you to record something in the empty loop. If Empty Loop Action is set to Record, the Record function begins immediately. If Empty Loop Action is set to Copy Timing, a new silent loop is created that has the same length and number of cycles as the original loop. This is a very useful option for creating several loops that are exact multiples of each other. This is important if you want to maintain a steady rhythm as you switch between loops. Once the silent loop has been created you can then use Overdub or Multiply to add audio content. If Empty Loop Action is set to Copy, the current loop is copied entirely to the next loop. Again this is useful to create loops that will play in rhythm. Copying the sound in addition to the timing can be useful if the original loop has a simple backing rhythm that you want to carry over and then overdub something on top of.

5.4.7 Switch Location

The Switch Location parameter determines where the playback position will be after you switch to another loop. The values are:

Follow - keep the same location you had in the previous loop Restore - restore the location the new loop had the last time it was playing Start - start the new loop from the beginning Random - move to a randomly chosen subcycle

When using Follow, if the new loop is smaller than the current loop the playback position may need to be "wrapped" so that it fits within the new loop. For example if the current loop is 6 seconds long and you are currently at the start of second 5, then you switch to a loop that is 3 seconds long, the new loop location will be at the start of second 2. When using Restore, if the new loop has never been played the location will be at the start. If you are using one of the methods to perform a sound copy or a timing copy (see Empty Loop Action) then the location will not be restored.

5.4.8 Switch Duration


The Switch Duration parameter determines how long you will stay in the new loop after a switch. The values are:

Permanent - you stay in the new loop until you manually change it Once - the new loop plays till the end then automatically enters Mute mode Once Return - the new loop plays till the end then returns to the previous loop Sustain - the new loop plays as long as the function button is held down, then it automatically enters Mute mode Sustain Return - the new loop plays as long as the function button is held down, then it returns to the previous loop

Once when combined with a Switch Location of Start makes the loop triggering functions behave similar to a sampler. The loop starts from the beginning, plays once, then stops (enters mute mode). The Sustain option requires that the function be bound to a Sustainable Trigger. If it is not, then this option behaves the same as Once. The Sustain Return option also requires a sustainable trigger. If it is not, then this option behaves the same as Permanent. Recall from the Next Loop section that there are two functions that always have sustained switching behavior, Sustain Next Loop and Sustain Previous Loop. These two functions do not use the Switch Duration parameter. They will always return you to the original loop when the sustain ends (subject to the Switch Quantize parameter).

5.4.9 Enable Secondary Feedback


The Enable Secondary Feedback parameter is a boolean that is either on or off. When on, the Secondary Feedback control is enabled while in a certain recording modes. These include Overdub, Multiply, Stutter, and Substitute.

See the Using Feedback section for more about how feedback can be applied.

5.4.10 Record Threshold


The Record Threshold parameter determines how loud an audio signal must be before a new loop can be recorded. It is relevant only for the Record function. With a default value of 0, recording begins immediately after you press the Record button. When set to a value from 1 to 8, recording will be delayed until the input signal reaches a certain level. This parameter is useful if you would rather start recording automatically as soon as you begin playing an instrument rather than having to coordinate your playing with a press of the Record button. It should be noted though that it can take some experimentation to get the threshold level set correctly for your playing style. Many people find it easier to create loops with the correct timing by manually pressing the Record function. But if you play an instrument with a sharp attack and there is little background noise, threshold recording may work for you.

5.5 Using Feedback


Feedback controls how the loop decays over time. With feedback set at 127 the loop does not decay, it will play that way forever or until you change it with looping functions. With feedback reduced the loop will gradually become softer every time it plays until it eventually decays to silence. A common looping technique is to use Overdub with feedback reduced. You can keep adding new layers to the loop but old layers will decay. In this way you can create evolving loops that change gradually over time. This style of feedback is popular for "ambient" looping. At the extreme setting of zero, loops will play once then the loop will be empty. Low feedback settings can be used to achieve effects similar to using a digital delay, loops will play a few times then be silent. Feedback can be kept at a fixed level or it may be dynamically controlled with a MIDI expression pedal. By dynamically sweeping feedback up and down you can sculpt the previous layers so they fade in and out under your control. You may wish to have different feedback levels when the loop is playing and when it is being modified through functions such as Overdub. For example, you may want old layers to decay when the loop is playing, but while you are overdubbing you want the old layers to not decay. Alternately you may want the old layers to not decay when a loop is playing, but have them decay while you are overdubbing. This can be achieved through the use of Secondary Feedback. To enable secondary feedback you must check the Enable Secondary Feedback parameter in a preset. When enabled, the Secondary Feedback control will be used to set the feedback when in certain editing modes. By default the modes obeying secondary feedback are Overdub, Multiply, Stutter, and Substitute. You can control which modes will obey secondary feedback by setting a global parameter. From the Configuration menu select Global Parameters, select the Modes tab and locate the selector labeled Modes Ignoring Secondary Feedback. By default the listed modes will use secondary feedback. You can disable secondary feedback for certain modes by moving them to the panel on the right.

5.6 Using Tracks


Each Mobius track is an independent stereo looper. They can all record and play audio and are mixed together with output level and pan controls. Tracks play simultaneously but you can use functions like Mute or Pause to silence them. Many synchronization options are available to record tracks that stay in perfect sync with other tracks. NOTE: If you have several loud tracks playing at the same time, it is easy to cause digital clipping when the track outputs are summed and sent to the audio interface. This sounds very nasty. Mobius is not smart about compression. If you experience this, turn down the output level in one or more tracks. Tracks are visually represented with a row of track strips at the bottom of the main window. There is always one selected track that is indicated by a white border around its track strip. You can change the selected track by clicking within its track strip, by using the left or right arrow keys, or by using one of the track selection functions. The selected track has input focus which means that it will respond to buttons in the Button Area, MIDI commands, or keyboard keys. To make a track do things you will usually configure them to respond to MIDI events through a process called binding. See the Controlling Mobius section for more information on how to create bindings. There are many ways to use tracks, a few of the more common techniques are:

Record different instruments or sounds in each track, for example rhythm, bass, chords, and solo. Use muting or the output level to bring parts in and out of the mix. Record the same instrument in several tracks. The effect is similar to overdubbing but you have control over the levels of each layer. Using advanced MIDI binding, give different musicians control over different tracks. Use tracks to simultaneously record the same loop, but with different effects such as speed shift and reverse applied to each track. After recording, the loop will play back differently in each track. Load tracks with pre-recorded loops and use them like a sample player, triggering the track to play once then stop while you loop in other tracks. "Bounce" a mix of several tracks down to one track and reclaim the source tracks for new uses.

In this section we'll describe the most common use for tracks: recording and mixing a set of background rhythm tracks for soloing. The Mobius Techniques manual will discuss some of the more advanced uses of tracks. Note that the steps described here assume that you have not made changes to the track setups. Setups are an advanced topic that are not described in this manual so this isn't a problem if you're installing Mobius for the first time. But if you're an experienced just make sure that all tracks are set to use the same preset, they all receive on the same port, Default Sync Source is set to Track and Default Track Sync Unit is set to Loop.

Start by making sure you can record a loop into the first track then reset it. Verify that you can click the mouse in the track strip to select tracks, or select them using the left and right arrow keys. Select track 1 and record a simple rhythm part for a few seconds. The first track you record becomes the track sync master track for all other tracks. Listen the first track and watch the loop radar. When the master is at the very beginning of the loop the loop radar will be blank and the loop is said to be at its start point. Now select track 2 and get ready to play a bass line. Wait until the master track is near the middle of its loop and press Record. It doesn't matter exactly when you press Record as long as you press it before the master track start point. Track 2 will now enter Synchronize mode. It is ready to record but the recording will be delayed until the master track reaches the next track synchronization point. Since the default track sync unit is Loop, the synchronization point is the start point of the loop. As soon as the master track reaches the start point, track 2 will change to Record mode and you can begin playing the bass line. Sometime during the recording of track 2, press Record again. You will see the event marker Record Stop appear at the end of the Loop Meter in the center of the window. This is a pending event marker which means that the recording is waiting for something before it can stop. In this case it is waiting for the master track to reach its start point. Continue playing the bass line. As soon the master track reaches its start point Record mode will end and Play mode will begin. Track 2 will begin playing the bass line loop in sync with the rhythm loop in track 1. If you're not satisfied with the result use Reset and start again. Continue this process to record other tracks. Experiment with the output level and pan controls. When you are ready to start over use the Full Reset function to reset all tracks at the same time. Note that if you are doing a track sync recording and you let the master track play beyond its start point before you press Record a second time, the recording will be delayed until the master track reaches its start point again and the new loop will be twice as long as the master loop. This often desirable if the master track is short and you want to record another track that is an exact multiple, such as 4 times as long.

5.7 Using Scripts


Scripting is a very powerful feature that lets you customize the way Mobius behaves. We will not describe how to write scripts in this manual, but we will show you how to use the scripts you might find posted in the forum or in the old Yahoo group files. For a complete discussion of writing scripts see the Mobius Scripting manual. Scripts are simply text files that can be written or viewed in any text editor. It is critical though that they be stored on your file system as plain text files, not converted into word processor files. There are also several "encodings" that can be used with text files, it is important to select ones that Mobius can use. If you are using Notepad on Windows, you must save the file using the ANSI encoding, you must not use Unicode. If you are using Wordpad, in the Save as type: menu you must select either Text Document or Text Document - MS-DOS Format.

If you are using TextEdit on a Mac, you need to save the file in a plain text encoding, either Western (Mac OS Roman) or Western (Windows Latin 1). When you use the Save As menu item, if you see a File Format: menu with items like Rich Text Format or Web Page (.html) then you are editing the file using rich text rather than plain text. Open the TextEdit Preferences window and under the New Document tab select the Plain Text radio button under the Format section. Once you do this create a new document and the Save As window should show a Plain Text Encoding: menu, select Western (Mac OS Roman). There are many text editors available that present encoding options in different ways or using different words. The presentation may also be different on different versions of the operating system. The main thing to keep in mind is that you must always pick the simplest text format available, usually this is referred to as "plain text" with encodings such as "ansi", "latin 1", "roman", or "MS-DOS". Stay away from anything that says "rich" or "unicode" or that looks like a word processor format. Though it isn't always required, it is recommended that you name script files using the extension ".mos". Once you have created the script file, you need to tell Mobius about it through a process called script registration. There are two ways to register scripts: by file and by directory. When you register a script file, that file is loaded into Mobius when it starts. If you register a script directory, all scripts in that directory are loaded. Registering script directories is convenient if you have a lot of scripts and you don't want to register all of them one at a time. You do need to be careful though to only put things in this directory you really need. To register a script open the Configuration menu and select Scripts, the Script Registration window will open.

On Windows you will see Add Script and Add Directory buttons that will bring up standard selection dialogs for files or directories. On Mac you will see a similar window but it will only have a single Add button because the standard Mac file selector lets you select both files and directories. To register a new script or script directory, click one of the add buttons, navigate to the file or directory you want to register and click Open on Windows or Choose on Mac. The name of the file or directory should now appear in the list in the center of the script registration window. If you want to remove an item from the list, click on it so that it becomes highlighted then click the Delete button. Finally click the Ok button at the bottom of the widow to save the changes. The new set of scripts will be loaded into Mobius and are available for binding. See the Controlling Mobius for a full description of how to associate triggers like MIDI foot switches to scripts. Once you have registered some scripts or script directories you will start seeing their names in the Scripts tab of the binding windows. Note that scripts will usually appear in the binding windows with a name other than the raw file name. Most scripts include a line starting with !name at the top that specifies a user friendly name you want to see in the binding windows. For example:

!name Global Fade Out


A typical script file may have a name like "fadeoutall.mos" but the name you see in the binding windows might be "Global Fade Out" or something else more meaningful than the file name. You will need to look in each script to see if it contains a !name line and remember to look for that name in the binding windows. If the script doesn't have a !name line you will just see the name of the script file without the ".mos" extension.

6 Next Steps
This manual has given you an overview of Mobius user interface and some of the more common ways to use Mobius. Experiment with what you have learned then proceed to the Exploring Mobius manual for information about more advanced features.

7 Troubleshooting
In this section we will discuss a few commonly encountered problems and suggest ways to solve them.

7.1 Mobius is just frozen, it doesn't do anything!


If you click on buttons and Mobius doesn't respond it is usually because you have not selected any audio devices. Mobius does most of its work within the "audio stream" that is constantly being received from the audio device. If you have not selected a device there will be no stream so Mobius can't do anything.

7.2 Record Stops Suddenly


If you press a button that has been bound to the Record function and the record runs for about 1/2 a second then stops and resets the loop, you are not using a properly programmed Sustainable Trigger. The Record function has Long Press behavior, if you press and hold the button bound to the Record function longer than 1/2 second, it will execute the Reset function. To prevent this from happening you must use a trigger that sends a message both when the button is pressed and when it is released. Usually this means that your footswitch must be programmed to send MIDI notes or MIDI continuous controller messages on both the up and down transitions. If your MIDI footswitch sends a MIDI Note On message when it is pressed but does not send a MIDI Note Off message when it is released, Mobius will think the button is being held down and will reset the loop.

7.3 I edited an XML file, now everything is screwed up!


The most common reason for problems after editing the mobius.xml or ui.xml files is that you used a text editor that did not save the file as plain text.

Text editors can sometimes store files in different formats such a text, rich text, HTML, and as word processor files. You must always save Mobius files as plain text. There are also several "encodings" that can be used with text files, it is important to select ones that Mobius can use. If you are using Notepad on Windows, you must save the file using the ANSI encoding, you must not use Unicode. If you are using Wordpad, in the Save as type: menu you must select either Text Document or Text Document - MS-DOS Format. If you are using TextEdit on a Mac, you need to save the file in a plain text encoding, either Western (Mac OS Roman) or Western (Windows Latin 1). When you use the Save As menu item, if you see a File Format: menu with items like Rich Text Format or Web Page (.html) then you are editing the file using rich text rather than plain text. Open the TextEdit Preferences window and under the New Document tab select the Plain Text radio button under the Format section. Once you do this create a new document and the Save As window should show a Plain Text Encoding: menu, select Western (Mac OS Roman). There are many text editors available that present encoding options in different ways or using different words. The presentation may also be different on different versions of the operating system. The main thing to keep in mind is that you must always pick the simplest text format available, usually this is referred to as "plain text" with encodings such as "ansi", "latin 1", "roman", or "MS-DOS". Stay away from anything that says "rich" or "unicode" or that looks like a word processor format.

7.4 I registered my script files but they won't run


If you have registered script files and you see the names in the binding windows, but when you try to trigger them nothing happens, the script file either contains errors or it was saved in an format that Mobius does not recognize. See this section for information on how to properly edit script files. If you're sure that the files are in the right format there may be bugs in the script. See Debugging Scripts in the Mobius Scripting manual for more information.

Exploring Mobius
March 2012

Contents
1 2 2.1 2.2 2.3 2.4 2.5 2.6 3 3.1 3.2 4 4.1 4.2 4.3 4.4 5 6 6.1 6.2 6.3 6.3.1 6.3.2 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.5 6.5.1 6.5.2 6.5.3 6.6 Introduction Track Setups Track Parameters Command Buttons Synchronization Parameters Other Parameters Managing Multiple Setups Selecting Setups with Menus Projects Save Project Open Project Saving and Loading Loops Loop File Formats Open Loop Save Loop Quick Save Samples Advanced Control Binding Review Binding Scopes Focus Lock Setting Focus Lock Limiting Focus Lock Track Groups Displaying Track Groups Setting Track Groups Limiting Track Groups Group Output Level Track Groups and Focus Lock Binding Arguments Control Binding Arguments Parameter Binding Arguments Function Binding Arguments Plugin Parameter Bindings

6.7 OSC Bindings 7 MIDI Status Export 8 Customizing the User Interface 8.1 Item Selectors 8.2 Customizing Buttons 8.3 Customizing the Status Area 8.3.1 Components 8.3.2 Visible Parameters 8.4 Customizing the Track Strips 8.4.1 Focus Lock 8.4.2 Track Number 8.4.3 Group Name 8.4.4 Track Controls 8.4.5 Loop Meter 8.4.6 Loop Radar 8.4.7 Output Level Meter 8.4.8 Loop Status 8.5 Changing Colors 8.6 Changing Fonts 9 Esoterica 9.1 Trace 9.1.1 Trace Levels 9.1.2 Mac Trace Logging 9.1.3 Windows Trace Logging 9.1.4 Using Trace 9.2 XML Files 9.2.1 mobius.xml 9.2.2 ui.xml 9.2.3 Project .mob Files 9.3 Layer Flattening

1 Introduction
This manual contains information about Mobius features that were not covered in the Getting Started With Mobius manual. Among the topics will be customizing the user interface, advanced control options, projects, and track setups. It is required that you have at least skimmed Getting Started With Mobius . The sections in this manual do not have to be read in any particular order, you can skim it and read only the sections that interest you. The Track Setups section is however highly recommended. If you are interested in synchronizing Mobius with other hardware devices or applications, see the Mobius Synchronization manual.

For more detailed information on how to use some common Mobius functions see the Mobius Techniques manual.

2 Track Setups
A Track Setup is a named collection of parameters, presets, and controls for all tracks. It defines the initial state of all tracks before recording, and also defines the state each track will return to when it is reset. A setup stores the following things for each track:

Name Sync Source Track Sync Unit Preset Group Focus Lock Input Level Output Level Feedback Secondary Feedback Pan Mono Mode Audio Input Port Audio Output Port Plugin Input Port Plugin Output Port User Defined Variables

In addition a setup contains the following parameters that apply to all tracks:

Active Track Resettable Parameters Overlay Binding Configuration

Finally, a setup contains synchronization parameters that apply to all tracks:


Default Sync Source Default Track Sync Unit MIDI/Host Sync Unit Beats Per Bar Realign Time Out Sync Realign Action Out Sync Mute Action Out Sync Resize Adjust Out Sync Speed Adjust Out Sync Min Tempo

Out Sync Max Tempo Out Sync Manual Start

There is no requirement to define your own setups, Mobius comes with one default setup that you may be able to use without any changes. Setups are however very useful if you always want to change certain characteristics of a track before recording. For example, if you usually record with loud instruments you may want to reduce the input level from the default of 127 to avoid overloading the track. Rather than remembering to do this every time you start Mobius, you can set it in the setup and it will be automatically set to the desired level every time. Another common use for track setups is to specify which physical inputs and outputs of a multi-channel audio interface to use for each track. By default Mobius always uses the first two channels as a stereo pair called a "port". But if your audio interface supports more than 2 input and output channels you may not want to use the first pair. For example with some audio interfaces the first pair of output channels may go to the headphone jack while the second pair of channels is connected to the monitor speakers. Mobius can't know which port is the correct one to use, you must select it in the track setup. Setups are also useful if you need different track configurations for different compositions. If you play different instruments you may want different setups designed for each instrument. Or you may want to design a setup for a particular performance style like solo ambient looping and another for rhythmic "DJ" looping. Finally, setups contain many parameters related to synchronization. If you wish to use synchronization other than Track Sync you will need to edit at least one setup. To create and manage setups, open the Configuration menu and select the Track Setups item.

At the top of the setup window there is a collection of fields called the Setup Selector. These are use to select the setup you wish to edit, create new setups, and delete old setups. Under the selector is a row of tabs to select different setup parameters. The first tab named Tracks has parameters that can be set differently for each track. The Synchronization tab contains parameters related to synchronizing tracks. The Other tab has a few additional parameters that apply to all tracks. The Command Buttons at the bottom initialize the track parameters to their default values or to capture the track parameters from the current Mobius track. Remember that after making changes in this window you must click the Ok button to save the changes.

2.1 Track Parameters


The track parameters tab shows the initial state of each track. The values you enter here can be changed once you begin recording and working with tracks, but they will be restored to the values defined in the setup when you use the Global Reset function.

There are 8 sets of identical track parameters accessed with a radio button. To select the parameters for a track click on the small circle to the left of the track number.

The Name field allows you to give each track an optional short name. When this is set the name will be displayed in the track strip instead of the track number. This can be used to help identify the purpose of the track, for example "drone", "rhythm", or "solo". The Sync Source field defines the synchronization mode for this track. Each track may have a different synchronization mode, or they may all share the same mode. See the Synchronization Parameters of the Mobius Synchronization manual for more information about how to use this parameter. The Track Sync Unit field defines the location in the loop where track sync will be performed. Each track may a different track sync unit, or they may all share the same unit. See the Synchronization Parameters of the Mobius Synchronization manual for more information about how to use this parameter. The Preset field lets you set the starting preset for the track. You may for example want a preset that has quantization turned off for drone tracks, but turns quantization on for rhythm tracks. The Group field allows you to set the initial track group for the track. The default is (none) which means the track is not a member of a group. Groups are identified by a letter, the number of available groups is set by the Max Track Groups parameter in the Global Parameters configuration window. The Focus Lock checkbox determines if the track will start out having Focus Lock. This is an unusual thing to enable, but it may be useful if you want to begin by recording several tracks at the same time. In the center of the track parameters tab, there is a group of sliders to set the initial values of all the track controls. These sliders correspond to the round knobs you see in the user interface.

The Mono Mode checkbox changes the track from stereo to mono. The track will still receive from a stereo input port and will send to a stereo output port. The difference is that the two input left and right input channels will be summed and recorded into both the left and right track channels. This may be useful if you are using an instrument that does produce a stereo signal. Connect the instrument to either the left or right input channel of the audio device. The instrument will be recorded into both the left and right channels of the track and then sent to both the left and right output channels of the audio device. The Pan control can be used to balance the levels of the left and right output channels. At the bottom of the track parameters are a set of selectors for input and output ports. Each track must have both an input and an output port, the default for all is port number 1.

The Audio Input Port and Audio Output Port fields select the ports of the audio interface hardware to be used 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. Jacks 1 and 2 will be port 1, jacks 3 and 4 will be port 2 and so on. You will need to experiment with the port settings to determine which ports match the jacks on your audio interface. The Plugin Input Port and Plugin Output Port fields select ports to be used when Mobius is running as a VST or Audio Units plugin. Each port corresponds to a stereo pair of "pins" on the plugin. By default the Mobius plugin has 16 input and output pins, or 8 input and output ports. Most plugin hosts will default to using the first input and output port. If the host supports plugins with more than one input and output port you will need to understand how to route signals into and out of the plugin pins in the host. Some hosts will display pins visually and allow you to draw lines to connect them. Other hosts may display pins as numbers in a menu.

2.2 Command Buttons


Below the track parameters is a row of command buttons.

The Initialize button will set all of the parameters in the currently selected track tab to their initial values. Controls all go to 127, pan goes to 64, the ports go to 1, the name, preset, group, and focus lock fields are cleared. The Initialize All button will set all parameters in all tracks to their initial values. The Capture button will copy the current values of all parameters from a Mobius track into the setup. The selected track tab in the setup defines which track is being captured. For example if track tab 2 is selected, the parameters from Mobius track 2 are copied to setup tab 2. Capture is useful if you want to experiment with track settings in real time until you find the ones you like, then you can capture them all at once into the setup. The Capture All button will copy the current track parameters for all Mobius tracks into the setup. Obviously you need to be careful using the Initialize All and Capture All buttons, you need to be sure you want to replace everything in the setup. If you click one of these by accident, click the Cancel button to close the setup without saving the changes.

2.3 Synchronization Parameters


The Synchronization tab contains many parameters related to track synchronization.

Synchronization is a complex topic that is described fully in the Mobius Synchronization manual. See the Synchronization Parameters for more information about how to use these parameters.

2.4 Other Parameters


The Other tab contains a few miscellaneous parameters that apply to all tracks.

The Active Track field selects the track you want to be active when the setup is selected or after a global reset. Usually this is 1. The Restore After Reset field is a multi-selection panel containing the names of some of the track parameters that are stored in the setup. Click on the names to highlight or unhighlight them. When one of these parameters is highlighted, its value will be restored to the value from the setup after the Reset or Track Reset functions are used. All parameters in the setup are always restored whenever you use the Global Reset function to reset all tracks. But by default if you do a simple Reset to reset just one loop in a track, the parameters are not restored. This is because you may want to change input level, output level, or preset parameters while you are recording a loop. Then if you make a mistake and want to rerecord the loop you can use Reset to start over and none of your parameter changes will be lost. Some users however might always want the parameters from the setup restored whenever a Reset is performed. To accomplish that select some or all of the items in the Restore After Reset panel. The Binding Overlay parameter determines which overlay binding set will be selected when this setup is selected. The default value is [Retain] which means to continue using whatever binding set is currently in effect. See the Multiple MIDI Binding Sets chapter of the Getting Started manual for more information on creating overlay binding sets. The Binding Overlay selection menu will always contain the items [Retain] and [Cancel] and in addition the names of any defined MIDI binding sets other than the Common Bindings.

When [Cancel] is selected it means that the current overlay bindings will be canceled when this setup is selected. In the previous example the binding set Touch OSC Overlay was selected which means this binding set will be activated whenever this setup is selected. The ability to control the overlay bindings is useful if you design a track setup with a particular piece of control hardware in mind.

2.5 Managing Multiple Setups


If you tend to loop with the same instruments in the same style you may only need one default setup. But people frequently want more than one setup for different compositions or different performance environments. You may need several setups with the levels tweaked for different instruments. Or you may want different setups for home practice and live performance. You can create as many setups as you need and switch between them at any time.

At the top of the setup window is a set of fields and buttons that let you create, delete, select, and rename setups.

Mobius installs with one setup named "Default". To create a new setup click the New button. A new setup is created and selected. The new setup will have a copy of all the parameters from the setup that was selected when you clicked New. So if you want to create a setup that is similar to an existing setup, be sure to select the setup you want to copy before you click New. When a new setup is created it will be given a generated unique name starting with "Setup" followed by a number. To change this name, click on the Name text field and type in the desired name, then click on the button labeled Rename. Simply typing in a name isn't enough you must also click the Rename button.

Renaming a new setup Once you have created several setups you can switch between them by using the Selected Setup menu at the top. Click on the down arrow to open a menu containing all the setup names. The setup that is selected in this menu will become the active setup when you click Ok to close this window. If you are making changes to several setups, be sure to remember to select the one you want to be active before closing the window.

Selecting a setup To delete a setup, simply select it and click the Delete button. The setup is deleted and removed from the selection menu. Be careful with the delete button, there is no "are you sure" prompt. If you delete a setup by accident, click Cancel at the bottom of the window to throw away the changes and open the window again. After making changes that you are happy with, you must click the Ok button. If you click Cancel or the window close button all changes you have made will be lost. 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.

2.6 Selecting Setups with Menus


Another way to select setups is by using the Track Setups menu in the menu bar.

Selecting a setup This menu will contain the names of all defined setups with a check next to the one that is active. To change setups simply select another one from the menu. If you just need to change setups without editing any parameter values using this menu is easier than opening the setup dialog.

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.

3.1 Save Project


To save a project, open the File menu and select the Save Project item. A standard file save dialog appears requesting you to select a Mobius project file. Navigate to the directory you want to use and enter a file name. Note that it may take several seconds to save the project. During that time do not use any Mobius functions, or change track controls or else these may be accidentally saved in the project. A project actually consists of several files, a single project file with the .mob extension that you specify in the save file dialog window, 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. For 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's .mob file contains the information necessary to reconstruct the Mobius state from all of the audio files. See the XML Files section for more information on the contents of this file. In addition to the files containing the audio content, the project's .mob file will contain the current state of all tracks including the track setup, the current presets being used, the current controller values (input, output, feedback, pan), the selected track number, and the loop number that is selected in each track. By default only the most recent layer in each loop is saved. If the global parameter Save Project Layers is set, then a loop's entire layer history is also saved in the project. More than one .wav file will be saved for each loop. For example:

myproject-1-1-3.wav myproject-1-1-2.wav myproject-1-1-1.wav


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, then undo back to something simpler. To enable saving the layer history, open the Configuration menu and select the Global Parameters item. Locate the parameter named Save Project Layers and check the box.

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's .mob file. If you have manually edited the .mob file and added files a sample library, the sample library files will not be deleted as long as they are in a different directory than the .mob file.

3.2 Open Project


To load a project, open the File menu and select the Open Project item. A standard open file dialog appears requesting you to select an existing Mobius project file. Navigate to the directory containing the .mob file, select it and click Open or Ok. When you load a project, a Global Reset is performed, meaning that all of the current tracks and loops will be lost. After loading the audio content from the project all tracks will be placed in Pause mode, tracks will not begin playing automatically. You must now use the Pause or Play functions in each track to start them.

4 Saving and Loading Loops


Mobius provides several options for saving and loading audio content to and from files. In this section we will discuss ways to save and load individual loops. You can also save and load projects which contain the audio content from all layers in all loops in all tracks. See the Projects section for more information on projects. Load loading and saving is accomplished from the File menu:

4.1 Loop File Formats


Mobius can only save and load audio content as wav files. The files may use either 16-bit integer samples or 32-bit floating point samples. Floating point is preferred because it has the best sound quality. When Mobius writes audio files it will by default use 32-bit floating point samples. If you have and audio application that cannot read floating point audio files, you can change the way audio files are saved with a global parameter. Open the Configuration menu and select Global Parameters. In the popup window locate the 16 Bit Wave Files parameter.

16 Bit Wave File Option Check the box next to the parameter name and click Ok to close the window. Now all Mobius audio files will be saved using 16-bit integer samples. Note that this parameter does not effect how files are read. Mobius will continue to read both integer and floating point wave files. NOTE: Mobius usually runs with a sample rate of 44100 or 48000. If you load files created outside of Mobius the files may use other sample rates but these will not be automatically converted to the Mobius sample rate. It is recommended that you only load files whose sample rate matches the Mobius rate. The example files that come with the Mobius installation were all created with a rate of 44100.

4.2 Open Loop


The Open Loop menu item is used to load a loop from a file into Mobius. Before loading a loop file you must first select the track and the loop in the Mobius main window that you want to replace with the contents of a file. Click on the track in the track strip, then use Next Loop or Previous Loop or the up and down arrow keys to select a loop. If you have the Empty Loop Action parameter set to Record in the preset, recording may begin automatically but it will be canceled during the load. Once the track and loop are selected, open 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 wave files having the .wav extension. The file may be encoded using 16-bit integer or 32-bit floating point samples The destination loop will be reset before the loop is loaded. After the loop is loaded, the track will be in Pause mode. The loop will begin playing from the beginning as soon as you use the Mute, Pause, or Play functions to cancel pause mode. In the default keyboard bindings the spacebar can be used to unpause the loop. If you don't have any wave files handy, Mobius includes a few that you can experiment with. From the Open Loop dialog, navigate to the loops subdirectory of the Mobius installation directory. On windows this will normally be c:\Program Files\Mobius\loops, on Mac this will normally be /Applications/Mobius/loops. Select the file gcgroove.wav. Hit the spacebar and let the funk begin.

4.3 Save Loop


To save an individual loop, select the track and the loop you want to save, open down the File menu, and select the Save Loop item. A standard file save dialog will appear, navigate to the directory where you want to save the loop, and select or enter a file name.

4.4 Quick Save


The quick save feature allows you to save the current loop to a file without having to interact with a file save window. This is convenient if you create a loop you would like to remember, but don't want to put down your instrument and interact with the computer. A quick save may be performed by opening down the File menu and selecting the Quick Save 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 Save Loop function to a button on a MIDI foot controller, then whenever you create something interesting just pounce on the button and the loop will be saved. On Windows, the loop files are stored in the Mobius installation directory which is normally c:\Program Files\Mobius. On the Mac the loop files are stored in /Library/Application Support/Mobius. The files will have the name mobiusloop plus a number to make the name 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 mobiusloop file in the directory. If you perform a quick save into a directory that already contains quick save files, Mobius will scan 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 file made during an earlier Mobius session. You may change the directory and base file name for quick save files by setting a global parameter. Open the Configuration menu and select the Global Parameters item. Locate the parameter named Quick Save File.

If you want to change the base file name but keep the default directory, just enter a new name in this field.

If you want to change the directory in which the files are stored you will need to enter the absolute path name of the directory and the base file name. On Windows this must begin with a drive letter, on Mac it must begin with a / character.

If you are not familiar with absolute path names it is recommended that you let the files be saved in the default directory. NOTE: Do not include the .wav extension to the file name, this will be added automatically.

5 Samples
The samples feature was designed primarily for testing Mobius, though anyone can use it. Samples are short audio recordings that can be loaded into Mobius and triggered with buttons, keys, or MIDI events. 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, another overlapping playback of the sample will start. Samples are not part of a loop or track, it is like having a very primitive built-in sample player. So far this is pretty boring, but what makes samples interesting for testing is that while the sample is playing, the output is routed into the audio input of the tracks. So if the tracks are recording, they will record the samples you are playing, as well as whatever is coming in from the audio interface. This is convenient for testing because audio can be injected into the tracks just by pressing keys on the keyboard, without having to stop and play an instrument. A sample is just an audio .wav file. To configure samples, open the Configuration menu and select the Samples item.

At the top of the samples window are buttons to add, delete, and reorder samples. The large panel in the center has the file names of the samples that are currently registered. To add a new sample, click the Add button. A standard open file dialog is displayed where you can select the .wav file to load. Added samples are placed at the end of the list. To delete a sample, click on the file name in the list so that it is highlighted then click the Delete button. To change the order of samples, click on a file so that it is highlighted then click the Move Up or Move Down buttons. The order the sample files appear in the list is important because this determines which Mobius functions will trigger the samples. There are eight Mobius functions that will trigger samples. They all begin with the word "Sample" and are then followed by a number from 1 to 8, for example Sample1and ample2. The Sample1 function triggers the first sample in the list, the Sample2 function triggers the second sample in the list and so on. Because there are only eight sample trigger functions you should only register 8 sample files. You can add more but they will not be accessible. To get a feel for how this works, Mobius comes with a small set of sample files you can try. On windows these are in the samples sub directory of the Mobius installation directory which is usually c:\Program Files\Mobius\samples. On the Mac these will be in /Applications/Mobius/samples. Samples can be of any length though they are more useful if they are short. Because samples will "stack" if you trigger them several times rapidly you have to be careful about overloading the output bus and causing digital clipping. There is no way to adjust the level of the sample.

6 Advanced Control
The Controlling Mobius section of Getting Started With Mobius described the process for creating bindings that let you control Mobius using devices such as a MIDI footswitch. In this section we will describe some advanced options that give you more precise control over individual tracks.

6.1 Binding Review


First a quick review of the concepts involved bindings. A trigger is an external stimulus that Mobius can receive and take action on. The most common example is a message sent from a MIDI footswitch. A target is something in Mobius that can respond to a trigger, examples include looping functions, track controls, and scripts. A binding is an association between a trigger and a target, for example binding MIDI Note 36 to the Record function means that the Record function will be executed whenever MIDI Note 36 is received. Bindings are created using several popup dialog windows for each type of trigger. These binding windows are accessed from the Configuration menu items MIDI Control, Keyboard Control and Plugin Parameters. In addition you can create bindings for OSC messages but this is still an experimental feature that does not yet have a user interface. One property of a binding that was not discussed in the Getting Started guide was the scope. Most users will use the default Global scope for their bindings which will target the currently selected track. But it is also possible to use scopes so that tracks are targeted even if they are not selected.

6.2 Binding Scopes


A binding may be given a scope to more precisely specify which targets are to be controlled by the trigger. There are many targets in Mobius because each track has its own independent set of targets. For example there isn't just one Output Level control target, there are eight, one for each track. Functions may also have a binding scope. A trigger may for example do a Record in whatever the currently selected track is, or it may Record in track 4 all the time. A binding scope menu is found in all of the popup windows that create bindings.

Scope Selector When the scope is Global the binding is performed in currently selected track and all tracks that have focus lock. This is the most common binding scope. The scopes Track 1 through Track 8 force the binding to be performed in a specific track no matter which is currently selected. This scope is particularly useful if you have a MIDI control surface with sliders and knobs that resemble a mixing console. A typical configuration is to bind a row of sliders to the output level controls in each track, and a row of knobs to the pan controls. Then you can mix and pan the tracks any time without worrying about which one is selected.

The scopes Group A through Group D force the binding to be performed on all tracks that are in one of the track groups. For this binding scope to be useful you must also assign tracks to groups, see the Track Groups section for more on how to use track groups.

6.3 Focus Lock


When you create a binding using the default Global binding scope, triggers are sent to the currently selected track. This is the most common way to create bindings, rather than having 8 bindings for the Record function for each track, you just have one binding for the current track. Then you select the track you want to record by clicking on it in the Mobius window. This is similar to what computer operating systems call "input focus". Occasionally though you might want to control more than one track at the same time without stopping to set up new bindings. For example you might want to mute or fade all tracks at the same time, send several tracks into reverse at the same time, or to begin a new loop recording simultaneously in several tracks. There are several ways to do this including scripts and Track Groups but the simplest way is to use focus lock. Focus lock is a boolean track parameter that can turned on and off. When focus lock is on for a track, that track will receive all triggers that are bound to something in the global binding scope. For example assume focus lock is enabled in tracks 2 and 3 and track 1 is selected. If you trigger the Reverse function, tracks 1, 2, and 3 will all toggle their playback direction. Track 1 because it is selected, and tracks 2 and 3 because they have focus lock enabled. Similarly if you had a MIDI continuous control pedal with a global binding to the Output Level control, then moving this pedal will cause the output level in tracks 1, 2, and 3 to change at the same time. Focus lock is rarely something that you leave on all the time, instead it is enabled temporarily only when you need control over multiple tracks. Because focus lock requires the performer to manually turn it on and off, it can be difficult to use during performance. Scripts are usually the preferred method for controlling multiple tracks, but focus lock is still available for simple things that don't require the complexity of a script.

6.3.1 Setting Focus Lock


If you are using the default user interface configuration, you can tell if a track has focus lock when the Track Number displays in a different color (usually red). In the next screenshot, you can see that track 2 is selected and track 1 has focus lock.

Focus lock with the track number You can turn focus lock on and off by clicking on the track number. There is another component you can add to the track strip to control focus lock called appropriately Focus Lock. It is displayed as a small round button that is filled red when a track has focus lock. In the next screenshot, you can see again that track 2 is selected and track 1 has focus lock.

Focus lock button You might choose to use the focus lock button if you want to save space in the track strip, though most people use the track number because it is easier to see and also helps you identify tracks. Like the track number, you can turn focus lock on and off by clicking inside the focus lock button. During live performance it can be awkward for the performer to stop playing, grab the mouse, and click on focus lock buttons. Most people that use focus lock therefore use MIDI or the computer keyboard to set focus lock. The function named Focus Lock can be bound to any trigger. When executed it will toggle focus lock in the target track. One approach is to bind the computer keys 1 through 8 to the Focus Lock function with the binding scope set to tracks 1 through 8. Then pressing the 1 key will toggle focus lock in track 1, pressing 2 will toggle focus lock in track 2, etc. Something similar could be done with a row of MIDI buttons on a footswitch or control surface.

6.3.2 Limiting Focus Lock


Most functions can use focus locks, but a few special functions like Next Track or Track Copy do not. Generally any function that operates on a loop inside a track can use focus lock, but functions that operate on the tracks themselves do not. You may not want focus lock applied to all functions. For example you may want NextLoop, Restart, 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. You can control exactly which functions will obey focus lock by setting a global parameter. From the Configuration menu select the Global Parameters item. When the window opens select the Functions tab.

Focus Lock Configuration Window This tab has two item selectors, the first one labeled Focus Lock Functions controls which functions will obey focus lock. By default most functions obey focus lock but the loop selection functions do not. If you do not want a particular function such as Record to obey focus lock, select it and remove it from the right panel. It does not matter what order the functions are in. When you have finished adding or removing functions remember to click "Ok" to close the window and save the changes.

6.4 Track Groups


A Track Group is used to organize several related tracks. By default there are four track groups defined in Mobius, and a track may be made a member of any one of those groups. Groups are identified by letters A,B,C,D but they may also be given user defined names in the Track Setup. Assigning a track to a group does not by itself do anything very interesting. If you have the Group Name component enabled in the track strip you can see the group

name which might help you remember how the tracks are supposed to be used. For example group A for percussion, group B for bass, and group C for solo. Track groups become more useful when they are used as a binding scope. Recall that when you create a binding for a trigger such as a MIDI note, you can select a binding scope. The default binding scope is global which mean the trigger is sent to the currently selected track. If the binding scope is set to a group name, the trigger will be sent to all tracks in that group whether or not they are selected. One example use for track group bindings is to bind a MIDI expression pedal to the output level control to the group whose tracks contain the percussion loops. Then with one expression pedal you can adjust the mix of all of the tracks at the same time. Using track groups in this way is similar to using Focus Lock but it is more flexible.

6.4.1 Displaying Track Groups


If you want to use track groups you will need to be able to see them in the user interface. In the default configuration, track group names are not visible. You will need to customize the track strip and add the item named Group Name.

Track Strip Item Selector You won't see much change initially because none of the tracks have been assigned to a group. The track strip will grow a little taller to make room for the group name but that space will be blank until the track is assigned to a group. Here is what the track strip will look like if you assign the first two tracks to group A and the second two to group B.

Visible track group name Note that each group name is displayed in a different color to help identify them. You can change the colors by editing the color palette.

6.4.2 Setting Track Groups


The primary way to assign tracks to a group is with a track setup. See the Track Setups section for complete information on how to define setups. In the setup parameters for each track is a group selector.

Group selector in the setup window In the previous example the first track has been added to the first group which by default is named "A". Whenever you change setups the displayed track groups will change to match what is defined in the setup. If you execute the Global Reset function, the current track groups will also be reset to match what is in the setup.

You may also change track groups in real-time by executing the Track Group function. Each time you execute the Track Group function the track is assigned to the next higher group. If the track is not currently assigned to a group it is assigned to group A. If the track is currently assigned to the highest group, the group membership is removed. The pattern is:

none, A, B, C, D, none, A, B, C, D, none...


If you have the Track Group function bound to a Sustainable Trigger and you do a long press of the trigger, the group assignment is removed. You can also set track groups using scripts, this is described in detail in the Mobius Scripting manual.

6.4.3 Limiting Track Groups


If you find that 4 track group is more than you need, you can reduce the number using a global parameter. From the Configuration menu select Global Parameters, when the window opens select the Limits tab.

Changing the number of track groups Locate the parameter named Track Groups and enter the desired number. In this example the number has been changed from 4 to 2. Changing the number of track groups is primarily of interest if you want to use the Track Group function to cycle over the groups. If you only need two groups then this changes the Track Group pattern to:

none, A, B, none, A, B, none...

6.4.4 Group Output Level


The Output Level control will behave in a special way if it is bound using a track group scope. 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 an output level of 127 (the maximum) and track 2 has an output level of 100. Decreasing the output level by 10 using a group binding will lower the level of the first track to 117 and the second track to 90.

This special behavior is available only for the Output Level control and is canceled if you use any other level control such as a UI knob or a trigger that does not use the group binding scope.

6.4.5 Track Groups and Focus Lock


Before release 1.43, track groups behaved like a more powerful version of Focus Lock. This is no longer the default behavior because it was confusing and made it harder to use bindings with group scope. If you would like to restore this old behavior open the Global Parameters window and check the checkbox labeled Groups have focus lock.

Activating group focus lock When this option is enabled any triggers that have bindings using global scope are sent to the currently selected track and all tracks that are in the same group as the selected track. For example assume that tracks 1, 2, and 3 are in the same group and track 3 is selected. The Reverse function has a global binding to a MIDI note. When this MIDI note is received, tracks 1 2 and 2 all change direction, 3 because it is selected and 1 and 2 because they are in the same group as 3. Like simple focus lock, track group focus lock is only available for function bindings that use the Global binding scope. If you create a binding scoped to a specific track or track group, group focus will have no effect on that binding. Also like simple focus lock, you may not want all functions to be sent to all tracks in the group. You can use the same global parameter described in Limiting Focus Lock to decide which functions should obey group focus lock. The reason this is no longer the default behavior is because we have found that the ability to assign things like the Output Level control to a group is useful for mixing. But once you did that, all tracks in the group would respond to functions like Record at the same time which is not usually what you want. You can edit the Focus Lock Functions global parameter to remove all the functions you don't want to obey focus lock, but it's easy to forget. Most people never want a combination of both group bindings and group focus lock. So rather than making the combination the default we made the default to disable group focus lock and only support group bindings. If this is confusing don't worry, it has always been hard to explain and few if any people have ever made good use of it. Just leave the Groups have focus lock checkbox off.

6.5 Binding Arguments


The Arguments text field in the bindings windows allows you to enter text that may control how the binding behaves. What you can enter here will depend on both the trigger and the target. Arguments may be used for all Control bindings and a few Parameter and Function bindings. You normally use binding arguments only for "one shot" triggers such as a MIDI note, MIDI program change, or computer keyboard key. Bindings arguments when the trigger is a MIDI continuous controller are ignored.

6.5.1 Control Binding Arguments


Controls are usually bound to a MIDI device that can send continuous controller messages, such as a foot pedal, slider, or rotating knob on a control surface. This is necessary because controls have a range of values and MIDI CC messages allow you to sweep over all of the possible values. If you bind a control to a trigger that doesn't support a range of values such as a MIDI note, the binding will have no effect. When we receive the note we don't know what value to give the control. This can be fixed by entering binding arguments. Binding arguments for controls start with an operator and follow with an operand which is a number. The available operators are:

min max center up down set

min will set the target to its minimum value, max sets the maximum value, and center sets the center value. These three operators don't have an operand. These operators are normally used only when the target is a control. up will increase the current value of the target by some amount, down will decrease the current value by some amount, and set will set the target to a fixed value. All of these require an number operand. These can be used when the target is a control or a parameter. Here are some examples:

min - set a control to zero max - set a control to 127 center - set a control to 64 up 10 - increase a control by 10 down 5 - decrease a control by 5 set 90 - set a control to 90

If you bind a pair of MIDI notes to a control and give one the arguments "up 1" and the other then arguments "down 1" you can sweep the control through the full range of values by repeatedly pressing the MIDI notes. If you try to set a control to a value more than 127, it will be constrained to 127. Similarly if you try to set a control to a negative value if will be constrained to zero.

6.5.2 Parameter Binding Arguments


Binding arguments can be used with any parameter whose type is an enumeration meaning it has a fixed set of possible values, or is an integer meaning that it is a

small number. Examples of parameters that you might want to use are Subcycles, Quantize Mode, and Switch Quantize. For integer parameters, the binding argument may be a number within the allowed range of the parameter. For example, binding a trigger to the Subcycles parameter with an argument of 8 will force the number of subcycles to 8 whenever this trigger is received. Before we had binding arguments, operations like this were frequently done with scripts. By using binding arguments you can avoid scripting in these simple cases. For enumeration parameters, the binding argument must be the name of the parameter value. This type of binding is a bit more complicated because you must use the internal script name of the parameter value. For example the Quantize Mode parameter has the following internal values: off, subcycle, cycle, loop. So to force the quantize mode to loop, create a binding and enter loop as the argument. You will need to consult the reference manual to understand the possible parameter values for each enumeration parameter.

6.5.3 Function Binding Arguments


A few functions also allow binding arguemnts. These include:

Speed Step Speed Toggle Sustain Speed Toggle Pitch Step

In most cases, the argument is a small positive or negative number, for the speed and pitch functions this number indiciates a change in semitones up or down. For example setting an argument of 7 for the Pitch Step function will cause the function to raise the pitch by a 5th. Consult the reference manual for each function for more information on how it supports binding arguments.

6.6 Plugin Parameter Bindings


If you are using the Mobius VST or AU plugin, another way to control it is through plugin parameters. The term "plugin parameter" must not be confused with Mobius calls a Parameter. Plugin parameters are used for communication between a VST or Audio Units plugin and the host application. Plugins typically declare a small number of parameters that the host can then display using a simple user interface with sliders and menus. Further the host may support "parameter automation" that allows you to draw value curves in a timeline and have the parameters change in real time. Finally hosts can often store the last known values for all of a plugin's parameters in a "session file" that may be restored later. Plugin parameters are an advanced topic because what you can do with them depends greatly on the host application you are using. Here we will simply discuss how you cause targets in Mobius to be exposed as plugin parameters. For information on how to use these parameters with the various hosts you will have to check forum.

Mobius has literally hundreds of targets that could be exposed as plugin parameters. Because there are so many they are not all exposed by default, you must explicitly ask for the targets you want exposed. To define plugin parameters open the Configuration menu and select the Plugin Parameters item.

Plugin Parameter Window with Default Parameters This looks like the other binding windows for MIDI and keyboard control. The unusual thing about parameter binding is that there are no fields for defining a trigger. This is because the association between a trigger and the plugin parameter is done in the host application rather than in Mobius. Mobius simply advertises a set of parameters that the host can use, the association of those parameters with things like MIDI events is done in the host. The typical steps for defining plugin parameters are: 1. Select a target (function, control, parameter, or configuration) 2. Select a scope 3. Click the New command button to add the parameter Plugin parameters can sometimes be used as sustainable triggers but it depends on the host application. The host needs to support the concept of a "momentary button" and set the parameter to non-zero when the button is pressed and zero when released. Not all hosts support this concept, some treat all parameters as continuous floating point values and display them as sliders rather than buttons.

6.7 OSC Bindings


It is possible to control every Mobius target using OSC messages. This is an advanced feature that is still under development. For more information see the Mobius and OSC manual.

7 MIDI Status Export


MIDI Status Export is an option that will cause Mobius to send MIDI events whenever certain parameters or controls change. It is intended for use with bi-directional control surfaces that can both send MIDI to Mobius to change something and also receive MIDI to track changes made within Mobius. For example a control surface may have a rotary knob used to set the Mobius Output Level control. When you turn the knob the hardware sends MIDI messages to Mobius to change the output level. But if you then change the output level in the Mobius UI or from a script, the position of the hardware knob may no longer match the output level that is actually being used in Mobius. Some newer control surfaces support bi-directional communication which means that the application may send MIDI back to the hardware to make it change the position of knobs, sliders, or buttons. When MIDI feedback is enabled in Mobius, it will send MIDI events whenever a parameter or control changes and those parameters or controls have a MIDI trigger binding. For example if the Output Level control has a binding to MIDI continuous controller 42, then whenever the output level is changed in the Mobius UI, continuous

controller 42 events will be sent to the selected MIDI output devices. If a parameter or control does not have a MIDI binding then no MIDI messages will be sent. There are two global parameters that control MIDI status export. The MIDI Status Export parameter will cause MIDI status events to be sent to the MIDI output devices selected in the MIDI Devices window. This is normally used only when running Mobius in standalone mode, but it can be used in the Mobius plugin if you are opening private MIDI devices. The Host MIDI Status Export parameter will cause MIDI status events to be sent to the VST or Audio Units plugin host. This can only be used when Mobius is running as a plugin. If you use this option you must then route MIDI coming from the Mobius plugin to the hardware control surface in the host. Every host does this differently and some don't even recognize MIDI generated by a plugin. If your host does support routing MIDI from a plugin, that is the recommended approach. If it doesn't then you can configure Mobius to open a private MIDI output device when in plugin mode and set the MIDI Status Export parameter instead. But be careful because having Mobius open MIDI devices can cause conflicts with some hosts.

8 Customizing the User Interface


The user interface can be changed in many ways: buttons can be added to the button area, components can be added and rearranged in the status area, and components can be added and rearranged in the track strips. Most customizations are performed using a set of popup dialog windows accessed from the Configuration menu. Note that it is often necessary to resize the Mobius window after adding or removing things from the UI. If you are running Mobius as an Audio Unit plugin, or as a VST plugin in "single window mode" you will not be able to resize the window. You will need to first run Mobius standalone to resize the window, then the new window size will be used by the plugin window the next time it is opened.

8.1 Item Selectors


Many of the configuration windows use a set of buttons and panels collectively called an item selector. These will have different labels and contain different items but they all work the same way. Here is an example item selector from the Display Components window.

Example Item Selector The panel on the right contains the items that are currently selected. The panel on the left contains the items that are available for selection. In the center is a column of buttons that move items between the two panels. To select an item, click on the name in the left panel to highlight it, then click on the button labeled ">". To deselect an item, click on the name in the right panel, then click on the button labeled "<". The button labeled ">>" will move all items to the right panel and the button labeled "<<" will move all items to the left panel.

Note that if the list of items is long there may be a scroll bar on the right edge of either panel. If that is the case you will need to use the scroll bar to see all of the available or selected items. For many item selectors, the order of the items in the right panel will determine the order the items are displayed in the user interface. If you want things to display in a certain order you will have to carefully select them in the desired order. You will quickly find out that drag-and-drop is not supported in the right panel so ordering the buttons can be tedious. It is best to plan your ordering ahead of time, use the "<<" button to clear the right panel, then add your items one at a time in the desired order.

8.2 Customizing Buttons


The button area is a strip across the top of the Mobius main window containing clickable buttons to trigger functions and scripts.

Default Buttons To add or remove buttons in the button area, open the Button Configuration window by selecting the Buttons item from the Configuration menu.

Button Configuration Window The button configuration window looks similar to the other binding windows. The panel on the left lists all of the currently selected UI buttons, the upper right has panels for selecting a target for the button, and the middle right has selectors for the button scope and arguments. To add a button, select a target, optionally set a scope, and click the New button under the button list. To delete a button, select it in the button list and click the Delete button under the button list. Like other bindings, buttons can have arguments, see Binding Arguments for more on what can be done here. If you need to change the arguments of an existing button, select the button in the list, change the arguments, and click the Update button under the button list. You would normally only use targets of type Control or Parameter if the binding had arguments to set the new value for the control or parameter. Note that if you add buttons the button area may grow. If one row of buttons becomes full, another row will be added and the status area will be shifted down to make room. Shifting the status area down may sometimes cause it to overlap the top of the track strip which can cause the components to draw incorrectly. If this happens you will need to resize the window and either make it taller to make room for the extra button row, or make it wider so that an extra button row is not required. If you are using Mobius as a plugin you may not be able to resize the window. You will need to run Mobius standalone to resize the window, the new window size will then be used for the plugin windows.

8.3 Customizing the Status Area


The status area is the large area in the center of the window between the buttons at the top and the track strips along the bottom. This area contains many components that display the state of the selected track.

Default status area at rest You can add or remove components and move them to new locations. Some components are initially invisible and will appear only when certain things happen in the track. To see the names and outlines of all active components, press and hold the Z key on the computer keyboard.

Default status area component outlines Note that as you add or move components in the status area you may notice that some of the components are partially erased with a black rectangular area. This indicates that one or more components overlap. When this happens you need to use Z to switch to outline mode, and drag the components so that they no longer overlap. To drag a component in outline mode, click over it with the left mouse button, hold the button down, and move the mouse to a new location. To configure components in the status area, open the Configuration menu and select the Display Components item.

Display Components Window - Main Tab The window has two tabs, one to select the components in the status area and another to select the components in the track strips. We'll start by exploring the first tab labeled Main. This tab contains two item selectors.

8.3.1 Components
The first item selector is labeled Components and determines which components are displayed in the status area. See the Status Area section of Getting Started With Mobius for details on the purpose of each component and how it looks.

Status Area Components Selector By default, all status area components are selected except for Loop Bars and Track Strip 2. It is recommended that you do not remove display components until you have used Mobius for awhile and have a better understanding for the things you don't need.

8.3.2 Visible Parameters

The second item selector labeled Visible Parameters determines which preset parameters will be displayed in the Instant Parameters component.

Instant Parameters Selector Note that you will see this component in the status area only if you have Parameters selected in the Components item selector at the top of this window. The default instant parameter component looks like this.

Default Instant Parameters Component The parameters will be displayed in the order they appear in the right item selector panel. If you add parameters to this list the Instant Parameters component will become taller and may start overlapping with other components or with the track strip. You may need to resize the window to make it taller, or move the components so they do not overlap.

8.4 Customizing the Track Strips


A Track Strip is a display component that can contain other components for controlling tracks and showing track status. There are two types of track strips you can configure, fixed track strips that are arranged along the bottom of the Mobius window, and floating track strips that may be added to the status area. Each track has one fixed track strip arranged in a row along the bottom of the window. While you can change the components dispalyed in the fixed track strips, they will all have the same components and they cannot be moved. Usually the Track Number component is displayed so you can easily identify the track. Fixed track strips typically have components that show the track status such as the Loop Status list and the Loop Radar and may contain a few track controls such as Output Level. The next picture shows the default components in the fixed track strips. The currently selected track will have a white rectangle drawn around its track strip.

Default fixed track strips The floating track strips are displayed in the status area, by default there is one on the left containing the major track controls.

Default primary floating track strip The components inside the track strips are always arranged horizontally. Because there are many controls and status components that can be added, it is possible to create track strips that are very tall. To keep the floating track strips shorter, there are two of them that may be added to the status area and they can contain different components. To add the secondary floating track strip to the status area, go to the

Main tab of the Display Components window and move the item Track Strip 2 into the panel on the right.

Adding the secondary floating track strip The next picture shows the status area with both floating track strips. By default, the secondary track strip is positioned on the right side, but it can be moved.

Default secondary floating track strip To change the components that are displayed in the track strips, go to the Track Strips tab of the Display Components window. The tab contains three item selectors, the first two select the components to be displayed in the two floating track strips, and the third selects the components to be displayed in the fixed track strips along the bottom.

Display Components Window - Track Strips Tab Like other item selectors the panel on the right shows which track strip components are selected and the order in which they will be displayed. The next screenshot shows what a track strip would look like if most of the possible items were selected and in the sections that follow we will describe each of the components.

Fully loaded track strip

8.4.1 Focus Lock


The Focus Lock component is similar to a small LED that will be lit when the track has Focus Lock. If you click on this component it will toggle the state of focus lock. It is not used often since the Track Number can also indicate which tracks have focus lock.

8.4.2 Track Number


The Track Number component is a useful and popular choice for the track strip. It will display either the track number or a user defined track name from the setup. When the track has focus lock the number or name will be displayed in a different color. Clicking on the number or name will toggle focus lock, just like the Focus Lock component.

8.4.3 Group Name


The Group Name component displays the name of the group assigned to this track. This component is only selected if you choose to make use of Track Groups.

8.4.4 Track Controls


The Track Controls are knobs that display and modify various track operating levels. See the Using Controls section in Getting Started With Mobius for information on the purpose of each of these controls. Each knob can be added or removed individually. Some of the newer controls related to speed, pitch, and time stretch are not shown in the previous screenshot but they may be added. Unlike other components in the track scripts, the track controls may be modified by the user. Click and hold the mouse button over the knob and drag the mouse to change the value.

8.4.5 Loop Meter


The Loop Meter is a smaller version of the Loop Meter shown in the status area. It fills with color as the loop plays but it does not have subcycle markers or show scheduled events.

8.4.6 Loop Radar


The Loop Radar is an alternative to the Loop Meter that is popular with many users. It displays progress through the loop as a pie-chart which is often lovingly referred to as the "loop pacman". When the loop is at its start point the radar will be empty, as the loop plays it will draw a clockwise filled arc. When the loop is at the end point it will display as a complete filled circle, then clear and start over. While this is larger than the Loop Meter it is easier to see from a distance.

8.4.7 Output Level Meter


The Output Level Meter is similar to the Audio Meter except that it shows the level of the audio signal being played in the loop. It is another "thermometer" that will bounce around according to the average loop level.

8.4.8 Loop Status


The Loop Status component is another useful and popular track strip component although it does consume a lot of space. Each row represents one loop in the current track. If the loop has content a green rectangle is drawn. The active loop will be drawn with a white border. If you are performing a Loop Switch , the next loop will be drawn with a red border.

8.5 Changing Colors


To change the colors used in the main Mobius window open the Configuration menu and select the Palette item.

Palette Window Some of the colors such as Cycle Tick Mark are used for very specific parts of the display. Others such as Button are used in many components. We won't document

the exact meaning of all the colors but most of them should be self-explanatory. Experiment to see the effects of each color. To change a color, click on the color box with the left mouse button, a standard system color dialog will pop up. Select a color and click Ok in the standard color dialog. When you are finished changing colors click Ok on the palette dialog and the color selections will be applied.

8.6 Changing Fonts


It is possible to change the fonts used in the main Mobius window but this is still considered to be an experimental feature that should only be attempted by advanced users. There is no user interface to change fonts, you must edit the UI configuration file in a text editor. If you are not comfortable editing XML files do not attempt this. The UI configuration file is named ui.xml. On Windows this will be found in the installation directory which is usually C:\Program Files\Mobius 2. On OS X this will be in the directory /Library/Application Support/Mobius 2. Edit this file in a text editor, do not use a word processor to edit Mobius XML files. It is important that these files be saved as simple ASCII text. See the Using Scripts section of Getting Started With Mobius for details about how to properly edit text files for Mobius. Always make a backup copy of the file before editing so you can restore it if the editor corrupts the file. With the ui.xml file in your editor, locate the FontConfig element, it should look something like this.

<FontConfig> <FontBinding name='mode' size='20'/> <FontBinding name='button' size='14'/> <FontBinding name='loopMeter' size='12'/> <FontBinding name='loopCounterSmall' size='30'/> <FontBinding name='loopCounterBig' size='40'/> <FontBinding name='layerList' size='8'/> <FontBinding name='message' size='18'/> <FontBinding name='minorModes' size='12'/> <FontBinding name='sync' size='12'/> <FontBinding name='parameter' size='14'/>

<FontBinding name='knob' size='12'/> <FontBinding name='trackNumber' size='30'/> <FontBinding name='trackName' size='20'/> <FontBinding name='trackGroup' style='1' size='12'/> <FontBinding name='loopStack' size='12'/> </FontConfig>
The FontBinding elements specify the font sizes used by the major UI components. The parameter font for example is used for the Instant Parameters component. To change a font size, edit the size element and change the number. You can get an idea for how large these fonts are by browsing them in a word processor. You cannot currently change the font name or style, Mobius will always use a sansserif font such as Helvetica.

9 Esoterica
In this section we will describe a few concepts and features that are intended for advanced users. Nothing in here is essential for using or understanding Mobius, but we do talk about these things from time to time in the forums. You may skip this section unless we recommended that you read one of these.

9.1 Trace
In order to diagnose some problems, you may be asked to capture a Mobius "trace log" and send it to the labs for evaluation. As Mobius runs it generates a constant stream of messages that show what it is doing inside. Normally these messages are discarded but you can configure Mobius to send them to a "log" instead where they can be seen. How you access this log will be different for Windows and Mac.

9.1.1 Trace Levels


There are three levels of tracing that may be enabled: 1. Level 1: Errors 2. Level 2: Major operations 3. Level 3: Minor operations Level 1 messages are the most interesting because they are only sent 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 us, they are almost always interesting. Level 2 messages are displayed during normal operation and provide insight on what is happening in the looping engine. These aren't errors, so you don't need to send them unless we are attempting to diagnose a problem. 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 configure trace levels open the Configuration menu and select Global Parameters. Locate the parameters named Trace Print Level and Trace Debug Level. The default value for these parameters is 1, which means only severe errors are logged. Usually you will be asked to temporarily change the trace level to 2. After you have finished capturing a trace log it is important that you return to the global parameters window and set the level back to 1. Generating trace messages does reduce Mobius performance slightly so you want to turn them off when you don't need them. Trace Print Level controls the messages that are sent to the "console". On the Mac, the messages are sent to the "system console" that you can view with the /Applications/Utilities/Console application. On Windows console messages are only visible if you launched Mobius from the command line instead of the start menu or an icon. Since it is unusual to start Mobius from the command line you usually set Trace Debug Level instead. Trace Debug Level is used only when running on Windows, it controls the messages that are sent to what Windows calls the "debug output stream". Since OS X doesn't have the concept of a debug output stream this parameter is treated the same as Trace Print Level. To view the debug output stream you need to download an application. This is described in more detail below.

9.1.2 Mac Trace Logging


Bring up the Global Parameters dialog and set Trace Print Level to 2. Restart Mobius. Run the Mac application named "Console" which is in the "Utilities" folder under the "Applications" folder.

9.1.3 Windows Trace Logging


Bring up the Global Parameters dialog and set Trace Debug Level to 2. Restart Mobius. Run any debug output stream viewer application. The one we use most often is DBWIN32 which used to be available here:

http://grantschenck.tripod.com/dbwinv2.htm
Another viewer is available from Microsoft:

http://technet.microsoft.com/enus/sysinternals/bb896647.aspx
An alternative to using a debug output stream viewer is launching Mobius from the Windows "command" window, also sometimes referred to as a "shell" window. Trace messages will be sent directly to the command window that was used to launch Mobius. It is assumed you know how to open an command window and enter DOS commands. Use the cd command to change to the Mobius installation directory, usually c:\Program Files\Mobius. Then enter "mobius" and hit enter. 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.

9.1.4 Using Trace


Once you have set the trace level and started the console application, Record a quick loop to verify that you see messages in the console. NOTE: There is a bug in 1.40 that will cause many messages of this form to be logged.

0 0: 0 millis between interrupts


You can ignore these though it makes it difficult to see the interesting messages. You should see messages like this:

101 -5120: Function Record down 101 -5120: Loop: Add event Record(Record) 0 101 -5120: Loop: Set mode play
If you see trace messages, start using Mobius in the way you were using it when the problem happened. As soon as the problem happens, go to the console window, copy the contents and send them to us in an email message. If the log is very long, it is better to save it to a text file, then send the file as an email attachment.

9.2 XML Files


All Mobius configuration settings are stored in two XML files. If you understand the structure of these files you can edit them in a text editor to configure Mobius rather than using the configuration popup windows. This is not recommended unless you are comfortable with XML syntax, it is very easy to screw things up to the point where Mobius won't even start. But if you are careful you might find it easier for example to

enter a large number of MIDI bindings by typing in the XML rather than using "MIDI learn" in the MIDI Control window. The most useful thing to be aware of is that the XML files can be copied to make backups of the configuration or to email your configuration to someone else. Quite often to help diagnose problems we will ask you to send us your configuration files. The configuration files are:

mobius.xml - configuration related to the looping engine ui.xml - configuration related to the user interface

On Windows these are found in the installation directory which is usually c:\Program Files\Mobius 2. On Mac these are found in /Library/Application Support/Mobius 2. If you are brave enough to edit these files it is important that you use a simple text editor do not use a word processor to edit Mobius XML files. It is mandatory that these files be saved as simple ASCII text. See the Using Scripts section of Getting Started With Mobius for details about how to properly edit text files for Mobius. Always make a backup copy of the file before editing so you can restore it if the editor corrupts the file.

9.2.1 mobius.xml
The mobius.xml file contains a single large MobiusConfig element. The element has a large number of attributes that correspond to most of the global parameters. A typical MobiusConfig start tag is shown below. We're not going to document what all of the attributes mean because it is fairly obvious how to match these to global parameters in the reference manual.

<MobiusConfig audioInput='ASIO:M-Audio USB ASIO' audioOutput='ASIO:M-Audio USB ASIO' quickSave='c:\larson' noiseFloor='13' suggestedLatencyMsec='0' inputLatency='0' outputLatency='0' fadeFrames='0' maxSyncDrift='2048' tracks='8' trackGroups='2' maxLoops='4' longPress='500' pluginPins='16' shiftRange='48' tracePrintLevel='1' traceDebugLevel='2' driftCheckPoint='loop' dualPluginWindow='true' preset='Default'>
Within the MobiusConfig element are the following child elements that hold the more complex configuration objects.

ScriptConfig - contains the file names of registered scripts Preset - there will be one Preset element for each defined preset Setup - there will be one Setup element for each defined track setup BindingConfig - there will be at least one BindingConfig containing the default bindings Samples - contains the file names of the registered samples

HostConfigs - configuration options for VST hosts, this is for emergency use only and is not exposed in the user interface FocusLockFunctions - the list of functions that obey focus lock

It should be relatively obvious what the attributes in each of the elements mean. Preset attributes correspond to the preset parameters you see in the UI. Setup attributes correspond to the track setup parameters you see in the UI. Script and Sample elements contain file paths. FocusLockFunctions is just a long list of function names (the internal names without spaces). The BindingConfig element we'll explore more deeply because this is the most useful element to edit in XML. A BindingConfig contains a list of Binding elements that define the association of a trigger with a target. This will include bindings for MIDI events, keyboard keys, and host parameters. Even though those are edited using different popup windows in the user interface, they are all stored in one BindingConfig. An example Binding is:

<Binding target='function' name='Reset' trigger='key' value='112'/>


The Binding element may have the following attributes:

scope - the scope of the binding: global, track number, or track group letter (default global) target - the target type: function, parameter, control, uiControl name - the internal name of the target trigger - the trigger type: note, control, program, key, host, osc value - numeric trigger value for all trigger types except osc channel - MIDI channel number from 0 to 15, only for triggers note, control, and program

If you're careful and you know your MIDI note numbers it can be faster to enter a large number of bindings by hand writing Binding elements rather than using "MIDI learn" in the MIDI Control window. Writing computer keyboard bindings is more difficult because you need to know the raw key codes and combine them with bits representing the state of the shift keys, most people will never do this. Writing host parameter bindings is easy, just give each one a unique value integer from one on up without any gaps. The order of the numbers will determine the order they are displayed in most hosts. OSC bindings are possible but still experimental. If you are interested in OSC control contact us for more information. For the target attribute it is important that you use the "internal name" for functions, parameters, and controls. These are usually the same as the names you would use in scripts and are documented in the reference manual. Usually names will be the same as what you see in the user interface, but with spaces between words removed.

9.2.2 ui.xml

The ui.xml file contains a single large UIConfig element. With the exception of the FontConfig element there is rarely any need to hand edit this file.

<UIConfig x='273' y='180' width='1026' height='665' refreshInterval='100' messageDuration='2'>


The attributes of the UIConfig element are:

x - the X coordinate of the main window x - the Y coordinate of the main window width - the width of the main window height - the height of the main window refreshInterval - number of milliseconds between window refreshes maximized - true if the window is maximized messageDuration - number of seconds to display messages in the message area

The window bounds you normally set just by moving an resizing the window. messageDuration can be set in the UI with the global parameter Message Duration. refreshInterval is not exposed in the UI and there should never be a need to change it. In theory you can make the UI "crisper" by lowering the refresh interval but this also adds more CPU stress so it is not recommended. The UIConfig element contains a number of child elements for the more complex UI parameters.

Locations - names and coordinates of components in the status area InstantParameters - names of parameters displayed in the status area TrackControls - track control components displayed in the status area TrackStripControls - track control components displayed in the track strips Buttons - functions shown as buttons at the top of the window Palette - names and rgb values for the various component colors FontConfig - names and sizes of component fonts

The first four are what you are editing when you use the Display Components window. The Buttons element is edited from the Buttons window, and the Palette element is edited from the Palette window. An editing window for FontConfig is not currently available, the Changing Fonts section has more information on editing this element.

9.2.3 Project .mob Files


A Mobius project file with a .mob extension is also an XML file. Editing these or even creating them from scratch can be a faster way to define the contents of a project than loading loops one at a time from the Mobius menu, setting all the track controls, and then saving the project. This example shows the basic structure of a project file:

<Project number='0' setup='Default'> <Track active='true' output='100' feedback='127' altFeedback='127' pan='64' preset='Basic Looping'> <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 in the order they appear as XML elements, so the first track element will be track number 1, the second track number 2, and so on. 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 active preset, the extra loop elements will be ignored. A Loop element may have zero or more Layer elements. The layers are listed in reverse chronological order, meaning the first one is the newest and the last one is the oldest. Each element may have a number of XML attributes that define characteristics of the associated object, for example output defines the value of the Output Level track control. If you omit an attribute the default value is usually zero. The Project element may have the following attributes:

number - not currently used, always zero setup - the name of the active track setup bindings - the name of the active binding set overlay (optional)

The Track element may have the following attributes:


preset - the name of the active preset if different than the setup active - true if this is the active track focusLock - true if focus lock is enabled group - track group number, if not present the track is not in a group

input - the value of the Input Level control output - the value of the Output Level control feedback - the value of the Feedback control altFeedback - the value of the Secondary Feedback control pan - the value of the Pan control reverse - true if the loop is in reverse speedOctave - the value of the Speed Octave control speedStep - the value of the Speed Step control speedBend - the value of the Speed Bend control speedToggle - the value of the Speed Toggle currently in effect pitchOctave - the value of the Pitch Octave control pitchStep - the value of the Pitch Step control pitchBend - the value of the Pitch Bend control timeStretch - the value of the Time Stretch control

The Loop element may have the following attributes:


active - true if this is the active loop frame - the playback position

The Layer element may have the following attributes:


id - an optional unique number used to reference this layer from segments cycles - the number of logical cycles in the layer audio - file system path to a wave file with layer contents protected - marks the wave file as being protected deferredFadeLeft - internal flag deferrerdFadeRight - internal flag containsDeferredFadeLeft - internal flag containsDeferredFadeRight - internal flag reverseRecord - internal flag

The id attribute is omitted unless segments are being saved (see below). If set, it must be a number that is unique among all Layer elements in the file. Note the protected attribute. This will not be set in projects saved by Mobius but you may want to use it in hand written projects. When this is true it means that the wave file must not be overwritten or deleted when the project is saved. You should set this when you are initializing layers contents from a library of pre-recorded loops that you want to preserve. The five "internal flag" attributes capture some special information about how the layers were recorded. They indicate whether the edges of the layer have been faded to zero. You will not set these if you are creating a project manually using prerecorded loops. If you see them in project files generated by Mobius be careful not to change them. If the global parameter No Layer Flattening is true, you may also see Segment elements inside the Layer elements. Segments are used to reference a portion of the

audio in a layer without actually copying the audio samples. 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. The Segment element may have the following attributes:

layer - the unique id number of a layer in this file startFrame - the frame location within the containing layer where this segment will be played offset - the frame offset within the referenced layer where the segment begins frames - the number of frames in the referenced layer beginning with offset that are played feedback - optional feedback level to apply to the segment copyLeft - true if the containing layer's audio file has content adjacent to the left edge of the layer copyRight - true if the containing layer's audio file has content adjacent to the right edge of the layer

We are not going to explain what all theSegment attributes mean, though if you've come this far you can probably figure them out. No one has ever wanted to hand write project files using segments, if you want to be the first then contact us and we'll do our best to talk you out of it.

9.3 Layer Flattening


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. Deferred 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 and is the default in Mobius. With Deferred 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. If you always leave feedback set to one value for a gradual decay you won't hear any difference between the two modes. The implementation of these feedback modes is dependent on another important mode called Layer Flattening.

Mobius provides two ways to combine the audio content of the past layers into the loop that you hear being played. 1. Flattening 2. Continuous Merging When Flattening mode is used, the full content of the current 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 memory owned by the layer. This is necessary for Continuous Feedback and is the default. When Continuous Merging mode is used, the content of a layer is not copied into the next layer. Instead the next layer contains only the new audio that was overdubbed. When a layer plays Mobius continually merges the contents of all the layers as the loop plays. In this mode layers are similar to tracks, they are completely independent recordings that are summed in realtime to create the loop. The advantage of Continuous Merging is that Mobius 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 mode, each new layer requires memory for the full 10 seconds whether or not there was any new material recorded during those seconds. Another interesting consequence of Continuous Merging is that when you save a project, you will create audio files containing only the new content overdubbed in each layer. These files can then be remixed to create variants of the loop. There are two big disadvantages of Continuous Merging. 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 cause audio glitches that sound like clicks or pops. Second, continuous feedback is not available in this mode because we are not gradually copying the content from one layer into the next. Only one level of feedback can be applied to all of the content from the previous layer. Choosing between layer flattening and continuous merging is done with the global parameter No Layer Flattening. When this parameter is checked, we will perform continuous merging. Most people will prefer to use layer flattening. There is however one interesting performance technique that is provided by continuous merging. If you set the Max Undo preset parameter to a non-zero value, Mobius will operate similar to a digital delay with a fixed number of repeats. For example, set Max Undo to 4, drop feedback slightly and record a loop. With feedback reduced, we will create a new layer on each repeat. But the Max Undo parameter restricts us to keeping only the most recent 4 layers. Once the first layer plays 4 times, the loop will become silent. The original recorded loop has "fallen off the edge" of the layer list. This technique 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. If you decide to use No Layer Flattening it is strongly recommended that you also set Max Undo to 20 or less to prevent a large number of layers from being created. This number may need to be lower if you create loops like this in multiple tracks. You will

have to experiment to see how many tracks and layers you can create before you start having audio glitches.

Mobius Techniques
March 2012

Contents
1 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 3 3.1 3.2 3.3 3.4 3.5 4 5 6 7 8 9 10 11 12 13 14 14.1 14.1.1 14.1.2 Introduction Record Sustain Record Record Mode Reverse Recording Speed Shifted Recording Auto Record Function Synchronized Recording Threshold Recording Generating MIDI Clocks Alternate Endings Long Press Record Auto Record Rehearse Overdub Ending Record with Overdub Overdub Mode Noise Floor Reduce Feedback During Overdub Overdub Quantized Reset Play Managing Layers Mute, Pause, and Solo Extending The Loop With Multiply Extending The Loop With Insert Shortening The Loop Replacing Loop Content Shuffle Changing Direction Speed Shift Speed Functions Speed Toggle, Sustain Speed Toggle Speed Step

14.1.3 Speed Up, Speed Down 14.1.4 Speed Next, Speed Previous 14.1.5 Halfspeed 14.1.6 Speed Cancel 14.2 Speed Controls 14.2.1 Speed Octave 14.2.2 Speed Step 14.2.3 Speed Bend 14.3 Speed Parameters 14.3.1 Speed Sequence 14.3.2 Speed Step Range 14.3.3 Speed Bend Range 14.3.4 Record Speed Changes 14.3.5 Speed Shift Restart 14.3.6 Speed/Pitch Note Range 14.4 Speed Combinations 15 Pitch Shift 15.1 Pitch Functions 15.1.1 Pitch Step 15.1.2 Pitch Up, Pitch Down 15.1.3 Pitch Next, Pitch Previous 15.1.4 Pitch Cancel 15.2 Pitch Controls 15.2.1 Pitch Octave 15.2.2 Pitch Step 15.2.3 Pitch Bend 15.3 Pitch Parameters 15.3.1 Pitch Sequence 15.3.2 Pitch Step Range 15.3.3 Pitch Bend Range 15.3.4 Pitch Shift Restart 15.4 Pitch Combinations 16 Time Stretch 16.1 Time Stretch Range 16.2 Combining Stretch, Pitch, and Speed 17 Loop Switching 17.1 Switch Quantize 17.2 Switch Confirmation 17.3 Switch and Confirm Modes 17.4 Empty Loop Action 17.4.1 Time Copy 17.4.1.1 Time Copy Mode

17.4.2 17.4.2.1 17.5 17.6 17.7 17.8 17.8.1 17.8.2 17.8.3 17.8.4 17.8.5 17.9 17.10 18 19 20 20.1 20.2 21 22 23 24 25 26

Sound Copy Sound Copy Mode Switch Location Switch Duration Return Location Switch State Transfer Record Transfer Overdub Transfer Reverse Transfer Speed Transfer Pitch Transfer Switch Velocity Sensitive Restart and Restart Once Changing Playback Position Changing The Start Point Loop Windowing Window Mode Scripting Windows Long Presses Managing Tracks Bounce Recording Capturing a Performance Sending MIDI Messages Host Control With MIDI Loopback Devices

1 Introduction
This document contains a sampling of common recording and performance techniques used with Mobius. You do not need to read this top to bottom, look at the index and skip to the sections that interest you. Note that this document is not yet complete. Many sections are still empty. If you have an interest in an empty section post a request to the forum and we will provide more information there.

2 Record
The Record function is used to record new loops of live audio. There are several ways to start and stop a recording, in the simplest case you press the Record button once to begin recording, and again to stop recording. Immediately after the second press the loop begins playing and continues until you alter it with another function. Before a loop is recorded for the first time, the loop is in reset mode and you will see the word Reset appear in the status display. While a loop is recording you are in record mode and will see the word Record in the status display. Unless and

advanced record ending option is used, when the recording completes the loop will enter play mode and Play will appear in the status display. If you want to discard the loop and start over you can use the Reset function to stop the loop, release all loop memory and return to reset mode. From there you can use the Record function again to record another loop. If you want to discard the loop and immediately begin recording a new one just press Record again with while the loop is playing. The memory for the previous loop is not released until you end the new recording, you can use the Undo function to cancel the new recording and return to the original loop. Note that Undo only restores the previous loop if the previous loop was not empty (in reset mode). Once a loop is reset all history of the loop is gone, you cannot undo from reset mode. Another way to reset a loop is to press and hold the Record button. This is referred to as a "Long Press Record" and it behaves the same as the Reset function. Using long press Record to reset the loop is a common technique when using a MIDI footswitch. Since you will almost always have a footswitch bound to the Record function you don't need to waste a footswitch bound to the Reset function, you can simply do a long press of the Record footswitch to do a reset. The loop will enter record mode for about 1/2 second (or whatever the configured long press interval is) then the loop will be reset. Once the loop has been recorded to your satisfaction, you may begin modifying it, or combining it with loops on other tracks.

2.1 Sustain Record


The function Sustain Record is used with triggers that can communicate both a "pressed" and "released" state. The recording starts when the trigger is pressed and stops when it is released. For a footswitch that sends MIDI notes, the recording would start when the footswitch was pressed, continue while the footswitch was held, and stop when the footswitch was released. This can make it easier to record very short loops. If the Sustain Record function is bound to a trigger that does not support press/release states, such as a MIDI program change, it will behave the same as the Record function, requiring two presses to start and ending the recording.

2.2 Record Mode


The preset parameter Record Mode can be used to change the way the Record function behaves. It has these values:

Toggle - the default, one press to start and another to stop Sustain - forces Record to behave like Sustain Record Safe -

RecordMode=Safe should be it's own option so you can use it with both toggle and sustain recording.

2.3 Reverse Recording

2.4 Speed Shifted Recording 2.5 Auto Record Function 2.6 Synchronized Recording
Synchronized recording is a very complex topic that is covered fully in the Mobius Synchronization manual.

2.7 Threshold Recording 2.8 Generating MIDI Clocks


See the MIDI Master Sync section of the Mobius Synchronization manual for more information.

2.9 Alternate Endings 2.10 Long Press Record 2.11 Auto Record 2.12 Rehearse

3 Overdub
Overdubbing is the process of adding new sound to an existing loop. It is the most common way to modify loops after recording. When overdub is enabled, new sound coming into a track will be merged with the loop that is currently playing in that track. This will result in a new loop containing both the original sound and the new sound. Unlike many loopers, overdub in Mobius does not replace the original loop. Instead overdubbing creates a new "layer". Remember that loops are not single audio recordings, they are actually made up of several audio recordings called layers. Each time you modify a loop a new layer is created. If you don't like the results of a modification you can return the previous layer with the Undo function. Overdub is controlled with the following functions.

Overdub Sustain Overdub Overdub On Overdub Off

The Overdub function will toggle overdub on and off each time it is used. The Sustain Overdub function will turn overdub on when the function button is pressed and turn it off when the button is released. It must be used with a

sustainable trigger. This is useful if you want to create very short overdubs. Pressing, holding, then releasing a button is much faster than trying to press a button twice. The Overdub On and Overdub Off functions turn overdub on and off without toggling. They are intended for use in scripts where you want to set the overdub state without worrying about the current state. When a loop is playing, it is actually one of the layers in the loop that is playing. This is called the "active layer". The active layer is usually the last layer that was created, if you are displaying the Layer Bars in the Mobius window, the active layer will be highlighted. While overdub is on, a new layer is continually being created as the active layer plays. This new layer will contain a copy of what is in the active layer adjusted for feedback, then merged with the sound coming into the track adjusted by the track's input level. When the active layer plays to the end, the new layer with the overdub is "shifted" and becomes the active layer. The overdubbed layer then begins playing and a new layer is created to record the next overdub. This process continues for as long as overdub is enabled. This means that if you never turn overdub off you may generate a lot of layers. If you decide you don't like an overdub, you can use the Undo function to discard the new layer and return to the previous layer. You can keep using Undo to go all the way back in time to the very first layer, then start overdubbing again. See the Managing Layers section for more information on using Undo.

3.1 Ending Record with Overdub


A very useful technique is ending a new loop recording with the Overdub function. You start by pressing Record to begin recording a new loop, then when you're ready to stop instead of pressing Record again, press Overdub. The new loop is created and begins playing and you are immediately placed in Overdub mode. This is important because when you transition seamlessly from Record mode to Overdub mode we can avoid a fade at the end of the loop. Normally when you record a loop by pressing Record twice, the left and right edges of the loop are automatically faded to zero. This ensure that there will be no abrupt changes in sample level at the loop start point. Without these fades you would usually hear a sharp "click" every time the loop reached its end point and begin playing from the beginning because the audio waveform at the end of the loop would not exactly align with the audio waveform at the beginning of the loop. The consequence of these edge fades is that you can't create a loop that lets a sound such as a reverb tail or a cymbal crash carry over from the end of the loop back to the start and keep going. Any sound at the end of the loop will be abruptly cut off and faded to zero. When you end a recording with Overdub the right edge fade will not be done so the sound being recorded at the end of the loop will seamlessly carry over to the to the beginning of the next layer. You will hear the cymbal crash or the reverb tail cross the loop boundary without a "fade bump". You can now leave overdub on indefinitely or wait just long enough for the sound to decay nicely then press Overdub again to end the overdub. This can result in much more natural sounding loops because the end of the loop will gradually blend with the start of the loop.

3.2 Overdub Mode


A loop is always in one major mode which is displayed in the Mode component in the user interface. The default major mode is Play. The loop will always return to Play mode when no other modes are active. Most major modes are temporary, they begin when you execute a modal function such as Record, Multiply, or Insert and then end when you execute that function again. These are called function modes. If you are already in a function mode and then execute a different function, the previous mode is canceled and will not be restored. For example if a loop is in Multiply mode and you execute the Insert function, the Multiply mode is canceled and the loop enters Insert mode. Later when you execute the Insert function again to end Insert mode the loop will not return to the previous Multiply mode, it will return to Play mode. A loop may be in any number of minor modes at the same time, these are displayed in the Minor Modes component in the user interface. Examples of minor modes include Reverse, Speed Toggle, and Pitch Step. Minor modes are not canceled when you change major modes. For example if you start in the Reverse minor mode when you execute the Multiply function, the major mode will change to Multiply but Reverse minor mode will still be active. Later when you leave Multiply mode and return to Play mode, Reverse will continue to be active. Overdub is unusual because it has characteristics of both major and minor modes. Like a major mode it will be displayed in the Mode component in the user interface when it is active. But like a minor mode Overdub is not canceled when the major mode changes, it is just temporarily suspended. It will also be displayed in the Minor Modes component in the user interface so you can see when it has been suspended. For example if you start in Overdub mode and execute the Multiply function, the major mode will change to Multiply and Overdub is suspended. Later when you leave Multiply mode you will return to Overdub mode. Overdub is the only major mode that behaves this way.

3.3 Noise Floor


You may want to leave overdub on while you listen to the loop a few times with your instrument muted. While you are listening the loop without playing you usually don't want more layers to be created just because overdub was left on. Mobius will only generate a new layer if the maximum signal level of the sound received by the track exceeds a threshold. This threshold is set with the Noise Floor global parameter. Most instruments generate some low-level noise when they are not being played. Keyboards may hiss or buzz, guitars generate lots of handling and string noise. If you see layers being added when you are not playing your instrument you may need to increase the Noise Floor value. If the value is zero then there will be no noise filter and every pass of the loop while overdub is on will generate a new layer. The default value is 15 which is adequate for most instruments including guitars with quiet pickups. If you need to raise the noise floor, increase the value by 5 or 10 until layers are no longer being created. You should not have to set this value above 1000, if you do please let us know. Be careful not to set the Noise Floor too high or else overdubs may be lost if you are playing softly.

3.4 Reduce Feedback During Overdub

If you are overdubbing a loud audio signal you need to be careful not to overload the loop. Mobius does not do any compression or limiting, if you overdub loud sounds over loud sounds you may exceed the maximum level which will cause harsh digital clipping. If this happens you will need to reduce the track input level or reduce feedback. Reducing the input level makes the new overdubbed sound quieter, reducing feedback makes the sound being copied from the current loop quieter. If you prefer to leave the feedback control all the way up (127) Mobius can still slightly reduce the amount of feedback automatically while overdub is enabled. The amount of feedback reduction is small, approximately 5%. This can help reduce clipping if you overdub several times. Normally this small amount of feedback reduction is not audible but you can turn it off with a global parameter. Open the Global Parameters window and locate the checkbox labeled Reduce Feedback During Overdub, uncheck the box to turn this feature off.

3.5 Overdub Quantized


Normally the overdub functions do not obey the Quantize parameter, they are executed immediately when you press the function trigger. This is because you are usually merging new sound into an existing sound so controlling exactly where the "edges" of the overdub will be is not critical. If you start overdub a little early, just keep your instrument muted until you are ready to add something then mute it when you're done. Quantized overdub can however be useful as an effect. If you keep a loud sound playing before and after the overdub, you can drop in overdubs that a very sharp attack and decay. To enable overdub quantization edit the preset and check the box labeled Overdub Quantized.

4 Reset 5 Play 6 Managing Layers 7 Mute, Pause, and Solo 8 Extending The Loop With Multiply 9 Extending The Loop With Insert 10 Shortening The Loop 11 Replacing Loop Content

12 Shuffle 13 Changing Direction 14 Speed Shift


The speed shifting features allow you to adjust the playback and recording speed of the loop so that both the perceived pitch and tempo of the loop change. The most commonly known variant of speed shift drops the playback speed by one octave which many loopers call "halfspeed" mode. Mobius offers a powerful set of functions and controls that provide many ways to change loop speed beyond just one octave down. The functions available for speed shifting are:

Speed Toggle Sustain Speed Toggle Speed Step Speed Up Speed Down Speed Next Speed Previous Halfspeed Speed Cancel

The controls available for speed shifting are:


Speed Octave Speed Step Speed Bend

The speed of the loop may be changed in either semitone steps or with very small steps to achieve a smooth continuous shift. Most of the functions and controls apply a semitone shift, The Speed Bend control applies a smooth continuous shift.

14.1 Speed Functions


14.1.1 Speed Toggle, Sustain Speed Toggle
The most commonly used speed shifting function is Speed Toggle. In its default behavior, it will lower the speed of the loop by one octave, then raise it an octave when executed a second time. This is what many loopers including the EDP call "Half Speed". Speed Toggle is however able to do other things besides halfspeed. When used in a script or with binding arguments, it can toggle between any semitone shift up or down. See the Function Binding Arguments section of the Exploring Mobius manual for more information on using binding arguments.

For example when the binding argument is set to 7, the first press of the function will raise the speed by 7 semitones, or a perfect fifth. The second press will lower it by 7 semitones. If no argument is specified the default interval is -12 which makes Speed Toggle behave like half speed functions in other loopers. The Sustain Speed Toggle function behaves like Speed Toggle except that you do not execute it twice. It must be bound to a sustainable trigger such as a MIDI note. The speed shift is active while the trigger is held down and removed when the trigger is released. Speed Toggle has long press behavior. If you have Speed Toggle bound to a susutainable trigger, and you hold the trigger down longer than the long-press threshold, the function will convert to Sustain Speed Toggle and the speed shift will be removed when the trigger is released.

14.1.2 Speed Step


Speed Step can change the playback speed of the loop up or down in semitones. It is a ranged function which means that it is usually bound to a trigger that supports a continuous range of values such as MIDI notes or MIDI continuous controllers. It is almost always bound to a MIDI note from a keyboard so you can change speed chromatically by playing the keyboard normally. This can make Mobius behave somewhat like a sampler. The value of the note in the binding becomes the center point of the shift range. If you press this note the speed returns to normal. If you press notes on either side of the center note, the speed will be raised or lowered by the corresponding number of semitones. The range of notes that will cause a speed shift is determined by the Speed/Pitch Note Range global parameter. 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 Speed Step note is already assigned to another Mobius function, the previous function will have priority. To avoid these conflicts use a different channel. The Speed Shift Restart preset parameter is often set when using a ranged binding of Speed Step. This will cause the loop to be restarted whenever Speed Step is executed, similar to the way keyboard samplers behave. When this function is bound to a MIDI continuous controller, the 0 to 127 range of the controller is scaled to fit within the Speed/Pitch Note Range. A controller value of 64 is considered "center" and will apply no speed shift. Controller values on either side of 64 will raise or lower the speed in semitones. When this function is given a binding argument, the ranged behavior is not enabled. Instead the binding argument specifies a fixed positive or negative number of semitones. Multiple bindings with different arguments can be created to directly jump to desired speeds. SpeedStep may also be used in scripts but it is not ranged. Instead the amount of shift is specified as an argument to the function. See SpeedStep in the Mobius Scripting manual for usage examples.

14.1.3 Speed Up, Speed Down

This pair of functions simply raises or lowers the speed by one semitone. You might use these if you want to raise or lower the speed in successive semitone steps but don't want to create a separate Speed Step bindings for each step.

14.1.4 Speed Next, Speed Previous


This pair of functions changes the speed in steps defined by the Speed Sequence parameter. The parameter may be set to a space-delimited list of numbers that represents positive or negative speed shifts in semitone steps. For example a speed sequence of "7 12 0" will raise the speed by a fifth, then by an octave, then return to normal. The Speed Next function advances through the speed sequence from left to right, and the Speed Previous function advances through the sequence from right to left. You can change direction at any time. NOTE: The current location in the speed sequence is not shown in the UI which can make this difficult to use. The location is available in scripts with the speedSequenceIndex variable. This variable may also be set to change the sequence index.

14.1.5 Halfspeed
Halfspeed is an obsolete function that is provided only for backward compatibility with older scripts and bindings. It forces a non-toggling speed shift of one octave down. The same behavior is possible by creating a binding to Speed Step with an argument of -12.

14.1.6 Speed Cancel


Speed Cancel will remove all forms of semitone and continuous speed shift being applied to the track. It will cancel the effects of all speed functions and the speed controls, and reset the Speed Sequence index back to the beginning. This can be useful to get things back to normal if you have been combining Speed Step, Speed Bend and Speed Octave in various ways without having to individually cancel each function and return the controls to their center positions.

14.2 Speed Controls


There are three controls that may be added to the track strips to display and change speed.

Speed Controls

14.2.1 Speed Octave


Speed Octave is a control that can be used to change the speed up or down by one or more octaves. The maximum range is 4 octaves up or down. When bound to a

MIDI continuous controller, the controller will sweep through a range of 8 octaves. The center value of 64 will result in no shift.

14.2.2 Speed Step


Speed Step will appear as both a control and a function in the binding windows. You can achieve similar effects with either target, but main difference is the way in which the binding arguments are handled. When Speed Step is bound as a control, the binding arguments must follow the conventions of Control Binding Arguments which have values such as min, max and center. When Speed Step is bound as a function, the binding argument may only have a single integer value which specifies the amount of speed shift in semitones. Another difference between the Speed Step control and function is the range of values. The Speed Step control range is defined by the Speed Step Range preset parameter which defaults to 24, meaning two octaves up and down. The Speed Step function range is defined by the global parameter Speed/Pitch Note Range. Because the control range is defined by a preset parameter, you can design prests with different ranges if for example you want a control that sweeps over a smaller range of semitones.

14.2.3 Speed Bend


Speed Bend is a control that can be used to change the speed up or down by very fine units resulting in a seemingly smooth or "continuous" speed change. The effect is similar to using the pitch bend wheel on a keyboard, except that it changes the speed as well as the pitch. Unlike most controls, this one is commonly bound to the MIDI Pitch Bend trigger which has a larger range of values resulting in smoother bends. You may also bind this to a MIDI continuous controller, but these have less range and may result in a more audible "zipper" sound as you hear the speed change in small steps. The internal range of the speed bend control is defined by the Speed Bend Range parameter. This defaults to 12 which means one octave up or down. Note how the range of the external trigger and the internal control range combine. If you set Speed Bend Range to 1 for one semitone up or down, and then bind the control to a MIDI Pitch Bend wheel, you will get an extremely smooth speed shift because a range of 2 semitones will be divided into 16384 steps. Binding to a MIDI continuous controller by comparison will only divide the semitone range into 128 steps.

14.3 Speed Parameters


Most speed-related parameters are found under the Effects tab of the preset window.

Speed Parameters

14.3.1 Speed Sequence


This is a preset parameter found under the Effects tab. It may be set set to a spacedelimited list of numbers that represents positive or negative speed shifts in semitone increments. For example a speed of "1" is one semitone above normal, a speed of "7" is 7 semitones below normal (or a perfect fifth lower). Once a speed sequence has been set, the speed may be changed using the Speed Next and Speed Previous functions.

14.3.2 Speed Step Range


This parameter defines the range of the Speed Step control. The default value of 24 means that the range is 24 semitones, or 2 octaves up and down for a total range of 48 semitones. The smallest value is 1 which gives you a range of 2 semitones, one up and one down. You may wish to lower the step range when binding to a MIDI continuous controller to give you more control when selecting steps. If the range is too high, very slight changes to the knob or pedal will change speeds. With a lower range, the knob or pedal must move a longer distance before changing speeds.

14.3.3 Speed Bend Range


This parameter defines the range of the Speed Bend control. The default value of 12 means that the range is 12 semitones, or 1 octave up and down for a total range of 24 semitones. The smallest value is 1 which gives you a range of 2 semitones, one up and one down. You may wish to lower the bend range when binding to a MIDI continuous controller to give you a smoother and more subtle bend.

14.3.4 Record Speed Changes


This boolean preset parameter is found under the General tab. When false it means that using any of the speed functions or controls will end a recording if one is in progress.

14.3.5 Speed Shift Restart


When this boolean parameter is true, the current loop will be restarted from the beginning whenever the playback speed is changed by the Speed Up, Speed Down, Speed Cancel, Speed Next, Speed Previous, and Speed Step functions. This is commonly used when doing a ranged MIDI note binding to the Speed Step function so that Mobius will behave simlilar to a keyboard sampler. Once the loop is recorded, you can play it chromatically on the keyboard, retrigging the loop with each new note.

14.3.6 Speed/Pitch Note Range

This parameter defines the range of MIDI notes or controller values that will be automatically bound to the Speed Step or Pitch Step functions. The center of the range is defined by the note or control selected in the binding window. The parameter is found under the Miscellaneous tab of the Global Parameters window. The default value is 48 which will result in an 8 octave range to cover an entire MIDI keyboard. There is usually no need to change this, but you can specify a smaller range if desired.

14.4 Speed Combinations


You may use all of the speed functions and controls at the same time. For example if you turn the Speed Octave control to -1, then turn the Speed Step control to 12, the effect will be normal speed since when you add the effects of drop of one octave (-12 semitones) to a rise of 12 semitones, you get 0 semitones. No speed shift will be heard. This can be especially usefull with Speed Bend. Speed Bend typically has a range of one octave up or down or lower if you want a smoother bend. By combining this with Speed Octave you can radically change the speed of the loop, then give it a subtle vibrato in any octave with Speed Bend. Note that the combination of speed functions and controls are restricted to a maximum of 4 octaves up or down. For example if you have used the Speed Step function to lower speed by 24 semitones, then turned the Speed Octave control down to -4 you will not get a combined shift of 6 octaves down. The shift will be constrained to 4 octaves down. The Speed Octave control values of -3 and -4 will appear to do nothing until you raise it above -2. Similarly if you have Speed Octave set to 4, the upper half of the Speed Bend control will appear to have no effect since the speed cannot be raised any more.

15 Pitch Shift
NOTE: Pitch Shifting is still considered a "beta" feature. It can be fun to play with, but the algorighm introduces a significant amount of additional latency when it is active, and this is not being properly compensated. This makes it difficult to use pitch shifting when you are trying to synchronize multiple tracks with different amounts of shift, or if you are synchroning Mobius to an external device. Pitch shift is very similar to Speed Shift except that the pitch is changed without changing the length or tempo of the loop. In all other respects the functions and parameters used to control pitch shifting are almost identical to those for speed shifting. Pitch shifting may be controlled using these functions and controls.

Pitch Step Pitch Up Pitch Down Pitch Next Pitch Previous

Pitch Cancel Pitch Octave Pitch Bend

15.1 Pitch Functions


15.1.1 Pitch Step
Pitch Step can change the pitch of the loop up or down in semitones. It is a ranged function which means that it is usually bound to a trigger that supports a continuous range of values such as MIDI notes or MIDI continuous controllers. It is almost always bound to a MIDI note from a keyboard so you can change pitch chromatically by playing the keyboard normally. This can make Mobius behave somewhat like a sampler. See the description of the Speed Step function for more details about how to create ranged function bindings. The Pitch Shift Restart preset parameter is often set when using a ranged binding of Pitch Step. This will cause the loop to be restarted whenever Pitch Step is executed, similar to the way keyboard samplers behave. PitchStep may also be used in scripts but it is not ranged. Instead the amount of shift is specified as an argument to the function. See PitchStep in the Mobius Scripting manual for usage examples.

15.1.2 Pitch Up, Pitch Down


This pair of functions simply raises or lowers the pitch by one semitone. You might use these if you want to raise or lower the pitch in successive semitone steps but don't want to create a separate Pitch Step bindings for each step.

15.1.3 Pitch Next, Pitch Previous


This pair of functions changes the pitch in steps defined by the Pitch Sequence parameter. The parameter may be set to a space-delimited list of numbers that represents positive or negative pitch shifts in semitone steps. For example a pitch sequence of "7 12 0" will raise the pitch by a fifth, then by an octave, then return to normal. The Pitch Next function advances through the pitch sequence from left to right, and the Pitch Previous function advances through the sequence from right to left. You can change direction at any time. NOTE: The current location in the pitch sequence is not shown in the UI which can make this difficult to use. The location is available in scripts with the pitchSequenceIndex variable. This variable may also be set to change the sequence index.

15.1.4 Pitch Cancel

Pitch Cancel will remove all forms of semitone and continuous pitch shift being applied to the track. It will cancel the effects of all pitch functions and pitch controls, and reset the Pitch Sequence index back to the beginning. This can be useful to get things back to normal if you have been combining Pitch Step, Pitch Bend and Pitch Octave in various ways without having to individually cancel each function and return the controls to their center positions.

15.2 Pitch Controls


There are three controls that may be added to the track strips to display and change pitch.

Pitch Controls

15.2.1 Pitch Octave


Pitch Octave is a control that can be used to change the pitch up or down by one or more octaves. The maximum range is 4 octaves up or down. When bound to a MIDI continuous controller, the controller will sweep through a range of 8 octaves. The center value of 64 will result in no shift.

15.2.2 Pitch Step


Pitch Step will appear as both a control and a function in the binding windows. You can achieve similar effects with either target, but main difference is the way in which the binding arguments are handled. When Pitch Step is bound as a control, the binding arguments must follow the conventions of Control Binding Arguments which have values such as min, max and center. When Pitch Step is bound as a function, the binding argument may only have a single integer value which specifies the amount of shift in semitones. Another difference between the Pitch Step control and function is the range of values. The Pitch Step control range is defined by the Pitch Step Range preset parameter which defaults to 24, meaning two octaves up and down. The Pitch Step function range is defined by the global parameter Speed/Pitch Note Range. Because the control range is defined by a preset parameter, you can design prests with different ranges if for example you want a control that sweeps over a smaller range of semitones.

15.2.3 Pitch Bend


Pitch Bend is a control that can be used to change the pitch up or down by very fine units resulting in a seemingly smooth or "continuous" pitch change. The effect is similar to using the pitch bend wheel on a keyboard. Unlike most controls, this one is commonly bound to the MIDI Pitch Bend trigger which has a larger range of values resulting in smoother bends. You may also bind

this to a MIDI continuous controller, but these have less range and may result in a more audible "zipper" sound as you hear the pitch change in small steps. The internal range of the pitch bend control is defined by the Pitch Bend Range parameter. This defaults to 12 which means one octave up or down.

15.3 Pitch Parameters


Most pitch-related parameters are found under the Effects tab of the preset window.

Pitch Parameters

15.3.1 Pitch Sequence


This is a preset parameter found under the Effects tab. It may be set set to a spacedelimited list of numbers that represents positive or negative pitch shifts in semitone increments. For example a pitch of "1" is one semitone above normal, a pitch of "-7" is 7 semitones below normal (or a perfect fifth lower). Once a pitch sequence has been set, the pitch may be changed using the Pitch Next and Pitch Previous functions.

15.3.2 Pitch Step Range


This parameter defines the range of the Pitch Step control. The default value of 24 means that the range is 24 semitones, or 2 octaves up and down for a total range of 48 semitones. The smallest value is 1 which gives you a range of 2 semitones, one up and one down. You may wish to lower the step range when binding to a MIDI continuous controller to give you more control when selecting steps. If the range is too high, very slight changes to the knob or pedal will change pitches. With a lower range, the knob or pedal must move a longer distance before changing pitch.

15.3.3 Pitch Bend Range


This parameter defines the range of the Pitch Bend control. The default value of 12 means that the range is 12 semitones, or 1 octave up and down for a total range of 24 semitones. The smallest value is 1 which gives you a range of 2 semitones, one up and one down. You may wish to lower the bend range when binding to a MIDI continuous controller to give you a smoother and more subtle bend.

15.3.4 Pitch Shift Restart


When this boolean parameter is true, the current loop will be restarted from the beginning whenever the pitch is changed by the Pitch Up, Pitch Down, Pitch Cancel, Pitch Next, Pitch Previous, and Pitch Step functions.

This is commonly used when doing a ranged MIDI note binding to the Pitch Step function so that Mobius will behave simlilar to a keyboard sampler. Once the loop is recorded, you can play it chromatically on the keyboard, retrigging the loop with each new note.

15.4 Pitch Combinations


You may use all of the pitch functions and controls at the same time. For example if you turn the Pitch Octave control to -1, then turn the Pitch Step control to 12, the effect will be normal pitch since when you add the effects of drop of one octave (-12 semitones) to a rise of 12 semitones, you get 0 semitones. No pitch shift will be heard. Like Speed Combinations, the pitch shift range is limited to 4 octaves up or down.

16 Time Stretch
Time Stretch is an effect that combines Speed Shift and Pitch Shift to change the length and tempo of a loop without changing the pitch. Note that because Time Stretch relies on the Pitch Shift algorithm, it will have similar issues regarding added latency which can cause synchronization problems and a slight gap in the audio when as you change the amount of stretch. These issues will be addressed in future releases, until then we consider this a "beta" feature that needs to be used with caution. Time stretch is accomplished by binding to the Time Stretch control, there are no functions for time stretch. Like the Speed Bend and Pitch Bend controls, this can be bound to either the MIDI pitch wheel or to a continuous controller. The internal range of the time stretch control is defined by the Time Stretch Range preset parameter.

Time Stretch Control In the UI, the Time Stretch control will be shown with a value of zero in the center position when there is no time stretch being applied. When the MIDI pitch wheel is at the center position or the MIDI continuous controller is held at value 64, the value of the control will be zero and there is no time stretch. As the trigger value rises, the loop is compressed so that it becomes shorter and the tempo becomes faster. As the trigger value falls, the loop is expanded so that it becomes longer and the tempo becomes slower. Although time stretch combines Pitch Shift and Speed Shift it is not canceled by either the Pitch Cancel or Speed Cancel functions. You must cancel time stretch by returning the Time Stretch control to its center position.

16.1 Time Stretch Range


The effective range of the time stretch is controlled by the preset parameter Time Stretch Range found under the Effects tab. The defalut value is 12. Like Speed Bend Range, this value is a number of semitones, where 12 means one octave up or down.

The notion of a semitone range is confusing when applied to time stretch, since the purpose is to not change the pitch. Instead think of it this way, a one octave speed shift down results in a loop that lasts twice as long. For time stretch, a one octave shift down also results in a loop that is twice as long, but the pitch doesn't change. So for time stretch, the number 12 means the control has a range that will either double the loop length or cut it in half, but the pitch will not change.

16.2 Combining Stretch, Pitch, and Speed


Since time stretch is just a combination of Speed Shift and Pitch Shift it can be used at the same time as the other functions and controls for speed and pitch shifting. For example if you time stretch a loop to make it twice as long, then use Pitch Octave to lower the pitch one ocatve, the result is the same as using the Speed Octave control to lower the pitch and speed by one ocatve. If you bind all of the speed, pitch, and stretch controls to knobs on a MIDI control surface, you can have a lot of fun mutating the loops into unrecognizeable slow drones, or insect fights.

17 Loop Switching
Tracks may contain several loops but only one loop at a time can be selected for playing or recording. This is called the active loop. Changing the active loop in a track a track is called loop switching. Loop switching is a complex topic because there are many options available to control when the switch happens and what happens to the new loop after it is activated. Often you will want to use switch quantization to control when the loop switch will happen relative to the loop that is currently playing. This is important if you want to maintain a steady rhythm, for example letting the current loop play to the end before switching. If the next loop is empty you will often want to automatically begin recording into it, or copy portions of the current loop into it so you can begin creating variations. One of the most common uses for loop switching is to record "song parts" such as verse A in loop 1, verse B in loop 2, and a chorus in loop 3, then switch between those at rhythmically precise times. You can also use track loops as a primitive sample player where each loop contains a different sound that when triggered plays from beginning to end and then stops. The following functions will do some form of loop switch.

Next Loop Previous Loop Sustain Next Loop Sustain Previous Loop Loop 1 Loop 2 Loop 3 Loop 4 Loop 5

Loop 6 Loop 7 Loop 8 Restart Restart Once

The Next Loop function will activate the next loop in the track. If the last loop is currently active, Next Loop will wrap back around and activate the first loop. The Previous Loop function works in the opposite direction, activating the previous loop. If the first loop is currently active Previous Loop wraps and activates the last loop. The Sustain Next Loop and Sustain Previous Loop functions must be bound to a sustainable trigger . If they are not, they behave the same as Next Loop and Previous Loop. The sustain functions will switch to the new loop while the function button is held down, then they return to the original loop when the function button is released. Note that you can get sustain behavior with other loop switching functions by setting the Switch Duration parameter. The Restart function starts the current loop over from the beginning. It may not sound like this would be a loop switch but it behaves like a switch away from and then immediately back to the current loop. The RestartOnce function restarts the current loop, lets it play to the end and then automatically enters Mute mode. The numbered Loop functions switch directly to the numbered loop. If that loop is already selected these functions behave the same as Restart.

17.1 Switch Quantize


If you want to maintain a steady rhythm as you switch between loops you will usually want to use some form of switch quantization to make the switch happen at an exact time. Switch quantization is not controlled by the Quantize parameter like most functions. Instead there is a dedicated parameter named Switch Quantize that is used for all loop switch functions. This parameter may have the following values.

Off Subcycle Cycle Loop Confirm Confirm Subcycle Confirm Cycle Confirm Loop

When the value is Off the switch will happen immediately when you press the function button. When the value is Subcycle, Cycle or Loop the switch will be delayed until the next quantization point. You will see a white event marker under the loop meter showing when the switch will happen and the loop will enter Switch mode. When one of the four Confirm values is selected, an extra confirmation action will be required before the loop switch will happen. After you use any of the loop switch

functions, the current loop will first enter Confirm mode and wait there indefinitely. You must then execute the Confirm function to confirm the switch. See the Switch Confirmation section for other confirmation options. What happens after the confirmation action depends on which Switch Quantize parameter value was selected. If the value was Confirm the switch will happen immediately. If the value was Confirm Subcycle, Confirm Cycle, or Confirm Loop the loop enters Switch mode and waits for the next quantization point before switching. Note that while you in either Confirm or Switch mode many functions will behave differently than they normally do. This is sometimes referred to as the "switch quantization period" and by some older EDP users as "lame duck period". This is described in detail later in the Switch and Confirm Modes section.

17.2 Switch Confirmation


If you have Switch Quantize set to any of values beginning with the word "Confirm" you must execute another function to cancel the confirmation mode and proceed with the loop switch. The default function for canceling confirmation mode is Confirm. This function has no other use besides switch confirmation. If you try to execute it when the loop is not in Confirm mode it will have no effect. You may not want to assign one of the precious buttons on your foot controller to the Confirm function since it is normally useless. It is possible to select other functions that will behave as a switch confirmation action by setting the global parameter Switch Confirmation Functions. In the Global Parameters window, select the Functions tab and locate the item selector labeled Switch Confirmation Functions. Select the functions you want to use for confirmation and move them to the right. If you are familiar with the EDP, you may want to use the Undo function for confirmation since that is the only way to do switch confirmation on the EDP. We here at the labs don't like using Undo for confirmation because it makes it impossible to cancel the loop switch or remove "stacked" functions. We recommend one of the following functions that are often assigned to a footswitch button but are not often used during the switch quantization period.

Realign Redo Replace Reset Restart Reverse Speed Substitute

17.3 Switch and Confirm Modes


While a loop is in Confirm or Switch modes many functions will behave differently than they normally do. This is sometimes referred to as the "switch quantization period" or by some older uses as the "lame duck period".

Most functions you execute will simply be delayed until after the switch. This is called function stacking. In the user interface, you will see the function names stacking under the loop switch event marker. This can be used to queue up interesting combinations of functions and have them all execute exactly at the same time after the switch. For example, putting the next loop into Reverse, Speed Toggle, and Substitute modes all at once. Until the switch occurs you can use Undo to remove stacked functions if you trigger the wrong one or decide you don't want it. Once you have removed all the stacked functions and you are left with only the switch event marker, using Undo will cancel the switch and leave you in the current loop. NOTE: The EDP uses Undo as the switch confirmation action. If you like this and have Undo set in the Switch Confirmation Functions global parameter, then you will not be able to use Undo to undo the stacked functions and cancel the switch when you are in Confirm mode. You can however use Undo normally while in Switch mode. A few functions have special behavior when executed during the switch quantization period.

Record - forces the next loop to be rerecorded, even if it is not empty Overdub - performs a Sound Copy if the next loop is empty Multiply - performs a Sound Copy if the next loop is empty Insert - performs a Time Copy if the next loop is empty

A Sound Copy creates an instant copy of the original loop in the next loop. A Time Copy creates a clear loop of the same size as the original loop, but does not copy over any of the audio content. Both of these concepts are described in more detail later. The difference between Overdub and Multiply is what mode the loop will be left on after the sound copy. When Overdub was stacked, the loop will always be left in Overdub mode if a sound copy occurred. If Multiply was stacked the loop will be left in the mode specified by the Sound Copy Mode preset parameter.

17.4 Empty Loop Action


If you switch to a loop that is empty, the Empty Loop Action parameter will be used to determine what happens after the switch. The possible values for Empty Loop Action are:

None Record Copy Copy Timing

When set to None, no automatic action will be performed. The loop will be left in Reset mode. When set to Record, the loop will immediately enter Record mode after the switch. You can record as long as you like but you must remember to execute the Record function to end the recording.

When set to Copy a Sound Copy will be made from the original loop into the new loop. When set to Copy Timing a Time Copy will be made from the original loop into the new loop. Copy Timing and less often Copy Sound are very useful because they let you creating synchronized loops that are exactly the same size or an exact multiple of a common factor. See the Loop Copy section of the Mobius Synchronization manual for more information on creating synchronized loops.

17.4.1 Time Copy


When Empty Loop Action is set to Copy Timing and you switch to an empty loop, a new clear loop will be instantly created that is exactly the same size as the previous loop. This is called a Time Copy. Review the Reset, Empty, Clear, and Silent section of the Getting Started manual if you are not sure about the difference between "empty" and "clear". A clear loop has a size and it can be played and modified, it just starts out with no audio content. In addition to copying the size, time copy will also copy the number of cycles. 17.4.1.1 Time Copy Mode When you first switch to a time copied loop, you will be placed in a mode defined by the Time Copy Mode preset parameter. The possible values are:

Play Overdub Multiply Insert

The default value is Insert. When Time Copy Mode is set to Play the copied loop will simply start playing. When set to any of the other values, it behaves as if that function were automatically executed immediately after the copy. You must then remember to execute that function again to cancel that mode. For example, when Time Copy Mode is set to Insert you will immediately begin inserting into copied loop. You must press the button for the Insert function when you are finished. The values available here are the same as those available for Sound Copy Mode. This means you can select Multiply but this is less useful after a time copy because there is no audio content to repeat so Multiply behaves almost the same as Insert. The main reason to use Multiply here is if the source loop had several cycles and you wanted to immediately use "remultiply" to remove some of the cycles from the end. See Shortening The Loop for more information on using the Multiply function to make the loop smaller.

17.4.2 Sound Copy


When Empty Loop Action is set to Copy and you switch to an empty loop, the current loop will be instantly copied to the next loop. This is called a Sound Copy. From the

listener's perspective, they won't know the copy happened, they will still be hearing the original loop. You may now begin changing the copied loop using Overdub, Multiply or any other function. When you are finished modifying the copied loop you can use the same technique to create another loop, or you may switch back to the original loop. 17.4.2.1 Sound Copy Mode When you first switch to a copied loop, you will be placed in a mode defined by the Sound Copy Mode preset parameter. The possible values are:

Play Overdub Multiply Insert

The default value is Multiply. When Sound Copy Mode is set to Play the copied loop will simply start playing. When set to any of the other values, it behaves as if that function were automatically executed immediately after the copy. You must then remember to execute that function again to cancel that mode. For example, when Sound Copy Mode is set to Multiply you will immediately begin multiplying the copied loop. You must press the button for the Multiply function when you are finished multiplying. Some people find it convenient to assign the Play function to a button. Play is like a universal mode canceling function, if you are in any recording mode (Record, Multiply, Insert etc.) pressing Play will cancel that mode and return you to Play mode. So after you have performed a loop copy you don't need to think about Sound Copy Mode and execute the corresponding function to end the mode, just use Play and it will cancel whatever mode you are in.

17.5 Switch Location


The Switch Location parameter determines where the playback position will be after you switch to another loop. The possible values are:

Follow - keep the same location you had in the previous loop Restore - restore the location the new loop had the last time it was playing Start - start the new loop from the beginning Random - move to a randomly chosen subcycle

When using Follow, if the new loop is smaller than the current loop the playback position may need to be "wrapped" so that it fits within the new loop. For example if the current loop is 6 seconds long and you are currently at the start of second 5, then you switch to a loop that is 3 seconds long, the new loop location will be at the start of second 2. When using Restore, if the new loop has never been played the location will be at the start. If you are using one of the methods to perform a sound copy or a timing copy (see Empty Loop Action) then the location will not be restored.

Switch Location only applies if the loop is not empty (in Reset mode). If the loop is empty then the new location will always be at frame zero of the empty loop.

17.6 Switch Duration


The Switch Duration parameter determines how long you will stay in the new loop after a switch. This parameter is used by all switch functions except Sustain Next Loop, Sustain Previous Loop, Restart, and Restart Once. The possible values are:

Permanent - stay in the new loop until it is manually changed Once - play the new loop until the end, then automatically enter Mute mode Once Return - play the new loop until the end, then automatically return to the previous loop Sustain - play the new loop for as long as the function button is held down, then it automatically enter Mute mode Sustain Return - play the new loop for as long as the function button is held down, then return to the previous loop

The most common option is Permanent, you remain in the new loop until you change it with another loop switch function. The Once option when combined with a Switch Location value of Start makes the loop triggering functions behave similar to a sampler. The loop always starts playing from the beginning, plays once, then stops (enters mute mode). The Sustain option must be used with a switch function bound to a sustainable trigger . If you use a non-sustainable trigger then this will behave the same as Permanent, you will remain in the new loop but it will not enter Mute mode automatically. The Sustain Return option must also be used with a switch function bound to a sustainable trigger . If you use a non-sustainable trigger then this will behave the same as Permanent. Note that when Switch Duration is set to Sustain Return the Next Loop function behaves the same as the Sustain Next Loop function. Sustain Next Loop, and Sustain Previous Loop will always return to the original loop when the sustain ends. They ignore the Switch Duration parameter. The Restart and Restart Once functions ignore the Switch Duration parameter. Restart always behaves as if Switch Duration was set to Permanent and Restart Once always behaves as if Switch Duration was set to Once.

17.7 Return Location


If you switch to a loop with the Switch Duration parameter set to Once Return or Sustain Return you will eventually be automatically returned to the original loop unless you cancel the return. The Return Location parameter determines where you will begin playing in the original loop. The possible values are the same as the values for the Switch Location parameter.

Follow - keep the same location you have in the current loop Restore - restore the location the original loop had the last time it was playing

Start - start the original loop from the beginning Random - move to a randomly chosen subcycle

When using Follow, if the original loop is smaller than the current loop the playback position may need to be "wrapped" so that it fits within the new loop. For example if the current loop is 6 seconds long and you are currently at the start of second 5, then you return to a loop that is 3 seconds long, the new loop location will be at the start of second 2.

17.8 Switch State Transfer


When you execute any of the loop switch functions, you can choose to have some of the current loop modes carried over to the next loop. This is controlled with a set of "transfer mode" preset parameters found under the Loop Switch tab.

17.8.1 Record Transfer


The Record Transfer parameter determines whether the Record major mode will be carried over from the current loop to the next loop. It has these possible values.

Off - Record is not transferred Follow - Record is transferred

When this parameter is set to Follow, if the current loop is in Record mode, after the switch the next loop will also automatically enter Record mode. Note that this will happen whether or not the next loop is empty. This option is useful if you want to record a set of loops all at once without stopping. Start by executing the Record function to record the first loop. Then execute the Next Loop function to end the current recoding and immediately begin recording the next loop. When this parameter is set to Off and the current loop is in Record mode, executing a switch function will finish the recording of the current loop then switch to the next loop. If the next loop is not empty it will simply start playing. If the next loop is empty the Empty Loop Action parameter controls what will happen.

17.8.2 Overdub Transfer


The Overdub Transfer parameter determines whether the Overdub minor mode will be carried over from the current loop to the next loop. It has these possible values.

Off - Overdub will be forced off in the next loop Follow - Overdub will be carried over from the current loop to the next loop Restore - Overdub will be restored to the state it had the last time the next loop was active

The default value is Off. If you like to leave overdub mode on all the time and control overdubbing by muting your instrument you may want to set this to Follow so you don't have to reactivate overdub every time you switch loops. Setting this to Restore is relatively unusual because you usually care more about what the overdub state is now, not what it was in the past.

17.8.3 Reverse Transfer


The Reverse Transfer parameter determines whether the Reverse minor will be carried over from the current loop to the next loop. It has these possible values.

Off - Reverse will be forced off in the next loop Follow - Reverse will be carried over from the current loop to the next loop Restore - Reverse will be restored to the state it had the last time the next loop was active

The default value is Off. If you think of reverse as a "global" option that should apply to all loops in a track then set this parameter to Follow. Setting this to Restore may be interesting if you want to have some loops that always play forward and some that always play in reverse.

17.8.4 Speed Transfer


The Speed Transfer parameter determines whether the various speed related minor modes will be carried over from the current loop to the next loop. This applies to shift applied by all of the Speed functions as the speed controls. It has these possible values.

Off - Speed shift will be off in the next loop Follow - Speed shift will be carried over from the current loop to the next loop Restore - Speed shift will be restored to the state it had the last time the next loop was active

The default value is Off. If you think of speed shift as a "global" option that should apply to all loops in a track then set this parameter to Follow. Setting this to Restore may be interesting if you want to have loops that always play at different speeds.

17.8.5 Pitch Transfer


The Pitch Transfer parameter determines whether the various Pitch related minor modes will be carried over from the current loop to the next loop. It has these possible values.

Off - Pitch shift will be off in the next loop Follow - Pitch shift will be carried over from the current loop to the next loop Restore - Pitch shift will be restored to the state it had the last time the next loop was active

The default value is Off. If you think of pitch shift as a "global" option that should apply to all loops in a track then set this parameter to Follow. Setting this to Restore may be interesting if you want to have loops that always play with different amounts of pitch shift.

17.9 Switch Velocity Sensitive

The Switch Velocity Sensitive parameter can be used to automatically adjust the track output level during a loop switch. This can only be used if the loop switch function is bound to a MIDI Note message that can carry velocity information. When this parameter is checked, the output level of the track will be set to the velocity value of the MIDI note that triggered the loop switch function. If a loop switch function is not bound to a MIDI Note message, then this parameter will be ignored. This is most often used with the 8 numbered Loop X functions bound to adjacent keys on a MIDI keyboard, or to velocity sensitive pads on a control surface. Once loops have been recorded you can then "play" the loops by triggering them from the MIDI device making them softer of louder depending on how hard you hit the key/pad. If you also set the Switch Location parameter to Start and the Switch Duration to Once it will behave like a simple velocity sensitive sample player.

17.10 Restart and Restart Once


The Restart and Restart Once functions are considered to be loop switch functions but they are unusual because they do not change the loop. They always restart the current loop from the beginning and stay in the current loop. They will obey the Switch Quantize parameter so that you can stack functions to be executed after the restart. But they ignore the Switch Location and Switch Duration parameters. Since the loop does not change all of the Switch State Transfer parameters are also ignored.

18 Changing Playback Position 19 Changing The Start Point 20 Loop Windowing


Loop Windowing is a mode that allows you to move backwards and forwards within the loop history and play sections of the loop at that time. It is somewhat like Undo and Redo but with more control over the position and size of the new loop. Think of all the loop layers as being connected in a single length of recording tape, then being able to instantly rewind to any position within that tape and play a section of any length. This "window" into the loop history can then be adjusted by sliding it forward and backward, and the starting and ending edges of the window can be adjusted independently to fine tune the size of the window. Windowing can be unpredictable and well suited for "glitch" looping, but with careful use of quantization and the windowing parameters you can also create interesting rhythms that maintain a consistent tempo. There are six functions that can be bound to phyiscal controllers to change the window position and size.

Window Backward Window Forward Window Start Backward

Window Start Forward Window End Backward Window End Forward

In addition there are two functions that may be used in scripts for even more control over the window.

WindowMove WindowResize

The following preset parameters control how the window is moved and sized.

Window Slide Unit Window Slide Amount Window Edge Unit Window Edge Amount

Though it is not required, loop windowing is usually performed after doing an "unrounded multiply" or a "remultiply" to cut the loop down to a shorter length. Unrounded multiply is the Multiply function followed by the Record function which can cut out a section of any size. Remultiply is Multiply followed by another Multiply within a loop that has more than one cycle to cut out a section that is exactly some number of cycles. Other functions that reduce the size of the loop include Divide, Trim Start, and Trim End. Once the loop length has been reduced, you then start by using the Window Backward function one or more times. With the default parameters you will move backward an amount equal to the current loop length. If you have not changed the length of the loop, the effect will be similar to using Undo, you simply move backward in the loop history one layer at a time. But if you have shortened the loop, you will be playing subsections of layers, or sections from different layers as you move the window. After you have moved the window backward, you can use the Loop Window Forward function to move it in the other direction, up until you return to the most recent loop. The effect is similar to Redo but you are not limited by layer boundaries. The amount of time the window is moved forward or backward is controlled by the Window Slide Unit and Window Edge Amount preset parameters. Window Edge Amount is a positive number and Window Slide Unit may have the following values:

Loop Cycle Subcycle Millisecond Frame

The default value is Loop which means you slide the window by the current length of the loop. Setting this to Cycle or more often Subcycle lets you slide the loop by smaller amounts but still maintaining an exact mathemetical relationship to the original loop. The Millisecond and Frame units give you more control over the length of the slide, but since the values may not be musically related to the original loop these are best used for unpredictable "glitch" looping.

The Window Slide Amount parameter is usually left at 1 for Loop, Cycle, and Subcycle units. This value is a unit multiplier so with a unit of Subcycle and an amount of 4 you will slide forward or backward by 4 subcycles. For the Millisecond unit, the Window Slide Amount is the a number of milliseconds, so 1000 would slide the window forward and backward by 1 second. For the Frame unit, the slide amount is the number of frames, which are pairs of stereo samples. Determining the length of the slide in frames depends on your sample rate selection in the Audio Devices window. With the default sample rate, entering 44100 as the amount would result in a slide of 1 second. Sometimes after sliding a window, you may want to add or remove a little from the start or end of the new loop. The Window Start Backward and Window Start Forward funtions move the start of the window without changing the end, and the Window End Backward and Window End Forward change the end of the window without changing the start. The amount the window is resized is controlled by the Window Edge Unit and Window Edge Amount preset parameters. Window Edge Amount is a positive number and Window Edge Unit has the same values as Window Slide Unit. The default value for Window Edge Unit is Subcycle which is useful for creating loops that maintain remain at the original tempo. Millisecond or Frame can be used to fine tune the window edges. You can use the windowing functions in any combination, for example sliding the window backward, changing the starting and ending edges, then sliding the modified window forward. When you reach the beginning or ending of the loop history, it may not be possible to change the loop by the selected unit. For example if you are at loop frame 10,000 and a subcycle is 20,000 frames long and you then use the Widow Backward function with a Window Slide Unit of Subcycle you cannot move backward 20,000 frames. The slide will be limited to what is available, 10,000 frames. This may mean that when you reach either end of the loop history, the window position may shift so that when you slide in the opposite direction you won't be playing exactly the same windows that were playing when you were sliding toward the history edge.

20.1 Window Mode


Once you use any of the loop windowing functions, a new layer is created called the "window layer". Any modification you have made to the current layer are lost. For example, if you are in the middle of the loop and Overdub mode was on, the last overdub will be discarded and will not be part of the loop history. The window layer differs from other layers in that it can be changed by the windowing functions without creating a new layer for each change. You could slide the window forward and backward 100 times, but there will still be only one window layer. While a window layer is active, you are in the Window minor mode. The word "Window" will appear in the Minor Modes display component if you have it enabled. The Loop Window display component will also appear to show you a graphical representation of the loop history and the position of the window within it. If you are upgrading from an earlier release, the Loop Window component will not be enabled, you will need to use the Display Components dialog and add it to the Components list at the top. If you decide you no longer want the window layer, use Undo to cancel Window mode and return you to the previous normal layer. If you have selected a window that

you would like to keep, you may simply keep playing the window or begin modifying it with other functions such as Overdub and Multiply. If you make changes to the window layer and you let it play to the end without using any of the windowing functions, then the window layer is added to the loop history and you exit Window mode. It is important to understand the relationship between Window mode and the Feedback control. If you have reduced Feedback you are making a change to the layer being played. You are recording a new layer containing the layer being played at a reduced level. If you are in Window mode with Feedback lowered and you let the window layer play to the end, the window layer will be added to the history and you will exit Window mode. This can make it difficult to position the window if the window is short. The window will quickly play to the end and cancel Window mode before you have a chance to slide the window to the desired location. For this reason it is recommended that you do not leave Feedback lowered or be in Overdub mode when you use windowing functions.

20.2 Scripting Windows


The loop window may be controlled from scripts using the WindowMove and WindowResize functions. These functions will not appear in the binding windows, they are only available in scripts. The location and size of the window is specified with function arguments. This is described in more detail in the Loop Windowing section of the Mobius Scripting manual.

21 Long Presses 22 Managing Tracks 23 Bounce Recording


The Bounce 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 speed shifting. Mobius is recording the entire process. Bounce recording can be especially useful with the Restart, Speed Shift and Pitch Shift functions. Once a loop is created, you can play a chord progression using Speed 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 bounce 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.

24 Capturing a Performance 25 Sending MIDI Messages 26 Host Control With MIDI Loopback Devices

Mobius Synchronization
March 2012

Contents
1 2 2.1 2.2 2.3 2.4 3 3.1 3.2 3.3 3.4 4 4.1 4.1.1 4.1.2 4.2 5 5.1 6 6.1 6.2 6.3 6.4 7 7.1 7.2 8 8.1 8.2 8.3 8.4 9 9.1 9.2 Introduction Concepts Start Point and End Point Reset, Empty, Clear, and Silent Related Sizes Cycles and Subcycles Loop Copy Empty Loop Action = Record Empty Loop Action = Copy Sound Empty Loop Action = Copy Timing Other Ways To Copy Loops Track Copy Empty Track Action Empty Track Action = Copy Sound Empty Track Action = Copy Timing Track Copy Functions Synchronization Parameters Sync Source Track Sync Track Sync Master Track Sync Unit Track Sync Example Changing the Track Sync Master Track Host Sync Synchronizing Stop Recommended Track Configurations MIDI Slave Sync Configuring MIDI Devices for Slave Sync Configuring the MIDI Sync Source Using MIDI Slave Sync Recommended Track Configurations MIDI Master Sync Configuring MIDI Devices for Master Sync Configuring MIDI Master Sync Source

9.3 Recommended Track Configurations 9.4 MIDI Master Sync Parameters 9.5 Out Sync Manual Start 9.6 Calculating The Tempo 9.7 Adjusting The Tempo 9.7.1 Out Sync Speed Adjust 9.7.2 Out Sync Resize Adjust 9.8 Changing the MIDI Sync Master Track 9.9 Controlling Plugin Host Tempo 9.10 Mute and Pause during MIDI Master Sync 10 Drift, Dealign and Realign 10.1 The External Loop 10.2 Drift Correction 10.2.1 Drift Resync Frames 10.2.2 Drift Correction and Track Sync 10.3 Realign 10.3.1 Realign with Track Sync 10.3.2 Realign with MIDI Master Sync 10.3.2.1 Out Sync Realign Action = Send MIDI Start 10.3.3 Realign Alternatives - MIDI Start and Mute MIDI Start 10.3.4 Realign Alternatives - Sync Start Point

1 Introduction
Unless you intend to record only one loop into one track, you will eventually be faced with the problem of synchronization. At a high level, synchronization is the creation of multiple loops and tracks that will play with a consistent rhythm without drifting apart. If you like to record "ambient" loops you may not need synchronization, but most users will eventually need some form of synchronization. There are three techniques for creating synchronized loops:

Loop Copy - copying some or all of a loop from one location to another Synchronized Recording - creating a new live recording whose size is controlled by another loop MIDI Clock Generation - controlling the tempo of loops in another device such as a drum machine with MIDI clocks

Loop Copy instantly copies one loop to another. The target loop can be in the same track or a different track. Since the loops are exactly the same size or have Related Sizes they will play together without drifting apart. Synchronized Recording involves adjusting the beginning and ending of a new loop recording so that the finished loop has a size that is exactly related to another loop. There are three ways to make synchronized recordings: track sync, host sync, and MIDI slave sync. With track sync, recording will be synchronized to the playback location of another track. With host sync, recording is synchronized with beat or bar

pulses from the transport running in the plugin host application. With MIDI slave sync, recording is synchronized to beat or bar pulses coming from an external MIDI clock. All of these are sometimes referred to as forms of slave sync since you are letting another loop or clock source determine the length of a recording. MIDI Clock Generation is a form of synchronization that causes MIDI clocks to be sent out at a tempo that is calculated from the length of one of the Mobius tracks. Devices following this MIDI clock will then play in sync with the loop in the Mobius track. Here the loop you are synchronizing isn't inside Mobius, it is being played by another device such as a drum machine or sequencer. This is sometimes referred to as master sync since Mobius is controlling another device. Each of these techniques will be discussed in more detail in later sections. But first it is important to understand a few concepts described in the next section. Be sure to read Concepts before jumping to the other sections.

2 Concepts
2.1 Start Point and End Point
You can think of the Start Point as simply the beginning of a loop. The loop normally plays from the start point to the end and then repeats. We also use the confusing term End Point. You can almost always think of the start point and the end point as being the same thing. It is that moment in time after the last sample of the loop has played and before we have gone back to playing the first sample in the loop. If you get deeper into Mobius scripting you will find that there are actually some subtle differences between start point and end point, but you do not need to be concerned about that to understand synchronization.

2.2 Reset, Empty, Clear, and Silent


There are two important states that a loop can be in but the terms used to describe those states are sometimes used inconsistently in the forums and even in the documentation. Usually it is clear from the context what the meaning is, but here we will give precise definitions for these terms. When you first start Mobius, all loops are in a state called Reset. The loops contain nothing, they cannot be played or manipulated in any way until you record something into them. While the official term for this is Reset we sometimes use the term Empty to mean the same thing. An empty loop contains nothing. When you use certain features like Empty Loop Action or Empty Track Action, loops can be created that have a size but they do not contain any audible content. Loops in this state are said to be Clear or Silent. The problem word is Empty. It is common to think of a silent loop as empty but technically this is not correct. The loop is not empty, it can play and be operated upon just like any other loop. It just doesn't have anything audible in it.

2.3 Related Sizes

When we say that two loops have a related size it means that their sizes have an exact mathematical relationship that will allow them to play together consistently forever. In the simplest case two loops may be exactly the same size. But if one loop is exactly twice as long as another the sizes are still related and they will play consistently. The smaller loop will play twice each time the larger loop plays and this pattern will continue forever. In mathematical terms, loops with related sizes have a common factor. There is some fraction of the loop that can be multiplied to equal the size of all of the related loops. For example, assume we have three loops, one is 2 seconds long, one is 4 seconds long, and one is 8 seconds long. Although the loops are not the same size, they will play together consistently because they share a common factor of 2 seconds. When the 8 second loop plays once the 4 second loop will have played exactly twice and the 2 second loop will have played exactly 4 times. This pattern will repeat consistently forever. Now assume we have a loop that is 2 seconds long and one that is 3 seconds long. These loops also have a related size, the common factor is 1 second. What is interesting about this relationship is that when the 3 second loop is finished playing for the first time the 2 second loop will have repeated once and will be in the middle. The next time the 3 second loop plays it will sound different because the 2 second loop is starting from a different location. When the 3 second loop finishes playing a second time, the 2 second loop will be at its start point again. This pattern will continue consistently forever. The set of loops in the first example (2, 4, and 8 seconds) were all even multiples of the common factor of 2 seconds. Each time the longest loop plays the combination will sound the same. The set of loops in the second example (1, and 3 seconds) were not even multiples of the common factor of 1 second. The second time the 3 second loop plays it will not sound the same as the first time it played because the two loops are out of phase. If you have a set of loops that are not all even multiples of the common factor it may take many plays of the longest loop before they are all once again in phase. This can be used to create interesting polyrhythms. You can also create a set of loops that when played together result in complex evolving patterns that continue to change over a long period of time. You can also create a bunch of unlistenable noise.

2.4 Cycles and Subcycles


When you record a loop for the first time it will have one cycle. You add cycles to a loop by using functions such as Multiply and Insert. The easiest way to add cycles is by using the Instant Multiply 2 function, each time you use this function the loop is copied and appended to the end of itself, and the number of cycles is doubled. The cycle count is the number of times the original loop has been multiplied. For example, record a loop about 2 seconds long, then execute the Instant Multiply 2 function. The loop will now be 4 seconds long and contain 2 cycles. From the listener's perspective nothing has changed, they continue to hear the original loop repeating over and over. But structurally the loop has changed, it now contains two copies of the original loop. One use for this technique is to record a short loop representing a measure or two of a rhythmic pattern. Then multiply this loop by 4 or 8

to create a longer loop with several repetitions of the pattern. Finally use the Overdub function to record a long bass line over the repeating rhythm pattern. A subcycle is simply a division of a cycle. It is defined by the Subcycles preset parameter which defaults to 4. When a loop is first recorded it will have one cycle and 4 subcycles which you can see as white tick marks under the loop meter. The number of cycles in a loop will stay the same until you change the loop length with functions like Multiply. But you can change the number of subcycles at any time just by changing the Subcycles parameter. Changing the number of subcycles does not modify the loop in any way, it simply changes the number of tick marks under the loop meter. Often the number of subcycles is chosen so that they represent "beats" in the time signature of the loop. For example if you record a loop representing two measures of music in 4/4 time, then set Subcycles to 8, each subcycle will be the same length as one quarter note. Subcycles can also represent larger units of music. If you record a loop containing an entire 12-bar blues chord progression, then set the Subcycles parameter to 12, each subcycle will represent one measure of music. Cycles and subcycles are important for quantization. You can make functions execute exactly on a cycle or subcycle boundary which is useful for rhythmic effects and also for track synchronization.

3 Loop Copy
The simplest form of synchronization is to create several loops in one track whose sizes are either the same, or multiples of a common factor. For example the first loop may represent 2 bars of music, the second loop 4 bars, and the third 8 bars. Though the loops aren't the same size, they are all multiples of a bar so you can switch among them without changing the perceived tempo. When you switch from one loop to another, there are many automated actions that can be taken when the switch occurs. If the next loop is empty, by default the track simply halts and sits in Reset mode waiting for you to do something. You can now use the Record function and attempt to record another loop that is rhythmically related to the first loop, but without some fancy footwork there will always be a little delay from when the switch happens till you get around to pressing the Record button. This disrupts the rhythm and is usually noticeable to the listener. To maintain a consistent rhythm, you need the recording of the next loop to begin immediately and automatically after the switch happens. Luckily there are several ways to do that which we'll discuss later. Another problem synchronizing loops is controlling when the loop switch happens. By default, the switch happens immediately so you need to be careful to press the footswitch (or whatever trigger device you are using) at exactly the right time. If you have good footswitch technique this may work for you but many people find it easier to have Mobius automatically switch loops when the loop reaches an interesting synchronization point. This is called switch quantization. Switch quantization is controlled by the Switch Quantize preset parameter which may have these values:

Switch Quantize For a thorough discussion of switch quantization see Loop Switching . For the purpose of creating new synchronized loops the most common values are Loop and Cycle. When Switch Quantize is set to Loop, the switch will be delayed until the current loop plays to the end and wraps back around to it's Start Point. All you need to do is execute the loop switch function any time before the end of the loop and Mobius will enter Switch Quantize mode. At the exact moment the loop reaches the start point, Mobius will automatically perform the loop switch. If you have used one of the Multiply functions to create a loop with more than one cycle, you may wish to set Loop Quantize to Cycle instead. Mobius will wait until the end of the current cycle and then switch. If the loop has only one cycle, then this will behave the same as setting Switch Quantize to Loop. Now that we know how to switch loops at exactly the right time, we'll discuss what happens after the switch. As mentioned earlier, if you switch to an empty loop the default behavior is for Mobius to just sit there in Reset mode waiting for you to do something. If you keep playing your instrument you can give the audience something to listen to for awhile and then use the Record function when you're ready to record the next loop. This can work fine if your timing is very good, but recording synchronized loops is easier if you use the Empty Loop Action preset parameter.

Empty Loop Action

3.1 Empty Loop Action = Record


When Empty Loop Action is set to Record, the Record function will begin automatically whenever you switch to an empty loop. This can help you maintain a consistent rhythm, you won't have to fill for a few bars before you manually start recording the new loop, recording begins immediately after the switch. The only thing you need to remember to do is press the Record button when you are done recording. If you have a good sense of time, you can create several loops using this technique that are very close to the same size. But it is almost impossible for humans to make loops exactly the same size, they will always be off by a few milliseconds or more. Depending on the style of music you perform, this may not be noticeable. But if you want the most accurate timing possible, you will need to use some form of loop copy described in the next two sections.

3.2 Empty Loop Action = Copy Sound


When Empty Loop Action is set to Copy Sound and you switch to an empty loop, the current loop will be instantly copied to the next loop. This is called a Sound Copy. From the listener's perspective, they won't know the copy happened, they will still be hearing the original loop.

You may now begin changing the copied loop using Overdub, Multiply or any other function. When you are finished modifying the copied loop you can use the same technique to create another loop, or you may switch back to the original loop. When you first switch to a copied loop, you will be placed in a mode defined by the Sound Copy Mode preset parameter. The possible values are:

Play Overdub Multiply Insert

The default value is Play. When Sound Copy Mode is set to Play the copied loop will simply start playing. When set to any of the other values, it behaves as if that function were automatically executed immediately after the copy. If you know you want to immediately begin overdubbing into the copied loop set the parameter to Overdub or Multiply>. Insert is less common, you will immediately begin the insertion of a new empty cycle so the listener will not hear the copied loop until you end the insert. If you set this parameter to Overdub, Multiply, or Insert, you must then remember to execute that function again to cancel that mode. For example, when Sound Copy Mode is set to Multiply you will immediately begin multiplying the copied loop. You must press the button for the Multiply function when you are finished multiplying. Some people find it convenient to assign the Play function to a button. Play is like a universal mode canceling function, if you are in any recording mode (Record, Multiply, Insert etc.) pressing Play will cancel that mode and return you to Play mode. So after you have performed a loop copy you don't need to think about Sound Copy Mode and execute the corresponding function to end the mode, just use Play and it will cancel whatever mode you are in.

3.3 Empty Loop Action = Copy Timing


When Empty Loop Action is set to Copy Timing and you switch to an empty loop, a new clear loop will be instantly created that is exactly the same size as the previous loop. This is called a Time Copy. Review the Reset, Empty, Clear, and Silent section of the Getting Started manual if you are not sure about the difference between "empty" and "clear". A clear loop has a size and it can be played and modified, it just starts out with no audio content. In addition to copying the size, time copy will also copy the number of cycles. When you first switch to a time copied loop, you will be placed in a mode defined by the Time Copy Mode preset parameter. The possible values are:

Play Overdub Multiply Insert

The default value is Play.

This parameter has the same possible values as Sound Copy Mode described in the Empty Loop Action = Copy Sound section. You can select Multiply but this is less useful here because there is no audio content to repeat so it behaves almost the same as Insert. The main reason to use Multiply here is if the source loop had several cycles and you wanted to immediately use "remultiply" to remove some of the cycles from the end. See Resizing Loops for more information on using the Multiply function to make the loop smaller.

3.4 Other Ways To Copy Loops


While setting the Empty Loop Action parameter is a convenient way to create synchronized loops, there are other ways to accomplish the same thing. When you set the Switch Quantize parameter and use one of the loop switching functions, you will see Switch Quantize displayed as the mode in the user interface. Older users of the EDP sometimes refer to this as the "lame duck period". While you are in Switch Quantize mode you may trigger other functions that will "stack" and be executed immediately after the loop switch. Some stacked functions behave normally, Reverse for example is just delayed until after the switch, then you will immediately change direction. A few functions however have special meaning when they are used during Switch Quantize mode:

Record - perform an unconditional Record even if the loop is not empty Overdub - perform a Sound Copy and enter Overdub mode Multiply - perform a Sound Copy Stutter - perform a Sound Copy Insert - perform a Time Copy

Note that the Sound Copy or Time Copy will always happen, even if the next loop is not empty. If Overdub is used you will always end up in Overdub mode. If the Multiply or Stutter is used the ending mode will be determined by the Sound Copy Mode parameter. If Insert is used the ending mode will be determined by the Time Copy Mode parameter. NOTE: This is behavior carried over from the EDP. It is likely to be replaced in a later release with a more flexible way to specify how functions stacked during Switch Quantize mode behave.

4 Track Copy
In the previous section we discussed ways to create synchronized loops by coping one loop into another within the same track. Similar techniques exist for copying loops from one track to another track which can then play at the same time. We refer to this technique as track copy but note that the term is a bit misleading. When we say track copy it sounds like that might mean copying the entire contents of one track into another. But what this actually means is copying a single loop from one track into a single loop of a different track.

4.1 Empty Track Action

Empty Track Action is a preset parameter that can cause the loop playing in the active track to be immediately copied to an empty loop in a different track when that track is selected.

Empty Track Action We first need to clarify what "empty track" means. Tracks contain some number of loops, but only one of these loops can be selected for playing or recording. An empty track is one whose selected loop is empty. The track may contain other loops that are not empty, but if the selected loop is empty, then the track is considered to be empty. To use the Empty Track Action parameter you must select an empty track. This can be done in several ways:

Clicking the mouse over a track in the user interface Using the left or right arrow keys to select the track to the left or right of the current track Executing one of the track selection functions: Next Track, Previous Track, or Track X

If you are familiar with Mobius scripting note that the for statement does not select tracks. This means you can use the for statement to manage tracks without activating the Empty Track Action. It is important to note that selecting a track will never be quantized, it always happens immediately. Quantization is important when you switch loops since you will be changing what is heard, but when you select tracks, you continue to hear what is playing in the original track so it doesn't matter as much when the change happens.

4.1.1 Empty Track Action = Copy Sound


When Empty Track Action is set to Copy Sound and you select an empty track, the current loop in the current track will be instantly copied to the empty loop in the new track. This is a Sound Copy which means that all of the audio content will be copied. This is a relatively unusual option to use for track synchronization since it will change what you hear. To the audience it will sound like the loop you are copying from suddenly became twice as loud since you are now playing two copies the same loop. This mode is usually used only in scripts where in addition to the sound copy you can immediately take other actions like muting the source track, changing the playback rate or direction, or altering the copy with a function like Shuffle. The overall volume level may still increase, but the resulting sound will be more interesting than simply making it louder. When you first switch to a copied loop, you will be placed in a mode defined by the Sound Copy Mode preset parameter. The possible values are: Play, Overdub, Mulitply, and Insert. The default value is Play. See Empty Loop Action = Copy Sound for more information on using Sound Copy Mode

4.1.2 Empty Track Action = Copy Timing

When Empty Track Action is set to Copy Timing and you switch to an empty track, a new clear loop will be instantly created that is exactly the same size as the source loop and will have the same number of cycles. A clear loop has a size and it can be played and modified, but it starts without any audio content. This is the most common value to use with the Empty Track Action parameter because it will not immediately change what is being heard. The new clear loop will begin playing but the audience will not hear any change until you begin modifying the new loop. When you first switch to a copied loop, you will be placed in a mode defined by the Time Copy Mode preset parameter. The possible values are: Play, Overdub, Mulitply, and Insert. The default value is Play. The most common alternative is Overdub. See Empty Loop Action = Copy Timing for more information on using Time Copy Mode

4.2 Track Copy Functions


You can also accomplish sound or timing copies by executing functions. The copy happens immediately when the function is executed. There are two functions Track Copy and Track Copy Timing. The Track Copy function will copy the sound the loop playing in the track to the left of the active track into the active track. The contents of the loop in the active track will be lost and replaced with the copy. If the active track is track number 1, then the copy is taken from the highest numbered track (which is 8 unless you have changed it). The effect is similar to Empty Track Action = Copy Sound except that the active track doesn't have to be empty. The Track Copy Timing function will copy the length of the loop playing in the track to the left but not the sound. The new loop is clear which means that has a length and can be played but it starts with no audible content. The effect is similar to Empty Track Action = Copy Timing except that the active track doesn't have to be empty.

5 Synchronization Parameters
In the remainder of this document we will discuss various forms of synchronized recording. There are several parameters that can be used to control these forms of synchronization, all are defined in the Track Setup. See Track Setups in the Exploring Mobius manual for more information about creating track setups. Bring up the Track Setup configuration window and select the Synchronization tab.

Most of the parameters under the Synchronization tab apply to all tracks. For example when you set Realign Time the same realign time will be used for all tracks. Two of the parameters however can be overridden so that each track may have a different value. The two parameters are Sync Source and Track Sync Unit.

5.1 Sync Source

Each track may have a Sync Source which defines how the track will be synchronized. Often you will want all tracks to have the same sync source, but sometimes you may have tracks that need a different synchronization style. The default sync source for all tracks is set in the Default Sync Source field under the Synchronization tab.

The possible values are:


None - The tracks are not synchronized Track - The tracks synchronize with a master track Out - A master track sends MIDI clocks out, non-master tracks sync with the master track Host - The tracks synchronize with the plugin host MIDI - The tracks synchronize with an incoming MIDI clock

The value selected here will be used by all tracks unless they override it. To override the Default Sync Source parameter select the track under the Tracks tab and set the Sync Source field.

In the previous example the default sync source was MIDI and track 1 has the sync source set to Default. This means that track 1 and all other tracks with sync source Default will be using sync source MIDI. This is the easiest way to make all tracks use the same sync source. Have all tracks set their sync source to Default then you can just change the one parameter Default Sync Source to set the sync source for all tracks. Occasionally though you may want tracks that use different sync sources. For example most tracks would use MIDI to sync with an external drum machine but one track is used for arrhythmic drones and should not sync to MIDI clocks. To override the sync source in selected tracks set the Sync Source parameter to something other than Default.

In the previous example track 8 has Sync Source set to None which will disable the default MIDI sync source.

6 Track Sync
The simplest way to create synchronized tracks is to set the Sync Source parameter to Track. When this is enabled, the Record function will be quantized so that it aligns with divisions of a loop playing in another track. Unlike using Empty Track Action the new loop may be smaller or larger than the other loop. But because the loops will both be multiples of a common factor (such as a beat or measure), they will play in sync.

Sync Source Track

6.1 Track Sync Master


To use track sync, you first record a track freely without synchronization. The first track recorded becomes the track sync master and you will see the words "Track Master" appear above the loop meter. Once the track sync master has been set, other tracks that are recorded will be forced to have a size that is exactly related to the master track. If the master track is reset, the next available track to the right that is not empty is chosen as the new master.

6.2 Track Sync Unit


When enabling track sync, you also must set the Track Sync Unit setup parameter which has these values: Subcycle, Cycle, and Loop. This is one of the synchronization parameters that may be set differently for each track. The default unit is set with the Default Track Sync Unit parameter under the Synchronization tab of the track setup window. Unless you override this the parameter will be used for all tracks.

Default Track Sync Unit To override this value for some tracks, set the Track Sync Unit parameter under the Tracks tab.

Track Sync Unit Override The default is Loop. In this example we have overridden this in track 1 to be Subcycle. When the track sync unit is Loop the starting and ending of a recording will be aligned with the loop start point of the master track. Setting this parameter to Cycle or Subcycle allows you to record synchronized tracks that are shorter than the master track but will still play in sync.

6.3 Track Sync Example


To experiment with track sync, open the preset window, select the Synchronization tab and make sure Empty Track Action is set to None. Then open the track setup window, select the Synchronization tab, and make sure that Default Sync Source is set to Track and Default Track Sync Unit set to Loop. Then select the Tracks tab and make sure that the track you want to use has both Sync Source and Track Sync Unit set to Default. Now record a loop in the master track. Any track can be the master track, it is simply the first one you record a loop into. The word Track Master will be displayed in the Sync Status area near the center of the Mobius window. The loop playing in the

master track is called the master loop. Make the loop at least a few seconds long so you can experiment with Track Sync Unit values. Now select an empty loop in another track. Wait until the master loop is near its midpoint and press Record. You should see the word Synchronize displayed as the mode in the Mobius window. This means that Mobius is waiting until the master loop reaches an interesting synchronization point before beginning the recording. In this case we have set Track Sync Unit to Loop so Mobius will begin recording exactly when the master loop reaches its start point. Wait for the recording to start, then press the Record button again. You will see the words Record Stop with a white triangle pointing to the right underneath the loop meter. This is an event marker that indicates when something will happen as the loop advances.

Normally event markers have a triangle pointing up at the exact location within the loop where the event will happen. When the triangle is on the right edge of the loop meter pointing to the right it means that the event will happen at an unknown time in the future, in this case when the master track reaches its start point. When that happens the recording stops, the event marker is removed, and the new loop enters Play mode. The new loop will have the same number of cycles as the master loop. By setting Track Sync Unit to Cycle or Subcycle you can create loops that are not an exact multiple of the master loop length. Recording will begin and end whenever the master loop reaches a cycle or subcycle boundary. If the master loop only has one cycle, the Cycle sync unit will behave the same as the Loop sync unit. To experiment with this set Default Track Sync Unit to Subcycle and set the Subcycles preset parameter to 4. Record a master loop that represents one measure of music in 4/4 time. Now each subcycle will represent one quarter note "beat" in the master loop. Select an empty loop in another track, wait until the master loop is almost at its start point and press Record. The new track will enter Synchronize mode for a moment then begin recording when the master loop reaches its start point which is also the start of the first subcycle. Let the recording proceed for 6 beats then press Record again slightly after the beginning of the 6th beat. A Record Stop event will appear and the recording will be rounded up to the end of the 6th beat. The resulting loop will be two beats longer than the master loop but its size is still a multiple of the same beat length. It will go in an out of phase with the master loop but will always stay in sync. This can be used to create interesting polyrhythms. When you record a synced loop, we try to keep the same cycle length as the master loop. If Track Sync Unit is set to Loop or Cycle the cycle length in the synced track will always be the same as the cycle length in the master track. Every time the master track reaches a cycle boundary, the cycle count in the synced loop is increased. This is another way to create loops with several cycles. When Track Sync Unit is set to Subcycle we may not be able to keep the same cycle length. If the number of subcycles you record is an even multiple of the Subcycles parameter then we can keep the same cycle length. For example if the Subcycles parameter is 4 and you record 12 subcycles of the master loop, the synced loop will have 3 cycles since 12 divides evenly by 4. But if you had recorded 10 subcycles or

any other number that can't be divided evenly by 4 we cannot maintain the same cycle length. In these cases the synced loop will have only one cycle.

6.4 Changing the Track Sync Master Track


Normally once a track becomes the track sync master it will continue to be the master for the entire performance. In some special cases though you may want to make a different track the master. This can be accomplished in two ways: using the Sync Master Track function or the Reset function. The Sync Master Track function will make the currently selected track the new track sync master. This is the most flexible way to select a sync master track. If you use the Reset function to reset the current track sync master, Mobius will automatically select a new sync master. It will select the first track to the right of the old master track that has a non-empty loop.

7 Host Sync
Host Sync can be used to record Mobius loops that are in sync with something being played by the plugin host application. Typically this is used when you want the host to play pre-recorded background tracks or drum patterns that are then combined with Mobius loops created in real-time. This option is only available when Mobius is running as a plugin in a host that supports the concept of a "transport". Transports usually have buttons like "start", "stop", and "pause", they have a place where you can enter a tempo and a time signature, and while they are running they count off beats and bars. All hosts do this differently. NOTE: Mobius currently does not support host sync in the Audio Units plugin, host sync is only available in the VST plugin. This will be fixed soon. When the host transport is running, it will notify the plugins whenever a the start of a beat or bar is reached. Mobius calls these notifications "pulses". If the transport is not running, Mobius will not be receiving any pulses and it will not be able to record loops. You may need to manually click a "start" button to get the transport started. To use host sync, set the Sync Source parameter to Host, then set the parameter MIDI/Host Sync Unit to either Beat or Bar.

Sync Source Host The Record function will now be quantized so that it starts exactly on a beat or bar pulse from the plugin host. This is a bit like using Track Sync with Default Track Sync Unit set to Cycle or Subcycle. You can record loops that are exact multiples of the host bar length, or you can record loops with an odd number of beats so that the loop goes in and out of phase with the host. Most people set MIDI/Host Sync Unit to Bar. The procedure for creating a host synced loop is usually this: 1. Create an audio or MIDI track in the host application 2. Start the host transport, the host track begins to play

3. In Mobius, use the Record function, recording will be quantized to the next beat or bar of the host transport 4. After the desired amount of loop has been recorded, use the Record function again, the end of the recording if rounded up to the next host beat or bar There are several important points here. First because the start and ending of the recording are being quantized, you need press the button ahead of the beat/bar. If you press the record button right when you hear the beat/bar in the backing track, you may actually be a little bit late which means that recording will be delayed until the next beat/bar. This may take some practice. Always press early, if you try to land right on the beat it will often be too late. Another important point is that the track in the host application will be playing and is normally audible before you ever get around to doing anything with Mobius. Occasionally though you may want the host track and the Mobius loop recording to start at exactly the same time. To do that you have to "arm" Mobius for recording before you start the host's transport. With the transport in the "stop" state, select the loop you want to record and execute the Record function, Mobius will enter Synchronize mode waiting for a pulse from the host. When you are ready click the "start" button in the host transport, the host tracks will begin playing, Mobius will receive a beat/bar pulse and will begin recording. Once Mobius loops have been created it will constantly monitor the pulses coming from the host application to check for drift. If we notice that the Mobius loop has drifted away from the host pulses we will make an instant adjustment to the playback position to bring it back into alignment. For example, if a host synced loop was recorded with 4 bar pulses, every time we receive 4 pulses we check the Mobius loop position and expect it to be at its start point. If instead the loop is a little before or after the start point this may indicate that drift has occurred. If this keeps getting worse we make a drift correction. Usually this is not a problem for host sync unless the host is doing a bad job sending beat/bar pulses. What can cause problems though is changing the host transport tempo after the Mobius loop has been recorded. We will start seeing beat/bar pulses come in at a different rate, they will never match the loop playback position and we will keep jumping around trying to bring the Mobius loop back in sync with the transport. This can be done on purpose to achieve a "glitchy" effect but it is usually not what you want. Once you have recorded host synced loops in Mobius you should never change the host transport tempo. See the section Drift Correction for more information on how we compensate for drift.

7.1 Synchronizing Stop


It is important to note that Mobius does not respond when you stop the host transport. It will continue merrily along playing loops while the host tracks become silent. This will be addressed in a future release, but until then if you want to stop the host tracks and the Mobius loops at the same time you will need to use one of the following techniques. The easiest thing may be to simply arrange your performance so that you don't have to stop both the host and Mobius tracks at the same time. First do a Global Reset or Global Pause in Mobius to make it silent, then let the host backing tracks play a little, maybe with a fade out, then stop the host transport. Or stop the host transport first

and let the Mobius loops play a little longer, maybe using feedback or a fade script to let the loops decay gradually. If it is important that you silence the host tracks and the Mobius tracks at exactly the same time, one of these techniques must be used.

Program the host and Mobius so that they respond to the same MIDI message Program the MIDI controller so that it sends two messages, one for the host and the other for Mobius Execute a Mobius script that stops the host transport using a MIDI "loopback" device

Unfortunately, none of these are very easy to set up. In the first case you would select a MIDI message like NOTE 32 and program the host so that it stops the transport when it receives this note, then in Mobius bind this note to the Global Pause function. The problem with this approach is that most hosts will not pass MIDI messages to the plugins if they use them for their own control. The host might pass NOTE 33 but it knows that NOTE 32 is used to stop its own transport and assumes that the plugins will not be interested in the note. The problem with hosts not passing MIDI messages can be avoided if you have a MIDI controller that is capable of sending different MIDI messages for the same button. Program the device to send one message like NOTE 32 to stop the host transport and NOTE 33 to do a Global Pause in Mobius. As long as the note numbers are different, the host will pass the ones it doesn't use to the plugins. Unfortunately not many inexpensive MIDI controllers can send multiple notes from the same button. It may be possible however to simply press two buttons at nearly the same time. Either the host or Mobius may stop a few milliseconds before the other, but it may not be noticeable. The final option is the most complex but also the most flexible. Here, you bind a MIDI message to run a Mobius script. The script first does a GlobalPause to silence Mobius, then it uses the MidiOut script function to send a MIDI message to the MIDI device configured in the Plugin Output Devices panel of the MIDI Control window. The device selected must be a "loopback" device such as MIDI Yoke (available only on Windows). The plugin host then opens this same MIDI loopback device to receive its control messages. To the host it looks like Mobius is just another footswitch sending MIDI messages. Program the Mobius script so that it sends the MIDI message the host will recognize to stop the transport. Now by pressing one switch on the MIDI controller, both Mobius and the Host will stop at the same time. Note though that you don't have to just stop the host transport, the script can make the host do anything that is controllable with MIDI messages such as gradually decreasing the levels of the host tracks for a fade out effect. See the Controlling Plugin Host Tempo section for more information on using loopback devices.

7.2 Recommended Track Configurations


There are two recommended track configurations for Host Sync. The simplest is to have all tracks set Sync Source to Host and MIDI/Host Sync Unit to Bar. All tracks will follow bar pulses from the host.

The second configuration is to have one track use Sync Source = Host and record that first so that it becomes the track sync master track. Then have all other tracks use Sync Source = Track. Then you will have only one track that needs to follow the host and the others will follow the Mobius master track. The differences between the two approaches are subtle. We recommend that new users use the first approach and have all tracks use Sync Source = Host. The main reason to use the second approach is to have more control over the granularity of the synchronization points. For example you can record synced loops that are fractions of the size of a host beat by setting Track Sync Unit = Subcycle and setting Subcycles to a large value. Or you can record synced loops that are many host bars in length by setting Track Sync Unit = Loop. Since each track can have a different Sync Source it is possible for tracks to use a combination of Host Sync, MIDI Master Sync and MIDI Slave Sync at the same time. We are aware of no practical reason to do this, unless you know exactly why you are doing this it is strongly not recommended.

8 MIDI Slave Sync


MIDI Slave Sync can be used to create loops that stay in sync with another device that generates MIDI "beat clocks". Usually this will be a hardware drum machine or sequencer but it could also be another software applications that send MIDI clocks. In this manual we will refer to this as a "drum machine" though it can be any hardware or software that generates MIDI beat clocks. When using MIDI Slave Sync, Mobius receives a stream of MIDI clock messages and identifies which clocks represent "beats" and "bars". When you record loops, the start and end of the recording will be quantized to either a beat or bar boundary. This is similar to using Host Sync except the beats and bars are defined by an external hardware device or another application. This type of synchronization is usually not as accurate as Host Sync so you may experience Drift Correction more often. MIDI Slave Sync is almost never used if you are running Mobius as a plugin. In that case it is usually better to use Host Sync instead. NOTE: MIDI "beat clock" is not the same thing as "MIDI Time Code". Mobius does not support MIDI Time Code, it only recognizes the simple beat clock messages: Start, Stop, Continue, and Clock.

8.1 Configuring MIDI Devices for Slave Sync


To use MIDI Slave Sync you will need to arrange to have MIDI beat clock messages from the drum machine routed into Mobius. If you are running Mobius standalone there is only one way to do this. Open the MIDI Devices configuration window and select the MIDI device connected to the drum machine in the panel labeled Input Devices on the left side. You can select more than one device in this panel, but only one of them should be connected to something that sends MIDI beat clock. As mentioned earlier it is almost never necessary to use MIDI Slave Sync when running Mobius as a plugin. Instead you usually use Host Sync mode and let the host control the tempo. There are however a few cases where you may need to use MIDI Slave Sync with the plugin:

The host application does not support VST synchronization or does not have a "transport". A hardware device such as a drum machine is to be the sync master for both the host application and Mobius.

In these cases you can get MIDI beat clock into Mobius in two ways:

Let the host open the MIDI device and route MIDI beat clock messages into Mobius through the VST interface Let Mobius open a private MIDI device and receive MIDI beat clock directly from the device

For normal Mobius control, we always recommend the first approach, letting the host open the MIDI device. This prevents conflicts that can happen when Mobius and the host attempt to open the same devices. Unfortunately this usually does not work very well for MIDI Slave Sync. Hosts usually add a significant amount of timing jitter to MIDI clock messages. This can make it difficult for Mobius to correctly calculate the size of synchronized loops which will cause them to drift out of sync more rapidly. If you seem to be doing Drift Correction too often you may need to take the second approach and have Mobius open its own private connection to a MIDI device. This will result in a smoother stream of clock pulses and more accurate loop lengths. To do this open the MIDI Devices configuration window and select the MIDI device connected to the drum machine in the panel labeled Plugin Input Devices on the right side. The problem with letting Mobius open a private MIDI device when running as a plugin is that the host often tries to open the same device. Sometimes this is unavoidable, the host will simply open every available device and not let you choose which ones you actually need. Sometimes there will be a preferences window where you can select the devices to open. If at all possible, try to make the host open MIDI devices that are different than the devices Mobius uses. If Mobius and the host try to open the same device there can be conflicts that in some cases can lead to crashes, usually when you delete the Mobius plugin. Whether this will work or not depends on your host and the MIDI device drivers. You will simply have to try it to see if it works. If you are unable to specify exactly which MIDI devices the host will open and you have crashes deleting the Mobius plugin then you will probably need to use a different host. If this happens please contact us so we can see if there is something we can do to make Mobius behave better in that host.

8.2 Configuring the MIDI Sync Source


After configuring a MIDI device from which we can receive beat clock messages, locate the Default Sync Source setup parameter and set it to MIDI. Then set MIDI/Host Sync Unit to either Beat or Bar. The Record function will then be quantized and executed exactly on the MIDI clock at the start of the next beat or bar. Finally set the Beats Per Bar parameter to the number of beats in one bar.

Sync Source MIDI

Determining when the next MIDI beat occurs is relatively easy. The MIDI specification says that there will be 24 Clock messages in every beat, so Mobius simply counts clocks. Every time 24 clocks are received, Mobius generates a beat pulse for synchronization. Note that for this to work it is important that the device that is generating clocks also sends a MIDI Start message when it has begun playing. Mobius will see the Start message and reset the clock counter so the beats in the drum machine and the beat pulses inside Mobius will be aligned. If Start is not sent Mobius can't tell if a clock is at the beginning, middle, or end of a beat. It will generate beat pulses at the correct tempo but the timing of the beats may not align with the drum machine. Determining when the next MIDI bar occurs is more complicated because MIDI does not have a way to say what the time signature is or where bars are located. Instead you define the length of a MIDI bar using one of two Mobius parameters: Beats Per Bar or Subcycles. Beats Per Bar is found under the Synchronziation tab of the track setup window as shown in the previous capture. If Beats Per Bar is set to a value other than zero, that will be the number of beats in one bar. If Beats Per Bar is empty or zero, the number of bar beats is determined by the value of the Subcycles preset parameter. It is recommended that you set the Beats Per Bar parameter so that you can use Subcycles for quantization that is not dependent on the size of a bar. For example you may set Beats Per Bar to 4 if you are using 4/4 time but have Subcycles set to 8 so the smallest quantization unit is an eighth note.

8.3 Using MIDI Slave Sync


The procedure for creating a MIDI synced loop is usually this: 1. 2. 3. 4. Start Mobius and have it open a MIDI device for input Set Mobius sync source to MIDI Connect a drum machine to the MIDI device that Mobius is watching Start the drum machine, it sends a MIDI Start message and then begins sending Clock messages 5. The tempo, beat, and bar counters should be visible in the Mobius window 6. Execute the Record function, the recording will be quantized and start on the next MIDI beat or bar 7. After the desired amount of loop has been recorded, execute the Record function again, the end of the recording if rounded up to the next MIDI beat or bar Like Host Sync you need to remember to press the Record button ahead of the beat/bar where you want recording to begin. If you try to press the record button right when you hear the beat/bar in the drum machine, you may actually be a little bit late which means that recording will be delayed until the next beat/bar. Always press early. Also like Host Sync the drum machine will be playing and is normally audible before you ever get around to doing anything with Mobius. If you want the drum machine and the Mobius loop recording to start at exactly the same time you have to "arm" Mobius for recording before starting the drum machine. To do this press Record in

Mobius before starting the drum machine. Mobius will enter Synchronize mode waiting for a sync pulse. Then start the drum machine. Once Mobius loops have been created it will constantly monitor the MIDI clocks to check for drift. If we notice that the Mobius loop is drifted away from the MIDI clocks we will make an instant adjustment to the playback position to bring it back into alignment. For example, if a MIDI synced loop was recorded over 96 MIDI clocks, every time we receive 96 clocks we check the Mobius loop position and expect it to be at its start point. If instead the loop is a little before or after the start point this may indicate that drift has occurred. If this keeps getting worse we make the drift adjustment. This is frequently a problem with MIDI sync because there can be considerable jitter in MIDI clocks that make accurate timing of the start and end of the recording difficult. Even if the clocks were just slightly early or late, this can result in the loop being too short or too long which will cause noticeable drift after several repetitions. Once MIDI synced loops have been recorded it is important that you do not change the tempo of the MIDI clocks. Mobius will start seeing clocks come in at a different rate, they will never match the loop playback position and we will keep jumping around trying to bring the Mobius loop back in sync with the transport. This can be done on purpose to achieve a "glitchy" effect but it is usually not what you want. Once you have recorded MIDI synced loops in Mobius you should never change the tempo of the MIDI clocks. See the section Drift Correction for more information on how we compensate for drift. Since Mobius does not respond to the MIDI Stop message, it can be difficult getting the drum machine and Mobius to stop at exactly the same time. The simplest thing is to just do a Global Pause in Mobius to silence it, let the drum machine continue for a few bars then stop it. See the Synchronizing Stop section for some other ways to stop Mobius, this was written for Host Sync but the techniques can be used with MIDI sync as well.

8.4 Recommended Track Configurations


There are two recommended track configurations for MIDI Slave Sync. The simplest is to have all tracks set Sync Source to MIDI. Tracks will all follow the MIDI clocks and not each other. The second configuration is to have one track use the MIDI sync source and record that first so that it becomes the track sync master track. Then have all other tracks set Sync Source to Track. Then you will have only one track that needs to follow MIDI clocks and the others will follow the Mobius master track. The differences between the two approaches are subtle. We recommend that new users use the first approach and have all tracks use the MIDI sync source. Because MIDI clocks are subject to more jitter than other sync sources, the second approach can result in tracks that play together more reliably over time since only one of them will be syncing to the MIDI clock and all the others will have an exact size relationship with the track following the MIDI clocks.

9 MIDI Master Sync

Most people that synchronize Mobius with external devices use MIDI Master Sync for one important reason: you get to control the tempo from Mobius, rather than trying to follow a previously set tempo. For example, when using Host Sync or MIDI Slave Sync, you need to start playing a pre-recorded sequence, drum pattern, or click track so you can hear the tempo to follow. Then you record Mobius loops in sync with that tempo. When you use MIDI Master Sync you start by freely recording a loop in Mobius in whatever tempo you feel like at that moment. As soon as the loop is recorded, Mobius starts sending out MIDI "beat clocks" that drum machines, sequencers, or other devices can lock onto and begin playing backing tracks in sync with the Mobius loop. You make the other devices follow your loop tempo rather than the other way around. In the looping community this is commonly called "first loop capability". If you prefer to have backing tracks that are audible before you start creating loops, you can still use MIDI Master Sync to set the tempo. Start by recording a silent Mobius loop just to set the tempo of the MIDI clocks. Then after the slave device starts playing, select a different Mobius track and use Track Sync to record loops that are in sync with the original silent loop. Note that the MIDI messages that Mobius will send for master synchronization are "beat clock" messages: Start, Stop, Continue, and Clock. This is not the same thing as "MIDI Time Code". If you have a device or application that requires MIDI Time Code for slave sync, you will not be able to use it with Mobius.

9.1 Configuring MIDI Devices for Master Sync


To use MIDI Master Sync you will need to select a MIDI output device. Open the MIDI Devices configuration window. If you are running Mobius standalone select a device in the Output Device panel, if you are running Mobius as a plugin select a device in the Plugin Output Device panel. You may only select one device in each panel. If you are running Mobius as a plugin this is one of those rare circumstances where you must create a private connection directly to a MIDI device rather than sending MIDI through the plugin host application. While it is possible for a VST or Audio Unit plugin to send MIDI messages to the host and then have the host pass those to a MIDI device, Mobius does not do this. Mobius can only send MIDI beat clock messages directly to a MIDI device. This is because plugin hosts almost always introduce timing jitter to the MIDI messages sent by plugins. This isn't always bad for MIDI messages like notes or continuous controllers, but it is unacceptable for MIDI clocks. If you select a Plugin Output Device in Mobius, look at the MIDI configuration in your host application and try to make the host not select the same device. There are occasionally problems with certain combinations of hosts and MIDI device drivers that can cause a crash when you delete the Mobius plugin. What happens is that the host opens a connection to a MIDI device and assumes that it has complete control over the device. Then when the Mobius plugin is inserted, Mobius opens another connection to the same device. When you delete the Mobius plugin, Mobius thinks it is in control of the device and closes the connection. With some MIDI device drivers, this makes the original MIDI connection opened by the host invalid and if the host attempts to use it, it may crash.

9.2 Configuring MIDI Master Sync Source


To select MIDI Master Sync, locate the Default Sync Source setup parameter and set it to Out. Then make sure all tracks in the set have their Sync Source parameter set to Default. Also set Default Track Sync Unit to the desired value.

Sync Source Out The first track you record a loop into will become the MIDI Sync Master track. A tempo will be calculated based on the loop length and a few parameters, a MIDI Start message will be sent to the configured MIDI output device followed by a stream of MIDI Clock messages at the calculated tempo. If you have a drum machine or sequencer configured to listen to the same MIDI device it should begin playing. Once a track becomes the MIDI sync master, all other tracks that have Sync Source set to Out will behave as if they were using Track Sync. There can only be one master track in control over the MIDI clocks being sent, the other tracks will slave to the master track. This is important so it deserves repeating. Setting Sync Source to Out is almost exactly the same as setting it to Track. One track will be designated the master and other tracks will sync to the master track. The primary difference between this and Track Sync is that the master track will also send out MIDI clocks. When the MIDI Sync Master track is selected, the word Master or less often MIDI Master will be displayed in the Sync Status component near the center of the Mobius window. Master means that the track is functioning as both the MIDI Sync Master track and the Track Sync Master track. This is usually what happens. If you see the words MIDI Master it means that the track is functioning only as the MIDI Sync Master track and some other track is the Track Sync Master. Above the Sync Status component you will see the word Tempo followed by the tempo of the master loop, rounded to one tenth.

Once you have recorded the master loop you must be careful about changing it. It is permissible to change the master loop, or even record a different loop in the master track, but this may change the cycle length of the loop which may in turn change the tempo of the generated MIDI clocks. See the Adjusting The Tempo section for more information. A common technique to ensure that the tempo remains consistent is to first record a silent loop in the master track and let it run forever. Then use Track Sync to record audible content in other tracks synced to the master track.

9.3 Recommended Track Configurations


For normal MIDI Master Sync looping, set the Default Sync Source to Out and make sure the Sync Source parameter for each track is set to Default. Also set Default Track Sync Unit to your desired unit for syncing tracks when they are not the master track.

Only one track can be the sync master, it will be the first one that is recorded and is normally never changed. Since the other tracks cannot be the sync master, they will behave as if the sync source was set to Track.

9.4 MIDI Master Sync Parameters


There are several setup parameters that control how MIDI master sync behaves. These are all found on the bottom half of the Synchronization tab in the Track Setups window. The names of these parameters all begin with "Out Sync". These will be discussed in sections below.

9.5 Out Sync Manual Start


Normally when you use the sync source Out, a MIDI Start message is sent immediately after recording the master track to the slave device. Sometimes though you may want to delay starting the slave device, possibly to evolve the loop a bit before bringing in a background rhythm. This can be done by checking the Out Sync Manual Start setup parameter. After finishing the recording of the master track Mobius will calculate the clock tempo and begin sending MIDI clocks, but it will not send a Start message. This allows the slave device to begin locking onto the MIDI tempo. When you are ready to start the slave device, execute the MIDI Start or Mute MIDI Start functions. The MIDI Start function will wait for the start point of the master loop, then send a MIDI Start message. There is no way to control the quantization, it will always happen at the master loop's start point. The Mute MIDI Start function will immediately mute the master loop as if the Mute function had been used, wait for the start point, send a MIDI Start message, and at the same time unmute the loop. There is another relatively obscure way to perform MIDI Start that was copied from the EDP. If you are already in Mute mode and you use the Multiply function, the Multiply function will be converted to the Mute MIDI Start function. For this to work Multiply must be added to the Mute Cancel Functions global parameter.

9.6 Calculating The Tempo


When a MIDI Sync Master loop has been recorded, the tempo of the generated MIDI clocks is calculated with this formula:

beatsPerMinute = 60 / ((cycleFrames / beatsPerBar) / sampleRate)


Or broken up for clarity:

framesPerBeat = cycleFrames / beatsPerBar secondsPerBeat = framesPerBeat / sampleRate beatsPerMinute = 60 / secondsPerBeat


The cycleFrames term has the number of frames (pairs of stereo samples) in one cycle of the loop. This is usually the same as the number of frames in the entire loop since new loops usually have only one cycle. The beatsPerbar term will be the value of the Beats Per Bar setup parameter if it is greater than zero, otherwise it will be value of the Subcycles preset parameter. It is recommended that you set Beats Per Bar in the setup so that you can use Subcycles for quantization without affecting the MIDI clock tempo. For example a common value for Beats Per Bar is 4 but you might want Subcycles set to 16 for fine grained quantization. The cycle is assumed to be one bar long so cycleFrames divided by beatsPerBar results in framesPerBeat. The sampleRate term is the sample rate of the audio device, this will usually 44100 (the CD sample rate) or 48000 but other rates are possible. framesPerBeat divided by sampleRate results in secondsPerBeat. Finally dividing 60 by secondsPerBeat results in the base tempo expressed in the most common unit of Beats Per Minute (BPM). This tempo formula can result in very small or very large tempos which are usually undesirable. To keep the tempo within a usable range, we make a final adjustment to the tempo using two setup parameters: Out Sync Min Tempo and Out Sync Max Tempo. First the tempo is divided by 2 until it reaches a value that is less than or equal to the value of the Out Sync Max Tempo parameter. For example if the tempo was 450 and the Out Sync Max Tempo parameter was 200, the adjusted tempo would be 112.5 (450 / 2 = 225 / 2 = 112.5). Next the tempo is multiplied by 2 until it reaches a value that is greater than or equal to the value of the Out Sync Min Tempo parameter. For example if the tempo was 20 and Out Sync Min Tempo was 60, the adjusted tempo will be 80 (20 * 2 = 40 * 2 = 80). Note that it is possible for the Out Sync Min Tempo and Out Sync Max Tempo parameters to be in conflict if the values are not far apart. In this case the Out Sync Min Tempo wins. For example assume Out Sync Max Tempo is 200, Out Sync Min Tempo is 150, and the base tempo is 450. We first make the Out Sync Max Tempo adjustment which divides it down to 112.5. Since this is below Out Sync Min Tempo it gets multiplied back up to 225. You will never have tempos that are below Out Sync Min Tempo but you may have tempos that are above Out Sync Max Tempo if the tempo range isn't large enough.

9.7 Adjusting The Tempo

Once you have recorded a MIDI Sync Master track there are several actions you can make that may disrupt the tempo of the MIDI clocks being generated. These include:

Resizing the master loop with functions such as Trim and Unrounded Multiply Moving between layers of the master loop with Undo or Redo if the layers have different sizes Switching between loops in the master track that have different sizes Changing the speed of the master loop with Rate Shift

In these cases, two setup parameters control what will happen to the tempo of the generated MIDI clocks:

Out Sync Speed Adjust - used when changing the playback rate Out Sync Resize Adjust - used when the loop changes size

These parameters have may either be set to None which means that the current tempo is not changed, or Change Tempo which means that the tempo will be recalculated so that it matches the new characteristics of the loop.

9.7.1 Out Sync Speed Adjust


Out Sync Speed Adjust is the most important. It is used whenever the master loop playback rate changes. A common looping technique is to change the playback rate of a loop so that it either an octave higher or lower and thereby either half as long or twice as long. These changes can be made while keeping the master sync tempo at a consistent rate and the drum machine pattern still "fits" with the loop. For example if a drum pattern plays once when the loop is at normal speed, it will play twice if the loop is at half speed. But the rhythm of the drum pattern is still usually compatible with the rhythm of the loop even though the drum machine is now twice as fast. To accomplish this effect set Out Sync Speed Adjust to None. If you rate shift the master loop at intervals other than an octave, the resulting length of the loop will no longer fit within the drum machine pattern evenly. This can be used to create interesting polyrhythms. If you set Out Sync Speed adjust to Change Tempo then the drum machine tempo will follow the loop tempo. One use for this technique is to gradually reduce the speed of both the master loop and the drum pattern until they practically halt as a way to end a performance.

9.7.2 Out Sync Resize Adjust


Out Sync Resize Adjust used whenever the loop playing in the master track changes size. This is relatively unusual but it can happen when switching loops, using Undo and Redo, or after applying some functions to the loop. If you are creating strictly synchronized loops using quantization and time copy, the loops and layers will tend be the same size, or a multiple of a common factor. Switching between these loops and layers can be done without changing the tempo of the generated clocks. If however you have been using functions like Unrounded Insert, Unrounded Multiply and Trim you may have loops and layers that do not have compatible sizes. In those cases if Out Sync Resize Adjust is set to Change Tempo a new tempo will be calculated based on the size of the new loop. If this parameter is set to None the original sync tempo will be preserved but since the loop is not of a related size it will drift in and out of phase with the drum machine or sequencer.

9.8 Changing the MIDI Sync Master Track


Normally once a track becomes the MIDI sync master it will continue to be the master for the entire performance. In some special cases though you may want to make a different track the master. This can be accomplished in two ways: using the Sync Master MIDI function or the Reset function. The Sync Master MIDI function will make the currently selected track the new MIDI sync master. This is the most flexible way to select a master track. If you use the Reset function to reset the current MIDI sync master track, Mobius will automatically select a new master. It will select the first track to the right of the old master track that has Sync Source set to Out and has a non-empty loop. After selecting a new master track, the length of the master loop may have a different cycle length than the previous loop. In this case the Out Sync Resize Adjust parameter is used to determine whether the tempo should change. If after using the Reset function no suitable sync master track can be found, a MIDI Stop message will be sent and MIDI clocks will no longer be generated.

9.9 Controlling Plugin Host Tempo


When Mobius is running as a plugin you can sometimes use MIDI Master Sync to set the tempo used by the plugin host transport. For this to work the host needs to support slaving its transport to MIDI beat clocks, not all hosts support this. You will need to use a MIDI Loopback device. On Windows the one we recommend is MIDI Yoke available at www.midiox.com . On Mac, you can use a built-in OS X feature called the MIDI IAC Driver. A tutorial on setting up this driver can be found here . Configure Mobius as usual for MIDI master sync and select the loopback device in the Plugin Output Devices panel of the Audio Devices configuration window. You will then need to configure the plugin host so that it can receives MIDI clocks from the same loopback device. This will be different in every host, if it isn't obvious post a message to the Mobius forums. Now record the initial loop in Mobius. MIDI clocks will be generated and if things are connected properly the host should lock onto the tempo and display it in its transport. This technique is known to work in Ableton Live.

9.10 Mute and Pause during MIDI Master Sync


NOTE: The behavior described in this section was developed for a problem one Mobius user was having with a slave device. It is unfortunately rather complicated and not as flexible as it should be. This is likely to change in a future release. When you use the Mute or Pause functions in the MIDI sync master loop, the external device being synchronized may also be made to stop and then resume when the master loop is unmuted. This behavior is controlled by a combination of the Mute Mode preset parameter and the Out Sync Mute Action setup parameter.

The Mute Mode parameter may have these values:


Continue Start Pause

If Mute Mode is set to Pause the Mute function will behave exactly the same as the Pause function. The loop will freeze when then Mute/Pause function is executed, then resume from its previous location when Mute/Pause is executed again. If Mute Mode is set to Start the loop will continue playing silently while it is in Mute mode, then when leaving Mute mode the loop will be restarted from the beginning. If Mute Mode is set to Continue the loop will continue playing silently while it is in Mute mode, then when leaving Mute mode it will simply resume playing from its current location. If Mute Mode is set to Continue in the MIDI Sync Master loop we will continue to send MIDI Clock messages to the slave device so that it can remain in sync with the silent loop. If Mute Mode is set to Start or Pause in the MIDI sync master loop, we may try to stop the slave device as well as silencing the Mobius loop. How this happens is determined by the Out Sync Mute Action parameter which may have these values.

Send Stop/Start continue clocks Send Stop/Start stop clocks Stop clocks Continue clocks

When set to Send Stop/Start continue clocks, entering Mute or Pause mode will cause a MIDI Stop message to be sent to the slave device. MIDI Clock events will continue to be sent so the slave device can continue tracking the clock tempo. When exiting Pause mode a MIDI Continue message is sent to the slave device. When exiting Mute mode a MIDI Start message is sent to the slave device. This is the Out Sync Mute Action you normally use when the slave device recognizes the MIDI Start, Stop, and Continue messages. It allows the slave device to keep receiving MIDI Clock messages while it is stopped so it can track changes to the clock tempo. When the slave device is finally resumed it will already know the desired tempo. Send Stop/Start stop clocks is the same except that it also stops sending Clock messages while in Mute and Pause modes. This may be necessary if you have a device that gets confused if it keeps receiving Clock messages after a Stop. This is rare. If you think you have a device that requires this option please let us know so we can mention it in the documentation. Stop clocks is used when the slave device does not understand the MIDI Stop message. Here we simply stop sending Clock messages when in Mute or Pause mode. This is also relatively rare. It may be of use with tempo sensitive effects like a panner or tremolo. Such devices don't have the concepts of start and stop, they simply lock onto a clock tempo. If Continue clocks is used, we do not send a MIDI Stop message when entering Mute or Pause modes and we continue sending Clock messages. The Mobius loop will become silent, but the slave device will continue playing normally.

When we exit Mute mode we will always send a MIDI Start message when Mute Mode is set to Start. When we exit Pause mode we will always send a MIDI Continue message. These messages are always sent even if the slave device does not recognize them. If the MIDI Clock events had been turned off they will be resumed.

10 Drift, Dealign and Realign


When a synchronized loop is created using Host Sync, MIDI Slave Sync, or MIDI Master Sync there is the possibility that the Mobius loop may drift out of alignment with the host, drum machine, or even the internal timer used to generate MIDI master clocks. Drift is something that is not supposed to happen. In an ideal world there would be no drift but unfortunately differences in the speed of clocks running in different hardware devices, MIDI lag and jitter, and stress on the CPU can all result in timing errors that cause drift. Drift is usually very small, but over time as a loop plays the drift may accumulate until it becomes audible. Loops may start to sound slightly out of phase, and rhythm patterns may start to sound sloppy. Mobius is constantly monitoring the amount of drift and when it reaches a certain threshold it will make a correction to bring the loops back into alignment. This process is described in more detail in the Drift Correction section. Note that drift only happens when synchronizing with something outside of Mobius. Tracks within Mobius will never drift relative to each other. Dealign is a deliberate action by the user that causes a Mobius loop to go out of alignment with other loops either inside or outside Mobius. There are many ways to cause a dealign, among them:

Reversing playback direction (Reverse, Forward, Backward) Changing playback rate (Rate Shift) Restarting the loop from the beginning (Restart, Loop Switch) Executing the Move function in a script

Once a loop has been knocked out of alignment, it will remain that way until the user does something to change the alignment. Alignment is never corrected automatically like drift. To bring the loop back into proper alignment you must use the Realign or Mute Realign functions. This is described further in the Realign section.

10.1 The External Loop


Since Mobius can synchronize in several ways, it becomes difficult to talk about drift and realign without using word salad like "the plugin host or the drum machine or the master MIDI clock". This just gets worse as new synchronization types are added. To make this easier to talk about, Mobius uses a concept called the external loop that gives us a simple way to think about all synchronization types. The external loop represents anything outside of Mobius that we want to synchronize with. The external loop has a size and it plays from beginning to end at a fixed speed. When it reaches the end it wraps back to the beginning and repeats forever. The external loop has a size in frames or samples like a Mobius loop but it does not contain any audible content. In addition, the external loop has a size measured in pulses.

A pulse is a message sent to Mobius at a regular interval from the thing we want to synchronize with. When you use Host Sync a pulse is a beat event sent by the plugin host to all of the plugins when the host transport is running. When you use MIDI Slave Sync a pulse is a MIDI Clock message generated by a drum machine or other device. When you use MIDI Master Sync a pulse is a notification from an internal timer that is used to send MIDI Clock messages to another device. Mobius doesn't care what the pulse actually is, it simply needs to receive them at a consistent tempo. When you begin recording a synchronized loop using Host Sync or MIDI Slave Sync we delay the start of the recording until the next pulse is received. Then we start counting the number of pulses that are received while the loop is recording. When you end the recording, we round the loop up to the next pulse. We now have created two things: a Mobius audio loop with a size in frames and an external loop with a size in pulses. The Mobius loop size will be close to an exact multiple of the distance between pulses. When you record a synchronized loop using MIDI Master Sync we don't wait for pulses since there aren't any until after the loop is recorded. Recording starts and ends immediately. Once the recording has finished we then calculate a tempo for the MIDI clocks using the algorithm from Calculating The Tempo. We can then calculate the number of MIDI clocks that will be sent each time the new loop plays, this is the number of pulses in the external loop. At this point we have an external loop with a size in frames and pulses. We begin "playing" this loop silently, it will advance at exactly the same rate as the other Mobius tracks though it is invisible and you won't hear it. We also continue to receive pulses from the sync source. We keep a counter that is incremented when each pulse is received. When this counter is equal to the number of pulses in the external loop, the counter is set back to zero and we begin counting up again. For example, using MIDI Slave Sync we record a Mobius loop that is 96 MIDI clock pulses long. When the loop has finished recording, we start the external loop pulse counter from zero and add one each time a MIDI clock is received. When this counter reaches 96 we are at the end of the external loop and set the counter back to zero. When the external loop pulse counter wraps back to zero, this is called the external loop start point. This is an important moment in time that is used for both drift correction and the Realign function.

10.2 Drift Correction


NOTE: It is not necessary to fully understand this section in order to make effective use of synchronization. Drift correction normally just works and you don't need to worry about it. But if you are curious about what the mysterious Drift Resync Frames global parameter does, read on. Once a synchronized loop has been recorded, we create the external loop and it begins "playing" and we begin counting sync pulses. Whenever the external loop reaches its start point, we check for drift. The algorithm for calculating drift is complicated but at a high level we compare the current playback frame position of the external loop with the ideal position calculated from the pulses that have been counted. The result is the number of frames of drift. If the drift frames are positive it means that the Mobius tracks are ahead of the external

loop pulses, if the drift frames are negative it means the Mobius tracks are behind the external loop pulses. When the amount of positive or negative drift exceeds a certain threshold a drift correction is made. A drift correction is an immediate jump in the Mobius loop playback position to bring it back into alignment with the external loop. This is usually not noticeable but with some loops it may be heard as a soft "bump". This happens more often with MIDI Slave Sync because jitter in the MIDI clock stream can result in greater drift. It rarely happens with Host Sync. Surprisingly it can happen with MIDI Master Sync even though Mobius is in control over the clocks. This is because sync pulses are generated by timer provided by the operating system that is not synchronized with the audio stream being processed by the audio interface hardware. The amount of drift is usually very small, but over time it can be audible.

10.2.1 Drift Resync Frames


A small amount of drift is normal and tends to balance out over time. For example, on one pass of the loop we may be 100 frames ahead of the external loop, on the next 200 behind, then 80 ahead, then 127 behind. As long as the drift does not steadily increase in either direction the drift is normal and does not need to be corrected. The threshold at which drift correction occurs is defined by the global parameter Drift Resync Frames. The default value for Drift Resync Frames is 2048. Like a lot of strange looking numbers in Mobius the reason this is 2048 instead of 2000 or 2500 is because 2048 is an exact power of two. It is not necessary that this number be a power of two, 2500 would work just fine but programmers have this weird affection for powers of two. Just humor them. There is rarely any need to change the default value of Drift Resync Frames, the one exception would be if you were using MIDI Slave Sync with an extremely jittery MIDI clock. If you feel that drift correction is happening too often, you can try increasing this number by 1000 until it stops happening. What is "too often"? A Mobius loop should be able to play at least a few times before drift correction. If you hear a drift correction bump every time the loop reaches the start point, then try raising the Drift Resync Frames. Please contact us if you have to do this, it may indicate a problem with Mobius or something unusual about your system. It might be tempting to set Drift Resync Frames to a very small value thinking that you will get "tighter" synchronization. This is absolutely not recommended. A small amount of drift is perfectly normal, if you set the parameter too low you may end up doing a drift correction on every pass of the loop. The only reason this can be set lower than 2048 at all is to simulate extreme conditions for testing. If you set the Drift Resync Frames parameter to a large value, greater than 10000, you may begin hearing gradual changes to the loop. If you are syncing with a drum machine or something with an strong rhythm, the Mobius loop may start to feel like it "drags" or "rushes" compared to the background rhythm. If you are recording nonrhythmic loops then drift not even be noticeable.

10.2.2 Drift Correction and Track Sync

If you are using simple Track Sync and the master track did not use Host Sync, MIDI Slave Sync, or MIDI Master Sync then there will never be any drift correction. Tracks will always play in perfect sync forever. If the master track did use any of the other sync modes, then tracks synced with the master track may need drift correction. The rule is: whenever a track has a drift correction applied, all of the other tracks that were synced to that track will also have the same amount of drift correction applied. For example, assume that track 1 had Sync Source set to MIDI and all the other tracks had Sync Source set to Track. Track 1 is recorded and synced with the MIDI clock pulses coming from a drum machine. Tracks 2 and 3 are recorded with Track Sync so they are exactly the same size as track 1. Sometime later we decide that track 1 has drifted too far away from the MIDI clock pulses, and we to correct track 1 by moving the playback position 3028 frames backward because it was rushing. Next we look for all tracks that were recorded using Track Sync We find tracks 2 and 3. Those two tracks will also have their playback position adjusted 3028 frames backward so that they continue to be in exact alignment with the master track.

10.3 Realign
As we mentioned before earlier, Dealign is a deliberate action by the user that causes the Mobius loop to go out of alignment with the external loop. Some of the ways to cause a dealign are:

Reversing playback direction (Reverse, Forward, Backward) Changing playback rate (Rate Shift) Restarting the loop from the beginning (Restart, Loop Switch) Executing the Move function in a script

Once a loop has been knocked out of alignment, it will remain that way until the user does something to change the alignment. Alignment is never corrected automatically like drift. To bring the loop back into proper alignment you must use the Realign or Mute Realign functions. The only difference between the two realign functions is that Mute Realign will first perform an immediate unquantized Mute function, then do the realign. From the listeners perspective the loop that is out of alignment will suddenly stop, while the external loop (drum machine, host track, etc.) will continue playing. Then when the realignment point arrives the Mobius loop will be brought out of Mute mode and start playing aligned with the external loop. In all but one case described below what happens during a realign is that the playback position of the Mobius loop is moved so that it matches the current playback position of the external loop. Typically realign is delayed until the external loop reaches its start point. This gives the listener some sense of closure from one of the loops before they are abruptly brought back into alignment. The timing of the realign can however be controlled in some cases with the Realign Time synchronization parameter which may have these values.

Start Point Next Bar

Next Beat Now

For most users it is recommended that you leave this at the default value of Start Point. Setting this to Next Bar or Next Beat will cause the realign to happen when the external loop reaches the next beat or bar pulse. Setting this to Now will cause the realign to happen as soon as the next sync pulse is received. For Host sync this will be the same as Next Beat but for MIDI and Out it will be on the next MIDI clock which will make it feel like it happens almost immediately.

10.3.1 Realign with Track Sync


For loops that were created with Track Sync the Realign Time parameter specifies the location in the master track where the realign will occur. When Realign Time is set to Now the realign will happen immediately. When Realign Time is set to Start Point the realign happens when the master track reaches its start point. The other two values are a bit confusing since Mobius tracks don't have beats and bars. If Realign Time is set to Next Bar the realign will happen when the master track reaches the beginning of the next loop cycle. When set to Next Beat the realign happens when the master track reaches the start of the next subcycle.

10.3.2 Realign with MIDI Master Sync


Loops that are the MIDI sync master can perform a realign in one of two ways determined by the Out Sync Realign Action parameter. The parameter may have these values.

Restart Loop Send MIDI Start

Restart Loop is the default. It will cause the playback position of the Mobius loop to be adjusted to bring it into alignment with the external loop. This is how realign works in all other sync modes. 10.3.2.1 Out Sync Realign Action = Send MIDI Start This is a special realign mode that is only available when using MIDI Master Sync. Rather than making adjustments to the Mobius loop to bring it into sync with the timer pulses, we will tell the external device to restart itself to bring it into alignment with the Mobius loop. What happens is that a MIDI Start message will be sent exactly when the Mobius loop reaches its start point. This should cause the drum machine or sequencer to restart its pattern at the same time. The Mobius loop and the external loop will then be both aligned at their start points. Note that when using this special mode, the realign only happens when the Mobius loop reaches its start point. This means that the Realign Time parameter is ignored. This option is essentially the same as using the MIDI Start or Mute MIDI Start functions as described in the Realign Alternatives section.

10.3.3 Realign Alternatives - MIDI Start and Mute MIDI Start


For the track that is the MIDI Sync Master there are two additional functions that can be used to bring the Mobius loop and the external loop back into alignment. These can be used instead of the Realign and Mute Realign functions. The MIDI Start function will be automatically quantized to the Mobius loop start point, then it will send a MIDI Start message to the drum machine, sequencer or other device being slaved to Mobius. This should cause the slave device to restart its pattern. The Mobius loop and the external loop will now be both aligned at their start points and begin playing in alignment. The Mute MIDI Start function behaves the same way, but first it does an unquantized Mute function to silence the Mobius loop, then when the start point is reached it unmutes the Mobius loop at the same time as it sends the MIDI Start message. The effect is essentially the same as Out Sync Realign Action = Send MIDI Start. You might prefer this though if you are using Out Sync Manual Start because you won't need to reserve another footswitch for the Realign function. Since you will already have a footswitch assigned to the MIDI Start function to get the slave loop started at the very beginning of the performance, you can use the same footswitch to realign the slave loop later.

10.3.4 Realign Alternatives - Sync Start Point


The Sync Start Point will make the Mobius loop start point match the external loop start point. When the function is executed it schedules a pending Start Point function and waits for the external loop start point. When the pulse representing the external loop start point is received, it executes the Start Point function. This is arguably not a "realign" since we're not changing the positions of either the Mobius loop or the external loop. Rather we are saying that we want to make the current dealignment permanent. Once Sync Start Point is done, a Realign function will restore the Mobius loop and the external loop to the positions they had after the Sync Start Point, this may be different than the alignment the loops had when they were first recorded.

Mobius Reference
March 2012

Contents
1 Introduction 2 Concepts 2.1 Display Names and Internal Names 2.2 Parameters 2.3 Controls 2.4 Variables 2.5 Modes 2.6 Functions 2.7 Function Quantization 2.8 Instant Functions 2.9 Modal Functions 2.10 Rounding Functions 2.11 Sustain Functions 2.12 Function Families 2.13 Mode Endings 2.14 Function Classes 2.14.1 Modal Edit Functions 2.14.2 Instant Edit Functions 2.14.3 Loop Window Functions 2.14.4 Reset Functions 2.14.5 Instant Move Functions 2.14.6 Loop Switch Functions 2.14.7 Effect Functions 2.14.8 Mute Functions 2.14.9 Global Functions 3 Major Modes 3.1 Confirm 3.2 Insert 3.3 Multiply 3.4 Mute 3.5 Overdub 3.6 Pause 3.7 Play 3.8 Record

3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12

Rehearse Rehearse Record Replace Reset Run Solo Solo Mute Stutter Substitute Switch Synchronize Threshold Minor Modes Capture Master MIDI Master Mute Overdub Pitch Bend Pitch Octave Pitch Step Reverse Speed Bend Speed Octave Speed Step Speed Toggle Time Stretch Track Master Window Functions Auto Record Backward Bounce Checkpoint Clear Confirm Divide Focus Lock Forward Global Mute Global Pause Global Reset

5.13 5.14 5.15 5.16 5.17 5.18 5.19 5.20 5.21 5.22 5.23 5.24 5.25 5.26 5.27 5.28 5.29 5.30 5.31 5.32 5.33 5.34 5.35 5.36 5.37 5.38 5.39 5.40 5.41 5.42 5.43 5.44 5.45 5.46 5.47 5.48 5.49 5.50 5.51 5.52 5.53 5.54

Halfspeed Insert Instant Multiply Loop Loop Copy MIDI Out MIDI Start MIDI Stop Move Multiply Mute Mute MIDI Start MuteOff MuteOn Mute Realign Next Loop Next Track Overdub OverdubOff OverdubOn Pause PitchBend Pitch Cancel Pitch Down Pitch Next PitchOctave Pitch Previous Pitch Step Pitch Up Play Previous Loop Previous Track SpeedBend Speed Cancel Speed Down Speed Next SpeedOctave Speed Previous Speed Step Speed Toggle Speed Up Realign

5.55 5.56 5.57 5.58 5.59 5.60 5.61 5.62 5.63 5.64 5.65 5.66 5.67 5.68 5.69 5.70 5.71 5.72 5.73 5.74 5.75 5.76 5.77 5.78 5.79 5.80 5.81 5.82 5.83 5.84 5.85 5.86 5.87 5.88 5.89 5.90 5.91 5.92 5.93 5.94 5.95 5.96

Record Redo Rehearse Replace Reset Restart Restart Once Reverse Sample Save Capture Save Loop Shuffle Slip, Slip Backward, Slip Forward Solo Start Capture Start Point Stop Capture Stutter Substitute Sustain Insert Sustain Multiply Sustain Mute Sustain Mute Restart Sustain Next Loop Sustain Overdub Sustain Pause Sustain Previous Loop Sustain Record Sustain Replace Sustain Reverse Sustain Speed Toggle Sustain Stutter Sustain Substitute Sustain Unrounded Insert Sustain Unrounded Multiply Sync Master MIDI Sync Master Track Sync Master Track+MIDI Sync Start Point Time Copy TimeStretch Track

5.97 Track Copy 5.98 Track Copy Timing 5.99 Track Group 5.100 Track Reset 5.101 Trim End 5.102 Trim Start 5.103 Undo 5.104 Window Backward 5.105 Window Forward 5.106 Window Start Backward 5.107 Window Start Forward 5.108 Window End Backward 5.109 Window End Forward 5.110 WindowMove 5.111 WindowResize 6 User Interface Functions 6.1 UI Decrement Parameter 6.2 UI Increment Parameter 6.3 UI Next Parameter 6.4 UI Move Display Components 6.5 UI Previous Parameter 7 Preset Parameters 7.1 Auto Record Bars 7.2 Auto Record Tempo 7.3 Bounce Quantize 7.4 Empty Loop Action 7.5 Empty Track Action 7.6 Enable Secondary Feedback 7.7 Loops Per Track 7.8 Maximum Redo 7.9 Maximum Undo 7.10 Multiply Mode 7.11 Mute Cancel 7.12 Mute Mode 7.13 No Feedback Undo 7.14 No Layer Flattening 7.15 Overdub Quantized 7.16 Overdub While Rounding 7.17 Overdub Transfer 7.18 Pitch Bend Range 7.19 Pitch Step Range 7.20 Pitch Sequence

7.21 7.22 7.23 7.24 7.25 7.26 7.27 7.28 7.29 7.30 7.31 7.32 7.33 7.34 7.35 7.36 7.37 7.38 7.39 7.40 7.41 7.42 7.43 7.44 7.45 7.46 7.47 7.48 7.49 7.50 8 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 8.10 9

Pitch Shift Restart Pitch Transfer Quantize Mode Speed Bend Range Speed Step Range Speed Sequence Speed Shift Restart Speed Transfer Record Resets Feedback Record Speed Changes Record Threshold Record Transfer Return Location Reverse Transfer Shuffle Mode Slip Mode Slip Time Sound Copy Mode Subcycles Switch Duration Switch Location Switch Quantize Switch Velocity Sensitive Time Copy Mode Time Stretch Range Track Leave Action Window Edge Unit Window Edge Amount Window Slide Unit Window Slide Amount Track Parameters Focus Lock Group Input Port Mono Track Name Output Port Plugin Input Port Plugin Output Port Preset Preset Number Setup Parameters

9.1 Active Track 9.2 Beats Per Bar 9.3 Binding Overlay 9.4 Default Sync Source 9.5 Default Track Sync Unit 9.6 Out Sync Manual Start 9.7 Out Sync Max Tempo 9.8 Out Sync Min Tempo 9.9 Out Sync Mute Action 9.10 Out Sync Realign Action 9.11 Out Sync Resize Adjust 9.11.1 Out Sync Speed Adjust 9.12 Restore After Reset 9.13 Realign Time 9.14 Slave Sync Unit 9.15 Sync Source 9.16 Track Sync Unit 10 Track Controls 10.1 Feedback 10.2 Input Level 10.3 Output Level 10.4 Pan 10.5 Pitch Bend 10.6 Pitch Octave 10.7 Pitch Step 10.8 Secondary Feedback 10.9 Speed Bend 10.10 Speed Octave 10.11 Speed Step 10.12 Time Stretch 11 Global Parameters 11.1 16 Bit Wave Files 11.2 Audio Input Device 11.3 Audio Output Device 11.4 Bindings 11.5 Confirmation Functions 11.6 Custom Message File 11.7 Drift Check Point 11.8 Drift Resync Frames 11.9 Dual Plugin Edit Window 11.10 Fade Frames 11.11 Focus Lock Functions

11.12 Groups Have Focus Lock 11.13 Host MIDI Status Export 11.14 Input Latency 11.15 Isolate Overdubs 11.16 Long Press Milliseconds 11.17 Max Loops Per Track 11.18 Message Duration 11.19 MIDI Input 11.20 MIDI Output 11.21 MIDI Record Mode 11.22 MIDI Status Export 11.23 MIDI Through 11.24 Modes Ignoring Secondary Feedback 11.25 Monitor Audio Input 11.26 Mute Cancel Functions 11.27 Noise Floor 11.28 OSC Input Port 11.29 OSC Output Host 11.30 OSC Output Port 11.31 Output Latency 11.32 Periodic Status Log 11.33 Plugin MIDI Inputs 11.34 Plugin MIDI Outputs 11.35 Plugin MIDI Through 11.36 Plugin Ports 11.37 Quick Save File 11.38 Speed/Pitch Note Range 11.39 Reduce Feedback During Overdub 11.40 Save Project Layers 11.41 Selected Track 11.42 Setup 11.43 Trace Debug Level 11.44 Trace Print Level 11.45 Track Groups 11.46 Tracks 12 Menu Reference 12.1 File 12.1.1 Open Loop 12.1.2 Open Project 12.1.3 Save Loop 12.1.4 Save Project 12.1.5 Quick Save

12.1.6 12.2 12.3 12.4 12.4.1 12.4.2 12.4.3 12.4.4 12.4.5 12.4.6 12.4.7 12.4.8 12.4.9 12.4.10 12.4.11 12.4.12 12.4.13 12.5 12.5.1 12.5.2 12.5.3 12.5.4

Exit Track Setups Presets Configuration Presets Track Setups MIDI Control Keyboard Control Buttons Plugin Parameters Scripts Samples MIDI Devices Audio Devices Global Parameters Display Components Palette Help Menu Key Bindings MIDI Bindings Refresh UI About

1 Introduction
In this manual we will provide complete but concise documentation for every mode, function, control, and parameter that exists in Mobius. This is intended for advanced users that are already somewhat familiar with what these items do, but may need clarification on how they behave and interact. If you are interested in tutorials that describe in detail how and why you might use these items, read the Mobius Techniques manual first. When an item in the reference manual has also been documented in any of the other manuals we will provide links to the other manuals. You can use the reference manual like an index to get a brief overview of a topic of interest, then follow links to more detailed documentation elsewhere. Note that some of the items in the reference manual are accessible only in scripts so you will not see them in the binding windows or other parts of the user interface. We will provide brief script examples here, but for details on writing scripts read the Mobius Scripting manual. The reference manual is not intended to be read from top to bottom. Most of the sections are arranged alphabetically to make it easier to locate something of interest. It is however recommended that you read the Concepts section first because these will clarify some of the terms used in this manual.

2 Concepts

Mobius has a lot of "things" in it that can be controlled by external triggers or used in scripts. In this introductory section we will review the major categories of things and define several important concepts that will be used throughout the reference manual. It is recommended that you read this section completely before reading anything else in the reference manual.

2.1 Display Names and Internal Names


The various things you can see and use in Mobius will usually have both a "display name" and an "internal name". The display name is what you will see in the user interface and will be the title of the section in the reference manual that documents the thing. The internal name is the name you must use to refer to that thing in a script. Usually they are similar. If the display name contains spaces the spaces will be removed in the internal name. Display names always start with a capital letter, internal names for parameters always start with a lower case letter. A few internal names will use abbreviations or fewer words than the display name. You don't need to care about internal names until you decide to write scripts. For example, "Speed Up" is the display name for the function with the internal name "SpeedUp" and "Switch Quantize" is the display name for the parameter with the internal name "switchQuantize".

2.2 Parameters
A parameter is named value that influences how Mobius behaves. There are four categories of parameters: global parameters, setup parameters, track parameters and preset parameters. Global parameters control general operating characteristics such as whether input monitoring is enabled, or how many tracks should be displayed. They are set in the Global Parameters popup window. Setup parameters define things that effect all tracks at the same time, most of these are related to track synchronization. They are set under the Synchronization and Other tabs of the Track Setups popup window. Track parameters control a few characteristics of each track such as the track name, group number, and input focus. These are relatively unusual and are used mostly in scripts. They are set under the Tracks tab of the Track Setups popup window. Preset parameters control how functions behave, examples include Record Threshold, Quantize Mode, and Empty Loop Action. Most of the time when we talk about parameters we are talking about preset parameters. They are set in the Presets popup window. Parameters have a type which determines how they are shown in the user interface and how they can be used in scripts.

Integer - a small positive number String - a line of text Boolean - a true or false value, displayed as a checkbox Enumeration - one of a fixed set of values, displayed as a menu

Some parameters can be bound to triggers such as MIDI events but this is relatively unusual. More often parameters are set in scripts that are bound to MIDI triggers. If you do bind a MIDI trigger to a parameter, you should use a MIDI continuous controller. This is because unlike functions parameters have a ranged value and you need a trigger that can sweep over all the values in the range. You cannot bind parameters of type String, those can only be changed from scripts. You can bind to parameters of type Integer though this is rarely useful. The integer range of a MIDI continuous controller is from 0 to 127, but it can be difficult to dial in an exact number. If you bind a non-ranged trigger such as a MIDI note to an integer parameter it will simply increment the current value by one each time it is triggered, wrapping back to zero when the maximum value is reached. Binding to parameters of type Enumeration is more useful, the 128 step range of a MIDI continuous controller is divided into regions for each value in the enumeration. For example the Shuffle Mode parameter has four possible values, so CC messages from 0 to 31 select the first value, CC messages from 32 to 63 select the second value and so on. If you bind a non-ranged trigger to an enumeration parameter it will cycle through the possible values. Binding to a parameter of type Boolean is similar to binding to an enumeration parameter. There are only two possible values, true and false, so a MIDI continuous controller will be divided into two regions and non-ranged triggers will simply toggle the value.

2.3 Controls
A control is a named value that controls how audio is recorded and played in a track. Controls are similar to track Parameters but their values are always integers and they have a larger range than most parameters. They are usually set by a MIDI device that sends continuous controller messages such as a rotating knob or a foot pedal. There are five built-in controls:

Input Level Output Level Feedback Secondary Feedback Pan

The initial values for all track controls is set in the track setup . Controls may then be changed by binding them to triggers, or by turning knobs in the user interface.

2.4 Variables
A variable is similar to a parameter, it is a named value that holds information about the current Mobius state. Unlike parameters though, most variables cannot be changed. They can only be read in scripts and used to make decisions. Variables change as a side effect of normal Mobius operation. For example the variable loopFrame has the current record position in the current loop of the active track. There are many variables, some are frequently used in scripts, others are esoteric and intended only for unit testing. Since variables can only be used in scripts they are documented in the Mobius Scripting manual.

2.5 Modes
A mode is a temporary state that a loop can be in. Modes have a name that will normally displayed in the center of the Mobius window. Modes are usually caused by the execution of a function but there are also a few system modes that are not associated with any particular function. There are two types of modes, major modes and minor modes. A loop can only be in one major mode at a time. Examples of major modes are Reset, Record, Play and Multiply. When a function needs to change the major mode, the current mode must be ended before the new one begins. Ending a major mode can be a complex process that requires extra time, this may delay the change to the new mode. While a major mode is active, some functions may change their behavior. A loop can be in any number of minor modes at the same time. Examples of minor modes include Reverse, Speed Toggle, and Pitch Sttep. With a few exceptions minor modes do not alter the normal behavior of functions. All major and minor modes are canceled when the loop is Reset To understand what executing a function will do, you must therefore understand not only what Parameters will influence the function but also how the current modes will influence the function. In the user interface, the current major mode is displayed with the Mode Component and the active minor modes are displayed with the Minor Mode Component . It is recommended that you do not disable these components.

2.6 Functions
A function is a named action performed by Mobius at the request of the user. Examples include Record, Overdub, and Reset. Causing a function to be performed is called executing the function. Functions are normally bound to a trigger that is a button of some kind such as a MIDI footswitch or a computer keyboard key. Functions do not have a numeric value so they are not normally bound to MIDI continuous control pedals, knobs, or faders. Some functions require that they be bound to a Sustainable Trigger that notifies Mobius both when the trigger is "pressed" and when it is "released". Typically this will be a MIDI Note message. Functions operate in one of three ways: instant, sustain, and modal. Instant functions happen immediately. Sustain functions start when you press the trigger and end when you release the trigger. Modal functions start when you press the trigger the first time, and end when you press the trigger a second time.

2.7 Function Quantization


Quantization causes the execution of functions to happen at a precise time. When quantization is disabled functions are usually executed immediately. When quantization is enabled, the execution of the function will be delayed until the next quantization boundary. The three quantization boundaries are Loop, Cycle, and Subcycle. Quantization is frequently used to build loops that have a regular rhythmic quality.

You will see several phrases used in the documentation to describe the effects of quantization, such as "when quantizing", "during quantization", or "quantized function". All of these refer to the same concept. For most functions quantization is controlled by the Quantize Mode parameter. For loop switch functions this is controlled by the Switch Quantize parameter. A few functions have their own dedicated quantization parameter. The important thing to understand about quantization is that while we may say that a function happens "instantly" or that it "starts when you press a button", the actual execution of the function may happen sometime after you press a button if quantization is enabled. We will not usually say things like "function X starts when you press a button, or if quantization is enabled will be deferred until the next quantization point" as this gets tiresome to read (and write!) over and over. Instead you should assume that if a function obeys quantization that execution may be delayed even though we don't explicitly say it. See Quantize Mode in the Getting Started With Mobius manual for more information.

2.8 Instant Functions


An instant function is one that does something to a loop or track and then stops. Note that when we say "instant" this does not necessarily means it will be executed immediately after it is triggered, the execution may be delayed if quantization is enabled. But when the function is eventually executed, what it does to the loop happens instantly. Some examples of this function type are Instant Multiply and Divide. This is in contrast to Modal Functions where the function will have a start time and an end time and will have an effect on the loop over that span of time. Since instant functions don't have a beginning or end, they will never be Sustain Functions.

2.9 Modal Functions


When some functions are executed they will continue to have an effect on the loop for a period of time. These are called modal functions. While the function is active the loop is said to be in the mode of that function. The name of the mode is usually but not always the same as the name of the function. Both the beginning and ending of a modal function may be subject to quantization. A few functions will also do rounding which is similar to quantization but is not controlled by the Quantize Mode parameter. Recall from the Modes section that a loop may be in only one major mode at a time but it may be in any number of minor modes at a time. Functions that change the major mode are major modal functions and functions that add or remove minor modes are minor modal functions. Examples of major modal functions are Record, Multiply, and Replace. Examples of minor modal functions are Reverse, Speed Toggle and Pitch Up. The simplest way to start and end a major mode is to execute the function twice, the first execution starts the mode and the second ends it. But since there can be only

one major mode active at a time, any major modal function will usually end the previous major modal function. Some minor modal functions will also end the current major mode, but others will let the current mode continue. Minor modes are less consistent in how they start and end. Some belong to a function family that contain functions to toggle the mode, to force it on, to force it off, or to change characteristics of the mode rather than turn it off completely. See Mode Endings for more details on ending modes.

2.10 Rounding Functions


The Multiply, Stutter and Insert functions all normally do rounding when their modes are ended. Rounding is similar to quantization, it defers the ending of a mode until a special time is reached. Unlike quantization, rounding is not influenced by the Quantize Mode parameter. Rounding is done in order to preserve the current loop's cycle length. When you use functions that change the loop length, you usually want the new loop to be an exact multiple of the old loop's cycle length so that the new loop will play with the same tempo. When you end a rounding mode, an event will be scheduled to end the mode far enough in the future so that the cycle length will be preserved. Rounding functions can also be ended immediately instead of waiting to preserve the cycle length. When this happens the cycle length of the loop will be recalculated and the new loop will contain only one cycle. If this loop is the MIDI Sync Master this may change the tempo of the generated MIDI clocks.

2.11 Sustain Functions


A Sustain Function is always a modal function that begins when you press a sustainable trigger and ends when you release the trigger. The most common sustainable trigger is a MIDI Note message, though MIDI Continuous Control messages and computer keyboard keys may also be used. The function generally behaves the same as the non-sustain function with the same name, the main difference is how the ending is triggered. Sustain functions are usually ended when the trigger is released. If you execute another major modal function while a sustainable trigger is held down, the sustained mode is ended and the up transition of the sustainable trigger will be ignored. Note that the ending of a sustain function is still subject to quantization. So if you quickly tap a sustain function trigger when quantization is enabled, the start of the mode will be delayed until the next quantization point and the end of the mode will be delayed until the quantization point after the point where the mode starts. For example if you are in a loop with the Subcycles parameter set to 4 and are currently in the middle of subcycle 1 then quickly tap the button for Speed Toggle you will enter SpeedToggle -12 mode at the beginning of subcycle 2 and end the mode at the beginning of subcycle 3.

2.12 Function Families

Some related functions may be grouped into families. These are usually minor modal functions where each function in the family can change characteristics of mode rather than simply ending it. One example is the Speed function family which includes the functions Speed Up, Speed Down, Speed Cancel, Speed Toggle and many others.

2.13 Mode Endings


The simplest way to end a major modal function is to execute the same function again. But since there can be only one major mode active at a time, any major modal function will usually end the previous major modal function. For example if you are in Record mode you aren't required to trigger the Record function again to end it, you could trigger Overdub instead which will automatically end the Record mode and start Overdub mode. If the current mode does rounding, the ending function will normally be delayed until the rounding period ends. If you execute more functions during the rounding period they will be "stacked" and all execute at the end of the rounding period. Some functions may change their behavior during certain modes. Rather than simply executing after the current mode ends, they may change the way the mode is ended or even leave the current mode active. This is called modal behavior and is similar to what the EDP calls an "alternate ending". The most common example of a modal behavior is the Record function when it is used during a rounding mode such as Multiply or Insert. When Record is executed in these modes, it will cancel the rounding period and end the mode immediately. The new loop will then return to Play or Overdub mode. When a function has modal behavior, it will be included in the documentation for that function, for the mode in which it is used, and for the function that started the mode. Minor modal functions are not ended by other functions and they do not change the behavior of other functions. To end a minor mode you usually trigger the same function again or in some cases you trigger a function from the same Function Family. For example the function Speed Up will increase the playback speed by one semitone. Executing Speed Up again will not end the speed shift mode, it will increase the playback speed by another semitone. To return the speed to normal you must use either the Speed Down function or the Speed Cancel function.

2.14 Function Classes


We can divide functions in to several classes. These classes are mostly just to help document the functions by showing those that have similar behavior. You don't need to know about function classes except for one special case: the Mute Cancel parameter.

2.14.1 Modal Edit Functions


The functions in this class all cause Mobius to enter a major mode which causes the function to execute over a span of time. Here you will find the two most common functions, Record and Overdub. All but one modal edit function has both a sustain and a non-sustain version. They are called "edit" functions because they can change the loop in some way.

Auto Record Record Rehearse Overdub Multiply Insert Replace Substitute Stutter Sustain Record Sustain Overdub Sustain Multiply Sustain Unrounded Multiply Sustain Insert Sustain Unrounded Insert Sustain Replace Sustain Substitute Sustain Stutter

2.14.2 Instant Edit Functions


The functions in this class all cause Mobius to modify the loop instantly, though some may be delayed due to quantization. They are "edit" functions because they all change the loop in some way and result in the generation of a new layer.

Clear Instant Multiply Divide Trim Start Trim End Start Point Sync Start Point

2.14.3 Loop Window Functions


The functions in this class cause Mobius to play a section of the entire loop history. They are "edit" funtions because they change the loop in some way and result in the generation of a new layer. Once a window layer is generated, the window may be changed without generating additional layers.

Window Backward Window Forward Window Start Backward Window Start Forward Window End Backward

Window End Forward WindowMove WindowResize

2.14.4 Reset Functions


The functions in this class cause loops to be reset and all their content discarded. In a way they are similar to Instant Edit Functions except they do not create new layers.

Reset Track Reset Global Reset

2.14.5 Instant Move Functions


The functions in this class happen instantly and cause Mobius to change the playback position of the loop. They do not modify the loops or layers.

Undo Redo Checkpoint Move Slip Slip Forward Slip Backward

2.14.6 Loop Switch Functions


The functions in this class select the loop within a track to play. Usually this is a different loop than the one currently playing but some simply restart the current loop. This class of function is very important because most of them have loop switch behavior which can be quite complex.

Next Loop Previous Loop Sustain Next Loop Sustain Previous Loop Loop Restart Restart Once

2.14.7 Effect Functions


The functions in this class apply a temporary non-destructive effect to the loop. These functions will not generate a new layer unless they are used in combination with another editing function.

Reverse

Forward Backward Sustain Reverse Halfspeed Speed Down Speed Up Speed Next Speed Previous Speed Octave Speed Step Speed Bend Speed Toggle Sustain Speed Toggle Speed Cancel Pitch Down Pitch Up Pitch Next Pitch Previous Pitch Octave Pitch Step Pitch Bend Pitch Cancel Time Stretch

2.14.8 Mute Functions


The functions in this class all perform some form of mute, temporarily silencing the loop. They are similar to Effect Functions in that they are temporary and nondestructive. But it is important that they have their own class because it is used to define the behavior of the Mute Cancel Functions parameter.

Mute MuteOn MuteOff Sustain Mute Sustain Mute Restart Mute Realign Mute MIDI Start Pause Sustain Pause Play

2.14.9 Global Functions

The functions on this class do not operate directly on loops. Instead they operate on tracks or the entire collection of tracks.

Track Focus Lock Track Group Sample MIDI Start MIDI Stop Sync Master MIDI Sync Master Track Start Capture Save Capture Stop Capture Save Loop Bounce Global Mute Global Pause Solo

3 Major Modes
3.1 Confirm
Confirm mode is active while you are in the confirmation period of a loop switch. This happens when you have the Switch Quantize parameter set to Confirm, Confirm Subcycle, Confirm Cycle, or Confirm Loop. While you are in the confirmation period you may "stack" functions to be executed after the switch. When you are ready to do the switch you must use a confirmation function such as Confirm or any other function defined in the Confirmation Functions parameter. By default, the Undo function will also operate as a switch confirmation function. The loop is not being modified while in Confirm mode, though if Feedback is reduced the loop is allowed to decay. See Loop Switching in the Mobius Techniques manual for more information on loop switching and using switch quantization.

3.2 Insert
Insert mode is active while you are executing the Insert, Sustain Insert, or Sustain Unrounded Insert functions. During Insert mode new empty space is being added to the loop and any sound being received by the track is overdubbed into that space.

Insert is a rounding mode unless it was started by the Sustain Unrounded Insert function. During Insert mode, the Record function will cancel the rounding period and end the insert immediately.

3.3 Multiply
Insert mode is active while you are executing the Multiply, Sustain Multiply, or Sustain Unrounded Multiply functions. During Multiply mode new space may be added to the loop by copying the original cycle and appending it to the end. Sound being received by the track will be merged with the current content of the loop in the same way as Overdub mode. Multiply is a rounding mode unless it was started by the Sustain Unrounded Multiply function. During Multiply mode, the Record function will cancel the rounding period and end the multiply immediately.

3.4 Mute
Mute mode is unusual because it may be displayed as both a major and a minor mode. When the Mute minor mode is active, and no other major mode is active besides Play, we will display Mute as the major mode to make it easier to see. When the Mute minor mode is active, the loop will continue to advance but no sound will be sent out of the track. Mute mode is toggled by the Mute and Global Mute functions. Sustain Mute and Sustain Mute Restart will force mute on when the function trigger is pressed and force it off when the trigger is released. Mute Realign and Mute MIDI Start will force mute on, then automatically turn it off when certain synchronization points are reached. When you execute a function that wants to change the major mode, the loop may still remain muted during the new mode. Whether the mute continues or is canceled is determined by the Mute Cancel and Mute Cancel Functions parameters. If the mute is not canceled then the major mode will change and the loop may be modified, but it will still continue to be silent. You will continue to see Mute appear as a minor mode. This technique can be used to modify loops while the audience can't hear them creating a surprise when the loop is unmuted.

3.5 Overdub
Overdub mode is unusual because it may be displayed as both a major and a minor mode. When the Overdub minor mode is active and no other major mode is active besides Play, we will display Overdub as the major mode to make it easier to see. When Overdub is the major mode any sound being received by the track will be merged with the current content of the loop. When Overdub is a minor mode but is not displayed as the major mode, overdubbing is suspended and will resume when the current major mode ends. Leaving overdub suspended is a useful technique to create "seamless" recordings when changing from one mode to another. For example, if overdub is on and the major mode is Replace, when leaving Replace mode we will immediately enable Overdub mode and can avoid a fade out of the end of the replaced section.

Overdub mode is toggled by the Overdub function. The Sustain Overdub function will force overdub on when the trigger is pressed and off when it is released.

3.6 Pause
Pause mode is active while you are executing the Pause or Global Pause functions. During Pause mode the loop freezes and does not advance. No would will be sent out from the track. Pause mode is canceled by any major modal function.

3.7 Play
Play mode is the default system mode that is active when the loop is not empty and is not in any other major mode. During Play mode the loop will advance and the sound in the loop will be sent to the output device assigned to this track.

3.8 Record
Record mode is active while you are executing the Record, Auto Record, or Sustain Record functions. During Record mode, a new initial loop is being created and no sound will be sent out of the track.

3.9 Rehearse
Rehearse mode is active while you are executing the Rehearse function and you are in the rehearse phase, listening to what was just recorded. Rehearse is an unusual function because sets two major modes, Rehearse and Rehearse Record. Rehearse mode is a special form of Play mode, you will hear the loop that was just recorded but if you let the loop play to the end you will return to Rehearse Record mode.

3.10 Rehearse Record


Rehearse Record mode is active while you are executing the Rehearse function and you are in the record phase, recording a new loop. Rehearse is an unusual function because sets two major modes, Rehearse and Rehearse Record. Rehearse Record mode is a special form of Record mode, you are recording a new loop and no sound will be sent out of the track. Once you end the recording you will enter Rehearse mode where you can review what you just recorded and decide whether to keep it or make another recording.

3.11 Replace
Replace mode is active while you are executing the Replace or Sustain Replace functions. During Replace mode the current content of the loop is removed and replace with the sound being received by the track.

3.12 Reset
Reset mode is a default system mode that will be active whenever the loop is empty. All loops will be in Reset mode when Mobius is started for the first time. Loops may also be placed in Reset mode after loading a project that does not contain audio content for every loop. Once a loop has content, you can make it empty by executing the Reset, Track Reset, or Global Reset functions.

3.13 Run
Run mode is an internal system mode that you normally will never see. It is involved with latency compensation and usually lasts such a brief period of time that it won't be seen in the user interface. The loop is not being changed during Run mode, though it may be playing.

3.14 Solo
Solo mode is activated by the Solo function. The loop that is in Solo mode will be heard playing, but the loops in all other tracks will be muted. The other tracks will be in Solo Mute mode.

3.15 Solo Mute


Solo Mute mode is activated by the Solo function. The active loop in the active track will enter Solo mode and all other tracks will enter Solo Mute mode. While a track is in Solo Mute mode, no sound will be sent out from the track.

3.16 Stutter
Stutter mode is active when you are executing the Stutter or Sustain Stutter functions. During Stutter mode the loop is being extended by copying the contents previous cycle and inserting it after the end of that cycle. After a cycle has been inserted, sound being received by the track will be merged with content of the new cycle in the same way as Overdub mode.

3.17 Substitute
Substitute mode is active while you are executing the Substitute or Sustain Substitute functions. During Substitute mode the current content of the loop may be completely or partially removed and merged with the sound being received by the track.

3.18 Switch
Switch mode is active whenever you have used Next Loop or any of the other loop switching functions and the Switch Quantize parameter is set to something other than Off. The switch is being delayed until a quantization point. During Switch mode you can "stack" functions to be executed after the switch.

3.19 Synchronize
Synchronize mode is active when you have executed a Record, Auto Record, or Sustain Record function, and the loop is waiting for a synchronization pulse to begin recording. This can happen when Sync Source or Default Sync Source is set to something other than None. During Synchronize mode the loop is not changing or playing.

3.20 Threshold
Threshold mode is active when you have executed a Record, Auto Record, or Sustain Record function, and the loop is waiting for an audio signal to be received by the track whose average volume exceeds a threshold. This happens when the Record Threshold parameter is set to a value greater than zero. During Threshold mode the loop is not changing or playing.

4 Minor Modes
4.1 Capture
Capture mode is active after executing the Start Capture function. While Capture mode is active, all audio being received by and sent from the tracks is captured and may be saved to a file. Capture mode is ended by the Stop Capture or Save Capture functions.

4.2 Master
Master mode is active after a loop has been recorded and the track containing it becomes both the MIDI Sync Master and the Track Sync Master track. When a track is the MIDI Sync Master it will send MIDI clocks to the configured output device at a tempo calculated from the loop length. When a track is the Track Sync Master other tracks will synchronize the start and end of the Record function to quantization points in the master track.

4.3 MIDI Master


MIDI Master mode is active after a loop has been recorded and the track containing the MIDI Sync Master track. When a track is the MIDI Sync Master it will send MIDI clocks to the configured output device at a tempo calculated from the loop length.

4.4 Mute
Mute mode is active after executing the Mute, Global Mute, Mute Realign, Mute MIDI Start, Sustain Mute, or Sustain Mute Restart functions. During Mute mode the loop will continue to advance but no sound will be sent out of the track.

Mute mode is unusual because it is both a major and a minor mode. When the Mute minor mode is active and no other major mode is active besides Play, we will display Mute as the major mode. When you execute a function that wants to change the major mode, the loop may still remain muted during the new mode. Whether the mute continues or is canceled is determined by the Mute Cancel and Mute Cancel Functions parameters. If the mute is not canceled then the major mode will change and the loop may be modified, but it will still continue to be silent. You will continue to see Mute appear as a minor mode. This technique can be used to modify loops while the audience can't hear them creating a surprise when the loop is unmuted.

4.5 Overdub
Overdub mode is active after executing the Overdub or Sustain Overdub functions. During Overdub mode any sound being received by the track will be merged with the current content of the loop. Overdub mode is unusual because it is both a major and a minor mode. When the Overdub minor mode is active and no other major mode is active besides Play, we will display Overdub as the major mode to make it easier to see.

4.6 Pitch Bend


Pitch Bend mode is active after executing the PitchBend script function or more commonly after using the PitchBend control. It indicates that the output of the loop is being passed through a pitch shifting effect. In the user interface the mode will be displayed with a positive or negative number to indicate the degree and direction of the bend. For example "Pitch 3498" and "Pitch -1287". The range of values corresponds to the MIDI Pitch Bend range with a minimum value of -8192 and a maximum of 8181. A bend of zero means there is no pitch bend being applied.

4.7 Pitch Octave


Pitch Octave mode is active after executing the PitchOctave script function or more commonly using the Pitch Octave control. It indicates that the output of the loop is being passed through a pitch shifting effect. In the user interface the mode will be displayed with a positive or negative number to indicate the degree and direction of the shift in octaves. For example "Pitch 1" means up one octave and "Pitch -2" means down two octaves.

4.8 Pitch Step


Pitch Step mode is active after executing the PitchStep script function or more commonly using the Pitch Step control. It indicates that the output of the loop is being passed through a pitch shifting effect. In the user interface the mode will be displayed with a positive or negative number to indicate the degree and direction of the shift in semitones. For example "Pitch 5" and "Pitch -2".

4.9 Reverse

Reverse mode is active whenever the loop is playing backward from the end to the beginning. It may be activated by the Reverse or Backward functions.

4.10 Speed Bend


Speed Bend mode is active after executing the SpeedBend script function or more commonly using the Speed Bend control. This mode will be displayed with a number that indiciates the amount of speed change in positive or negative units, for example "SpeedBend 3048" and "SpeedBend -578". Unlike most controls the value range is large to match the range of the MIDI Pitch Bend wheel.

4.11 Speed Octave


Speed Octave mode is active after executing the SpeedOctave script function or more commonly using the Speed Octave control. This mode will be displayed with a number that indiciates the amount of speed change in positive or negative octaves, for example "SpeedOct 2" and "SpeedOct -1"

4.12 Speed Step


Speed Step mode is active after executing Speed Step or several other functions in the Speed function family. It indicates that the playback and record speed of the loop is being adjusted in semitone steps. The audible effect is that the loop changes pitch but also speeds up or slows down. In the user interface the mode will be displayed a positive or negative number to indicate the degree and direction of the change. For example "SpeedStep 5" and "SpeedStep -7".

4.13 Speed Toggle


Speed Toggle mode is active after executing the Speed Toggle or Sustain Speed Toggle functions. It indiciates that a speed change in semitones is being applied, and that this change will be canceled when one of the toggle fucntions is used again. The mode will be displayed with a number indiciating the amount of positive or negative speed change. When running in half speed, it will display "SpeedToggle -12". Note that releases of Mobius prior to 2.2 called this mode "1/2 Speed". In 2.2 this was generalized to support toggle between any semitone step.

4.14 Time Stretch


Time Stretch mode is active after executing the TimeStretch script function or more commonly using the Time Stretch control. This mode will be displayed with a number that indiciates the amount of time stretch in positive or negative units, for example "TimeStretch 3048" and "TimeStretch -578". Unlike most controls the value range is large to match the range of the MIDI Pitch Bend wheel.

4.15 Track Master

Track Master mode is active after a loop has been recorded and the track containing it becomes the Track Sync Master track. When a track is the Track Sync Master other tracks will synchronize the start and end of the Record function to quantization points in the master track.

4.16 Window
Window mode is active after using one of the Loop Window Functions. The current recording is canceled, the loop returns to Play mode and the window may be moved forward or backward in history.

5 Functions
5.1 Auto Record
Internal name: AutoRecord Auto Record starts a loop recording that ends by itself automatically after a configured number of bars. The length of the recording is determined by the Sync Source, Beats Per Bar, Auto Record Bars, and Auto Record Tempo parameters. This is a modal function that sets the major mode to Record while it is active. Unlike most modal functions you do not have to execute another function to end Record mode, it will end by itself when the calculated number of bars has been recorded. The function is not sensitive to the Quantize Mode parameter, it will cancel all major modes and execute immediately. Unlike Record this function does not cancel rounding modes. The function is sensitive to the Record Threshold parameter which will defer the start of the recording until a loud enough signal is received. While waiting for a proper threshold the loop will be in Threshold mode. If the Sync Source parameter is set to MIDI or Host, executing this function may enter Synchronize mode temporarily waiting for the next sync pulse. To calculate the loop length the Beats Per Bar setup parameter is multiplied by the Auto Record Bars preset parameter to get to the total number of beats to record. This is then combined with a tempo which determines the amount of time in each beat. How the tempo is determined depends on the Sync Source parameter. When Sync Source is MIDI the tempo is calculated from incoming MIDI clock messages. When Sync Source is Host the tempo is given to the plugin by the host application. When Sync Source is Off or Out and this track is the MIDI Sync Master track, the tempo is determined by the Auto Record Tempo parameter. If the current track was recorded with Track Sync and is following a master track, then a tempo is not used to calculate the loop length. Instead the total number of beats from Beats Per Bar and Auto Record Bars is multiplied by the length of the subcycle in the master track. See Record in the Mobius Techniques manual for more information.

5.2 Backward

Internal name: Backward Backward forces the loop direction into reverse and sets the Reverse minor mode. Unlike the Reverse function this does not toggle Reverse mode, if you are already in reverse the function has no effect. This function will obey the Quantize Mode parameter. Changing direction will end most major modes, see the documentation for Reverse for a full list. This function has no effect on minor modes besides Reverse. See Changing Direction in the Mobius Techniques manual for more information.

5.3 Bounce
Internal name: Bounce Bounce is used to merge the contents of one or more tracks and save the result to another track. This is similar to "bouncing" in traditional recording systems. Bounce is really just a special form of Capture. If the Capture minor mode is not active, Bounce behaves the same as Start Capture, it will begin mixing the output of all unmuted tracks and storing it in a temporary capture area. When the Bounce function is used during Capture mode it end Capture mode and stores the captured audio in an empty track loop. After creating the new loop all tracks that were unmuted at the time of the bounce will be muted, this mute is not quantized. The bounced recording will be placed in the first track from the left that has an empty loop selected. If there are no tracks with an empty loop the bounce is discarded. This function does not obey the Quantize Mode parameter but it will obey the Bounce Quantize parameter. This may delay the start and end of the bounce if the active loop in the active track has content. If the active loop in the active track is empty then Bounce Quantize is ignored. Bounce will not end any major modes in progress when the capture starts but muting the source tracks when the capture ends will cancel all major modes. See Bounce Recording in the Mobius Techniques manual for more information.

5.4 Checkpoint
Internal name: Checkpoint Checkpoint creates a new layer checkpoint and collapses the display of layers between the new checkpoint and the last checkpoint. When you use the Undo and Redo functions to move between layers, they will skip over any layers between two checkpoints. If you use Checkpoint on a layer that is already a checkpoint, the checkpoint is removed and all the layers between they current layer and the previous checkpoint are restored. This function is not considered to be a loop editing function, it is not quantized and will not end any major or minor modes. See Managing Layers in the Mobius Techniques manual for more information.

5.5 Clear
Internal name: Clear Clear erases the current contents of the loop, leaving a silent loop the same size as the original. A new layer is created so you can use Undo to return to the original loop. See Reset, Empty, Clear, and Silent for a discussion about the difference between these similar terms. This function is not quantized. It is considered an instant edit function so it will end the following modes.

Insert Multiply Stutter Replace Substitute Record Rehearse

This function is ignored in these modes.


Reset Threshold Synchronize

This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch. See Replace in the Mobius Techniques manual for more information about techniques to replace parts of a loop.

5.6 Confirm
Internal name: Confirm This function can be used to confirm a loop switch during Confirm and Switch modes. When the Switch Quantize parameter is set to one of the confirmation modes, this function will end the confirmation period and start the switch quantization period. If the loop is in the switch confirmation period it will cause the switch to happen immediately. This function has no other purpose outside of Confirm and Switch modes. The EDP does not have this function, instead the Undo function has this behavior during the switch quantization period. This function is provided as an alternative in case you would Undo to behave normally and remove stacked functions during Confirm mode.

5.7 Divide

Internal names: Divide, Divide2, Divide3, Divide4 The Divide functions cause an immediate reduction in the loop size. The amount of the reduction is determined by the divisor which is the number in the name of the function. Divide 2 will divide the loop length in half, Divide 3 will divide the loop length by 3, and Divide 4 will divide the loop length by 4. The division functions are similar to the Instant Multiply functions except they work in the other direction, cutting the loop into smaller pieces then selecting one of those pieces. The division happens immediately and a new layer is created with the shorter loop. You can use Undo to return to the original loop. The new loop will contain the portion of the original loop that you were in at the time the function was executed. For example if a loop is 4 seconds long and you execute Divide 2 while the current loop location is at the end of second 1, the new loop will contain seconds 1 and 2 of the original loop. If instead you execute Divide 2 when the current loop location is at the end of second 3, the new loop will contain seconds 3 and 4 of the original loop. The function named just Divide without a number is accessible only scripts. With this function the divisor is specified as an argument written after the function name. See Divide in the Mobius Scripting manual for usage examples. This function is not quantized. It is considered an instant edit function so it will end the following modes.

Insert Multiply Stutter Replace Substitute Record Rehearse

This function is ignored in these modes.


Reset Threshold Synchronize

This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch. See Shorting The Loop in the Mobius Techniques manual for more information.

5.8 Focus Lock


Internal name: FocusLock Focus Lock toggles the focus lock track parameter.

This function has no effect on the loop, it simply changes the way future functions will behave. It is not quantized and does not have any effect on major or minor modes. See Focus Lock in the Exploring Mobius manual for more information.

5.9 Forward
Internal name: Forward Forward forces the loop into the normal forward direction. If the loop is already playing forward the function has no effect. Forward is a minor modal function in the Reverse function family that will end Reverse mode. This function will obey the Quantize Mode parameter. Changing direction will end most major modes, see the documentation for Reverse for a full list. See Changing Direction in the Mobius Techniques manual for more information.

5.10 Global Mute


Internal name: GlobalMute Global Mute mutes all tracks that are currently playing, but does not unmute any tracks that are currently muted. If you use Global Mute again, it will unmute only those tracks that were originally playing when Global Mute was executed the first time. Global Mute sets a special Global Mute major mode that all tracks will have. If you execute any function besides Global Mute while the tracks are in Global Mute mode, the mode is canceled and you will not be able to automatically restore the previous track mute states. This function will obey the Quantize Mode parameter in the active track and will end the major modes in all tracks. See Mute, Pause, and Solo in the Mobius Techniques manual for more information.

5.11 Global Pause


Internal name: GlobalPause Global Pause will pause all tracks that are currently playing, but will not unpause any tracks that are currently paused. If you use Global Pause a second time, it will unpause only those tracks that were previously playing. Note that this is different than simply toggling the current pause state in all tracks. Global Pause sets a special Global Pause major mode that all tracks will have. If you execute any function besides Global Pause while the tracks are in Global Pause mode, the mode is canceled and you will not be able to automatically restore the previous track pause states. This function will obey the Quantize Mode parameter in the active track and will end the major modes in all tracks.

See Mute, Pause, and Solo in the Mobius Techniques manual for more information.

5.12 Global Reset


Internal name: GlobalReset Global Reset performs the Track Reset function in all tracks, restores the settings from the current track setup to all tracks, cancels running scripts, resets global variables, and does other internal housekeeping to return Mobius to the state it has when it is first started. This function does not obey the Quantize Mode parameter and will cancel all major and minor modes in all tracks. See Reset in the Mobius Techniques manual for more information.

5.13 Halfspeed
Internal name: Halfspeed Halfspeed changes the loop speed so that it plays twice as long and sounds one octave lower. It is an older function that is provided for backward compatibility. If you are writing scripts it is recommended that you use the more general Speed Step function. Executing Halfspeed is identical to executing the Speed Step function with an argument of -12. This function will obey the Quantize Mode parameter. This function will not cancel most major modes. You may continue modifying the loop while the speed is changing. See Speed Shift in the Mobius Techniques manual for more information on speed shifting.

5.14 Insert
Internal name: Insert Insert inserts new clear space into a loop and allows you to overdub into the new space. This is a major modal function that sets the mode to Insert while it is active. Insert is a rounding mode that will preserve the loop's cycle length unless you force rounding off. The Record function has modal behavior during Insert mode. It will cause an immediate termination of the insert without rounding and return the loop to Play or Overdub mode. This is called an "unrounded insert". This function will obey the Quantize Mode parameter. This function will end the following major modes.

Insert Multiply Stutter Replace

Substitute Record Rehearse

This function is ignored in Reset, Threshold and Synchronize modes. This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function changes behavior in Confirm and Switch modes. It will "stack" and be executed after the loop switch where it will perform a Time Copy from the current loop into the next loop. See Extending The Loop With Insert in the Mobius Techniques manual for more information.

5.15 Instant Multiply


Internal names: InstantMultply, InstantMultiply2, InstantMultiply3, InstantMultiply4 Performs an immediate extension of the loop. This differs from the Multiply function in that the loop is not extended over time. The current loop is simply copied, then those copies are appended some number of times. The number of cycles will be multiplied by the same amount but the cycle length remains the same. The amount the loop is extended is determined by the multiplier which is the number in the function name. Instant Multiply 2 will double the loop length, Instant Multiply 3 will triple the loop length, and Instant Multiply 4 will quadruple the loop length. The extension happens immediately and a new layer is created to hold the longer loop. You can use Undo to return to the original loop. The function with internal name InstantMultiply without a number may only be used in scripts. The multiplier is specified as an argument to the function. See InstantMultiply in the Mobius Scripting manual for usage examples. These functions are not quantized. They are considered to be instant edit functions so they will end the following modes.

Insert Multiply Stutter Replace Substitute Record Rehearse

This function is ignored in Reset, Threshold and Synchronize modes. This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch.

See Extending The Loop With Multiply in the Mobius Techniques manual for more information.

5.16 Loop
Internal names: Loop, Loop1, Loop2, Loop3,..., Loop8 The Loop family of functions switch directly to a numbered loop. If the track is already playing this loop the effect will be the same as the Restart function. Since these are loop switch functions many options are available to control when the switch happens, and what happens after the switch. The following parameters may all influence the loop switch:

Switch Quantize Switch Location Switch Duration Return Location Switch Velocity Sensitive Overdub Transfer Pitch Transfer Speed Transfer Record Transfer Reverse Transfer

The timing of this function is controlled by the Switch Quantize parameter. Using the numbered loop functions with Switch Duration set to Once, Switch Location set to Start, and Switch Velocity Sensitive set to true will make Mobius behave like a simple sample player. The function named just Loop without a number is accessible only in scripts. With this function the loop you want to trigger is specified as a function argument. See Loop in the Mobius Scripting manual for usage examples. These functions will end the following major modes.

Insert Multiply Record Rehearse Replace Stutter Substitute

These functions will cancel Threshold and Synchronize modes. If there is a pending recording in the current loop it will not be carried over to the next loop. These functions will change the number of the next loop during Confirm and Switch modes.

These functions may end Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. See Loop Switching in the Mobius Techniques manual for more information.

5.17 Loop Copy


Internal name: LoopCopy Loop Copy will copy the contents of the previously active loop into the currently active loop.

5.18 MIDI Out


Internal name: MidiOut MIDIOut can send any MIDI message to the configured MIDI output device. This function is accessible only from scripts. See MidiOut in the Mobius Scripting manual for more information. This function does not change the current loop and has no effect on major or minor modes.

5.19 MIDI Start


Internal name: MidiStart MIDI Start waits for the loop start point, then sends a MIDI Start message to the configured MIDI output device. See also Mute MIDI Start which will first mute the loop. This function must be used to start the generation of MIDI clocks when Sync Source is Out and Out Sync Manual Start is enabled. It is also useful to bring the Mobius loop and an external drum machine or pattern sequencer back into alignment after clocks have been started. This is not a modal function, instead it schedules an event that will be executed at the loop start point. You can use the Undo function to cancel this event. Aside from the event it does not change the loop and has no effect on major or minor modes. See Out Sync Manual Start and Realign Alternatives - MIDI Start and Mute MIDI Start in the Mobius Synchronization manual for examples of how to use MIDI Start

5.20 MIDI Stop


Internal name: MidiStop MIDI Stop sends a MIDI Stop message immediately to the configured MIDI output devices. MIDI clocks will continue to be generated so that slaves devices can continue tracking the master clock tempo. This is typically used to temporarily stop a drum machine or pattern sequencer that is slaving to Mobius MIDI clocks. Use MIDI Start to restart the slave devices. See Sending MIDI Messages in the Mobius Techniques manual for more information.

This function does not change the loop and has no effect on major or minor modes.

5.21 Move
Internal name: Move Move will instantly move the loop playback position to a new location. This function is not quantized and is accessible only from scripts. See Move in the Mobius Scripting manual for usage examples. This function will end the following major modes and may be delayed due to rounding.

Insert Multiply Record Rehearse Replace Stutter Substitute

This function is ignored in these modes.


Reset Threshold Synchronize

This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch.

5.22 Multiply
Internal name: Multiply Multiply is a complex function that can be used to both make the loop longer and shorter. It is influenced by the Multiply Mode parameter. Multiply is a major modal function that sets the mode to Multiply while it is active. Multiply is a rounding mode that will preserve the loop's cycle length unless you force rounding off. After a loop has been recorded and still has only one cycle, Multiply will make the loop larger by appending copies of the original for as long as multiply mode is active. Once a loop has more than one cycle, Multiply can both extend the loop and resize it to make it smaller. The Record function has modal behavior during Multiply mode. It will cause an immediate termination of the multiply without rounding and return the loop to Play or Overdub mode. This is called an "unrounded multiply". This function will obey the Quantize Mode parameter. This function will end the following major modes.

Insert Multiply Stutter Replace Substitute Record Rehearse

This function is ignored in Reset, Threshold and Synchronize modes. This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function changes behavior in Confirm and Switch modes. It will "stack" and be executed after the loop switch where it will perform a Loop Copy from the current loop into the next loop. See Extending The Loop With Multiply and Shortening The Loop in the Mobius Techniques manual for more information.

5.23 Mute
Internal name: Mute Mute will silence the loop. Mute is a minor modal function that will toggle Mute mode. During mute mode the loop will continue to play, you will see loop meter advancing in the user interface, but no sound will be sent out from that track. There are several options for what happens when you exit mute mode, these are defined by the Mute Mode parameter. You usually end mute mode by executing the Mute function again, but you can also cancel mute mode automatically when other functions are executed. The Mute Cancel preset parameter and Mute Cancel Functions global parameter control which functions will cancel mute mode. When the track being muted is the MIDI Master Sync track, there are several options for what happens to the MIDI clocks being generated. This is controlled by the Out Sync Mute Action parameter. Mute is an unusual mode because while it is primarily a minor mode, it will also be displayed as a major mode if there are no other major modes active. If Mute minor mode is active and the loop enters the Play major mode, the major mode is set to Mute instead. This function will obey the Quantize Mode parameter. This function will end the following major modes and may be delayed due to rounding.

Insert Multiply Record Rehearse

Replace Stutter Substitute

This function is ignored in these modes.


Reset Threshold Synchronize

This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch. See also Pause, MuteOn, and MuteOff See Mute, Pause, and Solo in the Mobius Techniques manual for more information.

5.24 Mute MIDI Start


Internal name: MuteMidiStart Mute MIDI Start will first execute the Mute function, then it waits for the loop start point. At the loop start point it will send a MIDI Start message to the configured MIDI output device, then cancel Mute mode. This function is similar to MIDI Start which does not mute the track before waiting for the start point. Since this is a form of the Mute function it will cancel most major modes. See Mute for details. Unlike Mute, this function is not quantized, the mute will always begin immediately unless it is being delayed due to rounding. After the mute, an event is scheduled for the loop start point to send the MIDI message. Undo can be used to cancel this event. See Out Sync Manual Start and Realign Alternatives - MIDI Start and Mute MIDI Start in the Mobius Synchronization manual for examples of how to use MIDI Start

5.25 MuteOff
Internal name: MuteOff MuteOff will cancel the Mute minor mode. If the loop is not in mute mode the function has no effect. This function is not quantized and is accessible only in scripts. See MuteOff in the Mobius Scripting manual for usage examples. The Mute Mode parameter determines what will happen when Mute mode is canceled.

5.26 MuteOn
Internal name: MuteOn

MuteOn will activate the Mute minor mode and immediately silence the loop. If the loop is already muted the function has no effect. This function is not quantized and is accessible only in scripts. See MuteOn in the Mobius Scripting manual for usage examples. Starting Mute mode will cancel most other major modes, see the Mute function for more information.

5.27 Mute Realign


Internal name: MuteRealign Mute Realign is the same as the Realign function except that it first activates the Mute minor mode and silences the loop. Note that unlike the Mute function, Mute Realign is not quantized, the mute will always begin immediately. When the realign point is reached Mute mode is canceled and the loop is restarted from the beginning. Mute Mode is not used. Starting Mute mode will cancel most other major modes, see the Mute function for more information. See Realign in the Mobius Synchronization manual for more information.

5.28 Next Loop


Internal name: NextLoop Next Loop will switch to the loop whose number is one greater than the number of the current loop. If the current loop is the last one in the track, Next Loop will switch to the first loop. Since this is a loop switch function many options are available to control when the switch happens, and what happens after the switch. The following parameters may all influence the loop switch:

Switch Quantize Switch Location Switch Duration Return Location Switch Velocity Sensitive Overdub Transfer Pitch Transfer Speed Transfer Record Transfer Reverse Transfer

This function will end the following major modes.


Insert Multiply Record

Rehearse Replace Stutter Substitute

This function will cancel Threshold and Synchronize modes. If there is a pending recording in the current loop it will not be carried over to the next loop. This function will change the number of the next loop during Confirm and Switch modes. This function may end Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. See Loop Switching in the Mobius Techniques manual for more information.

5.29 Next Track


Internal name: NextTrack Next Track will active the track whose number is one greater than the number of the current track. If the last track is active, Next Track will activate the first track. If the next track is empty, the Empty Track Action parameter determines what actions will be taken. Changing the track may cancel recording modes in the current track. See Track for details. See also Previous Track. See Track Copy in the Mobius Synchronization manual for more information on using Empty Track Action.

5.30 Overdub
Internal name: Overdub Overdub will toggle the Overdub minor mode. If the current major mode is Play then Overdub will also become the major mode. While Overdub is the major mode, sound being received by the track will be combined with the current loop content creating a new layer with both the old and new sounds. This function may obey the Quantize Mode parameter, but only if the Overdub Quantized parameter is checked. Overdub will not cancel any major modes except Mute and Mute depending on the values of Mute Cancel and Mute Cancel Functions. Overdub is an unusual mode because while it is primarily a minor mode, it will also become the major mode if no other major modes override it. If you execute another major modal function, the Overdub major mode will be canceled and overdubbing into the loop will stop. But the Overdub minor mode will still be active. When the current major mode ends and returns the loop to Play mode, if the Overdub minor mode is still active, then Overdub will once again become the major mode and overdubbing into the loop will be resumed.

See also OverdubOff and OverdubOn During Switch mode, Overdub has special modal behavior. It will cause the current loop to be copied into the next loop and will leave the next loop in Overdub mode. See Overdub in the Mobius Techniques manual for more information.

5.31 OverdubOff
Internal name: OverdubOff OverdubOff forces the Overdub minor mode off. If Overdub is also the major mode, the loop will return to Play mode. If Overdub mode is already off the function will have no effect. This function is not quantized and is accessible only in scripts. See OverdubOff in the Mobius Scripting manual for usage examples. See Overdub for more information on how the Overdub minor and major modes interact.

5.32 OverdubOn
Internal name: OverdubOn OverdubOn activates the Overdub minor mode. If overdub mode is already active the function has no effect. If the current major mode is Play then Overdub also becomes the major mode and overdubbing will begin. This function is not quantized and is accessible only in scripts. See OverdubOn in the Mobius Scripting manual for usage examples. See Overdub for more information on how the Overdub minor and major modes interact.

5.33 Pause
Internal name: Pause Pause is a special form of Mute that will both mute the track and also freeze the active loop's playback position. You will see the loop meter in the user interface stop advancing. When pause mode is canceled the loop begins playing from its previous location. The effect is similar to pressing the pause button on an audio recorder. Unlike Mute, Pause is always a major modal function that will cancel the current mode and activate Pause mode. You usually end pause mode by executing the Pause function again, but you can also cancel pause mode by executing any other major modal function. Note that the Mute Cancel preset parameter does not apply to the Pause function. This behavior is also available with the Mute function when you set Mute Mode to Pause. When the track being paused is the MIDI Sync Master track, there are several options for what happens to the MIDI clocks being generated. This is controlled by the Out Sync Mute Action parameter.

See Mute, Pause, and Solo in the Mobius Techniques manual for more information.

5.34 PitchBend
Internal name: PitchBend PitchBend is available only in scripts. It will change the pitch of the loop up or down in small intervals. The number of intervals is specified as an argument to the fucntion. See PitchBend in the Mobius Scripting manual for usage examples. While this can be called as a function it is expected that pitch bend be usually performed by changing the value of the Pitch Bend control. See Pitch Shift in the Mobius Techniques manual for more information about pitch shifting.

5.35 Pitch Cancel


Internal name: PitchCancel Pitch Cancel cancels all forms of pitch change and returns the loop to normal pitch. This will cancel the PitchOctave, PitchStep, and PitchBend minor modes. This function will obey the Quantize Mode parameter. This function will not cancel any other major or minor modes. See Pitch Shift in the Mobius Techniques manual for more information. Return the pitch to normal.

5.36 Pitch Down


Internal name: PitchDown Pitch Down decreases the pitch of the loop by one semitone. If the amount of pitch shift becomes non-zero, then the Pitch Step minor mode will become active and displayed in the user interface. If the pitch shift becomes zero (normal) then Pitch Step mode is canceled. This function will obey the Quantize Mode parameter. This function will not cancel any other major or minor modes. See Pitch Shift in the Mobius Techniques manual for more information.

5.37 Pitch Next


Internal name: PitchNext Pitch Next sets the loop to the next pitch in the Pitch Sequence and increments the sequence position. If you are currently at the end of the sequence, the first pitch in the sequence is chosen. See the Pitch Sequence parameter for more information on defining a pitch sequence.

If the amount of pitch shift becomes non-zero, then the Pitch Step minor mode will become active and displayed in the user interface. If the pitch shift becomes zero (normal) then Pitch Step mode is canceled. This function will obey the Quantize Mode parameter. This function will not cancel any other major or minor modes. See Pitch Shift in the Mobius Techniques manual for more information.

5.38 PitchOctave
Internal name: PitchOctave PitchOctave is available only in scripts. It will change the playback pitch of the loop up or down in octave intervals. The number of octaves is specified as an argument to the fucntion. See PitchOctave in the Mobius Scripting manual for usage examples. See Pitch Shift in the Mobius Techniques manual for more information about speed shifting.

5.39 Pitch Previous


Internal name: PitchPrev Pitch Previous sets the loop to the previous pitch in the Pitch Sequence and decrements the sequence position. If you are currently at the first pitch in the sequence, the last pitch in the sequence is chosen. See the Pitch Sequence parameter for more information on defining a pitch sequence. If the amount of pitch shift becomes non-zero, then the Pitch Step minor mode will become active and displayed in the user interface. If the pitch shift becomes zero (normal) then Pitch Step mode is canceled. This function will obey the Quantize Mode parameter. This function will not cancel any other major or minor modes. See Pitch Shift in the Mobius Techniques manual for more information.

5.40 Pitch Step


Internal name: PitchStep Pitch Step can change the pitch of the loop up or down by a number of semitones. It is a ranged function which means that it must be bound to a trigger that supports a continuous range of values such as MIDI notes or MIDI continuous controllers. It is almost always bound to a MIDI note from a keyboard so you can adjust pitch shift chromatically by playing the keyboard normally. The value of the note in the binding becomes the center point of the shift range. If you press this note the pitch returns to normal. If you press notes on either side of the center note, the pitch will be raised or lowered by the corresponding number of semitones. The range of notes that will cause a pitch shift is determined by the Speed/Pitch Note Range global parameter.

If the amount of pitch shift becomes non-zero, then the Pitch Step minor mode will become active and displayed in the user interface. If the pitch shift becomes zero (normal) then Pitch Step mode is canceled. This function will obey the Quantize Mode parameter. This function will not cancel any other major or minor modes. PitchStep may also be used in scripts but it is not ranged. Instead the amount of shift is specified as an argument to the function. See PitchStep in the Mobius Scripting manual for usage examples. See Pitch Shift in the Mobius Techniques manual for more information.

5.41 Pitch Up
Internal name: PitchUp Pitch Up increases the pitch of the loop by one semitone. If the amount of pitch shift becomes non-zero, then the Pitch Step minor mode will become active and displayed in the user interface. If the pitch shift becomes zero (normal) then Pitch Step mode is canceled. This function will obey the Quantize Mode parameter. This function will not cancel any other major or minor modes. See Pitch Shift in the Mobius Techniques manual for more information.

5.42 Play
Internal name: Play Play will end the current major mode and return to the loop to the default Play mode. If the loop is currently in Reset or Play mode the function is ignored. You can think of Play as a universal major mode cancel function. It will get you out of modes like Insert, Multiply, Rehearse, Replace, Substitute, Overdub, and Mute and return to Play mode without having to remember to press right button for the current mode. Play does not however cancel most minor modes. like Reverse or SpeedStep. Play will cancel the Overdub and Mute minor modes. This function will end the following major modes and may be delayed due to rounding.

Insert Multiply Mute Pause Record Rehearse Replace Stutter Substitute

Switch

This function is ignored in these modes.


Reset Threshold Synchronize

See Play in the Mobius Techniques manual for more information.

5.43 Previous Loop


Internal name: PrevLoop Previous Loop will switch to the loop whose number is one less than the number of the current loop. If the current loop is the first one in the track, Previous Loop will switch to the last loop. Since this is a loop switch function many options are available to control when the switch happens, and what happens after the switch. The following parameters may all influence the loop switch:

Switch Quantize Switch Location Switch Duration Return Location Switch Velocity Sensitive Overdub Transfer Pitch Transfer Speed Transfer Record Transfer Reverse Transfer

This function will end the following major modes.


Insert Multiply Record Rehearse Replace Stutter Substitute

This function will cancel Threshold and Synchronize modes. If there is a pending recording in the current loop it will not be carried over to the next loop. This function will change the number of the next loop during Confirm and Switch modes. This function may end Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions.

See Loop Switching in the Mobius Techniques manual for more information.

5.44 Previous Track


Internal name: PrevTrack Previous Track will active the track whose number is one less than the number of the current track. If the first track is active, Previous Track will activate the last track. If the previous track is empty, the Empty Track Action parameter determines what actions will be taken. Changing tracks may cancel recording modes in the current track. See Track for details. See also Next Track. See Track Copy in the Mobius Synchronization manual for more information on using Empty Track Action.

5.45 SpeedBend
Internal name: SpeedBend SpeedBend is available only in scripts. It will change the playback speed of the loop up or down in small intervals. The number of intervals is specified as an argument to the fucntion. See SpeedBend in the Mobius Scripting manual for usage examples. While this can be called as a function it is expected that speed bend be usually performed by changing the value of the Speed Bend control. See Speed Shift in the Mobius Techniques manual for more information about speed shifting.

5.46 Speed Cancel


Internal name: SpeedCancel Aliases: RateNormal, Fullspeed Speed Cancel cancels the effects of all forms of speed change and returns the loop to normal speed. This will cancel the SpeedOctave, SpeedStep, SpeedBend, and SpeedToggle minor modes. This function will obey the Quantize Mode parameter. This function will not effect any other major or minor modes not related to speed shift. See Speed Shift in the Mobius Techniques manual for more information.

5.47 Speed Down


Internal name: SpeedDown Aliases: RateDown

Speed Down decreases the playback speed by an amount that will sound like a one semitone drop in pitch. If the amount of speed shift becomes non-zero, then the SpeedStep minor mode will become active and displayed in the user interface. If the speed shift becomes zero (normal) then SpeedStep mode is canceled. This function will obey the Quantize Mode parameter. This function will not effect any other major or minor modes. See Speed Shift in the Mobius Techniques manual for more information.

5.48 Speed Next


Internal name: SpeedNext Aliases: RateNext Speed Next sets the loop to the next playback speed in the Speed Sequence and increments the sequence position. If you are currently at the end of the sequence, the first speed in the sequence is chosen. See the Speed Sequence parameter for more information on defining a speed sequence. If the amount of speed shift becomes non-zero, then the SpeedStep minor mode will become active and displayed in the user interface. If the speed shift becomes zero (normal) then SpeedStep mode is canceled. This function obey the Quantize Mode parameter. This function will not effect any other major or minor modes. See Speed Shift in the Mobius Techniques manual for more information.

5.49 SpeedOctave
Internal name: SpeedOctave SpeedOctave is available only in scripts. It will change the playback speed of the loop up or down in octave intervals. The number of octaves is specified as an argument to the fucntion. See SpeedOctave in the Mobius Scripting manual for usage examples. See Speed Shift in the Mobius Techniques manual for more information about speed shifting.

5.50 Speed Previous


Internal name: SpeedPrev Aliases: RatePrev Speed Previous sets the loop to the previous playback speed in the Speed Sequence and decrements the sequence position. If you are currently at the beginning of the sequence, the last speed in the sequence is chosen. See the Speed Sequence parameter for more information on defining a speed sequence.

If the amount of speed shift becomes non-zero, then the Speed Step minor mode will become active and displayed in the user interface. If the speed shift becomes zero (normal) then SpeedStep mode is canceled. This function will obey the Quantize Mode parameter. THis function will not effect any other major or minor modes. See Speed Shift in the Mobius Techniques manual for more information.

5.51 Speed Step


Internal name: SpeedStep Aliases: RateShift Speed Step can change the playback speed of the loop up or down to achieve a pitch change in a number of semitones. It is a ranged function which means that it must be bound to a trigger that supports a continuous range of values such as MIDI notes or MIDI continuous controllers. It is almost always bound to a MIDI note from a keyboard so you can adjust speed shift chromatically by playing the keyboard normally. The value of the note in the binding becomes the center point of the shift range. If you press this note the speed returns to normal. If you press notes on either side of the center note, the speed will be raised or lowered by the corresponding number of semitones. The range of notes that will cause a speed shift is determined by the Speed/Pitch Note Range global parameter. If the amount of speed shift becomes non-zero, then the Speed Step minor mode will become active and displayed in the user interface. If the speed shift becomes zero (normal) then SpeedStep mode is canceled. This function will obey the Quantize Mode parameter. This function will not effect any other major or minor modes. SpeedStep may also be used in scripts but it is not ranged. Instead the amount of shift is specified as an argument to the function. See SpeedStep in the Mobius Scripting manual for usage examples. See Speed Shift in the Mobius Techniques manual for more information speed shifting.

5.52 Speed Toggle


Internal name: SpeedToggle Aliases: Speed Long press conversion: Sustain Speed Toggle Speed Toggle allows you to activate and deactivate an amount of speed shift with a single function binding. By default it toggles between shift of one octave down. In releases prior to 2.2 this was called simply Speed which would toggle you in and out of 1/2 Speed mode.

In release 2.2 this concept was generalized so that you can toggle between a shift of any number of semitones up or down. The number of semitones may be specified as a number entered into the Arguments field of the binding windows. If an argument is not entered, the default shift is -12, making it the same as the old Speed function. When used in scripts, calling the function with a script argument sets the toggle, and calling it with the same number or with no arguments cancels the toggle. See SpeedToggle in the Mobius Scripting manual for usage examples. See Speed Shift in the Mobius Techniques manual for more information on speed shifting.

5.53 Speed Up
Internal name: SpeedUp Aliases: RateUp Speed Up Increase the playback speed by an amount that will sound like a one semitone rise in pitch. If the amount of speed shift becomes non-zero, then the SpeedStep minor mode will become active and displayed in the user interface. If the speed shift becomes zero (normal) then SpeedStep mode is canceled. This function will obey the Quantize Mode parameter. This function will not effect any other major or minor modes. See Speed Shift in the Mobius Techniques manual for more information.

5.54 Realign
Internal name: Realign Realign will bring the Mobius loop back into alignment with the external loop. For all sync modes except MIDI Master Sync, realign will move the Mobius loop playback position so that it aligns with the external loop. For MIDI Master Sync the realign behavior is determined by the Out Sync Realign Action parameter. When the realign adjustment happens is controlled by the Realign Time parameter. This function is not quantized. This function is not modal, it will schedule an event for the desired realign time. The realign event may be canceled with Undo. This function will end the following major modes and may be subject to rounding.

Insert Multiply Record Rehearse Replace Stutter Substitute

This function is ignored in these modes.

Reset Threshold Synchronize

This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch. See The External Loop in the Mobius Synchronization manual for more information on what "external start point" means. See Realign in the Mobius Synchronization manual for more information on the Realign function.

5.55 Record
Internal name: Record Record begins and ends a new loop recording. This is a major modal function that will toggle Record mode. Usually Record mode is ended by executing the Record function a second time, though most other functions will also end the recording. Record will cancel all major and minor modes and throw away the layer history. The Record Threshold parameter can be used to delay the start of the recording until an audio signal of sufficient loudness is received. The Record Speed Changes parameter determines whether speed shifting functions such as Speed Step and Speed Toggle will end the recording, or whether the shifting alters how the recording is made. The Record Resets Feedback parameter can be used to reset the feedback control to the level specified in the track setup whenever a recording is started. During all rounding modes (Multiply, Insert, Stutter) the Record function has special modal behavior. Instead of canceling the mode and starting a new recording it will instead cancel the rounding period and end the current mode immediately. The loop will then return to either Play or Overdub modes. Record has long press behavior. If the trigger for the Record function is held down it will cause the Reset function to be executed. See Record in the Mobius Techniques manual for more information.

5.56 Redo
Internal name: Redo Redo moves the loop to the next layer on the redo list. If the redo list is empty, this function will have no effect. In order to have layers on the redo list, you must use the Undo function one or more times, and you must have the Maximum Redo parameter set to a number greater than zero.

If the loop is the MIDI Sync Master, changing layers may require adjustments to the generated MIDI clocks if the cycle size in the new layer is different that the current cycle size. This is controlled by the Out Sync Resize Adjust parameter. This function will end all of the following editing modes.

Insert Multiply Record Rehearse Replace Stutter Substitute

This function is ignored in these modes.


Reset Threshold Synchronize

This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch. See Managing Layers in the Mobius Techniques manual for more information.

5.57 Rehearse
Internal name: Rehearse Rehearse begins and ends a special recording mode where you can listen what you recorded then decide if you want to keep it or try another recording. When you execute Rehearse the first time it begins recording a new loop just like the Record function except that the major mode is set to Rehearse Record. When you execute Rehearse a second time it ends the recording and begins playing it. The major mode is set to Rehearse. While you are in Rehearse mode you are reviewing the loop to determine if you want to keep it. If you let the new loop play to the end, the mode will automatically change back to Rehearse Record and you can record a different loop. When you have recorded a loop that you want to keep, execute the Play or Undo functions to cancel Rehearse mode and return to Play mode. See Rehearse in the Mobius Techniques manual for more information.

5.58 Replace
Internal name: Replace Replace allows you to replace a section of a loop with new sounds, in a way similar to what traditional recording systems call "punch in". Replace is a major modal function that will toggle Replace mode. During Replace mode, the current content of the loop is erased and the sound coming into the track is saved in this empty space.

You usually cancel Replace mode by executing the Replace function a second time, but all other major modal functions will also cancel the replace. During Replace mode the loop is muted so the current contents of the loop being replaced will not be heard. This is the only difference between Replace and Substitute which may let you hear the current loop contents. This function obeys the Quantize Mode parameter. This function will end all of the following editing modes.

Insert Multiply Record Rehearse Replace Stutter Substitute

This function is ignored in these modes.


Reset Threshold Synchronize

This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch. See also Substitute. See Replacing Loop Content in the Mobius Techniques manual for more information.

5.59 Reset
Internal name: Reset Reset deletes all layers in the current loop and makes it "empty". Reset does not create a new layer and cannot be reverted with Undo. See Reset, Empty, Clear, and Silent for a discussion about the difference between these similar terms. This function is not quantized and all major and minor modes will be canceled. Track parameters will be restored to the values specified in the track setup . See Reset in the Mobius Techniques manual for more information.

5.60 Restart
Internal name: Restart

Restart will restart the loop over from the beginning. It is a loop switch function so it will obey the Switch Quantize parameter which controls when the restart will happen. The Switch Velocity Sensitive parameter can be used to adjust the output level. Unlike most loop switch functions, Restart ignores the Switch Location, Switch Duration, and Return Location parameters because the loop is not being changed, it is just moving the playback position of the loop. See also Restart Once which will restart and also automatically mute the loop after it plays to the end. This function will end the following major modes.

Insert Multiply Record Rehearse Replace Stutter Substitute

This function will cancel Threshold and Synchronize modes. This function will be ignored during Confirm and Switch modes. This function may end Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. See Loop Switching in the Mobius Techniques manual for more information.

5.61 Restart Once


Internal name: RestartOnce Restart Once will restart the loop over from the beginning, let it play to the end, and then automatically execute the Mute function. Restart Once is a loop switch function so it will obey the Switch Quantize parameter which controls when the restart will happen. The Switch Velocity Sensitive parameter can be used to adjust the output level. Unlike most loop switch functions, Restart ignores the Switch Location, Switch Duration, and Return Location parameters because the loop is not being changed, it is just moving the playback position of the loop. See also Restart. This function will end the following major modes.

Insert Multiply Record Rehearse Replace Stutter

Substitute

This function will cancel Threshold and Synchronize modes. This function will be ignored during Confirm and Switch modes. This function may end Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. See Loop Switching in the Mobius Techniques manual for more information.

5.62 Reverse
Internal name: Reverse Reverse toggles the Reverse minor mode, which changes the playback direction of the loop. While Reverse mode is active the loop will play from the end to the beginning, in the user interface you will see the loop meter moving from the right to the left. Reverse mode is canceled by executing the Reverse function a second time or by executing the Forward function. This function will obey the Quantize Mode parameter. The functions that change direction will end the following major modes.

Record Multiply Insert Stutter Rehearse Replace Substitute

This function may be used in Reset, Threshold and Synchronize modes to toggle playback direction before a recording starts. This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch. See also Backward and Forward. See Changing Direction in the Mobius Techniques manual for more information.

5.63 Sample
Internal names: Sample, Sample1 through Sample8 The Sample family of functions will play one of the loaded samples. 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, another overlapping playback of the sample will start. Samples are not part of a loop or track, it is like having a very primitive built-in sample player. The sample functions are not quantized.

The function named just Sample without a number may only be used in scripts. The sample to trigger is specified as a function argument that may be a number or an expression. See Sample in the Mobius Scripting manual for usage examples. The sample functions are not quantized and they have no effect on major or minor modes. If a loop is in one of the following recording modes, the sample will be recorded into the loop as it plays.

Record Multiply Insert Overdub Stutter Rehearse Replace Substitute

See Samples in the Exploring Mobius manual for more information.

5.64 Save Capture


Internal name: SaveCapture Save Capture will save the audio captured by the internal performance recorder to a file. You must first have started the performance recorder with the Start Capture or Bounce functions. The recording will be saved in a file whose name begins with "capture" followed by an automatically generated number to make the name unique. The files will be saved in the directory specified in the Quick Save File parameter. This function is not quantized and it has no effect on the current loop. See Capturing a Performance in the Mobius Techniques manual for more information.

5.65 Save Loop


Internal name: SaveLoop Save Loop will perform a "quick save" of the active loop in the active track. This is the same as the "Quick Save" item from the "File" menu. The loop will be saved in a file whose name begins with the value of the Quick Save File parameter followed by an automatically generated number to make the name unique. This function is not quantized and has no effect on the active loop. If the loop is being modified, the layer being played is saved, not the new layer being created. See Quick Save in the Exploring Mobius manual for more information.

5.66 Shuffle

Internal name: Shuffle Shuffle will instantly cut the loop into several slices then reorder the slices. A new layer is created so you can Undo to return to the original loop. The number of slices the loop is cut into is determined by the Subcycles parameter. The new ordering of the slices is determined by the Shuffle Mode parameter. When used in scripts, Shuffle is much more powerful. Script expressions can be used to define complex patterns of slices. See Shuffle in the Mobius Scripting manual for usage examples. This function will obey the Quantize Mode parameter. It is considered an instant edit function so it will end the following modes.

Insert Multiply Stutter Replace Substitute Record Rehearse

This function is ignored in these modes.


Reset Threshold Synchronize

This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch. See Shuffle in the Mobius Techniques manual for more information on using the basic Shuffle function.

5.67 Slip, Slip Backward, Slip Forward


Internal names: Slip, SlipBackward, SlipForward The Slip family of functions will instantly move the loop playback position forward or backward by a fixed amount. Slip Forward Slip Backward can be bound to function triggers, Slip can only be used in scripts. The effect is similar to the Move function but more limited. The amount of slippage is determined the parameters Slip Mode and Slip Time. This function will obey the Quantize Mode parameter. It is considered an instant edit function so it will end the following modes.

Insert Multiply Stutter Replace

Substitute Record Rehearse

This function is ignored in these modes.


Reset Threshold Synchronize

This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch. The function named just Slip can only be used in scripts where the amount of slippage is specified as a function argument. See Slip in the Mobius Reference manual for usage examples. See Changing Playback Position in the Mobius Techniques manual for more information.

5.68 Solo
Internal name: Solo Solo mutes all tracks that are currently playing except for the active track. The active track enters the Solo major mode and all other tracks enter the Solo Mute major mode. When solo mode is canceled, all the muted tracks that were playing at the time of the Solo are unmuted, but tracks that were muted at the time of the Solo are left muted. Solo mode is canceled if you execute the Solo function a second time, or you execute any of the mute cancel functions. The set of functions that cancel mute is defined by the Mute Cancel and Mute Cancel Functions parameters. See Mute, Pause, and Solo in the Mobius Techniques manual for more information.

5.69 Start Capture


Internal name: StartCapture Start Capture starts an internal performance recorder that captures all audio being sent to the audio output device. This can be used to create a single audio file containing a looping performance as it happened in real-time. Once you have captured some amount of audio, you can use the Stop Capture function to stop capturing and the Save Capture function to save the last capture to a file. Though capture can be used by anyone, it was designed for testing Mobius so the user interface is crude and you need to be careful with it. The captured audio accumulates in memory and is not written to a file until you call Save Capture. If you let capture run for a long period of time without saving you can run out of memory. This function is not quantized and it has no effect on the active loop.

See Capturing a Performance in the Mobius Techniques manual for more information.

5.70 Start Point


Internal name: StartPoint Start Point instantly restructures the loop so that the current loop position becomes the start point. You can think of it like having the loop content before the current playback position sliced off, and then appended to the end. Start Point is not quantized. This function is considered to be an instant edit function so it will end the following modes.

Insert Multiply Stutter Replace Substitute Record Rehearse

This function is ignored in these modes.


Reset Threshold Synchronize

This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch. See Changing the Start Point in the Mobius Techniques manual for more information.

5.71 Stop Capture


Internal name: StopCapture Stop Capture turns off the internal performance recorder. The last captured performance is held in memory until you execute Save Capture. If you execute Start Capture or Bounce without saving, the previous capture will be discarded and the memory freed. This function is not quantized and has no effect on the active loop. See Capturing a Performance in the Mobius Techniques manual for more information.

5.72 Stutter

Internal name: Stutter Stutter is a variation of the Multiply function that will extend the loop by inserting copies of the current cycle. When Stutter is executed for the first time the major mode Stutter is activated and the cycle the loop playback position is currently in becomes the stutter cycle. While Stutter mode is active, each time the playback position reaches the end of a cycle, another copy of the stutter cycle is inserted. While this is happening the sound being received by the track will be merged with the stutter cycles as it is during Overdub mode. Stutter mode is canceled when the Stutter function is executed a second time, or when any other major modal function is executed. This function will obey the Quantize Mode parameter. This function will end the following major modes.

Insert Multiply Stutter Replace Substitute Record Rehearse

This function is ignored in Reset, Threshold and Synchronize modes. This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function changes behavior in Confirm and Switch modes. It will "stack" and be executed after the loop switch where it will perform a Loop Copy from the current loop into the next loop. See Extending The Loop With Multiply in the Mobius Techniques manual for more information.

5.73 Substitute
Internal name: Substitute Substitute allows you to replace a section of a loop with new sounds, in a way similar to what traditional recording systems call "punch in". This is a major modal function that toggles Substitute mode. Substitute is very similar to the Replace function but it gives you more control over how new sound is combined with the current contents of the loop. Substitute differs from Replace in two ways. First, during Substitute mode you will continue to hear the contents of the loop that you are replacing. During Replace mode the current loop contents are always muted. Second, Replace will always completely replace the current contents of the loop, Substitute allows you to blend the new sounds with the old sounds by adjusting the Secondary Feedback control. To use Substitute with Secondary Feedback you must check the Enable Secondary Feedback parameter. When Secondary Feedback is all the way up, then Substitute

behaves like Overdub. When Secondary Feedback is all the way down, Substitute behaves like Replace. If you bind the Secondary Feedback control to a MIDI continuous controller, you can sweep secondary feedback up and down during the substitute to "sculpt" the loop. This function obeys the Quantize Mode parameter. This function will end all of the following editing modes.

Insert Multiply Record Rehearse Replace Stutter Substitute

This function is ignored in these modes.


Reset Threshold Synchronize

This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch. See Replacing Loop Content in the Mobius Techniques manual for more information.

5.74 Sustain Insert


Internal name: SUSInsert Sustain Insert is the same as the Insert function except that the request to end Insert mode is made when the sustainable function trigger is released. See Sustain Functions for more information on how sustain functions behave. See Insert for more information on insert mode.

5.75 Sustain Multiply


Internal name: SUSMultiply Sustain Multiply is the same as the Multiply function except that the request to end Multiply mode is made when the sustainable function trigger is released. See Sustain Functions for more information on how sustain functions behave. See Multiply for more information on multiply mode.

5.76 Sustain Mute

Internal name: SUSMute Sustain Mute is the same as the Mute function except that the request to end Mute mode is made when the sustainable function trigger is released. See Sustain Functions for more information on how sustain functions behave. See Mute for more information on mute mode.

5.77 Sustain Mute Restart


Internal name: SUSMuteRestart Sustain Mute Restart is similar to a combination of the Mute function and the Restart function. When the function trigger is pressed the loop is forced into the Mute major mode. When the function trigger is released Mute mode is canceled and the loop is restarted to play from the beginning. Note that this function does not use the Mute Mode parameter to determine where to start the unmuted loop, the loop is always restarted from the beginning. This function will obey the Quantize Mode parameter. See Sustain Functions for more information on how sustain functions behave. While this is similar to the Restart function, Sustain Mute Restart is not considered to be a loop switch function so it will not obey the Switch Quantize parameter or any of the other parameters that influence how loop switching behaves.

5.78 Sustain Next Loop


Internal name: SUSNextLoop Sustain Next Loop is similar to the Next Loop function except that when the sustainable function trigger is released we will return to the original loop. See Next Loop for more information on loop switching, the parameters that influence this function, and how this function effects the major and minor modes. See Sustain Functions for more information on how sustain functions behave.

5.79 Sustain Overdub


Internal name: SUSOverdub Sustain Overdub is similar to the Overdub function except that Overdub mode is toggled when you both press and release a sustainable function trigger. Note that this does not necessarily mean that Overdub mode begins when press the trigger. If you are already in Overdub mode, then the Sustain Overdub function will turn off Overdub mode when the trigger is pressed then turn it back on when the trigger is released. This function may obey the Quantize Mode parameter but only if the Overdub Quantized parameter is checked. See Sustain Functions for more information on how sustain functions behave.

See Overdub for more information on overdub mode, and how this function interacts with other major and minor modes.

5.80 Sustain Pause


Internal name: SUSPause Sustain Pause is the same as the Pause function except that the request to end Pause mode is made when the sustainable function trigger is released. See Sustain Functions for more information on how sustain functions behave. See Pause for more information on pause mode.

5.81 Sustain Previous Loop


Internal name: SUSPrevLoop Sustain Previous Loop is similar to the Previous Loop function except that when the sustainable function trigger is released we will return to the original loop. See Next Loop for more information on loop switching, the parameters that influence this function, and how this function effects the major and minor modes. See Sustain Functions for more information on how sustain functions behave.

5.82 Sustain Record


Internal name: SUSRecord Sustain Record is similar to the Record function except that Record mode will end immediately after the sustainable function trigger is released. This is a useful function if you want to make very short loops, where pressing a trigger twice to start and end the recording would take too long. The Record Threshold parameter can be used to delay the start of the recording until an audio signal of sufficient loudness is received. The Record Speed Changes parameter determines whether speed shifting functions such as Speed Step and Speed Toggle will end the recording, or whether the shifting alters how the recording is made. The Record Resets Feedback parameter can be used to reset the feedback control to the level specified in the track setup whenever a recording is started. Note that unlike Record, this function will not have special modal behavior during rounding modes. The current mode is always canceled, the layers are freed, and a new recording is begun. See Sustain Functions for more information on how sustain functions behave.

5.83 Sustain Replace


Internal name: SUSReplace

Sustain Replace is the same as the Replace function except that Replace mode will end immediately after the sustainable function trigger is released. See Sustain Functions for more information on how sustain functions behave.

5.84 Sustain Reverse


Internal name: SUSReverse Sustain Reverse toggles the Reverse minor mode when the function trigger is pressed and again when it is released. Both the start and end may be quantized. Note that this does not mean that you will always go into Reverse mode when the function trigger is pressed. If you are already in Reverse mode, you will return to a normal forward direction when the trigger is pressed and return to Reverse mode when the trigger is released. See Reverse for more information on changing direction, and how this function will interact with the current major and minor modes. See Sustain Functions for more information on how sustain functions behave.

5.85 Sustain Speed Toggle


Internal name: SUSSpeedToggle Aliases: SUSSpeed Sustain Speed Toggle does a semitone speed shift up or down while the trigger is held down, then removes that shift when the trigger is released. This function can only be used when bound to a sustainable trigger such as a MIDI note. Like the Speed Toggle function, the default amount of speed shift is one octave down, but you can use a binding argument to specify any number of semitones. See Sustain Functions for more information on how sustain functions behave. See Speed Shift in the Mobius Techniques manual for more information on speed shifting.

5.86 Sustain Stutter


Internal name: SUSStutter Sustain Replace is the same as the Stutter function except that Stutter mode will end immediately after the sustainable function trigger is released. See Sustain Functions for more information on how sustain functions behave.

5.87 Sustain Substitute


Internal name: SUSSubstitute Sustain Substitute is the same as the Substitute function except that Substitute mode will end immediately after the sustainable function trigger is released. See Sustain Functions for more information on how sustain functions behave.

5.88 Sustain Unrounded Insert


Internal name: SUSUnroundedInsert Sustain Unrounded Insert is the same as the Sustain Insert function except that the ending of Insert mode will not be rounded. Recall that rounding is similar to quantization, it will delay the ending of modes that add new space to a loop until the space added is an even multiple of the cycle length. This keeps the loop content at a consistent tempo. Sustain Unrounded Insert will not do rounding so you can insert space of any size. This is typically used when you are creating "glitchy" or nonrhythmic loops. Note that while rounding is not performed the start and end of the Insert mode may be quantized. If Quantize Mode is set to Subcycle for example, a quick tap of the Sustain Unrounded Insert button will insert exactly one subcycle at the next subcycle boundary. See Sustain Functions for more information on how sustain functions behave. See Insert for more information on insert mode, and how this function interacts with the current major and minor modes.

5.89 Sustain Unrounded Multiply


Internal name: SUSUnroundedMultiply Sustain Unrounded Multiply is a variant of the Multiply function that can be used to cut a section of any size out of the loop. Multiply mode is activated when the function trigger is pressed, and it is canceled when the function trigger is released. When Multiply mode ends a new layer is created containing only the loop content between the start and end of the mode. Both the beginning and ending of the multiply may be quantized but the end will not be rounded. Recall that rounding is similar to quantization, it will delay the ending of modes that add or remove loop space until the space added or removed is an even multiple of the cycle length. This keeps the loop content at a consistent tempo. Sustain Unrounded Multiply will not do rounding so you can cut out space of any size. This is typically used when you are creating "glitchy" or non-rhythmic loops, or you want to cut out a rhythmic section of a non-rhythmic loop. See Sustain Functions for more information on how sustain functions behave. See Multiply for more information on multiply mode, and how this function interacts with the current major and minor modes.

5.90 Sync Master MIDI


Internal name: SyncMasterMidi Sync Master MIDI will change the track that is considered to be the MIDI Sync Master to the active track. If the active track is already the MIDI sync master the function has no effect. This function is not quantized and host no effect on the active loop.

See MIDI Master Sync in the Mobius Synchronization manual for more information.

5.91 Sync Master Track


Internal name: SyncMasterTrack Sync Master Track will change the track that is considered to be the Track Sync Master to the active track. If the active track is already the track sync master the function has no effect. This function is not quantized and host no effect on the active loop. See Track Sync in the Mobius Synchronization manual for more information.

5.92 Sync Master Track+MIDI


Internal name: SyncMaster Sync Master Track+MIDI will set the active track to be both the Track Sync Master and the MIDI Sync Master. It is like combining the functions Sync Master Track and Sync Master MIDI.

5.93 Sync Start Point


Internal name: SyncStartPoint Sync Start Point will wait until the next external start point, then perform the Start Point function to align the loop start point with the external start point. This is only relevant when using MIDI Slave Sync or Host Sync. It is ignored for other sync modes. This function is not quantized. This function is considered to be an instant edit function so it will end the following modes.

Insert Multiply Stutter Replace Substitute Record Rehearse

This function is ignored in these modes.


Reset Threshold Synchronize

This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions.

This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch. See The External Loop in the Mobius Synchronization manual for more information on what "external start point" means. See Sync Start Point in the Mobius Synchronization manual for more information on how Sync Start Point is used.

5.94 Time Copy


Internal name: TimeCopy

5.95 TimeStretch
Internal name: TimeStretch TimeStretch is available only in scripts. It will change both the playback speed and the amount of pitch shift such that the observed pitch stays the same but the playback speed increases or decreases. This function must have a script argument that specifies the number of units of stretch. This number is the same as that used for the Pitch Bend or Speed Bend functions. See Speed Shift in the Mobius Techniques manual for more information about speed shifting.

5.96 Track
Internal names: Track, Track1 through Track8 The Track family of functions will activate one of the numbered tracks. If the track is already active, the function will have no effect. If the new track is empty, the Empty Track Action parameter determines what actions will be taken. The track select functions are not quantized. The function named just Track can only be used in scripts where the track to select is specified as a function argument. See Track in the Mobius Reference manual for usage examples. Changing the selected track will cancel the following recording modes in the current track.

Insert Multiply Stutter Replace Substitute Record Rehearse Synchronize Threshold

This function will not cancel Mute and Pause modes in the current track. This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch. See Track Copy in the Mobius Synchronization manual for more information on using Empty Track Action.

5.97 Track Copy


Internal name: TrackCopy Track Copy will copy the loop content from the active loop in the track to the left of the active track into the active loop of the active track. If the active loop in the active track is not empty, its contents will be lost and replaced with the copy. If the source loop is empty, the destination loop will also become empty. If the active track is track number 1, the copy is taken from the highest numbered track. The effect is similar to selecting an empty track when Empty Track Action is set to Copy except the track doesn't have to be empty. This function cancels all major and minor modes in the current loop. See Track Copy in the Mobius Synchronization manual for more information on creating synchronized tracks.

5.98 Track Copy Timing


Internal name: TrackCopyTiming Track Copy Timing will create an clear loop in the active track that is the same length as the active loop in the track to the immediate left of the active track. If the active loop in the active track is not empty its contents will be lost and replaced with the copy. If the source loop is empty, then the destination loop will also become empty. If the active track is track number 1, the copy is taken from the highest numbered track. The effect is similar to selecting an empty track when Empty Track Action is set to Copy Timing except the track doesn't have to be empty. This function cancels all major and minor modes in the current loop. See Track Copy in the Mobius Synchronization manual for more information on creating synchronized tracks.

5.99 Track Group


Internal name: TrackGroup Track Group will set the Group track parameter. Each time the Track Group function is executed the track is assigned to the next track group. If the track is already in the highest track group, the group assignment is removed. So you may need to execute Track Group several times in order to select the group you want, or track the track out of all groups. Groups are identified by capital letters beginning with 'A'. The maximum number of track groups is set by the Track Groups global parameter which defaults to 2. So

assuming this default the group assignment pattern when executing the Track Group function would be:

none -> Group A -> Group B -> none -> Group A -> Group B -> ...
Track groups are primarily useful when creating complex function bindings that target only the tracks in a group. They can also be used in scripts to identify sets of tracks the script should operate on. This function is not quantized and has no effect on the active loop. See Binding Scopes and Track Groups in the Exploring Mobius manual for more information on using track groups in bindings.

5.100 Track Reset


Internal name: TrackReset Track Reset will execute Reset function for every loop in the track. All of the track parameters and controls will then be reset to the values defined in the current track setup . Prior to version 1.43 this was called General Reset. See Track Setups in the Exploring Mobius manual for more information on how to define track setups.

5.101 Trim End


Internal name: TrimEnd Trim End removes the content of the loop from the current playback position to the end. This is similar to doing an unrounded multiply to the end, but it requires only one button press and it happens immediately. This function will obey the Quantize Mode parameter. This function is considered to be an instant edit function so it will end the following modes.

Insert Multiply Stutter Replace Substitute Record Rehearse

This function is ignored in these modes.

Reset Threshold Synchronize

This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch. See Shortening The Loop in the Mobius Techniques manual for more information.

5.102 Trim Start


Internal name: TrimStart Trim Start removes the content of the loop from the beginning up to the current playback position. This is similar to doing an unrounded multiply from the beginning but it requires only one button press and it happens immediately. This function will obey the Quantize Mode parameter. This function is considered to be an instant edit function so it will end the following modes.

Insert Multiply Stutter Replace Substitute Record Rehearse

This function is ignored in these modes.


Reset Threshold Synchronize

This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function will be "stacked" in Confirm and Switch modes and will be executed immediately after the loop switch. See Shortening The Loop in the Mobius Techniques manual for more information.

5.103 Undo
Internal name: Undo Undo will cancel scheduled events and move the loop to the previous layer in the layer list. If there are scheduled events, Undo will remove them one at a time. Once all of the events have been removed, Undo will move to the previous layer. If the first

layer in the layer list is already active this function will have no effect. If the Maximum Redo parameter is set to a number greater than zero, the current layer will be moved to the redo list. Using Undo and Redo you can freely travel back and forth in the layer history. If the loop is the MIDI Sync Master, changing layers may require adjustments to the generated MIDI clocks if the cycle size in the new layer is different that the current cycle size. This is controlled by the Out Sync Resize Adjust parameter. This function will end all of the following editing modes.

Insert Multiply Record Rehearse Replace Stutter Substitute

This function is ignored in these modes.


Reset Threshold Synchronize

This function may cancel Mute and Pause modes depending on the values of Mute Cancel and Mute Cancel Functions. This function will cancel the loop switch when in Confirm and Switch modes once all stacked events have been removed. See Managing Layers in the Mobius Techniques manual for more information.

5.104 Window Backward


Internal name: WindowBackward This function will move the loop window backward in the loop history. The amount of movement is defined by the Window Slide Unit and Window Slide Amount preset parameters. It will have no effect if the window is at the beginning of the history. The function will end all editing modes and discard any pending changes.

5.105 Window Forward


Internal name: WindowForward This function will move the loop window forward in the loop history. The amount of movement is defined by the Window Slide Unit and Window Slide Amount preset parameters. The function will end all editing modes and discard any pending changes.

5.106 Window Start Backward

Internal name: WindowStartBackward This function will move the start of the loop window backward in the loop history. Visually this is the left edge of the window and moving it backward will make the window larger. The amount of movement is defined by the Window Edge Unit and Window Edge Amount preset parameters. The function will end all editing modes and discard any pending changes.

5.107 Window Start Forward


Internal name: WindowStartForward This function will move the start of the loop window forward in the loop history. Visually this is the left edge of the window and moving it forward will make the window shorter. The amount of movement is defined by the Window Edge Unit and Window Edge Amount preset parameters. The function will end all editing modes and discard any pending changes.

5.108 Window End Backward


Internal name: WindowEndBackward This function will move the end of the loop window backward in the loop history. Visually this is the right edge of the window and moving it backward will make the window smaller. The amount of movement is defined by the Window Edge Unit and Window Edge Amount preset parameters. The function will end all editing modes and discard any pending changes.

5.109 Window End Forward


Internal name: WindowEndForward This function will move the end of the loop window forward in the loop history. Visually this is the right edge of the window and moving it forward will make the window larger. The amount of movement is defined by the Window Edge Unit and Window Edge Amount preset parameters. The function will end all editing modes and discard any pending changes.

5.110 WindowMove
This function moves the loop window to a location defined by the function arguments. It is only available in scripts.

5.111 WindowResize
This function changes the size of the loop window using the function arguments. It is only available in scripts.

6 User Interface Functions


Functions beginning with the letters "UI" apply to the Mobius user interface. Most of these have no effect on how Mobius behaves, they just change things in the user interface. They are most commonly bound to computer keyboard keys since you are usually not playing an instrument when you use them. These functions will not modify the loop in any way and will not change any major or minor modes.

6.1 UI Decrement Parameter


Internal name: decParameter UI Decrement Parameter will decrease the value of the parameter currently selected in the Instant Parameters display component by one. If the parameter is already set to its lowest value the function has no effect. This can only be used with parameters of type Integer or Enumeration. The default binding for this function is the '4' (left) key on the number pad.

6.2 UI Increment Parameter


Internal name: incParameter UI Increment Parameter will increase the value of the parameter currently selected in the Instant Parameters display component by one. If the parameter is already set to its highest value the function has no effect. This can only be used with parameters of type Integer or Enumeration. The default binding for this function is the '6' (right) key on the number pad.

6.3 UI Next Parameter


Internal name: nextParameter UI Next Parameter will select the next (lower) parameter in the Instant Parameters display component. The default binding for this function is the '2' (down) key on the number pad.

6.4 UI Move Display Components


Internal name: spaceDrag UI Move Display Components is used to reposition components in the Status Area . It is an modal UI function which means it will be in effect over a period of time and it must be bound to a sustainable trigger, typically a computer keyboard key. While the function trigger is held down, the components in the status area are drawn with outline borders so you can see where they are. You can then use the left mouse button to click and drag them to new locations.

See Customizing the Status Area in the Exploring Mobius manual for more information.

6.5 UI Previous Parameter


Internal name: prevParameter UI Previous Parameter will select the previous (higher) parameter in the Instant Parameters display component. The default binding for this function is the '8' (up) key on the number pad.

7 Preset Parameters
A preset is a named collection of parameters that effect how looping functions will be performed. While you can change parameters individually using MIDI or scripts, you will usually change parameters in bulk by selecting presets. You may need only one preset, or you may define several with parameters chosen for different looping styles. Each track has an active preset that may be changed at any time, even while a loop is playing. Each track may have a different active preset. All preset parameters can be changed in scripts but these changes are not permanent. Parameters changed in scripts will only live until a new preset is selected, or until the Track Reset or Global Reset functions are executed. Some parameters are available for binding in the binding windows. You would normally bind them to a trigger that can generate a range of values such as a MIDI expression pedal.

7.1 Auto Record Bars


Internal name: recordBars Internal value: an integer from 1 to infinity This parameter determines the number of "bars" that will be recorded by the Auto Record function. The actual length of the recording is determined by a combination of the Auto Record Bars, Auto Record Tempo and Beats Per Bar parameters. See Auto Record in the Mobius Techniques manual for more information on how this parameter is used with the Auto Record function.

7.2 Auto Record Tempo


Internal name: recordTempo Internal name: an integer from 10 to 500 This parameter influences the length of the loop recorded by the Auto Record function. The actual length of the recording is determined by a combination of the Auto Record Tempo, Auto Record Bars and Beats Per Bar parameters.

See Auto Record in the Mobius Techniques manual for more information on how this parameter is used with the Auto Record function.

7.3 Bounce Quantize


Internal name: bounceQuantize Internal values: off, subCycle, cycle, loop This parameter determines the amount of quantization to apply to the Bounce function. Bounce does not use the Quantize Mode parameter. See Bounce Recording in the Mobius Techniques manual for more information.

7.4 Empty Loop Action


Internal name: emptyLoopAction Internal values: none, record, copy, copyTiming This parameter determines the action that will be performed whenever an empty loop is activated. The possible values are:

None Record Copy Copy Timing

When set to None, no automatic action will be performed. The loop will be left in Reset mode. When set to Record, the loop will immediately enter Record mode after the switch. You can record as long as you like but you must remember to execute the Record function to end the recording. When set to Copy a Loop Copy will be made from the original loop into the new loop. When set to Copy Timing a Time Copy will be made from the original loop into the new loop. See Loop Copy in the Mobius Synchronization manual and Empty Loop Action in the Mobius Techniques manual for more information.

7.5 Empty Track Action


Internal name: emptyTrackAction Internal values: none, record, copy, copyTiming This parameter determines the action that will be performed whenever a track is selected whose active loop is empty. When set to None, no automatic action will be performed. The loop will be left in Reset mode.

When set to Record, the loop will immediately enter Record mode after the switch. You can record as long as you like but you must remember to execute the Record function to end the recording. When set to Copy a Loop Copy will be made from the original loop into the new loop. When set to Copy Timing a Time Copy will be made from the original loop into the new loop. See Track Copy in the Mobius Synchronization manual for more information.

7.6 Enable Secondary Feedback


Internal name: altFeedbackEnable Internal values: true, false This parameter determines whether the Secondary Feedback track control is used instead of the normal Feedback control when the loop is in certain editing modes. By default the modes obeying secondary feedback are:

Overdub Multiply Stutter Substitute

You can control which modes obey secondary feedback with the global parameter Modes Ignoring Secondary Feedback See Using Feedback in the Getting Started With Mobius manual for more information.

7.7 Loops Per Track


Internal name: loopCount Internal value: an integer between 1 and 8 This parameter determines the number of loops in a track. The default is 4, the minimum number is 1 and the maximum is 8. See Loops Per Track in the Getting Started With Mobius manual for more information.

7.8 Maximum Redo


Internal name: maxRedo Internal value: an integer from 0 to infinity This parameter controls how may layers will be kept for use by the Redo function. It is unset or set to zero, there will be no redo layers. The default value is 1. See Managing Layers in the Mobius Techniques manual for more information.

7.9 Maximum Undo


Internal name: maxUndo Internal value: an integer from 0 to infinity This parameter controls how may old layers will be kept for use with the Undo function. It is unset or set to zero, there is no limit on the number of layers. The parameter is normally left at zero but if you often create loops with many layers you should consider setting it to a small number to reduce memory requirements. See Managing Layers in the Mobius Techniques manual for more information.

7.10 Multiply Mode


Internal name: multiplyMode Internal values: normal, simple This parameter determines how the Multiply function will behave. The possible values are:

Normal Simple

The default value is Normal which will make Multiply behave similar to the multiply function in the EDP. When the value is Simple, multiply will only add cycles when you reach the end of the loop and otherwise will behave like the Overdub function. See Extending The Loop With Multiply in the Mobius Techniques manual for more information on how this parameter effects the Multiply function.

7.11 Mute Cancel


Internal name: muteCancel Internal values: never, edit, trigger, effect, custom, always This parameter controls whether mute mode is automatically canceled when executing other functions. The value may be the name of a function class or it may be an explicit list of function names. See the Function Classes section for more information on classes. The possible values are: Never Edits 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. 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, Restart, etc. Effects Mute mode is canceled by the Modal Edit, Instant Edit, and Trigger functions as well as the Effect functions such as Reverse, Pitch Step, Speed Bend, etc.

Custom The functions that cancel mute mode may be individually selected.

When this parameter is set to Custom the functions that cancel mute mode are defined by the global parameter named Mute Cancel Functions. Since this is a global parameter it cannot have a different value in each preset. See Mute, Pause, and Solo in the Mobius Techniques manual for more information.

7.12 Mute Mode


Internal name: muteMode Internal values: continue, start, pause Mute Mode determines how the loop behaves when it is taken out of Mute mode. The possible values are:

Continue - resume playing at the current playback location Start - restart the loop from the beginning Pause - resume from the paused location

When this is set to Pause the Mute function will behave the same as the Pause function. See Mute, Pause, and Solo in the Mobius Techniques manual for more information.

7.13 No Feedback Undo


Internal name: noFeedbackUndo Internal values: true, false This parameter determines whether feedback reduction alone will cause the creation of a new layer for undo. A layer is created whenever the loop is changed with functions such as Overdub or Replace. When feedback is reduced the loop is also being edited, each pass through the loop the level is reduced slightly until it decays to nothing. When this parameter is false, every time the loop plays with feedback reduced a new layer is created, even if no other changes were made to the loop. This allows you to use the Undo function to undo the feedback effect. If you let the loop play for a long time with reduced feedback this can result in the creation of many layers. When this parameter is true, a new layer will not be created if the only change to the loop during the last pass was caused by feedback. This can significantly reduce the amount of memory required for your loops. See Managing Layers in the Mobius Techniques manual for more information.

7.14 No Layer Flattening


Internal name: noLayerFlattening Internal values: true, false This parameter determines whether "flattening" of layers will be disabled. This is an experimental parameter you should not enable unless you understand the consequences.

See Layer Flattening in the Exploring Mobius manual for more information.

7.15 Overdub Quantized


Internal name: overdubQuantized Internal values: true, false This parameter determines whether the Overdub function will obey the Quantize Mode parameter. Normally Overdub is not quantized. See Overdub Quantized fin the Mobius Techniques manual for more information.

7.16 Overdub While Rounding


Internal name: overdubWhileRounding Internal values: true, false This parameter determines whether the Multiply and Insert functions will continue to overdub new sound into the loop during the rounding period. See Extending The Loop With Multiply in the Mobius Techniques manual for more information on how this parameter effects the Multiply function.

7.17 Overdub Transfer


Internal name: overdubTransfer Internal values: off, follow, restore This parameter determines whether the Overdub minor mode will be carried over from the current loop to the next loop during a loop switch. The possible values are:

Off - Overdub will be forced off in the next loop Follow - Overdub will be carried over from the current loop to the next loop Restore - Overdub will be restored to the state it had the last time the next loop was active

See Overdub Transfer in the Mobius Techniques manual for more information.

7.18 Pitch Bend Range


Internal name: pitchBendRange Value range: 1 to 48 Default value: 12 This parameter defines the range of the Pitch Bend control. The default value of 12 means that the range is 12 semitones, or 1 octave up and down for a total range of 24 semitones. The smallest value is 1 which gives you a range of 2 semitones, one up and one down. You may wish to lower the bend range when binding to a MIDI continuous controller to give you a smoother and more subtle bend.

See Pitch Shift in the Mobius Techniques manual for more information.

7.19 Pitch Step Range


Internal name: pitchStepRange Value range: 1 to 48 Default value: 24 This parameter defines the range of the Pitch Step control. The default value of 24 means that the range is 24 semitones, or 2 octaves up and down for a total range of 48 semitones. The smallest value is 1 which gives you a range of 2 semitones, one up and one down. You may wish to lower the step range when binding to a MIDI continuous controller to give you more control when selecting steps. If the range is too high, very slight changes to the knob or pedal will change pitchs. With a lower range, the knob or pedal must move a longer distance before changing pitchs. See Pitch Shift in the Mobius Techniques manual for more information.

7.20 Pitch Sequence


Internal name: pitchSequence This parameter may be set to a space-delimited list of numbers that represents positive or negative pitch shifts in semitone increments. For example "1" is one semitone above normal, and "-7" is 7 semitones below normal (or a perfect fifth lower). Once a pitch sequence has been set, the pitch may be changed using the Pitch Next and Pitch Previous functions. See Pitch Shift in the Mobius Techniques manual for more information.

7.21 Pitch Shift Restart


Internal name: pitchShiftRestart Internal value: true, false When this boolean parameter is true, the current loop will be restarted from the beginning whenever the pitch shift is changed by the Pitch Up, Pitch Down, Pitch Cancel, Pitch Next, Pitch Previous, and Pitch Step functions. See Pitch Shift in the Mobius Techniques manual for more information.

7.22 Pitch Transfer


Internal name: pitchTransfer Internal values: off, follow, restore This parameter determines whether the Pitch Shift minor mode will be carried over from the current loop to the next loop during a loop switch. The possible values are:

Off - Pitch shift will be off in the next loop

Follow - Pitch shift will be carried over from the current loop to the next loop Restore - Pitch shift will be restored to the state it had the last time the next loop was active

See Pitch Transfer in the Mobius Techniques manual for more information.

7.23 Quantize Mode


Internal name: quantize Internal values: off, subcycle, cycle, loop This parameter determines whether some functions will be delayed until the next quantization point rather than executing immediately. The possible values are:

Off Subcycle Cycle Loop

Not all functions obey quantization and some use a different parameter to control quantization. See Overdub Quantized Switch Quantize, and Bounce Quantize for other parameters related to quantization. See Quantize Mode in the Getting Started With Mobius manual for more information on using quantization.

7.24 Speed Bend Range


Internal name: speedBendRange Value range: 1 to 48 Default value: 12 This parameter defines the range of the Speed Bend control. The default value of 12 means that the range is 12 semitones, or 1 octave up and down for a total range of 24 semitones. The smallest value is 1 which gives you a range of 2 semitones, one up and one down. You may wish to lower the bend range when binding to a MIDI continuous controller to give you a smoother and more subtle bend. See Speed Shift in the Mobius Techniques manual for more information.

7.25 Speed Step Range


Internal name: speedStepRange Value range: 1 to 48 Default value: 24 This parameter defines the range of the Speed Step control. The default value of 24 means that the range is 24 semitones, or 2 octaves up and down for a total range of

48 semitones. The smallest value is 1 which gives you a range of 2 semitones, one up and one down. You may wish to lower the step range when binding to a MIDI continuous controller to give you more control when selecting steps. If the range is too high, very slight changes to the knob or pedal will change speeds. With a lower range, the knob or pedal must move a longer distance before changing speeds. See Speed Shift in the Mobius Techniques manual for more information.

7.26 Speed Sequence


Internal name: speedSequence Internal value: a space delimited list of integers This parameter may be set to a space-delimited list of numbers that represents positive or negative speed shifts in semitone increments. For example a speed of "1" is one semitone above normal, a speed of "-7" is 7 semitones below normal (or a perfect fifth lower). Once a speed sequence has been set, the speed may be changed using the Speed Next and Speed Previous functions. See Speed Shift in the Mobius Techniques manual for more information.

7.27 Speed Shift Restart


Internal name: speedShiftRestart Internal value: true, false When this boolean parameter is true, the current loop will be restarted from the beginning whenever the playback speed is changed by the Speed Up, Speed Down, Speed Cancel, Speed Next, Speed Previous, and Speed Step functions. See Speed Shift in the Mobius Techniques manual for more information.

7.28 Speed Transfer


Internal name: autoRecord Internal values: off, follow, restore This parameter determines whether the speed shift minor modes will be carried over from the current loop to the next loop. This applies to shift applied by all funtions in the Speed family. The possible values are:

Off - Speed shift will be returned to normal in the next loop Follow - Speed shift will be carried over from the current loop to the next loop Restore - Speed shift will be restored to the state it had the last time the next loop was active

See Speed Transfer in the Mobius Techniques manual for more information.

7.29 Record Resets Feedback

Internal name: recordResetsFeedback Internal values: true, false This parameter determines whether the Feedback control will be returned to the level specified in the Track Setup whenever the Record function is executed. This is convenient if you like to lower feedback once a loop has been recorded but you don't want to manually return it to its default level if you decide to re-record the loop.

7.30 Record Speed Changes


Internal name: speedRecord Internal values: true, false This parameter determines whether using the speed shift functions will end a recording in progress or whether they will adjust the speed of the audio being recorded. When true, you can use speed shift functions at any time during Record mode. When the loop is played back you will hear the effects of these changes. If this parameter is false, using any speed shift functions will cause the recording to be stopped, and the shift will then be applied to the new loop when it begins playing. The default value is false. See Speed Shifted Recording in the Mobius Techniques manual for more information.

7.31 Record Threshold


Internal name: recordThreshold Internal value: an integer from 0 to 8 This parameter determines the minimum audio signal level that must be received by a track before the Record function will start. If the parameter is not set or set to zero, there is no threshold and recording starts immediately. You will need to experiment to determine the optimal value for your instrument, a typical value is between 3 and 5. See Threshold Recording in the Mobius Techniques manual for more information.

7.32 Record Transfer


Internal name: recordTransfer Internal values: off, follow This parameter determines whether the Record major mode will be carried over from the previous loop to the next loop during a loop switch. The possible values are:

Off - Record is not transferred Follow - Record is transferred

If set to Off what happens after the switch is determined by the Empty Loop Action parameter. If set to Follow and the current loop is in Record mode, the next loop will always be reset and a new recording will begin immediately. See Record Transfer in the Mobius Techniques manual for more information.

7.33 Return Location


Internal name: returnLocation Internal values: follow, restore, start, random This parameter determines the playback location of the loop after you have returned from a loop switch when the Switch Duration parameter was set to Once Return or Sustain Return. The possible values are:

Follow - keep the same location you have in the current loop Restore - restore the location the original loop had the last time it was playing Start - start the original loop from the beginning Random - move to a randomly chosen subcycle

See Return Location in the Mobius Techniques manual for more information.

7.34 Reverse Transfer


Internal name: reverseTransfer Internal values: off, follow, restore This parameter determines whether the Reverse minor will be carried over from the current loop to the next loop during a loop switch. The possible values are:.

Off - Reverse will be forced off in the next loop Follow - Reverse will be carried over from the current loop to the next loop Restore - Reverse will be restored to the state it had the last time the next loop was active

See Reverse Transfer in the Mobius Techniques manual for more information.

7.35 Shuffle Mode


Internal name: shuffleMode Internal values: reverse, shift, swap, random This parameter determines how the Shuffle function will behave. The possible values are:

Reverse Shift Swap Random

See Shuffle in the Mobius Techniques manual for more information.

7.36 Slip Mode


Internal name: slipMode Internal values: subCycle, cycle, start, relSubCycle, relCycle, time This parameter determines how far the Slip Functions will move. The possible values are:

Next Subcycle - Playback jumps to the next subcycle boundary Next Cycle - Playback jumps to the next cycle boundary Start - Playback jumps to the loop start point Relative Subcycle - Playback jumps an amount equal to one subcycle relative to the current position Relative Cycle - Playback jumps an amount equal to one cycle relative to the current position Milliseconds - Playback jumps the number of milliseconds set in the Slip Time parameter

See Changing Playback Position in the Mobius Techniques manual for more information.

7.37 Slip Time


Internal name: slipTime Internal value: an integer from 0 to infinity This parameter determines how far the Slip Functions will move when the Slip Mode parameter is set to Milliseconds. The value is a positive integer number of milliseconds so a slip time of 1000 would cause the Slip Forward function to jump forward 1 second. See Changing Playback Position in the Mobius Techniques manual for more information.

7.38 Sound Copy Mode


Internal name: soundCopyMode Internal values: play, overdub, multiply, insert When performing a Loop Copy because Empty Loop Action was set to Copy, this parameter specifies the mode you will be in after the copy. The possible values are:

Play Overdub Multiply Insert

The default value is Multiply. See Sound Copy in the Mobius Techniques manual for more information.

7.39 Subcycles
Internal names: subcycles, 8thsPerCycle Internal value: an integer between 1 and 512 This parameter sets the number of subdivisions in each cycle. This is used most often with the Quantize Mode parameter to define quantization points. You can see subcycles in the Loop Meter as the shorter tick marks. While the number of cycles in a loop stays the same until you extend or shorten it, you can change the number of subcycle divisions at any time just by changing the Subcycles parameter. You will see the subcycle tick marks in the Loop Meter change but otherwise the loop is unaffected. The Subcycles parameter is used by the Shuffle function to define the number of loop slices that will be reordered. Subcycles may be used to calculate the tempo of the MIDI clocks generated when Sync Source is Out. It will be used only if the value of Beats Per Bar is not set.

7.40 Switch Duration


Internal name: switchDuration Internal values: permanent, once, onceReturn, sustain, sustainReturn This parameter determines how long you will stay in the new loop after a loop switch. It is used by all loop switching functions except Sustain Next Loop, Sustain Previous Loop, Restart, and Restart Once. The possible values are:

Permanent - stay in the new loop until it is manually changed Once - play the new loop until the end, then automatically enter Mute mode Once Return - play the new loop until the end, then automatically return to the previous loop Sustain - play the new loop for as long as the function button is held down, then it automatically enter Mute mode Sustain Return - play the new loop for as long as the function button is held down, then return to the previous loop

See Switch Duration in the Mobius Techniques manual for more information.

7.41 Switch Location


Internal name: switchLocation Internal values: follow, restore, start, random This parameter determines where the playback position will be after you switch to another loop. The possible values are:

Follow - keep the same location you had in the previous loop Restore - restore the location the new loop had the last time it was playing Start - start the new loop from the beginning

Random - move to a randomly chosen subcycle

See Switch Location in the Mobius Techniques manual for more information.

7.42 Switch Quantize


Internal name: switchQuantize Internal values: off, subcycle, cycle, loop, confirm, confirmSubcycle, confirmCycle, confirmLoop This parameter determines when the loop switch functions will be performed. Unlike most other functions, loop switch functions do not obey the Quantize Mode parameter. The loop switch functions are:

Next Loop Previous Loop Sustain Next Loop Sustain Previous Loop Loop 1 Loop 2 Loop 3 Loop 4 Loop 5 Loop 6 Loop 7 Loop 8 Restart Restart Once

The possible values for the Switch Quantize parameter are:


Off Subcycle Cycle Loop Confirm Confirm Subcycle Confirm Cycle Confirm Loop

See Switch Quantize in the Mobius Techniques manual for more information.

7.43 Switch Velocity Sensitive


Internal name: switchVelocity Internal values: true, false

This parameter can be used to automatically adjust the track output level during a loop switch. it can only be used if the loop switch function is bound to a MIDI Note message that can carry velocity information. When this parameter is true, the output level of the track will be set to the velocity value of the MIDI note that triggered the loop switch function. See Switch Velocity Sensitive in the Mobius Techniques manual for more information.

7.44 Time Copy Mode


Internal name: timeCopyMode Internal values: play, overdub, multiply, insert When performing a Time Copy because Empty Loop Action was set to Copy Timing, this parameter specifies the mode you will be in after the copy. The possible values are:

Play Overdub Multiply Insert

The default value is Insert. See Time Copy in the Mobius Techniques manual for more information.

7.45 Time Stretch Range


Internal name: timeStretchRange Value range: 1 to 48 Default value: 12 This parameter defines the range of the Time Stretch control. The default value of 12 means that the range is 12 semitones, or 1 octave up and down for a total range of 24 semitones. The smallest value is 1 which gives you a range of 2 semitones, one up and one down. You may wish to lower the bend range when binding to a MIDI continuous controller to give you a smoother and more subtle stretch. See Time Stretch in the Mobius Techniques manual for more information.

7.46 Track Leave Action


Internal name: trackLeaveAction Internal values: none, cancel, wait When selecting a track, this parameter determines what will happen to the currently selected track and when the new selection will take place. The possible values are:

None

Cancel Current Mode Cancel and Wait

The default value is None. When the value is None the track selection is changed without effecting the current track. If the track is recording, muted, etc. it will continue in that mode. When the value is Cancel Current Mode the mode active in the current track will be canceled and the track returned to Play mode. Note that for modes that do rounding like Mulitply the actual ending of the mode may happen long after the track selection has changed. When the value is Cancel and Wait the mode active in the current track will be canceled, and Mobius will wait for the track to return to Play mode before changing tracks.

7.47 Window Edge Unit


Internal name: windowEdgeUnit Internal values: subcycle, msec, frame This combined with Window Edge Amount defines the amount of change made by the Window Start Forward, Window Start Backward, Window End Backward, and Window End Forward functions. When the value is Subcycle the unit of change is some number of subcycles from the original window. When the unit is msec the unit of change is in milliseconds, and when the unit is frame the unit of change is in frames (samples).

7.48 Window Edge Amount


Internal name: windowEdgeAmount This combined with Window Edge Unit defines the amount of change made by the Window Start Forward, Window Start Backward, Window End Backward, and Window End Forward functions. The value is an integer number of subcycles, milliseconds, or frames. It is normally 1 when the unit is subcycles.

7.49 Window Slide Unit


Internal name: windowSlideUnit Internal values: loop, cycle, subcycle, msec, frame This combined with Window Slide Amount defines the amount of change made by the Window Forward and Window Backward functions. When the value is Loop the unit of change is width of the entire loop window. The other values allow you to slide the window using smaller or larger increments.

7.50 Window Slide Amount

Internal name: windowSlideAmount This combined with Window Slide Unit defines the amount of change made by the Window Forward and Window Backward functions. The value is an integer number of loops, cycles, subcycles, milliseconds, or frames. It is normally 1 for loops, cycles, and subcycles.

8 Track Parameters
Each track has a few parameters that are set in the Track Setup. These will have their initial values specified in the Track Setup but they may be changed in scripts.

8.1 Focus Lock


Internal name: focus Internal value: true, false This parameter determines whether the track has focus lock. The parameter may be set with the Focus Lock function or by clicking on the Track Number in the track strip. Script example:

set focus true FocusLock


See Focus Lock in the Exploring Mobius manual for more information.

8.2 Group
Internal name: group Internal value: an integer from 1 to 8 This parameter determines whether the track is a member of a track group. The value is an integer parameter that has the number of the track group in the current track. If the value is zero there is no track group. Positive group numbers are displayed as letters in the user interface. Group 1 is displayed as A group 2 is displayed as B etc. When setting this parameter from a script you may use either numbers staring from 1 or letters starting from A. Script example:

set group 1 set group A

See Track Groups in the Exploring Mobius manual for more information.

8.3 Input Port


Internal name: inputPort Internal value: number between 1 and 64 This parameter has the number of the audio input port for this track when Mobius is running standalone. A port is set of stereo channels so port 1 is channels 1 and 2, port 2 is channels 3 and 4, and so on. To set the port used when Mobius runs as a plugin use Plugin Input Port.

8.4 Mono
Internal name: mono Internal value: true, false When set, this parameter will cause the left and right audio input channels to be summed and then sent equally to the left and right output channels. This can be used if you have a single channel audio signal such as a guitar DI that you want centered and sent to stereo channels.

8.5 Track Name


Internal name: trackName Internal value: text This parameter holds the track name which will be displayed in the Track Strip . If the name is not set then the track number is displayed.

8.6 Output Port


Internal name: outputPort Internal value: number between 1 and 64 This parameter has the number of the audio output port for this track when Mobius is running standalone. A port is set of stereo channels so port 1 is channels 1 and 2, port 2 is channels 3 and 4, and so on. To set the port used when Mobius runs as a plugin use Plugin Output Port.

8.7 Plugin Input Port


Internal name: pluginInputPort Internal value: number between 1 and 64 This parameter has the number of the audio input port for this track when Mobius is running as a plugin. A port is set of stereo channels so port 1 is channels 1 and 2, port 2 is channels 3 and 4, and so on.

To set the port used when Mobius runs standalone use Input Port.

8.8 Plugin Output Port


Internal name: pluginOutputPort Internal value: number between 1 and 64 This parameter has the number of the audio output port for this track when Mobius is running as a plugin. A port is set of stereo channels so port 1 is channels 1 and 2, port 2 is channels 3 and 4, and so on. To set the port used when Mobius runs standalone use Output Port.

8.9 Preset
Internal name: preset Internal value: a preset name This parameter has the name of the preset that is active in the track. This is intended for use only in scripts, in the user interface you select presets from the preset menu or from the preset window. When setting this from scripts you may use either the preset name or the preset number from 1. While setting this parameter in scripts is allowed, it is preferable in scripts to use the Preset built-in script function. Script example:

set preset 1 set preset "My Preset" Preset 1 Preset "My Preset"

8.10 Preset Number


Internal name: presetNumber Internal value: an integer from 1 to infinity This parameter has the number of the preset that is active in the track. This is intended for use only in scripts, in the user interface you select presets from the preset menu or from the preset window. When setting this from scripts you may use either the preset name or the preset number from 1. While setting this parameter in scripts is allowed, it is preferable in scripts to use the Preset built-in script function.

Script example:

set presetNumber 1 Preset 1


The parameter is functionally the same as Preset but using it makes it clearer in the script that the value will be a number rather than a name.

9 Setup Parameters
The track setup contains several parameters that apply to the collection of tracks as a whole. Most of these are related to synchronization.

9.1 Active Track


This parameter specifies the number of the track that will be selected when the track setup is selected, or when a Global Reset is performed. This parameter is not accessible in scripts.

9.2 Beats Per Bar


Internal name: beatsPerBar Internal value: an integer from 1 to 512 This parameter specifies the number of synchronization beats in one bar of music. What a "bar" actually represents is flexible, often it represents a "measure" in standard music notation but it may represent something larger. If this parameter is not set or set to zero, then the Subcycles parameter is used instead. It is recommended that you set Beats Per Bar to a non-zero value so that Subcycles may be used for quantization without impacting the bar size. The parameter is used in three places.

During MIDI Slave Sync to set the bar size of the incoming MIDI clocks During MIDI Master Sync to calculate the tempo of the generated MIDI clocks With the Auto Record function to calculate the length of the recording

See Configuring the MIDI Sync Source in the Mobius Synchronization manual for more information on how this parameter is used with MIDI Slave Sync. See Calculating The Tempo in the Mobius Synchronization manual for more information on how this parameter is used with MIDI Master Sync. See Auto Record in the Mobius Techniques manual for more information on how this parameter is used with the Auto Record function.

9.3 Binding Overlay

This parameter specifies the binding overlay that is to be activated when the setup is selected, or when a Global Reset is performed. This parameter is not accessible in scripts.

9.4 Default Sync Source


Internal name: defaultSyncSource Internal values: none, track, out, host, midi This parameter sets the default sync source for all tracks. This may be overridden in each track by setting the Sync Source parameter to something other than Default. See Sync Source in the Mobius Synchronization manual for more information on how to configure sync sources.

9.5 Default Track Sync Unit


Internal name: defaultTrackSyncUnit Internal values: subcycle, cycle, loop This parameter sets the default master track synchronization points when the sync source is set to Track. The value may be overridden in each track by setting Track Sync Unit to something other than Default. See Track Sync in the Mobius Synchronization manual for more information on how to configure track sync.

9.6 Out Sync Manual Start


Internal name: manualStart Internal value: true, false When this parameter is true and the track sync source is Out, a MIDI Start message is not sent immediately after recording a loop. Instead you must use the MIDI Start function to start the external device. See MIDI Master Sync in the Mobius Synchronization manual for more information on how to control external devices.

9.7 Out Sync Max Tempo


Internal name: maxTempo Internal value: an integer from 10 to 500 This parameter sets the upper bound of tempos calculated for MIDI clocks generated when a track is the MIDI Sync Master. The value is an integer beats per minute (BPM). The default value is 300. This value should be greater than the value for Out Sync Min Tempo. See Controlling The Tempo in the Mobius Synchronization manual for more information on how this parameter is used with MIDI Master Sync.

9.8 Out Sync Min Tempo


Internal name: minTempo Internal value: an integer from 10 to 500 This parameter sets the lower bound of tempos calculated for MIDI clocks generated when a track is the MIDI Sync Master. The value is an integer beats per minute (BPM). The default value is 20. This value should be less then the value for Out Sync Max Tempo. See Controlling The Tempo in the Mobius Synchronization manual for more information on how this parameter is used with MIDI Master Sync.

9.9 Out Sync Mute Action


Internal name: muteSyncMode Internal values: transport, transportClocks, clocks, none This parameter determines how the MIDI master clock changes when the master loop is muted or paused. The clocks may continue or be suspended, and additional MIDI realtime messages such as Start, Stop and Continue. may be sent. This parameter is only relevant when Sync Source is set to Out and the track is acting as the MIDI Sync Master. See Mute and Pause During MIDI Master Sync in the Mobius Synchronization manual for more information.

9.10 Out Sync Realign Action


Internal name: outRealign Internal values: midiStart, restart This parameter determines how the Realign function will behave in the MIDI sync master loop. It may either restart the Mobius loop from the beginning, or it may send a MIDI Start message to restart the external loop from the beginning. See Realign with MIDI Master Sync in the Mobius Synchronization manual for more information.

9.11 Out Sync Resize Adjust


Internal name: resizeSyncAdjust Internal values: none, tempo This parameter determines how the MIDI master clock changes when the master loop size is changed. The clock tempo may either change to match the new size of the loop or it may be held constant. This parameter is only relevant when Sync Source is set to Out and the track is acting as the MIDI Sync Master. See Adjusting The Tempo in the Mobius Synchronization manual for more information.

9.11.1 Out Sync Speed Adjust


Internal name: speedSyncAdjust Internal values: none, tempo This parameter determines how the MIDI master clock changes when the master loop playback speed is changed. The clock tempo may either change to match the new playback speed of the loop or it may be held constant. This parameter is only relevant when Sync Source is set to Out and the track is acting as the MIDI Sync Master. See Adjusting The Tempo in the Mobius Synchronization manual for more information.

9.12 Restore After Reset


This parameter contains a list of parameters and controls that will be restored to the value set in the track setup when a Reset or Track Reset is performed. All parameters and controls are restored to their setup values when a Global Reset is performed but for loop and track resets you may want to allow some settings to continue. This parameter is not accessible in scripts.

9.13 Realign Time


Internal name: realignTime Internal values: immediate, subcycle, cycle, loop, external This parameter determines when the Realign will be performed. Realign is typically delayed until either the Mobius loop or the external loop reach their start points (loop or external). See Realign in the Mobius Synchronization manual for more information.

9.14 Slave Sync Unit


Internal name: slaveSyncUnit Internal values: beat, bar This parameter sets the synchronization unit when the sync source is MIDI or Host. With these sources Mobius may synchronize recording to either a beat pulse or a bar pulse. See MIDI Slave Sync and Host Sync in the Mobius Synchronization manual for more information on how to configure these sync sources.

9.15 Sync Source


Internal name: syncSource Internal values: default, none, track, out, host, midi

This parameter sets the sync source for a tracks. When the value is Default the value of Default Track Sync Unit will be used for this track. See Sync Source in the Mobius Synchronization manual for more information on how to configure sync sources.

9.16 Track Sync Unit


Internal name: trackSyncUnit Internal values: default, subcycle, cycle, loop This parameter sets the master track synchronization points when the sync source is set to Track. When set to Default the value of Default Track Sync Unit is used. See Track Sync in the Mobius Synchronization manual for more information on how to configure track sync.

10 Track Controls
Track controls are really just Track Parameters but we call them controls because the values of these parameters is different than the others. A control value ranges from 0 to 127 and is almost always bound to a MIDI expression pedal.

10.1 Feedback
Internal name: feedback Internal value: 0 to 127 Feedback controls how the loop decays over time. With feedback set at 127 the loop does not decay, it will play that way forever or until you change it with looping functions. With feedback reduced the loop will gradually become softer every time it plays until it eventually decays to silence. A common looping technique is to use Overdub with feedback reduced. You can keep adding new layers to the loop but old layers will decay. In this way you can create evolving loops that change gradually over time. See Using Feedback in the Getting Started With Mobius manual for more information.

10.2 Input Level


Internal name: input Internal value: 0 to 127 Input Level controls the amount of attenuation (volume reduction) applied to the audio stream coming in from the audio interface or the plugin host. A value of 127 means that the audio is unmodified. Lowering the value attenuates the audio using an approximate logarithmic curve. Usually input level is left all the way up, but you may want to reduce it if you have different instruments routed to each track and you want to balance their input levels.

10.3 Output Level


Internal name: output Internal value: 0 to 127 Output Level controls the amount of attenuation applied to the track output as it is sent to the audio device or plugin host. Like Input Level a value of 127 means the is passed unmodified. Output levels are frequently changed to balance the track mix. Functions that add new material to a loop such as Overdub can cause a loop to become progressively louder. After several overdubs it may be necessary to reduce the output level to match the other tracks. Output levels are also commonly changed as an effect, such as temporarily muting tracks or performing a gradual fade in or fade out.

10.4 Pan
Internal name: pan Internal value: 0 to 127, center 64 Pan adjusts the relative output levels of the left and right channels of the track.

10.5 Pitch Bend


Internal name: pitchBend Internal value: -8192 to 8191 Pitch Bend is used to make continuous adjustments to the loop pitch. Unlike Pitch Step the adjustments are much more gradual and smooth. This control is most effective when bound to a MIDI Pitch Wheel. You may also bind it to a MIDI Continuous Controller but the pitch wheel will have more resolution and sound smoother. The bend range may be controlled with the Pitch Bend Range preset parameter.

10.6 Pitch Octave


Internal name: pitchOctave Internal value: -4 to 4 Pitch Octave is used to make adjustments to the loop pitch in jumps of one octave. When bound to a MIDI continuous controller, the center position of the control will cause no pitch shift. Moving the control down will lower the pitch.

10.7 Pitch Step


Internal name: pitchStep Internal value: -48 to 48

Pitch Step is used to make adjustments to the loop pitch in jumps of one semitone. When bound to a MIDI continuous controller, the center position of the control will cause no pitch shift. Moving the control down will lower the pitch. It is very similar to the Pitch Step function, but differs in how binding arguments are used and the range can be controlled with the Pitch Step Range preset parameter.

10.8 Secondary Feedback


Internal name: altFeedback Internal value: 0 to 127 Secondary Feedback is like Feedback except that it is active at different times. It must be enabled by selecting the Enable Secondary Feedback preset parameter. See Using Feedback in the Getting Started With Mobius manual for more information.

10.9 Speed Bend


Internal name: speedBend Internal value: -8192 to 8191 Speed Bend is used to make continuous adjustments to the loop speed. Unlike Speed Step the adjustments are much more gradual and smooth. This control is most effective when bound to a MIDI Pitch Wheel. You may also bind it to a MIDI Continuous Controller but the pitch wheel will have more resolution and sound smoother. The bend range may be controlled with the Speed Bend Range preset parameter.

10.10 Speed Octave


Internal name: speedOctave Internal value: -4 to 4 Speed Octave is used to make adjustments to the loop speed in jumps of one octave. When bound to a MIDI continuous controller, the center position of the control will cause no speed shift. Moving the control down will lower the speed.

10.11 Speed Step


Internal name: speedStep Internal value: -48 to 48 Speed Step is used to make adjustments to the loop speed in jumps of one semitone. When bound to a MIDI continuous controller, the center position of the control will cause no speed shift. Moving the control down will lower the speed. It is very similar to the Speed Step function, but differs in how binding arguments are used and the range can be controlled with the Speed Step Range preset parameter.

10.12 Time Stretch


Internal name: timeStretch Internal value: -8192 to 8191 Time Stretch is used to make continuous adjustments to the loop speed and pitch. It combines pitch shift with speed shift to result in changes to the loop duration without altering the pitch. This control is usually bound to a MIDI pitch wheel or continuous controller. When the MIDI control is at the center position there will be no time stretch. The stretch range may be controlled with the Time Stretch Range preset parameter.

11 Global Parameters
Global parameters affect the operation of Mobius regardless of which setup, preset, or binding configuration is active. There is only one set of global parameters and they are always active. To edit most global parameters open the Configuration menu and select the Global Parameters item.

11.1 16 Bit Wave Files


Internal name: 16BitWaveFile Internal value: true, false When this boolean parameter is true, Mobius will save all audio samples as 16-bit integers when writing .wav files. It is found under the Miscellaneous tab of the Global Parameters window. If this is not enabled, samples are stored as 32-bit floating point numbers. 32-bit is usually preferred because it provides greater dynamic range, but not all audio applications are able to open 32-bit files. If you have trouble loading a file that Mobius saves try saving it in 16-bit mode. See also Save Loop in the Exploring Mobius manual. Script example:

set 16BitWaveFile true

11.2 Audio Input Device


Internal name: audioInput Internal value: device name This parameter has the name of the audio device Mobius will open for input when running in standalone mode. Unlike most global parameters this is edited in the Audio

Devices window. If you are using an ASIO device the value of this parameter must be the same as the Audio Output Device parameter. In a script, this parameter may only be read, setting the value will have no effect. One possible script application is to use the parameter in a conditional expression to change the behavior of the script depending on which device is selected.

11.3 Audio Output Device


Internal name: audioOutput Internal value: device name This parameter has the name of the audio device Mobius will open for output when running in standalone mode. Unlike most global parameters this is edited in the Audio Devices window. If you are using an ASIO device the value of this parameter must be the same as the Audio Input Device parameter. In a script, this parameter may only be read, setting the value will have no effect. One possible script application is to use the parameter in a conditional expression to change the behavior of the script depending on which device is selected.

11.4 Bindings
Internal name: bindings Internal value: binding set name This parameter has the name of the MIDI binding set that will be merged with the default binding set. Unlike most global parameters this one is set in the MIDI Control window, if you leave a binding set selected other than the first one. In scripts, the value will be a string containing the name of the binding set. Since binding set names often contain spaces you must remember to surround the name in quotes. Script example:

set bindings "Ground Control Pro Bank 1"

11.5 Confirmation Functions


Internal name: confirmationFunctions Internal value: comma separated list of function names This parameter contains the names of functions that will cause a loop switch to be confirmed when in Confirm mode. By default the list is empty, but past EDP users may wish to add Undo to the list since this is what the EDP always uses for switch confirmation.

The Confirm function does not need to be on this list, it is always a switch confirmation function. In scripts the value of this parameter will be a string containing a comma separated list of function names. Script example:

set confirmationFunctions Undo,Redo

11.6 Custom Message File


Internal name: customMessageFile Internal value: message file name This parameter is used to specify a alternative file containing the text that Mobius uses in the user interface. It is found under the Miscellaneous tab of the Global Parameters window. The default message file is Catalog_USEnglish.txt. Creating custom message files can be used if you need to shorten or otherwise change some of the text seen in the user interface. It can also be used if you want to translate the text into another language. This is recommended only for advanced users since the contents of the message file can change at every Mobius release and it can become difficult to synchronize the custom files. If you have a change you think should be in the default message files contact us. This parameter cannot be set from scripts.

11.7 Drift Check Point


Internal name: driftCheckPoint Internal value: loop, external NOTE: This is an experimental parameter that is not visible in the user interface. If you feel you need to use this parameter please contact us. This parameter determines when Mobius will check to see if synchronized loops have drifted away from the master clock. The possible values are:

loop - at the start point of the Mobius loop (the default) external - at the start point of the external loop

When set to external we check for sync drift every time the external loop reaches the start point. The external start point is defined by the number of "pulses" counted when the loop was first recorded. When syncing to MIDI clocks a pulse is a MIDI clock, when syncing to VST beats a pulse is a VST beat, when syncing to a VST bar a pulse is a VST bar, etc. Every time we receive this number of pulses we are at the external loop start point. For example, when syncing from MIDI clocks, a loop is recorded for 96 clocks. After

recording we continue to count MIDI clocks wrapping back to zero every time we count up to 96. When we wrap back to zero, this is the external start point. Script example:

set driftCheckPoint external


See Drift Correction in the Mobius Synchronization manual for more information.

11.8 Drift Resync Frames


Internal name: maxSyncDrift Internal value: an integer from 256 to infinity This parameter has the number of frames Mobius will allow a loop to drift out of sync with a master clock before it is corrected to bring it back into alignment. It is found under the Advanced tab of the Global Parameters window. This parameter may be set from scripts though there is never a need to do so. This is something you normally set once when tuning a new installation, then you leave it that way until something significant changes, like getting a new MIDI interface. The useful range is between 1000 and 10000. The default value is 2048. Some amount of drift is unavoidable due to clock jitter and tends to correct itself over time. It is not recommended that you set this value below 1000 or excessive and unnecessary correction may occur. If you set the value too high drift will not be corrected. See Drift Correction in the Mobius Synchronization manual for more information.

11.9 Dual Plugin Edit Window


Internal name: dualPluginWindow Internal value: true, false This parameter controls the number of windows that will be opened when using Mobius as a VST plugin. It is found under the Miscellaneous tab of the Global Parameters window. Most plugins open an single "edit" window to change the plugin parameters. But this window is controlled by the host application and it has several important restrictions. The host's window can't be resized which is often desirable after customizing the Mobius user interface. Events from the computer keyboard are also passed inconsistently which means you might not be able to use all of key and shift combinations as Mobius function triggers. When this option is enabled, Mobius will open two edit windows, the first is the window controlled by the host application, which will be small and contain only the Mobius icon. The second will be an independent window containing the Mobius user interface. Because this window is not controlled by the host, it can be resized and will receive all keyboard events.

This option is only available for VST plugins under Windows. It is not available for either VST or Audio Unit plugins on the Mac. This parameter cannot be set from scripts.

11.10 Fade Frames


Internal name: fadeFrames Internal name: an integer from 0 to infinity NOTE: This is an experimental parameter that is not accessible from the user interface. If you feel you have a need for this parameter please contact us. Mobius performs a cross fade whenever playback must change abruptly such as when performing an unquantized loop switch, a loop restart, or a replace. The value of this parameter is the length of this fade in frames. This is necessary to prevent "snapping" or "clicking" sounds during playback caused by sudden changes in sample level. The default value is 128 and there is rarely a need to change it. The value cannot be set below 16 because this would increase the chance of audible artifacts. It cannot be set higher than 256 because the size is used in the allocation of stack buffers which must be limited. Originally this could be set from the Global Parameters window with the intent that users could set it to a very high value to get "pumping" and "breathing" effects. With the introduction of the 256 maximum size, this is no longer possible and since 256 doesn't sound much different than 128 the parameter is no longer exposed. We may restore the ability to set long fade times, if you have used this in the past please contact us. Script example:

set fadeFrames 16

11.11 Focus Lock Functions


Internal name: focusLockFunctions Internal value: a comma separated list of function names This parameter specifies which functions will be sensitive to focus lock. It is found under the Functions tab of the Global Parameters window. In XML this is represented by the FocusLockFunctions element. In scripts the value is a string containing a comma separated list of internal function names. Script example:

set focusLockFunctions Record,Overdub,Multiply

11.12 Groups Have Focus Lock


Internal name: groupFocusLock Internal value: true, false This boolean parameter determines whether track groups are to have focus lock behavior. It is found in the Miscellaneous tab of the Global Parameters window. The default value is false. See Focus Lock and Track Groups and Focus Lock in the Exploring Mobius manual for more information on focus lock behavior and track groups.

11.13 Host MIDI Status Export


Internal name: hostMidiExport Internal value: true, false This parameter causes MIDI messages to be sent to the plugin host whenever certain Mobius controls or parameters are changed from the user interface or from scripts. It is found under the Miscellaneous tab of the Global Parameters window. This parameter is only relevant when running Mobius as a plugin. The purpose of this parameter is to keep bi-directional MIDI control surfaces in sync with the actual Mobius state. Script example:

set hostMidiExport true


See MIDI Status Export in the Exploring Mobius manual for more information.

11.14 Input Latency


Internal name: inputLatency Internal value: an integer from 0 to infinity This parameter has the number of frames of input latency used for latency compensation. Unlike most global parameters this is not set in the Global Parameters window. Instead it is set in the Audio Devices window when you select an audio device. If you entered a value in the Override Input Latency Frames field that will be the initial value of the inputLatency parameter. If you did not specify an override the parameter will have a value returned by the device driver for the audio interface. You can set this parameter from a script but this is not recommended. If you read some of the Mobius test scripts you will see the latency being set but that is only done so the tests can run with the same latency compensation levels for any audio device. We have never heard of a legitimate reason for users to set this parameter.

11.15 Isolate Overdubs


Internal name: isolateOverdubs Internal value: true, false NOTE: This is an experimental parameter that is not accessible from the user interface. This is no longer exposed in the user interface because it is hard to explain, it isn't obvious when it has been enabled, and it can up to double the amount of memory required for each layer. If you feel you have a need for this parameter please contact us. This is a boolean parameter that when true will cause Mobius to save an independent copy of the new audio content added to each layer. This copy will be saved as a .wav file when you save a project. Normally, new content that is overdubbed in a layer is merged with content carried over from the previous layer in a process called "flattening". When a project is saved the .wav file for the layer contains both the new content and the content from previous layers. When the Isolate Overdubs option is on, the project saves two .wav files for each layer, one containing the flattened content, and one containing only the new content overdubbed during the recording of the layer.

11.16 Long Press Milliseconds


Internal name: longPress Internal value: an integer from 100 to infinity This parameter has the number of milliseconds that Mobius will wait while a sustainable trigger is held in its "down" state before performing the long press behavior. It is found under the Miscellaneous tab of the Global Parameters window. Several functions have long press behavior, the Record function for example will convert to the Reset function if the trigger is held down. Scripts will also receive notification if the long press time has been reached and may take special action. IF a function has long press behavior it will be mentioned in the reference section for that function. The default value is 500 (1/2 second) which is acceptable to most people. Normally you do not set the value lower than this because it becomes easier to cause the long press behavior accidentally just by lingering a little on the switch. Setting it higher will give you more time to release the switch. Script example:

set longPress 1000

11.17 Max Loops Per Track


Internal name: maxLoops

Internal value: an integer from 1 to 16 This parameter has the maximum number of loops that are allowed in each track. It is found under the Limits tab of the Global Parameters window. The default is 4. Note that this does not by itself specify how many loops will be in a track, that is done by the preset parameter Loop Count. For example, Max Loops Per Track may be 8 but if Loop Count is 4 the track will only have 4 loops. Setting this parameter is important if you have chosen to add the Loop Status component to the track strip. This component displays a vertical column of rectangles representing the loops in a track. Because the actual number of loops is determined by the Loop Count preset parameter, each track may contain a different number of loops. But while tracks can have different numbers of loops, the height of this component must be the same in all tracks. The Max Loops Per Track determines the height of the Loop Status component. If the track has fewer than this number of loops, the component will just display empty space at the bottom. Because people usually want the track strip to be as short as possible, you should think about the number of loops you will actually need in each track so you don't waste space in the track strip. If you don't use the Loop Status component then this parameter is ignored. It is not meaningful to set this parameter from a script because changing will not cause the user interface to be redrawn. The value can only be set from the Global Parameters window, and it will only take effect when you restart Mobius.

11.18 Message Duration


Internal name: messageDuration Internal value: an integer from 0 to infinity This has the number of seconds that messages generated by the Message script function will appear in the user interface. This is found under the Miscellaneous tab of the Global Parameters window. The default value is 2. If you set this to 0, messages will be shown continuously until they are changed. To see messages you must also have the Messages component enabled in the status area. See Components in the Exploring Mobius manual for more information on customizing the user interface. Script examples:

set messageDuration 10

11.19 MIDI Input


Internal name: midiInput Internal value: a comma separated list of device names

This parameter has the names of the MIDI devices that have been selected for input when running in standalone mode. This is not set in the Global Parameters window, it is set from the Input Devices panel in the MIDI Devices window. When used in a script the value will be a string containing a comma separated list of device names. Setting this value in a script will have no effect until Mobius is restarted. This is a relatively useless parameter, but you could use it in a script to take different actions depending on the MIDI devices being used.

11.20 MIDI Output


Internal name: midiOutput Internal name: a device name This parameter has the name of the MIDI device that has been selected for output when running in standalone mode. This is not set in the Global Parameters window, it is set from the Output Devices panel in the MIDI Devices window. When used in a script the value will be a string containing the device name. Setting this value in a script will have no effect until Mobius is restarted. This is a relatively useless parameter, but you could use it in a script to take different actions depending on the MIDI devices being used.

11.21 MIDI Record Mode


Internal name: midiRecordMode Internal value: average, smooth, pulse This parameter determines how the end of a MIDI slave synchronized recording will be calculated. This is an experimental parameter that is only accessible from scripts. It should always be left at the default of average.

11.22 MIDI Status Export


Internal name: midiExport Internal value: true, false This parameter causes MIDI messages to be sent to the selected MIDI output devices whenever certain Mobius controls or parameters are changed from the user interface or from scripts. It is found under the Miscellaneous tab of the Global Parameters window. The purpose of this parameter is to keep bi-directional MIDI control surfaces in sync with the actual Mobius state. It is relevant for both standalone and plugin modes, but if you want status exports from the plugin you will need to select plugin MIDI devices in the MIDI Devices window. Script example:

set midiExport true


See MIDI Status Export in the Exploring Mobius manual for more information.

11.23 MIDI Through


Internal name: midiThrough Internal value: a device name This parameter holds the name of the MIDI device that have been selected as a "through" device when running in standalone mode. This is not set in the Global Parameters window, it is set from the Through Device panel in the MIDI Devices window. A "through" device will immediately receive a copy of every MIDI message that comes in on all the selected input devices. There is rarely a need to select a MIDI through device. Unlike the parameters for input and output devices, there can only be one through device. When used in a script the value will be a string containing the device name. Setting this value in a script will have no effect until Mobius is restarted. This is a relatively useless parameter, but you could use it in a script to take different actions depending on the MIDI devices being used.

11.24 Modes Ignoring Secondary Feedback


Internal name: altFeedbackDisable Internal value: a comma separated list of mode names This parameter has the names of the recording modes that will not respond to the Secondary Feedback control. It is found under the Modes tab of the Global Parameters window. Secondary feedback must first be enabled with the Enable Secondary Feedback preset parameter. When this is enabled, the following recording modes will by default use secondary feedback rather than primary feedback.

Multiply Overdub Stutter Substitute

If you do not want these modes to use secondary feedback, add the mode name to the Modes Ignoring Secondary Feedback parameter using the item selector. In Replace mode, the feedback level is always zero. In Insert mode, there is no background content so feedback is not relevant. In all other modes recording is not active so feedback is not relevant.

The parameter is stored in the mobius.xml file as the AltFeedbackDisables element. In scripts, the value is a string containing a comma separated list of mode names. Script example:

set altFeedbackDisable Multiply,Overdub

11.25 Monitor Audio Input


Internal name: monitorAudioInput Internal value: true, false This parameter causes the audio input for the active track to be sent immediately to the audio output device without modification. It is found under the Miscellaneous tab of the Global Parameters window. This is used if you want to hear the signal being sent into Mobius when you are not monitoring using an external mixer or the "zero latency monitoring" feature of your audio interface. See Audio Input Monitoring in the Installation Guide for more information on monitoring techniques.

11.26 Mute Cancel Functions


Internal name: muteCancelFunctions Internal value: comma separated list of function names This parameter contains the names of functions that will cause an immediate cancellation of Mute or Pause mode. It is found under the Functions tab of the Global Parameters window. By default, mute mode is only canceled by executing the Mute function a second time, or by executing the Play, Record or Reset functions. Other loop editing functions like Overdub will not cancel Mute mode. This can be used in advanced looping techniques where a loop is muted and then modified without the audience hearing it while it is being modified. Then the loop is unmuted and the audience hears the result. In scripts the value of this parameter will be a string containing a comma separated list of function names. Script example:

set muteCancelFunctions Overdub,Multiply


See Mute, Pause, and Solo in the Mobius Techniques manual for more information.

11.27 Noise Floor


Internal name: noiseFloor Internal value: an integer from 0 to 65535 This parameter determines the minimum signal level that is considered to be "significant" enough when overdubbing to cause the generation of a new layer. It is found under the Miscellaneous tab of the Global Parameters window. When Overdub mode is active and new content is added to the loop, a new layer is usually generated at the end of each pass over the loop. If the new audio 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 pass. The EDP calls this feature "auto undo". If the value is too low, a new layer will be generated every pass through the loop because string noise, AC buzz, or crowd noise is enough to make Mobius think that something important has been recorded. If the value is too high, Mobius may decide not to keep an overdub even if you were playing your heart out. Script example:

set noiseFloor 50
See Noise Floor in the Mobius Techniques manual for more information.

11.28 OSC Input Port


Internal name: oscInputPort Internal value: an integer from 0 to 10000 The number of the TCP/IP port we use to listen for OSC messages.

11.29 OSC Output Host


Internal name: oscOutputHost Internal value: text The name or the IP address of the host to which we will send OSC messages.

11.30 OSC Output Port


Internal name: oscOutputPort Internal value: an integer from 0 to 10000 The number of the TCP/IP port we use to send OSC messages to the host named in the OSC Output Host parameter.

11.31 Output Latency


Internal name: outputLatency Internal value: an integer from 0 to infinity This parameter has the number of frames of output latency used for latency compensation. Unlike most global parameters this is not set in the Global Parameters window. Instead it is set in the Audio Devices window when you select an audio device. If you entered a value in the Override Output Latency Frames field that will be the initial value of the outputLatency parameter. If you did not specify an override the parameter will have a value returned by the device driver for the audio interface. You can set this parameter from a script but this is not recommended. If you read some of the Mobius test scripts you will see the latency being set but that is only done so the tests can run with the same latency compensation levels for any audio device. We have never heard of a legitimate reason for users to set this parameter.

11.32 Periodic Status Log


Internal name: logStatus Internal value: true or false This parameter enables printing of Mobius memory consumption and track structure once a minute. It is normally off unless you are working with developers to diagnose a memory problem.

11.33 Plugin MIDI Inputs


Internal name: pluginMidiInput Internal value: a comma separated list of device names This parameter has the names of the MIDI devices that have been selected for input when running in plugin mode. This is not set in the Global Parameters window, it is set from the Plugin Input Devices panel in the MIDI Devices window. When used in a script the value will be a string containing a comma separated list of device names. Setting this value in a script will have no effect until Mobius is restarted. This is a relatively useless parameter, but you could use it in a script to take different actions depending on the MIDI devices being used.

11.34 Plugin MIDI Outputs


Internal name: pluginMidiOutput Internal value: a comma separated list of device names This parameter has the names of the MIDI devices that have been selected for output when running in plugin mode. This is set in the Plugin Output Devices panel in the MIDI Devices window.

When used in a script the value will be a string containing a comma separated list of device names. Setting this value in a script will have no effect until Mobius is restarted.

11.35 Plugin MIDI Through


Internal name: pluginMidiThrough Internal value: a device name This parameter has the name of the MIDI devices that has been selected for "through" when running in plugin mode. It is set in the Plugin Through Device panel in the MIDI Devices window. If a through device is selected, any MIDI messages received from all the input devices will be immediately echoed to the through device. Unlike the parameters for input and output devices, you can only select one through device. When used in a script the value will be a string containing the device name. Setting this value in a script will have no effect until Mobius is restarted.

11.36 Plugin Ports


Internal name: pluginPorts Internal value: an integer from 2 to 64 This parameter specifies the number of input and output pins we will expose to the VST or Audio Units plugin host. It is set under the Limits tab of the Global Parameters window. The default is 8 ports which corresponds to 16 pins. Some hosts may refuse to load plugins that have more than one pair of stereo input and output channels. If you have a host that will not the insert the Mobius plugin, try reducing the number of channels. This is discussed in more detail in the Plugin Pins section of the Installation Guide.

11.37 Quick Save File


Internal name: quickSave Internal value: file name This parameter has the file system path to the file where the current loop is saved when selecting the Save Quick menu item or using the Save Loop function. It is found under the Miscellaneous tab of the Global Parameters window. The name must not include the .wav extension. The actual name of the file will be derived from the specified path plus a number to make the name unique. This allows you to use the Save Quick item several times without overwriting the previous file that was saved. Script example:

set quickSave c:\temp\mobiusloop set quickSave /Users/Jeff/loops/mobiusloop


See Quick Save in the Exploring Mobius manual for more information.

11.38 Speed/Pitch Note Range


Internal name: shiftRange Internal value: an integer from 1 to 128 This parameter defines the range of MIDI notes or controller values that will be automatically bound to the Speed Step or Pitch Step functions. The center of the range is defined by the note or control selected in the binding window. The parameter is found under the Miscellaneous tab of the Global Parameters window. For example, if you bind MIDI note number 60 (middle C) to the Speed Step function and the Speed/Pitch Note Range parameter is 12, you will have a two octave range of speed shift available. The center note 60 will be normal, 61 will be one semitone higher, 59 will be one semitone lower, etc. Note that the number defines the number of semitones in one direction, so 12 means 12 semitones up and 12 semitones down for a total range of 24. This allows you to play loops chromatically without having to manually bind every note in the range, you just bind the center note and Mobius automatically takes care of the rest of the note range. If you select a wide range, the bindings may conflict with other binding you made in the MIDI Control window. If there is a conflict, the explicit binding seen in the MIDI Control will have priority. For example if you have Speed Step bound to note 60 with a range of 12 and you have Record bound to note 50, notes 49 and 51 will do a speed shift but 50 will do a record. These "holes" in the shift range make shift hard to use so if you need a wide range it is recommended that you select a single MIDI channel just for speed or pitch shift notes and put all your other MIDI bindings on another channel. Script example:

set shiftRange 48

11.39 Reduce Feedback During Overdub


Internal name: autoFeedbackReduction Internal value: true, false This is a boolean parameter that when true will cause an automatic 5% reduction in feedback during Overdub, Multiply, and Stutter modes when the Feedback control is

set to the maximum value of 127. It is found under the Miscellaneous tab of the Global Parameters window. Enabling this parameter can reduce the chance of harsh digital clipping when overdubbing because a small amount of feedback will always be applied. Even when enabled though it is still possible to reach clipping if your overdubs are very loud. Script examples:

set altFeedbackReduction true set altFeedbackReduction false


See Reduce Feedback During Overdub in the Mobius Techniques manual for more information.

11.40 Save Project Layers


Internal name: saveLayers Internal value: true, false This is a boolean parameter that when true will cause the complete layer history to be saved with a project. It is found under the Advanced tab of the Global Parameters window. Normally when a project is saved, only one .wav file is created for each loop that contains the most recent layer. When this parameter is set, we will save one .wav file for every layer in the loop. There are two reasons you might want to set this. First you can use the layer history as raw material when creating audio files in a traditional DAW or audio editor. Second, you can reload the layer history in Mobius so that you can use the Undo function as a performance technique even after saving and loading a project. Usually this is disabled because it requires extra disk space for the project. BUG ALERT: There are problems restoring projects saved with layers, we recommend you do not use this parameter if you intend to load the projects back into Mobius. See Projects in the Exploring Mobius manual for more information.

11.41 Selected Track


Internal name: selectedTrack Internal value: an integer from 1 to 32 This parameter has the number of the currently selected track and is intended for use only in scripts. This is not set in the Global Parameters window, you select tracks by clicking on them in the main window or by using one of the track selection functions.

The number of the first track is 1. In a script this parameter may be both read and set, when set it will change the selected track. You can also change the selected track with the Track function which is the preferred way to change tracks. Script example:

set selectedTrack 2
NOTE: Use of this parameter is not recommended, the parameter may be removed in a future release. Use the Track functions instead to select tracks.

11.42 Setup
Internal name: setup Internal value: setup number This parameter has the number of the currently selected track setup. This is not set in the Global Parameters window, instead setups are selected in the Track Setups window. The value of this parameter is always an integer. The first setup will be number 1, the second number 2, and so on. You can set this parameter from a script to change setups. The value in a script may either be the number or the name. You can also change setups in a script by using the Setup statement. The behavior is the same, we prefer using the Setup statement. Because of this the setup parameter is relatively useless, you can change it with a function and scripts almost never need to know the number of the currently selected setup. Script example:

set setup 2 set setup "My Setup"


See Track Setups in the Exploring Mobius manual for more information.

11.43 Trace Debug Level


Internal name: traceDebugLevel Internal value: an integer from 0 to 4 This parameter determines how much information Mobius will be sent to the Windows debug output stream as it runs. It is found under the Advanced tab of the Global Parameters window. This parameter is only meaningful when running on Windows.

The default value is 2 which means both serious errors and operational status messages are sent. See Trace in the Exploring Mobius manual for more information on trace and the debug output stream.

11.44 Trace Print Level


Internal name: tracePrintLevel Internal value: an integer from 0 to 4 This parameter determines how much information Mobius will be sent to the console as it runs. It is found under the Advanced tab of the Global Parameters window. This parameter is only meaningful when running on Windows. The default value is 1 which means only serious errors are sent. See Trace in the Exploring Mobius manual for more information on trace and what the "console" means for Windows and Mac.

11.45 Track Groups


Internal name: trackGroups Internal value: an integer from 0 to 8 This parameter has the maximum number of track groups that can be used as a binding scope.. It is found under the Limits tab in the Global Parameters window. The default value is 2. Setting this to 1 makes track groups behave exactly like Focus Lock so that is not usually done. Setting it to a number higher than the number of tracks may be done but is not recommended since you can't make effective use of all the groups. Typically the number is 2, 3, or 4. See Track Groups in the Exploring Mobius manual for more information.

11.46 Tracks
Internal name: tracks Internal value: an integer from 1 to 16 This parameter has the number of tracks that will be shown in the main window. It is found under the Limits tab of the Global Parameters window. The default value is 8. You can set this number lower to save space in the user interface if you don't need 8 tracks. You can also set it higher if you need more, but there are problems drawing the user interface if you have too many tracks. Changing the parameter will not take effect until you restart Mobius. Because changes do not take effect until a restart, it is meaningless to set this parameter in a script. You might reference it in a script if you need to know how many tracks there are.

12 Menu Reference
12.1 File
12.1.1 Open Loop
Loads a single loop from a file. A standard file selection dialog window will be displayed to select the loop file. You can only load files stored in the Windows .wav format. The current loop will be reset before loading. After the loop has been read, Mobius will enter Pause mode. See the Open Loop section of the Exploring Mobius manual for more information.

12.1.2 Open Project


Loads a project from files. A standard file selection dialog window will be displayed to select the project file. Project files must have the .mob extension. All current track content will be lost. See the Open Project section of the Exploring Mobius manual for more information.

12.1.3 Save Loop


Saves the current loop to a file. A standard file save dialog window will be displayed to select the location of the file. The loop is stored in the Windows .wav format. See the Save Loop section of the Exploring Mobius manual for more information.

12.1.4 Save Project


Saves a project to files. A standard file selection dialog window will be displayed to select the project file. Audio content for the project will be saved in other files in the same directory as the project file. See the Save Project section of the Exploring Mobius manual for more information.

12.1.5 Quick Save


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. See the Quick Save section of the Exploring Mobius manual for more information.

12.1.6 Exit
In standalone Mobius, this will close the window and halt the application. All track content will be lost if it has not been saved. In the Mobius plugin this will close the plugin editor window but the plugin remains active.

12.2 Track Setups


This is a dynamic menu whose items will have the same names as the currently configured track setups. Selecting a menu item will activate that setup. See the Track Setups section in Exploring Mobius for more information on track setups.

12.3 Presets
This is 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 in Getting Started With Mobius for more information on presets.

12.4 Configuration
12.4.1 Presets
Displays a dialog window for managing presets. See the Using Presets section in Getting Started With Mobius for more information on presets.

12.4.2 Track Setups


Displays a dialog for managing track setups. See the Track Setups section in Exploring Mobius for more information on track setups.

12.4.3 MIDI Control


Displays a dialog window to manage MIDI bindings. See the MIDI Bindings section in Getting Started With Mobius for more information on MIDI bindings.

12.4.4 Keyboard Control


Displays a dialog window to manage computer keyboard bindings. See the Keyboard Bindings section in Getting Started With Mobius for more information on keyboard bindings.

12.4.5 Buttons
Displays a dialog window to select buttons to be displayed at the top of the main Mobius window.

See the Customizing Buttons section in Exploring Mobius for more information on buttons.

12.4.6 Plugin Parameters


Displays a dialog window to manage plugin parameter bindings for VST and Audio Unit hosts. See the Plugin Parameter Bindings section in Exploring Mobius for more information on plugin parameters.

12.4.7 Scripts
Displays a dialog window to register scripts to be loaded into Mobius. Once registered scripts may be bound to buttons, keys, MIDI events, and any other trigger. See the Using Scripts section in Getting Started With Mobius for an introduction to scripts. See the Mobius Scripting manual for a thorough discussion of scripting.

12.4.8 Samples
Displays a dialog window to register a list of audio .wav files that can be played as samples. See the Samples section in Exploring Mobius for more information on samples.

12.4.9 MIDI Devices


Displays a dialog window to select MIDI input, output, and through devices. There are two sets of devices, one used when Mobius runs as a standalone application, and one when it runs as a plugin. See the MIDI Device Configuration section in the Mobius Installation Guide for more information on selecting MIDI devices.

12.4.10 Audio Devices


Displays a dialog window to select audio input and output devices when running Mobius as a standalone application. See the Audio Device Configuration section in the Mobius Installation Guide for more information on selecting audio devices.

12.4.11 Global Parameters


Displays a dialog window to set miscellaneous parameters that affect the operation of Mobius. See the Global Parameters section for detailed information on each global parameter.

12.4.12 Display Components


Displays a dialog window to specify the loop status components that are displayed in the main Mobius window. See the Customizing the User Interface section in Exploring Mobius for more information on changing the user interface.

12.4.13 Palette
Displays a dialog window to specify the colors that are used when drawing the graphics in the main Mobius window. See the Changing Colors section in Exploring Mobius for more information on changing colors.

12.5 Help Menu


12.5.1 Key Bindings
Displays a dialog window 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. See the Showing Keyboard Bindings section in Getting Started With Mobius for more information.

12.5.2 MIDI Bindings


Displays a dialog window 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. See the Showing MIDI Bindings section in Getting Started With Mobius for more information.

12.5.3 Refresh UI
This will cause the entire Mobius window to be redrawn. Use of this menu item is not usually necessary but it you notice areas in the window that are blank white rectangles, or that don't seem to be displaying properly, try selecting this menu item. This was added to address a problem with the way some plugin hosts open the plugin editor window.

12.5.4 About
Displays ubiquitous about dialog window. There is nothing really interesting here besides the version number which you should include when reporting problems.

Mobius Scripting
March 2012

Contents
1 2 3 4 5 5.1 5.2 5.3 5.4 5.5 5.6 6 7 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.1.6 7.1.7 7.1.8 7.1.9 7.2 7.3 7.3.1 7.3.2 7.3.2.1 7.3.3 7.3.4 7.3.5 7.3.6 7.3.7 7.3.8 Introduction Writing Scripts Running Scripts Debugging Scripts Script Language Fundamentals Anatomy of a Statement Intrinsic and Function Statements Case Insensitivity Parameters and Variables Statement Blocks and Indentation The Mysterious $ Script Execution Environment Script Language Reference Declarations !autoload !controller !focuslock !multiclick !name !quantize !spread !sustain !switchQuantize Expressions Intrinsic Statements break call Procedures cancel diff end endproc echo else

7.3.9 7.3.10 7.3.11 7.3.12 7.3.13 7.3.14 7.3.15 7.3.16 7.3.17 7.3.18 7.3.19 7.3.20 7.3.21 7.3.22 7.3.23 7.3.24 7.3.25 7.3.26 7.3.27 7.3.28 7.3.29 7.3.30 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.5.8 7.5.9 7.5.10 7.5.11 7.5.12 7.5.13

elseif endif end for if initpreset jump label load message next preset proc prompt repeat save set setup unittestsetup variable wait while Special Labels reentry sustain endSustain click endClick Functions Divide Backward Forward SpeedCancel Halfspeed InstantMultiply Loop MidiOut Move MuteOff MuteOn OverdubOff OverdubOn

7.5.14 7.5.15 7.5.16 7.5.17 7.5.18 7.5.19 7.5.20 7.5.21 7.5.22 7.5.23 7.5.24 7.5.25 7.5.26 7.5.27 7.6 7.6.1 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.8 7.9 7.9.1 7.9.1.1 7.9.1.2 7.9.1.3 7.9.1.4 7.9.1.5 7.9.1.6 7.9.1.7 7.9.1.8 7.9.1.9 7.9.1.10 7.9.2 7.9.2.1 7.9.2.2 7.9.2.3 7.9.2.4 7.9.2.5 7.9.2.6 7.9.2.7

PitchBend PitchOctave PitchStep SpeedBend SpeedOctave SpeedStep SpeedToggle Sample Shuffle Slip Sustain Functions TimeStretch Track Loop Windowing Parameters Comma Separated Values Track Parameters focus group preset presetNumber Track Controls Variables Script State clickCount midiChannel midiNumber midiType midiValue returnCode sustainCount triggerNumber triggerOffset triggerValue Loop Sizes cycleCount cycleFrame cycleFrames cycleNumber layerCount loopCount loopFrame

7.9.2.8 7.9.2.9 7.9.2.10 7.9.2.11 7.9.2.12 7.9.2.13 7.9.2.14 7.9.3 7.9.3.1 7.9.3.2 7.9.3.3 7.9.4 7.9.4.1 7.9.4.2 7.9.4.3 7.9.4.4 7.9.4.5 7.9.4.6 7.9.4.7 7.9.4.8 7.9.4.9 7.9.4.10 7.9.5 7.9.5.1 7.9.5.2 7.9.5.3 7.9.5.4 7.9.5.5 7.9.5.6 7.9.6 7.9.6.1 7.9.6.2 7.9.6.3 7.9.6.4 7.9.6.5 7.9.6.6 7.9.7 7.9.7.1 7.9.7.2 7.9.7.3 7.9.7.4 7.9.7.5

loopFrames loopNumber redoCount subCycleNumber subCycleFrame subCycleFrames subCycleCount Loop Events nextEvent nextEventFunction nextLoop Loop Modes effectiveFeedback inHalfspeed inMute inOverdub inPause inRealign inReturn inReverse isRecording mode Speed and Pitch rate rawPitch rawSpeed speedToggle speedSequenceIndex pitchSequenceIndex Track State globalMute outSyncMaster solo track, trackNumber trackCount trackSyncMaster Generic Sync syncAudioFrame syncBar syncBeat syncCorrections syncCyclePulses

7.9.7.6 syncDealign 7.9.7.7 syncDrift 7.9.7.8 syncDriftChecks 7.9.7.9 syncLoopFrames 7.9.7.10 syncPreRealignFrame 7.9.7.11 syncPulse 7.9.7.12 syncPulseFrames 7.9.7.13 syncPulses 7.9.7.14 syncRawBeat 7.9.7.15 syncTempo 7.9.8 Out Sync 7.9.8.1 syncOutBar 7.9.8.2 syncOutBeat 7.9.8.3 syncOutRawBeat 7.9.8.4 syncOutSending 7.9.8.5 syncOutStarted 7.9.8.6 syncOutStarts 7.9.8.7 syncOutTempo 7.9.9 MIDI Sync 7.9.9.1 syncInBar 7.9.9.2 syncInBeat 7.9.9.3 syncInRawBeat 7.9.9.4 syncInReceiving 7.9.9.5 syncInStarted 7.9.9.6 syncInTempo 7.9.10 Host Sync 7.9.10.1 syncHostBar 7.9.10.2 syncHostBeat 7.9.10.3 syncHostRawBeat 7.9.10.4 syncHostReceiving 7.9.10.5 syncHostStarted 7.9.10.6 syncHostTempo 7.9.11 Miscellaneous 7.9.11.1 blockFrames 7.9.11.2 configurationDirectory 7.9.11.3 installationDirectory 7.9.11.4 noExternalAudio 7.9.11.5 sampleFrames 8 Examples 8.1 Sustain Scripts 8.2 Long Press Scripts

1 Introduction
Mobius provides a powerful feature called scripting that can be used to add new functions or customize the behavior of Mobius to match your looping style. Some of the things that can be done with scripts include:

Perform several functions at exactly the same time with a single button press. Perform different functions from the same button, depending on the current loop mode. Perform a function while temporarily changing one or more of the preset parameters. Perform a sequence of functions at musically useful intervals. Automate gradual changes to output level and pan.

A script is simply a text file that can be created with any text editor. The contents of the script file are statements in a language called the Mobius Scripting Language. Once the script files have been written, they are registered so that Mobius knows their names and locations. Once a script file has been registered, it may be assigned one or more triggers which can be MIDI messages, computer keyboard presses, or buttons in the Mobius window. When a trigger for a script is received, the statements in the script are performed. This process is called running the script, executing the script, or calling the script. The following is an example of a simple script:

wait loop Reverse Halfspeed


When this script is called, it will first wait until the loop reaches its start point, then perform a Reverse and Halfspeed function at exactly the same time.

2 Writing Scripts
You may write a script using any text editor, though it is critical that you save the files as "plain text". If you are not in the United States you need to be careful about the character encoding used for the script file. Scripts must be written in an 8-bit character encoding that is compatible with ASCII. If you are using Notepad on Windows, you must save the file using the ANSI encoding, you must not use Unicode. If you are using Wordpad, in the Save as type: menu you must select either Text Document or Text Document - MS-DOS Format. If you are using TextEdit on a Mac, you need to save the file in a plain text encoding, either Western (Mac OS Roman) or Western (Windows Latin 1). When you use the Save As menu item, if you see a File Format: menu with items like Rich Text Format

or Web Page (.html) then you are editing the file using rich text rather than plain text. Open the TextEdit Preferences window and under the New Document tab select the Plain Text radio button under the Format section. Once you do this create a new document and the Save As window should show a Plain Text Encoding: menu, select Western (Mac OS Roman). There are many text editors available that present encoding options in different ways or using different words. The presentation may also be different on different versions of the operating system. The main thing to keep in mind is that you must always pick the simplest text format available, usually this is referred to as "plain text" with encodings such as "ansi", "latin 1", "roman", or "MS-DOS". Stay away from anything that says "rich" or "unicode" or that looks like a word processor format. A script file may have any name, but it is recommended that they have the extension .mos. Scripts may be stored in any directory. On OS X most people keep them in /Library/Application Support/Mobius/scripts. On Windows most people keep them in a directory under the Mobius installation directory, usually c:\Program Files\Mobius 2\scripts. Once you have created the script file, you need to tell Mobius about it through a process called script registration. There are two ways to register scripts: by file and by directory. When you register a script file, that file is loaded into Mobius when it starts. If you register a script directory, all scripts in that directory are loaded. Registering script directories is convenient if you have a lot of scripts and you don't want to register all of them one at a time. You do need to be careful though to only put things in this directory you really need. To register a script open the Configuration menu and select Scripts, the Script Registration window will open.

On Windows you will see Add Script and Add Directory buttons that will bring up standard selection dialogs for files or directories. On Mac you will see a similar window but it will only have a single Add button because the standard Mac file selector lets you select both files and directories. To register a new script or script directory, click one of the add buttons, navigate to the file or directory you want to register and click Open on Windows or Choose on Mac. The name of the file or directory should now appear in the list in the center of the script registration window. If you want to remove an item from the list, click on it so that it becomes highlighted then click the Delete button. Finally click the Ok button at the bottom of the widow to save the changes. The new set of scripts will be loaded into Mobius and are available for binding.

3 Running Scripts
Like build-in functions, scripts are run in response to a trigger such as a MIDI message, computer keyboard key, or a button in the Mobius user interface. The process of associating a trigger with a script is called binding. >See the Controlling Mobius in the Getting Started manual for a full description of how to create bindings. Once you have registered some scripts or script directories you will start seeing their names in the Scripts tab of the binding windows.

Note that scripts will usually appear in the binding windows with a name other than the raw file name. Most scripts include a line starting with !name at the top that specifies a user friendly name you want to see in the binding windows. For example:

!name Global Fade Out


A typical script file may have a name like "fadeoutall.mos" but the name you see in the binding windows might be "Global Fade Out" or something else more meaningful than the file name. You will need to look in each script to see if it contains a !name line and remember to look for that name in the binding windows. If the script doesn't have a !name line you will just see the name of the script file without the ".mos" extension. When binding a script to a trigger, consider whether you want to use advanced script features such as Sustain Scripts or Long Press Scripts. These features require that the script be bound to a Sustainable Trigger such as a MIDI note message.

4 Debugging Scripts
TODO: Introduce DBWIN32, Echo, Message, Prompt...

5 Script Language Fundamentals


A script is simply a text file containing lines of characters with each line ending with a return character. Each line of text will be one of the following types:

Empty Comment Declaration Statement

For a given line of text the first significant character determines the type. The first significant character is anything other than white space characters such as spaces and tabs. If all the characters on a line are white space, the line is empty and is ignored. If the first significant character is a # the line is a comment and the entire line is ignored. If the first significant character is a ! the line is a declaration. If the first significant character is anything other than whitespace, # or ! the line is a statement. Declarations are used to give Mobius information about how to run the script. They can appear anywhere in the script but it is recommended that you put them all at the top. The order of declarations is not important. Statements are performed in the order they are written in the script.

This example script shows each of the line types.

# Do the NextLoop function after turning off switch quantize !name Next Loop Now

set switchQuant off NextLoop


The first line begins with a # so it is a comment. You may put comments anywhere in the script to explain what the script is doing. The second line is a declaration, in this example it is specifying the name you want to display in the binding windows. The third line is empty. The fourth and fifth lines are statements. GEEK NOTE:If you have experience with other programming languages, note that Mobius does not support multi-line statements (with or without a line continuation character) and there are no block comments. If you don't know what that means don't worry. All that you need to remember is that a comment, declaration or statement must all be one line.

5.1 Anatomy of a Statement


A statement always begins with a Keyword which is a sequence of letters and numbers with no spaces. Example keywords are Record, set, and if. When we talk about statements, we usually identify them by their keyword, such as "a Record statement" or "an if statement". After the keyword, a statement may contain arguments or expressions. An argument is a single word or number without spaces, an expression is a complex sequence of characters that may include spaces. Consider this example:

variable nextLoop
In the previous example the keyword is Variable so this is called a Variable statement. After the keyword is the argument nextLoop. The meaning of the argument depends on the keyword, in this case the argument is the name of a script variable. Here is a more complex example:

variable nextLoop loopNumber + 2


In a variable statement, all of the characters after the name argument are an expression. This expression is used to calculate the initial value of the variable. In this example loopNumber + 2 is the expression. Some statements have no arguments, a few have more than one argument. Most statements will either zero or one expression. When a statement has both an argument and an expression, the argument comes first. In a few rare cases a statement may allow more than one expression, if so the expressions must be separated by a comma.

5.2 Intrinsic and Function Statements


There are two categories of statements: those that are an intrinsic part of the scripting language, and those that execute Mobius looping functions. Examples of intrinsic statements are variable, set, if and for. Examples of function statements are Record, Overdub and NextLoop. The intrinsic statements do not change often, but new function statements are added frequently. All the Mobius functions that are visible in the binding windows may be used in scripts, as well as several special functions that are available only in scripts. Whenever we talk about new functions being added to Mobius, you can assume that these functions can also be used in scripts. GEEK NOTE:If you are familiar with the C language, you can think of intrinsic statements as being similar to the core C language, and the functions being similar to the "stdio.h" standard library. All of the intrinsic statements will be described in detail because you need to understand all of them to write complex scripts. The names of the function statements will not be listed here. Instead consult the Mobius Reference manual and find the function you want to use, look for it's Internal name, and use that internal name as the first word in the statement.

5.3 Case Insensitivity


The script language is case insensitive which means that upper case and lower case letters are considered to be the same. In the examples you will see, function names usually start with a capital letter and variable names start with a lowercase letter. When a function or variable name contains more than one word, a capitalization style called "camel case" is used which means that the initial letter of adjacent words are upper case and the other letters are in lower case. For example:

NextLoop variable saveQuantize quantize

You do not have to follow this style, "NextLoop", "nextloop", "NEXTLOOP", or "NeXtLoOp" all mean the same thing. Intrinsic statements will begin with a lower case letter in this document, but this is very inconsistent in older script examples. Keywords whose names are found in common programming languages are usually written in all lower case, these include if, else, for, and while. But other Other keywords are often capitalized, such as Variable, Label, and Jump.

5.4 Parameters and Variables


TODO: The difference between parameters and variables, User defined and system variables, variable scoping...

5.5 Statement Blocks and Indentation


A few statements are used to define a range of statements that may be executed more than once or not at all. The range of statements is called a statement block, the statements that surround the block are called block start and block end statements. The following table lists the block start statements with their corresponding block end statements: Start End if endif, else, elseif elseif endif, else, elseif else endif for next repeat next while next proc endproc How the block statements behave will be described later. The important thing to know now is that statement blocks must have both a start and end statement and you must use the end statement that is appropriate for the start statement. Here are some examples of statement blocks:

if mode = record Overdub else Reset endif

for * set 8thsPerCycle 8 next


To help make it clear where the statement blocks start and end it is recommended that you use indentation for the lines inside the block. Most examples use 2 spaces of indentation but you can use any number. Indentation is not required but it makes the script easier to read and understand. Block statements may be nested which means that a block may appear inside another block. Here is a simple example of a nested block:

if mode = record if track = 1 Overdub endif endif


When blocks are nested, the block start statement is paired with the nearest block end statement that follows. It is strongly recommended that you use indentation to make it clear which block start and end statements belong together.

5.6 The Mysterious $


The $ is a special character used to indicate that the word that follows it is a parameter or variable reference. In early versions of Mobius the $ was required for references, now it is optional in most places. Since it appears in example scripts it tends to keep reappearing even though it is not required. The $ is required in a few statements where it is not clear whether a word is a reference, or simply a word. These statements are:

echo message prompt

These functions all use the remainder of the line following the keyword as a message to be displayed to the user. The message will be displayed exactly as it is written. For example the statement "message mode" will display the string "mode". If you want to

display a message with the name of the current looping mode, you reference the mode variable with a $.

message The current mode is $mode

6 Script Execution Environment


NOTE: This section introduces concepts that may be difficult for people without programming experience to understand. It is not necessary to understand this section in order to write scripts. But if you write scripts using the wait statement, the !sustain declaration, or the !multiclick declaration, this section will help you understand how to get the most power out of these features. Scripts are similar to a re-entrant function in a multi-threaded programming language. These concepts should be familiar to most programmers, but they basically mean that there can be several copies of the script running at the same time. Each of the calls for the down transition, up transition, and sustain notifications are done in an environment similar to a thread. If you use Wait statements, it is possible for the script to be active in more than one thread. By using variables, the threads can communicate with each other. More here...

7 Script Language Reference


7.1 Declarations
In this section we will describe the declarations. These may appear anywhere in the script though there are usually written at the top.

7.1.1 !autoload
Normally scripts are loaded once when Mobius is first started and remain in memory for as long as Mobius runs. If you make changes to the script file they will not be used by Mobius until you restart it. The !autoload declaration will cause the script file to be reloaded from the file system every time the script is called. This is very useful when writing new scripts as it allows you to keep Mobius running while you make changes the script. After the script is working properly you should remove this declaration. Reloading the script causes a small delay before the script is run. This can make it difficult to apply the script to exact locations in the loop.

7.1.2 !controller

This option identifies the script as a controller script. When the script is triggered by a MIDI continuous controller, the script is called whenever the value of the controller changes. Normally, when a script is bound to a MIDI continuous controller, it is assumed that the controller messages are being sent by a momentary switch rather than an expression pedal. Momentary switches typically send a non-zero controller value when the switch is pressed and a zero value when the switch is released. Mobius will only call the script when it receives a non-zero value which means the switch has been pressed. It will not call the script when it receives a zero value after the switch is released, unless you also use the !sustain declaration. This behavior is usually not desired when the continuous controller values are being generated by an expression pedal. With an expression pedal, you want the script called whenever the position of the pedal changes, even when it goes to zero. Controller scripts are most often used to change the track controls : Input Level, Output Level, Feedback, Secondary Feedback, and Pan. They may also be used to change speed and pitch shift for each track, and change preset parameters such as 8ths Per Cycle or any other parameter that has a range of values. Including the !controller declaration in a script will disable the following directives if they also appear in the script.

!quantize !switchQuantize !sustain !multiclick !spread

Here is an example script that implements a basic volume control. The behavior of this script is exactly the same as binding a controller to the Output Level track control.

!name Output Level !controller set outut midiValue


The !controller declaration tells Mobius that this script should be called every time the value of the trigger changes. The word midiValue is a reference to a system variable that will contain the value of the continuous controller that triggered this script. The value will be from 0 to 127. Here is a more interesting example that sets the output level to the inverse of the controller value. When the controller value is zero (toe up) the output level will be 127, when the controller value is 127 (toe down) the output level will be zero.

!name Backwards Output Level !controller set output 127 - midiValue


If you are familiar with the EDP, controller scripts give you the ability to implement "flip mode" as well as many other combinations of Mobius controls that change in response to a single expression pedal.

7.1.3 !focuslock
Normally scripts do not obey focus lock or track groups. When a script is run it will only run in the selected track. The !focuslock declaration makes the script sensitive to track focus lock. The script will be run simultaneously in all focused locked tracks. If the Groups Have Focus Lock parameter is true, this declaration will also cause the script to be run in all tracks that have the same group as the selected track. This option is useful for simple scripts that only operate on one track. It makes the script behave more like the built-in Mobius functions. If however the script uses the for statement to operate on several tracks, you normally do not use the !focuslock option.

7.1.4 !multiclick
This option allows the script to change behavior if you trigger it more than once within a short time. Some people think of this as "double clicking". A script that uses this option is called a multi-click script. To create a multi-click script, add this declaration:

!multiclick 2000
The numeric argument is the trigger expiration period expressed as a number of milliseconds. The default expiration period is 1000 (1 second) so you only need to include this argument if you want a value other than 1000. In this example the expiration period will be two seconds. Next add Label statements to the script with these names:

click - run whenever the script is triggered again before the expiration period endClick - run when the trigger expiration period is reached

As always this is best described with an example:

!name Multiclick Test

# the default value is 1000 milliseconds, override to 2 seconds !multiclick 2000

message Starting Click Test end

label click message Click $clickCount end

label endClick message Ending Click Test end


When you trigger the script for the first time, the message "Starting Click Test" is displayed. If you trigger the script again within 2 seconds, a message is displayed showing the number of triggers that have been received from the system variable clickCount. If you wait 2 seconds without triggering the script again, the "Ending Click Test" message is displayed and the script is finished. Each time the script is triggered, the expiration period starts over at 2 seconds. GEEK Note: As with sustain scripts, the click and endClick labels are called in different threads so the script may be active in more than one thread. Variables can be used for communication between threads.

7.1.5 !name
This declaration is used to specify the name to be displayed for this script in the binding windows. If no name is specified, the file name is displayed. It is very

common to use a !name declaration since the script file name is not always meaningful to the user. The name consists of all characters after the space after the !name declaration up to the end of the line. In the following example, the name displayed for the script would be "Auto Record 4".

!name Auto Record 4


Like all declarations, !name may appear anywhere in the file but it is usually the first line to make it easier to see.

7.1.6 !quantize
Normally scripts will not obey the Quantize Mode parameter in the preset. When a script is triggered it will be run immediately. The !quantize option makes the script sensitive to the Quantize Mode parameter, it will be run at the next quantization point. This makes scripts behave more like built-in functions. This option is most often used when the script does not begin with a Wait statement. TODO: The difference between !quantize and Wait...

7.1.7 !spread
This option will allow the script to be triggered by a range of MIDI note, controller, or program change messages. The script is bound once to the center of the range, but will then be triggered by messages on either side of the center. This option is usually used when binding to MIDI note messages. If the script is bound to middle C, then notes on either side of middle C will automatically be bound to the script. This is similar to the way the Pitch Step and Speed Step functions behave. The note you select in the binding window is the center note, pressing notes below the center lowers the pitch/speed, pressing notes above the center raises the pitch/speed. For spread scripts, the script will be run when any note in the range is pressed. The script can then reference internal variables to determine which note within the range was pressed. While it will be most common to bind spread scripts to MIDI notes so that you can "play" the script chromatically, you can also bind the script to a range of program changes or continuous controller values. To define a spread script, include this declaration at the top:

!spread

The default range of the spread is 48 values on either side of the center, which for notes means 4 octaves up and 4 octaves down. You can reduce this range by adding an argument to the !spread declaration:

!spread 4
In the previous example, the 4 argument means that the spread will be 4 notes on either side of the center. If there is a conflict between a spread script binding and another function that is bound to a specific note, the other function will have priority. For example, if a spread script with a range of 12 is bound to note 64, the script will be called whenever notes 52 to 76 are received. If you also have the Record function bound to note 59, that note will call the Record function, but all the notes around it will still call the script. You can think of this like "holes being punched" into the spread range. You usually do not want to have a spread range conflict with another function binding so it is best to move the center notes so they do not overlap. If you want to have a large spread range, you will need to use different MIDI channels for the center notes. When a spread script is called, the following system variables may be referenced to adjust the behavior of the script:

triggerOffset - A positive or negative integer representing the relative position of the trigger from the center of the range.

For example, if you bind the script to note 64 and you press note 63, the value of triggerOffset will be -1. If you press note 64 triggerOffset will be 0, and if you press note 65 triggerOffset will be 1. The built-in Speed Step function could be implemented with this script:

!name Script Speed Step !spread 12 SpeedStep triggerOffset


Spread scripts are probably most useful with the SpeedStep, PitchStep, LoopTrigger, and TrackSelect functions. But you could also use them to set the output level or 8thsPerCycle parameter. As a more interesting example, if you always want to speed shift in octave intervals, you could use this script and you would only need to reserve 9 notes:

!name Speed Step Octaves !spread 4

SpeedStep triggerOffset * 12

7.1.8 !sustain
This option will cause the script to be run on both the down and up transitions of the trigger. A down transition happens when you press a switch, an up transition happens when you release a switch. A script that uses this option is called a sustain script. Sustain scripts are effective only if you are using a momentary trigger such as a MIDI note, MIDI continuous controller, or computer keyboard key. To use MIDI notes, the trigger device must send a Note On event when a switch is pressed and a Note Off event when the switch is released. To use MIDI continuous controllers, the switch must send a CC value greater than zero when the switch is pressed and zero when the switch is released. Note that you can not use MIDI program changes for sustain scripts since the program change is only sent when the switch is pressed. Sustain scripts are also run repeatedly while the switch is held down, this allows it to change behavior depending on how long the switch is held. This allows scripts to have long press behavior like other built-in functions. To be notified when the trigger goes up, you simply add this label to the script:

label endSustain
The statements following this label will be run when the function trigger goes up. To be notified while the trigger is held, add this label to the script:

label sustain
The statements following this label will be run every 250 milliseconds (1/4 second) while the trigger is held. You can determine how long the trigger has been held by testing the sustainCount variable. This will have a number starting at 1 and incrementing by 1 every time the sustain script is called. You can specify the duration of the sustain notifications by adding a number after the !sustain keyword. This number is the number of milliseconds between notifications. For example, this declaration will cause the sustain label to called every second rather than every 1/4 second.

!sustain 1000

Here is a more complex example that demonstrates all of the features of sustain scripts.

!name Sustain Test

# default is 250 msec, raise it to 1 sec !sustain 1000

# the Message statement can be used to display brief messages message Starting sustain test end

label sustain message Sustained $sustainCount end

label endSustain message Ending sustain test end


You can think of this as 3 scripts in one. From the top to the first end are the statements that are run when the switch is pressed. The statements from label sustain to the next end are called as the switch is held. The statements from label endSustain to the next end are called when the function trigger goes up. You do not need to declare both labels, but you do need to remember to put an end before each of the sustain labels.

GEEK Note: Scripts are similar to a re-entrant function in a multi-threaded programming language. Each of the calls for the down transition, up transition, and sustain notifications are done in an environment similar to a thread. If you use Wait statements, it is possible for the script to be active in more than one thread. By using variables, the threads can communicate with each other. Here is a more realistic example. A long-press of the Record function will normally perform a Reset. This script does something similar but with the Mute function.

!name Mute/Reset

Mute end

label sustain if sustainCount = 1 Reset endif


Under the sustain label, you can test the sustainCount variable to make the script change behavior the longer the trigger is held. Some examples of this might be:

change speed or pitch shift the longer the trigger is held bounce between half speed and normal speed every second as long as the trigger is held slip forward one subcycle every 1/2 second

Here is another example of simple sustain script that raises the speed a fifth while held and drops it back when released.

!name SUSSpeedUp5

SpeedUp 7 end

label endSustain SpeedDown 7 end

7.1.9 !switchQuantize
When you change loops with the switchQantize parameter set something other than off, Mobius will enter a special Switch mode while it waits for the next switch quantization point. During this mode, many functions that you trigger are queued and performed after the loop switch. By default scripts do not wait until after the loop switch, they are run immediately. The !switchQuanitze option will delay the execution of the script until after the loop switch. This makes scripts behave more like built-in functions. Note however that the functions performed by the script are not treated like alternate endings to the switch function. For example, if you do an Overdub during the switch quantization and the next loop is empty, the current loop is copied into the next loop. But if you run a script whose first function is Overdub, this will not cause the loop to be copied.

7.2 Expressions 7.3 Intrinsic Statements


The syntax for each statement will be summarized using a notation that programmers should recognize as similar to BNF. For example:

call <scriptName> | <procName> [<arg> ...]


A line in a script is divided into tokens separated by one or more spaces. The syntax notation describes what each token means. Tokens are often just words without spaces like call. If a token needs to contain spaces it must be surrounded in double quotes like "My Script". In the syntax notation, tokens that are not surrounded by angle brackets must be written exactly as shown. Tokens that are surrounded by angle brackets must be replaced with tokens that are meaningful for your environment. For example the token <scriptName> would be replaced by the name of the script you want to call. The vertical bar is used when there is a choice of several tokens that may appear at this location. In this example the token following the Call may be either a procedure name or a script name.

Square brackets are used to surround optional tokens. In this example the call statement may have an optional list of arguments. The ... means that the contents within the brackets may be repeated any number of times. Two special tokens are used in syntax notation:

<arg> - replaced by a symbol, string, or variable reference <expression> - replaced by a complex expression

Note that some of the intrinsic statements are intended for use only in special testing scripts. The statement keywords are presented using the character case that is most often seen in the example scripts. As mentioned in the Case Insensitivity section, case in function names is ignored.

7.3.1 break
This statement is used only by developers running Mobius under a debugger. It will have no effect when running Mobius outside of a debugger. Return to your homes, there is nothing to see here.

7.3.2 call

call <scriptName> | <procName> [<arg> ...]


Calls another script or a procedure, with optional arguments. When a script is called, the statements in the script are executed as if they were written directly in the calling script. Only scripts that have been registered in the Scripts dialog can be called. Normally scripts are referenced using the name defined by the !name declaration in the script. If the script has no !name you may reference the script using its file name.

# Call a script using its !name # note that quotes must be used if the script name contains spaces

call "My Script"

# Call a script using its file name call myscript.mos

# Call a script using its file name without the .mos extension call myscript
Script arguments may either be symbols, strings, or variable references. A symbol is simply a word without spaces. A string is a sequence of characters surrounded by double quotes. A variable reference is the name of a variable or parameter prefixed with the $ character.

# Call a script passing a symbol argument call "Set Sub Cycles" 8

# Call a script passing a string argument call ShowMessage "This is my message to you!"

# Call a script passing a variable value variable message "This is my message to you!" call ShowMessage $message
In the script being called, arguments are referenced with a number preceded by the $ character. Script arguments are numbered starting from 1. For example:

!name Set Sub Cycles message Changing subcycles to $1 set 8thsPerCycle $1


The previous script will set the 8thsPerCycle preset parameter to the value of the first argument.

Note that scripts that are designed to be called from other scripts usually do not have any declarations other than !name and sometimes !autoload. Any other declarations in the called script will be ignored. If you want the called script to be quantized for example, you will need to use the wait statement in the calling script. 7.3.2.1 Procedures A procedure is a set of statements defined within a script that will not be executed until you call them. Procedures are defined with the proc statement. Procedures are used in the Mobius test scripts but are not often used in user scripts. Their primary use is to prevent the duplication of a set of statements that are needed more than once in the script.

# define a procedure # the statements within the Proc/Endproc will NOT be executed # until you call the procedure

# Define a procedure proc ChangeDirection if inReverse Message Leaving reverse mode else Message Entering reverse mode endif Reverse endproc

# toggle reverse mode with a message

call ChangeDirection

# wait for the end of the loop wait loop

# toggle reverse mode with a message again call ChangeDirection


Arguments may also be passed to called procedures:

# set 8thsPerCycle to the value of the first argument proc SetSubCycles set 8thsPerCycle $1 endproc

# call procedure passing number of subcycles desired call SetSubCycles 8

7.3.3 cancel 7.3.4 diff 7.3.5 end 7.3.6 endproc 7.3.7 echo 7.3.8 else 7.3.9 elseif

7.3.10 endif 7.3.11 end 7.3.12 for 7.3.13 if 7.3.14 initpreset 7.3.15 jump 7.3.16 label 7.3.17 load 7.3.18 message 7.3.19 next 7.3.20 preset 7.3.21 proc

proc <procedureName>
This statement begins a procedure definition. The argument must be a literal string that defines the procedure name. The procedure definition must be terminated by an endproc statement. See Procedures for more information on defining and calling procedures.

7.3.22 prompt 7.3.23 repeat 7.3.24 save 7.3.25 set 7.3.26 setup 7.3.27 unittestsetup 7.3.28 variable

7.3.29 wait 7.3.30 while

7.4 Special Labels


7.4.1 reentry 7.4.2 sustain 7.4.3 endSustain 7.4.4 click 7.4.5 endClick

7.5 Functions
All Mobius functions may be used in scripts. The names of the functions used in scripts may differ slightly from the names you will see in the UI. In particular, script function names never contain spaces. If a function name is displayed in the UI with spaces such as "Next Loop", the script function name is usually the same with the spaces removed such as "NextLoop". The function reference section of the Mobius Reference manual contains a complete list of all functions arranged in alphabetical order by the display name you will see in the UI. Within the documentation for each function will be a line beginning with Internal name:, the word after this prefix is the name you would use in a script to execute this function. Note that the function names displayed in the UI are taken from a file that may be modified by the user. This file is called a message catalog. The default message catalog is in the Mobius installation directory and is named Catalog_USEnglish.txt. If you have modified this file, or if you have asked Mobius to read messages from a different file, the names that appear in the reference manual may not be the same as what you will see in the UI. We will not provide reference documentation for every function in this manual. We will only document functions and function features that are only accessible from scripts. For more information on what the functions do and how they are influenced by parameters, you must read the documentation in the reference manual.

7.5.1 Divide
The function named just Divide without a number is accessible only scripts. With this function the divisor is specified as an argument written after the function name. The argument may be a number or an expression. For example:

Divide 6 Divide subcycles / 2


In scripts you can also use the Divide functions that have a fixed divisor in the function name. These two script statements will have the same effect.

# here the divisor is part of the function name Divide4

# here the divisor is an argument Divide 4


See Divide in the Mobius Reference manual for more information.

7.5.2 Backward
Backward forces the loop direction into reverse and sets the Reverse minor mode. This function is provided as a convenience for script writers that need to ensure the loop is playing backward without having to test the inReverse variable. The following two code blocks have the same behavior.

# Force reverse playback Backward

# Toggle reverse if we're not already in reverse if !inReverse Reverse endif


See Backward in the Mobius Reference manual for more information.

7.5.3 Forward

Forward forces the loop into the normal forward direction. It is provided as a convenience for script writers that need to ensure the loop is playing forward without having to test the inReverse variable. The following two code blocks have the same behavior.

# Force normal playback Forward

# Toggle reverse if we're currently in reverse if inReverse Reverse endif


See Forward in the Mobius Reference manual for more information.

7.5.4 SpeedCancel
SpeedCancel forces the loop out of all speed shifting modes: SpeedToggle, SpeedOctave, SpeedStep and SpeedBend. This is provided as a convenience to script writers that need to ensure the loop is playing at normal speed without having to test the inHalfspeed or speedToggle varialbes or the speedOctave, speedStep, and speedBend controls. The following two code blocks have the same behavior:

# Force normal playback SpeedCancel

# Toggle speed if we're currently in 1/2 speed if inHalfspeed SpeedToggle endif

See Speed Cancel in the Mobius Reference manual for more information.

7.5.5 Halfspeed
Halfspeed changes the loop speed so that it plays twice as long and sounds one octave lower. It is an older function that is provided for backward compatibility. If you are writing scripts it is recommended that you use the more general SpeedStep function. Executing Halfspeed is identical to executing SpeedStep with an argument of -12. The following threecode blocks have the same behavior.

# Force 1/2 speed playback Halfspeed

# Force 1/2 speed playback SpeedStep -12

# Toggle speed if we're not currently in 1/2 speed if !inHalfspeed SpeedToggle endif
See Halfspeed in the Mobius Reference manual for more information.

7.5.6 InstantMultiply
The function with internal name InstantMultiply without a number may only be used in scripts. The multiplier is specified as an argument to the function. For example:

InstantMultiply 6
You can also use the InstantMultiply functions with numbers in their names in scripts. These two script statements will have the same effect.

# here the multiplier is part of the function name InstantMultiply4

# here the multiplier is an argument InstantMultiply 4


See Instant Multiply in the Mobius Reference manual for more information.

7.5.7 Loop
The function named just Loop without a number is accessible only in scripts. With this function the loop you want to trigger is specified as a function argument, which may be a number or an expression. For example:

Loop 3 Loop loopNumber + 1


Scripts can also use the Loop functions with numbers in their names. These two script statements are the same.

Loop4 Loop 4
See Loop in the Mobius Reference manual for more information.

7.5.8 MidiOut
MidiOut can send any MIDI message to the configured MIDI output device. This function is accessible only from scripts. The MIDI message to send is specified with up to four function arguments. The syntax is:

MidiOut <status> <channel> <value> <velocity> status: noteon noteoff control program stop start continue

channel: 0-15 value: 0-127 velocity: 0-127


For example, to send a Note On event on channel 3, note 64, velocity 127, you would write:

MidiOut noteon 3 64 127


This function does not change the current loop and has no effect on major or minor modes.

7.5.9 Move
Move will instantly move the loop playback position to a new location. It is accessible only from scripts. The new position is specified as a function argument which may either be a number or an expression whose result is a number. This number is used as a frame number within the loop. The first frame in a loop has frame number zero.

# Jump to a fixed location 1 second from the beginning Move 44100

# Jump to the center of the loop Move loopFrames / 2


See Move in the Mobius Reference manual for more information.

7.5.10 MuteOff
MuteOff will cancel the Mute minor mode. If the loop is not in mute mode the function has no effect. This function is not quantized and is accessible only in scripts. It is a convenience for script writers that want to make sure that mute mode is off without having to worry about the current mute state. You can also use the Mute function but since that toggles mute mode you have to test the current mute state. The following script examples are equivalent:

# Force mute off, ignore if it is already off MuteOff

# Toggle mute off if it is currently on if inMute Mute endif


See MuteOff in the Mobius Reference manual for more information.

7.5.11 MuteOn
MuteOn will activate the Mute minor mode and immediately silence the loop. If the loop is already muted the function has no effect. This function is not quantized and is accessible only in scripts. It is a convenience for script writers that want to make sure that the loop is muted without having to worry about the current mute state. You can also use the Mute function but since that toggles mute mode you have to test the current mute state. The following script examples are equivalent:

# Force mute on, ignore if it is already on MuteOn

# Toggle mute on if it is currently off if !inMute Mute endif


See MuteOn in the Mobius Reference manual for more information.

7.5.12 OverdubOff

OverdubOff forces the Overdub minor mode off. This function is not quantized and is accessible only scripts. It is provided as a convenience for the script writer that needs to turn overdub off, but is more convenient than using the Overdub function that toggles overdub mode. The following two script examples are equivalent:

# Force overdub off OverdubOff

# Toggle overdub off if it is on if inOverdub Overdub endif


See OverdubOff in the Mobius Reference manual for more information.

7.5.13 OverdubOn
OverdubOn activates the Overdub minor mode. If overdub mode is already active the function has no effect. This function is not quantized and is accessible only in scripts. It is a convenience for the script writer that needs to turn overdub on, but is more convenient than using the Overdub function that toggles overdub mode. The following two script examples are equivalent:

# Force overdub on OverdubOn

# Toggle overdub on if it is off if !inOverdub Overdub endif

See OverdubOn in the Mobius Reference manual for more information.

7.5.14 PitchBend
PitchBend will change the playback pitch of the loop up or down in small intervals. The number of intervals is specified as an argument to the fucntion. While this can be called as a function it is expected that pitch bend be usually performed by changing the value of the pitchBend control. Neither the function or the control are quantized. The range of values is from -8192 to 8181 to match the MIDI pitch wheel.

# change the pitch with the PitchBend function PitchBend 2091 PitchBend -4087

# change the pitch with the pitchBend control set pitchBend 2091 set pitchBend -4087
See Pitch Bend in the Mobius Reference manual for more information.

7.5.15 PitchOctave
PitchOctave will change the playback pitch of the loop up or down in octave intervals. The number of octaves is specified as an argument to the fucntion. The octave can also be changed with the pitchOctave control. The difference between the control and the function is that the functions may be quantized but the control is never quantized.

# setting pitch with functions PitchOctave 2 PitchOctave -1

# setting pitch with controls

set pitchOctave 2 set pitchOctave -1


See Pitch Octave in the Mobius Reference manual for more information.

7.5.16 PitchStep
PitchStep can change the playback pitch of the loop up or down to achieve a pitch change in a number of semitones. The number of semitones is specified as an argument to the function. You may also change the pitch step by setting the pitchStep control. The function may be quantized but the control is never quantized.

# setting pitch with functions PitchStep 5 PitchStep -7

# setting pitch with controls set pitchStep 5 set pitchStep -1


See Pitch Step in the Mobius Reference manual for more information.

7.5.17 SpeedBend
SpeedBend will change the playback speed of the loop up or down in small intervals. The number of intervals is specified as an argument to the fucntion. While this can be called as a function it is expected that speed bend be usually performed by changing the value of the speedBend control. The range of values is from -8192 to 8181 to match the MIDI pitch wheel.

# change the speed with the SpeedBend function SpeedBend 2091 SpeedBend -4087

# change the speed with the speedBend control set speedBend 2091 set speedBend -4087
See Speed Bend in the Mobius Reference manual for more information.

7.5.18 SpeedOctave
SpeedOctave will change the playback speed of the loop up or down in octave intervals. The number of octaves is specified as an argument to the fucntion. The octave can also be changed with the speedOctave control. The difference between the control and the function is that the functions may be quantized but the control is never quantized.

# setting speed with functions SpeedOctave 2 SpeedOctave -1

# setting speed with controls set speedOctave 2 set speedOctave -1


See Speed Octave in the Mobius Reference manual for more information.

7.5.19 SpeedStep
SpeedStep can change the playback speed of the loop up or down to achieve a pitch change in a number of semitones. The number of semitones is specified as an argument to the function. You may also change the speed step by setting the speedStep control. The function may be quantized but the control is never quantized.

# setting speed with functions SpeedStep 5

SpeedStep -7

# setting speed with controls set speedStep 5 set speedStep -1


See Speed Step in the Mobius Reference manual for more information.

7.5.20 SpeedToggle
SpeedToggle is similar to SpeedStep in that it changes the speed of the loop up or down by some number of semitones specified as an argument to the function. The difference is that if you execute SpeedToggle a second time without an argument, the shift established by the previous call to SpeedToggle is canceled. In the following example we raise the speed by 5 semitones, wait for the end of the loop, then lower it by 5 semitones.

# setting the speed toggle SpeedToggle 5

Wait loop

# cancel the speed toggle SpeedToggle


See Speed Toggle in the Mobius Reference manual for more information.

7.5.21 Sample
The Sample family of functions will play one of the loaded samples. The function named just Sample without a number may only be used in scripts. The sample to trigger is specified as a function argument that may be a number or an expression.

# trigger the first sample Sample1

# another way to trigger the first sample with the number # specified as a function argument Sample 1
See Sample in the Mobius Reference manual for more information.

7.5.22 Shuffle 7.5.23 Slip


The Slip family of functions will instantly move the loop playback position forward or backward by a fixed amount. The amount of slippage for the Slip script function is specified as an argument. The value is a positive or negative number or an expression that evaluates to a number. This number is the number of 'units' to slip where the unit is defined by the Slip Mode parameter.

# slip forward 2 cycles set slipMode cycle Slip 2

# slip backward four subcycles set slipMode subcycle Slip -4


See Slip in the Mobius Reference manual for more information.

7.5.24 Sustain Functions


Explain how sustain functions can be used in scripts with the up/down arguments.

7.5.25 TimeStretch
TimeStretch is available only in scripts. It will change both the playback speed and the amount of pitch shift such that the observed pitch stays the same but the playback speed increases or decreases. This function must have a script argument that specifies the number of units of stretch. Time stretch may also be accomplished with the timeStretch track control. The function may be quantized, the control is never quantized. The range of values is from -8192 to 8181 to match the MIDI pitch wheel.

# change the duration with the function TimeStretch 2091 TimeStretch -4087

# change the duration with the control set timeStretch 2091 set timeStretch -4087
See Time Stretch in the Mobius Reference manual for more information.

7.5.26 Track
The Track family of functions will activate one of the numbered tracks. If the track is already active, the function will have no effect. The function named just Track can only be used in scripts where the track to select is specified as a function argument.

# Select a track using a numbered function Track2

# Select a track using an argument Track 2

# Select a track using an expression Track rand(1,8)


See Track in the Mobius Reference manual for more information.

7.5.27 Loop Windowing


For a complete description of the concept of loop windowing see the Loop Windowing section of the Mobius Techniques manual. You may use any of the bindable windowing functions in scripts, but there are two functions available only in scripts that can be used to contorol the loop window. WindowMove sets the starting location of the window and WindowResize adjusts either the starting or ending edges of the window. These functions use arguments to specify the location and size of the window. The syntax of the WindowMove function is:

WindowMove [unit] amount


The unit argument is optional and if not specified defaults to the value of the Window Slide Unit parameter. The possible values in scripts are loop, cycle, subcycle, msec, frame, layer, start, and end.

# move back one loop set windowSlideUnit loop WindowMove -1

# move back one loop independent of the windowSlideUnit parameter WindowMove loop, -1

# move forward 1 second WindowMove msec, 1000

# move backward 2 subcycles WindowMove subcycle, -2

# orient the window at the beginning of the previous layer WindowMove layer, -1

# orient the window at the beginning of the loop history WindowMove start

# orient the window at the end of the loop history WindowMove end
Note that in these examples a comma is required if you are using negative amounts. This is one of the rare functions whose argument list is completely parsed as an expression (Shuffle is another), and since operator precedence is like C, "x -1" is the same as "x - 1" which means to subtract 1 from x. So the arguments "subcycle -1" would be parsed as subtracting 1 from the variable named subcycle. To prevent this you need to put a comma between them, "subcycle,-1", or surround -1 in parantthesis, "subcycle (-1)". It is easier to use commas. The start and end units are unusual becase they are not relative units for sliding, they are absolute locations within the history and do not need an amount. The syntax of the WindowResize function is:

WindowResize {start | end} [unit] amount


The first argument must be start or end to indiciate which edge you want to move. The unit and amount arguments are the same as those for the WindowMove function. If the unit is not specified, the value of the Window Edge Unit preset parameter is used.

# Move the left edge back one subcycle WindowResize start,subcycle,-1

# Move the right edge forward one second WindowResize end,msec,1000

7.6 Parameters
Describe in general how parameters can be accessed and set from scripts..

7.6.1 Comma Separated Values


When a parameter value is described as being a "comma separated list" it means that the value to assign in a set statement consists of a list of words separated by a comma. There may also be spaces before and after the commas. The following examples are all the same:

set altFeedbackDisable Multiply,Overdub

set altFeedbackDisable Multiply, Overdub

set altFeedbackDisable Multiply

Overdub

7.7 Track Parameters


Each track has a few parameters that are set in the Track Setup. These will have their initial values specified in the Track Setup but they may be changed in scripts.

7.7.1 focus
Value value: true, false This parameter determines whether the track has focus lock. The parameter may be set with the Focus Lock function or by clicking on the Track Number in the track strip. Script example:

set focus true FocusLock

7.7.2 group
Value: an integer from 1 to 8 This parameter determines whether the track is a member of a track group. The value is an integer parameter that has the number of the track group in the current track. If the value is zero there is no track group. Positive group numbers are displayed as letters in the user interface. Group 1 is displayed as A group 2 is displayed as B etc. When setting this parameter from a script you may use either numbers staring from 1 or letters starting from A. Script example:

set group 1 set group A

7.7.3 preset
Value: a preset name This parameter has the name of the preset that is active in the track. This is intended for use only in scripts, in the user interface you select presets from the preset menu or from the preset window. When setting this from scripts you may use either the preset name or the preset number from 1. While setting this parameter in scripts is allowed, it is preferable in scripts to use the Preset built-in script function. Script example:

set preset 1 set preset "My Preset" Preset 1 Preset "My Preset"

7.7.4 presetNumber
Value: an integer from 1 to infinity This parameter has the number of the preset that is active in the track. This is intended for use only in scripts, in the user interface you select presets from the preset menu or from the preset window. When setting this from scripts you may use either the preset name or the preset number from 1. While setting this parameter in scripts is allowed, it is preferable in scripts to use the Preset built-in script function. Script example:

set presetNumber 1 Preset 1


The parameter is functionally the same as Preset but using it makes it clearer in the script that the value will be a number rather than a name.

7.8 Track Controls


Examples of setting track controls from scripts.

7.9 Variables
7.9.1 Script State
7.9.1.1 clickCount Number of times the script has been reentered due to multi-clicks. 7.9.1.2 midiChannel The MIDI channel number of the trigger event. This is also embedded in triggerNumber, but it is easier to use here. 7.9.1.3 midiNumber The MIDI key/controller number of the trigger event. 7.9.1.4 midiType The type of MIDI trigger: note, control, program. 7.9.1.5 midiValue The same as triggerValue but has a more obvious name for use in !controller scripts.

7.9.1.6 returnCode The return code of the last ThreadEvent. Currently used only by Prompt statements to convey the selected button. 0 means Ok, 1 means cancel. 7.9.1.7 sustainCount Number of times the script has been notified of a sustain. 7.9.1.8 triggerNumber The unique id of the trigger. For FunctionSourceMidi this will be a combination of the MIDI status, channel, and number. For other sources it will be a key code or other simple number. 7.9.1.9 triggerOffset An optional extra value associated with the ranged triggers. This will have the relative position of the trigger from the center of the range. 7.9.1.10 triggerValue Alias: triggerVelocity An optional extra value associated with the trigger. For MIDI triggers this will be the second byte, the note velocity for notes or the controller value for controllers.

7.9.2 Loop Sizes


7.9.2.1 cycleCount The number of cycles in the loop. 7.9.2.2 cycleFrame The current frame relative the current cycle. 7.9.2.3 cycleFrames The number of frames in one cycle. 7.9.2.4 cycleNumber The current cycle number, relative to the beginning of the loop. 7.9.2.5 layerCount The number of layers in the current loop. This is also in effect the current layer number since we are always "on" the last layer of the loop. This does not include the number of available redo layers.

7.9.2.6 loopCount The current loop count. This is effectively the same as the "moreLoops" parameter but I like this name better. This should really be an alias of moreLoops so we can get and set it using the same name!! 7.9.2.7 loopFrame The current record frame. The value of this variable changes automatically as the loop plays. You might think that setting this variable would cause the playback position to move but this is not allowed. Instead you must use the Move function to change the playback position. 7.9.2.8 loopFrames The number of frames in the loop. 7.9.2.9 loopNumber The number of the current loop within the track. The first loop number is 1 for consistency with the trigger functions Loop1, Loop2, etc. 7.9.2.10 redoCount The number of redo layers in the current loop. 7.9.2.11 subCycleNumber The current subcycle number, relative to the current cycle. 7.9.2.12 subCycleFrame The current frame relative the current subcycle. 7.9.2.13 subCycleFrames The number of frames in one subcycle. 7.9.2.14 subCycleCount The number of subCycles in a cycle. This is actually the same as the Subcycles preset parameter and can change with the preset, but we expose it as an internal variable so it is consistent with the other loop variables.

7.9.3 Loop Events


7.9.3.1 nextEvent Returns the type name of the next event. Child events are ignored so we will skip over JumpPlayEvents. Now that we have this, could eliminate InReturn and InRealign.

7.9.3.2 nextEventFunction Returns the function name associated with the next event. We subclass NextEventVariableType for the getTrackValue logic. 7.9.3.3 nextLoop The number of the next loop if we're in loop switch mode. Loops are numbered from 1. Returns zero if we're not loop switching.

7.9.4 Loop Modes


7.9.4.1 effectiveFeedback The value of the feedback currently being applied. This will usually be either the Feedback or Secondary Feedback control values depending on which is being used. It will always be zero if we're in Replace, Insert or another mode that does not bring forward any content from the previous loop. 7.9.4.2 inHalfspeed True if half-speed is enabled. From version 2.2 onward this is true only if the value of speedToggle is -12. 7.9.4.3 inMute True if playback is muted. This usually means that we're also in Mute mode, but if Overdub is also on, mode will be Overdub. Note also that this tests the isMute flag which can be on for other reasons than being in Mute mode. 7.9.4.4 inOverdub True if overdub is enabled. Note that this doesn't necessarily mean that the mode is overdub, only that overdub is enabled when we fall back into Play mode. 7.9.4.5 inPause True if we're in Pause or Pause mode. This is available because the "mode" parameter is not always set to Pause. Once case is if Pause and Overdub are on at the same time mode will be Overdub (I think this is the only case). 7.9.4.6 inRealign True if we're realigning. This similar to a mode, but it is indicated by having a Realign event scheduled. 7.9.4.7 inReturn True if we're in "return" mode. This is a special minor mode that happens after a loop switch with SwitchDuration=OnceReturn, SwitchDuration=SustainReturn, or the RestartOnce function. It is indicated by the presence of a pending Return event.

7.9.4.8 inReverse True if reverse is enabled. 7.9.4.9 isRecording True any form of recording is being performed. Note that this does not necessarily mean you are in Record mode, you could be in Overdub, Multiply, Insert, etc. 7.9.4.10 mode This variable will contain the name of the current major mode. The possible values are:

Confirm Insert Multiply Mute Overdub Pause Play Record Rehearse RehearseRecord Replace Reset Run Stutter Substitute Switch Synchronize Threshold

7.9.5 Speed and Pitch


7.9.5.1 rate Speed shift, expressed as a scale degree. This is provided for backward compatibility with pre-2.2 scripts. This is now the same as the value of the speedStep track control. 7.9.5.2 rawPitch Total pitch shift, expressed as a float times 1000000. 7.9.5.3 rawSpeed

Total speed shift, expressed as a float times 1000000. 7.9.5.4 speedToggle The current amount of toggled speed shift being applied to the track. If this is -12 it is the same as inHalfspeed being true. 7.9.5.5 speedSequenceIndex The current index into the speed sequence for the track. The index starts at zero and has a maximum value of one less than the length of the speed sequence. This is one of the few variables that may be set in scripts to change the sequencnce position. 7.9.5.6 pitchSequenceIndex The current index into the pitch sequence for the track. The index starts at zero and has a maximum value of one less than the length of the pitch sequence. This is one of the few variables that may be set in scripts to change the sequencnce position.

7.9.6 Track State


7.9.6.1 globalMute True if the track will be unmuted when Global Mute mode is over. 7.9.6.2 outSyncMaster The number of the track operating as the output sync master, -1 if there is no master. 7.9.6.3 solo True if the track will be unmuted when Global Mute mode is over. 7.9.6.4 track, trackNumber The number of the current track. The first track is 1. 7.9.6.5 trackCount The number of tracks configured. 7.9.6.6 trackSyncMaster The number of the track operating as the track sync master, -1 if there is no master.

7.9.7 Generic Sync


7.9.7.1 syncAudioFrame

The actual Loop frame at the last pulse. The difference between this and syncPulseFrame is the amount of drift (after wrapping). 7.9.7.2 syncBar The current bar count. This will be the same as syncOutBar, syncInBar, or syncHostBar depending on the SyncMode of the current track. 7.9.7.3 syncBeat The current bar relative beat count. This will be the same as syncOutBeat, syncInBeat, or syncHostBeat depending on the SyncMode of the current track. 7.9.7.4 syncCorrections The number of sync drift corrections that have been performed since the sync tracker was locked. 7.9.7.5 syncCyclePulses The number of external sync pulses counted during recording. 7.9.7.6 syncDealign The number of frames the current track is dealigned from the sync tracker for this track. 7.9.7.7 syncDrift The current amount of drift, positive or negative. 7.9.7.8 syncDriftChecks The number of sync drift checks that have been performed in this loop since it was recorded. 7.9.7.9 syncLoopFrames The length of the sync tracker loop (external loop) in frames. 7.9.7.10 syncPreRealignFrame The loopFrame prior to the last Realign. 7.9.7.11 syncPulse The number of sync pulses we have received at the moment in the external loop. 7.9.7.12 syncPulseFrames

The length of a sync pulse in frames. The value is a float. Since tracks may have different sync sources, the pulse width may also be different for each track. 7.9.7.13 syncPulses The total number of sync pulses in the external loop. 7.9.7.14 syncRawBeat The current absolute beat count. This will be the same as syncOutRawBeat, syncInRawBeat, or syncHostRawBeat depending on the SyncMode of the current track. 7.9.7.15 syncTempo The current sync tempo. For Sync=Out this is the tempo we calculated. For Sync=In this is the tempo we're smoothing from the external source. For Sync=Host this is the tempo reported by the host.

7.9.8 Out Sync


7.9.8.1 syncOutBar The current bar count maintained by the internal clock. This is calculated from the raw beat count, modified by the effective beatsPerBar. 7.9.8.2 syncOutBeat The current beat count maintained by the internal clock, relative to the bar. 7.9.8.3 syncOutRawBeat The current raw beat count maintained by the internal clock. This will be zero if the internal clock is not running. 7.9.8.4 syncOutSending "true" if we are currently sending MIDI clocks, "false" if not. 7.9.8.5 syncOutStarted "true" if we have send a MIDI Start message, "false" if not. 7.9.8.6 syncOutStarts The number of MIDI Start messages we've sent since the last time we were stopped. 7.9.8.7 syncOutTempo The tempo of the internal clock used for out sync. This is the same value returned by "tempo" but only if the current track is in Sync=Out or Sync=OutUserStart.

7.9.9 MIDI Sync


7.9.9.1 syncInBar The current bar count derived from the external MIDI clock. 7.9.9.2 syncInBeat The current beat count derived from the external MIDI clock, relative to the bar. 7.9.9.3 syncInRawBeat The current beat count derived from the external MIDI clock. 7.9.9.4 syncInReceiving True if we are currently receiving MIDI clocks. 7.9.9.5 syncInStarted True if we have received a MIDI start or continue message. 7.9.9.6 syncInTempo The tempo of the external MIDI clock being received. This is the same value returned by "tempo" but only if the current track SyncMode is In, MIDIBeat, or MIDIBar.

7.9.10 Host Sync


7.9.10.1 syncHostBar The current bar count given by the host. 7.9.10.2 syncHostBeat The current beat count given by the host, relative to the bar. 7.9.10.3 syncHostRawBeat The current beat count given by the host. 7.9.10.4 syncHostReceiving True if we are currently receiving MIDI clocks from the host. Synchronizer has always returned false here, I guess because we make MIDI passing through the host look like MIDI In sync rather than host sync. 7.9.10.5 syncHostStarted True if we have received a MIDI start or continue message from the host. Like syncHostReceiving we've always returned false here.

7.9.10.6 syncHostTempo The tempo advertised by the plugin host.

7.9.11 Miscellaneous
7.9.11.1 blockFrames The number of frames in one audio interrupt block. 7.9.11.2 configurationDirectory Base directory where Mobius configuration is saved. Typically c:\Program Files\Mobius 2 on Windows and /Library/Application Support/Mobius 2 on Mac. 7.9.11.3 installationDirectory Base directory where Mobius has been installed. Typically c:\Program Files\Mobius 2 on Windows and /Applications/Mobius 2 on Mac. 7.9.11.4 noExternalAudio When set disables the pass through of audio received on the first port. This is used in the unit tests that do their own audio injection, and we don't want random noise coming in from the sound card to pollute it. 7.9.11.5 sampleFrames The number of frames in the last sample we played.

8 Examples
8.1 Sustain Scripts 8.2 Long Press Scripts

Mobius and OSC


August 2012

Contents
1 2 3 4 5 6 7 8 9 10 11 12 12.1 13 14 Introduction Network Configuration Addresses and Arguments Buttons and Sliders Argument Values Setting Parameters With Scaled OSC Arguments Setting Parameters With Address Values Setting Parameters With Ordinal Arguments Setting Parameters With Relative Values Executing Functions Address Translation Status Export Latency Reloading the OSC Configuration File TouchOSC Tips

1 Introduction
Mobius may be controlled and monitored using the Open Sound Control (OSC) protocol. This is an advanced topic intended for users that are already very familar with OSC, and have a hardware device capable of sending and receiving OSC messages. Mobius OSC support was tested primarily using the popular TouchOSC application for Apple and Android mobile devices but any device that supports OSC should be usable. To get the most out of OSC it is important that the device be programmable so that it can send addresses and arguments that are compatible with Mobius. If a device sends a fixed message, such as the default layouts in TouchOSC, it is still possible to use it with Mobius but it will require more effort to configure. OSC support is a relatively new feature that not many people use. If you have problems or suggestions, please do not hesitate to post on the Mobius forums.

2 Network Configuration
To communicate with an OSC device you must set four parameters in the Global Parameters dialog under the Advanced tab.

OSC Enable - check to enable the OSC interface

OSC Input Port - the port number on on the computer where we will listen for OSC messages OSC Output Host - the IP address of the OSC device where we will send messages OSC Output Port - the port number on the OSC device where we will send messages OSC Trace - check to enable OSC trace messages

If you don't understand what any of that means, then we're sorry but you're not ready for OSC. Post a message on the forums if you need assistance, but unfortunately OSC requires some knowledge of TCP/IP networking, and this document is not a tutorial. The OSC Enable defaults to false so we won't open network sockets that aren't needed. This must be checked if you want to use OSC. The OSC Input Port defaults to 7000. There is probably not a need to change this, but in rare situations there may be a conflict with another application that wants to use this port. Diagnosing port conflicts is beyond the scope of this document. Try it and if it doesn't work, post to the forum. The OSC Output Host must be the IP address of the device that will be sending and receiving OSC messages. This is not required, but it is desireable if you want to see controls in the OSC device match the current Mobius paramters. For example, if you bind an OSC address to the Output Level parameter, we can send the device a message every time the output level changes due to a MIDI pedal, moving the UI knob, a script, or any other means of changing the parameter. An IP address has the form of four numbers seperated by periods, for home networks, the IP addres normally starts with "192.168.1" and ends with a number between 100 and 200. The OSC Output Port defaults to 9000 which is the default port number used by TouchOSC. This must be changed if your device listens on a different port and you want the device to receive notifications when Mobius parameters change. The OSC Trace - checkbox enables sending trace messages whenever OSC messages are received or sent. On Mac, the messages are sent to the system console. On Windows, they are send to the debug output stream and you will need to use an application such as DBWIN32 to view them. See the section Trace in the Exploring Mobius manual for more information on how to enable and view trace messages. The Trace Debug Level parameter under the Advanced tab must also be set to 2 to see OSC trace messages. If you are setting up a new device it is recommended that you enable trace to help diagnose problems. Once the device and Mobius are working properly, disable trace to reduce clutter in the logs.

3 Addresses and Arguments


Mobius OSC messages must contain an address and usually one floating point argument without a type tag. Mobius addresses always begin with the string /mobius and follow this pattern:

/mobius/trigger/scope/target/value
The /trigger container is optional and is usually not included. It can be used to convey information about how the physical device is behaving, if this is different than the default Mobius expectations. This will be described in detail later. The /scope container is optional and may contain one of the following values.

The word global A track number starting with 1 A group letter starting with A

If a scope is not specified in the address it defaults to global. Here are some example addresses containing scopes, the first two are the same because the default scope is global:

/mobius/global/... /mobius/... /mobius/1/... /mobius/A/...


The /target container is not optional, it must be the name of a Mobius function or parameter, for example "record" or "subCycles". Target names must use script names which may be different than the names displayed in the user interface. Consult the reference manual to find the script names that correspond to the display names. Often the script name is the same as the display name but with spaces removed, so what is displayed as "Auto Record" would be "AutoRecord" in the address. Case does not matter. To change setups, presets, or binding overlays the the target names are "setup", "preset", or "bindings". These are the same as the parameter names used to select configuration objects with plugin parameter bindings. Here are some example addresses with targets:

/mobius/global/record /mobious/global/preset /mobius/1/quantize /mobius/A/output


The /value container is where things start to get complicated. In order to support a wide variety of devices with different levels of programability, values can be specified in three ways.

argument - the value is specified by the OSC message argument absolute - the value is specified in the address relative - an adjustment to the current value is specified in the address, with the amount of adjustment specified by the OSC message argument

We will discuss ways to specify target values in more detail below, here are some examples:

-- these use arguments

/mobius/global/output 0.5 /mobius/1/quantize 0.333 -- these are absolute /mobius/global/preset/Default+Preset /mobius/1/quantize/subcycle /mobius/A/pan/center /mobius/global/output/max -- these are relative /mobius/global/output/up 1.0 /mobius/8/feedback/down 5.0 /mobius/global/output/up/1 /mobius/8/feedback/down/5

4 Buttons and Sliders


Before determining the best way to specify Mobius addresses and arguments, we need to consider how the hardware that is sending OSC messages behaves. A device typically contains a mixture of physical controls that behave in one of these ways:

continuous - a slider or rotary knob that sweeps between a range of values momentary - a button that sends a value when it is pressed and another when it is released single - a button that sends a value when it is pressed, but not when it is released toggle - a variation of the single button, it sends a value when it is pressed, and a different value when it is pressed a second time xy - a rectangular area with a "puck" that sends two values as the puck is moved

You can set Mobius parameters using any of these control types. Continuous controls are useful if you want to to sweep through the possible values of a parameter. Often the track control parameters such as "input", "output" and "feedback" are associated with physical controls that resemble sliders. Enumerated parameters such as "quantize" or "recordThreshold" might be assigned to rotary knobs. You can also use buttons to set parameters. In this case the button will either force the parameter to a particular value (absolute), or raise and lower the value of the parameter by some amount (relative). To execute Mobius functions you almost always use physical controls that have button behvaior. It is possible to execute Mobius functions with sliders but this can be

difficult to use. When executing functions, it is important to understand the differemce between momentary, single and toggle buttons. Many Mobius functions are "sustainable" which means they can have different behavior when a button is pressed and released, or when a button is held down for a period of time. If you wish to use any of the sustainable or long-pressable functions, you must use physical buttons that behave as momentary buttons, sending a message both when it is pressed and released. All TouchOSC buttons behave this way. It is posssible to use single message buttons to execute functions but Mobius has to be told not to expect the extra release message. Otherwise sustainable functions will enter their long-press state because they never see the up transition of the button. This is done with a special keyword in the address and is described below. Toggle buttons are not very useful with Mobius. They are typically used for effects parameters such as chorusing or reverb, where you want to press once to enable the effect, then press again to disable the effect. Such buttons typically send 1.0 when they are pressed once, 0.0 when pressed again, then repeat the 1.0 and 0.0 pattern forever. This behavior might be useful for some parameters, for example toggling quantize mode between "loop" and "off", but this is not recommended for executing functions. XY controls can be used to set Mobius parameters but we have not seen many interesting examples. If you find one let us know!

5 Argument Values
The OSC devices with which we are familar send one and rarely two arguments that are floating point numbers. The argument usually has a default range of 0.0 to 1.0. When a slider is down, the value 0.0 is sent and as it is raised the value increases smoothly until it reaches 1.0 at the top end of the slider range. Momentary buttons usually send 1.0 when the button is pressed and 0.0 when the button is released. This is the default behavior of TouchOSC controls. To minimize the amount of programming for TouchOSC, Mobius will expect most arguments to be in the range of 0.0 to 1.0, though in some cases this can be adjusted.

6 Setting Parameters With Scaled OSC Arguments


To set a parmaeter with OSC arguments, use an address path without a value container, for example.

/mobius/global/output
One argument is expected to be sent with the message whose value ranges from 0.0 to 1.0. Mobius will take the floating point range and scale it into an integer or "ordinal" range for the target, in this example the output parameter. The output parameter has an ordinal range from 0 to 127, so an OSC argument of 0.0 becomes output level 0,

1.0 becomes 127 and 0.5 is approximately 64. This is almost always done when the physical device is a slider or rotary knob. This style of argument is convenient if you want to smoothly sweep the knob over all possible values of the parameter. It is also possible to set values with a button, but this is not often done with scaled OSC arguments. To set the value of a parameter you must know the floating point range of each of the possible parmeter values. For example the quantize parameter has four possible values: off, subcycle, cycle, and loop. This divides the floating range by four, so values from 0.0 to 0.2499999 select off, values from 0.25 to 0.4999999 select subcycle and so on. It is inconveinent for the device programmer to calculate these values so instead parameters set with buttons usually use address values or ordinal arguments. Another problem setting parameters with buttons, is that many devices use momentary buttons and send a message when it is pressed and again when it is released. When setting Mobius parameters you usually want to ignore this second message. For example, say we're configuring a TouchOSC button to set the quantize parameter to loop. You set set the high value to 1.0, but what about the low value? If you leave it at 0.0 the parameter will change twice, once when you press the button and again when you release since 0.0 is the value for "off". To avoid this you must set the low value of the button to -1.0 or any other negative number. Mobius will ignore the negative value and leave the parameter set to 1.0.

7 Setting Parameters With Address Values


When setting parameters with buttons, the most convenient approach is to include the value you want to set in the address rather than use the OSC argument. For example:

/mobius/global/quantize/loop
The quantize parameter value will be set to loop whenever this message is received with a non-zero argument. Since the default behavior of TouchOSC is to send 1.0 on button press and 0.0 on release, the message is processed when 1.0 is sent, but the message is ignored when 0.0 is sent so we won't try to change the parameter twice every time a button is pressed. This is convenient for two reasons, first you don't have to worry so much about the value of the argument since most devices default to 0.0 to 1.0. Second, you don't have to calculate the numeric form of each parameter value, instead you can reference them by name just as you would in a script. When you use this style of address you normally do not send it from a slider or knob. As you sweep over the slider range, we will set the parameter to the same value many times which adds overhead and accomplishes nothing. To set the value container, consult the reference manual for each parameter. If the parmaeter value is an enumeration the set of possible values are listed. If the value is an integer the minimum and maxmum values will be given. For example, the output level parameter range is from 0 to 127, so these are some valid example addresses.

/mobius/global/output/0

/mobius/global/output/42 /mobius/global/output/127
To change presets, setups or binding overlays, you reference the objects using the name they have in the user interface. These names often contain spaces which are not allowed in OSC addreses. You must substitute the plus '+' character for spaces in configuration object names:

/mobius/global/setup/Default+Setup /mobius/1/preset/Glitch+Core /mobius/bindings/Nano+Control


There are also a few special symbols that may be used instead of parameter values.

min - set the parameter to the minimum value max - set the parameter to the maximum value center - set the parameter to the center value

These symbolic values are the most useful for the track level parameters.

/mobius/global/output/max /mobius/global/feedback/min /mobius/global/pan/center

8 Setting Parameters With Ordinal Arguments


If you have an OSC device that can be programmed to send any argument value, you can choose to set the Mobius parameter to the value of the argument using ordinal nubmers. Ordinals are integers that usually have a minimum value of zero and a maximum value less than 100. A few have minimum values that are negative. To set parameters with ordinals add the keyword arg to the end of the address.

/mobius/global/output/arg
This differs from using scaled arguments in that the argument is not expected to be a floating value from 0.0 to 1.0. Instead it is expected to be an integer that fits within the range allowed by the target parameter. In this example, the target is output which expects values from 0 to 127. Ordinal arguments accomplish the same thing as using address arguments and are a bit more obscure since they require ordinal parameter numbers, whereas address arguments may use symbolic values. In the previous example, if the device was programmed to send an argument value of 100, the same effect could be achieved using an address argument.

/mobius/global/output/100

9 Setting Parameters With Relative Values

A variation on setting parameters with addresses is to use the address to specify a relative value. There are two special sumbols you can use in the value container to set relative values.

up - raise the parameter value down - lower the parameter value

For example:

/mobius/global/output/up /mobius/1/feedback/down
The amount to raise or lower the value is specified by the OSC argument. So assuming the TouchOSC default of 1.0 for button presses, the values will rise and lower by 1. If you create a custom TouchOSC layout you can adjust the maximum value to achieve higher amounts of adjustment. For example a button with a maximum value of 5.0 will raise or lower the parameter value by 5 units each press. If you do not wish to program a custom template, you may also specify the amount of change in the address. For example:

/mobius/global/output/up/5 /mobius/1/feedback/down/20
This style of address can be used with any parameter, the value will be automatically constrained so the parameter can't go beyond it's minimum and maximum values. The value of the OSC argument doesn't matter as long as it is possitive. Positive argument values will cause the parmameter to be changed, zero or negative values are ignored, which is necessary for buttons that send 0.0 when they are released. Setting parameters values in the address is convenient for devices that have only buttons or a limited number of sliders.

10 Executing Functions
Functions are almost always executed using a physical control that behaves as a button. It is possible to execute functions with sliders but it takes more effort. Wherever possible, the button should be programmed to send an argument of 1.0 when the button is pressed and 0.0 when it is released. It doesn't really matter what the press value is but the release value must be 0.0. If the release value is not 0.0, mobius will execute the function again when the button is released which is not normally desired. Here are some examples of function addresses:

/mobius/global/record /mobius/1/speedDown /mobius/A/mute


If the button does not send a value on release, Mobius needs to be told this so it won't think that the button is being held down. This is important for all "sustainable" functions that may have different actions on press and release, or change behavior

after a long press. If the button will not send a release value the special symbol /noup must be added to the address after the /mobius container.

/mobius/noup/global/record
When the /noup trigger qualifier is used, the value of the OSC argument is ignored. Any time a message is received with this address the function is executed, and we will not wait for a release message. A few functions may take a single integer argument when used in scripts. Some examples are divide which instantly divides the loop by a number, and speedUp which raises the speed of the loop by a number of semitones. For those functions that recognize arguments, you may specify the argument in the address.

/mobius/global/divide/5 /mobius/1/speedDown/12
There is usually no need to combine a numeric function argument with the /noup option. Functions that take argumets are assumed to not be sustainble. There may however be scripts that are sustainable and take an argument. So it is best if you consistently add /noup if you know the device will not behave like a momentary button.

11 Address Translation
If your device does not support programmable addresses, or if you wish to use the default TouchOSC templates without creating custom templates, you can still use the device with Mobius, but it requires editing an XML file. The file is named osc.xml. On Windows it is found in the installation directory, usually c:\Program Files\Mobius 2. On Mac this is found in /Library/Application Support/Mobius 2. You need to be comfortable with XML syntax and selecting text encodings to edit this file. See this section in the Getting Started manual for more information on the proper way to edit XML files. The default osc.xml file contains a single <OscConfig> element which in turn contains several <OscBindingSet> elements. An <OscBindingSet> contains several <Binding> elements. Each <Binding> defines the translation between the incomming OSC address (triggerPath) and the corresponding Mobius address (targetPath).

<OscConfig> <OscBindingSet name="Touch OSC Simple" active='true'> <Binding triggerType='continuous' triggerPath='/1/fader1' targetPath='/mobius/1/output'/> <Binding triggerType='continuous' triggerPath='/1/fader2' targetPath='/mobius/2/output'/> <Binding triggerType='continuous' triggerPath='/1/fader3' targetPath='/mobius/3/output'/> <Binding triggerType='continuous' triggerPath='/1/fader4' targetPath='/mobius/4/output'/>

<Binding triggerType='continuous' triggerPath='/1/fader5' targetPath='/mobius/global/pan'/> <Binding triggerType='toggle' triggerPath='/1/toggle1' targetPath='/mobius/noup/record/> <Binding triggerType='toggle' triggerPath='/1/toggle2' targetPath='/mobius/noup/overdub/> <Binding triggerType='toggle' triggerPath='/1/toggle3' targetPath='/mobius/noup/mute/> <Binding triggerType='toggle' triggerPath='/1/toggle4' targetPath='/mobius/noup/reset/> ... </OscBindingSet> <OscBindingSet name="Touch OSC Beat Machine"> ... </OscBindingSet> <OscBindingSet name="Touch OSC Keys"> ... </OscBindingSet> ... </OscConfig>
Only one OscBindingSet may be active at a time, this is indiciated by setting the XML attribute active to true as seen in the above example. If more than one <OscBindingSet> set is marked active, the first one is chosen. If no binding sets are active the first one in the <OscConfig> is chosen. The active binding set is consulted whenever an OSC message is received. We search for a <Binding> whose triggerPath matches the address from the OSC message. In the examples above, the triggerPath values are the messages sent by TouchOsc in one of it's default configurations. If a matching <Binding> is found, the value of the targetPath is used to process the message instead of the one that was received from the device. targetPath values conform to the Mobius address format described earlier in this document. The triggerType value tells Mobius about the behavior of the physical OSC trigger and the values the OSC message argument will have. This is optional because Mobius can usually figure out the appropiate trigger type based on the targetPath and trigger options such as /noup. The possible values are.

continuous - argument sweeps from 0.0 to 1.0 momentary - argument is 1.0 when a button is pressed and 0.0 when released once - argument is 1.0 a the button is pressed and nothing is sent when the button is released

toggle - argument is 1.0 when button is pressed once and 0.0 when pressed again xy - a pair of arguments from 0.0 to 1.0 is sent for each coordinate in a rectangle

For TouchOSC, incoming paths that contain the word "fader" or "rotary" are continuous, paths with the word "toggle" are toggle, and paths with the word "push" are momentary. Mobius currently cannot make use of xy messages.

12 Status Export
In addition to receiving OSC messages, Mobius may also send OSC messages so that the device can display the current Mobius state. By default, any OSC address whose target is a parameter and whose argument is a continuous value from 0.0 to 1.0 will be automatically exported when the parmeter is changed. So if you use an address like this:

/mobius/output
A message will be sent back to the OSC device using the same address whenever the output level changes. For this to work you must configure the OSC Output Host and OSC Output Port in the Mobius Global Parameters window. Note that addresses that target functions, or that include specific values will not be exported. For example, these address cannot be exported.

/mobius/record /mobius/output/127 /mobius/output/up /mobius/output/arg


In addition the automatic export of continuous parameters, there are a few special values that may be exported but cannot be set. These are called Watch Points.

loopLocation - the current playback location in the loop loopStart - flashes at the loop start point loopSubcycle - flashes at the loop start point loopCycle - flashes at the loop start point modeRecord - set when the loop is in record mode

Watch points are still under development, if you have ideas about Mobius states that should be exporable as watch points please let us know. When a watch point is continuous such as loopLocation the value will be constantly changing. The output value will be scaled to the range 0.0 and 1.0. For TouchOSC this can be used with fader or rotary controls. When a watch point flashes it indicates that the state is instant and does not have a time duration. For example when the loop reaches the start point. For instant watch points, an OSC message will be sent with value 1.0 when the state is reached, and a

short time later a message with value 0.0 is sent. This can be used to turn lights on the OSC device on and off. For TouchOSC this should be used with toggle buttons. When a watch point is "modal" such as modeRecord it turns on and off for an undefined time. A 1.0 will be sent when the mode is entered and 0.0 when it is exited. To export watch points, you must edit the osc.xml file and add <OscWatcher> elements. These elements appear as immediate childrenof the <OscConfig> element. For example:

<OscConfig> <OscWatcher name='loopLocation' path='/1/fader1'/> <OscWatcher name='loopStart' track='1' path='/1/toggle1'/> <OscBindingSet> ... <OscBindingSet> ... <OscConfig>
In this example, the loop location of the currently selected track will be sent to the OSC device using the address /1/fader1. In the second <OscWathcer>, a specific track is specified so the OSC device will be send a message to /1/toggle1 only when the loop in track 1 reaches its start point.

12.1 Latency
There may be a considerable delay between the time that a Mobius watch point is reached and the OSC device responds to the message. So while watch point port export can give you a general idea of what is happening, it is not always suitable for making time critical decisions, such as synchronization or as a metronome. Mobius sends messages as fast as it can, but wireless networks and mobile devices can both add delays that are not under the control of Mobius.

13 Reloading the OSC Configuration File


If you decide to use address mapping or define watch points in the OSC configuration file (osc.xml) you will need to reload it every time you make changes. The file is loaded once when Mobius starts. If you want to reload the file without restarting Mobius, open the File menu and select the Reload OSC item.

14 TouchOSC Tips
The most inexpensive way to use OSC with Mobius is through the TouchOSC application for Apple and Android mobile devices. It is available here . TouchOSC provides a few default layouts such as Beat Machine and Keys but it is also fully programmable with the TouchOSC Editor.

The default layouts the send messages such as /1/fader1/ can be used but they require editing the Address Translation file. For most people it is easier to use the TouchOSC Editor to send address that Mobius understands without mapping. For Mobius, the most useful layout object types are Push Button, Fader V, Fader H, Rotary V, and Rotary H. Use Push Button to execute functions or set specific parameter values, and use Fader and Rotary to sweep through paramter values. Toggle Button can be used but it doesn't work very well since Mobius does not have many concepts that behave like toggles. You might use this to swtich between two parameter values, but it is not suitable for executing functions. XY Pad and the various Multi types are not usable with Mobius. The read-only status types such as LED and Battery V can be used as the targets for OscWatchers.

Potrebbero piacerti anche