1

我正在尝试通过 rtmidi_python 库控制 Ableton。此时,我可以通过蓝牙向从站发送消息,从站接收它们并将它们发送到 Ableton。问题是“播放”命令不会在另一侧启动 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 次。但它没有出现在我的控制台中。

4

1 回答 1

1

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

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

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

通常在调用open_port().

于 2014-12-27T14:35:07.013 回答