Sure. It is possible to load a *.yml configuration file in Excel sheet, modify the sections of interest and rewrite it to replace the original respecting its structure and hierarchies.Is it possible to handle yaml in Excel?
It is a versatile and powerful tool, even without resorting to VBA code.
I apologize for my less than optimal English, the excellent Google translator helps me but cannot work miracles, especially if the ideas are not clear.
Turning "Conv" into "FIR" is not essential and is equivocal,
would only serve to clearly distinguish the category of FIR filters that make use of a * .txt file consisting of a simple succession of values (taps?), from the category of IIR filters (Biquad, BiquadGroup and DiffEq) in which a description is mandatory structured.
And inaugurate a new type: "type: IIR" is wrong.
Forget all this.
I believed that if it was possible to write the configuration file "config.yml" as follows:
Code:
---
devices:
samplerate: 44100
chunksize: 1024
capture:
type: Alsa
channels: 2
device: "hw:Loopback,0,0"
format: S16LE
playback:
type: Alsa
channels: 4
device: "hw:Generic_1"
format: S32LE
filters:
lowpass:
type: Biquad
parameters:
type: File
values: lowpass.txt
highpass:
type: Biquad
parameters:
type: File
values: highpass.txt
peak1:
type: Biquad
parameters:
type: File
values: peak1.txt
mixers:
mono:
channels:
in: 2
out: 4
mapping:
- dest: 0
sources:
- channel: 0
gain: -6
inverted: false
- dest: 1
sources:
- channel: 1
gain: -6
inverted: false
- dest: 2
sources:
- channel: 0
gain: -6
inverted: false
- dest: 3
sources:
- channel: 1
gain: -6
inverted: false
pipeline:
- type: Mixer
name: mono
- type: Filter
channel: 0
names:
- lowpass
- peak1
- type: Filter
channel: 1
names:
- lowpass
- peak1
- type: Filter
channel: 2
names:
- highpass
- type: Filter
channel: 3
names:
- highpass
Code:
filters:
lowpass:
type: Biquad
parameters:
type: Lowpass
freq: 1000
q: 1.0
Code:
filters:
highpass:
type: Biquad
parameters:
type: Highpass
freq: 1000
q: 1.0
Code:
filters:
peak1:
type: Biquad
parameters:
type: Highshelf
freq: 1000
slope: 15
gain: -6
However I could not have changed the "gain: -6" because it's in the "mixers" section.
Finally it would be impossible to add (and remove) filters, but only to modify the existing ones.
Much better to read, edit and rewrite the entire *.yml file.
Of course, in Excel the biquad coefficients are generated to obtain the numerical and graphic representation.
And then
No modification is needed...to get a graphic response of each set of filters and the resulting sum of all.
..to import and superimpose reference curves and frequency responses.
And to have conversion factors for the shelf filters to transform the slope in Q and Q into different Q.
I'd better do it and then submit it to you.
I'm sorry for the confusion.
Hello here!
I have a few things on my mind.
First off, is the prebuild binary for ARM (Raspberry Pi) with FFTW or RustFFT ?
When we are there, why did the newer versions disable rate_adjust by default?
(Any reason for this, other than keeping default as minimum as possible?)
I did as i also have included in my SuperPlayer hack GitHub - Lykkedk/SuperPlayer: Hacking software & scripts to play music include a script which can be used to change filter's and player on the fly, but i realize that only switching filter with websocket is much better. I have created some "null_44100.yml, null_96000.yml etc..." config files, which add -9dB of gain, so when switching between filter and perhaps no filter to compare i now got the same volume 😛.. Very good when comparing SQ! - I will eventually update my GitHub.
What i would like to know and hoping someone can explain is about clipping :
If i create a filter in say rePhase making it an 32bit .bin filter i need to apply some -gain typically between -6dBto and -12dB (I mostly just use -9dB)
Why is this the case, why does clipping accour when filter is applied, even when rePhase tells me that maximum peak is say -1,2dB or so? - This also happens when i create filters in DRC-fir or DRC Designer.
So if this is the case that it cannot be avoided, is there a way to test it other than playing different music and watch camilla for "clipping occours" debug messages? - I mean is there another way of testing a filter for worst case senario?
Pretty much, but hey i am still newbee into this...
😀 Jesper.
I have a few things on my mind.
First off, is the prebuild binary for ARM (Raspberry Pi) with FFTW or RustFFT ?
When we are there, why did the newer versions disable rate_adjust by default?
(Any reason for this, other than keeping default as minimum as possible?)
I did as i also have included in my SuperPlayer hack GitHub - Lykkedk/SuperPlayer: Hacking software & scripts to play music include a script which can be used to change filter's and player on the fly, but i realize that only switching filter with websocket is much better. I have created some "null_44100.yml, null_96000.yml etc..." config files, which add -9dB of gain, so when switching between filter and perhaps no filter to compare i now got the same volume 😛.. Very good when comparing SQ! - I will eventually update my GitHub.
What i would like to know and hoping someone can explain is about clipping :
If i create a filter in say rePhase making it an 32bit .bin filter i need to apply some -gain typically between -6dBto and -12dB (I mostly just use -9dB)
Why is this the case, why does clipping accour when filter is applied, even when rePhase tells me that maximum peak is say -1,2dB or so? - This also happens when i create filters in DRC-fir or DRC Designer.
So if this is the case that it cannot be avoided, is there a way to test it other than playing different music and watch camilla for "clipping occours" debug messages? - I mean is there another way of testing a filter for worst case senario?
Pretty much, but hey i am still newbee into this...
😀 Jesper.
Hello Jasper!
🙂🙂🙂 I think we scared him!
Me with my nonsense and you with your strange things. 🙂🙂🙂
🙂🙂🙂 I think we scared him!
Me with my nonsense and you with your strange things. 🙂🙂🙂
I have been playing around a bit more on the Mac, and have had some trouble with the BlackHole virtual sound card. Sometimes it doesn't work to capture audio from it. It happens both with CamillaDSP and the record_wav example from Cpal.
I don't know if the bug that causes this is in BlackHole or Cpal, but using Soundflower instead of BlackHole seems to make the problem go away.
Did anyone else have problems with BlackHole?
I wish I could help with this question... I have made some inquiries in the squeezbox / LMS forum to try to find out what kind of effort there would be to make an out/in interface for LMS to hook Camilla into. I'll get back if anything interesting seem to pop up - I believe there is a quite substantial user-base which would like to do some FIR tweaking if their LMS fed system, me included 🙂
//
Haha no don't worry 🙂 I'm just away all day, will reply tonight!Hello Jasper!
🙂🙂🙂 I think we scared him!
Me with my nonsense and you with your strange things. 🙂🙂🙂
The binaries on Github are using RustFFT! After all the optimizations there isn't much speed difference any longer (as long as you use "easy" chunksizes like powers of two, but there is no reason to use anything else).Hello here!
I have a few things on my mind.
First off, is the prebuild binary for ARM (Raspberry Pi) with FFTW or RustFFT ?
Before there was no setting that explicitly enabled or disabled rate_adjust. Instead it was decided based on other settings, and with all the possible combinations of devices etc it wasn't easy to know it if would be enabled or not. So I decided to add a specific setting to avoid confusion.When we are there, why did the newer versions disable rate_adjust by default?
(Any reason for this, other than keeping default as minimum as possible?)
Yes just switching using the websocket server should be much easier! I have made a python library to help with this. It needs the next release of CamillaDSP, but maybe you want to take a look already 🙂 It's here: GitHub - HEnquist/pycamilladsp: Python library for handling the communication with CamillaDSP via a websocket.I did as i also have included in my SuperPlayer hack GitHub - Lykkedk/SuperPlayer: Hacking software & scripts to play music include a script which can be used to change filter's and player on the fly, but i realize that only switching filter with websocket is much better. I have created some "null_44100.yml, null_96000.yml etc..." config files, which add -9dB of gain, so when switching between filter and perhaps no filter to compare i now got the same volume 😛.. Very good when comparing SQ! - I will eventually update my GitHub.
The maximum peak you see is in the frequency domain. The maximum peak value in the waveform lives in the time domain, where things aren't as simple. Even if a filter has a gain of below 0dB at all frequencies, it can still produce peak values that are larger than the original signal.What i would like to know and hoping someone can explain is about clipping :
If i create a filter in say rePhase making it an 32bit .bin filter i need to apply some -gain typically between -6dBto and -12dB (I mostly just use -9dB)
Why is this the case, why does clipping accour when filter is applied, even when rePhase tells me that maximum peak is say -1,2dB or so? - This also happens when i create filters in DRC-fir or DRC Designer.
So if this is the case that it cannot be avoided, is there a way to test it other than playing different music and watch camilla for "clipping occours" debug messages? - I mean is there another way of testing a filter for worst case senario?
Pretty much, but hey i am still newbee into this...
😀 Jesper.
Take this simple example, a 1kHz sine wave with flattened peaks:

Then we try two different things. First, lets try to remove the higher harmonics with a low-pass at 2 kHz. The result is the blue curve. Second try, let's just shuffle the phase of the harmonics a bit, without changing their amplitude. That becomes the orange curve.

Both curves have values above 1! This is a very simple example and with more complicated signals and more complicated filters, the peaks can be much higher. The theoretical max for a long filter is very high. But it's also very unlikely that you would ever encounter a waveform that makes it happen. The best approach in practice is what you have done, to adjust the attenuation until the clipping warnings go away on normal music.
If you can work with yaml in Excel I think that's the way to go! I use it only rarely and only for very basic stuff, so I don't know what's possible.Sure. It is possible to load a *.yml configuration file in Excel sheet, modify the sections of interest and rewrite it to replace the original respecting its structure and hierarchies.
It is a versatile and powerful tool, even without resorting to VBA code.
I think explaining a change of the data structure using only words and no example is very difficult 🙂I apologize for my less than optimal English, the excellent Google translator helps me but cannot work miracles, especially if the ideas are not clear.
I believed that if it was possible to write the configuration file "config.yml" as follows:
Code:--- devices: samplerate: 44100 chunksize: 1024 ... [/QUOTE] Is there something in the readme I can improve to make the Conv filter type more clear? If you can make an Excel sheet that generates a working configuration as yaml, this would be very useful! Give it a shot! :)
I think I read something somewhere about a Brutefir plugin that used to work but is no longer supported. That would indicate that it's at least possible to pass the audio through an external app. How do do it, and how much work it is to get it up and running are of course unknown. The ideal thing would be if someone who knows the inner workings of LMS is willing to help out.I wish I could help with this question... I have made some inquiries in the squeezbox / LMS forum to try to find out what kind of effort there would be to make an out/in interface for LMS to hook Camilla into. I'll get back if anything interesting seem to pop up - I believe there is a quite substantial user-base which would like to do some FIR tweaking if their LMS fed system, me included 🙂
//
I have never used LMS but this page talks about filters connected via regular pipes
Brutefir Filter - SqueezeboxWiki
Brutefir Filter - SqueezeboxWiki
I'm trying to find that out...
//
I did see youre nice thread there TNT.
I also chased this some months ago, see post #6 in this thread here:
Determine samplerate LMS, squeezelite or like
My username at slimserver forum is jesperlykke btw.
Jesper
I use camilladsp for room eq on Ubuntu server, and it works like a charm. I'm very thankful for this great piece of software!
When I don't play music, camilladsp runs at 100 %. When music plays, only a few percent CPU is utilized. The computer runs 24/7 so I wanted to do something about it. What I did, is to only run camilladsp when the DAC (USB) is powered on. This is done by the udev/systemd config as shown below.
/etc/udev/rules.d/90-camilladsp.rules:
/etc/systemd/system/camilladsp.service:
When I don't play music, camilladsp runs at 100 %. When music plays, only a few percent CPU is utilized. The computer runs 24/7 so I wanted to do something about it. What I did, is to only run camilladsp when the DAC (USB) is powered on. This is done by the udev/systemd config as shown below.
/etc/udev/rules.d/90-camilladsp.rules:
Code:
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a39", ATTRS{idProduct}=="3fd3", SYMLINK+="dac", TAG+="systemd", RUN+="/bin/systemctl --no-block start camilladsp.service"
Code:
[Unit]
Description=CamillaDSP Daemon
After=syslog.target
Wants=sound.target
After=sound.target
# To make a service wait until a device is available on system startup, use After=your.device
After=dev-dac.device
# To stop a service on device loss, use BindsTo=your.device
BindsTo=dev-dac.device
StartLimitIntervalSec=10
StartLimitBurst=10
[Service]
User=camilladsp
Group=camilladsp
Type=simple
ExecStart=/usr/local/bin/camilladsp /etc/camilladsp.yml
Restart=on-failure
RestartSec=1
StandardError=syslog
SyslogIdentifier=camilladsp
Nice=-1
[Install]
WantedBy=default.target
Thanks for sharing!
It's not supposed to be eating 100% of the cpu when not playing. Which version are you running? What do you mean by not playing, that no application is outputting any sound, or that the dac is powered off? Does CamilllaDSP exit when you power off the dac?
Could you also post your config file?
It's not supposed to be eating 100% of the cpu when not playing. Which version are you running? What do you mean by not playing, that no application is outputting any sound, or that the dac is powered off? Does CamilllaDSP exit when you power off the dac?
Could you also post your config file?
Maybe it can be discussed if the process runs at 100 % or not. Top shows over 40 % when not playing music, which I believe means that one core is nearly fully utilized (Intel i3). When playing music I see 4-5 % CPU utilization in top.
I use version 0.3.1, but it was same the behavior for an earlier version.
Yes, by not playing, I mean that no application outputs sound, e.g. pausing Spotify.
My config files follows.
/etc/modules-load.d/aloop.conf:
/etc/asound.conf:
/etc/camilladsp.yml:
I use version 0.3.1, but it was same the behavior for an earlier version.
Yes, by not playing, I mean that no application outputs sound, e.g. pausing Spotify.
My config files follows.
/etc/modules-load.d/aloop.conf:
Code:
snd
snd-timer
snd-pcm
snd-aloop
Code:
pcm.!default {
type plug
slave.pcm "camilladsp"
}
pcm.camilladsp {
type plug
slave {
pcm {
type hw
card "Loopback"
device 0
channels 2
format "S32_LE"
rate 44100
}
}
}
ctl.!default {
type hw
card "Loopback"
}
ctl.camilladsp {
type hw
card "Loopback"
}
Code:
devices:
samplerate: 44100
chunksize: 1024
capture:
type: Alsa
channels: 2
device: "hw:Loopback,1"
format: S32LE
playback:
type: Alsa
channels: 2
device: "hw:1"
format: S32LE
filters:
clipgain:
type: Gain
parameters:
gain: -4.0
inverted: false
peaking_L1:
type: Biquad
parameters:
type: Peaking
freq: 44.0
q: 2.438
gain: -8.1
[...]
peaking_L16:
type: Biquad
parameters:
type: Peaking
freq: 3854
q: 1.030
gain: -11.2
peaking_R1:
type: Biquad
parameters:
type: Peaking
freq: 45.3
q: 2.004
gain: -9.4
[...]
peaking_R13:
type: Biquad
parameters:
type: Peaking
freq: 9368
q: 2.518
gain: 1.6
pipeline:
- type: Filter
channel: 0
names:
- clipgain
- peaking_L1
[...]
- peaking_L16
- type: Filter
channel: 1
names:
- clipgain
- peaking_R1
[...]
- peaking_R13
Hmm this seems a bit strange, would like to figure it out and fix it 🙂
If you start playback again, does the cpu usage then go back down to the few %?
In a much earlier version there was a bug that would make it use 100% if playback failed (when a usb dac was powered off for example) but I haven't seen it since I fixed that.
Could you try pausing the processing? (This is a possible workaround and not a proper fix)
Add these two lines in the devices section:
That should stop any processing while the input is silent, after a 3 second delay.
Could I also ask you to run in verbose mode , -vv, and dump the output to a file while clicking pause in spotify? Maybe there is some clue there. The file will be quite long but that's ok.
If you start playback again, does the cpu usage then go back down to the few %?
In a much earlier version there was a bug that would make it use 100% if playback failed (when a usb dac was powered off for example) but I haven't seen it since I fixed that.
Could you try pausing the processing? (This is a possible workaround and not a proper fix)
Add these two lines in the devices section:
Code:
silence_threshold: -60
silence_timeout: 3.0
Could I also ask you to run in verbose mode , -vv, and dump the output to a file while clicking pause in spotify? Maybe there is some clue there. The file will be quite long but that's ok.
Getting mad
Hi Henkrik, I attached a test config that I'm trying to use. (I renamed it to yml just to be able to upload it)
When I check it using the "-c" option i get the following error:
I triplechecked the config syntax (yaml with its space-based syntax does not help at all, such a bad markup language) and it seems correct. I also used a YAML syntax checker and it's marked as a valid YAML file.
Plus, I tried the check on all the example configs in the repository and maybe a 20% pass the check.
Don't know where I do wrong. A suggestion would be really appreciated.
Thanks for all your work!
Hi Henkrik, I attached a test config that I'm trying to use. (I renamed it to yml just to be able to upload it)
When I check it using the "-c" option i get the following error:
Code:
[2020-08-10T21:04:36Z ERROR camilladsp] No such file or directory (os error 2)
[2020-08-10T21:04:36Z DEBUG camilladsp] Exiting due to config error
Plus, I tried the check on all the example configs in the repository and maybe a 20% pass the check.
Don't know where I do wrong. A suggestion would be really appreciated.
Thanks for all your work!
Attachments
Last edited:
The error you get means that CamillaDSP can't open the coefficient file, either /tmp/1.dbl or /tmp/2.dbl (I'll improve the error to include the filename!)Hi Henkrik, I attached a test config that I'm trying to use. (I renamed it to yml just to be able to upload it)
When I check it using the "-c" option i get the following error:
I triplechecked the config syntax (yaml with its space-based syntax does not help at all, such a bad markup language) and it seems correct. I also used a YAML syntax checker and it's marked as a valid YAML file.Code:[2020-08-10T21:04:36Z ERROR camilladsp] No such file or directory (os error 2) [2020-08-10T21:04:36Z DEBUG camilladsp] Exiting due to config error
Plus, I tried the check on all the example configs in the repository and maybe a 20% pass the check.
Don't know where I do wrong. A suggestion would be really appreciated.
Thanks for all your work!
Do the files really exist? Can you do "cat /tmp/1.dbl"?
You can put an absolute or relative path. As usual, a relative path should be relative to the path you are at when typing the camilladsp command. Most of the examples use the filters.txt coefficient file, that is also included in the root of the repo.
The syntax looks correct otherwise. The fact that it gets to the point where it tries to open the coefficient file means the syntax of the config file is correct. the checking is done in two stages. First the file is read and parsed. This catches any syntax errors. Then there is a series of checks of the actual values, so that number of channels match, coefficient files can be read etc, to make sure the config will work. But it does not check if the capture or playback devices can be opened, that isn't done until it the processing starts.
I recommend using an editor that supports syntax highlighting for yaml. Then you immediately see if there is a syntax error. I use VS Code, but others like Sublime, Atom, Notepad++ etc should work equally well (you may need a yaml plugin for some).
What errors do you get on the example config files? Also file not found? They all worked when I tried just now.
Yes, when I start playback again, the CPU usage drops to a few % again.
Without the configuration changes, this is the output with -vv:
The last pattern repeats forever, regardless if sound is playing or not. Without the configuration changes you gave me, camilladsp seems to keep processing silence or some subtle noise. camilladsp is not to blame and the configuration changes you gave me solves the problem. Now, CPU usage for camilladsp drops to 1 % when no sound is playing. Thank you!
Without the configuration changes, this is the output with -vv:
Code:
camilladsp] Read config file Some("/etc/camilladsp.yml")
camillalib::biquad] a1=-1.995870357415145 a2=0.9959095764908958 b0=0.9987596814857749 b1=-1.995870357415145 b2=0.9971498950051209
camillalib::biquad] a1=-1.9905713569751415 a2=0.9906790271970961 b0=0.9967469579911454 b1=-1.9905713569751415 b2=0.9939320692059506
camillalib::biquad] a1=-1.9921664518918014 a2=0.9923335364457471 b0=0.9988804885000575 b1=-1.9921664518918014 b2=0.9934530479456894
camillalib::biquad] a1=-1.9937947545037558 a2=0.9943000423990916 b0=1.0030363108584848 b1=-1.9937947545037558 b2=0.9912637315406069
camillalib::biquad] a1=-1.9934474522110504 a2=0.9942409245019276 b0=1.0052361022927792 b1=-1.9934474522110504 b2=0.9890048222091485
camillalib::biquad] a1=-1.9445112139259135 a2=0.9454154020822152 b0=0.9807622294915498 b1=-1.9445112139259135 b2=0.9646531725906655
camillalib::biquad] a1=-1.9793212795355049 a2=0.9810708549540136 b0=1.011481422856322 b1=-1.9793212795355049 b2=0.9695894320976917
camillalib::biquad] a1=-1.9331064941591474 a2=0.9402388743782043 b0=0.9820151035042947 b1=-1.9331064941591474 b2=0.9582237708739095
camillalib::biquad] a1=-1.9372071997619875 a2=0.9457514430612006 b0=1.0493223249916201 b1=-1.9372071997619875 b2=0.8964291180695805
camillalib::biquad] a1=-1.9585196268748029 a2=0.971375395387306 b0=0.9945125917608771 b1=-1.9585196268748029 b2=0.9768628036264289
camillalib::biquad] a1=-1.9563834330874168 a2=0.9742508738253998 b0=1.0007628658229526 b1=-1.9563834330874168 b2=0.9734880080024473
camillalib::biquad] a1=-1.9337498959519164 a2=0.9589493004888611 b0=0.99142252238302 b1=-1.9337498959519164 b2=0.9675267781058409
camillalib::biquad] a1=-1.8868193034224017 a2=0.939459407206669 b0=0.9863644687370875 b1=-1.8868193034224017 b2=0.9530949384695816
camillalib::biquad] a1=-1.7802488996163846 a2=0.9162234390398385 b0=0.9881097355508788 b1=-1.7802488996163846 b2=0.9281137034889597
camillalib::biquad] a1=-1.6660697306653616 a2=0.7983669611540231 b0=1.1833230381082536 b1=-1.6660697306653616 b2=0.6150439230457695
camillalib::biquad] a1=-1.1505426974139796 a2=0.3488292651186397 b0=0.7640882889985223 b1=-1.1505426974139796 b2=0.5847409761201174
camillalib::biquad] a1=-1.994441001483369 a2=0.994482542555201 b0=0.9981760503835588 b1=-1.994441001483369 b2=0.9963064921716419
camillalib::biquad] a1=-1.9944310636929565 a2=0.9945404256100043 b0=0.998591900334205 b1=-1.9944310636929565 b2=0.9959485252757992
camillalib::biquad] a1=-1.9905373054365139 a2=0.9907169768294497 b0=0.9977665048058548 b1=-1.9905373054365139 b2=0.9929504720235948
camillalib::biquad] a1=-1.9969328559658561 a2=0.997307795976805 b0=1.0007873259029418 b1=-1.9969328559658561 b2=0.9965204700738634
camillalib::biquad] a1=-1.9843027294329278 a2=0.9849700353230283 b0=0.997992181085262 b1=-1.9843027294329278 b2=0.9869778542377661
camillalib::biquad] a1=-1.985595413489879 a2=0.9875462439328357 b0=1.007553792799898 b1=-1.985595413489879 b2=0.9799924511329378
camillalib::biquad] a1=-1.9795362964774053 a2=0.9829849275453095 b0=1.0151954905485459 b1=-1.9795362964774053 b2=0.9677894369967637
camillalib::biquad] a1=-1.8882787850955025 a2=0.8927959612089637 b0=0.9663130191606668 b1=-1.8882787850955025 b2=0.9264829420482968
camillalib::biquad] a1=-1.9598581664227328 a2=0.9760092511874753 b0=1.0161245279274491 b1=-1.9598581664227328 b2=0.9598847232600264
camillalib::biquad] a1=-1.7753828333512627 a2=0.8245436627883472 b0=0.9552392302392914 b1=-1.7753828333512627 b2=0.869304432549056
camillalib::biquad] a1=-1.851565343647316 a2=0.9260250878605759 b0=1.0648844571009481 b1=-1.851565343647316 b2=0.8611406307596277
camilladsp[199599]: Buffer frames 2048
camillalib::biquad] a1=-1.317699908956903 a2=0.613864458695284 b0=0.8993402742395061 b1=-1.317699908956903 b2=0.714524184455778
camillalib::biquad] a1=-0.3977562825495081 a2=0.7005719529660257 b0=1.0302818223209615 b1=-0.3977562825495081 b2=0.6702901306450643
camilladsp] Config is valid
camilladsp] Wait for config
camilladsp] Config ready
camillalib::filters] Build new pipeline
camillalib::filters] Build from config
camillalib::biquad] a1=-1.995870357415145 a2=0.9959095764908958 b0=0.9987596814857749 b1=-1.995870357415145 b2=0.9971498950051209
camillalib::biquad] a1=-1.9905713569751415 a2=0.9906790271970961 b0=0.9967469579911454 b1=-1.9905713569751415 b2=0.9939320692059506
camillalib::biquad] a1=-1.9921664518918014 a2=0.9923335364457471 b0=0.9988804885000575 b1=-1.9921664518918014 b2=0.9934530479456894
camillalib::biquad] a1=-1.9937947545037558 a2=0.9943000423990916 b0=1.0030363108584848 b1=-1.9937947545037558 b2=0.9912637315406069
camillalib::biquad] a1=-1.9934474522110504 a2=0.9942409245019276 b0=1.0052361022927792 b1=-1.9934474522110504 b2=0.9890048222091485
camillalib::biquad] a1=-1.9445112139259135 a2=0.9454154020822152 b0=0.9807622294915498 b1=-1.9445112139259135 b2=0.9646531725906655
camillalib::biquad] a1=-1.9793212795355049 a2=0.9810708549540136 b0=1.011481422856322 b1=-1.9793212795355049 b2=0.9695894320976917
camillalib::biquad] a1=-1.9331064941591474 a2=0.9402388743782043 b0=0.9820151035042947 b1=-1.9331064941591474 b2=0.9582237708739095
camillalib::biquad] a1=-1.9372071997619875 a2=0.9457514430612006 b0=1.0493223249916201 b1=-1.9372071997619875 b2=0.8964291180695805
camillalib::biquad] a1=-1.9585196268748029 a2=0.971375395387306 b0=0.9945125917608771 b1=-1.9585196268748029 b2=0.9768628036264289
camillalib::biquad] a1=-1.9563834330874168 a2=0.9742508738253998 b0=1.0007628658229526 b1=-1.9563834330874168 b2=0.9734880080024473
camillalib::biquad] a1=-1.9337498959519164 a2=0.9589493004888611 b0=0.99142252238302 b1=-1.9337498959519164 b2=0.9675267781058409
camillalib::biquad] a1=-1.8868193034224017 a2=0.939459407206669 b0=0.9863644687370875 b1=-1.8868193034224017 b2=0.9530949384695816
camillalib::biquad] a1=-1.7802488996163846 a2=0.9162234390398385 b0=0.9881097355508788 b1=-1.7802488996163846 b2=0.9281137034889597
camillalib::biquad] a1=-1.6660697306653616 a2=0.7983669611540231 b0=1.1833230381082536 b1=-1.6660697306653616 b2=0.6150439230457695
camillalib::biquad] a1=-1.1505426974139796 a2=0.3488292651186397 b0=0.7640882889985223 b1=-1.1505426974139796 b2=0.5847409761201174
camillalib::filters] Build from config
camillalib::biquad] a1=-1.994441001483369 a2=0.994482542555201 b0=0.9981760503835588 b1=-1.994441001483369 b2=0.9963064921716419
camillalib::biquad] a1=-1.9944310636929565 a2=0.9945404256100043 b0=0.998591900334205 b1=-1.9944310636929565 b2=0.9959485252757992
camillalib::biquad] a1=-1.9905373054365139 a2=0.9907169768294497 b0=0.9977665048058548 b1=-1.9905373054365139 b2=0.9929504720235948
camillalib::biquad] a1=-1.9969328559658561 a2=0.997307795976805 b0=1.0007873259029418 b1=-1.9969328559658561 b2=0.9965204700738634
camillalib::biquad] a1=-1.9843027294329278 a2=0.9849700353230283 b0=0.997992181085262 b1=-1.9843027294329278 b2=0.9869778542377661
camillalib::biquad] a1=-1.985595413489879 a2=0.9875462439328357 b0=1.007553792799898 b1=-1.985595413489879 b2=0.9799924511329378
camillalib::biquad] a1=-1.9795362964774053 a2=0.9829849275453095 b0=1.0151954905485459 b1=-1.9795362964774053 b2=0.9677894369967637
camillalib::biquad] a1=-1.8882787850955025 a2=0.8927959612089637 b0=0.9663130191606668 b1=-1.8882787850955025 b2=0.9264829420482968
camillalib::biquad] a1=-1.9598581664227328 a2=0.9760092511874753 b0=1.0161245279274491 b1=-1.9598581664227328 b2=0.9598847232600264
camillalib::biquad] a1=-1.7753828333512627 a2=0.8245436627883472 b0=0.9552392302392914 b1=-1.7753828333512627 b2=0.869304432549056
camillalib::biquad] a1=-1.851565343647316 a2=0.9260250878605759 b0=1.0648844571009481 b1=-1.851565343647316 b2=0.8611406307596277
camillalib::biquad] a1=-1.317699908956903 a2=0.613864458695284 b0=0.8993402742395061 b1=-1.317699908956903 b2=0.714524184455778
camillalib::biquad] a1=-0.3977562825495081 a2=0.7005719529660257 b0=1.0302818223209615 b1=-0.3977562825495081 b2=0.6702901306450643
camillalib::processing] build filters, waiting to start processing loop
camillalib::alsadevice] Opened audio device "hw:Loopback,1" with parameters: HwParams { channels: Ok(2), rate: "Ok(44100) Hz", format: Ok(S32LE), access: Ok(RWInterleaved), period_size: "Ok(512) frames", buffer_size: "Ok(4096) frames" }, SwParams(avail_min: Ok(512) frames, start_threshold: Ok(0) frames, stop_threshold: Ok(4096) frames)
camilladsp] Capture thread ready to start
camillalib::alsadevice] Opened audio device "hw:1" with parameters: HwParams { channels: Ok(2), rate: "Ok(44100) Hz", format: Ok(S32LE), access: Ok(RWInterleaved), period_size: "Ok(256) frames", buffer_size: "Ok(2048) frames" }, SwParams(avail_min: Ok(256) frames, start_threshold: Ok(768) frames, stop_threshold: Ok(2048) frames)
camilladsp] Playback thread ready to start
camillalib::alsadevice] Starting captureloop
camillalib::alsadevice] Capture device supports rate adjust
camillalib::alsadevice] Starting playback loop
camillalib::alsadevice] Captured 8192 bytes
camillalib::processing] AudioMessage::Audio received
camillalib::alsadevice] playback state Prepared
camillalib::alsadevice] Captured 8192 bytes
camillalib::processing] AudioMessage::Audio received
camillalib::alsadevice] playback state Running
camillalib::alsadevice] Captured 8192 bytes
camillalib::processing] AudioMessage::Audio received
camillalib::alsadevice] playback state Running
camillalib::alsadevice] Captured 8192 bytes
camillalib::processing] AudioMessage::Audio received
camillalib::alsadevice] playback state XRun
camillalib::alsadevice] Prepare playback
camillalib::alsadevice] Captured 8192 bytes
camillalib::processing] AudioMessage::Audio received
camillalib::alsadevice] playback state Running
camillalib::alsadevice] Captured 8192 bytes
camillalib::processing] AudioMessage::Audio received
camillalib::alsadevice] playback state Running
camillalib::alsadevice] Captured 8192 bytes
...
That log looks perfectly normal!
Good that the pause feature got rid of the problem. It would be nice to figure out what caused it but maybe it's not worth spending more time on it.
Good that the pause feature got rid of the problem. It would be nice to figure out what caused it but maybe it's not worth spending more time on it.
- Home
- Source & Line
- PC Based
- CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc