У меня есть .wav soundbank со всеми инструментальными нотами (например, "Guitar-C4.wav") и я хочу играть его, пока я нажимаю кнопку. Каждый WAV-файл длится 2 секунды. Проблема в том, что я не хочу просто l oop, потому что каждый записанный файл имеет «начало» (от 0 до 0,5 сек c), «основную часть» (от 0,5 до 1,5 сек c) и "fini sh" (от 1,5 до 2 сек c). Таким образом, когда я нажимаю кнопку, она должна воспроизводить «начало», затем «основную часть» во время нажатия, а когда я поднимаю палец, «основная часть» останавливается и воспроизводит «фини sh». Как я могу понять это лучше? Есть ли библиотеки?
Моя версия:
import pyaudio
import wave
sound_steam = wave.open("Guitar-E4.wav",mode="rb")
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(sound_steam.getsampwidth()),
channels=sound_steam.getnchannels(),
rate = sound_steam.getframerate(),
output = True)
data = sound_steam.readframes(sound_steam.getnframes())
# main part is from start to finish
start = 60500
finish = 126164
stream.write(data[0:start])
# loop to simulate a button press
for i in range(5):
stream.write(data[start:finish])
stream.write(data[finish:])
stream.stop_stream()
stream.close()
p.terminate()
Это работает, но я надеюсь, что есть лучшие решения. Может быть на других языках.