Python RTMidi 控制 Ableton Live
我正在尝试通过rtmidi_python库来控制Ableton。现在,我可以通过蓝牙向从设备发送消息,从设备接收到这些消息后再发送给Ableton。问题是,发送一个“播放”命令并不能让Ableton在另一端启动。我能看到Ableton接收到了这个命令,但并没有做出反应。
当我点击播放时,“停止”按钮会变成灰色,但音轨并没有开始播放,同时控制台会打印出以下内容:
[242, 0, 0]
[250] 0.0
当我停止音轨时,我会收到:
[252]
当我改变我的位置时,从设备也会改变音轨的位置,所以我觉得“播放”命令可能不对。当我发送一个note_on消息时,从设备会播放这个音符。我也尝试把命令改成十六进制表示法,但似乎没有解决问题。
这是主设备的MIDI部分:
midi_in = rtmidi.MidiIn()
for port_name in midi_in.ports:
print(port_name)
selected_device = int(input('Select a device '))
midi_in.open_port(selected_device)
while recording:
message, delta_time = midi_in.get_message()
if message:
data = json.dumps(message)
sock.send(data)
print(message, delta_time)
这是从设备的部分:
midi_out = rtmidi.MidiOut()
for port_name in midi_out.ports:
print(port_name)
midi_device = int(input('Select a device: '))
midi_out.open_port(midi_device)
data = client_sock.recv(1024)
while data != '':
stream = client_sock.recv(1024)
message = json.loads(stream.decode())
print(message)
midi_out.send_message(message)
有没有人能帮我一下?另外,如果有人有关于获取MIDI节拍时钟的建议,我也很想听听!
编辑 我刚发现我在找的是[248]这个命令,它应该每个四分音符发送24次。但在我的控制台里没有显示出来。
1 个回答
1
关于[248]的MIDI时钟事件消息:默认情况下,它们会被忽略。
我使用MidiIn.ignore_types()
这个方法来接收这些消息:
midiIn.ignore_types (sysex = True,
timing = False,
active_sense = True)
通常是在调用open_port()
之后。