我想像真正的鼓组一样独立地“同时”播放不同长度的不同 wav 文件。
我找到了不同的音频控制库,例如 PyAudio、Pydub 等,我认为解决这个问题的方法是线程化。但它根本不播放声音
from pydub import AudioSegment
from pydub.playback import play
import thread
def play_sound(f_directory,f_file):
audio = AudioSegment.from_file(f_directory+f_file)
play(audio)
thread.start_new_thread(play_sound,("drum samples/","ride_crash.wav"))
thread.start_new_thread(play_sound,("drum samples/","crash_hi.wav"))
thread.start_new_thread(play_sound,("drum samples/","kick.wav"))
如果我将此代码修改为此
from pydub import AudioSegment
from pydub.playback import play
import thread
def play_sound(f_directory,f_file):
audio = AudioSegment.from_file(f_directory+f_file)
play(audio)
thread.start_new_thread(play_sound("drum samples/","ride_crash.wav"))
thread.start_new_thread(play_sound("drum samples/","crash_hi.wav"))
thread.start_new_thread(play_sound("drum samples/","kick.wav"))
它只播放第一个。
我使用 PyDub 而不是 PyAudio 的原因是我认为 PyDub 的使用更容易,但在这种情况下可能没用。我也使用了覆盖,但问题是,它只在第一个文件的持续时间内播放所有文件。
我想知道,问题是什么,或者请让我知道是否有更好的解决方案,也许是另一个库,但如果可能的话,我想避免 PyGame 或 Pyglet 等......因为我认为这会减慢我的速度程序。如果没有,我很期待。