Filter brewing for the Soekris R2R

oneclock – thank you for posting you phasing measurement. One thing not clear to me. Does it have any meaning where on the timeline the impulse peak are? I understand its usually less desirable with pre-ringing than post. But I’m unsure if the placement of the peak in your measurement are something we can read something from?

No. Impulse peak time is simply the filter shape and the coefficients number. More coefficients greater delay. But I see 2 ms delay is no important.

What is interesting is the slope time length of ascent and descent. It would have been ideal if the graph soften the peaks and valleys but the program does not make.

And if some filter spoiling phase too and can tweak to improve like 1021SA2F2v1.
 
Last edited:
Disabled Account
Joined 2005
On another note: have Blue - Solar Fields playing while I'm typing... nice ambient stuff. Have you tried Connect.Ohm - 9980?

Yes I have. I've a bit of an Ultimae fan since I discovered their Fahrenheit Project releases in the mid-2000's. ;)

On the filter R&D front:
I've done the filter co-efficents using the v3 settings but sweeping phase for Minimum (p=0) through to Linear (p=50) in increments of 5. v1-3 are all done using p=30. I'll get around to making up filter files for these later today.

I had a quick play around with Octave's FIR2 routine and found I can get very similar but non-identical results to what SoX produces using b= to set kaiser-window beta.
 

Attachments

  • SoXvsFIR2.png
    SoXvsFIR2.png
    26.5 KB · Views: 440
Last edited:
Disabled Account
Joined 2005
I was about to post up batch of v3 filters when I had a listen to the -p0 version...

I had a suspicion that the minimum and intermediate phase weren't quite as sexy as the cheers leaders would have you believe. You only have to have a peek at the step response to see what is going to happen.

Changing phase doesn't remove ringing from the filter, it simply shifts it. And there-in lies the rub. If you move all the pre-ringing energy to after the impulse you double the amplitude of the post ringing, and that means the overshoot doubles too. Barf.

This plot shows the step response of the filter coefficients.

attachment.php


Orange is p0 (-M) , green p30 , and blue p50 (-L).

-p30 sounds ok using volume control, -p0 was just plain awful.

It would be possible to drop the gain on these filter but the output is going to end up very low.

I've attached the folder of filters but be aware that anything less that p25-30 is likely to distort badly.
 

Attachments

  • ImpComp.png
    ImpComp.png
    46.9 KB · Views: 1,172
  • PhaseTest.zip
    195.1 KB · Views: 89
Last edited:
Controlling Phase with Sox on

Once again an excellent post Paul. I been meaning to test exactly what you just did there. But can’t for the life of me figure out how to do those impulse plots?

From the SoX manual we can read:
Code:
A phase response setting may be used to control the distribution of any 
transient echo between ‘pre’ and ‘post’: with minimum phase, there is 
no pre-echo but the longest post-echo; with linear phase, pre and post 
echo are in equal amounts (in signal terms, but not audibility terms); 
the intermediate phase setting attempts to find the best compromise 
by selecting a small length (and level) of pre-echo and a medium 
lengthed post-echo.

Minimum, intermediate, or linear phase response is selected using 
the −M, −I, or −L option; a custom phase response can be created 
with the −p option. Note that phase responses between ‘linear’
and ‘maximum’ (greater than 50) are rarely useful.

Is –p given in samples or milliseconds?
 
Yes I have. I've a bit of an Ultimae fan since I discovered their Fahrenheit Project releases in the mid-2000's. ;)

Speaking of Ultimae Records, the track "Alone" by Jaia from the Fahrenheit Five always comes to mind as the most deep, spacious and dimensional one from the entire series... Even on my plain old 1616m it sounds incredible.

Would be interesting to supply the most "dimensional" filter for that track, brewed by an Ultimae fan ;)
 
Hi, Got a quick prototype up and running while awaiting remaining parts to arrive. Tried just about all the filters on here - thank you - having read all 50-something pages with interest. Likely will have a go myself at some point once I figure out how I can measure the performance of the filters with my Tek TDS2024. I prefer the 'Crap V2 filters', the original and the latest one posted a few hours back. In my mind they offer greater weight and scale to the sound, dynamics if you like, and I think the most transparent of the lot. My aim, simply to reporduce what is in the original mix without colouration or bias of any kind. Guess that's what we all look for, kind of....??

Thanks for all the brilliant work and helping me enjoy playing electronics & music once again!

Andrew
 
Disabled Account
Joined 2005
Once again an excellent post Paul. I been meaning to test exactly what you just did there. But can’t for the life of me figure out how to do those impulse plots?



From the SoX manual we can read:

Code:
A phase response setting may be used to control the distribution of any 

transient echo between ‘pre’ and ‘post’: with minimum phase, there is 

no pre-echo but the longest post-echo; with linear phase, pre and post 

echo are in equal amounts (in signal terms, but not audibility terms); 

the intermediate phase setting attempts to find the best compromise 

by selecting a small length (and level) of pre-echo and a medium 

lengthed post-echo.



Minimum, intermediate, or linear phase response is selected using 

the −M, −I, or −L option; a custom phase response can be created 

with the −p option. Note that phase responses between ‘linear’

and ‘maximum’ (greater than 50) are rarely useful.



Is –p given in samples or milliseconds?
neither!
0 gives 100% post-ringing and 100 gives 100% pre-ringing. 50 gives an equal balance between pre and post ringing or your standard linear phase impulse.

The step response was done in fuzzmeasure.
 
Ahh, gotcha we just shift the null-point. Make sense. What idiot other than me would order a filter with ringing?
"Pretty please, can I please have a filter with 90uS pre-ringing please?"
“Sir, we feel so sorry for your missing brain you can have two in dual mono with all the ringing you would ever want and need to compliment your tinnitus.”

What files do you feed fuzzmeasure? I have REW and Holm installed. But they both laughs at me when I try to import files.
Holm can’t make sense of anything above 192kHz. In my mind we need to simulate with intended coefficient table?
I can have Holm do impulse plot with
Code:
sox --plot octave -r 44.1k -n output.wav synth 1 noise  sinc  -b15 -L -20.5k -t3800  > filterDM_Linear.wav
But I’m not sure if that 44.1k fs plot would equal to? edit: fs would of course, I ment impulse respons with 44.1 fs?
Code:
sox --plot octave -r 352.8k -n output.wav synth 1 noise  sinc  -b15 -L -20.5k -t3800  > filterDM_Linear.wav

An externally hosted image should be here but it was not working when we last tested it.


Is it possbile to do impulse plots with Octave by altering this code?
Code:
[h,w]=freqz(b,1,4096);
plot(176400*w/pi,20*log10(h))
 
Last edited:
Here's some comments from Mike Moffat @Schiit regarding the filter design of Yggdrasil DAC, which is claimed by those who heard it as the next best thing.

" That the DSP filter in the Yggy is closed form, and preserves all of the original samples is commonly known. The filter is also time domain optimized which means the phase info in the original samples are averaged in the time domain with the filter generated interpolated samples to for minimum phase shift as a function of frequency from DC to the percentage of nyquist - in our case .968. Time domain is well defined at DC - the playback device behaves as a window fan at DC - it either blows (in phase) or sucks (out). It is our time domain optimization that gives the uncanny sonic hologram that only Thetas and Yggys do. (It also allows the filter to disappear. Has to be heard to understand.) This is combined with a frequency domain optimization which does not otherwise affect the phase optimization. The .968 of nyquist also gives us a small advantage that none of the off-the shelf FIR filters provide: frequency response out to 21.344KHz, 42.688KHz, 85.3776KHz, and 170.5772KHz bandwidth for native 1,2,4, and 8x 44.1KHz SR multiple recordings - the 48KHz table is 23.232, 46.464, 92.868, and 185.856KHz respectively for 1,2,4, and 8x.

The Pacific Microsonics PM100 filter (HDCD) was a variation of all of the off-the shelf cookbook filters of the late 80's with the standard Frequency Domain successive approximation coefficient calculation found in the Burr-Brown, Phillips, Analog Devices, and are still used on the front ends of most delta-sigma DACs today. I cannot comment beyond that because I was not interested in a format that had already been condemned to stillbirth because of its required encode - exactly what's wrong with DSD. You have to get all of the studios on board. As I have said before, this leads to recordings like: The Folsom Prison Orchestra playing Regional Polkas of the Balkan States, or better yet, the folkloric Orkney Island Shepherds Cries of Ecstasy upon Summer Moonlight. The latter was so well recorded, I've heard, that the listener could hear the shepherds gently guiding the young kids' rear legs into their high topped boots as the objects of the rapturous ecstasy gently bleat. Those recordings are not for me - my musical tastes are quite ordinary - my products support the 99.999 per cent of recordings. Again, I digress. Since lower frequency wavelengths are measured in tens of feet, placement in image gets increasingly wrong as a function of decreasing frequency in non time domain optimized recordings - these keep the listener's ability to hear the venue - not to mention the sum of all of the phase errors in the microphones, mixing boards, eq, etc on the record side. An absolute phase switch is of little to no value in a stochastic time domain replay system."
 
Disabled Account
Joined 2005
Code:
fs=352800;
[H,f] = freqz (b);

figure(1);
subplot(211);
plot((f/(2*pi))*fs,20*log10(abs(H)));
xlabel('Frequency (hz)');
ylabel('Amplitude Response (dB)');
axis([17000, 19000, -0.2, .1]);
grid('on');

subplot(212);
plot(f/(2*pi)*fs,20*log10(abs(H)));
xlabel('Frequency (hz)');
ylabel('Amplitude Response (dB)');
axis([0, fs/2, -160 5]);
grid('on');
print -FHelvetica -r72 -dpng fir_response.png;
figure(2);
subplot(111);
[Hi, Ti] = impz(b);
plot(Ti,Hi);
grid('on');
axis([0,size(b,1),-0.05,0.13]);
print -FHelvetica -r72 -dpng fir_impulse.png;

dlmwrite("imp441_test.txt", b, "delimiter", "\\r");

What I do is run the plot file which creates array "b". Then I run the above which is saved as SoxPlot.m

Octave has a impz() function that will generate the impulse plot.
 
Disabled Account
Joined 2005
Here's some comments from Mike Moffat @Schiit regarding the filter design of Yggdrasil DAC, which is claimed by those who heard it as the next best thing.

" That the DSP filter in the Yggy is closed form, and preserves all of the original samples is commonly known. The filter is also time domain optimized which means the phase info in the original samples are averaged in the time domain with the filter generated interpolated samples to for minimum phase shift as a function of frequency from DC to the percentage of nyquist - in our case .968. Time domain is well defined at DC - the playback device behaves as a window fan at DC - it either blows (in phase) or sucks (out). It is our time domain optimization that gives the uncanny sonic hologram that only Thetas and Yggys do. (It also allows the filter to disappear. Has to be heard to understand.) This is combined with a frequency domain optimization which does not otherwise affect the phase optimization. The .968 of nyquist also gives us a small advantage that none of the off-the shelf FIR filters provide: frequency response out to 21.344KHz, 42.688KHz, 85.3776KHz, and 170.5772KHz bandwidth for native 1,2,4, and 8x 44.1KHz SR multiple recordings - the 48KHz table is 23.232, 46.464, 92.868, and 185.856KHz respectively for 1,2,4, and 8x.

The Pacific Microsonics PM100 filter (HDCD) was a variation of all of the off-the shelf cookbook filters of the late 80's with the standard Frequency Domain successive approximation coefficient calculation found in the Burr-Brown, Phillips, Analog Devices, and are still used on the front ends of most delta-sigma DACs today. I cannot comment beyond that because I was not interested in a format that had already been condemned to stillbirth because of its required encode - exactly what's wrong with DSD. You have to get all of the studios on board. As I have said before, this leads to recordings like: The Folsom Prison Orchestra playing Regional Polkas of the Balkan States, or better yet, the folkloric Orkney Island Shepherds Cries of Ecstasy upon Summer Moonlight. The latter was so well recorded, I've heard, that the listener could hear the shepherds gently guiding the young kids' rear legs into their high topped boots as the objects of the rapturous ecstasy gently bleat. Those recordings are not for me - my musical tastes are quite ordinary - my products support the 99.999 per cent of recordings. Again, I digress. Since lower frequency wavelengths are measured in tens of feet, placement in image gets increasingly wrong as a function of decreasing frequency in non time domain optimized recordings - these keep the listener's ability to hear the venue - not to mention the sum of all of the phase errors in the microphones, mixing boards, eq, etc on the record side. An absolute phase switch is of little to no value in a stochastic time domain replay system."

I wish people would turn on their Bullschitt detectors more often.

The entire paragraph on HDCD is so full of opinionated disinformation and garbage that it is pretty obvious the "Fulla" was named in honour of Mike.

They might have some magic happening but they aren't giving much away about how it's done with the broad brush strokes and "I'm a celebrity, listen to me" presentation. Sounds like that little infomercial would have given the guys at ComputerAudioPhool a boner. Ooooohhhh "uncanny sonic hologram", best sell my "last months fashion DAC" and buy one.

You'll have to excuse me, I have a virus at the moment and I'm feeling pretty schitt.
 
Last edited:
Disabled Account
Joined 2005
Speaking of Ultimae Records, the track "Alone" by Jaia from the Fahrenheit Five always comes to mind as the most deep, spacious and dimensional one from the entire series... Even on my plain old 1616m it sounds incredible.

Would be interesting to supply the most "dimensional" filter for that track, brewed by an Ultimae fan ;)

That has forced me to upgrade my old emusic mp3 copy of Vol 5 to lossless. They'll probably bring out a 24bit version next week ;)

I'll have a play around and add that as a reference track.
 
That's kind of what i feel too, just want to see other people's opinion. Does the first paragraph make any sense? A number of studies seem to show that human is not very sensitive to phase change, other than group delays, otherwise most speakers will sound like crap.

No, the whole thing is just marketing crap. If an engineer wrote it they should be totally ashamed. Importantly, we are not very sensitive to phase, we do use phase for placement information up to about 800Hz, above that the the size of the head means that we need to use other cues (ILDs, pinna effects etc). Importantly, the last statement "placement in image gets increasingly wrong as a function of decreasing frequency in non time domain optimised recordings" is fundamentally wrong and is against the laws of physics and how we hear.

I could go on but it's pointless in the face of a lack of logic and science.
 
Disabled Account
Joined 2005
That's kind of what i feel too, just want to see other people's opinion. Does the first paragraph make any sense? A number of studies seem to show that human is not very sensitive to phase change, other than group delays, otherwise most speakers will sound like crap.

It's a bit hard to tell what the technical details are. Maybe zfe can make sense of it, has he a much better grasp on the technical/math than I do.

BTW this is from Goodwin's High End - HDCD

High Definition Compatible Digital® (HDCD®) is a patented encode/decode process for delivering better audio quality on CDs. HDCD has been used in the recording of many thousands of CD titles, which include more than 250 Billboard Top 200 recordings and more than 175 GRAMMY® nominations, and account for well more than 300 million CDs sold. (As an example the following links are listings of 4 years of the HDCD Grammy nominees in 1998, 1999, 2000, and 2001)

Goat Herds and Prison Choirs must have been big in the lead up to the Millennium.

There is a listing of 5000 HDCD titles here: Goodwin's High End - HDCD Recordings

It would have been easy enough to dismiss HDCD on the basis that Micro$oft purchased the HDCD IP in 2000 when they bought Pacific Microsonics, and the studio mastering side was basically left to die. Even so the Pacific Microsonics Model II ADC/DAC was regarded as one of the best studio convertors available even as late as 2010-11.
 
Disabled Account
Joined 2005
DEQ,

What I'm doing is processing a 1 sample chirp using SoX's fir option, then using the resulting .wav in fuzzmeasure.

The chirp is 5 seconds of silence with a single 0dBFS sample in the middle.

Code:
sox /path/to/TestChirp441.wav -b24 -r352.8k /path/to/output.wav upsample 8 fir /path/to/filter_coefficients.txt vol 8
 

Attachments

  • TestChirp441.zip
    1.1 KB · Views: 78
Disabled Account
Joined 2005
Hi, Got a quick prototype up and running while awaiting remaining parts to arrive. Tried just about all the filters on here - thank you - having read all 50-something pages with interest. Likely will have a go myself at some point once I figure out how I can measure the performance of the filters with my Tek TDS2024. I prefer the 'Crap V2 filters', the original and the latest one posted a few hours back. In my mind they offer greater weight and scale to the sound, dynamics if you like, and I think the most transparent of the lot. My aim, simply to reporduce what is in the original mix without colouration or bias of any kind. Guess that's what we all look for, kind of....??

Thanks for all the brilliant work and helping me enjoy playing electronics & music once again!

Andrew

Sorry I missed your post in the flurry....

Glad you are enjoying.

The CRaP filters seem to reasonably good. The original CRaP Magic has a fir2 filter that rolls off a bit too early, and is probably what was TNT was commenting on - mind you it was above 20kHz so shouldn't be too audible in theory.

My preference is for the second revision FIR2 filter as this stays "out of the way" more, and I'm using these on all the recent filters.

I'm enjoying the latest round of filters - the IP3p30->50 are all pretty listenable. However in comparison to a filter that is flat to 19.5kHz they sound slightly "dark" to my ears.

I was just experimenting with a filter that rolled off fairly slowly above 19kHz but didn't fully attenuate until 28.5kHz. This combination didn't work especially well - there seemed to be distortion in piano notes* that isn't apparent using the IPv3p35 for example.
As a point of reference the CRaP Magic filter was only 0.1dB down at 20kHz but attenuated fully by 25kHz.

Perhaps I need to do an IPv4 with the corner frequency lifted further again...

cheers
Paul

* The piano track was Bernie Worrell's "I'd Rather Be With You" from Elevation: The upper air; I'd Rather Be With You | Bernie Worrell

Other selected listening matter today:

- The Pleiadians - Seven Sisters from Family of Light: https://www.youtube.com/watch?v=kBh9ZRHAxBg
- Bill Laswell "Nothing" from City of Light: https://www.youtube.com/watch?v=4i3Acuoshgc
- Paul Schütze - The Surgery of Touch: The Surgery of Touch | Paul Schütze
 
Importantly, we are not very sensitive to phase, we do use phase for placement information up to about 800Hz, above that the the size of the head means that we need to use other cues (ILDs, pinna effects etc). Importantly, the last statement "placement in image gets increasingly wrong as a function of decreasing frequency in non time domain optimised recordings" is fundamentally wrong and is against the laws of physics and how we hear.

I may have some problems with the language, but are you not doing both the same statement?:
"The correct phase of low frequencies is important (the lower the more important) for correct placement".

"time domain optimized recordings" seems to be their term for trying to preserve phase.
 
Disabled Account
Joined 2005
I may have some problems with the language, but are you not doing both the same statement?:
"The correct phase of low frequencies is important (the lower the more important) for correct placement".

"time domain optimized recordings" seems to be their term for trying to preserve phase.


So I guess that you can't really decipher what Mike is claiming beyond his vague allusions to phase correction and kitchen exhaust fans?