Vienna Symphonic Library Forum
Forum Statistics

182,347 users have contributed to 42,220 threads and 254,759 posts.

In the past 24 hours, we have 3 new thread(s), 11 new post(s) and 58 new user(s).

  • Logic Multiport. Ways to reduce MIDI bulk even more?

    last edited
    last edited

    Regarding the Logic Environment setup for VE-Pro-5 Multiport templates. There is the possibility that a large session will cause too much MIDI traffic. I think some of this has been addressed in other threads; I am trying to gather all issues into a single thread, and demonstrate some solutions in the Logic Environment that I don’t think have been posted here (tell me if I’m wrong!)

    Maybe a new Logic version or an AU3 Vienna Ensemble plugin will make all this unnecessary.

    If anyone has the energy, what do you make of this? One thing I do not know is whether the Vienna Ensemble plugin already filters extra MIDI events in the ways described below.

    TL;DR—extra note offs generated by Logic in the Multiport template can be suppressed. One cc99 message per Vienna Ensemble MIDI port change would be a nice feature and can be accomplished in the Environment using “Filter Duplicate Events.”

    It seems that Vienna Ensemble is expecting cc99 messages for each MIDI message. For example, if Logic X is set up with a VE Ensemble instance hosting two Kontakt plugins and sends MIDI data:

    1. 176 99 0/144 60 127/176 99 0/144 60 0 (Vienna Ensemble port 1, MIDI note 60 on/off)
    2. 176 99 1/144 60 127/176 99 0/144 60 0 (Vienna Ensemble port 2, MIDI note 60 on/off)
    3. 144 60 127/144 60 0 (No Vienna Ensemble port address, MIDI note 60 on/off)

    Message 1 is routed to Vienna Ensemble plugin receiving MIDI on “MIDI IN 1.”

    Message 2 is routed to Vienna Ensemble plugin receiving MIDI on “MIDI IN 2.”

    Message 3 (without a cc99 message) is routed to Vienna Ensemble port 1 plugin receiving MIDI on “MIDI IN 1.”

    If Vienna Ensemble in a Logic X Multiport setup was able to address all MIDI messages following a cc99 message to the plugin indicated by the initial cc99 message MIDI traffic would be reduced considerably. This can be accomplished in the Environment by separating the cc99 data stream from the regular input MIDI stream (see below)

    MIDI note off messages in Logic X can be hard to predict. In the current VE-Pro-5 Multiport Templates a note on/off message entered in real time on a track sending to Vienna Ensemble Port 1 using a MIDI keyboard will cause the following output from Logic:

    176 99 0/144 60 127/176 99 0/144 60 0

    However, the same MIDI event, when recorded into a MIDI Region and played back by Logic, is sent to Vienna Ensemble as:

    176 99 0/144 60 127/176 99 0/144 60 0/128 60 64

    The penultimate note-off message 144 60 0 is not shown in the Logic Environment but is generated by the Transformer Environment Object when transforming a note off into a cc99 message. During playback Logic sends “real” note off messages in the 128-143 range.

    I may be mistaken but I think the most efficient way to address MIDI to specific Vienna Ensemble MIDI ports would look like this:

    176 99 x Only once for Vienna Ensemble to direct MIDI to the correct Vienna Ensemble MIDI Port. All additional cc99 messages and unnecessary note-off messages suppressed.

    This is accomplished in the Logic Environment as follows (see photos here, click on a photo and then the "i" to read a caption) :

    A) Route the top output of the multi-instrument to a series of transformers with these properties:

    1. A transformer where all MIDI note events become cc99 events
    2. A filter of all cc99 messages with a value of 0. This removes note off messages
    3. A transformer making all MIDI events cc99 events with the value equivalent to the (Vienna Ensemble port number - 1). This ensures MIDI events are sent to the correct address.
    4. A transformer set to Filter Duplicate Events. This prevents multiple cc99 messages with the same value from being sent. Each multi-instrument should be attached to this transformer

    B) Connect the second output of the multi-instrument directly to the Vienna Ensemble Software Instrument.

    Would this work? Is it possible for Vienna Ensemble to only require a single cc99 message per change in Port?

    VE Pro 5.4.14074, OSX 10.11.3, Logic 10.2.2, tested on a MacBook Pro 8,2 and two Mac Pro machines.

    here

  • Why bother !

    Paul told us a few days ago that VSL handling AU3 is on it's way


    MacBook Pro M3 MAX 128 GB 8TB - 2 x 48" screen --- Logic Pro --- Mir Pro 3D --- Most of the VI libs, a few Synch... libs --- Quite a few Kontakt libs --- CS80 fanatic
  • I agree why bother.

    Except, until the AU3 version is available, and we don't know when that will be, multiport is still the solution I am looking at.

    I know the VSL folks are asking for patience, but a timeframe--months? year? would be helpful.

    Also, maybe it is known, but not known to me:

    1. Would an AU3 implementation mean no need for cc99 addressing or other Environment tricks?
    2. Would an AU3 implementation solve the extra note off messages generated by Logic?
    3. Will Logic be including multiport support for Audio Units? Maybe I missed it but I haen't seen confirmation of this, and am pretty sure there will not be another Logic update until May or June, and that will probably be more bug fixes than new features.

  • last edited
    last edited

    Having done more research I do see the discussion from WWDC at about 45 min that presents the "cable" value in scheduleMIDI routines.

    However, I see no official announcement that Logic will support this in Audio Units. Of course the assumption is that Logic 10.2+ will.

    As I look at building huge Logic templates with Vienna Ensemble Pro of course an Audio Unit Extension that has multiport function embedded that avoids the current Multiport Logic Environment is very desirable.

    But, waiting for Vienna to announce a feature (Audio Unit multiport Vienna Ensemble plugin) at an undetermined point in the future that uses a feature not explicity supported in Logic (Audio Unit Extensions' scheduleMIDI 'cable' value), is not do-able.

    I am working on testing multi-machine systems using Logic X and all-ethernet audio/MIDI routing. Building a multiport Logic X template, necessary as of this writing, only to discover the new features will be available soon, would be too bad. As would waiting for Audio Unit 3 multiport compatibility only to find it unavailable...

    I will ask the Logic devs about this as well, but some positive confirmation and timeline for the functionality outlined above from Vienna is most appreciated!


  • I believe that the 512 events per buffer limit applies to the environment as well, so your suggestion still wouldn't prevent a buffer overflow and truncation.

  • last edited
    last edited

    @MS said:

    I believe that the 512 events per buffer limit applies to the environment as well, so your suggestion still wouldn't prevent a buffer overflow and truncation.

    Ah! Thank you very much for that info. Very helpful Martin. I can test that buffer limit....


  • FYI in Logic 10.2.2 I got a maximum of 2048 valid MIDI events per buffer. Any number higher than 2048 causes the transport to stop.

    This test was done by counting the number of MIDI events output from External MIDI tracks in Logic X per buffer time. 64 tracks. Once the number of note events at a single time point per track rose above 32 Logic would freeze when the transport hit that point.

    MS--What is the 512 event per buffer limit you cite? Maybe Logic 9?

    To be clear, when considering reducing the amount of MIDI necessary in the multiport template I was less concerned with truncation than a loss of timing accuracy when many MIDI events are being generated, as well as simple reduction in data bulk.

    Also note--2048 is a lot of MIDI events, probably more than would occur at one point in any session. However if there is a lot of CC data 2048 events is not impossible.

    MS--Maybe the AU3 version of VE Pro will render this discussion obsolete. However, if the multiport cc99 messages could be reduced as discussed would VEPro consider eliminating the necessary cc99 message-per-midi-event in favor of a single cc99 message per change in instrument port instrument?


  • last edited
    last edited

    @Cyril Blanc said:

    Why bother !

    Paul told us a few days ago that VSL handling AU3 is on it's way

     

    Well, that was 30 months ago.


  • last edited
    last edited

    @Cyril Blanc said:

    Why bother !

    Paul told us a few days ago that VSL handling AU3 is on it's way

     

    Well, that was 30 months ago.

    I had a dream......... M.L.K.


    MacBook Pro M3 MAX 128 GB 8TB - 2 x 48" screen --- Logic Pro --- Mir Pro 3D --- Most of the VI libs, a few Synch... libs --- Quite a few Kontakt libs --- CS80 fanatic
  • last edited
    last edited

    A few comments...

    1. If VSL spends any time on this they would be better served to get AU3 sorted out. It should be noted, however, that I have not as yet seen any AU3 plugin with multiple port functionality operate inside of LPX. I know LPX is supposedly AU3 capable since a while now, but until I see one in action that way I won't believe it.
    2. Regarding midi traffic, I think its important to point out that the translation from CC99 into actual midi ports appears to happen inside the VEP AU plugin. So CC99 messages are not sent over the wire to VEP slave.
    3. There is still, however some limitations in LPX about the number of midi events that can be processed through certain "funnels". I have read that this is a limitation of 512 events per buffer, which is actually quite a lot and I don't see that most people should be running into a problem with that, but its not clear to me. One limitation of the multiport setup is that a lot of midi tracks funnel through a single instance of the AU plugin. So, if people are running into this issue, have they tried using more instances of the AU plugin (with a few more VEP instances), to see if they still have this issue when spreading the events out to several "funnels"?
    4. In my opinion a lot of speculation has been made about the above limitation, but may actually be more related to NoteOff problems caused by bugs in the LPX enviornment. I have created new multiport templates that work around those NoteOff bugs, they are available at the following link and I encourage everyone to try them: Improved Multiport Templates
    5. The suggestion about having CC99 messages be latched is interesting, but note that since this is processed in the AU and the AU is handling all incoming messages from a large number of channels and ports, then it may not actually reduce the traffic that much. If there is only one port coming in, then there won't be enough events to matter. If there are a lot of ports coming in simultaneously, then all the CC99's need to be there and you won't get any savings anyway. So its kind of a moot point.

    I would appreciate feedback about my improved templates if anyone tries them out.


  • last edited
    last edited

    @Another User said:

    Will Logic be including multiport support for Audio Units? Maybe I missed it but I haen't seen confirmation of this, and am pretty sure there will not be another Logic update until May or June, and that will probably be more bug fixes than new features.

    Supposedly since a few versions back, LPX has AU3 support.  AU3 is supposed to include multiport capability, similar as VST3.  But there is very little information given from Apple about what exactly they did in terms of AU3 support.  We don't actually know for sure whether it has been updated to incluce the abitilty to specify the ports in the LPX gui.  I haven't seen any AU3 plugin yet to test it out with to find out.  So theoretically...Apple has made LPX so that you can build an AU3 plugina and it will work. As to whether LPX will let you configure the ports in addition to midi channels per track and interface with the AU3 plugin that way, is yet to be seen.