The input File has a .wav file ending. Is it a proper wav file? Then there is a header which will mess things up. If you check how long the file header is you can set "skip_bytes" to skip the header. You can use the analyze_wav script in the testscripts folder. Or use stdin and add another sox piping raw data into camilladsp.Trying to apply a fir filter on a file. all I get as output file is noise.
Can anyone point me where is the error?
Code:devices: samplerate: 88200 chunksize: 65536 enable_resampling: true resampler_type: AccurateAsync queuelimit: 128 capture_samplerate: 44100 capture: type: File channels: 2 filename: /opt/02.wav format: S16LE playback: type: File channels: 2 filename: /dev/stdout format: S24LE filters: fir: type: Conv parameters: type: File filename: /opt/impulse.txt format: TEXT pipeline: - type: Filter channel: 0 names: - fir - type: Filter channel: 1 names: - fir
Command:
Code:camilladsp /opt/test88.yml | sox -V4 -G -t raw -b 24 -e signed-integer -c 2 -r 88200 -L - -t wav out.wav
A flat boast (Shelf) or a gradually rising boast (Peak)?
Shelf:
filters:
shelf:
type: Biquad
parameters:
type: Highshelf
freq: 200
slope: 6
gain: 3
or...
Peak:
filters:
peak:
type: Biquad
parameters:
type: Peaking
freq: 20000
q: 0.5
gain: 3
This is me trying to do educated-guessing as I have not yet run the Camilla system.. but I checked the git-hub examples.
//
I didn't do any test yet, but the EQ i will most likely like to try is like this one i attached here, whatever this is called technically wise i do not know through...
Attachments
That looks like a shelf! Experiment a bit with adding shelfs and checking the result with the show_config script.I didn't do any test yet, but the EQ i will most likely like to try is like this one i attached here, whatever this is called technically wise i do not know through...
My target now? Is it what you have or what you want?
Well, that would be a Peaking filter - copy my example from above and post your alterations to see what you ended up with...
//
Well, that would be a Peaking filter - copy my example from above and post your alterations to see what you ended up with...
//
Last edited:
My target now? Is it what you have or what you want?
Yes the top of my drawing is what i have now (Prefilter REW-EQ + DRC .bin filter + (-6dB gain) ---> my pipeline now.
I will try to experiement and also "re"measure, this is the fun part 🙂🙂
Jesper.
So not a target anymore ;-)
To get that bass hump: (?)
filters:
peak:
type: Biquad
parameters:
type: Peaking
freq: 50
q: 1
gain: 3
//
To get that bass hump: (?)
filters:
peak:
type: Biquad
parameters:
type: Peaking
freq: 50
q: 1
gain: 3
//
The input File has a .wav file ending. Is it a proper wav file? Then there is a header which will mess things up. If you check how long the file header is you can set "skip_bytes" to skip the header. You can use the analyze_wav script in the testscripts folder. Or use stdin and add another sox piping raw data into camilladsp.
ok I followed the last suggestion adding "sox 02.wav -t raw -" to the command i posted before and editing the yml file to get the input from /dev/stdin instead of 02.wav.
Unfortunatly same problem, and I don't get where the error can be 😡🙁
The filter itself is ok, in fact I applied it with "sox inputfile outputfile fir impulse.txt" and it works
Now I wanted to exclude sox entirely from the chain. So i converted the wav to raw and use only camilla to read the raw file and then to output it to a raw file.
The outputfile, suffer from the same exact problem: only loud noise.
The outputfile, suffer from the same exact problem: only loud noise.
New theory.. You put -b 24 for sox which I guess neans 24 bit samples stored as three bytes. The S24LE format of camilladsp is 4 bytes of which only three are used. Try with S24LE3!
I tryed with 32bit and it worked... then I read your comment and now it works on 24bit too. Thank you so much for your patient !
Hi here 🙂
As it was bad weather yesterday, i thought i would use some time with my setup.
I was home alone so livingroom became testcenter for a day 😀
I created some "final" filters for my gear, which is a prefilter and a final fir:
I created my prefilter by taking four sets of measurements (4x44100Hz + 4x48000Hz) in front of my couch (listening positions), time aligned and vector averaged them. With this
i created my vector average prefilter's with rePhase (i use .bin files).
Then i applied this prefilter to CamillaDSP and took another four sets of measurements, which was also vector averaged and time aligned. With them remeasurements i created my real fir filters with DRC-Designer.
I also samplerate converted the stuff along the way to give me a complete set of filter from 44100 to 192000Hz ... nice to have !
I simulated the final correction in REW, and took measurements to see if it was the same.
The simulation and the "realworld" measurements are allmost identical 🙂
Today i tried some of what TNT suggested for boosting the bass area, and it's working real good. But i have to take care and look for clipping when boosting i found out.
With my filters having -9dB of gain, and applying 5dB boost, it's below clipping in my setup.
I'am not done testing this lowshelf yet, but it's very usefull for us with pretty "flat" targets 😛
So all in all a very good weekend here in DK.
Jesper.
As it was bad weather yesterday, i thought i would use some time with my setup.
I was home alone so livingroom became testcenter for a day 😀
I created some "final" filters for my gear, which is a prefilter and a final fir:
I created my prefilter by taking four sets of measurements (4x44100Hz + 4x48000Hz) in front of my couch (listening positions), time aligned and vector averaged them. With this
i created my vector average prefilter's with rePhase (i use .bin files).
Then i applied this prefilter to CamillaDSP and took another four sets of measurements, which was also vector averaged and time aligned. With them remeasurements i created my real fir filters with DRC-Designer.
I also samplerate converted the stuff along the way to give me a complete set of filter from 44100 to 192000Hz ... nice to have !
I simulated the final correction in REW, and took measurements to see if it was the same.
The simulation and the "realworld" measurements are allmost identical 🙂
Today i tried some of what TNT suggested for boosting the bass area, and it's working real good. But i have to take care and look for clipping when boosting i found out.
With my filters having -9dB of gain, and applying 5dB boost, it's below clipping in my setup.
Code:
low_shelf:
type: Biquad
parameters:
type: Lowshelf
freq: 200
slope: 12
gain: 5
I'am not done testing this lowshelf yet, but it's very usefull for us with pretty "flat" targets 😛
So all in all a very good weekend here in DK.
Jesper.
Attachments
The way I have found to work best to find my preferred overall curve is to correct the speaker to flat with desired low end roll off in DRC and then use IIR shelving filters to set the frequency balance.
This would stop boosting from being an issue as the shelving is using cuts only.
When there is a realtime GUI then this would be quite easy with camilla.
I routinely come back to virtually the same curve time after time no matter which way I get there.
You can see the curve and the values used in this post
Full Range TC9 Line Array CNC Cabinet
Picture I used was too big so you might need to reload the page 🙂
This would stop boosting from being an issue as the shelving is using cuts only.
When there is a realtime GUI then this would be quite easy with camilla.
I routinely come back to virtually the same curve time after time no matter which way I get there.
You can see the curve and the values used in this post
Full Range TC9 Line Array CNC Cabinet
Picture I used was too big so you might need to reload the page 🙂
fluid, I have for a long time tried to figure out how to do a really slow wideband slope like 1 dB/oct from 200 -> ... how do you achive this with a shelf? Really low Q?
//
//
I use multiple shelving filters spaced one octave apart with a Q of 0.7 and a gain cut of whatever I want the slope to be.
I start at 150Hz and work up from there. You can then tweak the Q or the gain (or both) to put different slopes at different points.
I start at 150Hz and work up from there. You can then tweak the Q or the gain (or both) to put different slopes at different points.
I use multiple shelving filters spaced one octave apart with a Q of 0.7 and a gain cut of whatever I want the slope to be.
I start at 150Hz and work up from there. You can then tweak the Q or the gain (or both) to put different slopes at different points.
Quite clever IMO 🙂
Jesper.
In CamillaDSP the shelves are specified with gain, frequency and slope, so making a 1dB per octave slope is easy. The result is the same as setting a very low Q, but I haven't made it possible to specify shelves with Q instead of slope.
Is there a need for this?
On the same topic, for peaking, notch and bandpass etc, is there a need for specifying bandwidth instead of Q?
Is there a need for this?
On the same topic, for peaking, notch and bandpass etc, is there a need for specifying bandwidth instead of Q?
There are many different definitions of Q in parametric equalizers and they don't all give the same result.
It only really matters when trying to copy the settings from one type of EQ to another.
I think slope is a good way to set it in general but it doesn't make it easy to copy existing settings from another equalizer.
REW has different settings in it's equalizer to account for these changes.
I tend to use the generic setting as it is the same as Jriver and works in Fab filter for setting shelves.
The shelves I have used are generic 12dB shelving filters, I would have to check the difference with what MiniDSP are using.
It only really matters when trying to copy the settings from one type of EQ to another.
I think slope is a good way to set it in general but it doesn't make it easy to copy existing settings from another equalizer.
REW has different settings in it's equalizer to account for these changes.
I tend to use the generic setting as it is the same as Jriver and works in Fab filter for setting shelves.
The shelves I have used are generic 12dB shelving filters, I would have to check the difference with what MiniDSP are using.
Hi! Henrik, Jesper, TNT, phofman, ..all of you.
I am Flavio.
I've been following you for some time and I seem to know you.
Ciao Simonfil, Italia dove?
Congratulation Henrik, having Camilladsp as a system service is the winning idea.
I tried to build Charlie Laub's Ladspa filters, but without success (Hi Charlie! I'm clumsy, I'll try again).
Now I want Camilladsp.
Asking for help is for me the last of the solutions, but I have exhausted all the checks and attempts ... forgive me Henrik.
I'm working on a desktop computer with Linux Mint 19.3, but when the implementation is ok I repeat everything on a
Thin Client HP T620 Quad core 1.5 GHz 8 GB RAM 8 GB SSD (ebay 80€, shipping included) with AP Linux.
I followed the instructions
GitHub - HEnquist/camilladsp-config: Help for setting up CamillaDSP, example config files etc
steps 1 to 7, seemingly smoothly.
The result are these:
and
or
However, nothing rings and nothing happens.
My cargo install:
My asound.conf:
My alsaconfig.yml:
aplay -l:
Is it better if I stop here?
Thanks!
Bye,
Flavio
I am Flavio.
I've been following you for some time and I seem to know you.
Ciao Simonfil, Italia dove?
Congratulation Henrik, having Camilladsp as a system service is the winning idea.
I tried to build Charlie Laub's Ladspa filters, but without success (Hi Charlie! I'm clumsy, I'll try again).
Now I want Camilladsp.
Asking for help is for me the last of the solutions, but I have exhausted all the checks and attempts ... forgive me Henrik.
I'm working on a desktop computer with Linux Mint 19.3, but when the implementation is ok I repeat everything on a
Thin Client HP T620 Quad core 1.5 GHz 8 GB RAM 8 GB SSD (ebay 80€, shipping included) with AP Linux.
I followed the instructions
GitHub - HEnquist/camilladsp-config: Help for setting up CamillaDSP, example config files etc
steps 1 to 7, seemingly smoothly.
The result are these:
Code:
root@flavio-PC:/home/f/Scrivania/Scaricati/Camilla/camilladsp-config# camilladsp -v alsaconfig.yml
[2020-07-28T00:06:23Z DEBUG camilladsp] Read config file Some("alsaconfig.yml")
[2020-07-28T00:06:23Z ERROR camilladsp] invalid float literal
[2020-07-28T00:06:23Z DEBUG camilladsp] Exiting due to config error
Code:
root@flavio-PC:~# systemctl status camilladsp
● camilladsp.service - CamillaDSP Daemon
Loaded: loaded (/etc/systemd/system/camilladsp.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) since Tue 2020-07-28 01:48:33 CEST; 458ms ago
Process: 11157 ExecStart=/usr/local/bin/camilladsp /media/DATI/Scaricati/Camilla/camilladsp-config/alsaconfig.yml (code=exi
Main PID: 11157 (code=exited, status=0/SUCCESS)
lug 28 01:48:34 flavio-PC systemd[1]: camilladsp.service: Service hold-off time over, scheduling restart.
lug 28 01:48:34 flavio-PC systemd[1]: camilladsp.service: Scheduled restart job, restart counter is at 3060.
lug 28 01:48:34 flavio-PC systemd[1]: Stopped CamillaDSP Daemon.
lug 28 01:48:34 flavio-PC systemd[1]: Started CamillaDSP Daemon.
lug 28 01:48:34 flavio-PC camilladsp[11160]: [2020-07-27T23:48:34Z ERROR camilladsp] invalid float literal
Code:
root@flavio-PC:~# systemctl status camilladsp
● camilladsp.service - CamillaDSP Daemon
Loaded: loaded (/etc/systemd/system/camilladsp.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) since Tue 2020-07-28 01:58:07 CEST; 238ms ago
Process: 11770 ExecStart=/usr/local/bin/camilladsp /media/DATI/Scaricati/Camilla/camilladsp-config/alsaconfig.yml (code=exi
Main PID: 11770 (code=exited, status=0/SUCCESS)
or
root@flavio-PC:~# systemctl status camilladsp
● camilladsp.service - CamillaDSP Daemon
Loaded: loaded (/etc/systemd/system/camilladsp.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-07-28 02:00:49 CEST; 3ms ago
Main PID: 11931 (camilladsp)
Tasks: 0 (limit: 4915)
CGroup: /system.slice/camilladsp.service
└─11931 /usr/local/bin/camilladsp /media/DATI/Scaricati/Camilla/camilladsp-config/alsaconfig.yml
lug 28 02:00:49 flavio-PC systemd[1]: Started CamillaDSP Daemon.
My cargo install:
Code:
RUSTFLAGS='-C target-cpu=native' cargo install --path . --root /usr/local/ --no-default-features --features alsa-backend --features socketserver --features 32bit
My asound.conf:
Code:
#
# Place your global alsa-lib configuration here...
# > xed /etc/asound.conf
#
#
pcm.!default {
type plug
slave.pcm "camilladsp"
}
pcm.camilladsp {
# Use the ALSA plug-in "plug" for rate-/format-conversion.
type plug
# Forward the audio stream to the ALSA loopback-device
slave {
pcm {
# Direct hardware access
type hw
# Loopback card name
#
# Has to match "id" in the options of the snd-aloop module
card "Loopback"
# Loopback device ID
device 0
# Number of audio channels
#
# Has to match the number of channels in music player app
# and in the CamillaDSP input configuration
channels 2
# Format of audio stream
#
# Has to match the format defined in the
# of the CamillaDSP input configuration
# S16_LE - Signed 16 bit int, stored as two bytes
# S24_LE - Signed 24 bit int, stored as four bytes
# S24_LE3 - Signed 24 bit int, stored as three bytes
# S32_LE - Signed 32 bit int, stored as four bytes
# FLOAT32_LE - 32 bit float, stored as four bytes
# FLOAT64_LE - 64 bit float, stored as eight bytes
format "S16_LE"
# Sampling-rate of audio stream
#
# Has to match the sampling-rate defined in the
# CamillaDSP configuration
rate 44100
}
}
}
ctl.!default {
type hw
card "Loopback"
}
# Create an ALSA default control-device for the ALSA loopback-device.
ctl.camilladsp {
# Direct hardware access
type hw
# Loopback card name
#
# Has to match "id" in the options of the snd-aloop module
card "Loopback"
}
My alsaconfig.yml:
Code:
---
devices:
samplerate: 44100
buffersize: 1024
capture:
type: Alsa
channels: 2
device: "hw:Loopback,1"
format: S16LE
playback:
type: Alsa
channels: 2
device: "hw:3,0"
format: S16LE
filters:
highpass:
type: Conv
parameters:
type: File
filename: /media/DATI/Scaricati/Camilla/camilladsp-config/highpass.txt
lowpass:
type: Conv
parameters:
type: File
filename: /media/DATI/Scaricati/Camilla/camilladsp-config/lowpass.txt
pipeline:
- type: Filter
channel: 0
names:
- highpass
- type: Filter
channel: 1
names:
- lowpass
aplay -l:
Code:
root@flavio-PC:~# aplay -l
**** Lista di PLAYBACK dispositivi hardware ****
scheda 0: Loopback [Loopback], dispositivo 0: Loopback PCM [Loopback PCM]
Sottoperiferiche: 8/8
Sottoperiferica #0: subdevice #0
Sottoperiferica #1: subdevice #1
Sottoperiferica #2: subdevice #2
Sottoperiferica #3: subdevice #3
Sottoperiferica #4: subdevice #4
Sottoperiferica #5: subdevice #5
Sottoperiferica #6: subdevice #6
Sottoperiferica #7: subdevice #7
scheda 0: Loopback [Loopback], dispositivo 1: Loopback PCM [Loopback PCM]
Sottoperiferiche: 8/8
Sottoperiferica #0: subdevice #0
Sottoperiferica #1: subdevice #1
Sottoperiferica #2: subdevice #2
Sottoperiferica #3: subdevice #3
Sottoperiferica #4: subdevice #4
Sottoperiferica #5: subdevice #5
Sottoperiferica #6: subdevice #6
Sottoperiferica #7: subdevice #7
scheda 1: Intel [HDA Intel], dispositivo 0: ALC888 Analog [ALC888 Analog]
Sottoperiferiche: 1/1
Sottoperiferica #0: subdevice #0
scheda 2: HDMI [HDA ATI HDMI], dispositivo 3: HDMI 0 [HDMI 0]
Sottoperiferiche: 1/1
Sottoperiferica #0: subdevice #0
scheda 3: HD [AUREON XFIRE8.0 HD], dispositivo 0: USB Audio [USB Audio]
Sottoperiferiche: 1/1
Sottoperiferica #0: subdevice #0
scheda 3: HD [AUREON XFIRE8.0 HD], dispositivo 1: USB Audio [USB Audio #1]
Sottoperiferiche: 1/1
Sottoperiferica #0: subdevice #0
scheda 3: HD [AUREON XFIRE8.0 HD], dispositivo 2: USB Audio [USB Audio #2]
Sottoperiferiche: 1/1
Sottoperiferica #0: subdevice #0
root@flavio-PC:~#
Is it better if I stop here?
Thanks!
Bye,
Flavio
You are probably very close!
This error message is the key:
The error message should be a lot more detailed. Instead of "invalid string literal" it shoud say something like "Can't read number on line 123 of file somefile.txt" I'll fix that in the next version!
This error message is the key:
This means that somewhere there is a string that can't be interpreted as a number. Most likely this is in one of the coefficient files. Can you post your highpass.txt and lowpass.txt?invalid float literal
The error message should be a lot more detailed. Instead of "invalid string literal" it shoud say something like "Can't read number on line 123 of file somefile.txt" I'll fix that in the next version!
- Home
- Source & Line
- PC Based
- CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc