Why are almost all digital synthesis techniques based on analog approximations?

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

to just place the poles you literally just place the poles. just convert from one to the other, presto you're done.

the reason most systems use a model of some sort is because it provides a logical method for the filter design process to follow. 99.9999% of all pole configurations produce out of control crap. the one 1/inf pole configuration that is stable still sounds like crap and doesn't really do anything particularly useful.

the 1/inf^inf configurations you get out of the models you can find in various papers actually do something useful.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

Post

zerocrossing wrote:FM is more or less the same kind of thing. Can (and is) done with analog, but Yamaha just figured out a way to do it digitally. There's nothing "digital" about FM itself, it's just a more convenient way of doing it.
it's actually through-zero FM by the differentiated input. that's possible in electronics also, it's just way less practical.

for example to get real "dx- style fm" from a software synthesizer you need to use the method i described.

fm = modify the frequency
through-zero fm = allow negative frequencies
differentiated = a square becomes two narrow pulses, cosine becomes sine

-1,-1,1,1 = 0,0,2,0 (take the difference = differentiation)

the way it's done in the dx- synthesizers, the frequency is never touched.

rather than differentiating the input modulation and then adding that to the frequency, the frequency is integrated and the input modulation is added to the integral.

phase += frequency
output = waveform_table[phase + modulation]

that's the same as

phase += frequency + differentiation(modulation)
output = waveform_table[phase]

simple differentiation is just:

difference = modulation - last_modulation
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

Post

Those both look quite interesting are they just directly setting the spectrum and doing short time IFFTs?
not IFFT, but yes, and you can draw your own filter & resonance shapes
DOLPH WILL PWNZ0R J00r LAWZ!!!!

Post

tony tony chopper wrote:
Those both look quite interesting are they just directly setting the spectrum and doing short time IFFTs?
not IFFT, but yes, and you can draw your own filter & resonance shapes
So it's just summing up 100's of sines? Wouldn't that be incredibly slow?

Post

depends what sort of sines you're dealing with.

yes, though.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

Post

So it's just summing up 100's of sines? Wouldn't that be incredibly slow?
no, try it

considering that it's naturally alias-free, it's quite comparable to algos for alias-free waveforms in the time domain.
DOLPH WILL PWNZ0R J00r LAWZ!!!!

Post

tony tony chopper wrote:
So it's just summing up 100's of sines? Wouldn't that be incredibly slow?
no, try it

considering that it's naturally alias-free, it's quite comparable to algos for alias-free waveforms in the time domain.
Will do, I always meant to try it as it would be a super flexible way of generating just about any sound with zero aliasing but I always assumed it would be way too CPU heavy.

*Creates new project folder: FourierSynth*

Post

GameSmith wrote:Let me ask a slightly more specific question. Is anyone aware of purely discrete time method of designing (placing z-domain poles) a digital filter?
All the usual examples (eg RBJ biquads) involve converting continuous time versions.
Converting (eg using BLT) a continuous time prototype into a z-domain filter just happens to be the easiest way to get sensible filters. The result of placing poles/zeroes on s-plane is kinda more easily predictable than the result of doing the same on z-plane. It's surprisingly messy to place z-plane poles/zeroes in a way that gets you desired gains at multiple frequencies (eg DC, cutoff, Nyquist or whatever else you want) where as it's generally pretty simple in s-plane.

There's a bunch of paper on alternatives, but you should be warned that it gets "quite messy quite fast" as far as the math goes.

Post

tony tony chopper wrote:
So it's just summing up 100's of sines? Wouldn't that be incredibly slow?
no, try it
Obviously with the caveat that you need a reasonably fast sine-generation method; actually calling sin() a couple of hundred times would be incredibly slow...

Post

yes, the algo that computes a sine based on its previous value & a couple of coefficients. Can't remember the name (or if it has any) but it's popular, & it's just a couple of additions. Plus lots of asm & other tricks.
DOLPH WILL PWNZ0R J00r LAWZ!!!!

Post

In the end what we hear is a continuous waveform coming out of analog speakers. Any discrete time signal is converted to continuous time by a DAC, which is based on a special conversion formula. This formula in turn works under a number of assumptions which don't necessarily hold etc. So, discrete-time is simply foreign to the nature of the sound. No wonder, it's often easier to design "artifact-less" algorithms in continuous time and then just try to eliminate the artifacts arising during the conversion.

Regards,
{Z}

Post

Does anyone know of any purely digital techniques for oscillators or filters that aren't based on trying to emulate an analog circuit? FM is the only one that comes to mind but there must be others
Um, FM comes to mind as an example of what? A non-subtractive synthesis technique best/more easily implemented in the digital domain?

If so, there are heaps of other techniques:

-Wavetable synthesis
-Bezier synthesis
-Wave Terrain synthesis
-Spiral synthesis
-Additive synthesis
-Phase Distortion synthesis
-Granular synthesis
-Z-Plane Synthesis: This is possibly where your question about filters comes in. Conventional synthesizer filters consist of a single section that allows you attenuate a waveform's harmonic content above a single frequency with an optional resonant peak at that frequency. In contrast, a Z-Plane filter consists of multiple sections, each (like a band of parametric EQ) allowing independent control of frequency, bandwidth and degree of peak or notch. So, Z-Plane Filters can model any resonant characteristic; whether that of a tube, an acoustic instrument body, the human vocal tract or stuff that doesn't exist in nature. Then of course Z-Plane synthesis allows you to smoothly interpolate (morph) between resonant models, whether in response to velocity, pressure or whatever, so Z-Plane filters enable you dynamically transform sounds in strange ways
-Segment wiggle synthesis (you won't find much online about this one; it's a method I came up with for my next synth :wink:)

Post

what about bi-planar tiled scanning synthesis?

actually although these "methods" are all arguably "best" implemented in software they're all going to have properties of an analog system. we're converting from some kind of input (the method) to an analog output (audio). there is absolutely no way we can avoid being analog at some point.

well, without putting electrodes directly into our brains and shocking ourselves. yet it would still be analog. :( darn reality and all that.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

Post

mystran wrote:
GameSmith wrote:Let me ask a slightly more specific question. Is anyone aware of purely discrete time method of designing (placing z-domain poles) a digital filter?
All the usual examples (eg RBJ biquads) involve converting continuous time versions.
There's a bunch of paper on alternatives, but you should be warned that it gets "quite messy quite fast" as far as the math goes.
true. semi-recently, i dabbled with that stuff myself. i drafted a little papaer about how to prescribe the gain at 5 frequencies:

http://www.rs-met.com/documents/dsp/Dig ... ements.pdf

(the paper is still in draft status). my goal was actually to find some general way to transform an analog biquad into a digital one with prescribed nyquist-frequency gain (similar to the solution by orfanidis for the peaking filter case). and i thought, the procedure above might be useful for that purpose. later, i figured, it would be better to prescribe the gain at 3 frequencies and at one of them additionally prescribe two derivatives. i even got it to work in many cases, but for some settings, there doesn't seem to be a solution and that's where you have to loosen the constraints in a controlled way and that's where it becomes quite messy from an algorithmic point of view (and i eventually moved my erratic attention to yet something else).
My website: rs-met.com, My presences on: YouTube, GitHub, Facebook

Post

what about bi-planar tiled scanning synthesis?
Huh? :o

Post Reply

Return to “DSP and Plugin Development”