Integer is King? - the challenge

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

Post

I admit that convolution in general is a bad example. Many convolution plugins I've tested do smear the sound (and create other artefacts) even with sufficiently large impulse files but that's really another matter.

I agree of course that the results should be equal if the algorithm is the same and it stands to reason that calculations should come out the same. And it's probably true that error-differences between methods (integer vs. float) usually stay safely below hearing threshold.

Plus I'm not trying to invoke magic anywhere (in real life I'm usually the one arguing from the scientific sceptical viewpoint). I'm simply hearing differences (and others do, too) which I consider crucial for a professional sound and would love to know the reason for and have the issue addressed.
JonHodgson wrote: In another post you claim that convolution smears transients, seemingly as if this is some global rule of convolution... is this your claim?

We're dealing with two processors performing mathematical calculations on a sequence of numbers, there is NO magical difference between hardware and software units in this respect, in fact if desired you can generate BIT EXACT equality between the two (This is not theory or conjecture, it is fact, I've done it when working with hardware DSPs)

[edited because I mistyped equality]

Post

This been entertaining and long enough thread that I'm confident I should throw my spoon in as well. I guess some of the people here have tried to ask what I'm going to ask, namely, are there subjectively preferable features of hardware and/or integer implementations other than better developers (were applicable)?

The hardware point I'm not going to comment on much, 'cos most of the hardware I've heard has been wired through analog links, and especially with older gear the D/A convertor built into the hardware synth is quite likely to color stuff..

Anyway, the point that interests me more in this thread, is whether it's actually desirable to eliminate any and all of distortion, and if not, is there some reason (or even possibility) that low-bitwidth integer calculations could introduce errors which people would perceive as subjectively desirable (or "better sounding").

I mean people do often prefer old analog electronics sound, even if the modern digital equivalent next to it was in any measurable way much better in theory, and this has usually been claimed to be because of some particular sort of distortion that people just happened to like.

... or something to that effect anyway.

Post

I am interested in listening to plugins made with integer coding or what you would call it. Please name a couple of effect, specially by different developers. Interesting thread this! Regards

Post

mystran wrote:Anyway, the point that interests me more in this thread, is whether it's actually desirable to eliminate any and all of distortion, and if not, is there some reason (or even possibility) that low-bitwidth integer calculations could introduce errors which people would perceive as subjectively desirable (or "better sounding").
In my opinion this quantisation error is not desirable in regards of EQs. I did several tests with integer rounding at the beginning. One thing was, that I reduced each possible state (of different forms) to a low bit rate. One result was the so called 'broken filters' in Electri-Q.
I experimented with dither/noiseshaper. My personal, subjective conclusion after this testing was, that I _do_ want to get rid of these.
Have you ever listened to limit cycles? In extreme it's like R2D2 singing along with your track all the time. This can be nice as an effect though...

Post

living sounds wrote:I admit that convolution in general is a bad example. Many convolution plugins I've tested do smear the sound (and create other artefacts) even with sufficiently large impulse files but that's really another matter.
Which just shows how little you know about convolution. The size of the impulse file has no bearing on the transient response (well unless you want a reaaaaaallyyyyy slooooowwwwwwww rise time, in which case you'd need a loooooong file), I can give you perfect transient response with an impulse length of 1 sample... but then it wouldn't do anything at all to the signal.

Post

JonHodgson wrote:I can give you perfect transient response with an impulse length of 1 sample... but then it wouldn't do anything at all to the signal.
False, an impulse length of 1 sample does something to the signal and it can be very powerful and rather useful: it can both change the volume and flip the phase of the signal.

I'm joking :D

Post

Christian Budde wrote: In my opinion this quantisation error is not desirable in regards of EQs. I did several tests with integer rounding at the beginning. One thing was, that I reduced each possible state (of different forms) to a low bit rate. One result was the so called 'broken filters' in Electri-Q.
I experimented with dither/noiseshaper.
Well I wasn't thinking about EQs only, more of the general case of signal processing, say a synthesizer. And with "low bit rate" I had something like 24 or 32 bits in mind.

I experimented with FM synthesis year or two ago, and I originally wrote it as floating point, but had some performance issues, and rewrote the feedback matrix as integer only (and indeed in this case got a nice speedup). I did it as 32-bit IIRC, and it did sound different indeed. Not necessarily "worse" or "better" but well.. different. And that wasn't necessarily just because of the integers, but also because of the lookup table stuff that was part of the reimplementation but ... well ...
My personal, subjective conclusion after this testing was, that I _do_ want to get rid of these.
Have you ever listened to limit cycles? In extreme it's like R2D2 singing along with your track all the time. This can be nice as an effect though...
Yeah well, I can see wanting to get rid of those. :)

But honestly, didn't think about it that much. So far I've personally used floats (or well doubles) for almost anything except some special cases where integers enable order of magnitude speedups (and there aren't that many). I just wanted to draw attention to the possible point of interest.

Post

I already admitted it is a bad example. Stop picking straws! I'm sure you know more about convolution, DSP programming and mathematics. My point is really a different one, see above. Convolution was ONLY an example, since it is apparently very difficult for people to understand what I'm refering to.

BTW, I know the size of the impulse file is relevant for the frequency.
JonHodgson wrote:
living sounds wrote:I admit that convolution in general is a bad example. Many convolution plugins I've tested do smear the sound (and create other artefacts) even with sufficiently large impulse files but that's really another matter.
Which just shows how little you know about convolution. The size of the impulse file has no bearing on the transient response (well unless you want a reaaaaaallyyyyy slooooowwwwwwww rise time, in which case you'd need a loooooong file), I can give you perfect transient response with an impulse length of 1 sample... but then it wouldn't do anything at all to the signal.

Post

The fact that your examples and your blanket statements are provably incorrect indicates what I think many people in this thread already suspect... that you're hearing things that you expect to hear, not because they are actually there.
living sounds wrote:I already admitted it is a bad example. Stop picking straws! I'm sure you know more about convolution, DSP programming and mathematics. My point is really a different one, see above. Convolution was ONLY an example, since it is apparently very difficult for people to understand what I'm refering to.

BTW, I know the size of the impulse file is relevant for the frequency.
JonHodgson wrote:
living sounds wrote:I admit that convolution in general is a bad example. Many convolution plugins I've tested do smear the sound (and create other artefacts) even with sufficiently large impulse files but that's really another matter.
Which just shows how little you know about convolution. The size of the impulse file has no bearing on the transient response (well unless you want a reaaaaaallyyyyy slooooowwwwwwww rise time, in which case you'd need a loooooong file), I can give you perfect transient response with an impulse length of 1 sample... but then it wouldn't do anything at all to the signal.

Post

living sounds wrote:Many convolution plugins I've tested do smear the sound (and create other artefacts) even with sufficiently large impulse files but that's really another matter.
:lol:
Cakewalk by Bandlab / FL Studio
Squire Stratocaster / Chapman ML3 Modern V2 / Fender Precision Bass

Formerly known as arke, VladimirDimitrievich, bslf, and ctmg. Yep, those bans were deserved.

Post

mystran wrote: I experimented with FM synthesis year or two ago, and I originally wrote it as floating point, but had some performance issues, and rewrote the feedback matrix as integer only (and indeed in this case got a nice speedup). I did it as 32-bit IIRC, and it did sound different indeed. Not necessarily "worse" or "better" but well.. different. And that wasn't necessarily just because of the integers, but also because of the lookup table stuff that was part of the reimplementation but ... well ...
Yeah, FM synthesis is the exception, because you normally have no floating point inputs going into it, you have to do a memory access with like each value (which is faster in int of course), and it's easy to keep the signal in the ideal range (and it doesn't matter if you overflow for modulators). For the same reasons, you probably want to use integer for sample pointers. But conversion from int to float is fast, so for synths, there's really no problem doing everything in int and then converting to float at the end (there's probably many otherwise unremarkable synths that do this, perhaps a majority of FM synths, except those made in synthedit of course).

Post

living sounds wrote:I'd rather like to know why many plugin compressors/reverbs/modulation effects and synths sound muddy/flat/liveless (to my ears). They certainly do in comparison to good analog hardware, and also to some extent compared to certain digital hardware.
One of the big reasons that expensive hardware in general sounds better than cheap software is that the companies developing expensive hardware in general have more resources (people, time and money) to spend on their creations.

I'm guessing many more experienced engineers and sound designers were involved in creating the access virus, than most software synths.

Jonas

Post

Or one genius. Quite often it's just one man who makes the difference.

But since the gear is already on the table it should be much easier to reverse engineer it, shouldn't it? In some cases it's even possible to extract the data from the chips.
But then this is often bound to be expensive of course, you're right, there's nowhere near the money and resources in plugin development now than was in pro audio back in the day.
JonasNorberg wrote:One of the big reasons that expensive hardware in general sounds better than cheap software is that the companies developing expensive hardware in general have more resources (people, time and money) to spend on their creations.

I'm guessing many more experienced engineers and sound designers were involved in creating the access virus, than most software synths.

Jonas

Post

living sounds wrote:In some cases it's even possible to extract the data from the chips.
"The chips" would just contain SOFTWARE. Written by software programmers, just like any plug-in developer is. The difference is, a PC is a much more powerful and generalized platform with gobs of resources compared to the dedicated DSP processors in most digital hardware based audio devices. (Just compare the heat the machines are giving off.) So the poor sods programming for DSP have to bend over backwards to optimize their code for an esoteric, little-known, poorly documented chip, they might even be FORCED into using integer by the architecture they're coding for. I experienced this myself when I used to program image processing code back in 1991 on dedicated DSP processors. We'd have preferred to code it in float, but back then not everybody had floating point coprocessors so floating point was a SLOW emulation, and the accelerator chip on the graphics card also worked FAR faster in native int code than floating point emulation. So we moved all our math to power of 2 based int, and had the fastest product of it's type for a short while.

But it's all just software, that runs on a state machine, whether it's a black box on a rack or your DAW on your desk. Software written by PROGRAMMERS. Just like the many smart people who frequent this particular board.

Post

living sounds wrote:Or one genius. Quite often it's just one man who makes the difference.
Indeed.. in lexicon's case that is Dr. David Griesinger.

Cheers!
bManic

PS. I think the old lexicon charm is by quite a large part due to the AD/DA converters. Another thing for you to ponder is your obviously subjective comments and opinions in this thread and why they are not completely valid here (although I do understand what you have been trying to say here and I even partly agree!): how much are you influenced by emotion of records and their success?

For instance, the SSL sound is, afaik, wanted mostly because the sound has become so recognized as numerous albums have been mixed trough that console. The SSL was never the best sounding mixing desk, not even close, yet it is one of the most wanted "sounds". Why? Emotions due to familiarity. It's the same with movies. Why do all the film buffs swear by 24 frames progressive even though 60 frames per second is technically superior? Why do people use terms like "more movie like, more emotions, better motion"? Because again, we are familiar with this since nearly 100 years back in time. It has created an emotion.
"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 Reply

Return to “DSP and Plugin Development”