실제 드럼 세트처럼 서로 다른 길이의 "다른 시간"으로 서로 다른 wav 파일을 재생하고 싶습니다.은 동시에 여러 개의 wav 파일을 재생합니다. Python의 드럼 머신
나는 그런 등 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"))
첫 번째 것만 재생합니다.
내가 PyAudio 대신 PyDub를 사용한 이유는 PyDub를 사용하는 것이 훨씬 쉽지만이 상황에서는 쓸모가 없을 것이라고 생각합니다. 오버레이도 사용했지만 문제는 첫 번째 파일의 지속 시간 동안 만 모든 파일이 재생된다는 것입니다.
제가 궁금한 점은 무엇이 문제인지 또는 더 나은 해결책이 있는지, 다른 라이브러리가 있는지 알려주십시오. 가능한 경우 PyGame 또는 Pyglet 등을 피하고 싶습니다. 내 프로그램 속도가 느려집니다. 그렇지 않다면, 나는 그것을 고대합니다.
pydub의 재생은 가능한 경우 pyaudio를 사용하고 대체 장치로 재생합니다. 둘 다 빠르고 편리한 디버깅을 목적으로합니다. [pyaudio 메커니즘] (https://github.com/jiaaro/pydub/blob/master/pydub/playback.py#L22) _ 프로덕션 용으로 확장 할 수 있습니다 _ (나는 약속한다, 너는 진짜를 위해 ffplay을 원하지 않는다). 기본적으로 청크를 훨씬 작게 만들 수 있습니다 (대기 시간이 허용되는 경우 10ms와 같을 것입니다.) 스트림에 쓰기 전에 현재 재생중인 모든 오디오 신호를 한 번에 10ms 씩 결합합니다. – Jiaaro