同时播放多个wav文件,用于Python中的鼓形机

2024-06-01 19:12:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想发挥不同的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"))

如果我把这个代码改成

^{pr2}$

它只播放第一个。在

我使用PyDub而不是PyAudio的原因是我认为PyDub的使用容易得多,但是对于这种情况可能没有用。我也使用了覆盖,但是问题是,它只在第一个文件的持续时间内播放所有文件。在

我想知道,有什么问题或请让我知道,如果有更好的解决方案,也许另一个图书馆,但如果可能,我想避免PyGame或Pyglet等。。。因为我觉得这会减慢我的程序。如果没有,我很期待。在


Tags: 文件fromimportnewplaythreadstartfile
1条回答
网友
1楼 · 发布于 2024-06-01 19:12:14

多线程不是解决方案,因为据我所知,PyDub使用的所有回放方法都仅限于单个流

恐怕您需要使用一个更低级的api,它允许您同时打开多个音频通道。也许您可以通过打开来自同一pyaudio上下文的多个流来自己使用pyaudio

我自己采用了另一种方法;我将所有样本混合到一个结果输出样本中,在单个输出流上播放。在

相关问题 更多 >