Jump to content

MB808 timings?


cheater
 Share

Recommended Posts

Hey guys,

When playing a sound, it has a certain attack time. However, every sound has a different attack time, and sometimes you can even set it - with a knob etc.

If you play multiple sounds with the same gate, they will 'top out' at different times. If you play them in such a way that they 'top out' at the same exact moment, it'll sound more 'to the point' and energetic. Otherwise you get a less exact feeling... which can sometimes be good, but not usually and not necessarily.

I'm looking over the draft spec for the 808 seq, and I can't find an answer for this question anywhere... will the sequencer allow you to compensate for this? I assume that you can't - so I'll mention some points on why it's a good thing to have...

I do understand that, from the systematic point of view, it should be the non-standard synthesizer (be it the 808 modules or something else) that should be compensating to adhere to a 'standard'. However, this would mean several things... you'd either have to use a lot of audio delay lines (which again won't be that wonderful for timing and will mess up the sound and cost a fortune), or you'd have to create a digital delay for the gates (which yet again would be worse for timing and would also cost more). And either of those will create a delay - which isn't great for syncing up to other equipment running from the same main sequencer, and usually is difficult to compensate for - especially when you're on a gig, every additional item is such a hassle! The MB Seq on the other hand could play the notes 'before' time, which would mean the notes would then be in perfect sync with the rest of the studio!

Thanks guys

Link to comment
Share on other sites

Modern DAW software allows you to apply a negative delay on the outgoing MIDI clock, this works quite well to compensate timings if really required, and it's a good idea to do it at the source (MIDI clock master), and not at the destination (MIDI clock slave), because the MIDI event timings could jitter (e.g. because a USB interface with bad timings is used), and this would influence the "quality" of derived (predicted) clocks at the slave side (result -> worse timings).

Now we could add an individual positive delay of n x 1 mS on each drum trigger, this would be a simple firmware enhancement - but I'm not sure if this is, for what you are asking for. How is this handled by other analog and MIDI sequencers? Or in other words: how should this work together with your other equipment, and which equipment exactly? (I would like to get a clear picture about the requirements, not only an abstract request)

Best Regards, Thorsten.

Link to comment
Share on other sites

When playing a sound, it has a certain attack time. However, every sound has a different attack time, and sometimes you can even set it - with a knob etc.

If you play multiple sounds with the same gate, they will 'top out' at different times.

That's normal for any synth/sample/sound source, which is why it's important to synthesise the sound/edit the sample/etc in the correct fashion according to your own taste :)

I guess what I'm saying is that fixing this is not the job of the sequencer, it's the job of the sound designer - you :D

Link to comment
Share on other sites

That's normal for any synth/sample/sound source, which is why it's important to synthesise the sound/edit the sample/etc in the correct fashion according to your own taste :)

I guess what I'm saying is that fixing this is not the job of the sequencer, it's the job of the sound designer - you :D

No.. you can't 'design' an analog sound so that it 'tops out' at the exact note, it'll always be a bit delayed.

TK: with some VST synths you can set where the sample's 'top' is, and what is before the 'top' will be played back as well, but it's going to happen in a pre-delay fashion that will be buffered.

With an 808 the problem is that each sound has a different delay till it tops out (basically a different attack time, but it can depend on some other things, like resonance creating a peak). The idea is to have it compensated somehow, and I don't see this done easily in the MB808 sound bank itself. And as you say, it's easy in the sequencer.

A fixed delay per part is a good beginning - if it can be stored together with the patch settings for the 808: so, either it should

A) be midi controlled so that you can set the delays through midi, and select that + sound settings for the 808 modules from your host sequencer (ableton etc) via SysEx

B) be coupled with the patches in the 808 module somehow...

An even better option would be if the sound module could somehow report the delays required.

Last thing: Thorsten, we are talking about very very small delays. the user won't be able to do any interaction in, let's say, 10 ms. I'm sure there's a way for 'negative delay' - even as simple as have the sequencer play what should be played those 10 miliseconds later. Then the only noticable drawback would be that UI interaction would be lagged by those 10 ms, which would be reasonable.

The question is - are you sure there's no easy way?

Thanks!

Link to comment
Share on other sites

I understand, why a delay is useful, and as mentioned above, a n x 1 mS delay can be added easily. But I still don't understand, why MB808 should provide a negative delay, if there are better methods for an exact and jitter-free compensation (master clock sent with negative delay by DAW, MB808 adds configurable, positive delays) - it doesn't matter how the delays are controlled. Stored in the patch: no problem. Changed via CC: no problem as well...

The question is - are you sure there's no easy way?

You are speaking as if you would know a perfect solution to generate a stable, negative delay at the MIDI clock slave side. Please share your wisdom! What is the exact concept?

Best Regards, Thorsten.

Link to comment
Share on other sites

No.. you can't 'design' an analog sound so that it 'tops out' at the exact note, it'll always be a bit delayed.

Exactly - Which is why you have to take the delay into account when designing the whole kit, to get the desired effect (all hitting together, or all separated or whatever suits you)

I'm not new to this ;)

Link to comment
Share on other sites

Exactly - Which is why you have to take the delay into account when designing the whole kit, to get the desired effect (all hitting together, or all separated or whatever suits you)

I'm not new to this ;)

This makes it ultra-difficult, however, to get the effect, and limits your palette as well.

Thorsten: if you have 16 outputs, and the delays are let's say d[0]...d[15] in miliseconds, isn't it possible to find the maximum, call it d[max], and play the sample that's supposed to be d[max] later? I understand this would require extrapolation, to find out what part of the pattern will be in those d[max] miliseconds. But, given the fact that the MIDI clock is usually not changing _that_ rapidly, even a linear extrapolator would suffice, wouldn't it? Especially since we're talking about very small delays, maybe up to 100-200 ms (and that's an extreme)*.

Granted.. some people who have jittery midi clocks would need to turn it off. Then they're not losing anything.

I'm not sure how many users would be in this category - i'll leave the judgement of that to you guys, since you have more experience. If there are enough people who have stable enough clocks, so they could profit from this function, it would become feasible to implement it.

Finally: if you change the attack of one sound, the group delay will change on the MB SEQ - which will be impossible to compensate in real time using the host.

*with rhythm sounds, I find that longer attacks and decays are generally less useful, since if they're longer than those 200 ms, they're dictated by the rhythm and not the sound: so they should be set in musical units, and not in time units. There's nothing stopping anyone from using an envelope that has a long attack triggered by one gate, and that stage will transfer into a 'short' attack triggered by a second gate. Then just sequence the long-attack gate this 3/16 before the actual 'hit', or something like that. Fairly simple and works when you change the tempo: when you change the tempo +-10% the 'long' attack will still happen and be audible. If you want to change the tempo more, it's good to let the envelope know of the current tempo and the musical lenght of the attack, so that it can calculate the attack rate. Here comes the whole argument of having your modulation related to tempo - digitally controlled tempo synced analog envelopes anyone? Sounds like a nice project..

Link to comment
Share on other sites

I would love to see a tempo-synced envelope generator feature implemented into the SEQ someday, using the CV outs. :)

I don't see a need for delay on the sequencer tracks, though... if sync'ing up the peaks were an issue to me, I'd just modify the analog circuit to have a variable trigger delay at the input.  (I'm not sure how this would work exactly but I'm pretty sure a very simple drop-in logic type circuit could do this.)

Link to comment
Share on other sites

Granted.. some people who have jittery midi clocks would need to turn it off. Then they're not losing anything.

I'm not sure how many users would be in this category - i'll leave the judgement of that to you guys, since you have more experience. If there are enough people who have stable enough clocks, so they could profit from this function, it would become feasible to implement it.

It seems that you assume, that features which can be easily realized in a "closed system" (like a VST host), could also be realized with an external device.

Wrong!

We always have jitter, regardless of the quality of your MIDI interface. Compensation is CPU intensive, error prone, and leads to compromisses.

Just think about, why external MIDI clock synchronisation of a DAW is mostly not supported (anymore), or why experts don't recomment to use it...

...but you expect, that such a feature could be easily implemented into MBSEQ/MB808?

But, given the fact that the MIDI clock is usually not changing _that_ rapidly, even a linear extrapolator would suffice, wouldn't it?

Please run the MIDImon application, and tell me how accurate the BPMs are displayed. Does the value ever change during - let's say - 5 minutes?

The advantage of a non-extrapolated based MIDI clock synchronisation is, that temporal delays or jitter (caused by DAW, OS or MIDI interface) only affect the external sequencer a single moment, and not over a long term of one second, or the whole song.

Stable timings is what we really want - and thats what has been implemented in all MIDIbox sequencers

Finally: if you change the attack of one sound, the group delay will change on the MB SEQ - which will be impossible to compensate in real time using the host.

With your proposal: yes, we would have a problem when delays are changing.

With my proposal: no - let's say you set the negative clock delay to -100 mS in your DAW. It's a fixed delay, and you won't change it during the song(s) is/are running.

For the instruments controlled by MB808, you will be able to change the positive delay on-the-fly before or after a drum sound is changed/triggered. By default you would set it to +100 mS, this results into 0 mS delay. Probably you would also store this default value into your patterns.

If you want to play the drum 20 mS earlier, just use +80 mS for the individual drum instrument.

I would love to see a tempo-synced envelope generator feature implemented into the SEQ someday, using the CV outs. :)

I would propose to use the MBSID V2 firmware (see also the rsf Kobol demos). Tempo controlled envelopes (and LFOs) is one of many features of this firmware. You don't need to stuff a MBHP_SID module... ;)

For MBSEQ it would be a nice feature as well, but it can never be so fast (and flexible) like already implemented in MBSID V2, and I don't really want to do all the work twice, if a more powerful solution already exists.

Even transforming the envelopes to MIDI events would be possible (with some hacking), however the MIDI bandwidth would limit the possibilities.

For CV, I would say, it's a perfect solution :)

(Just to highlight it again: because the MBSID V2 firmware provides a much more powerful infrastructure - just think about the modulation capabilities!)

Best Regards, Thorsten.

Link to comment
Share on other sites

This makes it ultra-difficult, however, to get the effect,

Oh I must have missed the memo that said playing a musical instrument should be easy  ;D

and limits your palette as well.

I could list "limitations" like this all day (I bet that you've often wished you had one more envelope or one more osc)... but we can find new ways to use the tools we have to achieve different results.... it's just part of the artform that is synthesis.

Link to comment
Share on other sites

I could list "limitations" like this all day (I bet that you've often wished you had one more envelope or one more osc)... but we can find new ways to use the tools we have to achieve different results.... it's just part of the artform that is synthesis.

Very well said!

Best Regards, Thorsten.

Link to comment
Share on other sites

stryd: using instruments should be at least hassle-free. Do you think people would play drums if they couldn't compensate for the time it takes their hands to reach the drums? That would sound silly at most ;) Or how about a guitar that needs to be retuned every 20 seconds... a hassle, but the guitar can still be played... ;)

Sure, you can do 'everything' with enough effort; the question is whether the amount of effort is still sane!

I would love to see a tempo-synced envelope generator feature implemented into the SEQ someday, using the CV outs. :)

I don't see a need for delay on the sequencer tracks, though... if sync'ing up the peaks were an issue to me, I'd just modify the analog circuit to have a variable trigger delay at the input.  (I'm not sure how this would work exactly but I'm pretty sure a very simple drop-in logic type circuit could do this.)

lars, I think the MB SEQ side is 'compatible' with that already.

Just do this: use two gates, and two envelopes, trigger gate 1 one quarter earlier than gate 2. Gate 1 goes to env 1 with a long attack, gate 2 goes to env 2 with a tiny attack. Gate 1 has no decay and 100% sustain. Mix gate 1 and gate 2, bearing in mind that you have to put gate 1 through a resistor so its peak (or rather, 'plateau') is at - let's say - 25%, and so that gate2's peak is at 75%, or what ever is missing to get 100%. Done! Will work for small tempo changes (+/- 10%)

TK: Never too late for such a sanity check. I don't 'expect' anything - i'm just asking :)

What if we give the MB_SEQ a 'margin' of x ms in the VST host, and MB_SEQ always delays all gates by x-d[n] miliseconds? Then you get 'negative' delay without prediction; of course, you can never exceed x ms attack on your sounds.

In the future, maybe, the midibox platform could see some nice VST-USB integration... and then MB_SEQ could be synced sample-accurately to the host. Then changes in group delay wouldn't be so noticable, I think :)

I'm planning on getting into VST dev once I get a pc (I just moved to a new country!) - maybe then I could help if that's needed :)

Link to comment
Share on other sites

What if we give the MB_SEQ a 'margin' of x ms in the VST host, and MB_SEQ always delays all gates by x-d[n] miliseconds? Then you get 'negative' delay without prediction

Thats what I explained three times, please read my answers again.

In difference to your explanation, I'm using the common wording which you can also find in your DAW documentation.

In the future, maybe, the midibox platform could see some nice VST-USB integration... and then MB_SEQ could be synced sample-accurately to the host. Then changes in group delay wouldn't be so noticable, I think :)

Illusory

I'm planning on getting into VST dev once I get a pc (I just moved to a new country!) - maybe then I could help if that's needed :)

I'm not interested in a cooperation with you - too different interests, and too time consuming ;)

However, the most clever way would be to integrate the sequencer engine completely into the VSTi, and to communicate with external devices with the given interfaces (MIDI, USB, doesn't matter... it only depends on your programming skills)

Best Regards, Thorsten.

Link to comment
Share on other sites

Thats what I explained three times, please read my answers again.

In difference to your explanation, I'm using the common wording which you can also find in your DAW documentation.

Oh - sorry - for some reason I thought what you meant was, just delay the separate gates. Then set the group delay by hand in the DAW to the maximum delay you're having on the gates.

But in that case, that's great!

Illusory

Hmm, yeah... but one can wish.

I'm not interested in a cooperation with you - too different interests, and too time consuming ;)

However, the most clever way would be to integrate the sequencer engine completely into the VSTi, and to communicate with external devices with the given interfaces (MIDI, USB, doesn't matter... it only depends on your programming skills)

Best Regards, Thorsten.

TK, no worries, if i try to come up with something, i'll try to get as far as possible without bugging anyone. I understand you are devoting as much time as possible already, and would only love to contribute and make your life easier one day if I somehow can.

Cheers!

Link to comment
Share on other sites

  • 3 weeks later...

Hmm..

Cheater, have you taken any measurements regarding the exact differences between receiving a trigger pulse and reaching maximum amplitudes for each instrument?  (this is what we are talking about, right?)  Although I never made any official measurements of this it was always my impression that, aside from the clap, each instrument reaches it maximum amplitude within 1-2 milliseconds after the trigger pulse is received.  If this is not the case I'd be curious to know the measurements for each instrument, and it's at least possible that simply adjusting the value of a capacitor here and there could compensate for this difference...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...