Могу ли я использовать UART (последовательный порт) в качестве MIDI-устройства в Linux?

1947
XTL

Могу ли я убедить Linux (ядро / ALSA / Jack) использовать произвольный UART или последовательный порт (обычно /dev/ttyS*или /dev/ttyUSB*или /dev/ttyACM*) для вывода MIDI-сообщений?

Это способ, которым MIDI был сделан на Amiga, например. Если электрическая сторона настроена правильно, и UART может быть синхронизирован на скорости MIDI, передача должна работать в принципе.

То, что я хотел бы знать, есть ли готовый вариант программного обеспечения, конфигурации, драйвера или взломать, чтобы сделать это.

1

2 ответа на вопрос

2
user2071836

Вы можете использовать ttymidi для соединения между Uart и Alsa.

Вы должны быть в состоянии заставить это работать с проектом RaspberryPi, но вам нужно будет скомпилировать его самостоятельно.

Это выглядит как интересный обходной путь и пример кода на стороне ALSA, хотя он отправляет не-MIDI-протокол со скоростью не-MIDI в течение tty. Благодарю. XTL 8 лет назад 0
0
jcoppens

Это очень сложно. Последовательный порт можно запрограммировать на определенных скоростях передачи, которые обычно варьируются от 300 бод (или около того) до 115200 (230400 и 460800 на более поздних машинах). Однако большинство скоростей кратны: 300, 600, 1200, 2400, 4800 и т. Д. MIDI, однако, составляет 31250 бод, что сложно программировать, поскольку отсутствует «гармоническое» отношение. Поскольку это исправлено в ПК (и отличается от Atari), это представляет серьезную проблему.

Другая проблема заключается в том, что MIDI представляет собой цепь с токовой петлей (с оптопарами), в то время как RS232 работает с напряжениями. Вам нужно будет сделать внешний интерфейс, чтобы сделать совместимым.

Затем, последним препятствием является программное обеспечение: управлять UART относительно легко, и есть множество примеров (посмотрите «практические инструкции по программированию последовательных интерфейсов». Здесь возникает проблема, что вы, вероятно, хотите представить какой-то стандартный интерфейс для MIDI -управление музыкальными программами, поэтому вашему драйверу придется управлять стороной UART и предоставлять правильный интерфейс для программного обеспечения.

Большинство современных MIDI-интерфейсов также представляют синхронизацию с MIDI-кодом для пользовательской программы, что является дополнительной проблемой.

Таким образом, гораздо проще купить дешевый интерфейс USB-MIDI!

Обе проблемы были (возможно, не красноречиво) рассмотрены в вопросе и могут быть решены с помощью подходящего оборудования. Остается вопрос программного обеспечения. XTL 9 лет назад 0
Попробуйте `rm / dev / midi_device`, если он существует, тогда` ln -s / dev / ttyUSB0 / dev_midi_device` - замените соответствующее устройство на `/ dev / midi_device` LawrenceC 9 лет назад 1

Похожие вопросы