在pygame.Sound模块中全局设置卷

时间:2014-04-20 14:11:34

标签: python audio pygame

我一直在尝试使用pygame为所有声音设置音量。        def on_press(self):         file_name = self.filename

    pygame.mixer.pre_init(44100, 16, 2, 4096) 
    pygame.init()
    pygame.mixer.init(44100)
    channel=pygame.mixer.Sound(file_name)
    channel.play(0)

每次按前端的按钮,都会播放声音。我可以播放尽可能多的声音。 现在我的问题是如何控制所有音乐的音量?在这里,我应该为每个文件创建对象并设置其音量值。代码如下

           channel=pygame.mixer.Sound(file_name)
           channel.play(0)

如何全局设置音量?正在播放的所有文件都应该受到给定音量的影响? 谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

我相信您必须使用Sound.set_volume(value)单独设置每一个。您必须存储您创建的每个Sound实例,然后在希望更改卷时循环遍历它们。如果您想根据已经存在的音量设置每个音量,您可以执行以下操作:

def set_all_volume(sounds,mult):
    for sound in sounds:
        vol = sound.get_volume()
        sound.set_volume(min(vol*mult,1.0))

答案 1 :(得分: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")

它们都设置为相同的音量并准备播放。

您还可以使用不同的函数名称创建具有不同音量和/或路径的第二个函数。