Python 如何强制MIDI设备报告控制状态?
我使用PythonRTMIDI来读取带有滑块和旋钮的MIDI设备 每当滑块移动或旋钮转动时,我都会收到控制更改事件(这很好) 但是,当我的程序启动时,我如何轮询MIDI设备以找出滑块和旋钮的初始位置呢 用户未移动任何内容,因此未发送控制更改消息 (我没有任何关于MIDI设备的文档;它是“WORLDE Easycontrol 9”;我只是尝试使用标准的MIDI消息。) 另外,当我引起您的注意时,是否有标准命令来打开/关闭按钮LED?我曾尝试向按钮的控制器号(值0和127)发送控制更改命令,但LED仅在手动按下按钮时亮起 我的现行守则:Python 如何强制MIDI设备报告控制状态?,python,midi,Python,Midi,我使用PythonRTMIDI来读取带有滑块和旋钮的MIDI设备 每当滑块移动或旋钮转动时,我都会收到控制更改事件(这很好) 但是,当我的程序启动时,我如何轮询MIDI设备以找出滑块和旋钮的初始位置呢 用户未移动任何内容,因此未发送控制更改消息 (我没有任何关于MIDI设备的文档;它是“WORLDE Easycontrol 9”;我只是尝试使用标准的MIDI消息。) 另外,当我引起您的注意时,是否有标准命令来打开/关闭按钮LED?我曾尝试向按钮的控制器号(值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)
官方的MIDI规范没有定义读取控件当前状态的机制。但是,许多设备具有特定于供应商的命令来启动批量参数转储
是否可以从计算机更改控件取决于设备。这可能太晚了,但对于我正在使用的设备,按钮的LED通过使用按下按钮时发送的相同按键发送noteOn或noteOff数据包来控制。我发现此文档很有用,尽管它不适用于我的设备:
这是否回答了您的问题?迟做总比不做好——谢谢;下次我去更新那个项目时,我会研究这个问题。