Musings

drk’s Electronic Music Blog

Did Apple finally fix a long-standing problem with Logic's OSC implementation?


Logic first supported Open Sound Control (OSC) control surfaces in Logic Pro 9, version 9.1.2. This enhancement to Logic's control surface subsystem made possible third party control surface devices that used OSC instead of MIDI. Normally that means installing a custom "control surface driver", but Apple built-in a generic OSC driver. Delora Software's lpTouch iOS app, which debuted four years ago, relies on this internal driver.

There were some original limitations and hidden pitfalls (more on these in a bit) that persisted through subsequent releases of Logic Pro 9 and Logic Pro X. So it was with some surprise that the most recent version, Logic Pro X 10.2.1, appears to have made some important changes to address an important limitation. But before I cover the change, first some background.

OSC support was a wonderful advancement to Logic's control surface facilities, but in one critical way it was a step backwards. Logic's MIDI control surface support allows multiple, simultaneous control surfaces. This was not true with OSC. End users were largely unaware of this limitation, and Logic did not warn or enforce the restriction. A user could gleefully add a second, or third, OSC control surface and Logic would happily oblige. Except Logic was far from happy. Control surface operation could be erratic, and if you were unlucky, you encountered the dreaded Logic control surface preference corruption bug.

Problems went even deeper. Logic automatically recognizes available OSC control surfaces. If the user elects to add the device it becomes "registered", where it remains until the user manually deletes it. Most users are unaware that registrations are semi-permanent, and that all of their past uses (including demoing a control surface) accumulate. Yet a registered control surface, even if not in use, can trigger strange behavior. So it was not enough to make sure only one control surface is operating; the user also has to make sure Logic has one, and only one, registered OSC control surface.

Yet more subtle traps. Suppose you just traded in your old iPad for a new model. Of course you want to use your favorite Logic OSC control surface app on the new iPad. Logic dutifully registers it but the app no longer works reliably.

Logic treats each OSC controller app and iDevice combination as unique. A single iDevice that runs two different OSC apps is two different control surfaces. Two different iDevices running the same OSC app are two different control surfaces. Simply upgrading your iDevice was enough to trigger the problem.

All of this added up to a lot of frustration for end users. So it was hoped that this situation would disappear in a future Logic Pro update. Yet Logic Pro 9 came and went without a fix, and Logic Pro X came with the same limitation. Apple even introduced its own Logic Remote control surface app, itself subject to all of these same foibles, without also updating Logic to alleviate the restriction. The "one OSC control surface at a time" limitation persisted.

And yet with one, mostly silent stroke, these limitations appear to have been finally addressed when Apple release Logic Pro X 10.2.1 in late January, 2016. The first clue appeared in Logic Remote's App Store "what's new" information for the 1.3 release on January 20, 2016. It states: Multiple iOS devices can now be used simultaneously. The release notes for Logic Remote version 1.3 state something similar. Yet surprisingly there was no mention in the Logic Pro X 10.2.1 release notes, and Logic Pro X 10.2.1 was made available at the same time.

Does this mean that only Logic Remote benefited from the update? What about other OSC control surfaces?

So we decided to do a little testing with lpTouch and Logic Remote.

Two iPads and two iPhones were connected to a single Logic Pro X 10.2.1 session. One iPad ran Logic Remote, the other lpTouch. One iPhone ran lpTouch, and the second iPhone ran Logic Remote and lpTouch, switching between the two while the Logic session was active. Before Logic Pro X 10.2.1 this type of set up would have driven Logic to some very peculiar behavior. During this limited test everything worked as expected. This held true even across multiple runs of Logic. Five different OSC control surfaces, using four different iOS devices, worked without issue.

So does mean that this restriction is finally behind us? It looks promising but further testing is in order. The early results though are encouraging enough that brave adventurers may want to give it a go.

There is, however, one very important restriction that you should still enforce: do not have more than one control surface in the same group. What this means is that when you open up Logic's control surface setup page you should see all of the control surfaces in one vertical column. If you see two or more in the same row, drag them so that they are instead in one column. Here is an example how it should look:

One note about this screen shot. The device highlighted is the same iPhone, "Jewel", that is also registered as an lpTouch control surface at the bottom. This is an example of how Logic shows the same iDevice when it runs two different control surface apps.

lpTouch, when you register a new device, automatically adds it to the same group (row) as the first lpTouch device in Logic's list. So you must open up Logic's Control Surface Setup screen and manually drag it so that it is no longer part of any other group. Otherwise you may encounter a problem. See this for additional information.

It may be that Logic Pro X 10.2.1 also fixed the "multiple control surfaces in one group" problem but we have not fully explored that yet. Preliminary tests are promising but more are needed. And Apple does not say one way or the other. So for now keep the control surfaces each in its own private device group.