DSP Xover project (part 2)

Proof positive anybody can assemble one. Finding my eye glasses was the hardest part. All systems nominal. The green LED on the left is power on light so I know to shut it down when I quit. I searched Ebay for a Hitachi hd44780 compatible LCD, it works perfect. Case is from DIYAUDIO.com Working on filters now.

Wow! Looks great! Thanks for posting!
Could you give us the price of all the things you needed for this, please?
Like the power supply, case, etc.
And total cost.

Thanks in advance!
 
Proof positive anybody can assemble one. Finding my eye glasses was the hardest part. All systems nominal. The green LED on the left is power on light so I know to shut it down when I quit. I searched Ebay for a Hitachi hd44780 compatible LCD, it works perfect. Case is from DIYAUDIO.com Working on filters now.

Nice case - Looking forward to getting mine.

BTW has a fellow hifi and horn enthusiast over last night to hear the state of play...
Here's what he wrote;

"Popped over to Steve's last night for a chat and a listen to the changes. Very impressed with his new digital xover - it has enabled him to maintain his SQ and simplify the box count at less expense."
 
Just guessing, and I got a really great deal on the PS, $200.00 US over the price of the board. I always order lots of extra parts because I break things. The case was too big and had to be cut down. Still plenty roomy. The case was the biggest expense at about $110.00.

So if i make my case, i should be well under 100$ of expenses on top of the price of the board. Sounds alright!
 
Invalid file

I generated this with winfilter. It says invalid file. Any ideas if any of this is useable?
WinFilter version 0.8
WinFilter
akundert@hotmail.com

Filter type: Band Pass
Filter model: Chebyshev
Filter order: 3
Sampling Frequency: 11 KHz
Fc1 and Fc2 Frequencies: 0.010000 KHz and 0.400000 KHz
Pass band Ripple: 1.000000 dB
Coefficents Quantization: float

Z domain Zeros
z = -1.000000 + j 0.000000
z = -1.000000 + j 0.000000
z = -1.000000 + j 0.000000
z = 1.000000 + j 0.000000
z = 1.000000 + j 0.000000
z = 1.000000 + j 0.000000

Z domain Poles
z = 0.907420 + j -0.000001
z = 0.986475 + j 0.000049
z = 0.998642 + j -0.005695
z = 0.998642 + j 0.005695
z = 0.925096 + j -0.207834
z = 0.925096 + j 0.207834
***************************************************************/
#define Ntap 31

float fir(float NewSample) {
float FIRCoef[Ntap] = {
-0.01318605205881756600,
-0.01213193778689975400,
-0.00989219187616910410,
-0.00632938268982434840,
-0.00134853726907348910,
0.00509090718752715830,
0.01296367287171896500,
0.02216813883223336600,
0.03251713967905618000,
0.04373016282450652200,
0.05542574378511805300,
0.06711347073807252800,
0.07819105999269851400,
0.08791319419546603200,
0.09513813006434222700,
0.09867832723303528200,
0.09513813006434222700,
0.08791319419546603200,
0.07819105999269851400,
0.06711347073807252800,
0.05542574378511805300,
0.04373016282450652200,
0.03251713967905618000,
0.02216813883223336600,
0.01296367287171896500,
0.00509090718752715830,
-0.00134853726907348910,
-0.00632938268982434840,
-0.00989219187616910410,
-0.01213193778689975400,
-0.01318605205881756600
};

static float x[Ntap]; //input samples
float y=0; //output sample
int n;

//shift the old samples
for(n=Ntap-1; n>0; n--)
x[n] = x[n-1];

//Calculate the new output
x[0] = NewSample;
for(n=0; n<Ntap; n++)
y += FIRCoef[n] * x[n];

return y;
}
:D
 
You must delete all the lines that are not the coefficients. That is, this below, but also remove the commas:


-0.01318605205881756600,
-0.01213193778689975400,
-0.00989219187616910410,
-0.00632938268982434840,
-0.00134853726907348910,
0.00509090718752715830,
0.01296367287171896500,
0.02216813883223336600,
0.03251713967905618000,
0.04373016282450652200,
0.05542574378511805300,
0.06711347073807252800,
0.07819105999269851400,
0.08791319419546603200,
0.09513813006434222700,
0.09867832723303528200,
0.09513813006434222700,
0.08791319419546603200,
0.07819105999269851400,
0.06711347073807252800,
0.05542574378511805300,
0.04373016282450652200,
0.03251713967905618000,
0.02216813883223336600,
0.01296367287171896500,
0.00509090718752715830,
-0.00134853726907348910,
-0.00632938268982434840,
-0.00989219187616910410,
-0.01213193778689975400,
-0.01318605205881756600
 
nick,

Does it also mean that you don't need anymore Najda to understand the Apple remote protocol?

I'm still hoping for the apple remote to be a possibility. Other remotes could 'learn' from it.

I'm still having a strange problem whatever remote I use. Occasionally, maybe 1 in 5, the volume buttons get switched. i.e. the down button increases the sound and the up button attenuates. If I carry on pressing things then eventually it rights itself. Baffling. Any ideas?

cheers
james
 
I got the little cheapie key chain remote off Ebay shown earlier in this thread. It does not have all the function buttons, but otherwise works fine, ie: (no numbered buttons for channels).

Alright. I can't see the receiver module on your pics. Is it hidden behind the small cut on the right hand side of the keypad?

I generated this with winfilter. It says invalid file. Any ideas if any of this is useable?
WinFilter version 0.8
WinFilter
akundert@hotmail.com

Filter type: Band Pass
Filter model: Chebyshev
Filter order: 3
Sampling Frequency: 11 KHz
Fc1 and Fc2 Frequencies: 0.010000 KHz and 0.400000 KHz
Pass band Ripple: 1.000000 dB
Coefficents Quantization: float

[...]

:D

Thanks for the link.

As Shaun said, get rid of everything but coefficients themselves and it should be fine.

A quick note about sample rate that you have set to 11 kHz in the example above. Is that intended?

nick,

Does it also mean that you don't need anymore Najda to understand the Apple remote protocol?

I'm still hoping for the apple remote to be a possibility. Other remotes could 'learn' from it.

I'm still having a strange problem whatever remote I use. Occasionally, maybe 1 in 5, the volume buttons get switched. i.e. the down button increases the sound and the up button attenuates. If I carry on pressing things then eventually it rights itself. Baffling. Any ideas?

cheers
james

Alright, I keep the Apple remote among the future tasks, but with a lower priority then :)

I need to find a remote that exhibits this same behavior you're reporting on. Trouble is that all my remotes are behaving fine, so it's hard to guess what could cause the swap of up/down on the volume control.

Can your universal remote output JVC codes instead of NEC ones? If you can test this, that might give me an idea on where to look at.
 
When generating the coefficients you must specify the same sampling rate that you selected for Najda (48kHz/96kHz/192kHz), or the coefficients will not map to the correct frequencies when imported into Najda.

So the Najda does not accept 44.1 Khz natively. It does, however, convert the 44.1 into 48 Khz, correct ?
Is that a good idea ? I mean, THE audio source is the CD @ 44.1 Khz, or files ripped from CD and still usually at 44.1 Khz.
48 Khz is a professional sampling rate in...video, not home audio nor pro audio.
Wouldn't the signal be better untouched and left at 44.1 Khz ?
 
So the Najda does not accept 44.1 Khz natively. It does, however, convert the 44.1 into 48 Khz, correct ?
Is that a good idea ? I mean, THE audio source is the CD @ 44.1 Khz, or files ripped from CD and still usually at 44.1 Khz.
48 Khz is a professional sampling rate in...video, not home audio nor pro audio.
Wouldn't the signal be better untouched and left at 44.1 Khz ?

(Personally i am planning to enter the Najda digitally, since my source is most likely to be digital, i don't use cassettes or tape, and although i have hundreds of vinyls and a decent turntable i don't use them. My digital source will be the PC or my 24 track recorder, both of which will be running most of the time at 44.1).
 
(Personally i am planning to enter the Najda digitally, since my source is most likely to be digital, i don't use cassettes or tape, and although i have hundreds of vinyls and a decent turntable i don't use them. My digital source will be the PC or my 24 track recorder, both of which will be running most of the time at 44.1).

I wouldn't worry too much about sample rate conversion.

MrDangerous plan on 100 plus the power supply and the case. That way you won't be cussing me. As far as sampling rate goes I know less than nothing about FIR filters go.

I had a look a the application you have used so far, and suggest you just try rePhase (as recommended by a few forum members):

rePhase | Free Audio & Video software downloads at SourceForge.net

Not sure whether you need this, but here's a simple example: I want to design a 3-way FIR crossover that mimics LR 48 dB/oct. (it's just a simple example in order to illustrate, don't ask me why LR 48 dB/oct :) ). I want one crossover at 400 Hz and another at 4 kHz.

So let's open rePhase and build this crossover together.

rehase1.png

I've circled the important fields.
On the right, from top to bottom:
- The number of taps. More taps will allow you achieving a better approximation, at the expense of increased DSP load.
- The rate: select here 48 kHz (select the same in Najda).
- Format: 32-bit float txt. With this option selected, generated files are compatible with Najda.
- Filename: make sure to save your file under a proper name :)

On the left, select the 'Linear Filters' tab.
We generate first the low-pass coefficients. I've selected here 511 coefs, and rePhase signals a max deviation of about 2dB with regard to the LR model. Yeah why not. Let's keep it.

Now we generate the bandpass:
rehase2.png
I've tried another number of taps (911). This time max deviation is only 0.22 dB. Fair enough.

Finally we generate the high-pass:
rehase3.png
In the high frequencies, I know I need less taps. I've tried 121 and it seems fine, with a max deviation of 0.00...

Now I can load the files in Najda Under Control:

rephase4.png

I can check the plots in Najda:

rephase5.png

Well it's crossing at 400 Hz and at 4 kHz, so we're happy aren't we? :)

What would be the sum?

rephase6.png

Oh no! what is that??? :mad:

Alright, that's a time-alignment issue because filters have different lengths (= different numbers of taps).

Looking again at the 3 rePhase screenshots, we can see that:
- The low-pass has an offset of 256 samples
- The band-pass has an offset of 456 samples
- The high-pass has an offset of 61 samples.
We need to compensate for that.

The band-pass has the largest offset = largest delay. We leave it as is.
Then the low-pass requires a delay of 456-256 = 200 samples.
And the high-pass requires a delay of 456-61 = 395 samples.

rephase7.png

Now we can check the sum again. Make sure to check "Include Delay in Phase".

rephase8.png

So it's not perfectly flat because we didn't have perfect LR filters at the start.
Anyway, looking at the scale, the residual dip is quite small.

(Note:
In Najda's graph view:
- Click and drag to move the 0dB line up and down.
- Click+mouse wheel to zoom in/out
- Double click to reset the graph to original view)

Alright, we've here approximated a LR network. We could actually approximate anything (anything reasonable). You could load in rePhase your measurements, build a crossover and add EQing...

Hope this helps.

Nick
 
If you use the digital outputs and an external DAC, would it be possible to send that analogue signal back to Najda-board (via the OP sockets I presume) and then use that for volume control?

br
Rickard

Hi Rickard,

Actually yes, you could do that. CS3318 is flexible enough with signal swing on its input.

To route your DACs' outs to Najda, you could use either the amps sockets as you said - or just remove the decoupling capacitor that follows each output stage and inject your signal here.

Best,

Nick