| Author | Topic: Integer is King? - the challenge | ||
|---|---|---|---|
|
|||
Ok guys,
after enjoying your conversation I throw a simple EQ plugin together. It has three different processing algorithms: X, Y and Z. One is entirely done in fixed point math, while the other one is done entirely in floating point math. One processing mode is unknown yet. The processing ladder and the coefficients are equal, except that the one only uses fixed point math, while the other one uses floating point math. The plugin itself is *NOT* made for commercial use, just for evaluation of the differen processing types. There are a lot of issues in this plug. I know that, but this should doo the trick. Click on the screenshot to download the plugin: I did not use any kind of dithering/noiseshaping here. In theory it is necesarry, since the in/out format is only 32bit float (due to restrictions of the VST interface). The zip file also contains the details of the algorithms used, but it is password protected. I will post the password next week at this location. Happy evaluating, Christian PS: Note: in the default preset/position the sound of all processing modes are binary equal. So you definitely can't here a sound without EQing. Trust me. |
|||
| ^ | Joined: 14 May 2004 Member: #25572 Location: Europe | ||
|
|||
great idea Christian, I was about to dig up some I code I used last year in an FP/FxP thread I started...
But blind testing like this should be great DSP |
|||
| ^ | Joined: 11 Apr 2003 Member: #6706 Location: now on the flat | ||
|
|||
While judging by the sound what is what, if possible, would be a challenge, the kind of error that occurs when something blows up in an implementation of the filter (which I've got it to repeatedly) quite strongly suggests it to me. Though I guess that's kind of cheating. |
|||
| ^ | Joined: 24 May 2005 Member: #69560 Location: Sweden | ||
|
|||
Short update: I added my VST ABX tool for blind testing VST plugins.
Suprisingly it seems as if I *did* hear a difference in very extreme settings (11 times with 15 trials). Right now I'm not sure, what exactly I heard. It still can be some kind of placebo thing. However this comparison is interesting, since a difference is measurable. Especially for full scale signals (where the floating point precision isn't superior any more: remember 32bit float at full scale (+/-1) equals 23bit integer). So doing a harmonic distortion measurement of both algorithms unveils a slight difference (down at -180db But I'd like to avoid any kind of subjectivity here. At least until we have our first results. Will there be a anyone who can hear the difference? Christian |
|||
| ^ | Joined: 14 May 2004 Member: #25572 Location: Europe | ||
|
|||
Imo you should also test double precision. Based on my limited experience, and moreso on comments from other developers you should use double for anything recursive, particulary with high resonance. |
|||
| ^ | Joined: 09 Dec 2003 Member: #10919 | ||
|
|||
Christian is probably already using doubles for his float math, but that is a good point. I always store coefficients and 'memory state' vars as doubles, so that the only bump down to 32 bit float is in the in/out buffer. But I assumed most folks do the same. |
|||
| ^ | Joined: 17 Apr 2005 Member: #65472 | ||
|
|||
sorry that I didn't make it clear here: I'm using Integer64 for all fixed point types (with a good amount of headroom) and 64bit double precision floating point for coefficients and states. The processing is done inside the CPU registers maintaining theoretcally 80bits precision.
In fact there's only one 'bump down' to 32bit float at the end. This should be done with dither/noiseshaper. I have already coded that part, but I disabled it here since i'd want to avoid judging the dither/noiseshaper here (which is in my case a bit different for fixed/floating point). In case someone can relayable hear a difference here, I'd like to continue the test with dither/noiseshaper. |
|||
| ^ | Joined: 14 May 2004 Member: #25572 Location: Europe | ||
|
|||
it's a waste NOT to process stuff as doubles on today's CPU architecture. float gets bumped to doubles in the FPU's of current generation most of the time AFAIK. negligible CPU hit one vs. the other..
on to the topic. in my (currently) noisy test environment I could not tell the difference between any of the modes and I was using some super drastic mega killer settings. maybe I'll try later but I think my conclusion won't change. |
|||
| ^ | Joined: 16 Dec 2002 Member: #5023 | ||
|
|||
I cant get the thing to work. It just maxes out my CPU and produces no sound. Edit: I've loaded a sound file, and this displays. I've load two instances of the eq plug. set up the soundcard, and selected 'start'. It says "trial 1 of 15'. |
|||
| ^ | Joined: 09 Dec 2003 Member: #10919 | ||
|
|||
sorry, everything here is work in progress. I could wait to get everything stable, but at when this happens, the discussion is probably snow of yesterday... |
|||
| ^ | Joined: 14 May 2004 Member: #25572 Location: Europe | ||
|
|||
Quote: Hi mausoleum,
first of all thanks for taking part in the challenge. One thing though, could you please remove your thoughts about the challenge for a while? I don't want to emphasize all the others who might take place in this challenge. All I can say at this point is that I had a similar rating,when I did it by myself. But I don't want all the others to join the club, only because some others did notice it. yep. Mr. CB asked me to do so - so kindly that in fact I did remove my thoughts. Btw. the difference was obvious on _consumer_ sony walkman headphones. Unfair bit in the equation is that they were powered by my custom headphone amp with built-in passive contour filter that _makes_ a difference (spinoff of a modded T-filter). The stinky bit is that it was fed by an ancient AWE64gold soundblaster ISA card. Math wizards, don't you think that _summing_ with fixed point math won't get noticed on a plastic boombox, not mentioning dynamics ... ? For _float_ hosts _AND_ if integers/fixed proves to be a bit better sounding, I think there would be an opportunity in providing a "buss-channel" plugin with said math, EQ-compressor thingie, with lowpass and hipass filters. Thanks for your cooperation, over and out. Vote me for president when time comes. Last edited by mauseoleum on Thu Jun 07, 2007 11:58 am; edited 1 time in total |
|||
| ^ | Joined: 29 Oct 2003 Member: #9992 | ||
|
|||
Nice to see Mr audio detective himself on the case here! I'll take the challenge of course! Cheers! bManic |
|||
| ^ | Joined: 03 Feb 2003 Member: #5744 Location: Finland, Espoo | ||
|
|||
Kingston wrote: it's a waste NOT to process stuff as doubles on today's CPU architecture. float gets bumped to doubles in the FPU's of current generation most of the time AFAIK. negligible CPU hit one vs. the other..
I agree, unless memory speed and size are a problem. Then again, everybody except me is running a 60Ghz 7TB RAM computer anyway. |
|||
| ^ | Joined: 25 Jan 2007 Member: #137320 Location: in ur basement, codin ur programz | ||
|
|||
Chris Walton wrote: Kingston wrote: it's a waste NOT to process stuff as doubles on today's CPU architecture. float gets bumped to doubles in the FPU's of current generation most of the time AFAIK. negligible CPU hit one vs. the other..
I agree, unless memory speed and size are a problem. Then again, everybody except me is running a 60Ghz 7TB RAM computer anyway. except that with SSE and 32 bit floats you can generate a far higher throughput, and even if you aren't using SSE memory accesses are potentially one of the most costly actions in a modern architecture, unless it's in the cache, but then if your values are half the size then you can fit twice as much in, increasing your chances of a cache hit. There are places where doubles are advantageous, even neccessary, and many where they are not, there's never enough processing power for the average punter, give them a bigger CPU or a more efficient plugin, and they'll just load up more plugins! |
|||
| ^ | Joined: 01 Apr 2003 Member: #6570 | ||
|
|||
As for this test, 64 bit ints versus 64 bit floats? Come on, considering that no D/A converter manages better than 20/21 bits worth of signal to noise at full scale if a programmer can't make any differences between the two inaudible, then fire the programmer. |
|||
| ^ | Joined: 01 Apr 2003 Member: #6570 |
![]() |
All times are GMT - 8 Hours | |
|
Printable version |
||
![]() Previous Topic Next Topic |
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum |
Disclaimer: All communications made available as part of this forum and any opinions, advice, statements, views or other information expressed in this forum are solely provided by, and the responsibility of, the person posting such communication and not of kvraudio.com (unless kvraudio.com is specifically identified as the author of the communication).
Powered by phpBB © phpBB Group














