Go Back   Home > Forums > >

PC Based Computer music servers, crossovers, and equalization

CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc.
CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc.
Please consider donating to help us continue to serve you.

Ads on/off / Custom Title / More PMs / More album space / Advanced printing & mass image saving
Reply
 
Thread Tools
Old 28th October 2020, 09:30 PM   #1231
HenrikEnquist is offline HenrikEnquist  Sweden
diyAudio Member
 
Join Date: Apr 2016
Location: Lund
Quote:
Originally Posted by xorcz View Post
I chose the easier way and changed OS to Fedora 33 Cinnamon. It is working fine with chunksize 4096 and there are no pops. I tried also Linuxmint 20, but it was the same as Ubuntu 18.04, no chunksize above 2048. I briefly tried 5.8 kernel instead of stock 5.4, but it has more dependencies. So now I will change to Pulse without the Alsa loopback.
Great that you got it working!
I get lower cpu usage if I use pulse alsa-sink -> alsa loopback -> camilla, than if I do pulse null-sink -> camilla. I haven't investigated properly yet, but I suspect Pulse is doing some resampling in the background. The null-sink also doesn't support setting the rate, so the resampler must be used for rate adjust.

Summary: I recommend using the alsa-sink!

There is also a pipe-sink in pulse that I didn't try yet. It could perhaps be useful.
  Reply With Quote
Old 28th October 2020, 09:41 PM   #1232
HenrikEnquist is offline HenrikEnquist  Sweden
diyAudio Member
 
Join Date: Apr 2016
Location: Lund
Quote:
Originally Posted by ChrisPatlach View Post
I am not able to enter negative values for a gain filter via the gui. The negative character does not seem to be accepted. I have tried safari and firefox.

I use two config files, one with FIR filters and one with IIR. Both run fine and pass the config check. Ploting of the filters via the gui works for the configuration with IIR but not for the FIR configuration. With the FIR config, a blank window opens for any of the filters.
I'm aware of the problem with negative values! As a workaround it should work if you first type the number without the minus sign, and then add the sign. I'll fix it in the next release.

The FIR plotting problem could have many causes. Do you get any meaningful errors messages from the backend?
Are you putting the full path or a relative path to the coeff files?
If you have relative path, try with the full path instead. That usually causes less problems.
  Reply With Quote
Old 28th October 2020, 10:39 PM   #1233
Simofil is offline Simofil  Italy
diyAudio Member
 
Join Date: Feb 2017
Location: Italy
Quote:
Originally Posted by soundcheck View Post
So. I did another test.

Not the sox2sox test.

Instead of feeding wav into the pipe towards squeeezelite. I know feed stream flacs.

Code:
SOXOUTFT="-t flac -C 0 -b 24 -c 2"

$SOX -q "$track" -t wavpcm -b 24 - | $CAMILLA -v $camconfig | $SOX -q -t raw -b 24 -c 2 -L -e sign -r $newrate - $SOXOUTFT -
That still shows the jumps on time stamps (not always) in the beginning, but somehow LMS seems to be able to resync the "playback time stamps" between LMS and squeezelite.

Bottom line. That's at least working so far. Good.

Obviously the primary issue is not yet solved.

I read about your attempts of integrating camilla in LMS. Have you manager to make It work with output from stdin (I flag) instead of input from file (F flag) in a more decent way compared to what I've done?
In particular the only way I found Is to pipe before camilla sox upsampling at a fixed frequency and then feeding the raw to camilla.
This can be avoided with file input since you have the full path as $FILE and you can read the file infos.
I'm trying to find some ideas if it Is possibile to determine bit depth and sample rate of the file received from pipe (necessary with streaming services in lms, like tidal or qobuz).
  Reply With Quote
Old 28th October 2020, 10:47 PM   #1234
ChrisPatlach is offline ChrisPatlach  Canada
diyAudio Member
 
Join Date: Jun 2020
This is what I am getting as message:


plotcamillaconf /media/diskstation/chris/camilladsp/configs/FIRversionC.yml
Traceback (most recent call last):
File "/home/pi/.local/bin/plotcamillaconf", line 8, in <module>
sys.exit(main())
File "/home/pi/.local/lib/python3.7/site-packages/camilladsp_plot/plotcamillaconf.py", line 15, in main
plot_filters(conf)
File "/home/pi/.local/lib/python3.7/site-packages/camilladsp_plot/plot_filters.py", line 58, in plot_filters
plot_filter(fconf, samplerate=srate, name=filter)
File "/home/pi/.local/lib/python3.7/site-packages/camilladsp_plot/plot_filters.py", line 33, in plot_filter
currfilt = Conv(filterconf['parameters'], samplerate)
File "/home/pi/.local/lib/python3.7/site-packages/camilladsp_plot/filter_eval.py", line 44, in __init__
values = self._read_coeffs(conf)
File "/home/pi/.local/lib/python3.7/site-packages/camilladsp_plot/filter_eval.py", line 65, in _read_coeffs
values = self._read_binary_coeffs(fname, conf["format"], skip_nbr, read_nbr)
File "/home/pi/.local/lib/python3.7/site-packages/camilladsp_plot/filter_eval.py", line 84, in _read_binary_coeffs
np.fromfile(fname, offset=skip_bytes, count=count, dtype=datatype)
TypeError: 'offset' is an invalid keyword argument for fromfile()
  Reply With Quote
Old 28th October 2020, 11:55 PM   #1235
HenrikEnquist is offline HenrikEnquist  Sweden
diyAudio Member
 
Join Date: Apr 2016
Location: Lund
Quote:
Originally Posted by Simofil View Post
I read about your attempts of integrating camilla in LMS. Have you manager to make It work with output from stdin (I flag) instead of input from file (F flag) in a more decent way compared to what I've done?
In particular the only way I found Is to pipe before camilla sox upsampling at a fixed frequency and then feeding the raw to camilla.
This can be avoided with file input since you have the full path as $FILE and you can read the file infos.
I'm trying to find some ideas if it Is possibile to determine bit depth and sample rate of the file received from pipe (necessary with streaming services in lms, like tidal or qobuz).
You could maybe do something like what I did in the script here: CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc.
You could read the the header from the pipe, analyze it to find out the parameters (based on this perhaps:camilladsp/analyze_wav.py at master * HEnquist/camilladsp * GitHub), and then connect stdin of the script to stdin of camilladsp.


Quote:
Originally Posted by ChrisPatlach View Post
This is what I am getting as message:


plotcamillaconf /media/diskstation/chris/camilladsp/configs/FIRversionC.yml
Traceback (most recent call last):
File "/home/pi/.local/bin/plotcamillaconf", line 8, in <module>
sys.exit(main())
File "/home/pi/.local/lib/python3.7/site-packages/camilladsp_plot/plotcamillaconf.py", line 15, in main
plot_filters(conf)
File "/home/pi/.local/lib/python3.7/site-packages/camilladsp_plot/plot_filters.py", line 58, in plot_filters
plot_filter(fconf, samplerate=srate, name=filter)
File "/home/pi/.local/lib/python3.7/site-packages/camilladsp_plot/plot_filters.py", line 33, in plot_filter
currfilt = Conv(filterconf['parameters'], samplerate)
File "/home/pi/.local/lib/python3.7/site-packages/camilladsp_plot/filter_eval.py", line 44, in __init__
values = self._read_coeffs(conf)
File "/home/pi/.local/lib/python3.7/site-packages/camilladsp_plot/filter_eval.py", line 65, in _read_coeffs
values = self._read_binary_coeffs(fname, conf["format"], skip_nbr, read_nbr)
File "/home/pi/.local/lib/python3.7/site-packages/camilladsp_plot/filter_eval.py", line 84, in _read_binary_coeffs
np.fromfile(fname, offset=skip_bytes, count=count, dtype=datatype)
TypeError: 'offset' is an invalid keyword argument for fromfile()
Ok! Yu probably have a numpy version older than 1.17. But don't bother updating, the next version won't use numpy at all
  Reply With Quote
Old 29th October 2020, 01:07 AM   #1236
Simofil is offline Simofil  Italy
diyAudio Member
 
Join Date: Feb 2017
Location: Italy
Thanks for the Hint. I've already made a Java "wrapper" that includes all the sox|Camilla|sox logic, including input/output from pipes and dynamic generation of temporary config files for camilla, the last missing step was to better manage input from pipes. I'll implement the header parsing of wav files and I'll make some tests... Thanks again for the idea
  Reply With Quote
Old 29th October 2020, 02:23 AM   #1237
ChrisPatlach is offline ChrisPatlach  Canada
diyAudio Member
 
Join Date: Jun 2020
Quote:
Ok! Yu probably have a numpy version older than 1.17. But don't bother updating, the next version won't use numpy at all

OK thanks and yes you are correct about the version. Both pip install and apt install, install version 1.16 on the RPI.
  Reply With Quote
Old 29th October 2020, 11:11 AM   #1238
TNT is offline TNT  Sweden
diyAudio Member
 
Join Date: Apr 2003
Location: Sweden
The level meter, is it taking it's input from capture or playback side?

//
__________________
More distortion to the people! Timing . . . . is paramount.
  Reply With Quote
Old 29th October 2020, 11:32 AM   #1239
xorcz is offline xorcz  Czech Republic
diyAudio Member
 
Join Date: Feb 2020
Quote:
Originally Posted by HenrikEnquist View Post
Summary: I recommend using the alsa-sink!
I am just curious, how did you setup the chain - where do you resample and what formats.
Currently I keep this PA daemon's configuration
default-sample-format = float32le
default-sample-rate = 192000
avoid-resampling = false
resample-method = speex-float-10

from Pulseaudio Crossover Rack - Online Help

So format of the PA sink is float32 so I changed asound.conf to the same rate and format.

And then CamillaDSP config (modified camilladsp-config/alsaconfig.yml at master * HEnquist/camilladsp-config * GitHub) sure the same rate, capture format also, playback device can S322LE.
  Reply With Quote
Old 29th October 2020, 11:42 AM   #1240
lykkedk is offline lykkedk  Denmark
diyAudio Member
 
lykkedk's Avatar
 
Join Date: Dec 2002
Location: Denmark, Fredericia
@Henrik...

Well i was storking your'e github and i see that you have a numpyless development in the github

Looking forward to see when it's eventually done.
You also mentioned some time ago, that you are developing a plugin without matplotlib also, is this part of this development (not to rush you at all, just curious)

Good day out there.

Jesper.
Attached Images
File Type: png Numpy_less.PNG (32.6 KB, 72 views)
__________________
DCG3 Dual DCSTB, AK4490 Dual SuperDAC
AlephJ Mimi! http://www.diyaudio.com/forums/pass-...mimi-mini.html. Github https://github.com/Lykkedk/SuperPlayer
  Reply With Quote

Reply


CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc.Hide this!Advertise here!
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
The room correction or speaker correction? What can we do with dsp power now availabl Raimonds Full Range 233 28th January 2017 08:51 AM
Introducing OpenDRC, Open Digital Room Correction engine minidsp miniDSP 20 20th January 2016 06:37 PM
What the difference between dsp room correction eq and software correction erez1012 PC Based 0 10th March 2014 08:07 PM
Writing a Cross-Platform, Free Software Modeling Tool and TS-Parameter DB justinzane Software Tools 6 31st December 2013 07:55 AM
FS: DAC, room-correction, active crossovers, amp, speakers! taloyd Swap Meet 4 14th April 2009 04:16 PM


New To Site? Need Help?

All times are GMT. The time now is 11:02 PM.


Search Engine Optimisation provided by DragonByte SEO (Pro) - vBulletin Mods & Addons Copyright © 2020 DragonByte Technologies Ltd.
Resources saved on this page: MySQL 14.29%
vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2020 DragonByte Technologies Ltd.
Copyright ©1999-2020 diyAudio
Wiki