PDA

View Full Version : logic midi bandwidth limitation?



sharks
07-18-2010, 05:08 PM
hi,


fantastic product! this is totally changing how i work in the studio. :)


i seem to have run into an issue, however. i'm currently using touchosc on my ipad, connected to my mac through osculator, which is an input to logic 9.


i'm currently trying to send 8 osculator parameters on 8 different midi cc's from touchosc (four x-y pads), but it seems that is too much at once, as the resulting midi cc's sent to my synth seems to get seriously delayed / dropped if i try to modulate more than two parameters at once.


there's three areas where i can think that might be getting choked up:


1. ipad (touchosc) <-> mac (osculator), via 802.11n


2. osculator <-> logic


3. logic <-> synths


i don't think it's #1, because the 'quick look' shows all the parameters responding quickly enough. i don't think it's #3 because when i try modulating those 8 cc's with a regular old usb midi keyboard, it works fine. so, i'm thinking there might be an issue between how much midi data osculator can send to logic at once.


so, am i missing something here, or are there limitations to how much data osculator can process at once?


thanks!

camille
07-19-2010, 10:54 AM
Hey Sharks,


This is an interesting problem.


On sunny days, OSCulator can process ~ 80,000 messages/second before beginning to drop them.

Which is a lot.


The MIDI spec limits the rate of communications to 31.5 kBauds (a bit more than 4 ko/s). Knowing that a MIDI CC message is about 3 octets, we deduce that we can send roughly 1300 messages per second. I don't think that speed limit is enabled on the local computer (when two software applications send data to each other), so we should be able to send these messages without problem.


Now, if you can hear some delay, dropping, it could be that too many unprocessed MIDI messages are waiting to be delivered to Logic that is taking too much time to process the input.


I have two questions:

1. Have you managed to modulate all the parameters with your MIDI keyboard with the same number of parameters (8)?

2. Could you please check what is usage of your CPU while you do move all the controls at once? Open the "Activity Monitor" application and look at the CPU usage for OSCulator, Logic, and the overall CPU usage.


I would be happy to have a try and see if there is something that can be optimized somewhere.

If you have a reduced Logic session that you could share with me that shows this problem, I will be happy to try on my computer.


Cheers,

Cam

camille
07-19-2010, 12:41 PM
OK, just made some tests and the MIDI is well transmitted between OSCulator and any application that processes MIDI.

The problem you have is that the amount of messages sent to Logic is much higher than using a simple MIDI controller, thus overloading Logic's processing.


I would recommend you search a solution to lower the CPU usage of your virtual synth, or use a bigger audio buffer (at the cost of a small amount of latency added).

sharks
07-22-2010, 05:53 PM
thanks for the quick response. in regards to your two questions, 1. yes i am able to succesfully modulate the 8 parameters with my midi keyboard without any messages being dropped, and 2. the logic process tops out at about 27% when i'm doing the modulation. also, i tried adjusting my audio buffer, but the issue still remains, so i don't think it's a cpu bottleneck.


i should note that the synth in question is a roland juno-106, which has a very early midi implementation... however, i am experiencing the same bottleneck problem when i try to modulate multiple parameters for softsynths as well.


my hunch is that, like you said, logic simply can't process the amount of midi messages it's receiving from osculator. i'm guessing that the midi keyboard works because it only sends a message when the cc changes... so 127 potential values. compared to touchosc/osculator, which i am assuming converts every osc message into a cc.


could it be the case that resolving osc->midi cc is simply sending too many messages for logic? for example, if 10 osc values resolve to one midi cc value, then that same midi cc value would be sent 10 times? if that's the case, is there a way to get osculator to send midi cc only when they change?


thanks again!