SynthMaker

Osc sync still isn't right... possibly!

Archive · 2009 6 old posts

From the original SynthMaker forum (2004–2014), with its members’ names and dates.

Panoply ·

I use sync in a lot of synths where phase is important ... like any bass synth, or a kick drum synth, where the transient of a note *must* be the same each and every time, for the patch to sound like it isn't constantly being tweaked.

Firstly, even putting together an example to illustrate what I'm talking about has been hard, given that very few of the stock envelopes or custom envelopes work as I want, but it is possible to demonstrate what I am talking about using the ADSR4, as it doesn't display the bizarre semi-monophonic behavior that nearly every other envelope does when it comes to repeating a single polyphonic note 'c1,c1,c1,c1', before the release tail has finished... but perhaps for another thread. I am happy to muddle along on my own and try to make an envelope that does work correctly and allows me to overlap voices on the same note without retriggering - which obviously is what anyone who knows a thing or too about programming bass would be looking for ... ! But I've included the behaviour I'm unhappy about for your amusement in the envelope ... just switch from the ADSR4 to the ADSR and start playing repeated notes which are faster than the release tail.

So back to this bug.

In the example, I also found something which rather than just being bizarrely set up, is a bone fide bug to do with Osc sync, which is that Osc sync is not dealt with on a per voice nature. The end result of this is exceptionally annoying, as having found that the ADSR4 does allow me to overlap notes, the sync pin affects all voices at once ... in other words, it doesn't only affect the new voice coming in, it also resyncs the old voice going out - which results in a click.

Looking more closely, I realised that the ADSR4 isn't really allowing me to overlap notes at all. Its just reopening the amp, but maybe this will be enough for people to realise what I'm actually talking about.

So. To issues. I suspect that these two issues constitute a large number of the issues people have with 'clicking' envelopes, because, of course, one of the first things a lot of people want to do is build a 'simple' bass synth to get to grips with the encironment. I know my way around DSP, and have been trying to to this in SM for a long time. Compare the bahaviour of SM voices and envelopes to another synth, say Massive, or Cronox and resync on start is set, voices overlap properly, wheras unlike the nearest I can get using the ADSR4, voices have differing phase when they overlap . The state of the envelopes and the sync pin in the release mean that this isn't really possible to build a simple bass synth, IMO. Maybe it is possible to reach a point where coding the envelope correctly is viable, but its hardly desirable to have to go through all that just to get an envelope that works normally ... but the sync pin is a straight bug, IMO ... there needs to be a way maybe to differentiate between a tweak to sync on a per voice basis, link syncing to another osc, or merely at start of voice which does not affect other voices, IMO.

On the other hand, maybe I've become confused and phase is correct, and does restart on every voice ... but then the implementation of the stock envelopes is preventing me from establishing whether this is the case. It really, really needs to change!

Here is another test for anyone interested. 'Break' your MIDI input by assigning a static pitch to the osc, and play different rapidly repeating notes. Note how the phase overlaps now? Here is the bottom line. A Polyphonic envelope should not be retriggering when the same note is played twice, unless polyphony has been exceeded, because that is monophonic behaviour. Its possible to argue that the standard ADSR module is 'like this by design', but then, the documentation is wrong, as 'hold' functionality is incorrectly described. The unit is bugged.

Panoply ·

Here is an even clearer demonstration of the issue.

These are my own envs (which is why I demonstrated using stock first - as I'm sure there will be beta bugs in mine, however, this isn't a beta bug).

This is set up for 'infinite release'. Retrig, anything like that is not involved in any way.

When the boolean is set to true in the release stage the note goes on for ever. When I press the same note again, nothing happens. What should happen is that another voice is instantiated and played at the same time, which would be clearly audible. That would be standard behaviour, as it is implemented in any other synth. That is what occurs on any other note in this .osm. However, in this case the signal continues on unaffected when the same note is played twice, the envelope isn't even retriggered with the osc carrying its phase over.

MichaelBenjamin ·

i did not find the boolean at a quick look, your env looks quite complicated. if its just about synth envelope/voice trig behaviour you would normally expect its tricky at first. you dont need all the gates and boolean stuff, since sm spawns and deletes the voices just fine with only the env primitive. best simple 4 stage env for my purposes is the 1.7 oddson/infuzion adsr-retrig (search in the examples forum), theres also a fixed asm version. this envelope just does and retriggers what i want from it without any clicking and bugging. the rest is up to the m2p module. even if you want to code your own envelope with some specials, the above adsr retrig may be a good starting point to look at.

xmidiman ·

Panoply wrote: When the boolean is set to true in the release stage the note goes on for ever. When I press the same note again, nothing happens. What should happen is that another voice is instantiated and played at the same time, which would be clearly audible. That would be standard behaviour, as it is implemented in any other synth. That is what occurs on any other note in this .osm. However, in this case the signal continues on unaffected when the same note is played twice, the envelope isn't even retriggered with the osc carrying its phase over.

The reason you don't hear a new voice is because you have the "Use a new voice when triggering a note that is already playing" set to false in the MIDI to Poly module...Needs to be set to True.

Also the way you guys are using sync seems a little strange, or at least I have not seen it used that way... Please check the attached file for a quick example of how I've seen people around here use sync, the basic idea is just put together. Using my example I didn't really see(hear) the issue with the adsr.

Panoply ·

Ahhhhh, you mean the 'Using samples' boolean.

Thankyou - may I ask why on earth it is called that though? Don't think I would have found it :/ How about, a 'full polyphonic' as without it enabled no synth is properly polyphonic?

As to my usage of sync - lol, yes, I'm very aware of the use you put up - I'm attempting to reset phase on midi trigger - this does it perfectly now thanks.

If you are dealing with very fast repeated bass notes, you need this step. I've been using it in synth design for over half a decade now, and it is found on very very many synthesisers under one name or another. 🙂

Thankyou for your help 🙂

Michael - man - the boolean is the only boolean in the section labelled 'release stage'. It really isn't hard to find. 😉 I wasn't trying to argue that it was the best envelope, - in fact possibly the worst - I was using it to demonstrate the issue I was talking about, which is easily demonstrated when the release tail is infinitely long. The reason it is as it is is that each stage is log/lin/exp this way (in the unamed sections you'll find this, following the output from the code in the attack and decay stage), and it is very much in progress. Without the boolean set as suggested, I can well see that someone might interpret the behaviour of any envelope in SM as 'clicking' without a grasp of how voicing worked in the software, especially as the steps needed to remove the issue are not documented in any way, and indeed the correct switch on the Midi 2 Voice unit isn't even shown in component reference. Despite using the software for a year and half (excluding a considerable amount of time spent with the demo), and several years experience using other similar software, completing part of my BSC in software engineering using SM, and over a decade studying DSP, this step was totally unclear to me. What hope for the total nub? Surely, at the very least the default behaviour of this toggle should be 'true'?

xmidiman ·

Panoply wrote: Ahhhhh, you mean the 'Using samples' boolean.

Thankyou - may I ask why on earth it is called that though? Don't think I would have found it :/ How about, a 'full polyphonic' as without it enabled no synth is properly polyphonic?

As to my usage of sync - lol, yes, I'm very aware of the use you put up - I'm attempting to reset phase on midi trigger - this does it perfectly now thanks.

If you are dealing with very fast repeated bass notes, you need this step. I've been using it in synth design for over half a decade now, and it is found on very very many synthesisers under one name or another. 🙂

Thankyou for your help 🙂

I thought that was strange too, but by default when you look inside a MIDI to Poly module, the last boolean on the bottom of the M to V primitive, click on it, you will see what I was talking about the "Use a new voice when triggering a note that is already playing"...because its not labeled on the primitive...

edit: I actually thought that "using sample" boolean was put in there from the original poster... I checked the module awhile ago and see it is in there by default, so my bust! 😉

Your probably right that it's misleading... Unless someone can help us understand the reason for "using samples"?(maybe like sample playback?)

Wrote something here? To have a post removed or your name hidden, write to [email protected].

Before your first post

A few rules keep this a friendly place. You agree to them once.

Shown next to what you post, here and in the app. It doesn’t have to be your real name: 3–24 lower-case letters, digits or _ (capitals become lower case, spaces become _).

    Then your post goes up straight away.

    Delete this reply?

    Open it in SynthMaker?

    It goes on the track you’re editing there, in place of that track’s sound, and into My sounds. Your other tracks stay as they are.

    Want to keep that track’s sound? Start a new song in SynthMaker first (Song › New song), then open this.

    Report this reply?

    Only the developer reads reports. The person isn’t told who reported them.

    What’s wrong with it?

    Block this person?

    You won’t see their posts and replies here any more. They aren’t told, and you can unblock them at any time.

    People you’ve blocked

    Their posts and replies are hidden from you. Unblock someone to see them again.

    The community rules

    A few rules keep this a friendly place. Everyone agrees to them once, before their first post.