Changeset 1370

Show
Ignore:
Timestamp:
10/21/08 13:09:24 (12 years ago)
Author:
ppalmers
Message:

fix up saffire mixers (closes #147)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/libffado-2.0/src/bebob/focusrite/focusrite_generic.cpp

    r1276 r1370  
    454454 
    455455// hardware dial control 
    456 DialPositionControl::DialPositionControl(FocusriteDevice& parent, int id) 
    457 : Control::Discrete(&parent) 
    458 , m_Parent(parent) 
    459 , m_cmd_id ( id ) 
     456DialPositionControl::DialPositionControl(FocusriteDevice& parent, int id, int shift) 
     457: Control::Discrete(&parent) 
     458, m_Parent(parent) 
     459, m_cmd_id ( id ) 
     460, m_shift ( shift ) 
    460461{} 
    461 DialPositionControl::DialPositionControl(FocusriteDevice& parent, int id, 
     462DialPositionControl::DialPositionControl(FocusriteDevice& parent, int id, int shift, 
    462463                std::string name, std::string label, std::string descr) 
    463464: Control::Discrete(&parent) 
    464465, m_Parent(parent) 
    465466, m_cmd_id ( id ) 
     467, m_shift ( shift ) 
    466468{ 
    467469    setName(name); 
     
    479481        return 0; 
    480482    } else { 
    481         val = val >> 5; 
     483        if (m_shift > 0) { 
     484            val = val >> m_shift; 
     485        } else if (m_shift < 0) { 
     486            val = val << -m_shift; 
     487        } 
    482488        debugOutput(DEBUG_LEVEL_VERBOSE, "getValue for %d = %d\n",  
    483489                                         m_cmd_id, val); 
  • branches/libffado-2.0/src/bebob/focusrite/focusrite_generic.h

    r1276 r1370  
    150150{ 
    151151public: 
    152     DialPositionControl(FocusriteDevice& parent, int id); 
    153     DialPositionControl(FocusriteDevice& parent, int id, 
     152    DialPositionControl(FocusriteDevice& parent, int id, int shift); 
     153    DialPositionControl(FocusriteDevice& parent, int id, int shift, 
    154154                        std::string name, std::string label, std::string descr); 
    155155     
     
    166166    FocusriteDevice&        m_Parent; 
    167167    unsigned int            m_cmd_id; 
     168    int                     m_shift; 
    168169}; 
    169170 
  • branches/libffado-2.0/src/bebob/focusrite/focusrite_saffire.cpp

    r1292 r1370  
    253253        result &= m_MixerContainer->addElement( 
    254254            new DialPositionControl(*this,  
    255                     FR_SAFFIRE_CMD_ID_MONITOR_DIAL, 
     255                    FR_SAFFIRE_CMD_ID_MONITOR_DIAL, 0, 
    256256                    "MonitorDial", "Monitor Dial", "Monitor Dial Value")); 
    257257 
  • branches/libffado-2.0/src/bebob/focusrite/focusrite_saffirepro.cpp

    r1366 r1370  
    4444 
    4545    addOption(Util::OptionContainer::Option("rebootOnSamplerateChange", true)); 
     46 
    4647    // the saffire pro doesn't seem to like it if the commands are too fast 
    4748    if (AVC::AVCCommand::getSleepAfterAVCCommand() < 1000) { 
     
    6263    bool result=true; 
    6364    debugOutput(DEBUG_LEVEL_VERBOSE, "Building a Focusrite SaffirePro mixer...\n"); 
    64      
     65 
    6566    destroyMixer(); 
    66      
     67 
    6768    // create the mixer object container 
    6869    m_MixerContainer = new Control::Container(this, "Mixer"); 
     
    144145                FR_SAFFIREPRO_CMD_ID_BITFIELD_OUT78, FR_SAFFIREPRO_CMD_BITFIELD_BIT_DIM, 
    145146                "Out78Dim", "Out7/8 Dim", "Output 7/8 Level Dim")); 
     147 
     148    // front panel dial position 
     149    result &= m_MixerContainer->addElement( 
     150        new DialPositionControl(*this,  
     151                FR_SAFFIREPRO_CMD_ID_MONITOR_DIAL, 0, 
     152                "MonitorDial", "Monitor Dial", "Monitor Dial Value")); 
    146153 
    147154    // direct monitoring controls 
  • branches/libffado-2.0/src/bebob/focusrite/focusrite_saffirepro.h

    r1366 r1370  
    158158#define FR_SAFFIREPRO_CMD_SWITCH_CONFIG_MUTE910  (1<<8) 
    159159 
    160 #define FR_SAFFIREPRO_CMD_ID_FRONT_DIAL             86 
     160#define FR_SAFFIREPRO_CMD_ID_MONITOR_DIAL           86 
    161161#define FR_SAFFIREPRO_CMD_ID_DIM_INDICATOR          87 
    162162#define FR_SAFFIREPRO_CMD_ID_MUTE_INDICATOR         88 
  • branches/libffado-2.0/support/mixer-qt4/ffado_panelmanager.py

    r1367 r1370  
    132132            for guid in self.panels.keys(): 
    133133                w = self.panels[guid] 
    134                 if 'polledUpdate' in dir(w): 
    135                     try: 
    136                         w.polledUpdate() 
    137                     except: 
    138                         log.error("error in polled update") 
     134                for child in w.children(): 
     135                    #log.debug("poll child %s,%s" % (guid,child)) 
     136                    if 'polledUpdate' in dir(child): 
     137                        try: 
     138                            child.polledUpdate() 
     139                        except: 
     140                            log.error("error in polled update") 
     141                            raise 
    139142 
    140143    def devlistPreUpdate(self): 
  • branches/libffado-2.0/support/mixer-qt4/mixer_saffire.py

    r1367 r1370  
    262262        state = selector.isChecked() 
    263263        if state: 
    264             self.polledUpdateVolumeLowRes('/Mixer/MonitorDial', volctrl
     264            self.polledUpdateVolumeLowRes('/Mixer/MonitorDial', volctrl, 64
    265265            volctrl.setEnabled(False) 
    266266        else: 
     
    406406        state = selector.isChecked() 
    407407        if state: 
    408             self.polledUpdateVolumeLowRes('/Mixer/MonitorDial', volctrl
     408            self.polledUpdateVolumeLowRes('/Mixer/MonitorDial', volctrl, 4
    409409            volctrl.setEnabled(False) 
    410410        else: 
  • branches/libffado-2.0/support/mixer-qt4/mixer_saffirele_large.ui

    r1298 r1370  
    19561956          </property> 
    19571957          <property name="maximum" > 
    1958            <number>255</number> 
     1958           <number>127</number> 
    19591959          </property> 
    19601960          <property name="singleStep" > 
     
    19621962          </property> 
    19631963          <property name="pageStep" > 
    1964            <number>4</number> 
     1964           <number>16</number> 
    19651965          </property> 
    19661966          <property name="orientation" > 
     
    19781978          </property> 
    19791979          <property name="maximum" > 
    1980            <number>255</number> 
     1980           <number>127</number> 
    19811981          </property> 
    19821982          <property name="singleStep" > 
     
    19841984          </property> 
    19851985          <property name="pageStep" > 
    1986            <number>4</number> 
     1986           <number>16</number> 
    19871987          </property> 
    19881988          <property name="orientation" > 
     
    20002000          </property> 
    20012001          <property name="maximum" > 
    2002            <number>255</number> 
     2002           <number>127</number> 
    20032003          </property> 
    20042004          <property name="singleStep" > 
     
    20062006          </property> 
    20072007          <property name="pageStep" > 
    2008            <number>4</number> 
     2008           <number>16</number> 
    20092009          </property> 
    20102010          <property name="orientation" > 
  • branches/libffado-2.0/support/mixer-qt4/mixer_saffirele_small.ui

    r1298 r1370  
    216216      <widget class="QTabWidget" name="tabWidget4" > 
    217217       <property name="currentIndex" > 
    218         <number>3</number> 
     218        <number>0</number> 
    219219       </property> 
    220220       <widget class="QWidget" name="tab" > 
     
    680680          </property> 
    681681          <property name="maximum" > 
    682            <number>255</number> 
     682           <number>127</number> 
    683683          </property> 
    684684          <property name="singleStep" > 
     
    686686          </property> 
    687687          <property name="pageStep" > 
    688            <number>4</number> 
     688           <number>16</number> 
    689689          </property> 
    690690          <property name="orientation" > 
     
    702702          </property> 
    703703          <property name="maximum" > 
    704            <number>255</number> 
     704           <number>127</number> 
    705705          </property> 
    706706          <property name="singleStep" > 
     
    708708          </property> 
    709709          <property name="pageStep" > 
    710            <number>4</number> 
     710           <number>16</number> 
    711711          </property> 
    712712          <property name="orientation" > 
     
    724724          </property> 
    725725          <property name="maximum" > 
    726            <number>255</number> 
     726           <number>127</number> 
    727727          </property> 
    728728          <property name="singleStep" > 
     
    730730          </property> 
    731731          <property name="pageStep" > 
    732            <number>4</number> 
     732           <number>16</number> 
    733733          </property> 
    734734          <property name="orientation" > 
  • branches/libffado-2.0/support/mixer-qt4/mixer_saffirepro.py

    r1367 r1370  
    101101 
    102102    def polledUpdate(self): 
    103         # fixme: todo 
    104         pass 
     103        if self.samplerate <= 96000: 
     104            self.large.polledUpdate() 
     105        else: 
     106            self.small.polledUpdate() 
    105107 
    106108class SaffireProMixerLarge(QWidget, Ui_SaffireProMixerLargeUI, SaffireMixerBase): 
     
    215217            self.chkAdatDisable: ['/Control/ADATDisable'], 
    216218            # Mixer switches 
    217             self.chkMute12: ['/Mixer/Out12Mute'], 
     219            self.chkMute12: ['/Mixer/Out12Mute', [self.chkHwCtrl12]], 
    218220            self.chkHwCtrl12: ['/Mixer/Out12HwCtrl'], 
    219221            self.chkPad12: ['/Mixer/Out12Pad'], 
    220222            self.chkDim12: ['/Mixer/Out12Dim'], 
    221             self.chkMute34: ['/Mixer/Out34Mute'], 
     223            self.chkMute34: ['/Mixer/Out34Mute', [self.chkHwCtrl34]], 
    222224            self.chkHwCtrl34: ['/Mixer/Out34HwCtrl'], 
    223225            self.chkPad34: ['/Mixer/Out34Pad'], 
    224226            self.chkDim34: ['/Mixer/Out34Dim'], 
    225             self.chkMute56: ['/Mixer/Out56Mute'], 
     227            self.chkMute56: ['/Mixer/Out56Mute', [self.chkHwCtrl56]], 
    226228            self.chkHwCtrl56: ['/Mixer/Out56HwCtrl'], 
    227229            self.chkPad56: ['/Mixer/Out56Pad'], 
    228230            self.chkDim56: ['/Mixer/Out56Dim'], 
    229             self.chkMute78: ['/Mixer/Out78Mute'], 
     231            self.chkMute78: ['/Mixer/Out78Mute', [self.chkHwCtrl78]], 
    230232            self.chkHwCtrl78: ['/Mixer/Out78HwCtrl'], 
    231233            self.chkPad78: ['/Mixer/Out78Pad'], 
     
    295297        self.tabInputMix.setCurrentWidget(self.tabInputMix.widget(0)) 
    296298        SaffireMixerBase.updateValues(self) 
     299 
     300    def polledUpdate(self): 
     301        #log.debug("polled update (large)") 
     302        self.polledUpdateHwCtrl(self.chkHwCtrl12, self.sldOut12Level) 
     303        self.polledUpdateHwCtrl(self.chkHwCtrl34, self.sldOut34Level) 
     304        self.polledUpdateHwCtrl(self.chkHwCtrl56, self.sldOut56Level) 
     305        self.polledUpdateHwCtrl(self.chkHwCtrl78, self.sldOut78Level) 
     306 
     307    def polledUpdateHwCtrl(self, selector, volctrl): 
     308        state = selector.isChecked() 
     309        if state: 
     310            self.polledUpdateVolumeLowRes('/Mixer/MonitorDial', volctrl, 2) 
     311            volctrl.setEnabled(False) 
     312        else: 
     313            volctrl.setEnabled(True) 
    297314 
    298315class SaffireProMixerSmall(QWidget, Ui_SaffireProMixerSmallUI, SaffireMixerBase): 
     
    421438    def updateValues(self): 
    422439        SaffireMixerBase.updateValues(self) 
     440 
     441    def polledUpdate(self): 
     442        #log.debug("polled update (small)") 
     443        self.polledUpdateHwCtrl(self.chkHwCtrl12, self.sldOut12Level) 
     444        self.polledUpdateHwCtrl(self.chkHwCtrl34, self.sldOut34Level) 
     445        self.polledUpdateHwCtrl(self.chkHwCtrl56, self.sldOut56Level) 
     446        self.polledUpdateHwCtrl(self.chkHwCtrl78, self.sldOut78Level) 
     447 
     448    def polledUpdateHwCtrl(self, selector, volctrl): 
     449        state = selector.isChecked() 
     450        if state: 
     451            self.polledUpdateVolumeLowRes('/Mixer/MonitorDial', volctrl, 2) 
     452            volctrl.setEnabled(False) 
     453        else: 
     454            volctrl.setEnabled(True) 
  • branches/libffado-2.0/support/mixer-qt4/mixer_saffirepro_large.ui

    r1369 r1370  
    22422242           <widget class="QTabWidget" name="tabWidget14" > 
    22432243            <property name="currentIndex" > 
    2244              <number>4</number> 
     2244             <number>0</number> 
    22452245            </property> 
    22462246            <widget class="QWidget" name="tab" > 
  • branches/libffado-2.0/support/mixer-qt4/mixer_saffirepro_small.ui

    r1369 r1370  
    4444           <widget class="QTabWidget" name="tabWidget14" > 
    4545            <property name="currentIndex" > 
    46              <number>4</number> 
     46             <number>0</number> 
    4747            </property> 
    4848            <widget class="QWidget" name="tab" > 
  • branches/libffado-2.0/support/mixer-qt4/mixer_saffire_base.py

    r1369 r1370  
    131131            self.initCombo(ctrl) 
    132132 
    133     def polledUpdateVolumeLowRes(self, srcpath, ctrl): 
    134         vol = self.hw.getDiscrete(srcpath) 
     133    def polledUpdateVolumeLowRes(self, srcpath, ctrl, divider=1): 
     134        vol = self.hw.getDiscrete(srcpath) / divider 
    135135        #log.debug("polledUpdateVolumeLowRes: vol = %s" % vol) 
    136         #ctrl.setValue(255-vol) 
    137136        ctrl.setValue(vol) 
    138137 
  • branches/libffado-2.0/support/mixer-qt4/mixer_saffire_mono.ui

    r1298 r1370  
    7777                  </property> 
    7878                  <property name="maximum" > 
    79                    <number>255</number> 
    80                   </property> 
    81                   <property name="singleStep" > 
    82                    <number>2</number> 
     79                   <number>127</number> 
     80                  </property> 
     81                  <property name="singleStep" > 
     82                   <number>1</number> 
    8383                  </property> 
    8484                  <property name="pageStep" > 
     
    645645                  </property> 
    646646                  <property name="maximum" > 
    647                    <number>255</number> 
    648                   </property> 
    649                   <property name="singleStep" > 
    650                    <number>2</number> 
     647                   <number>127</number> 
     648                  </property> 
     649                  <property name="singleStep" > 
     650                   <number>1</number> 
    651651                  </property> 
    652652                  <property name="pageStep" > 
     
    12241224                  </property> 
    12251225                  <property name="maximum" > 
    1226                    <number>255</number> 
    1227                   </property> 
    1228                   <property name="singleStep" > 
    1229                    <number>2</number> 
     1226                   <number>127</number> 
     1227                  </property> 
     1228                  <property name="singleStep" > 
     1229                   <number>1</number> 
    12301230                  </property> 
    12311231                  <property name="pageStep" > 
     
    17791779                  </property> 
    17801780                  <property name="maximum" > 
    1781                    <number>255</number> 
    1782                   </property> 
    1783                   <property name="singleStep" > 
    1784                    <number>2</number> 
     1781                   <number>127</number> 
     1782                  </property> 
     1783                  <property name="singleStep" > 
     1784                   <number>1</number> 
    17851785                  </property> 
    17861786                  <property name="pageStep" > 
  • branches/libffado-2.0/support/mixer-qt4/mixer_saffire_stereo.ui

    r1298 r1370  
    4141     <item> 
    4242      <widget class="QTabWidget" name="tabWidget4" > 
     43       <property name="currentIndex" > 
     44        <number>0</number> 
     45       </property> 
    4346       <widget class="QWidget" name="tab" > 
    4447        <attribute name="title" > 
     
    7477                  </property> 
    7578                  <property name="maximum" > 
    76                    <number>255</number> 
    77                   </property> 
    78                   <property name="singleStep" > 
    79                    <number>2</number> 
     79                   <number>127</number> 
     80                  </property> 
     81                  <property name="singleStep" > 
     82                   <number>1</number> 
    8083                  </property> 
    8184                  <property name="pageStep" > 
     
    525528                  </property> 
    526529                  <property name="maximum" > 
    527                    <number>255</number> 
    528                   </property> 
    529                   <property name="singleStep" > 
    530                    <number>2</number> 
     530                   <number>127</number> 
     531                  </property> 
     532                  <property name="singleStep" > 
     533                   <number>1</number> 
    531534                  </property> 
    532535                  <property name="pageStep" > 
     
    987990                  </property> 
    988991                  <property name="maximum" > 
    989                    <number>255</number> 
    990                   </property> 
    991                   <property name="singleStep" > 
    992                    <number>2</number> 
     992                   <number>127</number> 
     993                  </property> 
     994                  <property name="singleStep" > 
     995                   <number>1</number> 
    993996                  </property> 
    994997                  <property name="pageStep" > 
     
    14251428                  </property> 
    14261429                  <property name="maximum" > 
    1427                    <number>255</number> 
    1428                   </property> 
    1429                   <property name="singleStep" > 
    1430                    <number>2</number> 
     1430                   <number>127</number> 
     1431                  </property> 
     1432                  <property name="singleStep" > 
     1433                   <number>1</number> 
    14311434                  </property> 
    14321435                  <property name="pageStep" > 
     
    23112314 <layoutdefault spacing="6" margin="11" /> 
    23122315 <pixmapfunction>qPixmapFromMimeSource</pixmapfunction> 
    2313  <customwidgets> 
    2314  </customwidgets> 
    23152316 <resources/> 
    23162317 <connections/>