CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc.

Yeah, author of the paper also mention its not proven to make a difference. Still I find the idea intriguing. To the point I had SoX suffer by my scripting.

sox -v.5684447589 'testfile*' -n stats will show bit-depth needed for any given FP factor.
Bash:
~$ sox -v.5684447589 'noise070s.wav' -n stats
             Overall     Left      Right
DC offset  -0.000203 -0.000203  0.000052
Min level  -0.397988 -0.397970 -0.397988
Max level   0.397988  0.397970  0.397988
Pk lev dB      -8.00     -8.00     -8.00
RMS lev dB    -12.77    -12.77    -12.78
RMS Pk dB     -12.55    -12.55    -12.56
RMS Tr dB     -13.04    -13.01    -13.04
Crest factor       -      1.73      1.73
Flat factor     0.00      0.00      0.00
Pk count        9.50        16         3
Bit-depth      31/32     31/32     31/32

SoX here seem to do rounding and I wonder if same numbers could apply to CDSP?
pow(10, -6.020599913279624 / 20) = 0.49999999999999999448961326390771
Bash:
~$ sox -v.49999999999999999448961326390771 'noise070s.wav' -n stats
             Overall     Left      Right
DC offset  -0.000179 -0.000179  0.000046
Min level  -0.350067 -0.350052 -0.350067
Max level   0.350067  0.350052  0.350067
Pk lev dB      -9.12     -9.12     -9.12
RMS lev dB    -13.89    -13.89    -13.89
RMS Pk dB     -13.66    -13.66    -13.67
RMS Tr dB     -14.15    -14.12    -14.15
Crest factor       -      1.73      1.73
Flat factor     0.00      0.00      0.00
Pk count        9.50        16         3
Bit-depth      16/17     16/17     16/17
 
Bit shifts will get you a quite crude volume control as you only get 6 dB steps as 1 bit = 6 dB.
True :) But this is more what I'm aiming for. 128 114 steps with 20 bit or less.
Calculatet and tested with SoX from 8 step for each 6dB. 1.0000 .8750 .8125 .7500 .6875 .6250 .5625 .5000
Code:
1.0000000000        0 dB   Bit-depth: 16  [16/16 16/16 16/16]
.8750000000   -1.1596 dB   Bit-depth: 19  [19/19 19/19 19/19]
.8125000000   -1.8032 dB   Bit-depth: 20  [20/20 20/20 20/20]
.7500000000   -2.4981 dB   Bit-depth: 18  [18/18 18/18 18/18]
.6875000000   -3.2538 dB   Bit-depth: 20  [20/20 20/20 20/20]
.6250000000   -4.0825 dB   Bit-depth: 19  [19/19 19/19 19/19]
.5625000000   -4.9971 dB   Bit-depth: 19  [19/20 19/20 19/20]
.5000000000   -6.0204 dB   Bit-depth: 16  [16/17 16/17 16/17]
.4375000000   -7.1800 dB   Bit-depth: 19  [19/20 19/20 19/20]
.4062500000   -7.8236 dB   Bit-depth: 20  [20/21 20/21 20/21]
.3750000000   -8.5194 dB   Bit-depth: 18  [18/19 18/19 18/19]
.3437500000   -9.2751 dB   Bit-depth: 20  [20/21 20/21 20/21]
.3125000000   -10.1029 dB   Bit-depth: 19  [19/20 19/20 19/20]
.2812500000   -11.0184 dB   Bit-depth: 19  [19/21 19/21 19/21]
.2500000000   -12.0408 dB   Bit-depth: 16  [16/18 16/18 16/18]
.2187500000   -13.2013 dB   Bit-depth: 19  [19/21 19/21 19/21]
.2031250000   -13.8449 dB   Bit-depth: 20  [20/22 20/22 20/22]
.1875000000   -14.5398 dB   Bit-depth: 18  [18/20 18/20 18/20]
.1718750000   -15.2955 dB   Bit-depth: 20  [20/22 20/22 20/22]
.1562500000   -16.1233 dB   Bit-depth: 19  [19/21 19/21 19/21]
.1406250000   -17.0388 dB   Bit-depth: 19  [19/22 19/22 19/22]
.1250000000   -18.0621 dB   Bit-depth: 16  [16/19 16/19 16/19]
.1093750000   -19.2217 dB   Bit-depth: 19  [19/22 19/22 19/22]
.1015625000   -19.8653 dB   Bit-depth: 20  [20/23 20/23 20/23]
.0937500000   -20.5611 dB   Bit-depth: 18  [18/21 18/21 18/21]
.0859375000   -21.3168 dB   Bit-depth: 20  [20/23 20/23 20/23]
.0781250000   -22.1446 dB   Bit-depth: 19  [19/22 19/22 19/22]
.0703125000   -23.0601 dB   Bit-depth: 19  [19/23 19/23 19/23]
.0625000000   -24.0825 dB   Bit-depth: 16  [16/20 16/20 16/20]
.0546875000   -25.2429 dB   Bit-depth: 19  [19/23 19/23 19/23]
.0507812500   -25.8866 dB   Bit-depth: 20  [20/24 20/24 20/24]
.0468750000   -26.5815 dB   Bit-depth: 18  [18/22 18/22 18/22]
.0429687500   -27.3372 dB   Bit-depth: 20  [20/24 20/24 20/24]
.0390625000   -28.1650 dB   Bit-depth: 19  [19/23 19/23 19/23]
.0351562500   -29.0805 dB   Bit-depth: 19  [19/24 19/24 19/24]
.0312500000   -30.1038 dB   Bit-depth: 16  [16/21 16/21 16/21]
.0273437500   -31.2634 dB   Bit-depth: 19  [19/24 19/24 19/24]
.0253906250   -31.9070 dB   Bit-depth: 20  [20/25 20/25 20/25]
.0234375000   -32.6028 dB   Bit-depth: 18  [18/23 18/23 18/23]
.0214843750   -33.3585 dB   Bit-depth: 20  [20/25 20/25 20/25]
.0195312500   -34.1863 dB   Bit-depth: 19  [19/24 19/24 19/24]
.0175781250   -35.1018 dB   Bit-depth: 19  [19/25 19/25 19/25]
.0156250000   -36.1242 dB   Bit-depth: 16  [16/22 16/22 16/22]
.0136718750   -37.2846 dB   Bit-depth: 19  [19/25 19/25 19/25]
.0126953125   -37.9283 dB   Bit-depth: 20  [20/26 20/26 20/26]
.0117187500   -38.6232 dB   Bit-depth: 18  [18/24 18/24 18/24]
.0107421875   -39.3789 dB   Bit-depth: 20  [20/26 20/26 20/26]
.0097656250   -40.2067 dB   Bit-depth: 19  [19/25 19/25 19/25]
.0087890625   -41.1222 dB   Bit-depth: 19  [19/26 19/26 19/26]
.0078125000   -42.1454 dB   Bit-depth: 16  [16/23 16/23 16/23]
.0068359375   -43.3051 dB   Bit-depth: 19  [19/26 19/26 19/26]
.0063476562   -43.9487 dB   Bit-depth: 20  [20/27 20/27 20/27]
.0058593750   -44.6445 dB   Bit-depth: 18  [18/25 18/25 18/25]
.0053710937   -45.4002 dB   Bit-depth: 20  [20/27 20/27 20/27]
.0048828125   -46.2280 dB   Bit-depth: 19  [19/26 19/26 19/26]
.0043945312   -47.1426 dB   Bit-depth: 19  [19/27 19/27 19/27]
.0039062500   -48.1659 dB   Bit-depth: 16  [16/24 16/24 16/24]
.0034179687   -49.3263 dB   Bit-depth: 19  [19/27 19/27 19/27]
.0031738281   -49.9700 dB   Bit-depth: 20  [20/28 20/28 20/28]
.0029296875   -50.6649 dB   Bit-depth: 18  [18/26 18/26 18/26]
.0026855468   -51.4206 dB   Bit-depth: 20  [20/28 20/28 20/28]
.0024414062   -52.2484 dB   Bit-depth: 19  [19/27 19/27 19/27]
.0021972656   -53.1639 dB   Bit-depth: 19  [19/28 19/28 19/28]
.0019531250   -54.1871 dB   Bit-depth: 16  [16/25 16/25 16/25]
.0019531250   -54.1871 dB   Bit-depth: 16  [16/25 16/25 16/25]
.0017089843   -55.3467 dB   Bit-depth: 19  [19/28 19/28 19/28]
.0015869140   -55.9904 dB   Bit-depth: 20  [20/29 20/29 20/29]
.0014648437   -56.6862 dB   Bit-depth: 18  [18/27 18/27 18/27]
.0013427734   -57.4419 dB   Bit-depth: 20  [20/29 20/29 20/29]
.0012207031   -58.2697 dB   Bit-depth: 19  [19/28 19/28 19/28]
.0010986328   -59.1843 dB   Bit-depth: 19  [19/29 19/29 19/29]
.0009765625   -60.2076 dB   Bit-depth: 16  [16/26 16/26 16/26]
.0008544921   -61.3680 dB   Bit-depth: 19  [19/29 19/29 19/29]
.0007934570   -62.0117 dB   Bit-depth: 20  [20/30 20/30 20/30]
.0007324218   -62.7066 dB   Bit-depth: 18  [18/28 18/28 18/28]
.0006713867   -63.4623 dB   Bit-depth: 20  [20/30 20/30 20/30]
.0006103515   -64.2901 dB   Bit-depth: 19  [19/29 19/29 19/29]
.0005493164   -65.2056 dB   Bit-depth: 19  [19/30 19/30 19/30]
.0004882812   -66.2288 dB   Bit-depth: 16  [16/27 16/27 16/27]
.0004272460   -67.3884 dB   Bit-depth: 19  [19/30 19/30 19/30]
.0003967285   -68.0321 dB   Bit-depth: 20  [20/31 20/31 20/31]
.0003662109   -68.7279 dB   Bit-depth: 18  [18/29 18/29 18/29]
.0003356933   -69.4836 dB   Bit-depth: 20  [20/31 20/31 20/31]
.0003051757   -70.3114 dB   Bit-depth: 19  [19/30 19/30 19/30]
.0002746582   -71.2260 dB   Bit-depth: 19  [19/31 19/31 19/31]
.0002441406   -72.2492 dB   Bit-depth: 16  [16/28 16/28 16/28]
.0002136230   -73.4089 dB   Bit-depth: 19  [19/31 19/31 19/31]
.0001983642   -74.0534 dB   Bit-depth: 20  [20/32 20/32 20/32]
.0001831054   -74.7483 dB   Bit-depth: 18  [18/30 18/30 18/30]
.0001678466   -75.5040 dB   Bit-depth: 20  [20/32 20/32 20/32]
.0001525878   -76.3318 dB   Bit-depth: 19  [19/31 19/31 19/31]
.0001373291   -77.2473 dB   Bit-depth: 19  [19/32 19/32 19/32]
.0001220703   -78.2705 dB   Bit-depth: 16  [16/29 16/29 16/29]
.0001068115   -79.4301 dB   Bit-depth: 19  [19/32 19/32 19/32]
.0000991821   -80.0738 dB   Bit-depth: 19  [19/32 19/32 19/32]
.0000915527   -80.7687 dB   Bit-depth: 18  [18/31 18/31 18/31]
.0000839233   -81.5252 dB   Bit-depth: 19  [19/32 19/32 19/32]
.0000762939   -82.3530 dB   Bit-depth: 19  [19/32 19/32 19/32]
.0000686645   -83.2677 dB   Bit-depth: 18  [18/32 18/32 18/32]
.0000610351   -84.2909 dB   Bit-depth: 16  [16/30 16/30 16/30]
.0000534057   -85.4505 dB   Bit-depth: 18  [18/32 18/32 18/32]
.0000495910   -86.0951 dB   Bit-depth: 18  [18/32 18/32 18/32]
.0000457763   -86.7900 dB   Bit-depth: 18  [18/32 18/32 18/32]
.0000419616   -87.5457 dB   Bit-depth: 18  [18/32 18/32 18/32]
.0000381469   -88.3735 dB   Bit-depth: 18  [18/32 18/32 18/32]
.0000343322   -89.2890 dB   Bit-depth: 17  [17/32 17/32 17/32]
.0000305175   -90.3122 dB   Bit-depth: 16  [16/31 16/31 16/31]
.0000267028   -91.4718 dB   Bit-depth: 17  [17/32 17/32 17/32]
.0000247955   -92.1155 dB   Bit-depth: 17  [17/32 17/32 17/32]
.0000228881   -92.8104 dB   Bit-depth: 17  [17/32 17/32 17/32]
.0000209808   -93.5669 dB   Bit-depth: 17  [17/32 17/32 17/32]
.0000190734   -94.3947 dB   Bit-depth: 17  [17/32 17/32 17/32]
.0000171661   -95.3094 dB   Bit-depth: 16  [16/32 16/32 16/32]
.0000152587   -96.3326 dB   Bit-depth: 16  [16/32 16/32 16/32]

If better resolutinon are needed will these factors give 34 step for each 6 dB within 22 bit
1.000000 .984375 .968750 .953125 .937500 .921875 .906250 .890625 .875000 .859375 .843750 .828125 .812500 .796875 .781250 .765625 .750000 .734375 .718750 .703125 .687500 .671875 .656250 .640625 .625000 .609375 .593750 .578125 .562500 .546875 .531250 .515625 .500000
 
Last edited:
Sorry for another post, the edit post time frame windows are little short for editing in afterthoughts.

SoX rounding up to .5 (1 bit) seam to take place from sox -v.4999999997 'noise070s.wav' -n stats. Factor v.4999999996 will need 32 bit with SoX. Not clear if rounding take place at parameter input which I think would be strange?
 
CamillaDSP does everything with floating point math. All gain (in mixers, volume and gain filters etc) is applied by calculating the linear gain factor from the given value in dB. This is then multiplied with all sample values. There is no rounding except for the inherent precision of the 64-bit floats (or 32-bit if compiled for that).
That means the result of any math operation is rounded to about 16 digits (or 8 for 32-bit).
Most log messages have some rounding because 16 digits gets too long. Rounding down to 4 or so makes them much easier to read.

Integer factor resampling is not bit-perfect because the resampler always applies an anti-aliasing filter. And as soon as there is any kind of filtering, bit-perfectness is just gone.

There have been requests to add an option to specify gain as a linear coefficient, so you can get for example exactly 0.5 by just giving that instead of that long -6.020599.. number. That will come in the v1.1.
 
  • Like
Reactions: 1 user

TNT

Member
Joined 2003
Paid Member
When I jump around in my "Shortcuts" I get different sound from one and the same config depending on which "route" around the different configs I take. It seems that the sound from one and the same is different depending of what was loaded jus before in time...

//
 
When I jump around in my "Shortcuts" I get different sound from one and the same config depending on which "route" around the different configs I take. It seems that the sound from one and the same is different depending of what was loaded jus before in time...

//
I think this might be the same issue @mdsimon2 reported a few days ago. Does it give you the right config if you click the config shortcut twice?
 
Hello everyone.
I got amazed abou the camilla DSP performance and capability..much more flexible than any standard DSP Xover device.

But..guys..i would like to have some support about the Hd configuration.

I would like to build up a 4 way active speaker system.
So..i would need a multichannel DAC for sure ..8 eight outputs..
But..what about the input...do i need 8 digital input..or..is it possible to use an USB connection to carry on the 8 channel signals from Camilla to the DAC?

Using a Rapsberry..which IN / OUT interface do i need to have?

Many thanks in advance.

Maurizio
 
Hello everyone.
I got amazed abou the camilla DSP performance and capability..much more flexible than any standard DSP Xover device.

But..guys..i would like to have some support about the Hd configuration.

I would like to build up a 4 way active speaker system.
So..i would need a multichannel DAC for sure ..8 eight outputs..
But..what about the input...do i need 8 digital input..or..is it possible to use an USB connection to carry on the 8 channel signals from Camilla to the DAC?

Using a Rapsberry..which IN / OUT interface do i need to have?

Many thanks in advance.

Maurizio

I suggest you consider the Behringer UMC1820. This USB interface has 10 analog outputs, can run at up to 96k Hz, and is fully Linux compliant. It has good sound quality and makes a perfect starter interface. You can use its analog or digital inputs if you want to play from sources that are external to the Raspberryr Pi, or you can play files and streams on the Pi and use the interface like a DAC. The UMC1820 costs about US$250.
 
Yes the DM7 is an excellent DAC, and from what I have read it seems to be Linux compliant. The only problem is that there is no input, so you can only play audio files and streams from the Pi itself. It is a better DAC compared to the Behringer, but probably only if you use it with balanced connections (TRS or XLR type). Otherwise the Behringer is less than half the price and offers inputs. There is also the MOTU Ultralite mk5 that you could consider. It has very high audio performance, has audio inputs, and works great with CDSP.
 
Yes the DM7 is an excellent DAC, and from what I have read it seems to be Linux compliant. The only problem is that there is no input, so you can only play audio files and streams from the Pi itself. It is a better DAC compared to the Behringer, but probably only if you use it with balanced connections (TRS or XLR type). Otherwise the Behringer is less than half the price and offers inputs. There is also the MOTU Ultralite mk5 that you could consider. It has very high audio performance, has audio inputs, and works great with CDSP.
Hi.

Well i'm not interested to other inputs. At the moment my audio source is a Futro with Daphile. I'm not using the CDP anymore so far..I think i will first start to test Camilla on Raspberry..
But..i would need to use a different streamer..as daphile is not working on Raspberry.