Accelerate for synths

Forever, there has been a bug in superdirt that made accelerate not work properly. I am posting this here, because fixing it may change how synths sound – so please chime in.

There is an issue here: Set DirtFreqScale default factor to 1 by wimmers · Pull Request #280 · musikinformatik/SuperDirt · GitHub

Let's list what the correct behaviour should be.

  • speedFreq: 0 –> output: 1
  • speedFreq: 1, accelerate: 0 -> output: speed
  • speedFreq: 1, accelerate: 1 -> output: speed ... rising to over sustain time to (speed * 2)
  • speedFreq: 1, accelerate: -1 -> output: speed ... falling to over sustain time to 0
  • speedFreq: 1, accelerate: 0.5 -> output: speed ... rising to over sustain time to (speed * 1.5)
  • speedFreq: 1, accelerate: -0.5 -> output: speed ... falling to over sustain time to (speed * 0.5)

We have (speed * (accelerate + 1)) as an end speed.

All in all, this should sound like in samples.

There, we also have: endSpeed = speed * (1.0 + accelerate);

Now, two questions:

  • are the above what you'd expect?
  • are you sure that we should make the synth freqs depend on speed for everyone? Originally I thought that synths should not behave like samples in every way, i.e. when you set a note or a freq, you may expect that to be the way it is.

Needless to say that acceleration should work!

4 Likes

Seems right to me!

Ok, so this is merged – I hope it'll be as expected for everyone …

3 Likes