MIDI Tips

From: Lord of Wolves [email protected] Reply-To: [email protected] >To: [email protected] >Subject: [VST-Mac] USB MIDI (was Re: Pluggo) >Date: Fri, 26 Jan 2001 00:35:10 -0800 > >At 9:16 AM +0000 1/25/01, NYMo [email protected] wrote:

> >Hi Orren, I've got my G4/533 Mp on the way too...what will you use for a midi interface?? You know, that's a really good question. :) I've had a B&W G3 for a few years now (got the first rev. 1s off the >line) and I've been using 2 MIDIsports. But I really must say that I >don't like them, I find them flakey, and I don't trust midiman's >drivers (yes, even the brandest spankingest newest ones, that I have, >that supposedly solve everything). Since they are working (mostly) I >don't *have* to run out and get a new MIDI interface, but I really am >considering it. > >Steinberg's Midex looks good, but I heard they are holding up >releasing mac drivers until we get a new congress in the US in 2003. >;) I also am looking seriously at the Emagic interfaces. VERY >seriously (I'm a Soundiver user as well). I'd personally only go >with the MOTU USB MIDI interfaces with Digital Performer, but a lot >of people do get them to work with Cubase, and well.

MIDI TIMING
I have tried this out on various combinations of track/module/channel > > assignments. > > The first time I noticed this effect....the 4 x piano 16th arpeggios >were all > > on *different* VST midi tracks (vst midi tracks 1 to 4 >inclusive)...but all > > assigned to the *same* midi channel....

> >This will actually slow down the Midi stream, as running status can't be >used across tracks - if all the notes were from one track, assigned to one >channel, then running status would strip one byte of each note on & you'd >be >a third up on your timing already.

> > >and controlling one channel on a > > Roland JV3080 module...whilst the 32s were on a *single* midi track >(5)...and > > assigned to a *different* midi channel on the same Roland 3080. >Assigning > > *different* midi channels for each 16 part did not steady up the 32 >part. > >It wouldn't. Same reason as above. > > >

The four piano 16th parts play steadily enough to be usable on their >own. > > When de-muting the 32s part, the piano parts get a fraction sloppier >(but > > still usable), but the 32s are all over the place...sounding like >randomized > > drunken triplets. On muting the piano parts one by one...the 32s tighten >up , > > until when playing alone..they are steady as programmed. In this test, >only 5 > > midi tracks are playing at maximum. > > > I then entered the same note data, but as 32nd piano parts, and a 64th > > percussion, and halved the overall tempo....but no change or >improvement. > > I have re-inputted all the data several times from scratch...done the >same > > experiment...but no change. > >

It doesn't matter what internal resolution you're using, the transmission >times will remain the same. > > >

Now here is the *weird* bit: > > I can copy and paste the same 16ths data...to 4 more midi tracks (6 to >9 > > inclusive)...and the same midi channel on the 3080 as the original piano > > parts...mute the original 16th parts on midi tracks 1-4, and play the 4 >new > > piano parts simultaneously with the 32s.....and now the timing sounds >OK, > > *including* the 32 percussion parts!!!! > >

This is showing 2 things... 1, that Cubase reads down the page, so your >drums are being sent first, and2, that the tone module has a faster >response >time to drum sounds than to regular pitched instruments - not really a >surprise, manufacturers do that when their chip-set isn't fast enough, to >gain 'apparent' pacing. It is, of course, much more noticeable when the >drums get sloppy. > > >

Yesterday, I did the same experiment on a different computer with the >16th > > parts on an Ensoniq MR Rack, and the 32s playing back on a Kurzweil > > K2500...same effect. However today, I tried the same experiment ... the >16th > > parts went to a Roland JD990 module and the 32nd percussion parts to an > > Alesis DM5 drum module...and everything was fine! > >

A drum module will always have a faster response time, same reason as >above, >but this is also showing that spreading the data across 2 modules lessens >the load on each - another indication that it isn't Cubase that can't keep >up, it's the modules. > > >

So as of yet I cant tell if its the midi timing in VST which is the >culprit, > > or the midi timing resolution in the synthesizer hardware itself. I am >still > > a tad baffled as I haven't found a *completely* repeating trend as of >yet, > > except using the Roland 3080. > >

I hope this helps to understand the underlying trend. >One thing to think about...back in the old Atari days, quite often you'd be >playing only one part per midi device - now we all ask them to do half the >arrangement or more, and the poor under-specced hardware just can't keep >up. >The manufacturers are always interested in more polyphony, more sounds, >rather than getting the damn things to be able to stream their Midi buffers >faster. Even though the speed limit for one Mac serial port isn't all that >fast compared to the modern musician's requirements, it's still not the >slowest part of the chain. >Steinberg's new Midi Interface may help towards achieving this goal, but >we're still going to be at the mercy of the tone generator's buffer. > > >

One other thing while I am in here. I recall a thread awhile back >dealing > > with latency on the Sonorus studi/o card. Any clues as to how to set >this up > > to get the theoretical minimum (of 6 mS or so?) without either >(a)crashing > > the computer, or (b) getting loud'n'nasty distorted splatty farting >sounds > > each time I hit stop during playback? (I've pretty much tried everything >so > > far without any joy). > >

...and to switch subject, as far as I'm aware the only way to do this is to >have a FAST Mac - I can't get mine down that low, I have an old beige >G3/300 >MT, upped with an XLR8 G3/400. In the Studi/o control panel there is an >option to halve the latency - one-way only, it's asynchronous, down to 3ms >(can't think of the exact wording & I don't have that machine in front of >me). The trouble is, that some Macs simply don't like that option & will >fart &/or crash all day long. Others will just sail it. Annoyingly, mine's >the first type - and actually, as I used to test for Sonorus back in the >Marc Lindahl days, that's WHY the switch is in there:-) >Try it both ways. First start with a higher latency setting & try halving >it. Then try the same latency without the halving (you get what I mean, so >you've set the same value each time, but one has been halved to get there) >(Damn, that's still clear as mud, isn't it;) >OK try setting latency at e.g. 1024, then set it at 2048 and halve it. Is >that better? >See which allows you to get the lowest throughput.

 

Now, I know that this comes up every so often, that the Mac gets a slagging >for its Midi timing, and I am not going to join the debate as to whether >the >old Atari was more stable. > >BTW, VST5 has a much better timing engine in it. I have a test song which >we >use in-house to check the 'apparent' timing of various devices by driving >them to the absolute theoretical port-speed limit & its playback is the >closest I've ever heard to accurate. There isn't a PC we've tested yet that >can play it, but actually that's cheating a bit because the PC's absolute >port speed is slower than the Mac. > >However, you have always to bear in mind exactly _what_ you are asking the >machine to do. > >Let's take your example... >You send a stream of single notes to one sound module (this is, of course, >taking no account whatsoever of how long it takes the module to respond to >the message, which can be anything from 7 - 30 ms depending on >model/manufacturer.) > >Midi is a serial transmission, every note-on takes 1 millisecond to >transmit. So does every note-off - something most people forget. (I'm not >interested in Running Status here, by the time you're running a complex >track, it becomes less important) > >If you have your 5 notes all happening at once, you've got a 5ms lag from >the first to the last - if your notes are all exactly one 16th or 32nd long >- you're doubling that lag by having the note-offs also occur exactly on >the >beat. >Add your next 4 tracks & you've generated a potential 18ms spread between >the first & last note on - and that's if the receiving module can process >at >ANYTHING LIKE the speed you can send it down the serial port, most of them >are nowhere close to keeping up - and we haven't even mentioned how good >the >Midi translator box is at keeping the stream going. > >It's always possible that the tone module's rolling DVA (Dynamic Voice >Allocation) isn't getting enough time to release the oldest note in time >for >the newest note to be triggered, so you could actually be running out of >polyphony even with apparently only half the maximum number of notes >running. Any given sound will have a minimum gate-time that the system will >hold onto it before it can let it go to perform another task. Drum sounds >are notorious for this, as they can have a fixed gate-time of up to 500 ms, >even though the sound itself may be shorter. > >It is perfectly possible, by a little judicious juggling (nice alliteration >there G ;-) to get a whole lot more than what you have there going in >"apparent" time. >OK, so I work for Yamaha, so that gives me plenty of time to get paid to >piss around with this kind of stuff, but without even changing the position >of a single note-on, you could randomise your note lengths, so they're >spread, change the order of the tracks on screen - Cubase reads down the >page, so put your most time-sensitive stuff at the top of the list & it'll >get sent out first. > > Get rid of all the info in the Inspector panel & put it separately in a >set-up bar at the head of the song. That'll save the bloody info being sent >out every time you cross a box. (Sorry, my pet hate, the Inspector - the >most oft-ignored source of timing problems) > > Get any controller information off the beats - throw it around at random >or >just move it all 20 ticks early. It takes most tone modules between 20 - 50 >ms to respond to a CC anyway, to stop zipper-noise. > > Get any slow-attack sounds off the beat - slide them early to keep up >apparent timing. > > If the tone module can do it, set each channel's voice-allocation to >exactly or only slightly above the actual number of simultaneous voices >you're using for that channel, so you don't get note-stealing from other >channels. > >Try borrowing a Yamaha MU 50, or preferably an MU100 or 128 - NO, I'm NOT >trying to flog them, just eliminate one source of delay - run it using the >"to Host" port directly into the Mac instead of using your translator box & >see how much faster the whole thing responds. The MUs have quite a large >buffer compared to most single/dual port translator boxes & are running on >a >much faster chip-set. (OMS thinks they're MTPs. running at 1MHz) > >Just to keep the balance & so you don't think I'm trying to flog Yamaha >gear... for a laugh you could borrow an EX5 & try the same with that - it >has a response time measured in weeks!

 

I have tried this out on various combinations of track/module/channel >assignments. >The first time I noticed this effect....the 4 x piano 16th arpeggios were >all >on *different* VST midi tracks (vst midi tracks 1 to 4 inclusive)...but >all >assigned to the *same* midi channel.... and controlling one channel on a >Roland JV3080 module...whilst the 32s were on a *single* midi track >(5)...and >assigned to a *different* midi channel on the same Roland 3080. Assigning >*different* midi channels for each 16 part did not steady up the 32 part. >The four piano 16th parts play steadily enough to be usable on their own. >When de-muting the 32s part, the piano parts get a fraction sloppier (but >still usable), but the 32s are all over the place...sounding like >randomized >drunken triplets. On muting the piano parts one by one...the 32s tighten up >, >until when playing alone..they are steady as programmed. In this test, only >5 >midi tracks are playing at maximum. >I then entered the same note data, but as 32nd piano parts, and a 64th >percussion, and halved the overall tempo....but no change or improvement. >I have re-inputted all the data several times from scratch...done the same >experiment...but no change. > >Now here is the *weird* bit: >I can copy and paste the same 16ths data...to 4 more midi tracks (6 to 9 >inclusive)...and the same midi channel on the 3080 as the original piano >parts...mute the original 16th parts on midi tracks 1-4, and play the 4 new >piano parts simultaneously with the 32s.....and now the timing sounds OK, >*including* the 32 percussion parts!!!! > >Yesterday, I did the same experiment on a different computer with the 16th >parts on an Ensoniq MR Rack, and the 32s playing back on a Kurzweil >K2500...same effect. However today, I tried the same experiment ... the >16th >parts went to a Roland JD990 module and the 32nd percussion parts to an >Alesis DM5 drum module...and everything was fine! >So as of yet I cant tell if its the midi timing in VST which is the >culprit, >or the midi timing resolution in the synthesizer hardware itself. I am >still >a tad baffled as I haven't found a *completely* repeating trend as of yet, >except using the Roland 3080. > >One other thing while I am in here. I recall a thread awhile back dealing >with latency on the Sonorus studi/o card. Any clues as to how to set this >up >to get the theoretical minimum (of 6 mS or so?) without either (a)crashing >the computer, or (b) getting loud'n'nasty distorted splatty farting sounds >each time I hit stop during playback? (I've pretty much tried everything so >far without any joy). > >Thanx, >Nik > >TAT wrote: > > > > > >Hi list, > > >Has anyone come across this internal midi timing issue? Here are the > > >symptoms: (you could try this yourselves, see > > >if the same problems manifest...) > > >Here is a way of observing this effect: > > >There are 4 midi tracks up, each with a pattern of 16th-note > > >arpeggios, playing the same sound (piano) on one midi > > >channel of a Roland external module. > > > > Could you clarify this a bit please? Are you addressing 4 tracks of > > arpeggios simultanesouly to the the Roland module? > > Are you also assigning the 32s to the same module? > > > > Some Roland stuff has atrocious MIDI interfaces. Which module?

Has anyone come across this internal midi timing issue? Here are the >symptoms: (you could try this yourselves, see >if the same problems manifest...) >Here is a way of observing this effect: >There are 4 midi tracks up, each with a pattern of 16th-note arpeggios, >playing the same sound (piano) on one midi >channel of a Roland external module. (fast 16th note chords being the >effect). >I then added a new midi track, assigned it to a different midi channel and >programmed it with a 32nd note >repeating snare pattern. >When the snare pattern track is played alone (or solo), the 32nd note >snare-pattern sounds as you would expect..ie >a steady machine-gun effect. >Then start adding the 16th note arpeggio tracks, one by one...and the snare >pattern changes gradually from the >'steady machine gun effect' to an unsteady 'drunken' randomly varying fill. >To see if the problem got worse, I copied and pasted the four x 16th note >arpeggio tracks to another 4 midi >tarcks...and tried the same experiment. >I can play the 4 new copied argeggios together with the snare pattern...and >with the snare pattern sounding >reasonably steady (but not perfect), but the original 4 arpeggio tracks >still seem to foul up the timing of the >snare playback. >I have tried all the MROS ppqn settings, with no difference, "favor midi >timing" set to 'on' in audio setup etc >etc etc as well as messing with OMS settings, midi interface settings etc >etc. >I next tried the same experiment on a different computer and midi >interface..and got *exactly* the same result. >Does anyone have a clue as to whats cooking here...this is rendering the >entire application unusuable. One would >expect that a Mac with a G3 was capable of playing 5 midi >tracks...considering that my old vintage 10Mhz Atari >1040ST (from 1986) did this kind of task rock steady without a stutter, and >many many more tracks running at >once!! Is Logic Audio also as flaky as this? (as I am now sore tempted to >switch platforms after 12 years with >Cubase)! > >Computers: >(a) Power Computing clone with NewerTech G3 400 upgrade card, 256MB RAM, OS >8.6, VST 4.1, OMS 2.38, Opcode >Translator Pro midi interface. >(b) Apple Beige 333 mhz G3 minitower, 256 MB RAM, OS 8.6, OMS 2.38, Motu >Midi Express XT interface.
IMPROVING MIDI TIMING http://www.hinton.demon.co.uk/mac/macmidi.html