|
|||||||
Библиотеки для реалтаймовой работы с MIDI в Linux
Время создания: 22.09.2024 23:28
Раздел: Компьютер - Linux - Звук и аудио - MIDI
Запись: xintrea/mytetra_syncro/master/base/17270368880lvmzyfm59/text.html на raw.github.com
|
|||||||
|
|||||||
Библиотека для Python alsaseq В Python существует бмблиотека alsaseq. Раньше она была доступна из пакета alsa-python, затем стала устанавливаться из пакета python3-pyalsa. Адекватной официальной документации на библиотеку найти не удалось. Имеется только репозитарий на GitHub: https://github.com/ppaez/alsaseq. Документации вместе с пакетом так же не идет. Библиотека для Python alsa_midi Для Python есть более документированная библиотека - alsa_midi. Ее официальный сайт: https://python-alsa-midi.readthedocs.io/en/latest/usage.html Основная работа библиотеки идет через клиента, создаваемого как экземпляр класса SequencerClient. Чтобы получать/отправлять события из/в MIDI-порт, вначале надо получить порт и приконнектиться клиентом в соответствующем режиме (Port.connect_to() или Port.connect_from()). Библиотека RtMidi для C++ Для языка C++ создана библиотека RtMidi (пакет может называться librtmidi-dev). Аббревиатура Rt означает Real Time. Библиотека подключается следующим образом: #include "RtMidi.h" Минимальный пример выглядит так: #include <iostream> #include <cstdlib> #include "RtMidi.h" int main() { RtMidiIn *midiin = 0; RtMidiOut *midiout = 0; // RtMidiIn constructor try { midiin = new RtMidiIn(); } catch ( RtMidiError &error ) { error.printMessage(); exit( EXIT_FAILURE ); } // Check inputs. unsigned int nPorts = midiin->getPortCount(); std::cout << "\nThere are " << nPorts << " MIDI input sources available.\n"; std::string portName;
for ( unsigned int i=0; i<nPorts; i++ ) { try { portName = midiin->getPortName(i); } catch ( RtMidiError &error ) { error.printMessage(); goto cleanup; } std::cout << " Input Port #" << i+1 << ": " << portName << '\n'; } // RtMidiOut constructor try { midiout = new RtMidiOut(); } catch ( RtMidiError &error ) { error.printMessage(); exit( EXIT_FAILURE ); } // Check outputs. nPorts = midiout->getPortCount(); std::cout << "\nThere are " << nPorts << " MIDI output ports available.\n"; for ( unsigned int i=0; i<nPorts; i++ ) { try { portName = midiout->getPortName(i); } catch (RtMidiError &error) { error.printMessage(); goto cleanup; } std::cout << " Output Port #" << i+1 << ": " << portName << '\n'; } std::cout << '\n'; // Clean up cleanup: delete midiin; delete midiout; return 0; }
Так же существует биндинг для Python, находящийся в пакете python3-rtmidi. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|