2015-04-18 3 views
1

В Windows у меня есть команды OpenMidiCloseMidi и SendMidi. После OpenMidi Я получаю ручку, а затем могу использовать SendMidi для отправки сообщений midi, таких как 90 52 64, и я услышу заметку о стандартном фортепиано Acoustic Grand.Как выполнить команды midi из программы Linux

Как я могу сделать эквивалентное действие для Linux, выполняя команды midi в то время, когда выбирается моя программа (например, игра)? Это выполняется в реальном времени, то есть в точное время выдачи команды.

+0

В какой библиотеке реализована команда 'SendMidi'? И какую библиотеку вы используете в Linux? –

+0

Команда SendMidi легко доступна в большинстве версий Windows. Почему вы спрашиваете? С уважением к библиотеке в Linux: мой вопрос сводится к тому, «какая библиотека в Linux будет поставлять аналогичный объект»? –

+0

У меня Windows этого нет. Это, вероятно, обеспечивается вашим языком программирования, каким бы он ни был. В любом случае, что использовать в Linux, зависит от того, какой язык программирования вы используете там. –

ответ

1

Быстрый поиск списка пакетов моего дистрибутива для строки «миди» предложили по крайней мере, два вероятных кандидата:

Вы посмотрели на них?

+0

Я хочу, чтобы 3byte midi-пакет отправлял в реальном времени. Я не хочу указывать обратный вызов с указанием времени в будущем для установки в буфере и т. Д. ПОТОМУ ЧТО Я ЧТО Я МОГУ В СЕБЕ В МОЕЙ ПРОГРАММЕ. Так что портмиди нет. –

+0

Пакеты RtMidi обеспечивают функциональность. Я могу использовать это через сокет или обертку, после написания вспомогательной программы. –

1

В Linux звуковые драйверы и библиотеки ядра являются частью ALSA project.

MIDI будет обрабатываться sequencer API, что не очень хорошо документировано.
(some example code in C)

В Python, используйте alsaseq модуль из пакета ALSA-питона.

В C++ вы можете попробовать использовать RtMidi library.

0

Большая часть ответов, которые я видел, находится рядом с меткой, поскольку они требуют указать время для воспроизведения заметки, а не отправки события в режиме реального времени. Помимо rtmid, о котором упоминается в ответах здесь, одобренный ответ на связанный вопрос «отправить сообщения midi из C++» также является ответом на этот вопрос,