Как воспроизвести файл .wav при нажатой кнопке? - PullRequest
0 голосов
/ 01 мая 2020

У меня есть .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()

Это работает, но я надеюсь, что есть лучшие решения. Может быть на других языках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...