如何使用winsound模块同时播放多个频率

时间:2015-07-18 23:13:08

标签: python python-3.x audio

我正在使用Beep模块中的winsound函数创建一个简单的音乐播放程序。我正在尝试演奏多个" Beeps"立刻尝试诸如

之类的事情
from winsound import Beep
Beep(440, 2000) + Beep(330, 2000)

from winsound import Beep
Beep(440, 2000), Beep(330, 2000)

但它们都不起作用。我知道这可能有一个非常简单的答案,但我真的很感激一些帮助。谢谢!

2 个答案:

答案 0 :(得分:0)

我不能在这个问题上与winsound一起玩,但猜测你可以使用threading模块实现目标,如下所示:

from winsound import Beep
import threading

# Start multi threads, so `Beep` will run simultaneously instead of blocking
threading.Thread(target=Beep, args=(440, 2000)).start()
threading.Thread(target=Beep, args=(330, 2000)).start()

有关线程模块的更多详细信息,您可以转到the document

答案 1 :(得分:0)

试试这个

import winsound  
from multiprocessing import Process
def func1():
     winsound.PlaySound("C:\samplepath\soundfile1.wav", winsound.SND_FILENAME|winsound.SND_NOWAIT)

def func2():
     winsound.PlaySound("C:\samplepath\soundfile2.wav", winsound.SND_FILENAME|winsound.SND_NOWAIT)

if __name__=='__main__':
     p1 = Process(target = func1)
     p1.start()
     p2 = Process(target = func2)
     p2.start()

这应该允许你同时播放声音(虽然我没有用哔哔声测试过)。