python pygame如何淡出音量?

时间:2016-07-19 09:43:44

标签: python raspberry-pi pygame

song = "choy_san_dou.ogg"
pygame.init()
pygame.display.set_mode((200,100))
pygame.mixer.init()
pygame.mixer.music.load(song)
pygame.mixer.music.set_volume(0.1)
pygame.mixer.music.play(0)

当歌曲加载时,我无法找到淡入音量的方法,意味着让歌曲的音量慢慢增加,直到达到最大音量,而不是从一开始就将音量调高到全音量。怎么做?

另一个问题是,我必须声明

pygame.display.set_mode((200,100))

或声音不会播放。该程序实际上正在运行,因为在声音经过一段时间后,程序中的后续步骤将继续。为什么会这样?我正在测试它在Windows PC上,打算稍后将它转移到树莓派。

1 个答案:

答案 0 :(得分:1)

pygame.mixer模块有一个Sound类(doc:http://www.pygame.org/docs/ref/mixer.html),它将文件名作为输入,并将文件内容转换为Sound对象。声音对象有一个方法play(),您可以在其中指定声音淡入的时间量(您可能希望使声音比声音的实际长度短得多)。我建议你阅读文档,了解pygame.mixer的工作原理。如果你想改变Sound对象,比如添加淡入或淡出,那么pygame.sndarray模块可以将Sound对象转换为numpy数组,反之亦然,尽管你可以需要使用numpy或scipy来做那个阵列的东西(我推荐免费的Anaconda包) 音乐和混音器模块之间的区别在于音乐模块STREAMS数据要播放,而混音器模块处理保存到主存储器的数据。