I have hit save and there's a file supposedly saved. But Open doesn't seem to do anything. Is there a trick to load the settings saved previously?
FFADO Mixer. Save Scene and Recall Later?
Moderators: MattKingUSA, khz
-
- Established Member
- Posts: 106
- Joined: Mon Jun 02, 2014 1:50 am
- Has thanked: 15 times
- Been thanked: 4 times
Re: FFADO Mixer. Save Scene and Recall Later?
It does do that (open dialog is there). But when I open the saved file made previously, it will blink the LED on the unit, however no settings are resurrected.
- Largos
- Established Member
- Posts: 814
- Joined: Mon Oct 05, 2020 12:21 pm
- Has thanked: 89 times
- Been thanked: 254 times
Re: FFADO Mixer. Save Scene and Recall Later?
I just tried it and it crashes the program when I try to load a saved file, so it may well be broken. Try opening the program with a terminal, see if it shows any error messages when you try to load a file.
-
- Established Member
- Posts: 106
- Joined: Mon Jun 02, 2014 1:50 am
- Has thanked: 15 times
- Been thanked: 4 times
Re: FFADO Mixer. Save Scene and Recall Later?
Interesting. For me it doesn't crash the program. It just flashes the status LED on the M-Audio 2626 (or 610) and loads nothing. But I did find an improvement.
-Save setting (does as expected and creates a file)
-close ffado mixer.
-Power down the interface
-Power up the interface
-pkill ffado-dbus-serv (kill the process in the terminal)
-Load the Saved setting. Nothing happens - the app loads a blank slate (defaults)
-pkill ffado-dbus-serv (kill the process in the terminal) OR just close ffado mixer
-start ffado-mixer
-When it opens the app again, the saved setting is what opens automatically.
When I saw this for the first time, I was thrilled! But... the fun ends there... sort of. It saves all the mixer settings. BUT... the routing is not saved. So I have to go into crossbar router and re-add all the dropdowns for what needs to be in the mixer. But... this is progress. It does work after this. It'd just be nice if it also saved the crossbar router so that everything just worked upon open. Maybe it will get there. These are the settings on the crossbar router that I have to reload to match the mixer (out 1 = LEFT; out 2 = RIGHT). This is for 4 inputs on the interface PLUS a stereo pair sent from the DAW (1394 = firewire audio out from the DAW). Panning is done by faders in the mixer.
-
- Established Member
- Posts: 106
- Joined: Mon Jun 02, 2014 1:50 am
- Has thanked: 15 times
- Been thanked: 4 times
Re: FFADO Mixer. Save Scene and Recall Later?
And this is what the terminal shows:
Code: Select all
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/panelmanager.py", line 605, in readSettings
w.smixReadSetgs(stringDev)
File "/usr/share/ffado-mixer-qt4/ffado/mixer/generic_dice_eap.py", line 114, in readSettings
if self.mixer.readSettings(stringMixer, transpose_coeff):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/matrixmixer.py", line 1502, in readSettings
if self.matrix.readSettings(readString, transpose_coeff):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/matrixmixer.py", line 685, in readSettings
self.refreshValues()
File "/usr/share/ffado-mixer-qt4/ffado/widgets/matrixmixer.py", line 534, in refreshValues
self.items[x][y].setValue(val)
TypeError: setValue(self, int): argument 1 has unexpected type 'dbus.Double'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
Traceback (most recent call last):
File "/usr/share/ffado-mixer-qt4/ffado/widgets/crossbarrouter.py", line 56, in paintEvent
r.setHeight(r.height() * math.sqrt(value))
TypeError: setHeight(self, int): argument 1 has unexpected type 'float'
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
-
- Established Member
- Posts: 106
- Joined: Mon Jun 02, 2014 1:50 am
- Has thanked: 15 times
- Been thanked: 4 times
Re: FFADO Mixer. Save Scene and Recall Later?
I've been working with the FFADO devs on this. It seems that maybe it's an issue with my version (2.4.5 from the software center) and Ubuntu 22.04.
So far I have gotten FFADO 2.4.9 (latest) to install. But not having much luck with things improving. But some progress is happening. After installing 2.4.9, now the crossbar router does not work at all. I do wish there were a compiled and working installer for the Ubuntu versions.
EDIT: all works fine with 2.4.9 crossbar router once installed properly and FFADO has been killed and re-opened.
pkill ffado-dbus-serv
I'm not sure what problem I was having but it was resolved. However this was not the save issue. This fix is noted a few posts further (thanks to FFADO dev Jonathan Woithe).
- Babarosa
- Established Member
- Posts: 72
- Joined: Sun Feb 23, 2014 10:16 pm
- Has thanked: 8 times
- Been thanked: 34 times
Re: FFADO Mixer. Save Scene and Recall Later?
For your information:
Rob Savoury maintains several Ubuntu PPAs. One of it is called "Multimedia" and offers ffado 2.4.9 already compiled and packaged for several Ubuntu versions. Jammy usually also can be used on Debian 12 systems.
Debian 12 & Devuan 5 - MOTU M4, ESI Maya22 USB - Rosegarden, Reaper
-
- Established Member
- Posts: 106
- Joined: Mon Jun 02, 2014 1:50 am
- Has thanked: 15 times
- Been thanked: 4 times
Re: FFADO Mixer. Save Scene and Recall Later?
Ok to update this for any other M-Audio user, the problem has been solved here:
https://sourceforge.net/p/ffado/mailman ... sg59163635
In the message date/time:
2025-03-24 00:55:25
-
- Established Member
- Posts: 106
- Joined: Mon Jun 02, 2014 1:50 am
- Has thanked: 15 times
- Been thanked: 4 times
Re: FFADO Mixer. Save Scene and Recall Later?
To get save/open working, the original libffado-2.4.9 folder (extracted from the zip) needs to have a file edited before building with scons and installing. That file is in this folder (within the extracted libffado-2.4.9 of course):
support/mixer-qt4/ffado/widgets/crossbarrouter.py
In crossbarrouter.py, go to line
- Delete the following lines:
Code: Select all
source = s.split()[1] if sources.find(source) != -1: idx = self.switchers[destination].combo.findText(source) self.switchers[destination].combo.setCurrentIndex(idx) self.switchers[destination].comboCurrentChanged(source)
Replace them with this:
Code: Select all
source = s.split()
if len(source) > 1:
source = source[1]
else:
source = ""
if source != "" and sources.find(source) != -1:
idx = self.switchers[destination].combo.findText(source)
self.switchers[destination].combo.setCurrentIndex(idx)
self.switchers[destination].comboCurrentChanged(source)
else:
self.switchers[destination].combo.setCurrentIndex(0)
self.switchers[destination].comboCurrentChanged(0)
The indent of these should be set so the first line matches the indentation
previously used for line 251 (the "source = s.split()[1]" line).
Make the above change in the
Code: Select all
support/mixer-qt4/ffado/widgets/crossbarrouter.py
file within the libffado-2.4.9 source tree. Then repeat the build and
installation steps from the libffado-2.4.9/ directory:
Code: Select all
scons
sudo scons install
You don't have to uninstall first because you're just reinstalling the same
version (so the new files will simply replace the previously installed ones).
CREDIT Goes to Jonathan Wolthe (one of several devs for FFADO) for helping me find the solution to this problem.