PSA: Don't update to iOS 12.4 if you use apps in AB output slot or IAA apps that use the mic.
https://forum.audiob.us/discussion/34030/urgent-psa-hold-off-updating-to-ios-12-4-if-you-use-apps-in-output-slot-in-audiobus

FAC Maxima latency within Cubasis and other AU hosts (latency compensation on iOS hosts)

2

Comments

  • Garageband insert plugin latency compensation confirmed ( as stated by FredAntonCorvest )

  • Brilliant thread. Thank you for the testing and to @FredAntonCorvest for joining in.

  • Has anyone tried this in BM3?

    I’d be interested to know if it has the same compensation GB has (above)

  • _ki_ki
    edited December 2018

    @tk32 said:
    Has anyone tried this in BM3?

    Of course i check BM3, but i‘m not that fast to do all tests at once :)

    .

    BM3 does not offer latency correction for AU insert plugins:

  • Thanks @_ki

    I hope you didn’t think I was being ungrateful.

    This is very helpful info. Thanks!

  • @_ki said:
    @Janosax Implementing latency compensation for a free routing matrix configuration like ApeMatrix is a very complicated task, i have no idea if it is possible at all.

    In AUM or DAWs the path the audio may take is fixed by the way the mix-busses and sends are connected and flow to the ouput, also its fixed where the plugins are located in this path, only the send-levels may change, but not the path itself. For each of the signal path there is a defined latency compensation. Adding a new plugin with latency while playing probably results in small glitches while adjusting all the delays - i didn‘t verify that (yet)

    In ApeMatrix, the routing and leveling is free-form - with a simple touch you can dial in or remove a connection to the output and change the order of the signal flow. Each of the matrix level combinations might need another latency adjustment for its part signal parts.
    Changing latency on the fly is probably not possible without audio glitches (buffers have to be repeated when latency gets longer, or thrown away if latency gets shorter).
    Adjusting the ouput to the maximum possible latency running through all plugins would not really help with the changing latency of signal path taking a more direct way to the outputs.

    Many thanks for explanation that makes sense. I was also thinking that special matrix configuration should make things more difficult.

    I usually record apeMatrix in GarageBand as IAA, and move the audio part to match the beat with snap to grid disabled.

  • edited December 2018

    Can confirm it’s perfect in GarageBand iOS, another reason why I like this DAW.

  • Anyone tested with BM3?

  • Modstep does not offer latency do compensation:

  • @OscarSouth I already asked about BM3, and _ki immediately obliged like the dude he is.

    The BM3 results are near the top of this page

  • @tk32 said:
    @OscarSouth I already asked about BM3, and _ki immediately obliged like the dude he is.

    The BM3 results are near the top of this page

    Thanks for pointing that out. Always good to know these things!

  • edited December 2018

    BTW, here is a good trick to use apeMatrix with a DAW with proper synced monitoring and recording. I use here GarageBand with midi clock enabled, apeMatrix as IAA input with Link enabled. Midi Link Sync is used to sync apeMatrix Link to GarageBand midi clock with an offset correction, here set to + 20 ms. This allows for nice monitoring and recording, as you can see in screenshots (it was for illustration, can be better with + 18/19 ms if you zoom in, must be adjusted depending of what is used in apeMatrix). Not AU related so slightly off topic, but can be useful for IAA Linked apps, for GB but also Cubasis. Note that the same issue exists with Ableton Live and Reason though Rewire. It’s a good practice to always check for offsets and add some correction if needed, before or after recording/rendering.

    ApeMatrix recording with Midi Clock Sync slider set to + 20 ms

    Here is the same source recorded with no correction in Midi Link Sync (slider set to zero):

  • edited December 2018

    Just checking: did I hear that this is fine in AB (with an output, like Garageband or Loopy)? Should be, looked into it recently, but while we're on the topic would be good to get a second option!

  • @Michael I think i also checked 2 AB tracks recorded into Cubasis, midi fed by Cubasis according to the AB session - and found a problem with the latency not beeing corrected - but cant find result images.

    I will test again tomorrow with Auria Pro (or even loopy if you prefer - if i can export the wavs to Auria Pro for measurement, have to read Loopys manual to record/export :) )

    I am not using AB Beta, just have the regular shop version.

  • @_ki said:
    @Michael I think i also checked 2 AB tracks recorded into Cubasis, midi fed by Cubasis according to the AB session - and found a problem with the latency not beeing corrected - but cant find result images.

    I will test again tomorrow with Auria Pro (or even loopy if you prefer - if i can export the wavs to Auria Pro for measurement, have to read Loopys manual to record/export :) )

    I am not using AB Beta, just have the regular shop version.

    Ah yes if the host doesn't listen to the latency info from AB it won't work. Loopy, at least, should though

  • I‘m on it, the session plays in AB3 and sounds synchronus when not connected to another app.

    I could only get one track over to AB3, when selecting the other for the second track there was a huge offset not heared in AB3 itself.
    Now i try with Looy Hd, but can‘t get any sound even though AB3 is routed and the AB3 mixers are pulsing... Have to tra harder with Loopy, didn‘t use it for some years (sorrry)
    At least i alrady found the pads export options

  • edited December 2018

    @Michael Here is apeMatrix playing dry Ruismaker Kick drum recorded in GarageBand though Audiobus, with both synced via midi clock. First track is apeMatrix straight to GarageBand, and second track has Maxima added in the chain inside Audiobus:

  • @_ki thanks for the in depth analysis. I’ve seen this problem many times but never really tracked it down. It’s become standard procedure for me to check the start points of all my iPad loops that I transfer to Ableton.

    For the trick with keeping rozetta to the right of the AU3 synth...do all the Rozettas have to be to the right of all the synths? Or just to the right of their respective synth?

  • edited December 2018

    Same thing with Loopy, first loop Ruismaker dry, second loop with Maxima, perfect compensation.

    @Michael Now we need Loopy multi loop export :D

    Blocswave don’t do any correction, using sample slip feature is needed.

  • @Janosax said:
    Can confirm it’s perfect in GarageBand iOS, another reason why I like this DAW.

    Yes I would notice the GB seemed to support delay compensation whereas in some other apps the timing seemed off

  • @_ki said:
    I‘m on it, the session plays in AB3 and sounds synchronus when not connected to another app.

    I could only get one track over to AB3, when selecting the other for the second track there was a huge offset not heared in AB3 itself.
    Now i try with Looy Hd, but can‘t get any sound even though AB3 is routed and the AB3 mixers are pulsing... Have to tra harder with Loopy, didn‘t use it for some years (sorrry)
    At least i alrady found the pads export options

    Thanks! Ah yeah, I think you may be using pre-3.2.7; there was a bug fixed in 3.2.7 which caused some shenanigans (the exact ones you described - big lag, and sometimes no sound at the other end). Correct me if I'm wrong =)

    @Janosax said:
    Same thing with Loopy, first loop Ruismaker dry, second loop with Maxima, perfect compensation.

    Good-o!

    @Michael Now we need Loopy multi loop export :D

    Yeah, that we do. Coming soon!

    @Janosax said:
    @Michael Here is apeMatrix playing dry Ruismaker Kick drum recorded in GarageBand though Audiobus, with both synced via midi clock. First track is apeMatrix straight to GarageBand, and second track has Maxima added in the chain inside Audiobus:

    Huh - yeah, looks like GB is ignoring Audiobus' latency info, although it would appear to support it when it's doing the hosting itself.

  • _ki_ki
    edited December 2018

    @Janosax and @realdawei
    The test sound you used in the loopy and garageband test is not so suitable to hear or visualize short time differences well - its better to use a very, very short pulse.
    You can verify this by intentionally offsetting the notes for the second instance by 1/64 - with such a long signal only a kind of phasing or cancelation will happen.

    .

    In my tests i use a short pulse generated by Ruismaker in the following way:

    At 1/64th offet at 160bpm (23ms), even with the pulse signal you don‘t hear two clear destinct sounds, only a short-delay sound effect applied to one pulse, sounds like castanets instead of a snap.

  • _ki_ki
    edited December 2018

    @Michael With the new AB3 version i can record the AB3 output in Loopy HS - but i still have not figured out how to simultaneously record the two AB3 tracks with Loopy HD.

    I found some discussions about this on the Loopy forum, but no instructions on how to set it up.

  • @_ki said:
    @Michael With the new AB3 version i can record the AB3 output in Loopy HS - but i still have not figured out how to simultaneously record the two AB3 tracks with Loopy HD.

    I found some discussions about this on the Loopy forum, but no instructions on how to set it up.

    You mean recording multiple different pipelines to different tracks at the same time? Loopy doesn't do that right now - it just mixes everything together into one stereo feed. Loopy Pro will be a bit more sophisticated.

  • The new AB3 version records with latency compensation in Auria Pro and also Cubasis

  • To all host devs => If the latency compensation is not already implemented and you don't have Fac Maxima please contact me. I'll send you a free code for Fac Maxima (which delivers latency compensation information) and be glad to help with testing and support :)

  • edited December 2018

    This is a post of a message I sent to @FredAntonCorvest , regarding my latency issues using Maxima. Maybe @j_liljedahl can shed some light on this. Anyone else seeing this?

    OK. Had another play around this morning. It seems it’s maybe not related to Audiobus as I originally thought.
    Weirdly, I discovered the problem exists an all channels, whether AudioBus or audio from an AUM channel, and depends more on where the main Out is positioned in AUM.
    In the picture below, the audio channels are bussed to a Master Out on bus A, but if the master Out is in the first, left most slot in AUM, then the latency is present on any audio channel with Maxima inserted.

    If I slide the master Out to an AUM channel, to the right of a channel being processed by Maxima, then the latency is NOT present in those audio channels.
    There is no latency on any channel in the picture below, with the master Out in the most right slot, in AUM

    I hope this description is clear enough and helpful. Maybe the AUM developer could clear this up.

    Thanks
    Graeme

  • @gsm909 said:
    This is a post of a message I sent to @FredAntonCorvest , regarding my latency issues using Maxima. Maybe @j_liljedahl can shed some light on this. Anyone else seeing this?

    OK. Had another play around this morning. It seems it’s maybe not related to Audiobus as I originally thought.
    Weirdly, I discovered the problem exists an all channels, whether AudioBus or audio from an AUM channel, and depends more on where the main Out is positioned in AUM.
    In the picture below, the audio channels are bussed to a Master Out on bus A, but if the master Out is in the first, left most slot in AUM, then the latency is present on any audio channel with Maxima inserted.

    If I slide the master Out to an AUM channel, to the right of a channel being processed by Maxima, then the latency is NOT present in those audio channels.
    There is no latency on any channel in the picture below, with the master Out in the most right slot, in AUM

    I hope this description is clear enough and helpful. Maybe the AUM developer could clear this up.

    Thanks
    Graeme

    Super interesting, I’ll use that trick. I’ll test with AUM beta and report to @j_liljedahl

    @michael could you please report to GarageBand team the issue with AB latency compensation info not being used?

  • @_ki said:

    @Janosax said:
    Very interesting. So you mean that Rozeta stuff has to be on the right of sound generators? This is an odd bug. Perhaps AUM is able to indicate how to compensate audio latency via midi only when AU source is loaded first, as each AU gives latency info to the host.

    In the case where the bug happens, there ahould be no latency compensation needed at all, there is no AU effects plugin that could delay the signal. Its the midi data that arrives too late, whatever the reason is. If Xox is right of the Ripplemakers, all is in sync as shown in the screenshots of the latency compensation test with the four waveforms - it does not epend on the AUs itself, just the order.

    The current app store version of AUM does not take care of the order of execution of AUv3 nodes in regards to MIDI-routing dependencies. The current beta version of AUM does this correctly, and also passes the MIDI between AU/IAA nodes directly within each buffer cycle, giving sample perfect timing (if the involved plugins are implemented correctly and makes use of the timestamps).

  • edited December 2018

    @_ki said:
    @Janosax Implementing latency compensation for a free routing matrix configuration like ApeMatrix is a very complicated task, i have no idea if it is possible at all.

    In AUM or DAWs the path the audio may take is fixed by the way the mix-busses and sends are connected and flow to the ouput, also its fixed where the plugins are located in this path, only the send-levels may change, but not the path itself. For each of the signal path there is a defined latency compensation. Adding a new plugin with latency while playing probably results in small glitches while adjusting all the delays - i didn‘t verify that (yet)

    Yep, this is exactly how it works. AUM calculates the current latency at each point in the whole signal chain, and then inserts compensating delays to make it all line up at the outputs. This has to be redone each time the configured signal chain changes, for example adding a bus send/dest/source, and in the current beta also connecting MIDI between AU nodes.

    Note that for plugins generating MIDI from audio analysis (FAC), it gets quite tricky. Often the plugin needs a small window for the sound analysis, meaning there's a short delay between audio and generated MIDI. The only way I can think of to compensate for that would be if 1) plugin delays the audio signal in equal amount and reports the latency to the host, and 2) to mark the receiver of such delayed MIDI as having an equal amount of latency, so that its audio output lines up with the audio going through the analysis plugin. and 3) the receiving plugin might receive MIDI from multiple sources, which means that some of those MIDI streams should also be delayed before reaching the plugin. I haven't yet figured out any way to make this "just work" automagically.

    In ApeMatrix, the routing and leveling is free-form - with a simple touch you can dial in or remove a connection to the output and change the order of the signal flow. Each of the matrix level combinations might need another latency adjustment for its part signal parts.
    Changing latency on the fly is probably not possible without audio glitches (buffers have to be repeated when latency gets longer, or thrown away if latency gets shorter).
    Adjusting the ouput to the maximum possible latency running through all plugins would not really help with the changing latency of signal path taking a more direct way to the outputs.

    I also don't see how this could be solved in an app like apematrix while still keeping the ability to instantly "reconfigure" the dependency graph as happens when new connections are made. Probably better to make the order of execution clear to the user, for example left->right and up->down and then allow re-arranging of the items.

Sign In or Register to comment.