Announcement

Collapse
No announcement yet.

how to get multichannel w/o latency in Ableton?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • how to get multichannel w/o latency in Ableton?

    I’ve been using the AU, as I like to work with sending multiple channels from the same plugin instance to various tracks, but the timing lags a bit. The VST has solid timing, but as far as I’ve been able to figure out, is not channel-aware. What would be the best way to go about getting multi-channel midi to my tracks without taking the latency hit? I’m guessing either IAC or ReWire will be the way to go … any feedback from somebody who’s either death with this stuff previously or, say, wrote the program would be appreciated (and probably save me lot of not-particularly-fun time testing.)

    I’m curious why the AU gets a midi port but the VST doesn’t …

  • #2
    sorry, its a bit unclear (to me) what you are after…

    are you saying you want to run N4 on one track, and it to output midi to multiple ableton tracks? (e.g by sending out on multiple midi channels)

    if so, its not possible… due to ableton limitations.
    ableton will take all output (from whatever midi channels) from any vst (or max4live) and put it on midi channel 1.
    (so even if you output on channel 1,2,3,4 all messages will leave the vst on midi channel 1 )
    i.e. ableton tracks (and vsts on them) can receive on multiple midi channels, but one track can only send one midi channel.

    hence the workaround which is to send midi out via an external midi port (like IAC), and then receive it on that… but then the timing will not be as tight)


    What would be nice, is perhaps for Jim to consider a slightly different approach to N4, where different N4 VST instances actually reference the same model… say with each instance be a stack, and this is how the audio/midi is directed at a particular track
    (essentially, N4 is like a standalone app, and the N4 hooks into this)
    this would mean you could put an N4 in each track, then do the routing to the tracks from within N4.
    this approach can be seen in quite a few vsts… like kontakt.

    (i do a similar thing in max 4 live, where I put a proxy object in each track, and then use send/receive from the 'master device' which generates the messages to go to each track)

    I think this approach would be nice as, and useful even in others daws:
    benefits to me are:
    - more compatiblity with usage in standalone N4
    - n4 logic is held in one place
    - easier to work with multiple tracks as its in one place (like standalone)

    thoughts jim?

    Comment


    • #3
      It's possible, but only with the AU. Each instance of the plugin creates a virtual midi device that can be selected as the input for other tracks with a channel specification. Unfortunately, something in the way the AU works creates a consistent delay, I think around a 64th note. It's not that big a deal if everything in the Live session is being driven by Numerology, just record the midi and nudge it back (at least it's consistent ...) Unfortunately, it's pretty noticeable when sources other than Numerology are included, including Live's metronome. I'd petition Jim for a similar virtual midi device for the VST, but I suspect it's "not that easy."

      Comment


      • #4
        You don't suspect it's the virtual port that is the delay ?
        ( I would), can you test the vst using the iac bus, does that have the delay?

        Comment


        • #5
          I suspect the virtual midi device is probably what's causing the delay, although it may be an "AU thing," as Jim has indicated that the VST is generally better to use. I'll test using the AU directly and see what the timing is like that way. I'm going wait to see what I get in response to this through the rest of the week before giving IAC / ReWire a go over the weekend.

          Comment


          • #6
            So there are two issues w/ MIDI transmission from the AU:

            1. Live doesn't support MIDI from AudioUnits -- that's their issue, the API is there... So you have to use an IAC Bus. They work pretty well, but there will *always* be some latency, as an IAC Bus works like this:

            - App 'A' (or a plugin) pushes some MIDI onto the IAC Bus.
            - Then the MIDIServer process (a hidden app) comes along, reads that info, then copies it to the output side of the IAC Bus.
            - App 'B' (or the plugin's host) comes along, reads the IAC Bus output, then does what it needs to do.

            So the time from sending to receiving IAC MIDI means two process switches (from App A to MIDIServer, then MIDIServer to App B), which means at least one audio buffer's worth of delay. It sometimes isn't that noticeable (say with controllers), but with note data, you do tend to notice...

            2. Like most hosts, Live doesn't provide MIDI Timestamps to AUs. These timestamps are 64-bit values that come from the audio interface and are what is necessary to generate sample-accurate MIDI for MIDI connections over IAC buses or to hardware MIDI ports. Numerology can estimate them by looking at the CPU clock, but the CPU clock doesn't always work that great (go figure) -- thus you can get what is called 'jitter' -- some timing variations in the MIDI output, usually less that 1 millisecond. Small amounts of timing jitter is normal w/ hardware, but it really shows up when you start looking at everything on a sample accurate piano-roll grid...

            MIDI from the Numerology VST doesn't need timestamps as the VST API handles MIDI in a way such that it is always timed to a specific audio sample - thus the better timing for the VST.

            FYI: The reason Live and most other apps can't provide timestamps to plugins is related to multi-threaded rendering.

            So, if your head isn't hurting yet, here are some options:

            - To handle latency in Ableton, play with the track delays -- they are really handy.

            - Consider running Numerology standalone (for accurate MIDI timing), but you'll have to use MIDI Clock for sync.

            Also, on the 'squeaky wheel' front:

            - Ask Ableton to stop channelizing MIDI from plugins -- certainly Maschine users have the same problem?

            - After the N4 release, ping me to re-examine AU MIDI Schedudling to see if I can make it more accurate.

            Actually, wait, there are some fancy prefs in the AU to remove jitter...

            Jim

            Comment


            • #7
              Originally posted by TheTechnobear View Post
              What would be nice, is perhaps for Jim to consider a slightly different approach to N4, where different N4 VST instances actually reference the same model… say with each instance be a stack, and this is how the audio/midi is directed at a particular track
              (essentially, N4 is like a standalone app, and the N4 hooks into this)
              this would mean you could put an N4 in each track, then do the routing to the tracks from within N4.
              this approach can be seen in quite a few vsts… like kontakt.
              ... thinking about that makes my head hurt!

              -- something like that is possible -- usually it is just a simple plugin that can copy a stream of audio or MIDI from the 'master' plugin -- Pluggo used to have something like that....

              Jim

              Comment


              • #8
                I looked into ReWire, and it turns out it's just not set up to do anything helpful for me, unfortunately.

                I played around with the AU settings for a while, and couldn't provoke any noticeable changes, aside from the fact that enabling sample-accurate midi *really* gives Ableton a sad.

                In any case, it's not too big of a deal ... if I do multi-channel stuff, only working with elements from N4 AU instances keeps everything in relative sync until I record the midi to clips and nudge it around a bit.

                I like the idea of having master/slave plugins a lot ...

                I'm curious ... does the N4 AU sync better in Logic? I used it for many years, and would consider going back to it (although I did just invest in a Push.) Ironically enough, I switched to Live partially out of frustration with the lack of support for VST or any other way to get external sequencer into Logic aside from a bunch of IAC gyrations (that seems to work a bit better these days, at least.)

                Really a bummer that this should work fine if Ableton implemented it correctly. It seems to be a law of electronic music software that there's always something that doesn't work quite right for no good reason.

                Comment

                Working...
                X