Python RTMidi控制Ableton Live

时间:2014-05-02 10:57:58

标签: python midi ableton-live

我正试图通过rtmidi_python库控制Ableton。 此时,我可以通过蓝牙将消息发送给Slave,Slave接收它们并将它们发送给Ableton。 问题是'Play'命令不会在另一侧启动Ableton。我可以看到Ableton解释了命令,但没有做任何事情。

当我点击播放时,“停止”按钮将变灰,但轨道无法启动 这将打印

[242, 0, 0]
[250] 0.0

当我停止接收音轨时

[252]

当我改变位置时,奴隶也改变了轨道的位置,所以我认为播放命令不是正确的。 当我发送note_on消息时,它将由Slave播放。 我也尝试将命令更改为十六进制表示法,但这似乎没有解决它。

这是大师的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 个答案:

答案 0 :(得分:1)

关于[248] midi时钟事件消息:默认情况下会忽略它们。

我使用MidiIn.ignore_types()方法接收它们:

midiIn.ignore_types (sysex        = True, 
                     timing       = False,
                     active_sense = True)

通常在致电open_port()之后。