Changeset 1367 for branches/libffado-2.0
- Timestamp:
- 10/21/08 10:46:28 (15 years ago)
- Files:
-
- branches/libffado-2.0/support/mixer-qt4/ffadomixer.in (modified) (2 diffs)
- branches/libffado-2.0/support/mixer-qt4/ffado_dbus_util.py (modified) (15 diffs)
- branches/libffado-2.0/support/mixer-qt4/ffado_panelmanager.py (modified) (8 diffs)
- branches/libffado-2.0/support/mixer-qt4/ffado_regdialog.py (modified) (2 diffs)
- branches/libffado-2.0/support/mixer-qt4/ffado_registration.py (modified) (6 diffs)
- branches/libffado-2.0/support/mixer-qt4/mixer_audiofire.py (modified) (16 diffs)
- branches/libffado-2.0/support/mixer-qt4/mixer_bcoaudio5.py (modified) (4 diffs)
- branches/libffado-2.0/support/mixer-qt4/mixer_edirolfa101.py (modified) (6 diffs)
- branches/libffado-2.0/support/mixer-qt4/mixer_edirolfa66.py (modified) (4 diffs)
- branches/libffado-2.0/support/mixer-qt4/mixer_global.py (modified) (2 diffs)
- branches/libffado-2.0/support/mixer-qt4/mixer_motu.py (modified) (22 diffs)
- branches/libffado-2.0/support/mixer-qt4/mixer_phase24.py (modified) (6 diffs)
- branches/libffado-2.0/support/mixer-qt4/mixer_phase88.py (modified) (4 diffs)
- branches/libffado-2.0/support/mixer-qt4/mixer_quatafire.py (modified) (6 diffs)
- branches/libffado-2.0/support/mixer-qt4/mixer_saffire.py (modified) (7 diffs)
- branches/libffado-2.0/support/mixer-qt4/mixer_saffirepro.py (modified) (6 diffs)
- branches/libffado-2.0/support/mixer-qt4/mixer_saffire_base.py (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/libffado-2.0/support/mixer-qt4/ffadomixer.in
r1298 r1367 45 45 46 46 if __name__ == "__main__": 47 #set up logging 48 import logging 49 logging.basicConfig() 50 51 if $DEBUG: 52 debug_level = logging.DEBUG 53 else: 54 debug_level = logging.INFO 55 56 logging.getLogger('main').setLevel(debug_level) 57 logging.getLogger('dbus').setLevel(debug_level) 58 logging.getLogger('registration').setLevel(debug_level) 59 logging.getLogger('panelmanager').setLevel(debug_level) 60 61 logging.getLogger('global').setLevel(debug_level) 62 63 logging.getLogger('audiofire').setLevel(debug_level) 64 logging.getLogger('bridgeco').setLevel(debug_level) 65 logging.getLogger('edirolfa101').setLevel(debug_level) 66 logging.getLogger('edirolfa66').setLevel(debug_level) 67 logging.getLogger('motu').setLevel(debug_level) 68 logging.getLogger('phase24').setLevel(debug_level) 69 logging.getLogger('phase88').setLevel(debug_level) 70 logging.getLogger('quatafire').setLevel(debug_level) 71 logging.getLogger('saffirebase').setLevel(debug_level) 72 logging.getLogger('saffire').setLevel(debug_level) 73 logging.getLogger('saffirepro').setLevel(debug_level) 74 75 log = logging.getLogger('main') 47 76 48 77 app = QApplication(sys.argv) … … 57 86 repeat -= 1 58 87 except dbus.DBusException, ex: 59 print "\n" 60 print "===========================================================" 61 print "ERROR: Could not communicate with the FFADO DBus service..." 62 print "===========================================================" 63 print "\n" 88 log.error("") 89 log.error("") 90 log.error("===========================================================") 91 log.error("ERROR: Could not communicate with the FFADO DBus service...") 92 log.error("===========================================================") 93 log.error("") 94 log.error("") 64 95 tmp = msg.question( msg, "FFADO-DBus not found", "<qt><b>The connection to FFADOs DBus service could not be established.</b><p>Probably you didn't start the ffado-dbus-server. Should I try this now?</qt>", QMessageBox.Yes, QMessageBox.No ) 65 96 if tmp == QMessageBox.No: branches/libffado-2.0/support/mixer-qt4/ffado_dbus_util.py
r1298 r1367 26 26 import dbus.mainloop.qt 27 27 dbus.mainloop.qt.DBusQtMainLoop(set_as_default=True) 28 29 import logging 30 log = logging.getLogger('dbus') 28 31 29 32 class ControlInterface: … … 43 46 dev_cont.setValueIdx(idx,v) 44 47 except: 45 print "Failed to set Continuous %s on server %s" % (path, self.servername)48 log.error("Failed to set Continuous %s on server %s" % (path, self.servername)) 46 49 47 50 def getContignuous(self, subpath, idx=None): … … 55 58 return dev_cont.getValueIdx(idx) 56 59 except: 57 print "Failed to get Continuous %s on server %s" % (path, self.servername)60 log.error("Failed to get Continuous %s on server %s" % (path, self.servername)) 58 61 return 0 59 62 … … 65 68 dev_cont.setValue(v) 66 69 except: 67 print "Failed to set Discrete %s on server %s" % (path, self.servername)70 log.error("Failed to set Discrete %s on server %s" % (path, self.servername)) 68 71 69 72 def getDiscrete(self, subpath): … … 74 77 return dev_cont.getValue() 75 78 except: 76 print "Failed to get Discrete %s on server %s" % (path, self.servername)79 log.error("Failed to get Discrete %s on server %s" % (path, self.servername)) 77 80 return 0 78 81 … … 84 87 dev_cont.setValue(v) 85 88 except: 86 print "Failed to set Text %s on server %s" % (path, self.servername)89 log.error("Failed to set Text %s on server %s" % (path, self.servername)) 87 90 88 91 def getText(self, subpath): … … 93 96 return dev_cont.getValue() 94 97 except: 95 print "Failed to get Text %s on server %s" % (path, self.servername)98 log.error("Failed to get Text %s on server %s" % (path, self.servername)) 96 99 return 0 97 100 … … 103 106 dev_cont.setValue(row, col, v) 104 107 except: 105 print "Failed to set MatrixMixer %s on server %s" % (path, self.servername)108 log.error("Failed to set MatrixMixer %s on server %s" % (path, self.servername)) 106 109 107 110 def getMatrixMixerValue(self, subpath, row, col): … … 112 115 return dev_cont.getValue(row, col) 113 116 except: 114 print "Failed to get MatrixMixer %s on server %s" % (path, self.servername)117 log.error("Failed to get MatrixMixer %s on server %s" % (path, self.servername)) 115 118 return 0 116 119 … … 122 125 dev_cont.select(v) 123 126 except: 124 print "Failed to select %s on server %s" % (path, self.servername)127 log.error("Failed to select %s on server %s" % (path, self.servername)) 125 128 126 129 def enumSelected(self, subpath): … … 131 134 return dev_cont.selected() 132 135 except: 133 print "Failed to get selected enum %s on server %s" % (path, self.servername)136 log.error("Failed to get selected enum %s on server %s" % (path, self.servername)) 134 137 return 0 135 138 … … 141 144 return dev_cont.getEnumLabel(v) 142 145 except: 143 print "Failed to get enum label %s on server %s" % (path, self.servername)146 log.error("Failed to get enum label %s on server %s" % (path, self.servername)) 144 147 return 0 145 148 … … 151 154 return dev_cont.count() 152 155 except: 153 print "Failed to get enum count %s on server %s" % (path, self.servername)156 log.error("Failed to get enum count %s on server %s" % (path, self.servername)) 154 157 return 0 155 158 … … 175 178 # and qt3 doesn't provide one for python/dbus 176 179 try: 177 print "connecting to: Updated on %s (server: %s)" % (self.basepath, self.servername)180 log.debug("connecting to: Updated on %s (server: %s)" % (self.basepath, self.servername)) 178 181 self.dev.connect_to_signal("Updated", self.updateSignal, \ 179 182 dbus_interface="org.ffado.Control.Element.Container") … … 213 216 214 217 def updateSignal(self): 215 print("Received update signal")218 log.debug("Received update signal") 216 219 for handler in self.updateSignalHandlers: 217 220 arg = self.updateSignalHandlerArgs[handler] 218 if arg: 219 handler(arg) 220 else: 221 handler() 221 try: 222 if arg: 223 handler(arg) 224 else: 225 handler() 226 except: 227 log.error("Failed to execute handler %s" % handler) 222 228 223 229 def preUpdateSignal(self): 224 print("Received pre-update signal")230 log.debug("Received pre-update signal") 225 231 for handler in self.preUpdateSignalHandlers: 226 232 arg = self.preUpdateSignalHandlerArgs[handler] 227 if arg: 228 handler(arg) 229 else: 230 handler() 233 try: 234 if arg: 235 handler(arg) 236 else: 237 handler() 238 except: 239 log.error("Failed to execute handler %s" % handler) 231 240 232 241 def postUpdateSignal(self): 233 print("Received post-update signal")242 log.debug("Received post-update signal") 234 243 for handler in self.postUpdateSignalHandlers: 235 244 arg = self.postUpdateSignalHandlerArgs[handler] 236 if arg: 237 handler(arg) 238 else: 239 handler() 245 try: 246 if arg: 247 handler(arg) 248 else: 249 handler() 250 except: 251 log.error("Failed to execute handler %s" % handler) 240 252 241 253 def destroyedSignal(self): 242 print("Received destroyed signal")254 log.debug("Received destroyed signal") 243 255 for handler in self.destroyedSignalHandlers: 244 256 arg = self.destroyedSignalHandlerArgs[handler] 245 if arg: 246 handler(arg) 247 else: 248 handler() 257 try: 258 if arg: 259 handler(arg) 260 else: 261 handler() 262 except: 263 log.error("Failed to execute handler %s" % handler) 249 264 250 265 def getNbDevices(self): branches/libffado-2.0/support/mixer-qt4/ffado_panelmanager.py
r1364 r1367 46 46 from mixer_global import GlobalMixer 47 47 48 import logging 49 log = logging.getLogger('panelmanager') 50 48 51 use_generic = False 49 52 try: 50 53 from mixer_generic import * 51 print "The generic mixer is found, seems to be a developer using ffadomixer..."54 log.info("The generic mixer is found, seems to be a developer using ffadomixer...") 52 55 except ImportError: 53 56 pass … … 133 136 w.polledUpdate() 134 137 except: 135 print "error in polled update"138 log.error("error in polled update") 136 139 137 140 def devlistPreUpdate(self): 138 print "devlistPreUpdate"141 log.debug("devlistPreUpdate") 139 142 self.tabs.setEnabled(False) 140 143 self.tabs.hide() … … 143 146 144 147 def devlistPostUpdate(self): 145 print "devlistPostUpdate"148 log.debug("devlistPostUpdate") 146 149 self.updatePanels() 147 150 148 151 def devlistUpdate(self): 149 print "devlistUpdate"152 log.debug("devlistUpdate") 150 153 151 154 def devmgrDestroyed(self): 152 print "devmgrDestroyed"155 log.debug("devmgrDestroyed") 153 156 self.alivetimer.stop() 154 157 self.tabs.setEnabled(False) … … 161 164 nbDevices = self.devmgr.getNbDevices() 162 165 except: 163 print "comms lost"166 log.debug("comms lost") 164 167 self.tabs.setEnabled(False) 165 168 self.tabs.hide() … … 192 195 if not guid in guids_present: 193 196 to_remove.append(guid) 194 print "going to remove %s" % str(guid)197 log.debug("going to remove %s" % str(guid)) 195 198 else: 196 print "going to keep %s" % str(guid)199 log.debug("going to keep %s" % str(guid)) 197 200 198 201 # figure out what to add … … 201 204 if not guid in guids_with_tabs: 202 205 to_add.append(guid) 203 print "going to add %s" % str(guid)206 log.debug("going to add %s" % str(guid)) 204 207 205 208 # update the widget … … 215 218 idx = guid_indexes[guid] 216 219 path = self.devmgr.getDeviceName(idx) 217 print "Adding device %d: %s" % (idx, path)220 log.debug("Adding device %d: %s" % (idx, path)) 218 221 219 222 cfgrom = ConfigRomInterface(FFADO_DBUS_SERVER, FFADO_DBUS_BASEPATH+'/DeviceManager/'+path) … … 224 227 vendorName = cfgrom.getVendorName() 225 228 modelName = cfgrom.getModelName() 226 print " Found (%s, %X, %X) %s %s" % (str(guid), vendorId, modelId, vendorName, modelName)229 log.debug(" Found (%s, %X, %X) %s %s" % (str(guid), vendorId, modelId, vendorName, modelName)) 227 230 228 231 # check whether this has already been registered at ffado.org branches/libffado-2.0/support/mixer-qt4/ffado_regdialog.py
r1298 r1367 24 24 from PyQt4.QtGui import QDialog 25 25 from ffado_regdialogui import Ui_ffadoRegDialogUI 26 27 import logging 28 log = logging.getLogger('registration') 26 29 27 30 REGISTRATION_MESSAGE = """ … … 66 69 sender = self.sender() 67 70 if sender == self.btnSend: 68 print "user chose to send"71 log.debug("user chose to send") 69 72 self.choice = "send" 70 73 elif sender == self.btnNoSend: 71 print "user chose not to send"74 log.debug("user chose not to send") 72 75 self.choice = "nosend" 73 76 elif sender == self.btnNeverSend: 74 print "user chose to never send"77 log.debug("user chose to never send") 75 78 self.choice = "neversend" 76 79 self.close() branches/libffado-2.0/support/mixer-qt4/ffado_registration.py
r1298 r1367 7 7 8 8 from ffado_regdialog import * 9 10 import logging 11 log = logging.getLogger('registration') 9 12 10 13 class ffado_registration: … … 53 56 urllib.urlencode(post_vals)) 54 57 except: 55 print "failed, network error"58 log.error("failed, network error") 56 59 return (-1, "Network Error") 57 60 … … 68 71 errline = lines[i+1] 69 72 if not ok: 70 print "registration failed" 71 print " " + errline 73 log.info("registration failed %s" % errline) 72 74 return (-2, errline) 73 75 else: … … 106 108 107 109 if self.check_for_ignore(): 108 print "user requested to ignore registration"110 log.debug("user requested to ignore registration") 109 111 else: 110 112 if self.check_if_already_registered(): 111 print "version/GUID combo already registered"113 log.debug("version/GUID combo already registered") 112 114 else: 113 print "show dialog..."115 log.debug("show dialog...") 114 116 115 117 dlg = ffadoRegDialog(self.vendor_string, "0x%X" % self.vendor_id, … … 129 131 msg = QMessageBox() 130 132 if retval[0] == 0: 131 print "registration successful"133 log.debug("registration successful") 132 134 devinfomsg = "<p>Device: %s %s<br> Vendor/Model Id: %X/%X<br>Device GUID: %016X<br>FFADO Version: %s<br>E-Mail: %s</p>" % \ 133 135 (self.vendor_string, self.model_string, self.vendor_id, self.model_id, self.guid, self.ffado_version, self.email) … … 140 142 self.mark_version_registered() 141 143 else: 142 print "error: " + retval[1]144 log.error("error: " + retval[1]) 143 145 tmp = msg.question( msg, "Registration Failed", 144 146 "<qt><b>The registration at ffado.org failed.</b>" + branches/libffado-2.0/support/mixer-qt4/mixer_audiofire.py
r1298 r1367 27 27 from mixer_audiofire_stripui import Ui_AfMonitorWidget 28 28 from mixer_audiofire_settingsui import Ui_AfSettingsWidget 29 import logging 30 log = logging.getLogger('audiofire') 29 31 30 32 class AfMonitorWidget(QWidget, Ui_AfMonitorWidget): … … 41 43 def __init__(self,parent = None): 42 44 QWidget.__init__(self,parent) 43 print "Init AudioFire mixer window"45 log.debug("Init AudioFire mixer window") 44 46 45 47 def getDisplayTitle(self): … … 61 63 else: 62 64 state = 0 63 print"set %s %d %d to %d" % (65 log.debug("set %s %d %d to %d" % ( 64 66 self.MatrixButtonControls[sender][0], 65 67 self.MatrixButtonControls[sender][1], 66 68 self.MatrixButtonControls[sender][2], 67 state) 69 state)) 68 70 self.hw.setMatrixMixerValue(self.MatrixButtonControls[sender][0], 69 71 self.MatrixButtonControls[sender][1], … … 74 76 sender = self.sender() 75 77 vol = a0 76 print"set %s %d %d to %d" % (78 log.debug("set %s %d %d to %d" % ( 77 79 self.MatrixRotaryControls[sender][0], 78 80 self.MatrixRotaryControls[sender][1], 79 81 self.MatrixRotaryControls[sender][2], 80 vol) 82 vol)) 81 83 self.hw.setMatrixMixerValue(self.MatrixRotaryControls[sender][0], 82 84 self.MatrixRotaryControls[sender][1], … … 88 90 vol = a0 89 91 #vol = 0x01000000-vol 90 print"set %s %d %d to %d" % (92 log.debug("set %s %d %d to %d" % ( 91 93 self.MatrixVolumeControls[sender][0], 92 94 self.MatrixVolumeControls[sender][1], 93 95 self.MatrixVolumeControls[sender][2], 94 vol) 96 vol)) 95 97 self.hw.setMatrixMixerValue(self.MatrixVolumeControls[sender][0], 96 98 self.MatrixVolumeControls[sender][1], … … 102 104 vol = a0 103 105 #vol = 0x01000000-vol 104 print"set %s to %d" % (106 log.debug("set %s to %d" % ( 105 107 self.VolumeControls[sender][0], 106 vol) 108 vol)) 107 109 self.hw.setContignuous(self.VolumeControls[sender][0], 108 110 vol) … … 114 116 else: 115 117 state = 0 116 print"set %s to %d" % (118 log.debug("set %s to %d" % ( 117 119 self.SelectorControls[sender][0], 118 state) 120 state)) 119 121 self.hw.setDiscrete(self.SelectorControls[sender][0], state) 120 122 121 123 def updateTrigger(self): 122 124 sender = self.sender() 123 print "trigger %s" % (self.TriggerControls[sender][0])125 log.debug("trigger %s" % (self.TriggerControls[sender][0])) 124 126 self.hw.setDiscrete(self.TriggerControls[sender][0], 1) 125 127 … … 131 133 state = 0 132 134 if state: 133 print"set %s to %d" % (135 log.debug("set %s to %d" % ( 134 136 self.SPDIFmodeControls[sender][0], 135 self.SPDIFmodeControls[sender][1]) 137 self.SPDIFmodeControls[sender][1])) 136 138 self.hw.setDiscrete(self.SPDIFmodeControls[sender][0], self.SPDIFmodeControls[sender][1]) 137 139 138 140 def buildMixer(self): 139 print "Building mixer"141 log.debug("Building mixer") 140 142 self.MatrixButtonControls={} 141 143 self.MatrixRotaryControls={} … … 239 241 for inpair in range(nb_pys_in): 240 242 # create GUI elements 241 print "strip"243 log.debug("strip") 242 244 grpInput = QGroupBox(tab) 243 245 tablayout.addWidget(grpInput) … … 282 284 283 285 def initValues(self): 284 print "Init values"286 log.debug("Init values") 285 287 286 288 for ctrl, info in self.MatrixVolumeControls.iteritems(): … … 290 292 291 293 #vol = 0x01000000-vol 292 print "%s volume is %d" % (ctrl.objectName() , vol)294 log.debug("%s volume is %d" % (ctrl.objectName() , vol)) 293 295 ctrl.setValue(vol) 294 296 … … 301 303 self.MatrixButtonControls[ctrl][2]) 302 304 303 print "%s state is %d" % (ctrl.objectName() , state)305 log.debug("%s state is %d" % (ctrl.objectName() , state)) 304 306 if state: 305 307 ctrl.setChecked(True) … … 315 317 self.MatrixRotaryControls[ctrl][2]) 316 318 317 print "%s value is %d" % (ctrl.objectName(), vol)319 log.debug("%s value is %d" % (ctrl.objectName(), vol)) 318 320 ctrl.setValue(vol) 319 321 … … 325 327 326 328 #vol = 0x01000000-vol 327 print "%s volume is %d" % (ctrl.objectName() , vol)329 log.debug("%s volume is %d" % (ctrl.objectName() , vol)) 328 330 ctrl.setValue(vol) 329 331 … … 333 335 for ctrl, info in self.SelectorControls.iteritems(): 334 336 state = self.hw.getDiscrete(self.SelectorControls[ctrl][0]) 335 print "%s state is %d" % (ctrl.objectName() , state)337 log.debug("%s state is %d" % (ctrl.objectName() , state)) 336 338 if state: 337 339 ctrl.setChecked(True) … … 348 350 for ctrl, info in self.SPDIFmodeControls.iteritems(): 349 351 state = self.hw.getDiscrete(self.SPDIFmodeControls[ctrl][0]) 350 print "%s state is %d" % (ctrl.objectName() , state)352 log.debug("%s state is %d" % (ctrl.objectName() , state)) 351 353 if state == self.SPDIFmodeControls[ctrl][1]: 352 354 ctrl.setChecked(True) branches/libffado-2.0/support/mixer-qt4/mixer_bcoaudio5.py
r1364 r1367 24 24 from PyQt4.QtGui import QWidget 25 25 from mixer_bcoaudio5ui import * 26 import logging 27 log = logging.getLogger('bridgeco') 26 28 27 29 class BCoAudio5Control(QWidget, Ui_BCoAudio5ControlUI): … … 71 73 name = a0 72 74 vol = -a1 73 print "setting %s volume to %d" % (name, vol)75 log.debug("setting %s volume to %d" % (name, vol)) 74 76 self.hw.setContignuous(self.VolumeControls[name][0], vol) 75 77 … … 77 79 name = a0 78 80 state = a1 79 print "setting %s state to %d" % (name, state)81 log.debug("setting %s state to %d" % (name, state)) 80 82 self.hw.setDiscrete(self.ComboControls[name][0], state) 81 83 # verify … … 86 88 for name, ctrl in self.VolumeControls.iteritems(): 87 89 vol = self.hw.getContignuous(ctrl[0]) 88 print "%s volume is %d" % (name , vol)90 log.debug("%s volume is %d" % (name , vol)) 89 91 ctrl[1].setValue(-vol) 90 92 91 93 for name, ctrl in self.ComboControls.iteritems(): 92 94 state = self.hw.getDiscrete(ctrl[0]) 93 print "%s state is %d" % (name , state)95 log.debug("%s state is %d" % (name , state)) 94 96 ctrl[1].setCurrentIndex( state ) 95 97 branches/libffado-2.0/support/mixer-qt4/mixer_edirolfa101.py
r1364 r1367 24 24 from PyQt4.QtGui import QWidget 25 25 from mixer_edirolfa101ui import * 26 27 import logging 28 log = logging.getLogger('edirolfa101') 26 29 27 30 class EdirolFa101Control(QWidget, Ui_EdirolFa101ControlUI): … … 75 78 def setVolumeIn7(self, vol): 76 79 self.setValue('vol7', vol) 77 80 78 81 def setVolumeIn8(self, vol): 79 82 self.setValue('vol8', vol) 80 83 81 84 def setVolumeIn9(self, vol): 82 85 self.setValue('vol9', vol) … … 105 108 def setBalanceIn7(self, bal): 106 109 self.setValue('bal7', bal) 107 110 108 111 def setBalanceIn8(self, bal): 109 112 self.setValue('bal8', bal) 110 113 111 114 def setBalanceIn9(self, bal): 112 115 self.setValue('bal9', bal) … … 118 121 val = -val 119 122 ctrl = self.VolumeControls[name] 120 print "setting %s to %d" % (name, val)123 log.debug("setting %s to %d" % (name, val)) 121 124 self.hw.setContignuous(ctrl[0], val, idx = ctrl[1]) 122 125 … … 124 127 for name, ctrl in self.VolumeControls.iteritems(): 125 128 val = self.hw.getContignuous(ctrl[0], idx = ctrl[1]) 126 print "%s value is %d" % (name , val)129 log.debug("%s value is %d" % (name , val)) 127 130 128 131 # Workaround: The current value is not properly initialized … … 135 138 else: 136 139 val = -32768 137 140 138 141 ctrl[2].setValue(-val) branches/libffado-2.0/support/mixer-qt4/mixer_edirolfa66.py
r1364 r1367 24 24 from PyQt4.QtGui import QWidget 25 25 from mixer_edirolfa66ui import * 26 27 import logging 28 log = logging.getLogger('edirolfa66') 26 29 27 30 class EdirolFa66Control(QWidget, Ui_EdirolFa66ControlUI): … … 86 89 val = -val 87 90 ctrl = self.VolumeControls[name] 88 print "setting %s to %d" % (name, val)91 log.debug("setting %s to %d" % (name, val)) 89 92 self.hw.setContignuous(ctrl[0], val, idx = ctrl[1]) 90 93 … … 92 95 for name, ctrl in self.VolumeControls.iteritems(): 93 96 val = self.hw.getContignuous(ctrl[0], idx = ctrl[1]) 94 print "%s value is %d" % (name , val)97 log.debug("%s value is %d" % (name , val)) 95 98 96 99 # Workaround: The current value is not properly initialized … … 103 106 else: 104 107 val = -32768 105 108 106 109 ctrl[2].setValue(-val) branches/libffado-2.0/support/mixer-qt4/mixer_global.py
r1298 r1367 24 24 from mixer_globalui import Ui_GlobalMixerUi 25 25 26 import logging 27 log = logging.getLogger('global') 28 26 29 class GlobalMixer( QWidget, Ui_GlobalMixerUi ): 27 30 def __init__( self, parent ): … … 43 46 44 47 def samplerateChanged( self, sr ): 45 print "samplerateChanged( " + str(sr) + " )"48 log.debug("samplerateChanged( " + str(sr) + " )") 46 49 self.samplerateselect.select( sr ) 47 50 selected = self.samplerateselect.selected() branches/libffado-2.0/support/mixer-qt4/mixer_motu.py
r1365 r1367 25 25 from PyQt4.QtGui import QWidget 26 26 from mixer_motuui import * 27 28 import logging 29 log = logging.getLogger('motu') 27 30 28 31 # Model defines. These must agree with what is used in motu_avdevice.h. … … 514 517 sender = self.sender() 515 518 vol = 128-a0 516 print"setting %s for mix %d channel %d to %d" % (self.ChannelFaders[sender][0],517 self.ChannelFaders[sender][1], self.ChannelFaders[sender][2], vol) 519 log.debug("setting %s for mix %d channel %d to %d" % (self.ChannelFaders[sender][0], 520 self.ChannelFaders[sender][1], self.ChannelFaders[sender][2], vol)) 518 521 self.hw.setMatrixMixerValue(self.ChannelFaders[sender][0], 519 522 self.ChannelFaders[sender][1], self.ChannelFaders[sender][2], vol) … … 523 526 sender = self.sender() 524 527 val = a0 525 print"setting %s for mix %d channel %d to %d" % (self.ChannelControls[sender][0],526 self.ChannelControls[sender][1], self.ChannelControls[sender][2], val) 528 log.debug("setting %s for mix %d channel %d to %d" % (self.ChannelControls[sender][0], 529 self.ChannelControls[sender][1], self.ChannelControls[sender][2], val)) 527 530 self.hw.setMatrixMixerValue(self.ChannelControls[sender][0], 528 531 self.ChannelControls[sender][1], self.ChannelControls[sender][2], val) … … 532 535 sender = self.sender() 533 536 val = a0 534 print "setting %s control to %d" % (self.Controls[sender][0], val)537 log.debug("setting %s control to %d" % (self.Controls[sender][0], val)) 535 538 self.hw.setDiscrete(self.Controls[sender][0], val) 536 539 … … 539 542 sender = self.sender() 540 543 val=a0 541 print"setting %s for mix %d channel %d switch to %d" % (self.ChannelBinarySwitches[sender][0],542 self.ChannelBinarySwitches[sender][1], self.ChannelBinarySwitches[sender][2], val) 544 log.debug("setting %s for mix %d channel %d switch to %d" % (self.ChannelBinarySwitches[sender][0], 545 self.ChannelBinarySwitches[sender][1], self.ChannelBinarySwitches[sender][2], val)) 543 546 self.hw.setMatrixMixerValue(self.ChannelBinarySwitches[sender][0], 544 547 self.ChannelBinarySwitches[sender][1], self.ChannelBinarySwitches[sender][2], val) … … 548 551 sender = self.sender() 549 552 val=a0 550 print "setting %s switch to %d" % (self.BinarySwitches[sender][0], val)553 log.debug("setting %s switch to %d" % (self.BinarySwitches[sender][0], val)) 551 554 self.hw.setDiscrete(self.BinarySwitches[sender][0], val) 552 555 … … 555 558 sender = self.sender() 556 559 vol = 128-a0 557 print "setting %s mix fader to %d" % (self.Faders[sender][0], vol)560 log.debug("setting %s mix fader to %d" % (self.Faders[sender][0], vol)) 558 561 self.hw.setDiscrete(self.Faders[sender][0], vol) 559 562 … … 562 565 sender = self.sender() 563 566 dest=a0 564 print "setting %s mix destination to %d" % (self.MixDests[sender][0], dest)567 log.debug("setting %s mix destination to %d" % (self.MixDests[sender][0], dest)) 565 568 self.hw.setDiscrete(self.MixDests[sender][0], dest) 566 569 … … 572 575 name=a0 573 576 state = a1 574 print "setting %s state to %d" % (name, state)577 log.debug("setting %s state to %d" % (name, state)) 575 578 self.hw.setDiscrete(self.SelectorControls[name][0], state) 576 579 … … 583 586 # Is the device streaming? 584 587 self.is_streaming = self.hw.getDiscrete('/Mixer/Info/IsStreaming') 585 print "device streaming flag: %d" % (self.is_streaming)588 log.debug("device streaming flag: %d" % (self.is_streaming)) 586 589 587 590 # Retrieve other device settings as needed 588 591 self.model = self.hw.getDiscrete('/Mixer/Info/Model') 589 print "device model identifier: %d" % (self.model)592 log.debug("device model identifier: %d" % (self.model)) 590 593 self.sample_rate = self.hw.getDiscrete('/Mixer/Info/SampleRate') 591 print "device sample rate: %d" % (self.sample_rate)594 log.debug("device sample rate: %d" % (self.sample_rate)) 592 595 self.has_mic_inputs = self.hw.getDiscrete('/Mixer/Info/HasMicInputs') 593 print "device has mic inputs: %d" % (self.has_mic_inputs)596 log.debug("device has mic inputs: %d" % (self.has_mic_inputs)) 594 597 self.has_aesebu_inputs = self.hw.getDiscrete('/Mixer/Info/HasAESEBUInputs') 595 print "device has AES/EBU inputs: %d" % (self.has_aesebu_inputs)598 log.debug("device has AES/EBU inputs: %d" % (self.has_aesebu_inputs)) 596 599 self.has_spdif_inputs = self.hw.getDiscrete('/Mixer/Info/HasSPDIFInputs') 597 print "device has SPDIF inputs: %d" % (self.has_spdif_inputs)600 log.debug("device has SPDIF inputs: %d" % (self.has_spdif_inputs)) 598 601 self.has_optical_spdif = self.hw.getDiscrete('/Mixer/Info/HasOpticalSPDIF') 599 print "device has optical SPDIF: %d" % (self.has_optical_spdif)602 log.debug("device has optical SPDIF: %d" % (self.has_optical_spdif)) 600 603 601 604 # Customise the UI based on device options retrieved … … 662 665 # Some controls must be disabled if the device is streaming 663 666 if (self.is_streaming): 664 print "Disabling controls which require inactive streaming"667 log.debug("Disabling controls which require inactive streaming") 665 668 self.optical_in_mode.setEnabled(False) 666 669 self.optical_out_mode.setEnabled(False) … … 668 671 # Some channels aren't available at higher sampling rates 669 672 if (self.sample_rate > 96000): 670 print "Disabling controls not present above 96 kHz"673 log.debug("Disabling controls not present above 96 kHz") 671 674 self.mix1_tab.setTabEnabled(3, False) # ADAT 672 675 self.mix1_tab.setTabEnabled(2, False) # SPDIF … … 682 685 self.mix4_tab.setTabEnabled(1, False) # AES/EBU 683 686 if (self.sample_rate > 48000): 684 print "Disabling controls not present above 48 kHz"687 log.debug("Disabling controls not present above 48 kHz") 685 688 self.mix1_adat5.setEnabled(False) 686 689 self.mix1_adat6.setEnabled(False) … … 754 757 continue 755 758 vol = 128-self.hw.getMatrixMixerValue(info[0], info[1], info[2]) 756 print "%s for mix %d channel %d is %d" % (info[0], info[1], info[2], vol)759 log.debug("%s for mix %d channel %d is %d" % (info[0], info[1], info[2], vol)) 757 760 ctrl.setValue(vol) 758 761 QObject.connect(ctrl, SIGNAL('valueChanged(int)'), self.updateChannelFader) … … 762 765 continue 763 766 vol = 128-self.hw.getDiscrete(info[0]) 764 print "%s mix fader is %d" % (info[0] , vol)767 log.debug("%s mix fader is %d" % (info[0] , vol)) 765 768 ctrl.setValue(vol) 766 769 QObject.connect(ctrl, SIGNAL('valueChanged(int)'), self.updateFader) … … 770 773 continue 771 774 pan = self.hw.getMatrixMixerValue(info[0], info[1], info[2]) 772 print "%s for mix %d channel %d is %d" % (info[0], info[1], info[2], pan)775 log.debug("%s for mix %d channel %d is %d" % (info[0], info[1], info[2], pan)) 773 776 ctrl.setValue(pan) 774 777 QObject.connect(ctrl, SIGNAL('valueChanged(int)'), self.updateChannelControl) … … 778 781 continue 779 782 pan = self.hw.getDiscrete(info[0]) 780 print "%s control is %d" % (info[0] , pan)783 log.debug("%s control is %d" % (info[0] , pan)) 781 784 ctrl.setValue(pan) 782 785 QObject.connect(ctrl, SIGNAL('valueChanged(int)'), self.updateControl) … … 784 787 # Disable the channel pair controls since they aren't yet implemented 785 788 for ctrl, info in self.PairSwitches.iteritems(): 786 print "%s control is not implemented yet: disabling" % (info[0])789 log.debug("%s control is not implemented yet: disabling" % (info[0])) 787 790 ctrl.setEnabled(False) 788 791 … … 791 794 continue 792 795 val = self.hw.getMatrixMixerValue(info[0], info[1], info[2]) 793 print "%s for mix %d channel %d is %d" % (info[0] , info[1], info[2], val)796 log.debug("%s for mix %d channel %d is %d" % (info[0] , info[1], info[2], val)) 794 797 if val: 795 798 ctrl.setChecked(True) … … 802 805 continue 803 806 val = self.hw.getDiscrete(info[0]) 804 print "%s switch is %d" % (info[0] , val)807 log.debug("%s switch is %d" % (info[0] , val)) 805 808 if val: 806 809 ctrl.setChecked(True) … … 813 816 continue 814 817 dest = self.hw.getDiscrete(info[0]) 815 print "%s mix destination is %d" % (info[0] , dest)818 log.debug("%s mix destination is %d" % (info[0] , dest)) 816 819 ctrl.setCurrentIndex(dest) 817 820 QObject.connect(ctrl, SIGNAL('activated(int)'), self.updateMixDest) … … 819 822 for name, ctrl in self.SelectorControls.iteritems(): 820 823 state = self.hw.getDiscrete(ctrl[0]) 821 print "%s state is %d" % (name , state)822 ctrl[1].setCurrentIndex(state) 824 log.debug("%s state is %d" % (name , state)) 825 ctrl[1].setCurrentIndex(state) 823 826 824 827 # FIXME: If optical mode is not ADAT, disable ADAT controls here. branches/libffado-2.0/support/mixer-qt4/mixer_phase24.py
r1364 r1367 24 24 from PyQt4.QtGui import QWidget 25 25 from mixer_phase24ui import * 26 27 import logging 28 log = logging.getLogger('phase24') 26 29 27 30 class Phase24Control(QWidget, Ui_Phase24ControlUI): … … 73 76 # public slot 74 77 def setLineLevel(self,a0): 75 print "setting line level to %d" % (a0 * -768)78 log.debug("setting line level to %d" % (a0 * -768)) 76 79 self.hw.setContignuous('/Mixer/Feature_2', a0 * -768) 77 80 … … 81 84 return 82 85 if(a0 == 0): 83 print "setting front level to %d" % (0)86 log.debug("setting front level to %d" % (0)) 84 87 self.hw.setContignuous('/Mixer/Feature_8', 0) 85 88 else: 86 print "setting front level to %d" % (1536)89 log.debug("setting front level to %d" % (1536)) 87 90 self.hw.setContignuous('/Mixer/Feature_8', 1536) 88 91 … … 106 109 name=a0 107 110 vol = -a1 108 print "setting %s volume to %d" % (name, vol)111 log.debug("setting %s volume to %d" % (name, vol)) 109 112 self.hw.setContignuous(self.VolumeControls[name][0], vol) 110 113 … … 112 115 name=a0 113 116 state = a1 114 print "setting %s state to %d" % (name, state)117 log.debug("setting %s state to %d" % (name, state)) 115 118 self.hw.setDiscrete(self.SelectorControls[name][0], state) 116 119 … … 141 144 for name, ctrl in self.VolumeControls.iteritems(): 142 145 vol = self.hw.getContignuous(ctrl[0]) 143 print "%s volume is %d" % (name , vol)146 log.debug("%s volume is %d" % (name , vol)) 144 147 ctrl[1].setValue(-vol) 145 148 146 149 for name, ctrl in self.SelectorControls.iteritems(): 147 150 state = self.hw.getDiscrete(ctrl[0]) 148 print "%s state is %d" % (name , state)149 ctrl[1].setCurrentIndex(state) 151 log.debug("%s state is %d" % (name , state)) 152 ctrl[1].setCurrentIndex(state) 150 153 151 154 val = self.hw.getContignuous('/Mixer/Feature_2')/-768 branches/libffado-2.0/support/mixer-qt4/mixer_phase88.py
r1364 r1367 24 24 from PyQt4.QtGui import QWidget 25 25 from mixer_phase88ui import * 26 27 import logging 28 log = logging.getLogger('phase88') 26 29 27 30 class Phase88Control(QWidget, Ui_Phase88ControlUI): … … 87 90 name=a0 88 91 vol = -a1 89 print "setting %s volume to %d" % (name, vol)92 log.debug("setting %s volume to %d" % (name, vol)) 90 93 self.hw.setContignuous(self.VolumeControls[name][0], vol) 91 94 … … 93 96 name=a0 94 97 state = a1 95 print "setting %s state to %d" % (name, state)98 log.debug("setting %s state to %d" % (name, state)) 96 99 self.hw.setDiscrete(self.SelectorControls[name][0], state) 97 100 … … 99 102 for name, ctrl in self.VolumeControls.iteritems(): 100 103 vol = self.hw.getContignuous(ctrl[0]) 101 print "%s volume is %d" % (name , vol)104 log.debug("%s volume is %d" % (name , vol)) 102 105 ctrl[1].setValue(-vol) 103 106 104 107 for name, ctrl in self.SelectorControls.iteritems(): 105 108 state = self.hw.getDiscrete(ctrl[0]) 106 print "%s state is %d" % (name , state)107 ctrl[1].setCurrentIndex(state) 109 log.debug("%s state is %d" % (name , state)) 110 ctrl[1].setCurrentIndex(state) branches/libffado-2.0/support/mixer-qt4/mixer_quatafire.py
r1364 r1367 24 24 from PyQt4.QtGui import QWidget 25 25 from mixer_quatafireui import * 26 27 import logging 28 log = logging.getLogger('quatafire') 26 29 27 30 class QuataFireMixer(QWidget, Ui_QuataFireMixerUI): … … 55 58 sender = self.sender() 56 59 vol = -a0 57 print "setting %s volume to %d" % (self.VolumeControls[sender][0], vol)60 log.debug("setting %s volume to %d" % (self.VolumeControls[sender][0], vol)) 58 61 self.hw.setContignuous(self.VolumeControls[sender][0], vol, self.VolumeControls[sender][1]) 59 62 … … 68 71 pan_right = 0 69 72 70 print "setting %s pan left to %d" % (self.PanControls[sender][0], -pan_left)73 log.debug("setting %s pan left to %d" % (self.PanControls[sender][0], -pan_left)) 71 74 self.hw.setContignuous(self.PanControls[sender][0], -pan_left, 1) 72 print "setting %s pan right to %d" % (self.PanControls[sender][0], -pan_right)75 log.debug("setting %s pan right to %d" % (self.PanControls[sender][0], -pan_right)) 73 76 self.hw.setContignuous(self.PanControls[sender][0], -pan_right, 2) 74 77 … … 77 80 vol = self.hw.getContignuous(self.VolumeControls[ctrl][0], self.VolumeControls[ctrl][1]) 78 81 val = -vol 79 print "%s volume is %d, set to %d" % (ctrl.objectName(), vol, val)82 log.debug("%s volume is %d, set to %d" % (ctrl.objectName(), vol, val)) 80 83 ctrl.setValue(val) 81 84 … … 87 90 pan_right = self.hw.getContignuous(self.PanControls[ctrl][0], 2) 88 91 89 print "%s pan left is %d" % (ctrl.objectName() , pan_left)90 print "%s pan right is %d" % (ctrl.objectName() , pan_right)92 log.debug("%s pan left is %d" % (ctrl.objectName() , pan_left)) 93 log.debug("%s pan right is %d" % (ctrl.objectName() , pan_right)) 91 94 92 95 if pan_left == 0: … … 94 97 else: 95 98 val = -pan_left 96 99 97 100 ctrl.setValue(val) 98 101 # connect the UI element branches/libffado-2.0/support/mixer-qt4/mixer_saffire.py
r1298 r1367 28 28 from mixer_saffirele_smallui import Ui_SaffireLEMixerSmallUI 29 29 from mixer_saffirele_largeui import Ui_SaffireLEMixerLargeUI 30 31 import logging 32 log = logging.getLogger('saffire') 30 33 31 34 #MIXER LAYOUT: … … 83 86 if self.is_saffire_le: 84 87 if self.samplerate <= 48000: 85 print "large"88 log.debug("large") 86 89 self.small.hide() 87 90 self.large.initValues() 88 91 self.large.show() 89 92 else: 90 print "small"93 log.debug("small") 91 94 self.large.hide() 92 95 self.small.initValues() … … 110 113 if int(self.configrom.getGUID(), 16) >= 0x130e0100040000: 111 114 self.is_saffire_le = True 112 print "Found SaffireLE GUID"115 log.debug("Found SaffireLE GUID") 113 116 else: 114 117 self.is_saffire_le = False 115 print "Found Saffire GUID"118 log.debug("Found Saffire GUID") 116 119 117 120 # init depending on what device we have … … 282 285 SaffireMixerBase.updateValues(self) 283 286 def switchStereoMode(self): 284 print "should switch to mono mode"287 log.debug("should switch to mono mode") 285 288 self.my_parent.setMonoMode(1) 286 289 self.my_parent.selectCorrectMode() … … 427 430 428 431 def switchStereoMode(self): 429 print "should switch to stero mode"432 log.debug("should switch to stereo mode") 430 433 self.my_parent.setMonoMode(0) 431 434 self.my_parent.selectCorrectMode() … … 438 441 SaffireMixerBase.__init__(self) 439 442 440 print "Init large Saffire LE mixer window"443 log.debug("Init large Saffire LE mixer window") 441 444 442 445 self.VolumeControls={ … … 561 564 SaffireMixerBase.__init__(self) 562 565 563 print "Init small Saffire LE mixer window"566 log.debug("Init small Saffire LE mixer window") 564 567 565 568 self.VolumeControls={ branches/libffado-2.0/support/mixer-qt4/mixer_saffirepro.py
r1298 r1367 25 25 from mixer_saffirepro_largeui import Ui_SaffireProMixerLargeUI 26 26 from mixer_saffirepro_smallui import Ui_SaffireProMixerSmallUI 27 28 import logging 29 log = logging.getLogger('saffirepro') 27 30 28 31 class SaffireProMixer(QWidget): … … 53 56 def selectCorrectMode(self): 54 57 if self.samplerate <= 96000: 55 print "large"58 log.debug("large") 56 59 self.small.hide() 57 60 self.large.initValues() 58 61 self.large.show() 59 62 else: 60 print "small"63 log.debug("small") 61 64 self.large.hide() 62 65 self.small.initValues() … … 66 69 selected = self.samplerateselect.selected() 67 70 self.samplerate = int(self.samplerateselect.getEnumLabel( selected )) 68 print "detected samplerate %d" % self.samplerate71 log.debug("detected samplerate %d" % self.samplerate) 69 72 70 73 # adat on PRO26 makes a difference … … 75 78 if state: 76 79 self.have_adat = False 77 print "detected PRO26, ADAT disabled"80 log.debug("detected PRO26, ADAT disabled") 78 81 else: 79 82 self.have_adat = True 80 print "detected PRO26, ADAT enabled"83 log.debug("detected PRO26, ADAT enabled") 81 84 elif modelId == 0x00000006: # PRO10 82 85 self.is_pro10 = True … … 108 111 self.setupUi(self) 109 112 self.have_adat = False 110 print "Init large Saffire Pro mixer window"113 log.debug("Init large Saffire Pro mixer window") 111 114 112 115 self.VolumeControls={ … … 299 302 SaffireMixerBase.__init__(self) 300 303 self.setupUi(self) 301 print "Init small Saffire Pro mixer window"304 log.debug("Init small Saffire Pro mixer window") 302 305 303 306 self.VolumeControls={ branches/libffado-2.0/support/mixer-qt4/mixer_saffire_base.py
r1298 r1367 23 23 from PyQt4.QtCore import SIGNAL, SLOT, QObject 24 24 25 import logging 26 log = logging.getLogger('saffirebase') 27 25 28 # the class that holds all actual control code 26 29 class SaffireMixerBase: … … 32 35 #vol = 0x7FFF-a0 33 36 vol = a0 34 print"set %s %d %d to %d" % (37 log.debug("set %s %d %d to %d" % ( 35 38 self.VolumeControls[sender][0], 36 39 self.VolumeControls[sender][1], 37 40 self.VolumeControls[sender][2], 38 vol) 41 vol)) 39 42 self.hw.setMatrixMixerValue(self.VolumeControls[sender][0], 40 43 self.VolumeControls[sender][1], … … 44 47 sender = self.sender() 45 48 vol = a0 46 print"set %s to %d" % (49 log.debug("set %s to %d" % ( 47 50 self.VolumeControlsLowRes[sender][0], 48 vol) 51 vol)) 49 52 self.hw.setDiscrete(self.VolumeControlsLowRes[sender][0], vol) 50 53 … … 55 58 else: 56 59 state = 0 57 print"set %s to %d" % (60 log.debug("set %s to %d" % ( 58 61 self.SelectorControls[sender][0], 59 state) 62 state)) 60 63 self.hw.setDiscrete(self.SelectorControls[sender][0], state) 61 64 … … 72 75 def triggerButton(self): 73 76 sender = self.sender() 74 print"trigger %s" % (75 self.TriggerButtonControls[sender][0]) 77 log.debug("trigger %s" % ( 78 self.TriggerButtonControls[sender][0])) 76 79 self.hw.setDiscrete(self.TriggerButtonControls[sender][0], 1) 77 80 … … 79 82 sender = self.sender() 80 83 textbox = self.saveTextControls[sender][0] 81 print"save %s" % (82 textbox.text().ascii()) 84 log.debug("save %s" % ( 85 textbox.text().ascii())) 83 86 self.hw.setText(self.TextControls[textbox][0], textbox.text().ascii()) 84 87 … … 102 105 self.VolumeControls[ctrl][1], 103 106 self.VolumeControls[ctrl][2]) 104 print "%s volume is %d" % (ctrl.objectName() , 0x7FFF-vol)107 log.debug("%s volume is %d" % (ctrl.objectName() , 0x7FFF-vol)) 105 108 #ctrl.setValue(0x7FFF-vol) 106 109 ctrl.setValue(vol) … … 108 111 vol = self.hw.getDiscrete(self.VolumeControlsLowRes[ctrl][0]) 109 112 110 print "%s volume is %d" % (ctrl.objectName() , vol)113 log.debug("%s volume is %d" % (ctrl.objectName() , vol)) 111 114 ctrl.setValue(vol) 112 115 113 116 for ctrl, info in self.SelectorControls.iteritems(): 114 117 state = self.hw.getDiscrete(self.SelectorControls[ctrl][0]) 115 print "%s state is %d" % (ctrl.objectName() , state)118 log.debug("%s state is %d" % (ctrl.objectName() , state)) 116 119 if state: 117 120 ctrl.setChecked(True) … … 124 127 for ctrl, info in self.TextControls.iteritems(): 125 128 text = self.hw.getText(self.TextControls[ctrl][0]) 126 print "%s text is %s" % (ctrl.objectName() , text)129 log.debug("%s text is %s" % (ctrl.objectName() , text)) 127 130 ctrl.setText(text) 128 131 … … 132 135 def polledUpdateVolumeLowRes(self, srcpath, ctrl): 133 136 vol = self.hw.getDiscrete(srcpath) 134 # print "polledUpdateVolumeLowRes: vol = %s" % vol137 #log.debug("polledUpdateVolumeLowRes: vol = %s" % vol) 135 138 #ctrl.setValue(255-vol) 136 139 ctrl.setValue(vol)