Skip to main content

Topic: Mustang lowpass test (Read 10589 times) previous topic - next topic

0 Members and 1 Guest are viewing this topic.
  • bug80
  • [*][*][*][*]
Mustang lowpass test
pio2001 mentioned in this topic, that the famous "mustang" lowpass test suffers from ringing, due to the use of brickwall lowpass filters.

Therefore, I took the original mustang.flac and filtered it myself, using a cosine filter with a width of 1 kHz. So, if the lowpass is set at 14 kHz, the actual filter will gradually go from one to zero in the band 13.5 - 14.5 kHz with a cosine shape, with the -6 dB point at 14 kHz.

This will have the effect, that frequencies higher than the "lowpass" frequency are present, but it will reduce ringing (something on which people may be able to ABX the samples on, instead of the actual filtering).

I've made an 10, 12, 14, 16 and 18 kHz version (for testing, I've uploaded the 10 and 14 versions). Let me know if this helps.

EDIT: I've accidently hit the Post New Topic button two times, the two topic without the 3 samples can be removed. Sorry for the inconvenience
  • Last Edit: 22 August, 2005, 01:33:50 PM by bug80

  • ff123
  • [*][*][*][*][*]
  • Developer (Donating)
Mustang lowpass test
Reply #1
Applaud.wav (search for it on this page):

http://lame.sourceforge.net/gpsycho/quality.html

is probably an even better sample if you just want to know how high you can hear with natural sounds.

ff123

  • bug80
  • [*][*][*][*]
Mustang lowpass test
Reply #2
Quote
Applaud.wav (search for it on this page):

http://lame.sourceforge.net/gpsycho/quality.html

is probably an even better sample if you just want to know how high you can hear with natural sounds.

ff123
[a href="index.php?act=findpost&pid=321596"][{POST_SNAPBACK}][/a]

Thanks, I can make lowpass versions if wanted.

Can anyone comment on my choice for the width of the window? Is 1 kHz maybe too high or too low?

  • SebastianG
  • [*][*][*][*][*]
  • Developer
Mustang lowpass test
Reply #3
I think this is okay. How did you design the filter ?

I simply would have done a windowed sinc filter with a blackman window. This can be done in Cool Edit too by "drawing" a brickwall filter and selecting am FFT size of something like 256 to prevent exessive ringing.

Maybe it'd be interesting to test a minimum phase filter as well or something "in-between" like this impulse response (transition 15-15.5 kHz)

Sebi

  • Shade[ST]
  • [*][*][*][*][*]
Mustang lowpass test
Reply #4
Either cosine or brickwall, I can still ABX 16/16 for 14KHz.. But I can't tell the difference from the other filter, really, though (must mean I'm not trained for artifacts..)

  • Pio2001
  • [*][*][*][*][*]
  • Global Moderator
Mustang lowpass test
Reply #5
Quote
Either cosine or brickwall, I can still ABX 16/16 for 14KHz.. But I can't tell the difference from the other filter, really, though (must mean I'm not trained for artifacts..)
[a href="index.php?act=findpost&pid=321726"][{POST_SNAPBACK}][/a]


How can you ABX cosine versus brickwall at 14 kHz while the number of downloads for the cosine file is zero 

  • bug80
  • [*][*][*][*]
Mustang lowpass test
Reply #6
Quote
I think this is okay. How did you design the filter ?

Pretty straightforward, using Matlab. For example, the filter for 15 kHz is equal to 1 from DC up to 14.5 kHz, is zero from 15.5 kHz to the Nyquist frequency and in between it has a

0.5*(1+cos(pi*x/N))

shape. See the figure below, where you can see both the frequency domain and the (minimum phased) time domain version.



By the way. I've made a mistake when filtering the samples in my first post (the cosine filter was applied in the band f-500 to f+1000 Hz, instead of f-500 to f+500 Hz). So, I've uploaded new versions.

  • bug80
  • [*][*][*][*]
Mustang lowpass test
Reply #7
Quote
Quote
,Aug 22 2005, 02:33 PM]Either cosine or brickwall, I can still ABX 16/16 for 14KHz.. But I can't tell the difference from the other filter, really, though (must mean I'm not trained for artifacts..)
[a href="index.php?act=findpost&pid=321726"][{POST_SNAPBACK}][/a]


How can you ABX cosine versus brickwall at 14 kHz while the number of downloads for the cosine file is zero 
[a href="index.php?act=findpost&pid=321792"][{POST_SNAPBACK}][/a]

I've posted new versions

  • Pio2001
  • [*][*][*][*][*]
  • Global Moderator
Mustang lowpass test
Reply #8
The files are OK.
I can ABX 10 kHz smoothed vs 10 kHz brickwall relying on the ringing (17/17), and I can't ABX 14 kHz brickwall vs 14 kHz smoothed. Which is consistent with the fact that I can't ABX 14 kHz brickwall vs original.

  • bug80
  • [*][*][*][*]
Mustang lowpass test
Reply #9
I'm able to ABX up to 17 kHz (result 12/16, for the first 8 trials I used my headphones, the second 8 trials using my speakers. Using my speakers, I got a 8/8 score).

Here is the 17 kHz sample.

  • Lyx
  • [*][*][*][*][*]
Mustang lowpass test
Reply #10
Quote
I'm able to ABX up to 17 kHz (result 12/16, for the first 8 trials I used my headphones, the second 8 trials using my speakers. Using my speakers, I got a 8/8 score).
[a href="index.php?act=findpost&pid=321805"][{POST_SNAPBACK}][/a]


Out of curiosity - where is your objective hearing-cutoff, when testing it with unnatural sounds(sine-wave) ?
  • Last Edit: 22 August, 2005, 02:20:13 PM by Lyx
I am arrogant and I can afford it because I deliver.

  • SebastianG
  • [*][*][*][*][*]
  • Developer
Mustang lowpass test
Reply #11
Quote
Pretty straightforward, using Matlab. For example, the filter for 15 kHz is equal to 1 from DC up to 14.5 kHz, is zero from 15.5 kHz to the Nyquist frequency and in between it has a

0.5*(1+cos(pi*x/N))

shape. See the figure below, where you can see both the frequency domain and the (minimum phased) time domain version.
[a href="index.php?act=findpost&pid=321793"][{POST_SNAPBACK}][/a]

And then ? Yulewalker ?

I simply did something like this to get "filter24"
> [b,a] = ellip(n,0.05,35,cutoff); // minimum phase IIR elliptic lowpass
> i1 = zeros(1,3000);
> i1(1000) = 1; // unit impulse
> i2 = filtfilt(b,a,i1);  // bidirectionally applied -> zero phase
> i3 = filter(b,a,i2); // and forwards only additionally
> wavwrite(i3(range),....)

I don't remember the actual values of 'n' and 'cutoff' (Probably n=6 and cutoff=14.5/22.05) but this gives you a filter with 0.15 dB passpand ripples and 105 dB stopband attenuation. It's neither minimum phase nor linear phase (sort of a trade-off, a good one i think).

btw: I didn't know you are already using minimum phase filters.

I guess, I'll do some ABXing tonight.


Sebi

  • bug80
  • [*][*][*][*]
Mustang lowpass test
Reply #12
Quote
Quote
I'm able to ABX up to 17 kHz (result 12/16, for the first 8 trials I used my headphones, the second 8 trials using my speakers. Using my speakers, I got a 8/8 score).
[a href="index.php?act=findpost&pid=321805"][{POST_SNAPBACK}][/a]


Out of curiosity - where is your objective hearing-cutoff, when testing it with unnatural sounds(sine-wave) ?
[a href="index.php?act=findpost&pid=321807"][{POST_SNAPBACK}][/a]

I don't know actually, it's a long time ago an audiogram was made for my ears. So, I've just performed a quick-and-dirty test, using sine waves I've created in Matlab (length 3 sec). I gave the sine waves an amplitude of -3 dB to avoid any clipping (and thus to avoid extra harmonics). I've set my hi-fi set at a normal listening volume.

The frequencies I tested where 16 kHz to 19 kHz, in steps of 500 Hz. I could hear the waves up to 18.5 kHz (very, very softly).

To really convince myself, I ABXed this wave against silence  The sine wave was windowed using a Hann window to avoid start/end effects. I forced myself to chose before the sample ended, because the ABX plugin of foobar2000 gives a click once the sine sample stopped.

The ABX result was 7/8.

I could ABX the 18 kHz with a 8/8 result.

edit: and now I'm having a headache.
  • Last Edit: 22 August, 2005, 02:57:24 PM by bug80

  • bug80
  • [*][*][*][*]
Mustang lowpass test
Reply #13
Quote
And then ? Yulewalker ?


No, I expanded the frequency domain to get negative frequencies also (F(omega) = conj(F(-omega)), I have a special toolbox for that kind of operations). After that I created a minum phase version using the rceps command. Finally, I transformed back to the frequency domain and filtered using:

Y(w) = F(w)X(w)

(frequency domain convolution).

Quote
I simply did something like this to get "filter24"
> [b,a] = ellip(n,0.05,35,cutoff); // minimum phase IIR elliptic lowpass
> i1 = zeros(1,3000);
> i1(1000) = 1; // unit impulse
> i2 = filtfilt(b,a,i1);  // bidirectionally applied -> zero phase
> i3 = filter(b,a,i2); // and forwards only additionally
> wavwrite(i3(range),....)

I don't remember the actual values of 'n' and 'cutoff' (Probably n=6 and cutoff=14.5/22.05) but this gives you a filter with 0.15 dB passpand ripples and 105 dB stopband attenuation. It's neither minimum phase nor linear phase (sort of a trade-off, a good one i think).

That certainly looks more official. 

Quote
I guess, I'll do some ABXing tonight.

If you'd like to use my samples, you can find them here in the range 14 to 19 kHz.

  • SebastianG
  • [*][*][*][*][*]
  • Developer
Mustang lowpass test
Reply #14
I did some ABXing with my own set of lowpass filters + Foobar2K + Convolver plugin.

Results:
delay-only vs. 14 kHz lowpass: 12/12
delay-only vs. 15 kHz lowpass: 12/12
delay-only vs. 16 kHz lowpass:  4/8

(delay-only is a delayed version of the original to compensate for the filters delay)


Sebi

  • Shade[ST]
  • [*][*][*][*][*]
Mustang lowpass test
Reply #15
Quote
How can you ABX cosine versus brickwall at 14 kHz while the number of downloads for the cosine file is zero 
[a href="index.php?act=findpost&pid=321792"][{POST_SNAPBACK}][/a]

Isn't the cosine-filtered version what bug80 posted at the top?  And the brickwall what's available on ff123?