Soekris no work with normalized values.
If the manufacturer's filters are simulated using MATLAB, each one has a different gain.
These are the maximum values of the current filters from the manufacturer.
dam1021,44100,8,1004,3999,6.4
6.4*0.121856689453125=0.779882
dam1021,44100,8,1005,3999,6.4
6.4*0.11328218648799343=0.72500599
dam1021,44100,8,1006,3999,6.4
6.4*0.068955347958631091=0.441314226
dam1021,44100,8,1007,3999,6.4
6.4*0.15039634256999757=0.96253659
dam1021,88200,4,1004,1999,3.2
3.2*0.221099853515625=0.707519531
dam1021,88200,4,1005,1999,3.2
3.2*0.20738172158894835=0.6636215090
dam1021,88200,4,1006,1999,3.2
3.2*0.14150686187062594=0.45282195
dam1021,88200,4,1007,1999,3.2
3.2*0.18662885483604397=0.59721233
dam1021,176400,2,1004,999,1.6
1.6*0.44219970703125=0.70751953
dam1021,176400,2,1005,999,1.6
1.6*0.40071213074587686=0.6411394
dam1021,176400,2,1006,999,1.6
1.6*0.25260014993372831=0.40416023
dam1021,176400,2,1007,999,1.6
1.6*0.30006640287583225=0.48010624
dam1021,352800,1,4,1,0.8
0.8*1.0=0.8
dam1021,352800,8,1008,239,8
8*0.0850830078125=0.6806640
dam1021,352800,8,1010,239,8
8*0.092368308679724967=0.738946469
I will work with filters normalized to 1 and with gains all set to 0.8, just like at 352800 Hz. To avoid any mistakes, I will ensure with measurements that there is no distortion at 0 dB. I will also measure the manufacturer's 2K and 4K filters to compare them with mine and ensure everything is done correctly.
- The DAC might have a gain of +10 dB, if I recall correctly.
- And now, another gain has been added to equalize something unknown.
If the manufacturer's filters are simulated using MATLAB, each one has a different gain.
These are the maximum values of the current filters from the manufacturer.
dam1021,44100,8,1004,3999,6.4
6.4*0.121856689453125=0.779882
dam1021,44100,8,1005,3999,6.4
6.4*0.11328218648799343=0.72500599
dam1021,44100,8,1006,3999,6.4
6.4*0.068955347958631091=0.441314226
dam1021,44100,8,1007,3999,6.4
6.4*0.15039634256999757=0.96253659
dam1021,88200,4,1004,1999,3.2
3.2*0.221099853515625=0.707519531
dam1021,88200,4,1005,1999,3.2
3.2*0.20738172158894835=0.6636215090
dam1021,88200,4,1006,1999,3.2
3.2*0.14150686187062594=0.45282195
dam1021,88200,4,1007,1999,3.2
3.2*0.18662885483604397=0.59721233
dam1021,176400,2,1004,999,1.6
1.6*0.44219970703125=0.70751953
dam1021,176400,2,1005,999,1.6
1.6*0.40071213074587686=0.6411394
dam1021,176400,2,1006,999,1.6
1.6*0.25260014993372831=0.40416023
dam1021,176400,2,1007,999,1.6
1.6*0.30006640287583225=0.48010624
dam1021,352800,1,4,1,0.8
0.8*1.0=0.8
dam1021,352800,8,1008,239,8
8*0.0850830078125=0.6806640
dam1021,352800,8,1010,239,8
8*0.092368308679724967=0.738946469
I will work with filters normalized to 1 and with gains all set to 0.8, just like at 352800 Hz. To avoid any mistakes, I will ensure with measurements that there is no distortion at 0 dB. I will also measure the manufacturer's 2K and 4K filters to compare them with mine and ensure everything is done correctly.
Interesting, a link would be much appreciated - thanks!You saw the thread about that tool for defining and reverse engineering filters here in the forum?
//
This is a set of 4k filters.
- 4k-Kaiser linear phase filter that improves on the manufacturer's version.Has less ringing in the passband, attenuates more in the stopband 170 dB, and has a higher cutoff frequency. It also has better bass response and a narrower impulse response. Best fase response.
- 4K-Nyquist. Linear pase filter improves the manufacturer´s versión. Has less ringing in the passband. Attenuates more in the stopband 170 dB. Has a higher cutoff frequency plaint to 22 kHz. It also has better bass response and a narrower impulse response. The Best fase response to 22 kHz. At the sampling point, it is exactly the value of the sample. The rest of the points are interpolated by 4k. This is the one with the least theoretical distortion.
- Quasi-NOS is a very short impulse with an impulse response almost as good as NOS but with a flatter frequency response. It's very similar to the manufacturer's F7 but shows less distortion.
- NOS. It makes the DAM behave exactly like a NOS DAC.
Attachments
An example of a Matlab program on how I created them, in case anyone is interested in developing other filters. I had to develop graphs to experiment with values and compare the improvements with those from the manufacturer. I also created filters for 88, 96, 176, 192, and the F2 filter, but I’m not including them here as they are similar. I also read the manufacturer's coefficients to compare them with mine on the same graph, but I’m not including those here either
Attachments
I've just uploaded this filter set to my DAM1121, and am currently using the Nyquist filter. Sounds excellent, the best filter I've tried so far. Is the Kaiser better in any way Oneclock? Either way, thanks very much for making these.
I use the Nyquist filter because I believe it performs the best in both measurements, and sound quality for me.
The filter design has been an evolving process over two months, especially during vacation.
The Equiripple Parks-McClellan filters are the ones that offer the best rejection in the stopband and the least ripple in the passband for a smaller number of coefficients. That’s why they are so popular in audio. These were the first filters I attempted.
However, for filters with many coefficients, they are not convergent. I’ve only managed to create Parks-McClellan filters with 2k coefficients similar to Paul’s. The 4k ones impossible, only converge for a 2x oversampling as indicated in Matlab’s documentation.
The second most efficient filters, if you want minimal ripple and strong attenuation, are the Kaiser filters. I’ve seen that they clearly outperform Paul’s 2k filter as well as Soekris's, offering less ripple, a higher cutoff frequency at -3 dB, earlier and stronger attenuation in the stopband, and better phase response. Therefore, the Kaiser filter I have used is the best achievable with 4k real coefficients.
More efficient filters can be achieved, but they require more than 10 decimal places. When using MKROM to convert them to the .skr file, all the coefficients become zero, just like with the Soekris soft filter, for example, which in reality has very few coefficients, not 4k, because most of them are zeros.
Next, I wanted to have a Nyquist filter because I like that every 8th sample has the real value from the original file due to its characteristic of minimal distortion and zero intersymbol interference. It’s possible to request better specifications, but they aren’t realistic because ned 11 decimal when applying MKROM, many coefficients are set to zero, resulting in a truncated filter with fewer coefficients.
I was expecting a significant improvement with less distortion than the Kaiser, but the results weren’t as clear in the measurements. My Motu card is not a precision instrument, and the measurements are not very repeatable. I really only used them to check that I wasn’t doing anything wrong, for which they are useful, but they’re not to be taken as a 100% reference.
The filter design has been an evolving process over two months, especially during vacation.
The Equiripple Parks-McClellan filters are the ones that offer the best rejection in the stopband and the least ripple in the passband for a smaller number of coefficients. That’s why they are so popular in audio. These were the first filters I attempted.
However, for filters with many coefficients, they are not convergent. I’ve only managed to create Parks-McClellan filters with 2k coefficients similar to Paul’s. The 4k ones impossible, only converge for a 2x oversampling as indicated in Matlab’s documentation.
The second most efficient filters, if you want minimal ripple and strong attenuation, are the Kaiser filters. I’ve seen that they clearly outperform Paul’s 2k filter as well as Soekris's, offering less ripple, a higher cutoff frequency at -3 dB, earlier and stronger attenuation in the stopband, and better phase response. Therefore, the Kaiser filter I have used is the best achievable with 4k real coefficients.
More efficient filters can be achieved, but they require more than 10 decimal places. When using MKROM to convert them to the .skr file, all the coefficients become zero, just like with the Soekris soft filter, for example, which in reality has very few coefficients, not 4k, because most of them are zeros.
Next, I wanted to have a Nyquist filter because I like that every 8th sample has the real value from the original file due to its characteristic of minimal distortion and zero intersymbol interference. It’s possible to request better specifications, but they aren’t realistic because ned 11 decimal when applying MKROM, many coefficients are set to zero, resulting in a truncated filter with fewer coefficients.
I was expecting a significant improvement with less distortion than the Kaiser, but the results weren’t as clear in the measurements. My Motu card is not a precision instrument, and the measurements are not very repeatable. I really only used them to check that I wasn’t doing anything wrong, for which they are useful, but they’re not to be taken as a 100% reference.
For me, the best filter is the Nyquist filter. I don't plan on improving new filters. I have explained that no improvements can be made because it would require having more decimals in the coefficients that Mkrom sets in the ROM. The only possible improvement would be if Parks-McClellan filters could be used, but Matlab crashes when you request 4k coefficients with those functions. It work in 2k coefficents.
Hi,
I have a ~5year old 1941 board with the same age firmware and filter package, from which I have been using the NOS one. Would it be safe to upload the latest developement filter package with the old firmware? I read somewhere that replacing the old one with new led to non working board. Is the improvement - of course for you - significant enough worth trying? Is the old firmware able to handle the new filter package?
Thanks,
I have a ~5year old 1941 board with the same age firmware and filter package, from which I have been using the NOS one. Would it be safe to upload the latest developement filter package with the old firmware? I read somewhere that replacing the old one with new led to non working board. Is the improvement - of course for you - significant enough worth trying? Is the old firmware able to handle the new filter package?
Thanks,
- Home
- Source & Line
- Digital Line Level
- Filter brewing for the Soekris R2R