Это расширение использует MIKMIDI, простую в использовании библиотеку MIDI Objective-C, созданную Эндрю Мадсеном и разработанную им и Крисом Флеснером из Mixed In Key.
ЛИЦЕНЗИЯ MIKMIDI: Авторское право (c) 2013 Mixed In Key, LLC. Автор: Эндрю Р. Мадсен (andrew@mixedinkey.com)
Настоящим предоставляется бесплатная лицензия любому лицу, получившему копию данного программного обеспечения и связанных с ним документов («Программное обеспечение»), использовать Программное обеспечение без ограничений, включая, но не ограничиваясь, правами на использование, копирование, модификацию, объединение, публикацию, распространение, предоставление сублицензий и/или продажу копий Программного обеспечения, а также разрешение лицам, которым предоставляется Программное обеспечение, делать то же самое, при условии соблюдения следующих условий:
Вышеупомянутое уведомление об авторских правах и данное уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. В НИКАКИХ СЛУЧАЯХ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, НЕЗАВИСИМО ОТ ТОГО, ВОЗНИКЛИ ОНИ В РЕЗУЛЬТАТЕ ДЕЙСТВИЯ ПО ДОГОВОРОМ, ДЕЛИКТА ИЛИ ИНАЧЕ, ВОЗНИКШИЕ ИЗ, В СВЯЗИ С ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
Обзор API
Константы - Полезные значения, которые нельзя изменить
Возвращает таблицу доступных виртуальных источников MIDI. Это включает устройства, такие как контроллеры Native Instruments, которые отображаются как виртуальные конечные точки, а не физические устройства.
Параметры
Нет
Возвращаемое значение
Таблица, содержащая имена всех виртуальных источников MIDI в виде строк.
deviceName - Строка, содержащая имя устройства MIDI. Действительное имя устройства можно найти, проверив hs.midi.devices() и/или hs.midi.virtualSources().
Возвращаемое значение
Объект hs.midi или nil в случае ошибки.
Примечания
Пример использования: hs.midi.new(hs.midi.devices()[1])
Устанавливает или удаляет функцию обратного вызова для объекта hs.midi.
Параметры
callbackFn - функция, устанавливаемая в качестве функции обратного вызова для этого объекта hs.midi. Если предоставленное значение равно nil, любая существующая функция обратного вызова удаляется.
Возвращает
Объект hs.midi
Примечания
Большинство MIDI-клавиатур генерируют noteOn при нажатии клавиши, затем noteOff при отпускании. Однако некоторые MIDI-клавиатуры возвращают noteOn с 0 velocity вместо noteOff, поэтому вы будете получать две команды noteOn для каждого нажатия/отпускания клавиши.
Функция обратного вызова должна ожидать 5 аргументов и не должна ничего возвращать:
object - Объект hs.midi.
deviceName - Имя устройства в виде строки.
commandType - Тип сообщения MIDI, определенный как строка. См. hs.midi.commandTypes[] для списка возможных вариантов.
description - Описание события в виде строки. Это действительно полезно только для отладки.
metadata - таблица данных для команды MIDI (см. ниже).
Таблица metadata будет возвращать следующее, в зависимости от commandType для обратного вызова:
noteOff - Команда отключения ноты:
note - Номер ноты для команды. Должен быть в диапазоне от 0 до 127.
velocity - Скорость для команды. Должна быть в диапазоне от 0 до 127.
channel - Канал для команды. Должен быть числом от 1 до 15.
timestamp - Отметка времени для команды в виде строки.
data - Сырые данные MIDI в виде шестнадцатеричной строки.
isVirtual - true если виртуальный MIDI-источник, иначе false.
noteOn - Команда включения ноты:
note - Номер ноты для команды. Должен быть в диапазоне от 0 до 127.
velocity - Скорость для команды. Должна быть в диапазоне от 0 до 127.
channel - Канал для команды. Должен быть числом от 1 до 15.
timestamp - Отметка времени для команды в виде строки.
data - Сырые данные MIDI в виде шестнадцатеричной строки.
isVirtual - true если виртуальный MIDI-источник, иначе false.
polyphonicKeyPressure - Команда полифонического послекасания:
note - Номер ноты для команды. Должен быть в диапазоне от 0 до 127.
pressure - Нажим клавиши сообщения полифонического послекасания. В диапазоне 0-127.
channel - Канал для команды. Должен быть числом от 1 до 15.
timestamp - Отметка времени для команды в виде строки.
data - Сырые данные MIDI в виде шестнадцатеричной строки.
isVirtual - true если виртуальный MIDI-источник, иначе false.
controlChange - Команда изменения контроллера. Это наиболее распространенная команда, отправляемая MIDI-контроллерами:
controllerNumber - Номер MIDI-контроллера для команды.
controllerValue - Значение контроллера команды. Используются только младшие 7 бит.
channel - Канал для команды. Должен быть числом от 1 до 15.
timestamp - Отметка времени для команды в виде строки.
data - Сырые данные MIDI в виде шестнадцатеричной строки.
fourteenBitValue - 14-битное значение команды.
fourteenBitCommand - true если команда содержит 14-битные данные, иначе false.
isVirtual - true если виртуальный MIDI-источник, иначе false.
programChange - Команда изменения программы:
programNumber - Номер программы (также известный как патч). От 0 до 127.
channel - Канал для команды. Должен быть числом от 1 до 15.
timestamp - Отметка времени для команды в виде строки.
data - Сырые данные MIDI в виде шестнадцатеричной строки.
isVirtual - true если виртуальный MIDI-источник, иначе false.
channelPressure - Команда послекасания канала:
pressure - Нажим клавиши сообщения послекасания канала. В диапазоне 0-127.
channel - Канал для команды. Должен быть числом от 1 до 15.
timestamp - Отметка времени для команды в виде строки.
data - Сырые данные MIDI в виде шестнадцатеричной строки.
isVirtual - true если виртуальный MIDI-источник, иначе false.
pitchWheelChange - Команда изменения высоты тона:
pitchChange - 14-битное значение, указывающее на изменение высоты тона. Центр - 0x2000 (8192). Допустимый диапазон - от 0 до 16383.
channel - Канал для команды. Должен быть числом от 1 до 15.
timestamp - Отметка времени для команды в виде строки.
data - Сырые данные MIDI в виде шестнадцатеричной строки.
isVirtual - true если виртуальный MIDI-источник, иначе false.
systemMessage - Команда системного сообщения:
dataByte1 - Первый байт данных как целое число.
dataByte2 - Второй байт данных как целое число.
timestamp - Отметка времени для команды в виде строки.
data - Сырые данные MIDI в виде шестнадцатеричной строки.
isVirtual - true если виртуальный MIDI-источник, иначе false.
systemExclusive - Команда системного сообщения:
manufacturerID - Идентификатор производителя для команды. Используется устройствами для определения, поддерживают ли они сообщение.
sysexChannel - Канал сообщения. Допустимо только для универсальных эксклюзивных сообщений, всегда будет 0 для неуниверсальных сообщений.
sysexData - Системные эксклюзивные данные для сообщения. Для универсальных сообщений subID включены в sysexData, для неуниверсальных сообщений любая специфичная для устройства информация (например, modelID, versionID или что-либо еще, что решают включить производители) будет включена в sysexData.
timestamp - Отметка времени для команды в виде строки.
data - Сырые данные MIDI в виде шестнадцатеричной строки.
isVirtual - true если виртуальный MIDI-источник, иначе false.
commandType - Тип команды для отправки в виде строки. См. hs.midi.commandTypes[].
metadata - Таблица данных для MIDI команды (см. примечания ниже).
Возвращаемое значение
true в случае успеха, в противном случае false
Примечания
Таблица metadata может принимать следующие значения в зависимости от предоставленной commandType.
noteOff - Команда отключения ноты:
note - Номер ноты для команды. Должно быть между 0 и 127. По умолчанию 0.
velocity - Скорость для команды. Должно быть между 0 и 127. По умолчанию 0.
channel - Канал для команды. Должен быть числом от 0 до 16. По умолчанию 0, что отправляет команду на все каналы.
noteOn - Команда включения ноты:
note - Номер ноты для команды. Должно быть между 0 и 127. По умолчанию 0.
velocity - Скорость для команды. Должно быть между 0 и 127. По умолчанию 0.
channel - Канал для команды. Должен быть числом от 0 до 16. По умолчанию 0, что отправляет команду на все каналы.
polyphonicKeyPressure - Команда полифонического давления клавиши:
note - Номер ноты для команды. Должно быть между 0 и 127. По умолчанию 0.
pressure - Давление клавиши сообщения полифонического давления клавиши. В диапазоне от 0 до 127. По умолчанию 0.
channel - Канал для команды. Должен быть числом от 0 до 16. По умолчанию 0, что отправляет команду на все каналы.
controlChange - Команда изменения управления. Это самая распространённая команда, отправляемая MIDI контроллерами:
controllerNumber - Номер MIDI управления для команды. По умолчанию 0.
controllerValue - Значение контроллера команды. Используются только младшие 7 бит. По умолчанию 0.
channel - Канал для команды. Должен быть числом от 0 до 16. По умолчанию 0, что отправляет команду на все каналы.
fourteenBitValue - 14-битовое значение команды. Должно быть между 0 и 16383. По умолчанию 0. fourteenBitCommand должно быть true.
fourteenBitCommand - true если команда содержит данные с 14-битным значением, иначе false. controllerValue будет проигнорировано, если это установлено на true.
programChange - Команда смены программы:
programNumber - Номер программы (также патч). От 0 до 127. По умолчанию 0.
channel - Канал для команды. Должен быть числом от 0 до 16. По умолчанию 0, что отправляет команду на все каналы.
channelPressure - Команда давления канала:
pressure - Давление клавиши сообщения давления канала. В диапазоне от 0 до 127. По умолчанию 0.
channel - Канал для команды. Должен быть числом от 0 до 16. По умолчанию 0, что отправляет команду на все каналы.
pitchWheelChange - Команда изменения высоты тона:
pitchChange - 14-битовое значение, указывающее на изменение высоты тона. Центр - 0x2000 (8192). Допустимый диапазон - от 0 до 16383. По умолчанию 0.
channel - Канал для команды. Должен быть числом от 0 до 16. По умолчанию 0, что отправляет команду на все каналы.