Logic Pro & GarageBand 10 Control Surface Problems

© 2012, 2017 Harmony Systems, Inc. All rights reserved.

The problems described in this article occur for Logic users running versions prior to 10.2.1.
Logic Pro X 10.2.1 (and higher) seems to have resolved the problem of trying to use multiple OSC controllers as long as you do not have more than one control surface in the same group.

Note: The Apple GarageBand for Mac v. 10.2 (June 2017) no longer supports the default OSC control surface driver necessary for the Delora gbXRemote iPhone app to function. All references to it in this article are for the benefit of customers running prior versions of GarageBand 10 for Mac.

This article describes how Logic Pro and GarageBand 10 work with control surfaces such as lpTouch, gbXRemote and Logic Remote, and why/how problems may occur.

If you want to go directly to instructions for deleting a corrupted control surface preference file for Logic or GarageBand, see When Things Go Bad.

Did you just install lpTouch but it seems to behave erratically with Logic? Or maybe you have used it successfully before but now it is acting "strangely"? Or maybe you were using Logic Remote before with Logic X but decided to give lpTouch on your iPhone a try but Logic does not seem to respond to lpTouch?

All of these are symptoms of incorrect, and possibly damaged, Logic control surface preferences. The situation may arise due to some long standing bugs in Logic, plus some new ones added when Logic introduced OSC control surface support (which lpTouch uses) in Logic 9.1.2. (Note: Apple appears to have fixed this problem with Logic 10.2.1). These problems affect all OSC-based control surfaces (if you are running a version of Logic prior to 10.2.1), which includes Apple’s own Logic Remote app. Furthermore these same problems were inherited by GarageBand 10 as it uses the same OSC control surface system as Logic Pro X. So if you are finding that using gbXRemote or Logic Remote with GarageBand 10 is not working as expected it may well be that you have run into this bug.

GarageBand 10 attempts to side step this issue because it takes a “clean slate” approach each time it starts. It does not remember your control surface setting from the last time you used it. This minimizes the chances of encountering the problem but does not eliminate it completely. You still may run into problems if you try to change control surfaces while GarageBand is running. For this reason it is important to understand the nature of the problem and how to avoid it.

Fortunately there is a simple procedure to repair your Logic set up, and to avoid these problems in the future. But before we get to that some background may prove helpful to your troubleshooting efforts when something does go wrong.

lpTouch for Logic

The universal Delora lpTouch for Logic app transforms your iPad or iPhone/iPod touch into a controller for Logic Pro.

Background

Logic Pro has a control surface driver system that allows it to work with different controllers. Logic Pro comes with many control surface drivers "out of the box", one of which was the "TouchOSC" driver introduced with Logic 9.1.2. This was the only OSC control surface driver included with Logic until Logic Pro X introduced Apple’s proprietary Logic Remote driver. Controllers that use a different driver must install their own custom control surface driver. lpTouch was designed to work with a standard Logic Pro 9 or Logic Pro X installation so it is based on the TouchOSC driver. GarageBand 10 (the version currently in the Mac App Store) includes both of these drivers so gbXRemote also uses the TouchOSC driver.

Logic has a control surface set up utility that is accessible as part of its preferences. This is used to inform Logic what controller(s) you wish to use, and in the case of MIDI controllers, the MIDI ports to which the controller connects. Many controllers, including OSC-based ones like lpTouch, are automatically recognized by Logic.

Each time Logic starts, it scans for possible control surfaces. When it locates one it already knows about, it usually marks it as ready for use. When it uncovers one it has not registered before, it alerts you with a message like the one shown in the introduction. What this message is asking you is whether you wish for Logic to register and use this particular controller.

Logic stores information about your current control surface configuration in a special, dedicated preference file. It uses this information each time it starts to recall what control surfaces it has registered. This file is essential to proper control surface operation.

Logic is constantly monitoring its MIDI and OSC arena for changes that signal that a new control surface has been connected. When this happens, Logic checks if the new controller is one it has already registered. If it is, then it prepares to use it. If it was not previously registered, Logic will ask if you wish to use it as a controller.

In theory this is all quite clever, and in practice it works most of the time. However there are some conditions in which Logic responds incorrectly to controllers, even ones it has already recognized. This can cause the annoyance of being asked every time you start Logic if you want to use the same controller, but in some cases it is a symptom that there are larger problems lurking about. If you do not address these, then Logic may exhibit erratic control surface operation, or worse, crash!

Another problem happens when Logic has registered two or more controllers. Logic's control surface system is very powerful and supports the idea of controllers working independently or in "groups". For example you might have three 8 fader MIDI controllers that you wish to set up to control 24 mixer channels simultaneously. If Logic has a compatible driver this is possible by assigning those three controllers to their own "group".

logic cs problems 2

Above: Logic showing two controllers assigned to the same "group"

logic cs problems 3

Above: Logic configured with two controllers working independently

This is very nice feature but unfortunately at present it does not work with OSC controllers like lpTouch and Logic Remote. Logic can currently only have a single OSC controller registered at a time. If you deliberately, or by accident, end up with two OSC controllers showing in Logic's control surface set up you are on the road to control surface problems! You should correct this situation immediately. Note that this situation can arise even if you are presently using a single control surface, but have used a different one in the past. Logic remembers all of the control surfaces it has encountered in its control surface preference file. So if you used Logic Remote yesterday on your iPad but instead wish to use lpTouch today on your iPhone, Logic ends up with two control surfaces “registered” and this can trigger erratic behavior and other problems.

logic cs problems 4

This will not work . . .

logic cs problems 5

… nor will this. Both will likely cause erratic control surface operation and must be corrected.

GarageBand 10 hides all of this from the user but underneath it is working essentially the same, and thus suffers the same limitations as Logic Pro. GarageBand starts each time without any record of previous control surfaces. This is why when you use Logic Remote or gbXRemote, GarageBand asks you each time if you want to use that as a control surface. This means that under normal conditions you do not have to worry about what control surfaces you used in the past. It does not, however, solve the problem of switching between control surfaces during one session. Doing so will still likely cause problems.

A related problem is trying to use one OSC controller with a MIDI controller. This should work, in theory, and we have not experienced any issues with this in our own testing. But other developers have reported issues with such a "mixed" set up. It may depend on the particular MIDI controller. Regardless we recommend that you stick to using lpTouch by itself but feel free to experiment if you are so inclined (please let us know your findings!).

The final piece of this puzzle is how Logic handles its control surface preferences. These are kept in a file com.apple.logic.pro.cs that resides in OS X's user preference folder. This folder can be found here:

[your_user_account_name]/Library/Preferences

Logic reads this file into memory when it starts. If it detects changes to controllers, like automatically registering a new one, or when you do any manual changes from Logic's preference settings, those changes are kept in memory. They are not saved until Logic quits. When you finally finish and exit Logic it saves the settings back into the preference file.

This has a number of implications. For example if you alter your control surface setup, such as deleting one controller then adding a different one, Logic will not save those changes until you exit the program. Should Logic experience an unusual "termination", like a crash, those changes will be lost.

Incidentally Logic also uses the control surface preferences to save control surface "state". This is why you sometimes find the control surface set to a particular track bank, or plugin parameter page when it first starts.

Since Logic keeps the control surface preferences (and state) in memory, it raises the possibility that Logic could damage those settings due to an unrelated problem, such as a plugin crashing. And while we cannot be certain this is actually the case, it appears that Logic will write the damaged data to the preference file, rendering the preference file unusable or "corrupted". Worse, it appears that Logic attempts to write this file as part of its "emergency shut down" procedure when it has crashed. This is yet another opportunity for the control surface preferences to become damaged.

Once this file is corrupted it will remain so until it is manually deleted and a "fresh" version is created by Logic. This holds true even when you upgrade Logic from Logic Pro 9 to Logic Pro X, or when you move to a new Mac and use Migration Assistant to bring your data over. So a problem in the far past can propagate long into the future.

Often you will have no indication of a problem other than certain control surface operations are "a little strange". Slightly more noticeable is when Logic asks to register lpTouch (or Logic Remote) from your same iPad even when it is already registered. More dramatic indications are very erratic control surface operation such as changing one track's settings on the controller but Logic actually changes a different track. In rare cases the corruption may cause Logic to crash on start up.

One symptom of this problem that we have noticed is Logic crashing for no apparent reason when quitting. If you are getting the “spinning beachball of death” every time you quit Logic it may be due to a corrupted control surface preference file.

How Logic Pro and GarageBand 10 recognize different OSC control surfaces

One important detail that is helpful when troubleshooting control surface problems is how Logic or GarageBand "knows" when an OSC control surface is available for use, and decides if it is one it already has registered or not.

OSC controllers, like TouchOSC and lpTouch, "advertise" their presence over the Wi-Fi network using Apple's Bonjour network system. Bonjour is the heart of a number of advanced OS X and iOS features. It offers easy ways to connect devices with various "services", like iPhoto's photo sharing, iOS 5's Wi-Fi iTunes sync, AirPlay, AirPrint, and so on.

Logic (and GarageBand) monitors Bonjour to see if an OSC controller is offering its services. When it discovers a new candidate it checks its "Bonjour name" to determine how to proceed. Part of this checking distinguishes between different types of devices, like whether the controller is running on an iPad, iPhone, or iPod touch, the type of controller, and the device's name. All this happens automatically behind the scenes and is normally not something you need concern yourself about. It is a large part of the "magic" of why OSC controllers "just work" with Logic and GarageBand 10.

The device name though is critical because it is how Logic and GarageBand decides between two different devices that may be running the same control surface app. For example if you have two iPads and run lpTouch on both, but at different times (because you learned you cannot use more than one OSC controller at the same time), Logic distinguishes between the two iPad's based on each device name.

The device name is what you named your iPad, iPhone, or iPod touch when you first set it up. Normally this is something you do once so even though a "name change" set the "right conditions" for an issue with Logic/GarageBand, it is not something most users encounter. However continue reading as some nuances may lead to Logic or GarageBand thinking you have two different controllers when you are actually only using one.

lpTouch and TouchOSC share the same control surface driver. lpTouch and TouchOSC should be usable on the same device interchangeably without Logic thinking it to be two different controllers. This means that you should be able to switch between using lpTouch and TouchOSC without encountering the "two OSC controller" problem mentioned above.

iOS allows you a lot of flexibility when it comes to assigning a name. Some users choose simple single word names but it's also common to use something like "My iPad" or "Alice's iPad". Names such as these that feature multiple words separated by spaces, or contain certain punctuation marks, will appear to Logic as different devices when TouchOSC is used versus when lpTouch is running. If your device name is one of these types then each time you switch between TouchOSC and lpTouch, Logic will ask to register a "new" control surface.

If you do not use TouchOSC then this is of no concern. Keep your device name as it is and continue to use lpTouch without giving it another thought. But if you want to use TouchOSC's Logic "template" sometimes, then you should consider changing to a new device name that does not cause Logic to believe it is two different devices. The "safest" style name would be one that is a single word, and contains no unusual characters (underscores and dashes are OK). For example "My iPad" could be "MyiPad", "My_iPad", or "My-iPad". "Alice's iPad" would become "Alices_iPad", "Alices-iPad", etc. Note that the ' (apostrophe) has been discarded.

So what does this have to do with me?

You might be thinking "So?". Many users will never experience issues using lpTouch, gbXRemote, or other control surfaces. New users who have never used another control surface are very unlikely to encounter these issues. (However it is possible if Logic somehow damaged the control surface preferences in the past and you never noticed it, until now). The most common instances where this could become an issue are:

  • You use Logic Remote sometimes, and lpTouch others.
  • You use Logic Remote on your iPad and lpTouch on your iPhone, or in the case of GarageBand, gbXRemote on your iPhone.
  • You have used another type of OSC controller (one example is V-Control), other than TouchOSC, and that controller is registered with Logic.
  • You have used TouchOSC in the past, and your iPad has a name that causes the "naming differences" mentioned previously.
  • You have used or do use TouchOSC on an iPhone or iPod Touch as a Logic controller. Since this is considered a different OSC controller (because it does not run on the same iPad), Logic will attempt to have two controllers.
  • You just upgraded your iPad to a new model and are using a different device name from the previous iPad.
  • You have two iPads that you use interchangeably with Logic.
  • Your Logic set up is used by another user who has her own iPad.

These are but a few examples of how Logic's (and GarageBand 10’s) control surface "registration system" can lead to the situation where you have two OSC controllers in use. If your situation is similar then it is recommended that you follow the steps described in the next sections.

Avoiding the problem

The best strategy once you are aware of this problem, and have "fixed" your Logic control surface set up, is to avoid situations that can lead to it reoccurring. This is actually easy if you follow some basic rules, and users with a single iPad who only run lpTouch will probably never even encounter such a situation. Basically it all boils down to one principle: Never try to use another control surface along side lpTouch, and always make sure that Logic always has but a single control surface in its set up.

What this means in practice though is that you should probably never click “OK” (Logic X) or ”Add" (Logic 9) when you see this message unless you absolutely know for certain that Logic currently shows no other registered control surfaces. Simply disconnecting or not using the other control surface is not enough! Logic must not show it in its control surface set up screen.

Logic X control surface popover

Logic X

Logic 9 control surface popover

Logic 9

For example, if you are currently using another controller, or have in the past, then you want to make sure that Logic's control surface setup screen looks like the screen below before you run lpTouch for the first time.

logic cs problems 7

It's always best to start with a clean control surface set up before installing any OSC controller!

If you should forget this and Logic shows the "New OSC device" popup (like when running lpTouch for the first time), simply click "Cancel". Open up Logic's control surface set up (from the Preferences menu item), delete the other control surface(s), and then reconnect lpTouch to Logic, this time answering "Add" to the popup.

By the way never "check" the 'Don't show again' option. Doing this will prevent OSC controllers from being properly recognized, and TouchOSC, lpTouch, Logic Remote, and other OSC controllers may no longer work.

Also, remember that Logic will not save these changes until you exit. Once you have your control surface set up completed, we recommend you exit Logic so that the changes are saved. Furthermore it is a good idea to save the preference file in a safe place if you have further customized your control surface set up. Or consider the method suggested in 'For the paranoid'.

If you should accidentally end up with two or more control surfaces then it is pretty likely that you will either have a corrupted control surface preference file when you exit Logic, and/or Logic will crash (usually on exit). If you try to delete one or more control surfaces from Logic's set up screen this will likely cause a crash. In other words if you find yourself in the position of having two controllers registered the best course of action is to immediately exit Logic and follow the 'When things go bad - if using Logic’ procedure described below.

GarageBand 10 users have a bit simpler situation since GarageBand starts each time with no registered control surfaces. If you wish to change between say Logic Remote and gbXRemote, or just want to use a different iDevice, you should save your project and exit GarageBand. This will “wipe the slate clean” when you restart GarageBand. Obviously this is not an ideal situation but it is the only way to avoid problems until Logic and GarageBand safely support multiple OSC control surfaces at the same time.

When things go bad - if using Logic

If you suspect your control surface preferences are corrupt, or you just want to absolutely make sure you are starting with a clean slate, then you should follow this procedure to delete the existing control surfaces preferences settings file. Logic will create a new version of this file the next time it exits. Unfortunately if you have a corrupted file and that file contains your favorite control surface customizations that you laboriously slaved to create, those will be lost. This is one reason why a backup after making such additions is essential.

  • Exit Logic and make sure your OSC controller apps are not running. If you fail to do this Logic will overwrite the new "clean" file with whatever it thinks are the current control surface settings, negating your efforts.
  • If you are running on Snow Leopard, use the Finder to navigate to [your home folder]/Library/Preferences
  • If running on Lion and later, open the Finder, tap Go in the menu, then "Go to Folder…”. Type ~/Library/Preferences in the box, then tap Go.
  • Locate the file com.apple.logic.pro.cs, then drag it to the trash. Empty the trash to make sure it stays deleted.

When things go bad - if using GarageBand

If you want to use multiple OSC controllers, you may need to perform these steps if you notice problems:

  1. Exit GarageBand if it is running. Make sure gbXRemote or any other OSC device like Logic Remote is not running.
  2. Open Finder on your computer, select “Go to folder…” from its ‘Go’ menu.
  3. In the prompt box, type this: ~/Library/Containers/com.apple.garageband10/Data/Library/Preferences
  4. Click the Go button
  5. A finder window will show a list of files. Locate the one named: com.apple.garageband10.cs
  6. Delete that file (move to Trash)
  7. Start GarageBand
  8. Load a song
  9. Start gbXRemote and connect
  10. GarageBand should show the add control surface popup. Click “Add” and gbXRemote should be ready to use.

For the paranoid

One way to buy an extra measure of protection against future mishaps has been suggested by "seasoned" Logic users in online forums. The idea is that since Logic can only damage the control surface preferences by writing to the file, it's best to keep Logic from doing this. Obviously this is not how Logic was intended to work but "locking" the file does not seem to cause any adverse problems. Just remember that once the file is locked Logic cannot make any changes to it, including any customizations you perform, if you wish to replace your control surface, or even save the control surface "state". You will need to reverse this procedure to make changes.

Note: we have not thoroughly tested this procedure so please consider this "experimental" and only use it if you really feel the need and are willing to address any unforeseen side effects.

The procedure is simple. Locate the control surface file and have the Finder "lock" it to prevent changes. Use the method outlined in 'When things go really bad' above to locate the file. Right click on the file and select "Get Info". You should see a popup like this:

logic cs problems 9

"Check" the Locked setting, close the popup, and Logic will now be unable to make changes to the control surface preferences. When you want to allow changes follow the same steps and "uncheck" Locked.

Another alternative for an advanced user is to create an Automator script that deletes the control surface preferences each time before it launches Logic Pro. Then instead of running Logic directly you run the script each time to start Logic. This insures that Logic always starts with an empty control surface preference file. This is essentially what GarageBand 10 does.

Gluten-free paleo gastropub authentic flexitarian fixie tote bag, scenester Cosby sweater irony locavore. Gentrify American Apparel craft beer aesthetic Echo Park. Polaroid Marfa cray dreamcatcher, chambray ennui hella Godard meggings fap Terry Richardson XOXO. Sartorial vinyl cornhole, fap kogi Austin meh Terry Richardson art party hella. Master cleanse Etsy trust fund, forage craft beer biodiesel Wes Anderson hashtag Intelligentsia hoodie. Ethnic DIY 8-bit, leggings ennui narwhal Tumblr Portland Helvetica asymmetrical fap twee viral 90's aesthetic. Blue Bottle kale chips hashtag, jean shorts disrupt semiotics wayfarers pop-up aesthetic retro kogi Tumblr put a bird on it.