在pygame.Sound模块中全局设置音量
channel=pygame.mixer.Sound(file_name)
channel.play(0)
我一直在尝试用pygame来调整所有正在播放的声音的音量。
当我在前端按下一个按钮时,就会播放一个声音。我可以播放很多声音。
现在我的问题是,如何控制所有音乐的音量?我应该为每个文件创建一个对象,并设置它的音量值。下面是代码:
pygame.mixer.pre_init(44100, 16, 2, 4096)
pygame.init()
pygame.mixer.init(44100)
channel=pygame.mixer.Sound(file_name)
channel.play(0)
我该如何全局设置音量呢?所有正在播放的文件都应该受到这个音量的影响。
谢谢大家的帮助!
2 个回答
0
我正在使用一个函数来全局设置音量。这个函数里面有一行 sound.set.volume(),你可以通过它来设置用这个函数创建的所有声音对象的音量。
# Audio
pygame.mixer.init()
# Sound
def create_sound04(name):
fullname = "audio/sound/" + name # path + name of the sound file
sound = pygame.mixer.Sound(fullname)
sound.set_volume(0.40)
return sound
通过这个函数,我创建了我的声音对象。
closedGate = create_sound04("closedGate.wav")
openGate = create_sound04("openGate.wav")
它们的音量都设置成一样的,可以随时播放。
你还可以创建一个第二个函数,设置不同的音量和/或不同的路径,只需要用一个不同的函数名称就可以了。
2
我认为你需要单独设置每一个声音的音量,方法是使用 Sound.set_volume(value)
。你需要保存每一个你创建的声音实例,然后在你想要改变音量的时候,逐个遍历它们。如果你想根据每个声音当前的音量来设置新的音量,可以这样做:
def set_all_volume(sounds,mult):
for sound in sounds:
vol = sound.get_volume()
sound.set_volume(min(vol*mult,1.0))