Python 如何强制MIDI设备报告控制状态?

Python 如何强制MIDI设备报告控制状态?,python,midi,Python,Midi,我使用PythonRTMIDI来读取带有滑块和旋钮的MIDI设备 每当滑块移动或旋钮转动时,我都会收到控制更改事件(这很好) 但是,当我的程序启动时,我如何轮询MIDI设备以找出滑块和旋钮的初始位置呢 用户未移动任何内容,因此未发送控制更改消息 (我没有任何关于MIDI设备的文档;它是“WORLDE Easycontrol 9”;我只是尝试使用标准的MIDI消息。) 另外,当我引起您的注意时,是否有标准命令来打开/关闭按钮LED?我曾尝试向按钮的控制器号(值0和127)发送控制更改命令,但LED

我使用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数据包来控制。我发现此文档很有用,尽管它不适用于我的设备:


这是否回答了您的问题?迟做总比不做好——谢谢;下次我去更新那个项目时,我会研究这个问题。