Я использую кнопки в матрице сканирования для вывода MIDI-заметок в MIDI-USB конвертер, подключенный к MIDI-OX.MIDI Out on Raspberry Pi с использованием Python
Для этого я использую Python для определения, когда нажата или отпущена кнопка, и какая кнопка была. Эта часть кода работает нормально.
Однако, я получаю много несогласованности с командами, полученными MIDI-OX. Для связи у меня есть вывод UART0_TXD Pi, подключенный непосредственно к контакту 2 5-контактного DIN-разъема, используемого для MIDI и PySerial, отправляющих данные. Насколько я могу судить, мой код должен генерировать правильные команды и отправлять их по последовательному порядку, поэтому я не уверен, куда обратиться за устранением неполадок.
Код отправки команды выглядит следующим образом:
message=chr(0x90) + chr(0x3D) + chr(0x40)
port.write(message)
Это приводит к следующему выходу в MIDI-OX:
TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT
007B971E 1 -- 90 68 27 1 G# 8 Note On
007B971E 1 -- FF -- -- -- --- System Reset
можно видеть выше, что MIDI-OX является ПОЛУЧАТЬ 68 для данных 2 и выводит правильное примечание (G #) для этого числа. Однако, если изменить код следующим образом:
message=chr(0x90) + chr(0x3C) + chr(0x40)
port.write(message)
выход MIDI-ОХ:
TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT
007FAC19 1 -- 81 00 42 2 C 0 Note Off
007FAC3A 1 -- FF -- -- -- --- System Reset
Показано, что она получает совершенно разные данные.
Любые идеи о том, куда идти отсюда, будут очень признательны.
Итак, вы отправляете 1 вещь и "G sharp?" включается, вы отправляете еще одну вещь, и неправильная нота «C» отключается, кажется хорошим началом, почему бы не просто перебрать хотя бы один из шестнадцатеричных 'chr' и отобразить заметки, они могут быть не в шестнадцатеричной последовательности? Попробуйте: chr (x90) + chr (0x3D) + chr (0x41) '... половина битвы просто в основном следит за изменением одной вещи, затем видит результаты, меняет другую вещь и видит результаты ... просто это снова и снова, пока вы не сможете понять, почему он не делает то, что вы ожидали раньше. – jmunsch
Спасибо за предложение. К сожалению, все данные, полученные MIDI-OX, были неправильными, и я не вижу шаблон. Я подозреваю, что я делаю что-то неправильно с PySerial, но я не знаю, что. Либо это, либо мой интерфейс USB-MIDI неисправен, но у меня нет MIDI-инструмента для проверки. –
Итак, если вы отправляете одно и то же снова и снова, оно меняется? Может быть, какое-то ослабленное напряжение или провода? – jmunsch