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

New release 1.0.1 here: https://github.com/HEnquist/camilladsp/releases/tag/v1.0.1

It's a small bugfix for the Alsa backend. If the same device is used for playback and capture, then CamillaDSP tried to open both sides at the same time (from separate threads). Some devices don't handle that properly and fail with some error. The fix adds a mutex lock to avoid opening them at the same time.
 
  • Like
Reactions: 1 user

TNT

Member
Joined 2003
Paid Member
The terminology I mention above? (channel // dest) dest is also a channel ;) - but perhaps to late as it is also in .yml!?

re:
  • add an indication for when the GUI has unsaved changes
I discovered the other day via the help text for hovering the "Apply to DSP" button that it also says "... and save to file"... that surprised me bit as I have always seen to that I made save in the File page after an update of DSP... Maybe the Save to DSP should do only just that? I'm not sure...

An other thing - when pressing New for filter, place that new, default named filter at the bottom of the page - always and independently of what name filters there might exist. This is so that the user always knows where to find the entry for a new filter. In this way it will be always in the vicinity of the + button which is good. As now one have to chase it in an a big pile of filters :) Then, when you rename that newly created filter, it should be sorted. I suppose you need to reserve a name.

Sorting on other aspects would be useful... like; frequency, Q value, more? (items that do not use the choose param is placed in the end)

Pipeline displaying - I tried to capture by right click -> Print Page - that didn't print the window with the PL (like below) but the input screen behind it. Dont know if that is a Safari / Mac problem. Anyways, sharing / displaying graphic configs is not easy with good clarity and resolution...

longPL.png


For me, reseting the Clipping counter would be useful...

I think that all I had. Thanks for listening!

Its a wonderful piece of software - thank You so much Henrik!!!

//
 
Thanks for the summary! I updated the issue to add the ones I didn't have.
The terminology I mention above? (channel // dest) dest is also a channel ;) - but perhaps to late as it is also in .yml!?
I didn't include that one because I'm already working on it :)
Currently it looks like this:
mixer1.png
mixer2.png


The 1.0.0 release is already long overdue so I won't do all the points before that (just the easy ones).
 
  • Like
Reactions: 1 user

TNT

Member
Joined 2003
Paid Member
Great!

I suppose you know before save is done what will happen - much clearer would be to make the button text shoe it straight out

when adding a new filter, place it at the top (or bottom)... Please keep it together with the + sign - reduce scrolling at entering filters in a big config...

//
 

TNT

Member
Joined 2003
Paid Member
Nice!

Reserve a name for a newly born filter and allow only one of these - i.e. force a rename of the last crested filter before a new one can be created. If you do + twice without changing the first created filter there should be a fault indication "Filter with this name already exists" at the second attempt.

Always place a newborn filter dead last - just on top of the + sign. When you leve the name init filed in a filter, sort is engaged. Timer is not so good perhaps...

What you don't want is having to travel from bottom to top. This is useful at those wild filter adding sessions (that we all end up in now and then - right? ;-) )

//
 
I have continued a bit and could get rid of the timer. Now it sorts when pressing enter or leaving the name input field.

I'll also change the sorting logic so new filters are always at the bottom, also when the order is reversed. But I don't see the need for restricting to only one unnamed filter. I often create several at at time when playing around, I think it's useful to be able to do that without being forced to name each one right away.
New filters are named "Unnamed filter" with a number appended. The new number is always higher than any other existing unnamed filters.
 
  • Like
Reactions: 1 users

TNT

Member
Joined 2003
Paid Member
How do I set up a Mixer for a 2-way speaker that allows me to do way specific EQ /filtering (the usual) but also global EQ so that I don't have to take the Xo into consideration? In the Pipeline tab, is it the order that is relevant where what goes where? I know I have asked this before but an example would be nice to see...

//
 
I have a 2 in/2 out mixer followed by my room eq filters then a 2 in/8 out mixer followed by filters specific to each of the drivers in my 3-way active system.
The 2-to-2 mixer does no mixing, and it looks as if it's not applying any gain etiher (but hard to read in the picture). You can just as well remove it.
If you do use it to apply some gain, this can instead be done with a Gain filter in each channel. Gain filters are slightly faster than a mixer used like this.

Yes! What makes a certain filter end up to the left in the 2ch part rather than in the 8 channel part?
It's the order that things are listed in the pipeline! Is simply pushed the signal through all filters and mixers in the order they are listed.

It's I think purely data model wise, cumbersome that ch0 can be present twice in a configuration and not be the same thing.
I have considered various ways of introducing names or aliases for the channels, but it gets very complicated. It adds a lot of complexity to both the config file, and the logic for building the pipeline from it. That's why I just use the index. I haven't completely given up on the idea, but I don't have very high hopes of finding a nice simple solution.
 
The 2-to-2 mixer does no mixing, and it looks as if it's not applying any gain etiher (but hard to read in the picture). You can just as well remove it.
If you do use it to apply some gain, this can instead be done with a Gain filter in each channel. Gain filters are slightly faster than a mixer used like this.
Ah, I wondered if that would work, just removed the 2in/2out and looks fine. I was using that mixer as I had seen similar in an earlier post tho tat was done for different reasons but looked to be what I needed.
 

TNT

Member
Joined 2003
Paid Member
"

Pipeline

The pipeline section defines the processing steps between input and output. The input and output devices are automatically added to the start and end. The pipeline is essentially a list of filters and/or mixers. There are no rules for ordering or how many are added. For each mixer and for the output device the number of channels from the previous step must match the number of input channels.

Example: ....
"

from: https://henquist.github.io/0.6.1/#pipeline

I would argue that this text lacks the most important aspect of Pipeline design and that is just what you described above... that the order from top to bottom as filters and Mixers are entered, defines the order of execution. You might want to call that implied or self-evident, but... well.... ;-)

This text is not correct tactually - the statement "The pipeline is essentially a list of filters and/or mixers" is not really correct as I see it - the list of filters are under the Filter tab and the Mixers are listed under the Mixer tab - under Pipeline, the execution order of these filters and mixers are defined.

An other false statement is: "There are no rules for ordering" - there is :) the rule is that if you want Filter1 executed before Mixer2, you must put them in the order of wanted execution - i.e. enter Filter1 before/above your defined Mixer2.

//
 
Volume Control and Mute not working - at all.

Has anyone else encountered this problem ?

Sound plays nicely - but unable to control volume from CamillaDSP Web Interface

Can only control volume through alsamixer :cry:

Running:
CamillaDSP 1.0.1
pyCamillaDSP 1.0.0
Backend 0.8.0

On Raspberry Pi OS - Linux kernel 5.15.32-v8
I assume you have a "volume" filter defined and active in the pipeline?