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

The fact that stdin/stdout are available as "files" in linux, macOS etc means I got the stdin/out functionality for free when I added the File device. Of course this trick doesn't work on windows, there I would need to do something specifically for stdin/out. There are special functions for reading and writing to stdin/out that I would need to use instead of reading/writing to files. That is probably a more elegant way also on the various unix-based systems. I'll add it on the todo list. I haven't looked at how big changes are needed to the code, and I also have to think a little about how to change the config options to include this.

Never coded on rust but you should be able to catch the input from io::stdin() saving the stream to a buffer to then process it, the implementation on io::stdin() on rust should be the same on every os (afaik), but again, it's not my language. In the config you can use a placeholder like "-" or "pipe".
There are other ways to reach this result but are really overkill and not really elegant, the best should be to have it integrated in camilladsp, so thanks a lot to add it in the todo :D:D:)
 
I thought it was basically a hyperv virtualization and regular ubuntu binaries should work. I have never tried it though, in fact I have no non-virtualized win10 on my machines and the one machine of my son is permanently busy... gaming.
Yes I also think regular binaries should work as long as the dependencies are there. The default builds on github include both Alsa and PulseAudio, not sure if they will both be available. It would be great if someone tries it :)
 
Never coded on rust but you should be able to catch the input from io::stdin() saving the stream to a buffer to then process it, the implementation on io::stdin() on rust should be the same on every os (afaik), but again, it's not my language. In the config you can use a placeholder like "-" or "pipe".
Yes the io::stdin/out work the same on all platforms. They implement the Read and Write traits I use on File so it should be possible to add support for them to the existing File capture/playback devices. Some work needed but I don't see any issues.


There are other ways to reach this result but are really overkill and not really elegant, the best should be to have it integrated in camilladsp, so thanks a lot to add it in the todo :D:D:)
It's on the todo list, but no ETA ;)
 
Never coded on rust but you should be able to catch the input from io::stdin() saving the stream to a buffer to then process it, the implementation on io::stdin() on rust should be the same on every os (afaik), but again, it's not my language. In the config you can use a placeholder like "-" or "pipe".
There are other ways to reach this result but are really overkill and not really elegant, the best should be to have it integrated in camilladsp, so thanks a lot to add it in the todo :D:D:)
It turned out to be less work than expected. If you want to try it, grab the branch "stdinout". It seems fine on linux, but haven't had time to try on windows yet.
In short, I added a new capture device type "Stdin" and a playback type "Stdout". These take the same options as File, except they don't need a filename.
 
It turned out to be less work than expected. If you want to try it, grab the branch "stdinout". It seems fine on linux, but haven't had time to try on windows yet.
In short, I added a new capture device type "Stdin" and a playback type "Stdout". These take the same options as File, except they don't need a filename.
Quick update, I merged the stdinout branch to develop now so use develop instead.
 
A beta of CamillaDSP 0.3.2 is now available for download.
New features:

  • New commands to get more information from the websocket server.
  • Possible to skip lines or bytes in coefficient files.
  • Updated Cpal library.
  • Added capture and playback devices Stdin & Stdout.
  • Improved error messages.
Bugfixes:

  • Fix websocket exit command.
  • Correct response of setconfigname websocket command.


At the same time I would like to announce the compainion Python library pyCamillaDSP, available here: GitHub - HEnquist/pycamilladsp: Python library for handling the communication with CamillaDSP via a websocket.
This implements all the websocket communication, and parsing of the resonses so you don't need to handle that yourself. It requires python 3.x and the libraries PyYAML, websocket_client, numpy and matplotlib. This also contains an updated version of the show_config.py script, see the readme!
 
There is more coming... :)


Some teaser screenshots:
gui1.png
gui2.png
gui3.png
 
Great work Henrik!

lykkedk, regarding how to get sample rate from SqueezeLite, you might consider some of the ideas in the attached file. I put the text an attachment, because I believe we are a little bit off topic and I don't want to occupy to much visual space.
 

Attachments

  • squeezelite_sample_rate.pdf
    71.5 KB · Views: 188
Is anyone brave enough to try out the gui? I have just written a (very) brief instruction here:
GitHub - HEnquist/camillagui-backend: Backend server for camillagui


It needs the latest CamillaDSP from the develop branch to work.


I haven't had time to try following my own instructions to set it up on a new machine yet. So there is high risk something is wrong or missing. So does anyone feel like potentially wasting some time? :D

Any feedback is appreciated!