我试图在python中创建一个程序,在按下某个键时播放特定的大键琴音符.我希望它保持响应,这样你就可以继续播放更多的音符(有点像普通的电钢琴.)但是,因为存储音符的wav文件长约7-10秒,我遇到了一些问题.我每秒至少可以按10键.因此,在一个音符的持续时间内,我可以同时播放大约100个不同的wav文件.我试图使用winsound,但它无法一次播放多个wav文件.然后我转移到PyAudio,它有点像.我发现完成我想要的唯一方法是:
from msvcrt import getch
import pyaudio
import wave
import multiprocessing as mp
#This function is just code for playing a sound in PyAudio
def playNote(filename):
CHUNK = 1024
wf = wave.open(filename, 'rb')
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
data = wf.readframes(CHUNK)
while data != '':
stream.write(data)
data = wf.readframes(CHUNK)
stream.stop_stream()
stream.close()
p.terminate()
if __name__ == "__main__":
while True:
#If the 'a' key is pressed: start a new process that calls playNote
#and pass in the file …
Run Code Online (Sandbox Code Playgroud)