Synths midi reaction time constant?

Pulling out your hair? Don't know what to do or where to go? Ask in here.
Forum rules
READ: VSE Board-Wide Rules and Guidelines

If your Help request has been solved, please edit your first post in order to select the Image Topic Icon to let others know your topic has been solved.
john909kid
Supporting Member!
Supporting Member!
Posts: 94
Joined: Fri Apr 07, 2006 10:51 pm

Synths midi reaction time constant?

Post by john909kid » Sat Jun 06, 2009 4:02 pm

I understand that different hardware synths all exhibit a different reaction time/delay to incoming midi note data, and it can vary depending on the manufacturers hardware. This can be up to 15ms on older units.
What i'd like to know is if a synth does have a slow reaction time of 15ms for example, will this 15ms delay be constant to all incoming midi notes? ie it will always have a delay of 15ms, which won't vary/jitter?
Some sequencers allow you to compensate for this delay, and allow to adjust midi data in a plus or negative value, but if the synths reaction time varies, then this delay offset is not much use....

User avatar
shaft9000
Supporting Member!
Supporting Member!
Posts: 2042
Joined: Tue Nov 14, 2006 3:13 am
Real name: Dave
Gear: Whips chains waxes oils dildos DMT TNT the LHC, and a black rubber duckie
Band: moneymoneymoney
Location: VanNuys, CA USA
Contact:

Re: Synths midi reaction time constant?

Post by shaft9000 » Sat Jun 06, 2009 4:37 pm

ime MIDI response can vary dramatically, depending on how many CC's and channels you are running through one cable.Whether it's because of the synth or not it's all about the slowest link in the chain.
Dave Smith did not build the MIDI spec so that every signal on every channel maintains jitter-free thoroughput, regardless of data load. He was working with primitive 8-bit protocols.
I've found MIDI to be good for one or two things at a time but beyond that - it's doing more than it was designed to do: trigger sounds from another unit remotely. Go beyond this and the effects are quite noticeable.
2600.solus.modcan a.eurorack.cs60.JP8.Juno6.A6.sunsyn.volcakeys.jd990.tb303.x0xb0x.revolution.
999.m1am1.RY30.svc350.memotron

shaft9000.muffwiggler.com <- singles & mixtape
shaft9000.bandcamp.com <- spacemusic album
youtube.com/shaft9000 <- various synth demos and studies

User avatar
Christopher Winkels
Supporting Member!
Supporting Member!
Posts: 690
Joined: Wed Sep 17, 2008 12:52 am
Location: Burlington, Canada, eh.

Re: Synths midi reaction time constant?

Post by Christopher Winkels » Sat Jun 06, 2009 6:47 pm

Slightly off topic, but I recall an interesting piece written in Keyboard magazine about 20 years ago.

In it, the author pointed out that in an orchestral setting, the time delay between one end of orchestra (say, the cellos) and the french horns or percussion can be well in excess of the delays imposed by chaining synths together through MIDI. They may have a delay of between 10 to 30 milliseconds (possibly more in some larger venues), yet players tend not to perceive this as a problem despite what our intuition might suggest. This doesn't begin to answer your question, but I just thought I'd mention it, since in a dense mix of sound the smearing of timing can be something of an advantage rather than a drawback.

User avatar
cornutt
Moderator
Moderator
Posts: 2117
Joined: Sun Dec 02, 2007 6:03 am
Gear: 6th
Location: Rocket City USA
Contact:

Re: Synths midi reaction time constant?

Post by cornutt » Sat Jun 06, 2009 10:08 pm

A MIDI Note On message is three bytes long (assuming no running status): there's the command byte (the one that tells the receiver that the message is a note on), the note number byte, and the velocity byte. Each byte is eight data bits, plus one start bit and one stop bit. So a Note On message is 30 bits long.

The MIDI spec transmits at 31,250 bits per second on the cable. 30 / 31,250 = 0.96 milliseconds. That's the lower limit on how quickly a MIDI message can respond to a player's action (key press, pad hit, etc.). So a really good implementation should be able to respond in about 1 ms. But that requires a really good implementation, at both ends.

A typical 1980s implementation of a MIDI receiver probably would have buffered up the bytes to be picked up by a run loop. With 1980s hardware, say a Z80 running at a clock rate of 1 MHz, you wind up with a run loop running at say 10 ms (the run loop is handling stuff like panel/keyboard scan, software envelopes and software LFOs). The MIDI data can arrive at any point during the run loop, so there is jitter between that random arrival time and the point when the run loop checks for incoming MIDI. When the run loop picks up the buffered commands, it has to call a routine that looks for an available voice, steals one if necessary and permitted by the voice mode, and then sets up whatever DACs are necessary to drive the analog components for the note to be played. Say 2-3 ms to do all of that. And it might vary depending on how many voices are in use, whether it has to steal a voice, and if the synth is running in a multitimbral mode.
Switches, knobs, buttons, LEDs, LCD screens, monitors, keys, mice, jacks, sockets. Now two joysticks!

User avatar
HideawayStudio
Supporting Member!
Supporting Member!
Posts: 1387
Joined: Fri Jan 09, 2009 10:41 pm
Real name: Dan Wilson
Gear: 163 tubes in a large wooden box!
Band: Shortwave
Location: UK
Contact:

Re: Synths midi reaction time constant?

Post by HideawayStudio » Sat Jun 06, 2009 11:08 pm

cornutt wrote:A MIDI Note On message is three bytes long (assuming no running status): there's the command byte (the one that tells the receiver that the message is a note on), the note number byte, and the velocity byte. Each byte is eight data bits, plus one start bit and one stop bit. So a Note On message is 30 bits long.

The MIDI spec transmits at 31,250 bits per second on the cable. 30 / 31,250 = 0.96 milliseconds. That's the lower limit on how quickly a MIDI message can respond to a player's action (key press, pad hit, etc.). So a really good implementation should be able to respond in about 1 ms. But that requires a really good implementation, at both ends.

A typical 1980s implementation of a MIDI receiver probably would have buffered up the bytes to be picked up by a run loop. With 1980s hardware, say a Z80 running at a clock rate of 1 MHz, you wind up with a run loop running at say 10 ms (the run loop is handling stuff like panel/keyboard scan, software envelopes and software LFOs). The MIDI data can arrive at any point during the run loop, so there is jitter between that random arrival time and the point when the run loop checks for incoming MIDI. When the run loop picks up the buffered commands, it has to call a routine that looks for an available voice, steals one if necessary and permitted by the voice mode, and then sets up whatever DACs are necessary to drive the analog components for the note to be played. Say 2-3 ms to do all of that. And it might vary depending on how many voices are in use, whether it has to steal a voice, and if the synth is running in a multitimbral mode.
As Cornutt says it's down to the MIDI decoder implementation. Some synths, older and newer, are much better than others. This was partly due to some designs have pretty much dedicated decoders. Some designs where known to be extremely responsive and some darn right sloppy. Some early implementations were entirely in hardware! Hardware samplers were particularly prone to showing their midi timing weaknesses due to the often heavy midi loading in multi-timbral setups.

The AKAI S900 and S950 were known to have lightning fast midi response - you could fire drum tracks full of 32th's at them forever and they would be rock solid - do the the same with an EMAX II or Emulator II and they were all over the place!

....shame really because the E-mu samplers always sounded better! :D

User avatar
Overgear
Junior Member
Junior Member
Posts: 111
Joined: Wed Sep 20, 2006 12:27 am
Gear: AX-73, S3000, MFC42, K5000R, K4r, K1, Nord 3R, MKS-50, Juno-106, JP-8000, CS-10, CS-15, TVS-1, PP SEM(x2), Rogue, Source, Pro-One, P-600, Mopho
Location: VA

Re: Synths midi reaction time constant?

Post by Overgear » Sat Jun 06, 2009 11:18 pm

Nice, cornutt! Thanks for the great in-depth explanation.

john909kind,

Are you referring to the Sonar thread? If you are, that was me making those bold statements. But, understand I am speaking from the experiences with my particular system. I have found that individual device response has been the most important factor to getting tighter response through midi. I have found a certain amount of consistency to the delay but it is still a compromise. There is jitter between notes. The notes don't hardly ever start at the same time, repeatedly. I can, however, adjust for the consistent delay.

For example, appropriately, using the Prophet-600:
Using a single key, 16th pattern in different places over a minute, I recorded the audio and checked it, compared to the midi. The first note was 8ms slow and from there it varied between 8-13ms. I would also see inconsistent audio note length because the note on and off messages being so jittery. But...if I nudged the midi data ahead 7ms and recorded again, the audio was mostly 1-3ms off, according to where I wanted it to fall. I did find one note that was 6ms off in the middle of the second of three times the pattern ran. Most were acceptably close, though. There was a slight increase in length consistency. Not groundbreaking amounts. Just enough to notice.
Image
The top is the midi track(re-quantized), the middle is the 7ms correct recording, the bottom is the recording with no correction. The midi start time is where I want the audio to fall. The corrected one is 1ms slow and the other is just over 9ms off. It may not sound like much to some but it save me hours of cut and correct :roll: work.

That's just note info, though. Like cornutt and shaft9000 refer to, start adding more data and you can increase that delay. On a related note, I mapped all the front panel knobs I could on the Nord 3(which is super accurate-1ms) to the Mod wheel Morph Assign, just for the h**l of it. When I held a key and turned the mod wheel, It just kinda freaked out. The midi totally couldn't handle it.

The Kenton Pro 2000mkII is the one that was 15ms slow. The Encore Expressionist is near the same.

When I record midi to audio, I will archive all other tracks except the necessary ones. That way, Sonar can focus and get out of the way so I can worry about the offset/delay issues.

Again, this is just my personal experience.

EDIT-added thread link.

User avatar
BoxPhenom
Junior Member
Junior Member
Posts: 110
Joined: Fri Mar 20, 2009 10:00 pm

Re: Synths midi reaction time constant?

Post by BoxPhenom » Sat Jun 06, 2009 11:47 pm

In my experience the Expressionnist takes about 11-13ms to process MIDI to CV, If I recall correctly it varies for trigger types or CV/gate vs Hz/v.
The jitter is under 3ms when sending only monophonic note info.

MIDI slop can be a good thing sometimes, drum patterns with my MIDI Linndrum have a different character when it's used as a module vs synced. It's tigher when synced via MIDI, and super tight when synced via an audio loop of its sync tone in Live.

User avatar
Overgear
Junior Member
Junior Member
Posts: 111
Joined: Wed Sep 20, 2006 12:27 am
Gear: AX-73, S3000, MFC42, K5000R, K4r, K1, Nord 3R, MKS-50, Juno-106, JP-8000, CS-10, CS-15, TVS-1, PP SEM(x2), Rogue, Source, Pro-One, P-600, Mopho
Location: VA

Re: Synths midi reaction time constant?

Post by Overgear » Sun Jun 07, 2009 1:06 am

BoxPhenom wrote:In my experience the Expressionnist takes about 11-13ms to process MIDI to CV, If I recall correctly it varies for trigger types or CV/gate vs Hz/v.
The jitter is under 3ms when sending only monophonic note info.

MIDI slop can be a good thing sometimes, drum patterns with my MIDI Linndrum have a different character when it's used as a module vs synced. It's tigher when synced via MIDI, and super tight when synced via an audio loop of its sync tone in Live.
Those are damn near the numbers I got! That's good to get confirmation on that. Thank you! One more and we can call it a pattern.

As far as the Linndrum is concerned, I get where you coming from(mine's non-midi). But...I wouldn't call midi slop good..ever. I'd call it acceptable, at best. :D
Besides, sounds like what you are getting is accuracy, not slop. :twisted:

User avatar
BoxPhenom
Junior Member
Junior Member
Posts: 110
Joined: Fri Mar 20, 2009 10:00 pm

Re: Synths midi reaction time constant?

Post by BoxPhenom » Sun Jun 07, 2009 1:38 am

I can totally let it go but for me slop starts at 1ms ;)
Maybe the very small difference in numbers we observed is due to the interface, I use an Echo Layla's sole MIDI outstraight into the Expressionist, could be software too, tests were done in Live 7.

To define more clearly what I mean by the different character of the Linn as a drum module is that when it's sent many notes close together or together, the timing accuracy lowers, similar, I suppose, to a drummer's behavior playing the similar pattern.
Last edited by BoxPhenom on Sun Jun 07, 2009 1:42 am, edited 1 time in total.

Steve Jones
Active Member
Active Member
Posts: 565
Joined: Wed Apr 23, 2008 10:40 pm
Real name: Steve
Location: Sydney
Contact:

Re: Synths midi reaction time constant?

Post by Steve Jones » Sun Jun 07, 2009 1:39 am

Lots of good timing tests and comparisons on this site:

http://innerclocksystems.com/
Synthesizer service tech since 1982.
Synth parts and service, Sydney Australia.

User avatar
Overgear
Junior Member
Junior Member
Posts: 111
Joined: Wed Sep 20, 2006 12:27 am
Gear: AX-73, S3000, MFC42, K5000R, K4r, K1, Nord 3R, MKS-50, Juno-106, JP-8000, CS-10, CS-15, TVS-1, PP SEM(x2), Rogue, Source, Pro-One, P-600, Mopho
Location: VA

Re: Synths midi reaction time constant?

Post by Overgear » Sun Jun 07, 2009 3:03 am

BoxPhenom wrote:I can totally let it go but for me slop starts at 1ms ;)
Ooh, I'm with that! :twisted:
Maybe the very small difference in numbers we observed is due to the interface, I use an Echo Layla's sole MIDI outstraight into the Expressionist, could be software too, tests were done in Live 7.
I have to re-test mine(and everything :roll: )because I updated(bugfixes,etc) Sonar and the numbers have changed :evil: . The Kenton was around 13 but is now more like 15. Meh, that's Sonar. The Expressionist used to be 11. The Kenton I've been switching between the Motu midi express 128 and the midi on the Fireface. The Expressionist is on the Motu, right now. I think I'm moving both to the Fireface. While the fw/usb difference was small, it's enough. On the good side, my manual audio offset dropped 97 samples :D .
To define more clearly what I mean by the different character of the Linn as a drum module is that when it's sent many notes close together or together, the timing accuracy lowers, similar, I suppose, to a drummer's behavior playing the similar pattern.
You mean triggering the drums by Live sequence, not internal. Like how the internal can lay the kick/snare right on top of each other, midi will trigger them more in succession. Right?
Steve Jones wrote:Lots of good timing tests and comparisons on this site:

http://innerclocksystems.com/
Love his site! I use a variation of his tests.
Hopefully he won't mind, but I love this quote from him:

"It is important not to confuse random timing errors with any concept of human feel.
It is not feel in any sense because the timing variation is random.
It is simply software and hardware not keeping time."

=D> Thank you, sir. Thank you...nice and simple.

User avatar
BoxPhenom
Junior Member
Junior Member
Posts: 110
Joined: Fri Mar 20, 2009 10:00 pm

Re: Synths midi reaction time constant?

Post by BoxPhenom » Sun Jun 07, 2009 3:48 am

Overgear wrote:You mean triggering the drums by Live sequence, not internal. Like how the internal can lay the kick/snare right on top of each other, midi will trigger them more in succession. Right?

Yes, when MIDI notes are sent from Ableton it's sloppier and more and more so when adding notes.

It's very convenient to use drum maps in Ableton to control the Linn, it really makes it easier for me to create interesting patterns, but if I want to get the tightest timing I need to use the Linn in pattern mode with external sync from a looped synced signal in coming from Ableton, this is the tightest rhythms I've seen on screen, they're practically perfect!

User avatar
Shreddie
Junior Member
Junior Member
Posts: 232
Joined: Tue May 12, 2009 7:50 pm
Gear: Alesis Andromeda, Fusion 8HD: ART SGX Nightbass SE: Kawai K5000s: Yamaha A3000 V2, EX7, FS1R, PSS-480 (Don't laugh, it rocks!) and 4 planks.
Location: UK

Re: Synths midi reaction time constant?

Post by Shreddie » Sun Jun 07, 2009 11:54 am

There is also the factor of jitter coming from a computer sequencer itself. I can't remember whether it was on the SoS forums or in a recent issue of the magazine but it was clearly stated that audio buffer sizes do have an effect on MIDI data... Basically, if you have a big buffer, you'll get more MIDI jitter when a sequence is playing back.

Strange I know, I didn't think that MIDI could be affected by your ASIO buffer sizes but apparently it can.

As for synths having jitter or timing issues, as others have said, they vary alot. My EX7 is tighter than a nuns c**t with MIDI but the original Motif which followed it was (supposedly) pretty bad.

john909kid
Supporting Member!
Supporting Member!
Posts: 94
Joined: Fri Apr 07, 2006 10:51 pm

Re: Synths midi reaction time constant?

Post by john909kid » Sun Jun 07, 2009 2:58 pm

Shreddie wrote:There is also the factor of jitter coming from a computer sequencer itself. I can't remember whether it was on the SoS forums or in a recent issue of the magazine but it was clearly stated that audio buffer sizes do have an effect on MIDI data... Basically, if you have a big buffer, you'll get more MIDI jitter when a sequence is playing back.
This is true, and the whole reason I originally asked was because of Logic Pro's midi timing. It seems at buffer sizes of 1024 Logic's jitter can be as much as 76 ticks. At buffer settings of 32, midi timing is better.

In most sequencers you have a parameter to adjust midi delay to compensate for slow reacting midi hardware, hence why I asked if this delay would be constant. If the reaction delay is not constant, how can you reliably compensate in the sequencer?

However as a Logic Pro user, i've found another hurdle to jump over.... Logic's midi timing output is not constant.
Have a look at this image. Its of a midi pattern hard quantised to quarter notes, triggering a hihat sound on a TR707. I recorded 5 takes of this midi pattern as 5 tracks of audio. This was recorded with a buffer setting of 32 for tracks 1,2,4 and 5, but a buffer setting of 1024 for track 3. See how tracks 1, 2, 4 and 5 even with the same buffer settings, they all start at different times.
Also note how track 3 recorded with a buffer of 1024 has started to record audio, before the starting midi pattern at bar 2 !!!!!!!
So what i'm seeing is Tr707 jitter on reaction time added to Logic Pro's inconsistent midi timing output.
707_105.jpg
I've also recorded a small number of audio tracks, which are of hard quantised midi 16th note sent to the 707's hihats. Randomly playing two audio tracks together gives different results. Some will play back tighter than others, while others will flam really badly.

If the reaction time on the 707 was constant, this could be compensated for by midi delay in Logic.... problem is that Logic midi output is jittery at best.

Going to dig out the Atari very soon.....

User avatar
Overgear
Junior Member
Junior Member
Posts: 111
Joined: Wed Sep 20, 2006 12:27 am
Gear: AX-73, S3000, MFC42, K5000R, K4r, K1, Nord 3R, MKS-50, Juno-106, JP-8000, CS-10, CS-15, TVS-1, PP SEM(x2), Rogue, Source, Pro-One, P-600, Mopho
Location: VA

Re: Synths midi reaction time constant?

Post by Overgear » Sun Jun 07, 2009 7:59 pm

john909kid wrote:In most sequencers you have a parameter to adjust midi delay to compensate for slow reacting midi hardware, hence why I asked if this delay would be constant. If the reaction delay is not constant, how can you reliably compensate in the sequencer?
If your DAW only has one midi delay setting and you have multiple midi ports with gear, you're gonna have to use a curve. Whichever device is quickest, that's what gets set in the midi delay compensation. I don't know if there is a DAW that has per-port compensation. Someone tell me if there is, please. For the gear that is still in need of compensation, you take the amount of delay from that specific device(not port), subtract the amount you entered in the delay compensation, and then move the midi data ahead that amount. Or...you can leave the short-sighted(in my opinion :wink: ) "delay compensation/timing offset" setting at zero, learn each devices delay(minus jitter), and compensate at the track level.

Yes, Shreddie is completely correct, but knowing and accounting for the device delay first can allow me to better deal with the rest of the chain(midi interface --> sequencer/DAW.) I find the best buffer settings that allow me to not have to worry about changing them according to conditions. I set them once. I know that may not be feasible for some because of how they operate. That's just me. After I account for the rest of the chain, I can go back and fine tune my device delay numbers. Driver updates, DAW updates, and such mean I need to go back and re-check these numbers.

Jitter, in general, I just have to be ahead of. I have to consider it when calculating the device delay otherwise I'll get notes playing ahead every once in a while.
Going to dig out the Atari very soon.....
Ah, the modern computer. Jack of all trades, master of none :evil: .

Post Reply