[sharing] Logic transport in Max 6
This patcher gets Logic transport data into Max via ReWire to [transport] and MTC via [midin]. Even parses Logic ppq according to Logic’s "divisions" system as long as divisions are set the same in Logic and Max. Accurate to ~2 ppq @480 ppq at steady tempos. Tracks OK through tempo changes; Tempo is very accurate.
No need to create an aux track or midi instrument in Logic to access the ReWire transport data.
Tempo, playback, cycle on/off, and rewind can be controlled direct from Max. The patcher is ready to be sliced into UI bpatchers.
Tested using Logic 64bit and Max 6.1.2 64bit.
The ReWire link is stable; even persistent when Logic is opened after Max.
Clarification: When I wrote "Tempo is very accurate" I should have said "Max tracking of Logic’s Current Tempo is very accurate." Meaning the bpm updates quickly and accurately in Max when changed in Logic.
There’s not a bug but there is an object I forgot to include in this download. Stay tuned for v2 and if you downloaded this patch delete and update to v2 when it comes online
Actually there’s nothing to change in the patch. Please note:
enable "Transmit MMC" in Logic>Preferences>MIDI>Sync>MIDI Sync Project Settings
…and set ReWire Behavior to "Live Mode (Higher CPU Load)" in Logic>Preferences>Audio
Your patch looks interesting but I’m not sure about the benefits compared to a regular rewire setup. In particular regarding the fact, that the standard rewire protocol ensures sample accurate synchronization and doesn’t require MTC or MMC messages.
Good point Broc!
The patch is intended to allow the Logic transport status to be displayed more-or-less accurately in a Max MIDI sequencer application. It is not intended to be part of a Max patch that is a ReWire client sending synchronized audio to Logic.
Having an up to date set of Logic transport info within Max affords the possibility of having a second client [transport] object, other than the named ReWire [transport], that has timesig tempo and bars:beats:units set via the ReWire [transport] and can run timing for MIDI programming of sequences when the Logic transport is idle, and then "print" those sequences via ReWire transport data and [midiout] direct to Logic when Logic’s transport is running and a track is record enabled. In other words, a MIDI sequencer that can have a client transport chained to Logic when needed, and its own independent transport at other times. This may also allow use of vst MIDI sequencer plugins (like Thesys) in Max that are locked to Logic’s transport.
Logic’s "regular" MIDI Clock outputs send 24 ticks/beat sand eemed both low-resolution and strangely out of sync with its internal clock. This patch implemented a way to compare Logic’s timing into Max via [rtin] (which is not part of the attached patch) with Logic’s ReWire and MTC output.
Perhaps more importantly, though, it was an exercise in using Max to receive and parse Logic’s (sometimes laggy and weird) MTC and ReWire output and make it human-readable in Max. MTC is an important part of the project I am working on….