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

Reply via email to