Changeset 2016
- Timestamp:
- 12/19/11 04:17:30 (12 years ago)
- Files:
-
- trunk/libffado/src/rme/fireface_def.h (modified) (2 diffs)
- trunk/libffado/src/rme/fireface_hw.cpp (modified) (4 diffs)
- trunk/libffado/src/rme/fireface_settings_ctrls.cpp (modified) (2 diffs)
- trunk/libffado/src/rme/fireface_settings_ctrls.h (modified) (1 diff)
- trunk/libffado/src/rme/rme_avdevice.cpp (modified) (1 diff)
- trunk/libffado/src/rme/rme_avdevice.h (modified) (1 diff)
- trunk/libffado/src/rme/rme_avdevice_settings.cpp (modified) (5 diffs)
- trunk/libffado/support/mixer-qt4/ffado/widgets/matrixmixer.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libffado/src/rme/fireface_def.h
r2008 r2016 468 468 unsigned char input_mixerflags[FF_MATRIXMIXER_SIZE]; 469 469 unsigned char playback_mixerflags[FF_MATRIXMIXER_SIZE]; 470 unsigned char output_mixerflags[FF_MATRIXMIXER_SIZE]; 470 471 } FF_software_settings_t; 471 472 … … 519 520 #define FF_SWPARAM_MF_NORMAL 0x00 520 521 #define FF_SWPARAM_MF_MUTED 0x01 521 #define FF_SWPARAM_MF_INVERTED 0x02 522 #define FF_SWPARAM_MF_INVERTED 0x02 // Inputs/playbacks only 523 #define FF_SWPARAM_MF_REC 0x04 // Outputs only 522 524 523 525 // Indices into the amp_gains array trunk/libffado/src/rme/fireface_hw.cpp
r2008 r2016 760 760 } 761 761 762 set_hardware_channel_mute( 0);762 set_hardware_channel_mute(-1, 0); 763 763 764 764 } else … … 791 791 } 792 792 793 set_hardware_channel_mute( 1);793 set_hardware_channel_mute(-1, 1); 794 794 795 795 } else … … 898 898 899 899 signed int 900 Device::set_hardware_channel_mute(signed int mute) { 901 // Explicitly mute (mute!=0) or unmute (mute=0) all channels. 902 // TODO: fill the details in to allow individual channels to be muted as 903 // required. 900 Device::set_hardware_channel_mute(signed int chan, signed int mute) { 901 902 // Mute hardware channels as instructed. This mute probably relates to the 903 // sampled input channels as delivered to the PC. If "chan" is -1 the 904 // supplied "mute" status is applied to all channels. This is the only 905 // supported "chan" value for now. Down the track, if there's a need, 906 // this could be extended to allow individual channel control. 904 907 quadlet_t buf[28]; 905 908 signed int i; … … 908 911 909 912 i = 0; 910 while (i<n_channels && i<28) { 911 buf[i++] = (mute!=0); 912 } 913 if (chan < 0) { 914 while (i<n_channels && i<28) { 915 buf[i++] = (mute!=0); 916 } 917 } else { 918 return 0; 919 } 920 913 921 while (i < 28) { 914 922 buf[i++] = 0x00000001; 915 923 } 924 916 925 // Write 28 quadlets even for FF400 917 926 return writeBlock(RME_FF_CHANNEL_MUTE_MASK, buf, 28); trunk/libffado/src/rme/fireface_settings_ctrls.cpp
r2011 r2016 329 329 return m_parent.setMixerGain(RME_FF_MM_OUTPUT, col, row, val); 330 330 break; 331 332 case RME_MATRIXCTRL_INPUT_MUTE: 333 return m_parent.setMixerFlags(RME_FF_MM_INPUT, col, row, FF_SWPARAM_MF_MUTED, val!=0); 334 break; 335 case RME_MATRIXCTRL_PLAYBACK_MUTE: 336 return m_parent.setMixerFlags(RME_FF_MM_PLAYBACK, col, row, FF_SWPARAM_MF_MUTED, val!=0); 337 break; 338 case RME_MATRIXCTRL_OUTPUT_MUTE: 339 return m_parent.setMixerFlags(RME_FF_MM_OUTPUT, col, row, FF_SWPARAM_MF_MUTED, val!=0); 340 break; 341 case RME_MATRIXCTRL_INPUT_INVERT: 342 return m_parent.setMixerFlags(RME_FF_MM_INPUT, col, row, FF_SWPARAM_MF_INVERTED, val!=0); 343 break; 344 case RME_MATRIXCTRL_PLAYBACK_INVERT: 345 return m_parent.setMixerFlags(RME_FF_MM_PLAYBACK, col, row, FF_SWPARAM_MF_INVERTED, val!=0); 346 break; 347 331 348 } 332 349 … … 350 367 val = m_parent.getMixerGain(RME_FF_MM_OUTPUT, col, row); 351 368 break; 369 370 case RME_MATRIXCTRL_INPUT_MUTE: 371 return m_parent.getMixerFlags(RME_FF_MM_INPUT, col, row, FF_SWPARAM_MF_MUTED) != 0; 372 break; 373 case RME_MATRIXCTRL_PLAYBACK_MUTE: 374 return m_parent.getMixerFlags(RME_FF_MM_PLAYBACK, col, row, FF_SWPARAM_MF_MUTED) != 0; 375 break; 376 case RME_MATRIXCTRL_OUTPUT_MUTE: 377 return m_parent.getMixerFlags(RME_FF_MM_OUTPUT, col, row, FF_SWPARAM_MF_MUTED) != 0; 378 break; 379 case RME_MATRIXCTRL_INPUT_INVERT: 380 return m_parent.getMixerFlags(RME_FF_MM_INPUT, col, row, FF_SWPARAM_MF_INVERTED) != 0; 381 break; 382 case RME_MATRIXCTRL_PLAYBACK_INVERT: 383 return m_parent.getMixerFlags(RME_FF_MM_PLAYBACK, col, row, FF_SWPARAM_MF_INVERTED) != 0; 384 break; 352 385 } 353 386 trunk/libffado/src/rme/fireface_settings_ctrls.h
r2003 r2016 58 58 #define RME_MATRIXCTRL_PLAYBACK_FADER 0x0003 59 59 #define RME_MATRIXCTRL_OUTPUT_FADER 0x0004 60 #define RME_MATRIXCTRL_INPUT_MUTE 0x0005 61 #define RME_MATRIXCTRL_PLAYBACK_MUTE 0x0006 62 #define RME_MATRIXCTRL_OUTPUT_MUTE 0x0007 63 #define RME_MATRIXCTRL_INPUT_INVERT 0x0008 64 #define RME_MATRIXCTRL_PLAYBACK_INVERT 0x0009 65 60 66 61 67 class Device; trunk/libffado/src/rme/rme_avdevice.cpp
r2005 r2016 199 199 result &= m_MixerContainer->addElement( 200 200 new RmeSettingsMatrixCtrl(*this, RME_MATRIXCTRL_OUTPUT_FADER, "OutputFaders")); 201 result &= m_MixerContainer->addElement( 202 new RmeSettingsMatrixCtrl(*this, RME_MATRIXCTRL_INPUT_FADER, "InputMutes")); 203 result &= m_MixerContainer->addElement( 204 new RmeSettingsMatrixCtrl(*this, RME_MATRIXCTRL_PLAYBACK_FADER, "PlaybackMutes")); 205 result &= m_MixerContainer->addElement( 206 new RmeSettingsMatrixCtrl(*this, RME_MATRIXCTRL_OUTPUT_FADER, "OutputMutes")); 207 result &= m_MixerContainer->addElement( 208 new RmeSettingsMatrixCtrl(*this, RME_MATRIXCTRL_INPUT_FADER, "InputInverts")); 209 result &= m_MixerContainer->addElement( 210 new RmeSettingsMatrixCtrl(*this, RME_MATRIXCTRL_PLAYBACK_FADER, "PlaybackInverts")); 201 211 202 212 if (!result) { trunk/libffado/src/rme/rme_avdevice.h
r2008 r2016 197 197 unsigned int src_channel, unsigned int dest_channel, signed int val); 198 198 199 signed int set_hardware_channel_mute(signed int mute);199 signed int set_hardware_channel_mute(signed int chan, signed int mute); 200 200 signed int set_hardware_output_rec(signed int rec); 201 201 trunk/libffado/src/rme/rme_avdevice_settings.cpp
r2008 r2016 205 205 unsigned char *mixerflags = NULL; 206 206 signed int idx = getMixerGainIndex(src_channel, dest_channel); 207 207 208 switch (ctype) { 208 209 case RME_FF_MM_INPUT: … … 216 217 case RME_FF_MM_OUTPUT: 217 218 settings->output_faders[src_channel] = val; 219 mixerflags = settings->output_mixerflags; 218 220 break; 219 221 } … … 222 224 // set it to zero. Note that this is different to the hardware 223 225 // mute control dealt with by set_hardware_channel_mute(); the 224 // latter deals with muting the output channels.226 // latter deals with a muting separate from the mixer. 225 227 if (mixerflags!=NULL && (mixerflags[idx] & FF_SWPARAM_MF_MUTED)!=0) { 226 228 val = 0; … … 250 252 unsigned char *mixerflags = NULL; 251 253 signed int idx = getMixerGainIndex(src_channel, dest_channel); 252 if (ctype == RME_FF_MM_OUTPUT) 253 return 0; 254 if (ctype == RME_FF_MM_OUTPUT) { 255 mixerflags = settings->output_mixerflags; 256 idx = src_channel; 257 } else 254 258 if (ctype == RME_FF_MM_INPUT) 255 259 mixerflags = settings->input_mixerflags; … … 267 271 unsigned char *mixerflags = NULL; 268 272 signed int idx = getMixerGainIndex(src_channel, dest_channel); 269 if (ctype == RME_FF_MM_OUTPUT) 270 return 0; 273 if (ctype == RME_FF_MM_OUTPUT) { 274 mixerflags = settings->output_mixerflags; 275 idx = src_channel; 276 } else 271 277 if (ctype == RME_FF_MM_INPUT) 272 278 mixerflags = settings->input_mixerflags; trunk/libffado/support/mixer-qt4/ffado/widgets/matrixmixer.py
r2015 r2016 201 201 202 202 class MatrixMixer(QtGui.QWidget): 203 def __init__(self, servername, basepath, parent=None, sliderMaxValue=-1 ):203 def __init__(self, servername, basepath, parent=None, sliderMaxValue=-1, mutespath=None): 204 204 QtGui.QWidget.__init__(self, parent) 205 205 self.bus = dbus.SessionBus() 206 206 self.dev = self.bus.get_object(servername, basepath) 207 207 self.interface = dbus.Interface(self.dev, dbus_interface="org.ffado.Control.Element.MatrixMixer") 208 209 self.mutes_dev = None 210 self.mutes_interface = None 211 if (mutespath != None): 212 self.mutes_dev = self.bus.get_object(servername, mutespath) 213 self.mutes_interface = dbus.Interface(self.mutes_dev, dbus_interface="org.ffado.Control.Element.MatrixMixer") 208 214 209 215 #palette = self.palette()