Merge pull request #282 from trygveaa/volume_step

audio: Make get_volume able to return all levels
This commit is contained in:
Stein Magnus Jodal 2012-12-19 10:47:56 -08:00
commit 2b96c70ab1

View File

@ -43,6 +43,7 @@ class Audio(pykka.ThreadingActor):
self._mixer_track = None
self._software_mixing = False
self._appsrc = None
self._volume_set = None
self._notify_source_signal_id = None
self._about_to_finish_id = None
@ -388,10 +389,16 @@ class Audio(pykka.ThreadingActor):
volumes = self._mixer.get_volume(self._mixer_track)
avg_volume = float(sum(volumes)) / len(volumes)
new_scale = (0, 100)
old_scale = (
internal_scale = (0, 100)
mixer_scale = (
self._mixer_track.min_volume, self._mixer_track.max_volume)
return self._rescale(avg_volume, old=old_scale, new=new_scale)
if self._volume_set is not None and self._rescale(self._volume_set,
old=internal_scale, new=mixer_scale) == avg_volume:
return self._volume_set
else:
return self._rescale(
avg_volume, old=mixer_scale, new=internal_scale)
def set_volume(self, volume):
"""
@ -408,11 +415,13 @@ class Audio(pykka.ThreadingActor):
if self._mixer is None:
return False
old_scale = (0, 100)
new_scale = (
self._volume_set = volume
internal_scale = (0, 100)
mixer_scale = (
self._mixer_track.min_volume, self._mixer_track.max_volume)
volume = self._rescale(volume, old=old_scale, new=new_scale)
volume = self._rescale(volume, old=internal_scale, new=mixer_scale)
volumes = (volume,) * self._mixer_track.num_channels
self._mixer.set_volume(self._mixer_track, volumes)