【发布时间】:2019-05-11 19:38:54
【问题描述】:
我正在使用 python-rtmidi 读取带有滑块和旋钮的 MIDI 设备。
每当滑块移动或旋钮转动时,我都会收到 CONTROL_CHANGE 事件(这很好用)。
但是当我的程序启动时,如何轮询 MIDI 设备以找出滑块和旋钮的初始位置?
用户没有移动任何东西,因此不会发送任何 CONTROL_CHANGE 消息。
(我没有 MIDI 设备的任何文档;它是 “WORLDE Easycontrol 9”;我只是尝试使用标准 MIDI 消息。)
另外——虽然我引起了你的注意——是否有标准命令可以打开/关闭按钮 LED?我尝试将 CONTROL_CHANGE 命令发送到按钮的控制器编号(值 0 和 127),但 LED 仅在手动按下按钮时才会亮起。
我现有的代码:
import rtmidi
class Midi:
CONTROL_CHANGE = 0xB0
def __init__(self, port=0):
self.midi_in = rtmidi.MidiIn() # gets BUT DOES NOT OPEN a midi input port
self.midi_out = rtmidi.MidiOut()
try:
self.midi_in.open_port(port)
self.midi_out.open_port(port)
self.running = True
except:
self.running = False # in case there was no such MIDI port
def read(self):
if self.running:
event = self.midi_in.get_message()
if event:
return event[0]
return None
def write(self, message):
if self.running:
self.midi_out.send_message(message)
【问题讨论】: