MyTetra Share
Делитесь знаниями!
Консольные программы для просмотра и управления MIDI в Linux
Время создания: 21.09.2024 17:35
Автор: Xintrea
Текстовые метки: linux, midi, консоль, команда, программа, просмотр, событие
Раздел: Компьютер - Linux - Звук и аудио - MIDI
Запись: xintrea/mytetra_syncro/master/base/1726929331wc7709sz76/text.html на raw.github.com

Просмотр MIDI-сообщений через aseqdump


В Linux просматривать MIDI-события в консоли можно с помощью команды aseqdump, которая входит в пакет alsa-tools.


При старте программа ожидает MIDI-события, завершить ее можно по Ctrl+C:



Waiting for data at port 128:0. Press Ctrl+C to end.

Source Event Ch Data



Чтобы узнать, какие порты можно дампить, используется команда aseqdump -l.



Перетрансляция MIDI-событий через amidimap


Для перетрансляции MIDI-событий можно использовать программу amidimap. Эта программа на основе файла с правилами перетранслирует MIDI-события. Используется для преобразования MIDI-потока, например для перемаппирования номеров инструментов в событиях выбора инструмента в канале. Другими словами, если, к примеру, есть инструмент с картой звуков, отличных от General MIDI, можно создать собственную карту инструментов. При выборе GeneralMIDI инструмента, данная утилита перемаппирует этот выбор на выбор того инструмента, который похоже звучит (согласно карте ремаппинга) на подключенном оборудовании.


Утилиту amidimap можно взять с сайта автора:


http://cowlark.com/amidimap/index.html


Ее придется собирать самостоятельно, ибо не во всех дистрибутивах она есть (в Debian ее нет). Утилита написана на языке Си. Для сборки бинарника достаточно дать команду make.



Чтение и запись MIDI-событий через amidi


Для библиотеки ALSA в пакете alsa-utils (не путать с alsa-tools) имеется утилита, которая умеет работать с MIDI-сообщениями в сыром виде.


Через опцию -p задается MIDI-порт, с которым надо работать.


Опция -d позволяет увидеть дамп событий, приходящих на заданный порт. Вот пример команды:



amidi -p hw:1,2 -d



Опция -l позволяет увидеть список возможных MIDI-портов.


Опцией -S можно отправить MIDI-событие, записанное в HEX-виде:



amidi -S 'F0 43 10 4C 00 00 7E 00 F7'



Опции -s и -r позволяют отправить MIDI-события из файла (send) или записать события в файл (recive) соответственно.



Управление MIDI-событиями через специальный шелл midish


Утилита midish (сайт - https://midish.org/, в Debian Linux есть в стандартном репозитарии) является специфическим программным обеспечением, представляя собой специализированный шелл, в котором можно выполнять специализированные MIDI-команды.


Вот что пишется про него на официальном сайте:


Midish - это MIDI-секвенсор (фильтр) с открытым исходным кодом для Unix-подобных операционных систем OpenBSD и Linux. Реализован как простой интерпретатор командной строки (наподобие shell), является легким, быстрым и надежным для работы в режиме реального времени.


Важные функции:


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


Работает через библиотеку ALSA.


Пример команд для определения MIDI-устройств:



dnew 0 "28: 0" wo # закрепить порт за устройством с номером 0

dnew 1 "32: 0" ro # закрепить порт MIDI-клавиатуры за устройством с номером 1



Пример создания фильтра с имененм "piano":



[0000:00]> fnew piano # создать фильтр "пианино"

[0000:00]> fmap {any {1 0}} {any {0 5}} # dev=1,ch=0 -> dev=0,ch= 5



Какой командой заканчивается создание фильтра, в документации не сказано. Похоже, что определение фильтра заканчивается там, где появляется команда, отличная от fmap.


Проигрывание MIDI-команд из файла:



[0000:00]> load "sample.sng" # load the file

[0000:00]> p # start playback

[0004:02]> s # stop playback



Полная документация на все команды midish есть на официальном сатйе: https://midish.org/manual.html.



 
MyTetra Share v.0.65
Яндекс индекс цитирования