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...
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
LMMS-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/lmms-devel