I'll put it in a tar.gz with a How-To and get that uploaded today!
Thanks Duncan!!!
Michael
Duncan Webb <[EMAIL PROTECTED]> wrote: Michael Beal wrote:
> Since I'm now reasonably sure the remote control key mappings didn't
> adversely affect the GUI as a whole, I'm happy to send up the first
> generation of sixmixer.py. (To be renamed later.)
I'll be more than happy to add this to the repository, you just have to
upload it as a feature request on the sourceforge tracker. Click the
link and you're there:
http://sourceforge.net/tracker/?func=add&group_id=46652&atid=446898
Duncan
>
> Four additional configuration variables need to be added to local_conf.py:
>
> DEFAULT_PCM_VOL
> DEAFULT_SUR_VOL
> DEFAULT_CTR_VOL
> DEFAULT_LFE_VOL
>
> I recommend these be set flat first and adjusted to suit your preferences.
Sensible defaults for these settings should be in the
local_conf.py.example, so would you add a patch from this, very easy
from svn: "svn diff local_conf.py.example > sixmixer-conf.patch"
Will you also remove the tabs from the source as we use spaces in
freevo. Shows up like this:
self.lfeVolume = 0
self.NoAdjust = 0
self.setMainVolume(config.MAX_VOLUME)
Cheers,
Duncan
>
> ------------------------------------------------------------------------
> It's here! Your new message!
> Get new email alerts
>
> with the free Yahoo! Toolbar. <
> http://us.rd.yahoo.com/evt=49938/*http://tools.search.yahoo.com/toolbar/features/mail/>
>
>
>
> ------------------------------------------------------------------------
>
> # -*- coding: iso-8859-1 -*-
> # -----------------------------------------------------------------------
> # sixmixer.py - A 6-channel volume control interface for freevo.
> # -----------------------------------------------------------------------
> # $Id: sixmixer.py 2007-01-14 01:15:00Z mlbeal $
> #
> # Description:
> # Six-channel audio control for the Freevo Media Center Environment
> #
> # This program, as a drop in replacement for the original Freevo mixer,
> # provides complete control of all six audio channels, more correctly;
> # 4 zones of 2 channels each except for the Center and Bass channels
> # which are controlled independently.
> #
> # Notes:
> # By default, sixmixer controls all audio system wide via the ALSA mixer
> # program: amixer. I chose amixer due to it's wide ranging use within
> # the Linux community. Practically ALL modern Linux distros have some
> # method of handling ALSA device access either through OSS => ALSA
> # wrappers or the ALSA system itself.
> #
> # Todo:
> #
> # -----------------------------------------------------------------------
> # Freevo - A Home Theater PC framework
> # Copyright (C) 2002 Krister Lagerstrom, et al.
> # Please see the file freevo/Docs/CREDITS for a complete list of authors.
> #
> # This program is free software; you can redistribute it and/or modify
> # it under the terms of the GNU General Public License as published by
> # the Free Software Foundation; either version 2 of the License, or
> # (at your option) any later version.
> #
> # This program is distributed in the hope that it will be useful, but
> # WITHOUT ANY WARRANTY; without even the implied warranty of MER-
> # CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
> # Public License for more details.
> #
> # You should have received a copy of the GNU General Public License along
> # with this program; if not, write to the Free Software Foundation, Inc.,
> # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> #
> # -----------------------------------------------------------------------
>
>
> """For manipulating the mixer.
> """
>
> import os
>
> import config
> import rc
> import plugin
> from event import *
>
>
> class PluginInterface(plugin.DaemonPlugin):
>
> def __init__(self):
> self.muted = 0
>
> # init here
> plugin.DaemonPlugin.__init__(self)
> self.plugin_name = 'MIXER'
>
> self.mainVolume = 0
> self.pcmVolume = 0
> self.surVolume = 0
> self.ctrVolume = 0
> self.lfeVolume = 0
> self.NoAdjust = 0
>
> self.setMainVolume(config.MAX_VOLUME)
> self.setPcmVolume(config.DEFAULT_PCM_VOLUME)
> self.setSurVolume(config.DEFAULT_SUR_VOLUME)
> self.setCtrVolume(config.DEFAULT_CTR_VOLUME)
> self.setLfeVolume(config.DEFAULT_LFE_VOLUME)
>
>
> def eventhandler(self, event = None, menuw=None, arg=None):
> """
> eventhandler to handle the VOL events
> """
> if event == MIXER_VOLUP:
> if self.NoAdjust >= 0:
> self.incPcmVolume(event.arg)
> self.incSurVolume(event.arg)
> self.incCtrVolume(event.arg)
> self.incLfeVolume(event.arg)
> if self.NoAdjust > 0:
> self.NoAdjust = 0
> rc.post_event(Event(OSD_MESSAGE, arg=_('Volume: %s%%') %
> self.getPcmVolume()))
> return True
>
> elif event == MIXER_VOLDOWN:
> if self.NoAdjust <= 0:
> self.decPcmVolume(event.arg)
> self.decSurVolume(event.arg)
> self.decCtrVolume(event.arg)
> self.decLfeVolume(event.arg)
> if self.NoAdjust < 0:
> self.NoAdjust = 0
> rc.post_event(Event(OSD_MESSAGE, arg=_('Volume: %s%%') %
> self.getPcmVolume()))
> return True
>
> elif event == SUR_VOLUP:
> self.incSurVolume(event.arg)
> rc.post_event(Event(OSD_MESSAGE, arg=_('Surround: %s%%') %
> self.getSurVolume()))
> return True
>
> elif event == SUR_VOLDOWN:
> self.decSurVolume(event.arg)
> rc.post_event(Event(OSD_MESSAGE, arg=_('Surround: %s%%') %
> self.getSurVolume()))
> return True
>
> elif event == CTR_VOLUP:
> self.incCtrVolume(event.arg)
> rc.post_event(Event(OSD_MESSAGE, arg=_('Center: %s%%') %
> self.getCtrVolume()))
> return True
>
> elif event == CTR_VOLDOWN:
> self.decCtrVolume(event.arg)
> rc.post_event(Event(OSD_MESSAGE, arg=_('Center: %s%%') %
> self.getCtrVolume()))
> return True
>
> elif event == LFE_VOLUP:
> self.incLfeVolume(event.arg)
> rc.post_event(Event(OSD_MESSAGE, arg=_('LFE: %s%%') %
> self.getLfeVolume()))
> return True
>
> elif event == LFE_VOLDOWN:
> self.decLfeVolume(event.arg)
> rc.post_event(Event(OSD_MESSAGE, arg=_('LFE: %s%%') %
> self.getLfeVolume()))
> return True
>
> elif event == MIXER_MUTE:
> if self.getMuted() == 1:
> rc.post_event(Event(OSD_MESSAGE, arg=_('Volume: %s%%') %
> self.getVolume()))
> self.setMuted(0)
> else:
> rc.post_event(Event(OSD_MESSAGE, arg=_('Mute')))
> self.setMuted(1)
> return True
>
> return False
>
>
>
> def _setVolume(self, ctrl_name, volume, mute):
> if volume < 0:
> volume = 0
> if volume > 100:
> volume = 100
> vol = str(volume)+"%"
> os.system('amixer -q -c 0 sset %s %s %s' % (ctrl_name, vol, mute))
>
> def getMuted(self):
> return(self.muted)
>
> def setMuted(self, mute):
> self.muted = mute
> if mute == 1:
> self._setVolume('PCM', 0, 'mute')
> self._setVolume('Surround', 0, 'mute')
> self._setVolume('Center', 0, 'mute')
> self._setVolume('LFE', 0, 'mute')
> else:
> self._setVolume('PCM', self.pcmVolume, 'unmute')
> self._setVolume('Surround', self.surVolume, 'unmute')
> self._setVolume('Center', self.ctrVolume, 'unmute')
> self._setVolume('LFE', self.lfeVolume, 'unmute')
>
> def getVolume(self):
> return self.pcmVolume
>
> def getMainVolume(self):
> return(self.mainVolume)
>
> def setMainVolume(self, volume):
> self.mainVolume = volume
> self._setVolume('Master', self.mainVolume, 'unmute')
>
> def incMainVolume(self, step=5):
> self.mainVolume += step
> if self.mainVolume >= 100:
> self.mainVolume = 100
> self.NoAdjust = -1
> self._setVolume('Master', self.mainVolume, 'unmute')
>
> def decMainVolume(self, step=5):
> self.mainVolume -= step
> if self.mainVolume <= 0:
> self.mainVolume = 0
> self.NoAdjust = 1
> self._setVolume('Master', self.mainVolume, 'unmute')
>
> def getPcmVolume(self):
> return self.pcmVolume
>
> def setPcmVolume(self, volume):
> self.pcmVolume = volume
> self._setVolume('PCM', self.pcmVolume, 'unmute')
>
> def incPcmVolume(self, step=5):
> self.pcmVolume += step
> if self.pcmVolume >= 100:
> self.pcmVolume = 100
> self.NoAdjust = -1
> self._setVolume('PCM', self.pcmVolume, 'unmute')
>
> def decPcmVolume(self, step=5):
> self.pcmVolume -= step
> if self.pcmVolume <= 0:
> self.pcmVolume = 0
> self.NoAdjust = 1
> self._setVolume('PCM', self.pcmVolume, 'unmute')
>
> def getSurVolume(self):
> return self.surVolume
>
> def setSurVolume(self, volume):
> self.surVolume = volume
> self._setVolume('Surround', self.surVolume, 'unmute')
>
> def incSurVolume(self, step=5):
> self.surVolume += step
> if self.surVolume >= 100:
> self.surVolume = 100
> self.NoAdjust = -1
> self._setVolume('Surround', self.surVolume, 'unmute')
>
> def decSurVolume(self, step=5):
> self.surVolume -= step
> if self.surVolume <= 0:
> self.surVolume = 0
> self.NoAdjust = 1
> self._setVolume('Surround', self.surVolume, 'unmute')
>
> def getLfeVolume(self):
> return self.lfeVolume
>
> def setLfeVolume(self, volume):
> self.lfeVolume = volume
> self._setVolume('LFE', self.lfeVolume, 'unmute')
>
> def incLfeVolume(self, step=5):
> self.lfeVolume += step
> if self.lfeVolume >= 100:
> self.lfeVolume = 100
> self.NoAdjust = -1
> self._setVolume('LFE', self.lfeVolume, 'unmute')
>
> def decLfeVolume(self, step=5):
> self.lfeVolume -= step
> if self.lfeVolume <= 0:
> self.lfeVolume = 0
> self.NoAdjust = 1
> self._setVolume('LFE', self.lfeVolume, 'unmute')
>
> def getCtrVolume(self):
> return self.ctrVolume
>
> def setCtrVolume(self, volume):
> self.ctrVolume = volume
> self._setVolume('Center', self.ctrVolume, 'unmute')
>
> def incCtrVolume(self, step=5):
> self.ctrVolume += step
> if self.ctrVolume >= 100:
> self.ctrVolume = 100
> self.NoAdjust = -1
> self._setVolume('Center', self.ctrVolume, 'unmute')
>
> def decCtrVolume(self, step=5):
> self.ctrVolume -= step
> if self.ctrVolume <= 0:
> self.ctrVolume = 0
> self.NoAdjust = 1
> self._setVolume('Center', self.ctrVolume, 'unmute')
>
> def reset(self):
> self.setMainVolume(config.MAX_VOLUME)
> self.setPcmVolume(config.DEFAULT_PCM_VOLUME)
> self.setSurVolume(config.DEFAULT_SUR_VOLUME)
> self.setCtrVolume(config.DEFAULT_CTR_VOLUME)
> self.setLfeVolume(config.DEFAULT_LFE_VOLUME)
>
>
> ------------------------------------------------------------------------
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys - and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Freevo-devel mailing list
> Freevo-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/freevo-devel
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Freevo-devel mailing list
Freevo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freevo-devel
---------------------------------
Cheap Talk? Check out Yahoo! Messenger's low PC-to-Phone call rates.
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Freevo-devel mailing list
Freevo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freevo-devel