Post by gwenhwyfaer on Dec 31, 2006 5:11:10 GMT
So the Fusion has lovely, beautifully anti-aliased oscillators... until you turn on hard sync, at which point they become an icky grungy mess above about 500Hz. I couldn't understand why hard sync sounded so grungy and aliasy on the Fusion; by rights, it should be as well anti-aliased as the Micron, if not better, especially since the Fusion outperform's the Micron's aliasing everywhere else.
And then, playing with the sync options tonight and rolling them across the three oscillators into Ring Mod and Filter, it finally occurred to me what's going on. So here's my guess:
The Micron only offers the choice of syncing oscillators together. Since it generates the oscillators itself, it knows the exact phase of those oscillators, and can work out exactly where between the samples the sync pulse should be, with complete certainty. So whilst its sync won't be quite alias-free, it can be as good as the rest of the system, because it never has to handle anything remotely unpredictable.
The Fusion, on the other hand, can accept not just another oscillator as a sync source - it can take the output of a ring modulator or the whole voice instead. And even if it syncs to an oscillator, that oscillator might be switched to the external inputs, or to a noise source... or it might be syncing to itself - try it sometime, it sounds weird! That means that the Fusion's sync algorithm has to be designed to work when there's no convenient clock pulse to sync to - all it can do is look for a pair of samples either side of 0, and try and guess where between those samples the zero crossing actually occurred. That makes it considerably more complicated - and A LOT more versatile - than most synths' hard sync functions!
But the downside of getting sync working at all with arbitrary signals is that the sync algorithm doesn't perform nearly so well in the simplest case - that of one oscillator syncing to another one. Bugger. Oh well.
It would be cool if a future OS upgrade added a little bit of code to detect the "we're syncing to a waveform we don't have to guess" case and choose a different sync algorithm for it. But I would class that as a feature upgrade, because finally I understand that hard sync aliases because of the (frankly, amazingly cool) design choice Alesis made in implementing it, and not because of any bug or deficiency in its operation. Their synth; their call. (But on the off-chance that they do feel like implementing it, the JX Piano patches I posted aeons ago to the Fusionzone would probably make a pretty good test case!)
And it's important for me that I understand it, because - well I know this sounds silly and obsessive, but it was the one thing that made me less than happy with my Fusion, because I couldn't understand why it was so... but now I do! Hurrah!
And then, playing with the sync options tonight and rolling them across the three oscillators into Ring Mod and Filter, it finally occurred to me what's going on. So here's my guess:
The Micron only offers the choice of syncing oscillators together. Since it generates the oscillators itself, it knows the exact phase of those oscillators, and can work out exactly where between the samples the sync pulse should be, with complete certainty. So whilst its sync won't be quite alias-free, it can be as good as the rest of the system, because it never has to handle anything remotely unpredictable.
The Fusion, on the other hand, can accept not just another oscillator as a sync source - it can take the output of a ring modulator or the whole voice instead. And even if it syncs to an oscillator, that oscillator might be switched to the external inputs, or to a noise source... or it might be syncing to itself - try it sometime, it sounds weird! That means that the Fusion's sync algorithm has to be designed to work when there's no convenient clock pulse to sync to - all it can do is look for a pair of samples either side of 0, and try and guess where between those samples the zero crossing actually occurred. That makes it considerably more complicated - and A LOT more versatile - than most synths' hard sync functions!
But the downside of getting sync working at all with arbitrary signals is that the sync algorithm doesn't perform nearly so well in the simplest case - that of one oscillator syncing to another one. Bugger. Oh well.
It would be cool if a future OS upgrade added a little bit of code to detect the "we're syncing to a waveform we don't have to guess" case and choose a different sync algorithm for it. But I would class that as a feature upgrade, because finally I understand that hard sync aliases because of the (frankly, amazingly cool) design choice Alesis made in implementing it, and not because of any bug or deficiency in its operation. Their synth; their call. (But on the off-chance that they do feel like implementing it, the JX Piano patches I posted aeons ago to the Fusionzone would probably make a pretty good test case!)
And it's important for me that I understand it, because - well I know this sounds silly and obsessive, but it was the one thing that made me less than happy with my Fusion, because I couldn't understand why it was so... but now I do! Hurrah!