Integer is King? - final thoughts about the EQ challenge

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

sorry, i think distortion is another important fact in the analogue sound, take the famous urei 1176LN, the gain control element is a FET driven in the narrow zone BEFORE full distortion (to make it simple) and eveybody seems to love that sound.
Why when everybody moved the production to digital tube gear started to sell again? because of the distortion, we lo ve distortion, it's the same with the movies, we still use 25 frames/sec, the it's close to "distortion" for the eye, if we get faster than that we don't like anymore, compare a movie to your digital camera, and see how smoother is your camera...

the same with audio, we need distortion and imperfection (ok i admit that it's not always wht you want, but for rock/pop music you want it) it's just that we are used to it, it's like the natural reverb, would you live in a world without any reverb? you'll get crazy!

my 2 euro cents :)

Saverio

Post

EcHo2K wrote:sorry, i think distortion is another important fact in the analogue sound, take the famous urei 1176LN, the gain control element is a FET driven in the narrow zone BEFORE full distortion (to make it simple) and eveybody seems to love that sound.
Why when everybody moved the production to digital tube gear started to sell again? because of the distortion, we lo ve distortion, it's the same with the movies, we still use 25 frames/sec, the it's close to "distortion" for the eye, if we get faster than that we don't like anymore, compare a movie to your digital camera, and see how smoother is your camera...

the same with audio, we need distortion and imperfection (ok i admit that it's not always wht you want, but for rock/pop music you want it) it's just that we are used to it, it's like the natural reverb, would you live in a world without any reverb? you'll get crazy!

my 2 euro cents :)

Saverio
Sure, distortion is often an important part of a sound, it creates harmonics and changes the tonal balance in subtle and dynamic ways.

But the distortion generated by the numerical errors in integer versus float bears little or no relationship to the sort of distortion you get from the non-linearities of a FET for example.

Post

yes i think, iread all the thread and replied only when it drifted to "it's randomness and noise that make analogue sound good" while i think it's mainly distortion, even when in the linear region the transistor is not so linear...

i don't know about integer :) i wrote some plugs for my own use and i used float, just added distortion :D eheh

Post

Ok, since this thread is - theoretically - still about EQs, I have to ask you if you have ever listen to those imperfections generated by reduced bit depth of state variables? Those sweet ;-) limit cycles, like R2D2 is singing along with your track. That definitely sound interesting, no question, but in my ears it's not the imperfection you'd like to have on every track.
In case you haven't heard it, just download the free Electri-Q (posihfopit edition) and select 'broken' as filter type. Those requantize the state variables to 12bit (or so). Now try it with a narrow bandwidth and tell me how you like it.

Christian

Post

JonHodgson wrote:
hifiboom wrote:rmm Jon,
concensus of what gives analogue its desirable character is wrong
Does there really exist something like this?

I mean,
7 years ago, allmost all VSTi were toys and sounded crappy.
Now in todays virtual world the situation has changed a bit and we got relative good sounding and complex stuff coming close to external VA.

but still the words of "dull, plastic-like" seem to hit exactly the nail what is not done perfectly yet.

If instability of the oscillator can make a sound more nice, why not circuit dependent low level noise?
Well it's easy enough to test, just add noise to the sound of your oscillator.

the only time I can envisage it being an advantage is as a mask to other artifacts, but it hardly seems like some kind of universal solution.
Eh? Jon, you just described the most commonly known trick of any sound designer. Adding a hint of noise into a signal DOES make it sound "better". This is especially true for softsynths. Now it sounds even better if the "noise" or "disturbance" is dynamic, that is, it reacts to the the velocity or 'movement' of the oscillator (so feeding some of the oscillator and ring modulate it with the noise and add this blend into the mix for subtle thickening effect).

I've been saying this now for nearly 10 years: "If you model analogue synths and try to "improve" them by not modeling the noise, you will end up with something that sounds nothing like the real deal".

Cheers!
bManic
"Wisdom is wisdom, regardless of the idiot who said it." -an idiot

"They don't ban hate speech; they ban speech they hate." -an oracle

Post

12 bits of exponential frequency precision is mega-fine actually. the older versions of xhip used only 12 bits. the current versions use a full 31 bit range. linearly interpolated from an 8 bit expo table. i decided you really cant tell the difference between 8 bits interpolated, and 12 bits non-interpolated. if you're talking linear 12 bit though, ouch :lol:

about the "analog electronic" stuff i mentioned. what gives analog electronic synthesizers their sound has absolutely nothing to do with component tolerance, random variations, or noise. this is a huge mistake that software developers have been making since the inception of software synthesizers. what gives them character are the complex effects and their inter-relationships, and the way in which the designs are affected by them. this is the line i was drawing between integer code and analog electronics, the designs of both have complex influences. as i mentioned before, the integer mmode filter requires in the least 18db of headroom to function correctly. the different trade-offs in the design have significant influence on the end results. the 18db issue is only one issue of many which you should be faced with designing an integer version of this function. speed, code size, access patterns, parameter management, these are all issues which come into play.

when i said i never suspected the data-type should have any influence, i was repeating the same thing i've been saying all along. my opinion has always been that duplicate methods produce duplicate results, that much should be extremely obvious to anyone. i've always suggested that the data-type instead has a indirect influence by dictating the methods of implementation and the design trade-offs which are selected.

"Well it's easy enough to test, just add noise to the sound of your oscillator."

noise != quantization. also, you should apply quantization to every variable used in the oscillator code, and then redesign it to function correctly by applying as many trade-offs as necessary. then you will see that these things do have an effect. this isnt an issue of checking for a difference of apples to apples, this is implementation.apple, implementation.banana.

Post

aciddose wrote:noise != quantization. also, you should apply quantization to every variable used in the oscillator code, and then redesign it to function correctly by applying as many trade-offs as necessary. then you will see that these things do have an effect. this isnt an issue of checking for a difference of apples to apples, this is implementation.apple, implementation.banana.
And quantization!=just about anything you get in an analogue circuit.

The more complex the input signal the less detectable correlation there will be with the distortion (which is generally quite harsh in nature when it is detectable), and it will tend to approximate broadband noise. Also in more complex systems I would not be surprised if the various distortions would themselves add up to a fairly uncorrelated whole.

Despite what you might think you're not the only person here with experience and knowledge of both analogue electronics and DSP (fixed and floating point).

What I was saying was that I cannot see how you can correlate between the nature of the quantization errors that we're talking about (and modifications to the algorithms we might make to achieve quality balanced againts CPU use) and any characteristics of analogue audio circuitry. Sure it's going to have an effect, but it seems like rather a leap of faith to say that it will as a rule, or even a tendency, make the sound more "analogue".

Post

Of course if you have a specific example of how something that you have done in implementing a particular algorithm as a result of using integer, has resulted in the response of that algorithm has then been changing in a way that might be considered more "analogue", then that would definitely be interesting
Last edited by JonHodgson on Tue Jun 19, 2007 11:12 pm, edited 2 times in total.

Post

Whatever distortions you get they're not going to be bigger than one bit. (But yes, they could accumulate depending on the process.) That noise floor is lower than any analog circuit in a classic mass produced analog synth or effect is ever likely to be.

And even in analog, that noise accumulates as components are chained. The floor is chaos, instead of flat zeros. In digital, you need some signal before you get noise (dithering excepted).

But you CAN actually use quantization error as an analog for analog. I did anyway. And everybody gets mad at me when I say Poly-Ana sounds better made of floats than doubles. :shrug: (Faster too!)

Post

all your points are valuable...(@aciddose)

I want to add another aspect... problematic in virtual stuff is mostly the static handling of inputs...

a real filter could react differently when he gets input signals with different volumes. Resulting in a dynamic sound result.
Same with distortion fx or a compressor, once you push it harder he gets a "fatter" sound.
Now in digital world these things are mostly modeled by quite simpe structures, like a simple clipper for ditortion,
filters do sound always the same, not important at which input level you drive them.
they are a digital approximation/snapshot of something more reacting a bit more dynamic.(IMO)

modelling an analog hardware in digital to me would mean: spent a lot time with the most important structures of the emulated hardware and try to capture most of its important characteristics.
Last edited by hifiboom on Tue Jun 19, 2007 11:27 pm, edited 2 times in total.
Image

Post

AdmiralQuality wrote:But you CAN actually use quantization error as an analog for analog. I did anyway. And everybody gets mad at me when I say Poly-Ana sounds better made of floats than doubles. :shrug: (Faster too!)
Of course there is the question of whether the imperfections have to be the same to have the same perceptual effect.

As a more extreme example it can be hard to tell the difference between tremelo and vibrato in certain circumstances, despite the fact that the mechanisms are different. Maybe in some cases it is less important exactly what the randomness or imperfection is, but rather that some randomness or imperfection exists.

Post

hifiboom wrote:all your points are valuable...(@aciddose)

I want to add another aspect... I think another problematic aspect of virtual stuff is the static handling of inputs...

a real filter could react differently when he gets input signals with different volumes. Resulting in a dynamic sound result.
Same with distortion fx or a compressor, once you push it harder he gets a "fatter" sound.
Now in digital world these things are mostly modeled by quite simpe structures, like a simple clipper for ditortion,
filters do sound always the same, not important at which input level you drive them.

modelling an analog hardware in digital to me would mean: spent a lot time with the most important structures of the emulated hardware and try to capture most of its important characteristics.
You obviously weren't there the months I was probing and simulating OSCar filters whilst I worked out how to emulate them.

Then again it would be rather disturbing if you had been, since I did it at home! :-)

Post

JonHodgson wrote:Maybe in some cases it is less important exactly what the randomness or imperfection is, but rather that some randomness or imperfection exists.
'Zactly! There IS such a thing as too many bits.

But just for shits and giggles (and marketing B.S.) I'm going to put a 64 bit voice mix engine into the next release of Poly-Ana. (The voices will still be 32 bit but the amp gain calcs and accumulator will go to doubles.) Also, that will give me some legitimate reason to support processDoubleReplacing() rather than just faking it by wrapping the 32 bit version and having all those "gaps" in the gamut.

Post

the most important aspects of "emulation" really are not in "emulation" at all. the most difficult issues in dsp are simple implementation of the same systems. an analog filter is an approximation to an ideal function, just as a software implementation is. they're two forms of approximation with different properties. i think trying to approximate an approximation is only going to get you further from the goal. attempting to make your code function as ideally as possible, then working toward adding the specific properties of the electronic implementation should be the best way to work.

if you're approximating an approximation, you'll end up with just two layers of approximations and have twice worse the results.

"a real filter could react differently when he gets input signals with different volumes. Resulting in a dynamic sound result."

actually, all those things are due to very simple clipping, just as is applied in most software. the issue is just that in software, generally there is no option to route A into B, or scale it to an arbitrary level. the design methodologies are different. this is the line i draw between int and analog electronics, once again. in int, you're faced with certain decisions much like those you're faced with in electronics. fixed noise floor, trade-offs between distortion and noise level, requirement of constant attention to headroom, so on. this means you eventually come to some similar conclusions and you get similar results.

Post

"trade-offs between distortion and noise level"

considering harmonic distortion as noise, and non-linearity as distortion, this would make sense if you're talking about applying a soft-clip in order to reduce harmonics while pushing the headroom limits. you're faced with a trade-off between linearity and harmonic noise here. you can make the clip very soft and sacrifice linearity when not clipping, or you can hard-clip and make it perfectly linear until it reaching the clipping threshold, where terrible harmonics will be produced. harmonic noise is even more important in dsp since you have aliasing of those harmonics to deal with, not just warping of your high frequency timbres.

in my example code i used a hard clip. this is ideal in this position. the saturation option in xhip adjusts the linearity, but not of the clipping stage. the mmode filter can be clipped and saturated in the analog and digital worlds if you know how to do it correctly. the order of linear stages also is not important. you can cascade more stages as well, and do many other things. when you start to add a few extra features to this simple function, suddenly you have many possible configurations and many trade-off decisions to make. the data-type then becomes important because it dictates many of the trade-offs you must select.

Post Reply

Return to “DSP and Plugin Development”