root/trunk/libffado/support/mixer/mixer_saffirepro.py

Revision 661, 16.0 kB (checked in by ppalmers, 15 years ago)

- Implement more complete mixer support for the saffire pro
- fix some cleanup issues with control elements

Line 
1 # -*- coding: utf-8 -*-
2
3 # (C) 2007 Pieter Palmers
4
5 from qt import *
6 from mixer_saffireproui import *
7
8 class SaffireProMixer(SaffireProMixerUI):
9     def __init__(self,parent = None,name = None,modal = 0,fl = 0):
10         SaffireProMixerUI.__init__(self,parent,name,modal,fl)
11
12     def setIMixAnalog1L(self,a0):
13         self.setMixerValue('IMixAnalog1L', a0)
14     def setIMixAnalog1R(self,a0):
15         self.setMixerValue('IMixAnalog1R', a0)
16
17     def setIMixAnalog2L(self,a0):
18         self.setMixerValue('IMixAnalog2L', a0)
19     def setIMixAnalog2R(self,a0):
20         self.setMixerValue('IMixAnalog2R', a0)
21
22     def setIMixAnalog3L(self,a0):
23         self.setMixerValue('IMixAnalog3L', a0)
24     def setIMixAnalog3R(self,a0):
25         self.setMixerValue('IMixAnalog3R', a0)
26
27     def setIMixAnalog4L(self,a0):
28         self.setMixerValue('IMixAnalog4L', a0)
29     def setIMixAnalog4R(self,a0):
30         self.setMixerValue('IMixAnalog4R', a0)
31
32     def setIMixAnalog5L(self,a0):
33         self.setMixerValue('IMixAnalog5L', a0)
34     def setIMixAnalog5R(self,a0):
35         self.setMixerValue('IMixAnalog5R', a0)
36
37     def setIMixAnalog6L(self,a0):
38         self.setMixerValue('IMixAnalog6L', a0)
39     def setIMixAnalog6R(self,a0):
40         self.setMixerValue('IMixAnalog6R', a0)
41
42     def setIMixAnalog7L(self,a0):
43         self.setMixerValue('IMixAnalog7L', a0)
44     def setIMixAnalog7R(self,a0):
45         self.setMixerValue('IMixAnalog7R', a0)
46
47     def setIMixAnalog8L(self,a0):
48         self.setMixerValue('IMixAnalog8L', a0)
49     def setIMixAnalog8R(self,a0):
50         self.setMixerValue('IMixAnalog8R', a0)
51
52     def setIMixAnalog9L(self,a0):
53         self.setMixerValue('IMixAnalog9L', a0)
54     def setIMixAnalog9R(self,a0):
55         self.setMixerValue('IMixAnalog9R', a0)
56
57     def setIMixAnalog10L(self,a0):
58         self.setMixerValue('IMixAnalog10L', a0)
59     def setIMixAnalog10R(self,a0):
60         self.setMixerValue('IMixAnalog10R', a0)
61
62     def setIMixADAT11L(self,a0):
63         self.setMixerValue('IMixADAT11L', a0)
64     def setIMixADAT11R(self,a0):
65         self.setMixerValue('IMixADAT11R', a0)
66
67     def setIMixADAT12L(self,a0):
68         self.setMixerValue('IMixADAT12L', a0)
69     def setIMixADAT12R(self,a0):
70         self.setMixerValue('IMixADAT12R', a0)
71
72     def setIMixADAT13L(self,a0):
73         self.setMixerValue('IMixADAT13L', a0)
74     def setIMixADAT13R(self,a0):
75         self.setMixerValue('IMixADAT13R', a0)
76
77     def setIMixADAT14L(self,a0):
78         self.setMixerValue('IMixADAT14L', a0)
79     def setIMixADAT14R(self,a0):
80         self.setMixerValue('IMixADAT14R', a0)
81
82     def setIMixADAT15L(self,a0):
83         self.setMixerValue('IMixADAT15L', a0)
84     def setIMixADAT15R(self,a0):
85         self.setMixerValue('IMixADAT15R', a0)
86
87     def setIMixADAT16L(self,a0):
88         self.setMixerValue('IMixADAT16L', a0)
89     def setIMixADAT16R(self,a0):
90         self.setMixerValue('IMixADAT16R', a0)
91
92     def setIMixADAT17L(self,a0):
93         self.setMixerValue('IMixADAT17L', a0)
94     def setIMixADAT17R(self,a0):
95         self.setMixerValue('IMixADAT17R', a0)
96
97     def setIMixADAT18L(self,a0):
98         self.setMixerValue('IMixADAT18L', a0)
99     def setIMixADAT18R(self,a0):
100         self.setMixerValue('IMixADAT18R', a0)
101
102     def setIMixADAT19L(self,a0):
103         self.setMixerValue('IMixADAT19L', a0)
104     def setIMixADAT19R(self,a0):
105         self.setMixerValue('IMixADAT19R', a0)
106
107     def setIMixADAT110L(self,a0):
108         self.setMixerValue('IMixADAT110L', a0)
109     def setIMixADAT110R(self,a0):
110         self.setMixerValue('IMixADAT110R', a0)
111
112     def setIMixADAT21L(self,a0):
113         self.setMixerValue('IMixADAT21L', a0)
114     def setIMixADAT21R(self,a0):
115         self.setMixerValue('IMixADAT21R', a0)
116
117     def setIMixADAT22L(self,a0):
118         self.setMixerValue('IMixADAT22L', a0)
119     def setIMixADAT22R(self,a0):
120         self.setMixerValue('IMixADAT22R', a0)
121
122     def setIMixADAT23L(self,a0):
123         self.setMixerValue('IMixADAT23L', a0)
124     def setIMixADAT23R(self,a0):
125         self.setMixerValue('IMixADAT23R', a0)
126
127     def setIMixADAT24L(self,a0):
128         self.setMixerValue('IMixADAT24L', a0)
129     def setIMixADAT24R(self,a0):
130         self.setMixerValue('IMixADAT24R', a0)
131
132     def setIMixADAT25L(self,a0):
133         self.setMixerValue('IMixADAT25L', a0)
134     def setIMixADAT25R(self,a0):
135         self.setMixerValue('IMixADAT25R', a0)
136
137     def setIMixADAT26L(self,a0):
138         self.setMixerValue('IMixADAT26L', a0)
139     def setIMixADAT26R(self,a0):
140         self.setMixerValue('IMixADAT26R', a0)
141
142     def setIMixADAT27L(self,a0):
143         self.setMixerValue('IMixADAT27L', a0)
144     def setIMixADAT27R(self,a0):
145         self.setMixerValue('IMixADAT27R', a0)
146
147     def setIMixADAT28L(self,a0):
148         self.setMixerValue('IMixADAT28L', a0)
149     def setIMixADAT28R(self,a0):
150         self.setMixerValue('IMixADAT28R', a0)
151
152     def setIMixADAT29L(self,a0):
153         self.setMixerValue('IMixADAT29L', a0)
154     def setIMixADAT29R(self,a0):
155         self.setMixerValue('IMixADAT29R', a0)
156
157     def setIMixADAT210L(self,a0):
158         self.setMixerValue('IMixADAT210L', a0)
159     def setIMixADAT210R(self,a0):
160         self.setMixerValue('IMixADAT210R', a0)
161
162     def setOMixPC1O1(self,a0):
163         self.setMixerValue('OMixPC1O1', a0)
164     def setOMixPC2O2(self,a0):
165         self.setMixerValue('OMixPC2O2', a0)
166     def setOMixPC3O3(self,a0):
167         self.setMixerValue('OMixPC3O3', a0)
168     def setOMixPC4O4(self,a0):
169         self.setMixerValue('OMixPC4O4', a0)
170     def setOMixPC5O5(self,a0):
171         self.setMixerValue('OMixPC5O5', a0)
172     def setOMixPC6O6(self,a0):
173         self.setMixerValue('OMixPC6O6', a0)
174     def setOMixPC7O7(self,a0):
175         self.setMixerValue('OMixPC7O7', a0)
176     def setOMixPC8O8(self,a0):
177         self.setMixerValue('OMixPC8O8', a0)
178     def setOMixPC9O9(self,a0):
179         self.setMixerValue('OMixPC9O9', a0)
180     def setOMixPC10O10(self,a0):
181         self.setMixerValue('OMixPC10O10', a0)
182
183     def setOMixPC1O3(self,a0):
184         self.setMixerValue('OMixPC1O3', a0)
185     def setOMixPC2O4(self,a0):
186         self.setMixerValue('OMixPC2O4', a0)
187     def setOMixPC1O5(self,a0):
188         self.setMixerValue('OMixPC1O5', a0)
189     def setOMixPC2O6(self,a0):
190         self.setMixerValue('OMixPC2O6', a0)
191     def setOMixPC1O7(self,a0):
192         self.setMixerValue('OMixPC1O7', a0)
193     def setOMixPC2O8(self,a0):
194         self.setMixerValue('OMixPC2O8', a0)
195     def setOMixPC1O9(self,a0):
196         self.setMixerValue('OMixPC1O9', a0)
197     def setOMixPC2O10(self,a0):
198         self.setMixerValue('OMixPC2O10', a0)
199
200
201     def setOMixIMixO1(self,a0):
202         self.setMixerValue('OMixIMixO1', a0)
203     def setOMixIMixO2(self,a0):
204         self.setMixerValue('OMixIMixO2', a0)
205     def setOMixIMixO3(self,a0):
206         self.setMixerValue('OMixIMixO3', a0)
207     def setOMixIMixO4(self,a0):
208         self.setMixerValue('OMixIMixO4', a0)
209     def setOMixIMixO5(self,a0):
210         self.setMixerValue('OMixIMixO5', a0)
211     def setOMixIMixO6(self,a0):
212         self.setMixerValue('OMixIMixO6', a0)
213     def setOMixIMixO7(self,a0):
214         self.setMixerValue('OMixIMixO7', a0)
215     def setOMixIMixO8(self,a0):
216         self.setMixerValue('OMixIMixO8', a0)
217     def setOMixIMixO9(self,a0):
218         self.setMixerValue('OMixIMixO9', a0)
219     def setOMixIMixO10(self,a0):
220         self.setMixerValue('OMixIMixO10', a0)
221
222     def setPhantom14(self,a0):
223         self.setSelector('phantom14', a0)
224
225     def setPhantom58(self,a0):
226         self.setSelector('phantom58', a0)
227
228     def setInsert1(self,a0):
229         self.setSelector('insert1', a0)
230
231     def setInsert2(self,a0):
232         self.setSelector('insert2', a0)
233
234     def setAC3(self,a0):
235         self.setSelector('ac3pass', a0)
236
237     def setMidiThru(self,a0):
238         self.setSelector('midithru', a0)
239
240
241     def setMixerValue(self,a0,a1):
242             name=a0
243             vol = 0x7FFF-a1
244             print "setting %s volume to %d" % (name, vol)
245             self.hw.setMatrixMixerValue(self.VolumeControls[name][0],
246                                         self.VolumeControls[name][1],
247                                         self.VolumeControls[name][2],
248                                         vol)
249
250     def setSelector(self,a0,a1):
251             name=a0
252             if a1:
253                 state = 1
254             else:
255                 state = 0
256             print "setting %s state to %d" % (name, state)
257             self.hw.setDiscrete(self.SelectorControls[name][0], state)
258
259     def init(self):
260             print "Init Saffire Pro mixer window"
261
262             self.VolumeControls={
263                 'IMixAnalog1L':    ['/Mixer/InputMix', 0, 0, self.sldIMixAnalog1L],
264                 'IMixAnalog1R':    ['/Mixer/InputMix', 0, 1, self.sldIMixAnalog1R],
265                 'IMixAnalog2L':    ['/Mixer/InputMix', 1, 0, self.sldIMixAnalog2L],
266                 'IMixAnalog2R':    ['/Mixer/InputMix', 1, 1, self.sldIMixAnalog2R],
267                 'IMixAnalog3L':    ['/Mixer/InputMix', 2, 0, self.sldIMixAnalog3L],
268                 'IMixAnalog3R':    ['/Mixer/InputMix', 2, 1, self.sldIMixAnalog3R],
269                 'IMixAnalog4L':    ['/Mixer/InputMix', 3, 0, self.sldIMixAnalog4L],
270                 'IMixAnalog4R':    ['/Mixer/InputMix', 3, 1, self.sldIMixAnalog4R],
271                 'IMixAnalog5L':    ['/Mixer/InputMix', 4, 0, self.sldIMixAnalog5L],
272                 'IMixAnalog5R':    ['/Mixer/InputMix', 4, 1, self.sldIMixAnalog5R],
273                 'IMixAnalog6L':    ['/Mixer/InputMix', 5, 0, self.sldIMixAnalog6L],
274                 'IMixAnalog6R':    ['/Mixer/InputMix', 5, 1, self.sldIMixAnalog6R],
275                 'IMixAnalog7L':    ['/Mixer/InputMix', 6, 0, self.sldIMixAnalog7L],
276                 'IMixAnalog7R':    ['/Mixer/InputMix', 6, 1, self.sldIMixAnalog7R],
277                 'IMixAnalog8L':    ['/Mixer/InputMix', 7, 0, self.sldIMixAnalog8L],
278                 'IMixAnalog8R':    ['/Mixer/InputMix', 7, 1, self.sldIMixAnalog8R],
279                 'IMixAnalog9L':    ['/Mixer/InputMix', 8, 0, self.sldIMixAnalog9L],
280                 'IMixAnalog9R':    ['/Mixer/InputMix', 8, 1, self.sldIMixAnalog9R],
281                 'IMixAnalog10L':   ['/Mixer/InputMix', 9, 0, self.sldIMixAnalog10L],
282                 'IMixAnalog10R':   ['/Mixer/InputMix', 9, 1, self.sldIMixAnalog10R],
283                 'IMixADAT11L':    ['/Mixer/InputMix', 10, 0, self.sldIMixADAT11L],
284                 'IMixADAT11R':    ['/Mixer/InputMix', 10, 1, self.sldIMixADAT11R],
285                 'IMixADAT12L':    ['/Mixer/InputMix', 11, 0, self.sldIMixADAT12L],
286                 'IMixADAT12R':    ['/Mixer/InputMix', 11, 1, self.sldIMixADAT12R],
287                 'IMixADAT13L':    ['/Mixer/InputMix', 12, 0, self.sldIMixADAT13L],
288                 'IMixADAT13R':    ['/Mixer/InputMix', 12, 1, self.sldIMixADAT13R],
289                 'IMixADAT14L':    ['/Mixer/InputMix', 13, 0, self.sldIMixADAT14L],
290                 'IMixADAT14R':    ['/Mixer/InputMix', 13, 1, self.sldIMixADAT14R],
291                 'IMixADAT15L':    ['/Mixer/InputMix', 14, 0, self.sldIMixADAT15L],
292                 'IMixADAT15R':    ['/Mixer/InputMix', 14, 1, self.sldIMixADAT15R],
293                 'IMixADAT16L':    ['/Mixer/InputMix', 15, 0, self.sldIMixADAT16L],
294                 'IMixADAT16R':    ['/Mixer/InputMix', 15, 1, self.sldIMixADAT16R],
295                 'IMixADAT17L':    ['/Mixer/InputMix', 16, 0, self.sldIMixADAT17L],
296                 'IMixADAT17R':    ['/Mixer/InputMix', 16, 1, self.sldIMixADAT17R],
297                 'IMixADAT18L':    ['/Mixer/InputMix', 17, 0, self.sldIMixADAT18L],
298                 'IMixADAT18R':    ['/Mixer/InputMix', 17, 1, self.sldIMixADAT18R],
299                 'IMixADAT21L':    ['/Mixer/InputMix', 18, 0, self.sldIMixADAT21L],
300                 'IMixADAT21R':    ['/Mixer/InputMix', 18, 1, self.sldIMixADAT21R],
301                 'IMixADAT22L':    ['/Mixer/InputMix', 19, 0, self.sldIMixADAT22L],
302                 'IMixADAT22R':    ['/Mixer/InputMix', 19, 1, self.sldIMixADAT22R],
303                 'IMixADAT23L':    ['/Mixer/InputMix', 20, 0, self.sldIMixADAT23L],
304                 'IMixADAT23R':    ['/Mixer/InputMix', 20, 1, self.sldIMixADAT23R],
305                 'IMixADAT24L':    ['/Mixer/InputMix', 21, 0, self.sldIMixADAT24L],
306                 'IMixADAT24R':    ['/Mixer/InputMix', 21, 1, self.sldIMixADAT24R],
307                 'IMixADAT25L':    ['/Mixer/InputMix', 22, 0, self.sldIMixADAT25L],
308                 'IMixADAT25R':    ['/Mixer/InputMix', 22, 1, self.sldIMixADAT25R],
309                 'IMixADAT26L':    ['/Mixer/InputMix', 23, 0, self.sldIMixADAT26L],
310                 'IMixADAT26R':    ['/Mixer/InputMix', 23, 1, self.sldIMixADAT26R],
311                 'IMixADAT27L':    ['/Mixer/InputMix', 24, 0, self.sldIMixADAT27L],
312                 'IMixADAT27R':    ['/Mixer/InputMix', 24, 1, self.sldIMixADAT27R],
313                 'IMixADAT28L':    ['/Mixer/InputMix', 25, 0, self.sldIMixADAT28L],
314                 'IMixADAT28R':    ['/Mixer/InputMix', 25, 1, self.sldIMixADAT28R],
315
316                 'OMixPC1O1':      ['/Mixer/OutputMix', 0, 0, self.sldOMixPC1O1],
317                 'OMixPC2O2':      ['/Mixer/OutputMix', 1, 1, self.sldOMixPC2O2],
318                 'OMixPC3O3':      ['/Mixer/OutputMix', 2, 2, self.sldOMixPC3O3],
319                 'OMixPC4O4':      ['/Mixer/OutputMix', 3, 3, self.sldOMixPC4O4],
320                 'OMixPC5O5':      ['/Mixer/OutputMix', 4, 4, self.sldOMixPC5O5],
321                 'OMixPC6O6':      ['/Mixer/OutputMix', 5, 5, self.sldOMixPC6O6],
322                 'OMixPC7O7':      ['/Mixer/OutputMix', 6, 6, self.sldOMixPC7O7],
323                 'OMixPC8O8':      ['/Mixer/OutputMix', 7, 7, self.sldOMixPC8O8],
324                 'OMixPC9O9':      ['/Mixer/OutputMix', 8, 8, self.sldOMixPC9O9],
325                 'OMixPC10O10':    ['/Mixer/OutputMix', 9, 9, self.sldOMixPC10O10],
326
327                 'OMixPC1O3':      ['/Mixer/OutputMix', 0, 2, self.sldOMixPC1O3],
328                 'OMixPC2O4':      ['/Mixer/OutputMix', 1, 3, self.sldOMixPC2O4],
329                 'OMixPC1O5':      ['/Mixer/OutputMix', 0, 4, self.sldOMixPC1O5],
330                 'OMixPC2O6':      ['/Mixer/OutputMix', 1, 5, self.sldOMixPC2O6],
331                 'OMixPC1O7':      ['/Mixer/OutputMix', 0, 6, self.sldOMixPC1O7],
332                 'OMixPC2O8':      ['/Mixer/OutputMix', 1, 7, self.sldOMixPC2O8],
333                 'OMixPC1O9':      ['/Mixer/OutputMix', 0, 8, self.sldOMixPC1O9],
334                 'OMixPC2O10':      ['/Mixer/OutputMix', 1, 9, self.sldOMixPC2O10],
335
336                 'OMixIMixO1':     ['/Mixer/OutputMix', 10, 0, self.sldOMixIMixO1],
337                 'OMixIMixO2':     ['/Mixer/OutputMix', 11, 1, self.sldOMixIMixO2],
338                 'OMixIMixO3':     ['/Mixer/OutputMix', 10, 2, self.sldOMixIMixO3],
339                 'OMixIMixO4':     ['/Mixer/OutputMix', 11, 3, self.sldOMixIMixO4],
340                 'OMixIMixO5':     ['/Mixer/OutputMix', 10, 4, self.sldOMixIMixO5],
341                 'OMixIMixO6':     ['/Mixer/OutputMix', 11, 5, self.sldOMixIMixO6],
342                 'OMixIMixO7':     ['/Mixer/OutputMix', 10, 6, self.sldOMixIMixO7],
343                 'OMixIMixO8':     ['/Mixer/OutputMix', 11, 7, self.sldOMixIMixO8],
344                 'OMixIMixO9':     ['/Mixer/OutputMix', 10, 8, self.sldOMixIMixO9],
345                 'OMixIMixO10':    ['/Mixer/OutputMix', 11, 9, self.sldOMixIMixO10],
346                 }
347
348
349             self.SelectorControls={
350                 'insert1':    ['/Mixer/Insert1', self.chkInsert1],
351                 'insert2':    ['/Mixer/Insert2', self.chkInsert2],
352                 'phantom14':  ['/Mixer/Phantom_1to4', self.chkPhantom14],
353                 'phantom58':  ['/Mixer/Phantom_5to8', self.chkPhantom58],
354                 'ac3pass':    ['/Mixer/AC3pass', self.chkAC3],
355                 'midithru':   ['/Mixer/MidiTru', self.chkMidiThru],
356             }
357
358     def initValues(self):
359             for name, ctrl in self.VolumeControls.iteritems():
360                 vol = self.hw.getMatrixMixerValue(self.VolumeControls[name][0],
361                                                   self.VolumeControls[name][1],
362                                                   self.VolumeControls[name][2])
363
364                 print "%s volume is %d" % (name , 0x7FFF-vol)
365                 ctrl[3].setValue(0x7FFF-vol)
366
367             for name, ctrl in self.SelectorControls.iteritems():
368                 state = self.hw.getDiscrete(ctrl[0])
369                 print "%s state is %d" % (name , state)
370                 if state:
371                     ctrl[1].setChecked(True)
372                 else:
373                     ctrl[1].setChecked(False)
Note: See TracBrowser for help on using the browser.