Author: duncan
Date: Mon Aug 6 11:43:18 2007
New Revision: 9804
Log:
[ 1767928 ] add event args and synchronous mixer control alsamixer.py
Patch from Jonathan Isom applied
Modified:
branches/rel-1/freevo/src/plugins/alsamixer.py
Modified: branches/rel-1/freevo/src/plugins/alsamixer.py
==============================================================================
--- branches/rel-1/freevo/src/plugins/alsamixer.py (original)
+++ branches/rel-1/freevo/src/plugins/alsamixer.py Mon Aug 6 11:43:18 2007
@@ -66,6 +66,7 @@
self.pcm_mixer = None
self.line_mixer = None
self.mic_mixer = None
+ self.sync_mixer = None
self.muted = 0
# If you're using ALSA or something and you don't set the mixer,
@@ -91,6 +92,12 @@
print 'Couldn\'t open mixer "%s"' % config.ALSA_MICMIXER_NAME
return
+ try:
+ self.sync_mixer = alsaaudio.Mixer(config.ALSA_SYNCMIXER_NAME, 0,
config.ALSA_CARDID)
+ except alsaaudio.ALSAAudioError:
+ print 'Couldn\'t open mixer "%s"' % config.ALSA_SYNCMIXER_NAME
+
+
# init here
plugin.DaemonPlugin.__init__(self)
self.plugin_name = 'MIXER'
@@ -131,6 +138,9 @@
('ALSA_PCMMIXER_NAME', 'PCM', 'Alsa PCM Mixer Name'),
('ALSA_LINEMIXER_NAME', 'Line', 'Alsa Line Mixer Name'),
('ALSA_MICMIXER_NAME', 'Mic', 'Alsa Mic Mixer Name'),
+ ('ALSA_SYNCMIXER_NAME', 'Master Surround', 'Alsa Sync Mixer Name'),
+ ('ALSA_SYNCMIXER', '0', 'Alsa Sync Mixer Name'),
+
]
@@ -141,20 +151,24 @@
# Handle volume control
if event == MIXER_VOLUP:
if config.MAJOR_AUDIO_CTRL == 'VOL':
- self.incMainVolume()
+ self.incMainVolume(event.arg)
rc.post_event(Event(OSD_MESSAGE, arg=_('Volume: %s%%') %
self.getVolume()))
elif config.MAJOR_AUDIO_CTRL == 'PCM':
- self.incPcmVolume()
+ self.incPcmVolume(event.arg)
rc.post_event(Event(OSD_MESSAGE, arg=_('Volume: %s%%') %
self.getVolume()))
+ if config.ALSA_SYNCMIXER == 1:
+ self.setSyncVolume(self.getVolume())
return True
elif event == MIXER_VOLDOWN:
if config.MAJOR_AUDIO_CTRL == 'VOL':
- self.decMainVolume()
+ self.decMainVolume(event.arg)
rc.post_event(Event(OSD_MESSAGE, arg=_('Volume: %s%%') %
self.getVolume()))
elif config.MAJOR_AUDIO_CTRL == 'PCM':
- self.decPcmVolume()
+ self.decPcmVolume(event.arg)
rc.post_event(Event(OSD_MESSAGE, arg=_('Volume: %s%%') %
self.getVolume()))
+ if config.ALSA_SYNCMIXER == 1:
+ self.setSyncVolume(self.getVolume())
return True
elif event == MIXER_MUTE:
@@ -209,14 +223,14 @@
self.mainVolume = volume
self._setVolume(self.main_mixer, self.mainVolume)
- def incMainVolume(self):
- self.mainVolume += 5
+ def incMainVolume(self,step=5):
+ self.mainVolume += step
if self.mainVolume > 100:
self.mainVolume = 100
self._setVolume(self.main_mixer, self.mainVolume)
- def decMainVolume(self):
- self.mainVolume -= 5
+ def decMainVolume(self,step=5):
+ self.mainVolume -= step
if self.mainVolume < 0:
self.mainVolume = 0
self._setVolume(self.main_mixer, self.mainVolume)
@@ -228,14 +242,17 @@
self.pcmVolume = volume
self._setVolume(self.pcm_mixer, volume)
- def incPcmVolume(self):
- self.pcmVolume += 5
+ def setSyncVolume(self, volume):
+ self._setVolume(self.sync_mixer, volume)
+
+ def incPcmVolume(self, step=5):
+ self.pcmVolume += step
if self.pcmVolume > 100:
self.pcmVolume = 100
self._setVolume(self.pcm_mixer, self.pcmVolume)
- def decPcmVolume(self):
- self.pcmVolume -= 5
+ def decPcmVolume(self, step=5):
+ self.pcmVolume -= step
if self.pcmVolume < 0:
self.pcmVolume = 0
self._setVolume(self.pcm_mixer, self.pcmVolume)
@@ -264,14 +281,14 @@
def getIgainVolume(self):
return self.igainVolume
- def decIgainVolume(self):
- self.igainVolume -= 5
+ def decIgainVolume(self, step=5):
+ self.igainVolume -= step
if self.igainVolume < 0:
self.igainVolume = 0
#self._setVolume(ossaudiodev.SOUND_MIXER_IGAIN, volume)
- def incIgainVolume(self):
- self.igainVolume += 5
+ def incIgainVolume(self, step=5):
+ self.igainVolume += step
if self.igainVolume > 100:
self.igainVolume = 100
#self._setVolume(ossaudiodev.SOUND_MIXER_IGAIN, volume)
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog