Python RTMidi управления Ableton Live

Я пытаюсь контролировать Ableton через библиотеку rtmidi_python. На этом этапе я могу отправлять сообщения по Bluetooth на подчиненный, который получает их и отправляет их в Ableton. Проблема в том, что команда Play не запускает Ableton с другой стороны. Я вижу, что Ableton интерпретирует команду, но ничего не делает.

Когда я нажимаю кнопку воспроизведения, кнопка "Стоп" становится серой, но дорожка не запускается, и она будет напечатана

[242, 0, 0]
[250] 0.0

Когда я останавливаю трек, я получаю

[252]

Когда я меняю свое положение, ведомый также меняет положение трека, поэтому я думаю, что команда воспроизведения не правильная. Когда я отправляю сообщение note_on, оно будет воспроизведено Ведомым. Я также пытался изменить команду на шестнадцатеричное обозначение, но, похоже, это не исправило.

Вот часть миди от мастера:

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 Beat Clock, я бы с удовольствием их услышал!

РЕДАКТИРОВАТЬ Я только что узнал, что я ищу команду [248], которая должна быть отправлена ​​24 раза за квартал. Но это не отображается в моей консоли.

1 ответ

Относительно сообщения о событиях [248] midi Clock: по умолчанию они игнорируются.

Я использую MidiIn.ignore_types() способ их получения:

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

Обычно после звонка open_port(),

Другие вопросы по тегам