following our previous discussions to further improve the matrixmixer widget, I need we agree together on some general guidelines I give a first elaboration hereafter. Of course, feel free to modify/suppress/add anything you are wondering about.
1.a Fix the rule that columns are inputs and rows are output in libffado. ffado-mixer and further the user himself will decide how is represented the matrix in his own view. There is no need to change the name of the interface function: to make things clear, I will probably keep the indirect functions getInName and others in ffado-mixer, which will reduce to the call to interface.getColName and so on.
- such a rule requires no modification for RME. The modifications required for DICE EAP devices are easy to implement.
- it avoids unnecessary complications.
- the argument Columns_are_inputs then just refer to the default view (for DICE EAP, it is preferable that the old convention is kept in apparence for the user).
1.b The full name for each row and column should be exclusively the one given by the libffado interface.
- This requires, for DICE EAP devices, to complete the name sent by interface.getColName and getRowName. No complicated implementations required once this is decided.
- The shortened naming In:.. or Out:.. will remain as a choice for the user.
- As well hidden rows/columns remain with their simple numbering.
1.c The present font size button will be replaced by a more complete pop up menu (including the font size change or the use of shortened names.
2. An alternative for hiding "per output tab", as well as matrix view (in an exclusive OR framework) has to be implemented, including a default as an argument of MatrixMixer.
3. There is a need to unify the linear/decibel conversion for the different kind of sliders, the present implementation being rather a "hack" (the way round-off errors are taking into account).
Deciding for a specific accuracy (typically +-0.1dB, as in ardour for instance - which look like the limit of human perception) would be of help.
4. There is a need to introduce something like interface.getMaxValue and interface.getMinValue (these ones being device dependent) to make MatrixMixer of more general applicability.
Also, ultimately, libffado would have to provide informations about the linear/dB nature of the values as well as some reference when linear/dB is required.
- This is possibly more complicated that appears at a glance. Probably post-poned at the very end of modifications.