作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想像真正的鼓一样独立地“同时”播放不同长度的不同 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 等...因为我认为会减慢我的程序。如果没有,我很期待。
最佳答案
多线程不是解决方案,因为据我所知,PyDub 使用的所有播放方法都仅限于单个流
恐怕您毕竟需要使用更底层的 api,它可以让您同时打开多个音频 channel 。也许您可以通过从同一个 Pyaudio 上下文打开多个流来自己使用 pyaudio 来做到这一点
我自己走了一条不同的路;我正在将所有样本混合到一个结果输出样本中,该样本在单个输出流上播放。
关于python - 同时播放多个 wav 文件,用于 Python 中的鼓机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42705080/
谁能给我一些关于如何合成乐器声音(钢琴、鼓、吉他等...)的指导 我什至不确定要寻找什么。 谢谢 最佳答案 不确定情况是否仍然如此,但 Android 似乎存在延迟问题,无法进行真正的声音合成。在我看
我是一名优秀的程序员,十分优秀!