Got it. I just learned something about SubNoise!


To larger or smaller amounts this is a factor in nearly all DSP. Flanks will normally be quantised to the sample-clock. This can affect timing a lot (as in the case of SubNoise) in small amounts of jitter (as in Enveloppe or SndBuf which will only start at clock pulses) or even in harmonics (as in the case of hard-sync).

In some cases the effect is so minor it's not worth bothering with; I'm not that concerned about highhat samples being on average half a samp late, but in others it might be worth looking into. For example if osc A modulates osc B using hard-sync the actual reset will only be dealt with at the next clock pulse. If we are aware of osc A's phase and period we can calculate when the correct moment was, calculate what phase osc B should be at by now and set it to this, instead of a phase of 0.

In this simple example that should only lead to a cleaner and -probably- more "pleasant" sound. In cases where feedback is involved not compensating for this behaviour will mean that a digital system in practice will behave wildly different from the idealised model we imagined.

This is one of those surprising cases where a analogue system like the chips used in some FM chips meant for telephone modems will be far more stable and predictable than our digital systems, despite the common idea those are "perfect" or even "too perfect". Complex FM feedback on those chips can sound both extremely predictable and stable because while they may have far more noise this isn't as large a influence as the added complexity of quantising all modulations and resets to the sample-clock.

Rounding errors occur in time, as well as in amplitude. Our "strongly timed" code may not be bothered by those that much, but a 44.1KHz sample clock certainly is.

Yours,
Kas.