From 0980af25905a5c5a317100a667218e050a32b885 Mon Sep 17 00:00:00 2001 From: Simon de Bakker Date: Thu, 9 Jan 2014 18:47:26 +0100 Subject: [PATCH 1/4] Set initial mixer volume for all mixers --- mopidy/audio/actor.py | 10 ++++++++++ mopidy/config/__init__.py | 1 + mopidy/config/convert.py | 1 + mopidy/config/default.conf | 1 + 4 files changed, 13 insertions(+) diff --git a/mopidy/audio/actor.py b/mopidy/audio/actor.py index feeee820..5a023be8 100644 --- a/mopidy/audio/actor.py +++ b/mopidy/audio/actor.py @@ -184,6 +184,7 @@ class Audio(pykka.ThreadingActor): def _setup_mixer(self): mixer_desc = self._config['audio']['mixer'] track_desc = self._config['audio']['mixer_track'] + volume = self._config['audio']['mixer_volume'] if mixer_desc is None: logger.info('Not setting up audio mixer') @@ -192,6 +193,9 @@ class Audio(pykka.ThreadingActor): if mixer_desc == 'software': self._software_mixing = True logger.info('Audio mixer is using software mixing') + if volume is not None: + self.set_volume(volume) + logger.info('Audio mixer volume set to %d', volume) return try: @@ -223,11 +227,17 @@ class Audio(pykka.ThreadingActor): self._mixer_track = track self._mixer_scale = ( self._mixer_track.min_volume, self._mixer_track.max_volume) + logger.info( 'Audio mixer set to "%s" using track "%s"', str(mixer.get_factory().get_name()).decode('utf-8'), str(track.label).decode('utf-8')) + if volume is not None: + self.set_volume(volume) + logger.info('Audio mixer volume set to %d', volume) + + def _select_mixer_track(self, mixer, track_label): # Ignore tracks without volumes, then look for track with # label equal to the audio/mixer_track config value, otherwise fallback diff --git a/mopidy/config/__init__.py b/mopidy/config/__init__.py index d6400fad..2b740549 100644 --- a/mopidy/config/__init__.py +++ b/mopidy/config/__init__.py @@ -25,6 +25,7 @@ _loglevels_schema = LogLevelConfigSchema('loglevels') _audio_schema = ConfigSchema('audio') _audio_schema['mixer'] = String() _audio_schema['mixer_track'] = String(optional=True) +_audio_schema['mixer_volume'] = Integer(optional=True, minimum=0, maximum=100) _audio_schema['output'] = String() _audio_schema['visualizer'] = String(optional=True) diff --git a/mopidy/config/convert.py b/mopidy/config/convert.py index 7012b56e..a3ae5273 100644 --- a/mopidy/config/convert.py +++ b/mopidy/config/convert.py @@ -36,6 +36,7 @@ def convert(settings): helper('audio/mixer', 'MIXER') helper('audio/mixer_track', 'MIXER_TRACK') + helper('audio/mixer_volume', 'MIXER_VOLUME') helper('audio/output', 'OUTPUT') helper('proxy/hostname', 'SPOTIFY_PROXY_HOST') diff --git a/mopidy/config/default.conf b/mopidy/config/default.conf index 26b9f2e7..ae690de3 100644 --- a/mopidy/config/default.conf +++ b/mopidy/config/default.conf @@ -10,6 +10,7 @@ pykka = info [audio] mixer = software mixer_track = +mixer_volume = output = autoaudiosink visualizer = From bdb4f9e2a517e2f6677e60fa0b516e782b376ef0 Mon Sep 17 00:00:00 2001 From: Simon de Bakker Date: Thu, 9 Jan 2014 18:48:27 +0100 Subject: [PATCH 2/4] Added mixer_volume to config documentation --- docs/config.rst | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/config.rst b/docs/config.rst index 5099f04d..50369e78 100644 --- a/docs/config.rst +++ b/docs/config.rst @@ -78,6 +78,17 @@ Core configuration values Setting the config value to blank turns off volume control. + +.. confval:: audio/mixer_volume + + Audio mixer initial volume. + + Expects an Integer between 0 and 100. + + Sets the initial volume of the audio mixer. Setting the config value to blank + sets the initial volume for the software mixer to 100. + + .. confval:: audio/mixer_track Audio mixer track to use. From d8270ec153749c70c0caaca0c47912dc36f6154b Mon Sep 17 00:00:00 2001 From: Simon de Bakker Date: Fri, 10 Jan 2014 23:38:27 +0100 Subject: [PATCH 3/4] Removed empty line (caught by flake8) --- mopidy/audio/actor.py | 1 - 1 file changed, 1 deletion(-) diff --git a/mopidy/audio/actor.py b/mopidy/audio/actor.py index 5a023be8..ca023125 100644 --- a/mopidy/audio/actor.py +++ b/mopidy/audio/actor.py @@ -237,7 +237,6 @@ class Audio(pykka.ThreadingActor): self.set_volume(volume) logger.info('Audio mixer volume set to %d', volume) - def _select_mixer_track(self, mixer, track_label): # Ignore tracks without volumes, then look for track with # label equal to the audio/mixer_track config value, otherwise fallback From ca35094554cfc6cb315c1f871f47d717f62a2507 Mon Sep 17 00:00:00 2001 From: Simon de Bakker Date: Fri, 10 Jan 2014 23:38:59 +0100 Subject: [PATCH 4/4] Forgot to adapt tests for audio actor --- tests/audio/actor_test.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/audio/actor_test.py b/tests/audio/actor_test.py index eac299cf..3f7e56ce 100644 --- a/tests/audio/actor_test.py +++ b/tests/audio/actor_test.py @@ -23,6 +23,7 @@ class AudioTest(unittest.TestCase): 'audio': { 'mixer': 'fakemixer track_max_volume=65536', 'mixer_track': None, + 'mixer_volume': None, 'output': 'fakesink', 'visualizer': None, } @@ -73,6 +74,7 @@ class AudioTest(unittest.TestCase): 'audio': { 'mixer': 'fakemixer track_max_volume=40', 'mixer_track': None, + 'mixer_volume': None, 'output': 'fakesink', 'visualizer': None, } @@ -88,6 +90,7 @@ class AudioTest(unittest.TestCase): 'audio': { 'mixer': 'fakemixer track_max_volume=0', 'mixer_track': None, + 'mixer_volume': None, 'output': 'fakesink', 'visualizer': None, }