The AES67/Ravenna driver would be another option, keeping GST out of it.
I have a (maybe now misguided) fondness for AVB/Milan and was excited to see PW AVB support emerging, but seems to have stalled.
I have no interest in Dante, but appreciate its success.
My previous exploration was with BBB + CTAG's, as the BBB's ethernet supported PTP. The Pi CM4 does as well (albeit with more volatility). I think the Pi5 does (?), so maybe I should buy set of PI5's and DAC8x rather than wait for the CM5.
I have a (maybe now misguided) fondness for AVB/Milan and was excited to see PW AVB support emerging, but seems to have stalled.
I have no interest in Dante, but appreciate its success.
My previous exploration was with BBB + CTAG's, as the BBB's ethernet supported PTP. The Pi CM4 does as well (albeit with more volatility). I think the Pi5 does (?), so maybe I should buy set of PI5's and DAC8x rather than wait for the CM5.
There is a new beta here: https://github.com/HEnquist/camilladsp/releases/tag/v3.0.0-beta.2
The changes from the previous beta are quite small. It's mostly the tweaks to reduce underruns on Alsa.
The changes from the previous beta are quite small. It's mostly the tweaks to reduce underruns on Alsa.
In the Pipeline tab there is a heading "Capture: 2 channels in" but there is no e.g. Playback: 4 channels out
For the sake of symmetry and completeness 😉 I suppose it should be placed just above the mixer that feeds the playback device.
Also, an arrow pointing downwards would help to understand how the pipeline page shall be interpreted i.e. indicating the process direction.
//
For the sake of symmetry and completeness 😉 I suppose it should be placed just above the mixer that feeds the playback device.
Also, an arrow pointing downwards would help to understand how the pipeline page shall be interpreted i.e. indicating the process direction.
//
Thanks - How could I miss that ;-D
I was looking for a "heading" and not a footer I suppose... 🙂
//
I was looking for a "heading" and not a footer I suppose... 🙂
//
Camilla newby
Hello gents,....i'm new to camilla and new to DSP in general. I've read a couple on things including some camilla documentation. I'm running 2 raspberry pi4 8gb music servers. One I've more or less build myself using dietpi, upmpdcli with Linn Kazoo as controlpoint and one with moOde installed. My source is ony Qobuz for both setups.
The other hardware is a USB DAC (smsl sanskrit 10 eidtions MK-III) which drives the wolverine amp (from this forum) which in turn drives my Kef Reference Model III's.
Been busy optimising the sound chain as much as I can and know. I was wandering where to start with Camilla. In moOde its a n integrated featue so I switched "on" de Camilla DSP. When I played a song just rubbish came out of the speaker🙂. I want to get aquainted a bit and see / experience what Camilla can do.
Looking forward in getting some direction....
thx in advance
reg
willem
Hello gents,....i'm new to camilla and new to DSP in general. I've read a couple on things including some camilla documentation. I'm running 2 raspberry pi4 8gb music servers. One I've more or less build myself using dietpi, upmpdcli with Linn Kazoo as controlpoint and one with moOde installed. My source is ony Qobuz for both setups.
The other hardware is a USB DAC (smsl sanskrit 10 eidtions MK-III) which drives the wolverine amp (from this forum) which in turn drives my Kef Reference Model III's.
Been busy optimising the sound chain as much as I can and know. I was wandering where to start with Camilla. In moOde its a n integrated featue so I switched "on" de Camilla DSP. When I played a song just rubbish came out of the speaker🙂. I want to get aquainted a bit and see / experience what Camilla can do.
Looking forward in getting some direction....
thx in advance
reg
willem
Hi Willem,
here is my diagram, i use bubble-upnp as controlpoint ---> [ upmpdcli -out-->alsa loopback -in-> CamillaDSP FIR-Filter --out-> ] --USB/DAC
cdsp capture is alsa-loopback, cdsp playback is your DAC
that's it. What functions will CDSP make for you (crossover, room correction)?
reg Roland
here is my diagram, i use bubble-upnp as controlpoint ---> [ upmpdcli -out-->alsa loopback -in-> CamillaDSP FIR-Filter --out-> ] --USB/DAC
cdsp capture is alsa-loopback, cdsp playback is your DAC
that's it. What functions will CDSP make for you (crossover, room correction)?
reg Roland
I was indeed thinking about exactly that. I reckom I'll be needing something like rew and an umik mic to generate the room correction data....or does that work differently?What functions will CDSP make for you (crossover, room correction)?
As for the x-over. How does that work actually? In the end it's still 2 channels receving all the frequencies in the signal......Well..I basically do not understand how it works...thats clear🙂
w.
@willem
You need a software for room correction and xover generation. I use ((acourate convolver)) from audiovero 495€ (worth every cent), a calibrated mic, an mic stand and a audio interface (depends on your outputchannels), focusrite 4i4 (four channels) 249@. Some cable, rpi5, hifiberrydac8x.
Here is one of my Camilladsp. I still use older Version 1.03 (but it is only a sample for a 2 to 4 channel with FIR Filter as xover incl correction.
You need a software for room correction and xover generation. I use ((acourate convolver)) from audiovero 495€ (worth every cent), a calibrated mic, an mic stand and a audio interface (depends on your outputchannels), focusrite 4i4 (four channels) 249@. Some cable, rpi5, hifiberrydac8x.
Here is one of my Camilladsp. I still use older Version 1.03 (but it is only a sample for a 2 to 4 channel with FIR Filter as xover incl correction.
Code:
# stereo to 4 ch
devices:
samplerate: 44100
chunksize: 6144
# queuelimit: 128 (*)
# silence_threshold: -100
# silence_timeout: 3.0
# target_level: 2048
# adjust_period: 2
capture:
type: Alsa
channels: 2
device: "hw:Loopback,0"
format: S24LE
# retry_on_error: true
playback:
type: Alsa
channels: 8
device: "hw:sndrpihifiberry,0"
format: S32LE
mixers:
2to4:
channels:
in: 2
out: 8
mapping:
- dest: 0
sources:
- channel: 0
gain: -5
inverted: false
- dest: 1
sources:
- channel: 1
gain: -5
inverted: false
- dest: 2
sources:
- channel: 0
gain: -5
inverted: false
- dest: 3
sources:
- channel: 1
gain: -5
inverted: false
filters:
vol:
type: Loudness
parameters:
ramp_time: 200.0
reference_level: -30.0
high_boost: 0.0
low_boost: 15.0
left_low:
type: Conv
parameters:
type: File
filename: /home/pi5/camilladsp/coeffs/pi5buero/Cor1L44.dbl
format: FLOAT64LE
left_high:
type: Conv
parameters:
type: File
filename: /home/pi5/camilladsp/coeffs/pi5buero/Cor2L44.dbl
format: FLOAT64LE
right_low:
type: Conv
parameters:
type: File
filename: /home/pi5/camilladsp/coeffs/pi5buero/Cor1R44.dbl
format: FLOAT64LE
right_high:
type: Conv
parameters:
type: File
filename: /home/pi5/camilladsp/coeffs/pi5buero/Cor2R44.dbl
format: FLOAT64LE
gainL:
type: Gain
parameters:
gain: +9
inverted: false
gainR:
type: Gain
parameters:
gain: +9
inverted: false
pipeline:
- type: Mixer
name: 2to4
- type: Filter
channel: 0
names:
- left_low
- gainL
- vol
- type: Filter
channel: 1
names:
- right_low
- gainR
- vol
- type: Filter
channel: 2
names:
- left_high
- gainL
- vol
- type: Filter
channel: 3
names:
- right_high
- gainR
- vol
@roli: just a note - loopback capture is software-clocked from the Broadcom SoC crystal, while the I2S playback from the RP1 crystal. IMO such chain should have rate adjust enabled, so that the software-adjustable loopback capture rate can be fine-tuned to the crystal-fixed playback rate.
All independent/non-synchronous clocks always run at a slightly different pace. Rate adjust aligns capture and playback clocks, even if running at the same nominal samplerate. If both clocks are fixed, asynchronous resampler is required (even if running at 1:1 nominal ratio). If one of the clocks is adjustable (which is the case of the loopback alsa device), CDSP can fine-tune its rate/pitch and no async resampler is required. But this fine-tuning must be enabled in the configuration - the enable_rate_adjust parameter.
Please read the rate-adjust description at https://github.com/HEnquist/camilladsp/?tab=readme-ov-file.
Please read the rate-adjust description at https://github.com/HEnquist/camilladsp/?tab=readme-ov-file.
Hi!
I want to make moode audio work with a raspberry pi 5 and dac8x.
as i am a total noob on linux this is quite a challange Big Grin
when i run aplay -l
i get this result.
card 0: sndrpihifiberry [snd_rpi_hifiberry_dac8x], device 0: HifiBerry DAC8x HiFi pcm5102a-hifi-0 [HifiBerry DAC8x HiFi pcm5102a-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
Then i have tried to copy the example crossover to make a 2-way speaker (this is exactly what i cant to make, i just need to configure all the values later)
---
title: Example crossover
description: An example of a simple 2-way crossover
devices:
samplerate: 44100
chunksize: 1024
capture:
type: File
channels: 2
filename: /dev/stdin
format: S32LE
playback:
type: Alsa
channels: 2
device: hw:0,0
format: S32LE
volume_ramp_time: 150
mixers:
to4chan:
description: Expand 2 channels to 4
channels:
in: 2
out: 4
mapping:
- dest: 0
sources:
- channel: 0
gain: 0
inverted: false
- dest: 1
sources:
- channel: 1
gain: 0
inverted: false
- dest: 2
sources:
- channel: 0
gain: -5
inverted: false
- dest: 3
sources:
- channel: 1
gain: -5
inverted: false
filters:
highpass2k:
type: Biquad
description: 2nd order highpass crossover
parameters:
type: Highpass
freq: 2000
q: 0.707
lowpass2k:
type: Biquad
description: 2nd order lowpass crossover
parameters:
type: Lowpass
freq: 2000
q: 0.707
bafflestep:
type: Biquad
description: Baffle step compensation
parameters:
type: Highshelf
freq: 500
slope: 6
gain: -4
tweeterdelay:
type: Delay
description: Time alignment for tweeters
parameters:
delay: 0.5
unit: ms
pipeline:
- type: Filter
description: Pre-mixer filters left
channel: 0
names:
- bafflestep
- type: Filter
description: Pre-mixer filters right
channel: 1
names:
- bafflestep
- type: Mixer
name: to4chan
- type: Filter
description: Highpass for left tweeter
channel: 2
names:
- highpass2k
- tweeterdelay
- type: Filter
description: Highpass for right tweeter
channel: 3
names:
- highpass2k
- tweeterdelay
- type: Filter
description: Lowpass for left woofer
channel: 0
names:
- lowpass2k
- type: Filter
description: Lowpass for right woofer
channel: 1
names:
- lowpass2k
For some reason the playback channel section alters the number of channels from four to two. And i get a error message. I have got it to work on 2 channels, but as soon as i enter 4 channel playback, then it breaks. What am i doing wrong?
Thanks/Andreas from Sweden
I want to make moode audio work with a raspberry pi 5 and dac8x.
as i am a total noob on linux this is quite a challange Big Grin
when i run aplay -l
i get this result.
card 0: sndrpihifiberry [snd_rpi_hifiberry_dac8x], device 0: HifiBerry DAC8x HiFi pcm5102a-hifi-0 [HifiBerry DAC8x HiFi pcm5102a-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
Then i have tried to copy the example crossover to make a 2-way speaker (this is exactly what i cant to make, i just need to configure all the values later)
---
title: Example crossover
description: An example of a simple 2-way crossover
devices:
samplerate: 44100
chunksize: 1024
capture:
type: File
channels: 2
filename: /dev/stdin
format: S32LE
playback:
type: Alsa
channels: 2
device: hw:0,0
format: S32LE
volume_ramp_time: 150
mixers:
to4chan:
description: Expand 2 channels to 4
channels:
in: 2
out: 4
mapping:
- dest: 0
sources:
- channel: 0
gain: 0
inverted: false
- dest: 1
sources:
- channel: 1
gain: 0
inverted: false
- dest: 2
sources:
- channel: 0
gain: -5
inverted: false
- dest: 3
sources:
- channel: 1
gain: -5
inverted: false
filters:
highpass2k:
type: Biquad
description: 2nd order highpass crossover
parameters:
type: Highpass
freq: 2000
q: 0.707
lowpass2k:
type: Biquad
description: 2nd order lowpass crossover
parameters:
type: Lowpass
freq: 2000
q: 0.707
bafflestep:
type: Biquad
description: Baffle step compensation
parameters:
type: Highshelf
freq: 500
slope: 6
gain: -4
tweeterdelay:
type: Delay
description: Time alignment for tweeters
parameters:
delay: 0.5
unit: ms
pipeline:
- type: Filter
description: Pre-mixer filters left
channel: 0
names:
- bafflestep
- type: Filter
description: Pre-mixer filters right
channel: 1
names:
- bafflestep
- type: Mixer
name: to4chan
- type: Filter
description: Highpass for left tweeter
channel: 2
names:
- highpass2k
- tweeterdelay
- type: Filter
description: Highpass for right tweeter
channel: 3
names:
- highpass2k
- tweeterdelay
- type: Filter
description: Lowpass for left woofer
channel: 0
names:
- lowpass2k
- type: Filter
description: Lowpass for right woofer
channel: 1
names:
- lowpass2k
For some reason the playback channel section alters the number of channels from four to two. And i get a error message. I have got it to work on 2 channels, but as soon as i enter 4 channel playback, then it breaks. What am i doing wrong?
Thanks/Andreas from Sweden
@ Henrik
Just a question to quench my thirst-for-interest: I saw that you are working on ringbuffers in the latest development branches for CamillaDSP. What will be the benefit of this modification? Was there an inherent limitation in the so-far and actual implementation of buffers? Or are ringbuffers simply a more elegant and/or lean approach, but without other benefit?
Just a question to quench my thirst-for-interest: I saw that you are working on ringbuffers in the latest development branches for CamillaDSP. What will be the benefit of this modification? Was there an inherent limitation in the so-far and actual implementation of buffers? Or are ringbuffers simply a more elegant and/or lean approach, but without other benefit?
You need a mixer to convert the 2 input channels to 4. But the dac8x may not support 4 channel output, so you may need to use 8 instead. In that case, just use a 2 in, 8 out mixer and don't do anything with the last 4 channels.I have got it to work on 2 channels, but as soon as i enter 4 channel playback, then it breaks. What am i doing wrong?
This is for the buffers between the inner and outer threads in the wasapi and coreaudio backends. Those are already similar to ringbuffers, but implemented in way that is more complicated than needed.Was there an inherent limitation in the so-far and actual implementation of buffers? Or are ringbuffers simply a more elegant and/or lean approach, but without other benefit?
The changes avoid some allocations so should give slight stability improvement, and simplifies the code a bit.
I'm not really happy with the UI for defining mixers. It's very difficult to see what goes where. It's quite common to use a matrix layout for this kind of thing, and I made a prototype of how that could look in CamillaGUI:

It needs some colours to make active cells more visible etc. What do you think, could be better than the existing UI?

It needs some colours to make active cells more visible etc. What do you think, could be better than the existing UI?
Most examples I found have them.on the left, like this from Motu :why not put the output on the right hand side ?
https://motu.com/techsupport/technotes/images/avbtechnote/avbmaingrid2.png
If the matrix gets big, it could perhaps be good to have them on both sides. And to put the inputs also on the bottom.
- Home
- Source & Line
- PC Based
- CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc