From: Stefan F. <st...@sf...> - 2010-04-10 12:56:06
|
Hello Paul, > This is an interesting thread. Let's keep it going. I wonder what the > best solution is. How about if the existing core layout was not a > limiting factor? How would we do it with a blank canvas? > Well I'm not absolutely sure, as all approaches have their respective pros and cons... 1. Naive generators + massive oversampling ("Brute-Force") * Pros: o the only solution which can under some conditions sound absolutely faithful if "true analog" sound is required o the only solution which can under some conditions handle virtually all types of modulations correctly: - ring-modulation - frequency-modulation - hard-/soft-sync (BTW: phase-modulation is just FM with reduced modulation-factors and AM is just ring-modulation with reduced modulation-factors) o very simple to design * Cons: o under real-time-conditions sounds very, very awful due to massive under-sampling of the generators o good sound quality is only achievable if the generators are run on extraordinary high sample-rates which is unfeasible for real-time-processing o if the high sample-rate is hold through the whole rendering-path some FX- and or filter algorithms will get unstable and or produce a result which sounds considerably different from that of the real-time-preview, making it very hard for an artist to decide how the final product will sound... o white/pink/whatever noise as a source can not be handled correctly. 2. Sort of "clever" generators ("somehow"(TM) band-limited) * Pros: o Usually real-time capable with good to superb sound-quality if not modulated (too much). o Noise-sources can be handled correctly. That is: the amplitude of the noise remains the same in preview and HQ-rendering. o Oversampling (for a HQ-Mode) still is possible, but due to the fact that there will never be as much aliasing as with naive generators (even if using full blown modulations) a moderate oversampling only for the generators (2x or 4x) will be sufficient to eliminate nearly all problems arising through modulations. On more powerful machines this can be done in real-time, too... * Cons o Some algorithms are quite complicated to understand o Some algorithms need some heuristics to work o The more easy to understand algorithms (wave-table-based) use more memory (even more than "naive" wave-table-oscillators) o Higher order modulations can produce some amount of alias-frequencies again if not oversampled: - ring-modulation - frequency-modulation - syncing oscillators Remark: If the band-limit of the generator is not set to the Nyquist but somewhat lower, it nonetheless sounds good without oversampling, even if the result is not identical to that of a real analog synthesizers and or that which can be achieved by brute-forcing. The main advantage is that the real-time- and the high-quality-mode are identical so the artist can hear in advance what he/she will get for mastering. I would most probably opt for the later case, using a band-limited wave-table-based approach. This would on the one hand side result in a larger memory-footprint (compared to naive generators) but it would on the other hand side allow for extremely simple and fast algorithms for the waveform-generation. Most probably I would not use "real" oversampling... Most probably I would just run the engine (internally) on 96kHz using generators band-limited to 18-20kHz. If these are modulated then, one will (with the exception of hard-sync[*]) get only a spectrum reaching up to 36-40kHz. Depending on the sound-card used, this either can be down-sampled by a factor of 2 or directly output... Stefan [*] if using hard-sync harmonics higher than the Nyquist may be generated but as it's a "fold-over" at 48kHz then, it would take some quite high pitched generator to make it audible again and at least it would sound as in the preview... |