Audiobus: Use your music apps together.

What is Audiobus?Audiobus is an award-winning music app for iPhone and iPad which lets you use your other music apps together. Chain effects on your favourite synth, run the output of apps or Audio Units into an app like GarageBand or Loopy, or select a different audio interface output for each app. Route MIDI between apps — drive a synth from a MIDI sequencer, or add an arpeggiator to your MIDI keyboard — or sync with your external MIDI gear. And control your entire setup from a MIDI controller.

Download on the App Store

Audiobus is the app that makes the rest of your setup better.

SOLVED: Developers: Ableton Link 2 to 3 migration?

edited June 2019 in Other

Sorry if this is too off-topic, but I decided to try anyway :)

The last thing that's holding back Xequence 2's release is Ableton Link 3 (with Start/Stop) integration, and I wanted to check if any other developer who went through this ordeal might be kind enough to share some basic **pointers ;)

  • Link 3 seems to be incompatible with Link 2, i.e. I get unresolved symbols (ABLLinkTimelineRef, etc.).
  • There seems to be no official migration guide from Ableton
  • The official API documentation (https://ableton.github.io/linkkit/api-reference/) is dead (404)
  • Ableton is completely unresponsive to email inquiries on all email addresses (including developer support) that I've tried (on last Sunday).

As I'm starting to get a bit frustrated with this, can anyone who went through this maybe share some very basic steps how to migrate, before I re-invent the wheel and manually browse through the header files or example code and try to get an idea?

You'll be of great service to the broader iOS music app good! ;)

Thanks

Comments

  • I believe @j_liljedahl had to deal with this for AUM. Hopefully, they don't make future updates to 3+ any more complicated for development.

  • Here's some basic changes:

    Info.plist:

    +       <key>ABLLinkStartStopSyncSupported</key>
    +       <true/>
    

    code diffs:

    -    _linkRef = ABLLinkNew(_tempo, 4);
    +    _linkRef = ABLLinkNew(_tempo); // quantum is now set elsewhere
    
    +    const ABLLinkSessionStateRef sessionState = ABLLinkCaptureAudioSessionState(clock->_linkRef);
    
    -        clock->_lastBeat = ABLLinkResetBeatTime(clock->_linkRef, clock->_currentBeat, clock->_hostTime);
    -        clock->_currentBeat = clock->_lastBeat;
    +        
    +        ABLLinkSetIsPlayingAndRequestBeatAtTime(sessionState, playing, clock->_hostTime, clock->_currentBeat, quantum);
    +        clock->_lastBeat = clock->_currentBeat = ABLLinkBeatAtTime(sessionState, clock->_hostTime, quantum);
    
    -        ABLLinkProposeTempo(clock->_linkRef, newTempo, clock->_hostTime);
    +        ABLLinkSetTempo(sessionState, newTempo, clock->_hostTime);
    
    -    clock->_beatTimeAtEndOfBuffer = MAX(clock->_lastBeat+0.0001,ABLLinkBeatTimeAtHostTime(clock->_linkRef, bufferEndTime));
    +    clock->_beatTimeAtEndOfBuffer = MAX(clock->_lastBeat+0.0001,ABLLinkBeatAtTime(sessionState, bufferEndTime, quantum));
    
    +    ABLLinkCommitAudioSessionState(clock->_linkRef, sessionState);
    

    start/stop support:

    +static void LinkSessionStartStopChanged(bool playing, void* context) {
    +    TransportClock* clock = (__bridge TransportClock *)context;
    +    
    +    if(clock.playing != playing) { // State change was initiated by another peer
    +        clock.playing = playing;
    +    }
    +}
    
    +    ABLLinkSetStartStopCallback(_linkRef, LinkSessionStartStopChanged, (__bridge void *)self);
    
  • @j_liljedahl that is absolutely lovely, thanks a ton. Incidentally, I've also heard back from Ableton just now (after 4 days...) and yeah, they also advised that ABLLinkTimelineRef is now called ABLLinkSessionStateRef.

    Maybe you should send that diff to them for a little $499 fee so they can include that as an official migration guide ;)

    (seriously, if a new version of an API breaks existing apps, that is really common sense to do...)

Sign In or Register to comment.