Go Back   Home > Forums > Source & Line > Digital Line Level

Digital Line Level DACs, Digital Crossovers, Equalizers, etc.

Please consider donating to help us continue to serve you.

Ads on/off / Custom Title / More PMs / More album space / Advanced printing & mass image saving
Reply
 
Thread Tools Search this Thread
Old 14th June 2011, 03:31 PM   #11
diyAudio Member
 
steph_tsf's Avatar
 
Join Date: Mar 2008
Hi abraxalito,

what I intend to experiment is a so-called smart crossover enabling all sorts of topologies like the Bessel, Butterworth, Linkwitz-Riley, Lipshitz-Vanderkooy substractive phase-compensated and the the Liphsitz-Vandekooy substractive delay-compensated. Up to 3-way. In stereo.

Plus a Linkwitz transform (aka deep bass flattener) on all outputs for partially compensating the natural speaker highpass roll off.
Plus a global tone control using a few 1st order shelving filters and a few 2nd order bandpass equalizers.
Plus a protection against very low frequencies in the form of a highpass filter at the input.
Plus a short delay on every output for compensating any speaker time misalignment.

It looks quite complicated at first glance but in reality there are only a few routing switches. I'll draw a block diagram if you are interested.

The idea of using multiple ARM chips equipped with a single I2S, all hooked on a common stereo ADC, is a good idea.
Unfortunately, this may prove unpractical when considering substractive crossover arrangements where one ARM needs to output the lowpass signal to a DAC, while it also needs to send some intermediate digital audio to another ARM. I'll take some time thinking about this.

Yes indeed, the Cortex M0 are good candidates also, even if they are not equipped with an accumulator. The big advantage is in their 32x32=64 bit multiplication.

The Cortex M4 should be a massive hit, like the Freescale Kinetis and NXP LPC43xx. They run at more than 100 MHz and they have a fast 32x32=64 MACC instruction.

Like you I am very positive about ARM in DSP audio, and I will be even more positive after finding inexpensive ARM chips equipped with 4 serial synchronous interfaces, three should be able to emulate three I2S ports with one common Frame_Sync pin, and one should be able to SPI-control the volumes and the codec modes.

Or maybe, finding inexpensive ARM chips equipped with one TDM serial port, which is the multichannel version of I2S. Usually, one TDM serial port can handle up to 8 audio channels as outputs.

Or maybe, finding inexpensive ARM chips equipped with a HD audio port, which is a special version of TDM, also able to handle up to 8 audio channels as outputs.

What development tool are you using for ARM ? Is it affordable ? Are there decent debug possibilities, well suited to realtime processing ?

Steph
  Reply With Quote
Old 15th June 2011, 01:32 AM   #12
diyAudio Member
 
steph_tsf's Avatar
 
Join Date: Mar 2008
IIR_Lab v1.00
All functions working properly.
See attached files.

Need more functions ? Ask me here.

Steph
Attached Images
File Type: jpg IIR_Lab v1.00.jpg (272.7 KB, 210 views)
Attached Files
File Type: zip IIR_Lab v1.00 install.zip (228.9 KB, 59 views)
  Reply With Quote
Old 24th July 2011, 12:26 AM   #13
PHEONIX is offline PHEONIX  Australia
diyAudio Member
 
Join Date: Jul 2004
Location: Australia
Hello Steph

What hardware do you need for this to be played with . Sorry for the stupid questions.

Regards
Arthur
  Reply With Quote
Old 24th July 2011, 01:11 AM   #14
PHEONIX is offline PHEONIX  Australia
diyAudio Member
 
Join Date: Jul 2004
Location: Australia
Hello Steph

I read the first part of the thread , your program creates the IIR coefficients for the filter your are going to generate.


I would like to build the hardware of what you are preposing, just a thought have you thought of using the Sabre dac ES9018 it gives 8 high performance DAC outputs. The input ADC could be the ES90102A which is high performance also .

Regards
Arthur
  Reply With Quote
Old 24th July 2011, 01:19 AM   #15
diyAudio Member
 
steph_tsf's Avatar
 
Join Date: Mar 2008
Quote:
Originally Posted by PHEONIX View Post
What hardware do you need for this to be played with ?
I would say any hardware you dare submitting me. A nice proposition would be the Elektor DSP56374 board, once fitted with multiple DACs at the output. Another nice proposition would be a x86 PC running Windows, using the built-in Realtek 6 channel HDaudio subsystem or a USB2 Terratec DMX 6Fire multichannel audio card.
  Reply With Quote
Old 19th May 2012, 07:21 PM   #16
diyAudio Member
 
Join Date: Jun 2009
Quote:
Originally Posted by steph_tsf View Post
Then you need to specify how much highpass, bandpass and lowpass you want in the transfer function.
Steph, can you explain a bit more as to how the HP, BP, and LP quantities are blended? I do quite a bit with peaking EQ patches and, while HP = 1, 0.1 < BP < 10, LP = 1, produces peaking EQ I'm seeing more signs of numerical issues for filters centered at low normalized frequencies than I'd expect for double precision floats. It's probable this is just the relatively limited FFT length and window selection---any chance of a drop with 256k+ points and a Hanning or Kaiser window?

Regardless, thanks for putting this together. Handy tool for estimating various fixed point configurations against doubles. I ran a few cases with the biquad cascades I tend to use and found the noise floor on 32 bit storage with 32 bit accumulation is consistently -140dB or better. I'm not aware of any DACs which can compete with this, though there are a couple op amps that come close.

FWIW, install of 1.0.0.23 went smoothly on my Win7 laptop with non-admin login; prompts for elevation at all the right places. It did spend a while doing something with .NET 4 client profile install even though full .NET 4 was already installed---I think the the detection of the existing install was probably just slow. A small feature suggestion if you happen to revisit this: a vertical scroll bar for the UI and better detection of the task bar would be nice. My screen's 768 pixels high so the bottom of the graph gets chopped off after resizing IIR Lab's window so its lower portion isn't hidden behind the task bar.
  Reply With Quote
Old 20th May 2012, 01:25 AM   #17
Sin Bin
 
Join Date: Sep 2007
Location: Hangzhou - Marco Polo's 'most beautiful city'. 700yrs is a long time though...
Blog Entries: 84
Send a message via MSN to abraxalito Send a message via Yahoo to abraxalito Send a message via Skype™ to abraxalito
Quote:
Originally Posted by twest820 View Post
I ran a few cases with the biquad cascades I tend to use and found the noise floor on 32 bit storage with 32 bit accumulation is consistently -140dB or better. I'm not aware of any DACs which can compete with this, though there are a couple op amps that come close.
How do you go about measuring the noise floor? Estimate it from an FFT or some other method?
  Reply With Quote
Old 20th May 2012, 02:36 AM   #18
diyAudio Member
 
Join Date: Jun 2009
Yep, FFT estimate. IIR Lab displays the floor in its upper right graph, though most numerical configurations require selecting a lower bound smaller than the default of -120dB to see it. Provided you choose one of the Fs/2^n stimulus frequencies to get round the window, anyway---with other frequencies you'll just get the window's sideband level (unless the arithmetic's truly atrocious).
  Reply With Quote
Old 20th May 2012, 09:11 AM   #19
diyAudio Member
 
steph_tsf's Avatar
 
Join Date: Mar 2008
Quote:
Originally Posted by twest820 View Post
Steph, can you explain a bit more as to how the HP, BP, and LP quantities are blended? I do quite a bit with peaking EQ patches and, while HP = 1, 0.1 < BP < 10, LP = 1, produces peaking EQ I'm seeing more signs of numerical issues for filters centered at low normalized frequencies than I'd expect for double precision floats. It's probable this is just the relatively limited FFT length and window selection---any chance of a drop with 256k+ points and a Hanning or Kaiser window?
The blend occurs thanks to the non-recursive coefficients. In IIR_Lab, define four IIRs (IIR1, IIR2, IIR3, IIR4) having the same F and Q. Play with their HP, BP, LP factors and observe how the CDA, CDB and CDC coefficients get modified. Observe how the CRA and CRB coefficients remain the same. In IIR_Lab, the four IIRs get connected in series. Your PEQ (parametric equalizer) is thus a series one, not a "parallel" one that you may find in "graphic" equalizers, those last ones needing to fiddle with Q.
I tried to reproduce your low frequency PEQ at 30 Hz Q=0.707 with HP = 1, 0.1 < BP < 10, LP = 1. On my side, the SpectrumGen plot doesn't exhibit distorsion using the High Resolution (Double Float). FFT size 65536 and test signal Fs/2048. SpectrumPlot from 10 Hz to 1000 Hz, Rect. Window. The corresponding BodeGen is clean (+20db to -20dB), Triangle Window, which means that the 65536 FFT size remains adequate. If you switch to 24 bit storage and 56 bit Acc, you get a -90 dB H2 distorsion, -98dB H3 distorsion on a 0dB signal. This being said, I agree that for the BodeGen plot, using a more elaborate window like Hanning or Kaiser could deliver cleaner plots, minimizing the disturbance caused by the non-periodic nature of the test signal, which is a white noise in case of the BodeGen plot.

Quote:
Originally Posted by twest820 View Post
FWIW, install of 1.0.0.23 went smoothly on my Win7 laptop with non-admin login; prompts for elevation at all the right places. It did spend a while doing something with .NET 4 client profile install even though full .NET 4 was already installed---I think the the detection of the existing install was probably just slow. A small feature suggestion if you happen to revisit this: a vertical scroll bar for the UI and better detection of the task bar would be nice. My screen's 768 pixels high so the bottom of the graph gets chopped off after resizing IIR Lab's window so its lower portion isn't hidden behind the task bar.
I just did an install on a fresh computer, a HP DM1-4033SF having a 1366x768 screen, running Windows 7. Like you wrote, the install automatically triggered a fresh .net client download, quite annoying. Like you wrote, there was a security warning asking for the IIR_Lab install confirmation. Regarding the screen size, I wrote IIR_Lab on a WinXP laptop equipped with a 1280x800 screen. Next time I modify IIR_Lab, I'll remember to fit it on a Win 7 computer hooked on a 1366x768 screen, and possibly also a 1280x720 screen using scroll bars.
  Reply With Quote
Old 20th May 2012, 04:24 PM   #20
diyAudio Member
 
Join Date: Jun 2009
Hmm, wiggles should be visible at Q = sqrt(2)/2. They get worse at higher Q. Attaching a few screen grabs from IIR lab on my side. I also found if I uncheck the BP box I get an even more ragged notch filter. And if I uncheck HP and LP in the Q = 5 example I get a different BP response each time I hit the go button. Having looked at this more I am thinking perhaps the white Bode gen option is actually random rather than using a delta function and the result is errors in the Bode display due to the noise not averaging to zero at low normalized frequencies.

From what I can tell at a glance the filters seem to be direct form 1 and I get that the blending is controlled by the numerator coefficients since the denominator's the same for HP, BP, and LP biquads. The BP looks like the 0dB peak gain form and the weighting of each form by the HP, BP, or LP coefficient entered in the UI is clear. What's not clear to me is how the numerator coefficients are calculated. I can certainly try to reverse engineer the calculation method from watching the coefficents but was thinking it might be simpler just to ask.

Quote:
Originally Posted by steph_tsf View Post
Next time I modify IIR_Lab, I'll remember to fit it on a Win 7 computer hooked on a 1366x768 screen, and possibly also a 1280x720 screen using scroll bars.
Cool, thanks. Wouldn't hurt to tidy up the tab ordering of the controls too.
Attached Images
File Type: png IIR_Lab_1.00_Q0.5sqrt2.png (82.0 KB, 62 views)
File Type: png IIR_Lab_1.00_Q5.png (81.0 KB, 58 views)
File Type: png IIR_Lab_1.00_BPQ5.1.png (94.7 KB, 52 views)
File Type: png IIR_Lab_1.00_BPQ5.2.png (95.0 KB, 53 views)
File Type: png IIR_Lab_1.00_BPQ5.3.png (83.2 KB, 15 views)
  Reply With Quote

Reply


Hide this!Advertise here!
Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
great digital filters? audiophail Digital Line Level 1 20th December 2010 04:35 PM
Any new digital filters ? percy Digital Source 17 20th July 2008 12:39 AM
Why do manufacturers use crappy digital filters? John007 Digital Source 23 7th May 2008 06:54 AM
Convolving digital filters? birkinshawc Digital Source 4 1st April 2005 02:17 AM
do digital filters also affect the phse of a signal? weissi Digital Source 4 20th April 2003 01:32 AM


New To Site? Need Help?

All times are GMT. The time now is 01:02 PM.


vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2014 DragonByte Technologies Ltd.
Copyright Đ1999-2014 diyAudio

Content Relevant URLs by vBSEO 3.3.2