Thanks alot, it actually works in the GUI 🙂Ok, I don't think this will work in the gui, but if you edit the config file manually it should.
Make two mixers, one that converts mono to stereo, and one that just passes stereo on as stereo. Name them "monoswitch_1" and "monoswitch_2".
As the first step of the pipeline, add a mixer, and in the name field there enter "monoswitch_$channels$".
create the mixers in the pic and use the "IN_$channels$" at the beginning of your pipeline for everyone searching the same solution 🙂
Attachments
You can use rephase to import the EQ's from REW and generate an FIR filter which Camilla can play. No typing effort required. The only issue would be that it would be sample rate dependant.
Henrik might be able to leverage the xml output to use with Camilla but there is the option to use FIR's now.
Fluid, good workaround.
When I started using a miniDSP 2X4HD I was told that miniDSP users use REW EQ calculated IIR filters (PEQs) to EQ drivers and rePhase generated FIR filters for linear phase crossover and phase correction. Using your method and configuring rePhase as the output in REW EQ you get 17 PEQs and rePhase will generate a single FIR filter containing xover, driver EQ and phase correction.
CamillaDSP with the ability to process huge numbers of taps in the FIR filters should be able to handle the processing needed.
Another advantage of your method is the reduction in the number of filters stored in CamillaDSP which simplifies the construction of the pipeline.
I think the referenced "benefits" are:Hi CharlieLaub
can you possibly point me to some literature that describes the benefits of branching filter ?
Best regards
Henrik![]()
- any deltas/delays/phase (good or bad) imparted by the first stage are carried over to the second and third stages
- any deltas/delays/phase (good or bad) imparted by the second stage are carried over to the third stages
such that the 2nd and 3rd stages stay in "sync" with the first stage by using its established/altered "baseline".
i think this is just for improved performance, you avoid doing the same operations over and over on different channels which adds upI think the referenced "benefits" are:
- any deltas/delays/phase (good or bad) imparted by the first stage are carried over to the second and third stages
- any deltas/delays/phase (good or bad) imparted by the second stage are carried over to the third stages
such that the 2nd and 3rd stages stay in "sync" with the first stage by using its established/altered "baseline".
i dont know if "sync" is really a issue here, since best case would be that henrik actually makes sure this stuff is "sample-perfect" (and if sync is a issue it would be issue too with the tweeter because it needs more operations then the sub for example), i think its just to save unnessecary operations to improve cpu performance
on the other side im also unsure tho, since the tweeter would actually just need the 2k high pass/shelf filter for example
If you look at a three way system the midrange's lowpass will introduce a phase shift that in absolute time units (aka group delay) will depend on the filter used (higher order filters will introduce more group delay) and it will also depend on the crossover frequency (lower crossover frequencies will introduce more group delay).
If you feed the highpass of the tweeter from the signal that is already lowpassed by the midgrange's lowpass then it's overall group delay will vary with that of the midrange, which IMO is desireable especially in the design phase of a loudspeaker where you will want to vary filter order and crossover frequency between woofer and midrange.
With DSP it is not strictly necessary to use this topology as you can introduce the needed delay for the tweeter in DSP very easily. But if you use this topolgy, as I tried to explain, once you have established the correct delay for the tweeter it will not have to be readjusted when changing the woofer/midrange crossover filter.
Hope that explanation attempt was somewhat clear 🙂
If you feed the highpass of the tweeter from the signal that is already lowpassed by the midgrange's lowpass then it's overall group delay will vary with that of the midrange, which IMO is desireable especially in the design phase of a loudspeaker where you will want to vary filter order and crossover frequency between woofer and midrange.
With DSP it is not strictly necessary to use this topology as you can introduce the needed delay for the tweeter in DSP very easily. But if you use this topolgy, as I tried to explain, once you have established the correct delay for the tweeter it will not have to be readjusted when changing the woofer/midrange crossover filter.
Hope that explanation attempt was somewhat clear 🙂
Oh, so groupdelay is the main thing here? wouldnt be manually added (and measured) delays not more accurate then, since it also accounts for the very last operation/filter added for each driver?If you look at a three way system the midrange's lowpass will introduce a phase shift that in absolute time units (aka group delay) will depend on the filter used (higher order filters will introduce more group delay) and it will also depend on the crossover frequency (lower crossover frequencies will introduce more group delay).
If you feed the highpass of the tweeter from the signal that is already lowpassed by the midgrange's lowpass then it's overall group delay will vary with that of the midrange, which imo is desireable especially in the design phase of a loudspeaker where you will want to vary filter order and crossover frequency between woofer and midrange.
Strictly speaking with dsp it is not necessary to use this topology as you can introduce the needed delay for the tweeter. But if you use this topolgy, as I tried to explain, once you have established the correct delay for the tweeter it will not have to be readjusted when changing the woofer/midrange crossover filter.
Hope that explanation attempt was somehat clear 🙂
Yes, for a good overall step response you will have adjust the midrange's and the tweeter's individual delay in DSP anyways.
But once you dialed them in, you will NOT have to change the tweeter's delay if you change the woofer/midrange crossover freq/order when the tweeter also sees the changing group delay from this operation in the first place. both midrange and tweeter's group delay will change equally ("in sync") when changing the woofer/midrange crossover freq/order and the established delay relation between midrange and tweeter will not be messed up by changing something seemingly independent, the midrange's lowpass.
Hope that's more clear now.
EDIT: All of this applies to IIR filters that are not phase linear obviously. If you use linear phase FIR filters for your crossovers you will not have to worry about this problem.
But once you dialed them in, you will NOT have to change the tweeter's delay if you change the woofer/midrange crossover freq/order when the tweeter also sees the changing group delay from this operation in the first place. both midrange and tweeter's group delay will change equally ("in sync") when changing the woofer/midrange crossover freq/order and the established delay relation between midrange and tweeter will not be messed up by changing something seemingly independent, the midrange's lowpass.
Hope that's more clear now.
EDIT: All of this applies to IIR filters that are not phase linear obviously. If you use linear phase FIR filters for your crossovers you will not have to worry about this problem.
Last edited:
Group delay of IIR crossover filters is frequency dependent, a basic delay can only match at one point. This may or may not be much of an issue but cascading the filters works by keeping the group consistent between branches.Oh, so groupdelay is the main thing here? wouldnt be manually added (and measured) delays not more accurate then, since it also accounts for the very last operation/filter added for each driver?
sorry for being a noob, but if this is mostly a issue because of the phaseshift, doesnt the phaseshift happen at a frequency that the tweeter isnt playing anyway? or does phaseshift at 200hz (+/- 500hz) for example also delay all frequencys following the 200hz frequencys? (i guess its the second one, now while thinking about it)Group delay of IIR crossover filters is frequency dependent, a basic delay can only match at one point. This may or may not be much of an issue but cascading the filters works by keeping the group consistent between branches.
And if this is such a issue, why isnt there a "frequency-based" delay ? (or maybe like a controlled phaseshift through the whole frequency spectrum without changing amplitude to correct groupdelay/phaseshift of filters "completely") or is this just not possible?
And what filters are actually IIR and FIR? (i guess the "normal" high/low pass/shelf, peaking etc are all IIR right?) Edit: Nevermind, the github page explains it "The supported filter types are Biquad, BiquadCombo and DiffEq for IIR and Conv for FIR"
Last edited:
You guessed right, it does.or does phaseshift at 200hz (+/- 500hz) for example also delay all frequencys following the 200hz frequencys?
There is, kind of - it's called a bandpass filter. But why go through such trouble if simply splitting off the tweeter's signal from the highpass-filtered midrange signal and get the changing phaseshift of that branch for free?And if this is such a issue, why isnt there a "frequency-based" delay ?
There is it's called an allpass filter, flat frequency response but changing phase response. Have a google for Douglas Self's book "The Design of Active Crossovers" that is a good primer on filter basics as well as more complicated stuff.And if this is such a issue, why isnt there a "frequency-based" delay ? (or maybe like a controlled phaseshift through the whole frequency spectrum without changing amplitude to correct groupdelay/phaseshift of filters "completely") or is this just not possible?
IIR means Infinite Impulse Response, FIR is Finite Impulse Response. It does not have anything to do with the response shape of the filter. Any filter that is linear phase or incorporates time correction needs to be FIR. An FIR filter can do anything an IIR filter can except it needs to be convolved with the input.And what filters are actually IIR and FIR? (i guess the "normal" high/low pass/shelf, peaking etc are all IIR right?) Edit: Nevermind, the github page explains it "The supported filter types are Biquad, BiquadCombo and DiffEq for IIR and Conv for FIR"
IIR and FIR can both be seen as difference equation filters. https://www.dsprelated.com/freebooks/filters/Difference_Equation_I.html
A FIR filter just uses the feed-forward coefficients, and all it's feedback coefficients are zero.
When one or more of the feedback coefficients is non-zero, then the filter becomes recursive, and the impulse response becomes infinitely long (IIR). Biquad is a name for such a filter that has non-zero FF and FB coefficients up to order 2.
A FIR filter just uses the feed-forward coefficients, and all it's feedback coefficients are zero.
When one or more of the feedback coefficients is non-zero, then the filter becomes recursive, and the impulse response becomes infinitely long (IIR). Biquad is a name for such a filter that has non-zero FF and FB coefficients up to order 2.
Just use FIR filters to protect your drivers in order to reduce distorsion and creation of a reasonably flat FR. Then add global FIR to get your desired frequency and phase response. Parallel filters is easier to grasp and not mess up 🙂
No?
//
No?
//
That is very cool from an implementation standpoint. Kill 2 birds with one stone.IIR and FIR can both be seen as difference equation filters. https://www.dsprelated.com/freebooks/filters/Difference_Equation_I.html
A FIR filter just uses the feed-forward coefficients, and all it's feedback coefficients are zero.
When one or more of the feedback coefficients is non-zero, then the filter becomes recursive, and the impulse response becomes infinitely long (IIR). Biquad is a name for such a filter that has non-zero FF and FB coefficients up to order 2.
You meant IIR at the beginning?Just use FIR filters to protect your drivers in order to reduce distorsion and creation of a reasonably flat FR. Then add global FIR to get your desired frequency and phase response.
There is it's called an allpass filter, flat frequency response but changing phase response. Have a google for Douglas Self's book "The Design of Active Crossovers" that is a good primer on filter basics as well as more complicated stuff.
...
I have been reading the following book online, but it looks like portions of the online text are left out.IIR and FIR can both be seen as difference equation filters. https://www.dsprelated.com/freebooks/filters/Difference_Equation_I.html
...
Can you recommend any other relevant Audio-DSP-Algorithm-Source Code books ? I am trying to understand now how to programmatically manipulate phase using the imaginary parts of the complex numbers. Amazon appears to be very proud of Shelf's book @ $65 used to $195 new. =)
Understanding Digital Signal Processing by Richard G. Lyons
https://flylib.com/books/en/2.729.1/Phase seems a hot topic: There is (right now) an illustrative, interesting and revealing discussion about phase alignment for mjultiway systems along with FIR filters at the german forum aktives-hoeren.de:
https://www.aktives-hoeren.de/viewtopic.php?f=40&t=13291So using dedicated, single FIR filters including all corrections for each driver within CamillaDSP would be a better option than re-building standard filters by going along with IIR's. Maybe one could first set up a system with IIR's, and then upgrade to FIR's. Thanks to CamillaDSP's ability to provide both options.
https://www.aktives-hoeren.de/viewtopic.php?f=40&t=13291So using dedicated, single FIR filters including all corrections for each driver within CamillaDSP would be a better option than re-building standard filters by going along with IIR's. Maybe one could first set up a system with IIR's, and then upgrade to FIR's. Thanks to CamillaDSP's ability to provide both options.
- Home
- Source & Line
- PC Based
- CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc