Я написал сценарий Python, который отправляет MIDI-данные в другую программу на моем ноутбуке, если на клавиатуре нажата клавиша a , которая запускает звук пианино.
Моя проблема следующее: на настоящем пианино, если я нажимаю клавишу и держу ее нажатой, звучит одна нота с сустейном. Но если я нажимаю клавишу a на клавиатуре во время выполнения сценария, вместо того, чтобы вести себя как настоящий акустический c рояль, при нажатии клавиши нота звучит несколько раз. Я полагаю, что эту проблему можно решить с помощью некоторых if и l oop logi c. Я просто не знаю, как.
Кто-нибудь может мне что-нибудь предложить?
Мой сценарий такой:
import time
import rtmidi
import mido
import keyboard
outport = mido.open_output('loopMIDI 1')
while True:
#Pad A
if keyboard.is_pressed("a"):
msg = mido.Message("note_on", note=36, velocity=100, time=10)
outport.send(msg)
time.sleep(0.05)
else:
msg = mido.Message("note_off", note=36, velocity=100, time=10)
outport.send(msg)