Spec-Zone.ru › Hammerspoon

hs.midi

Расширение MIDI для Hammerspoon.

Это расширение поддерживает прослушивание, передачу и синтез команд MIDI.

Это расширение было создано Крисом Хокингем для CommandPost.

Это расширение использует MIKMIDI, простую в использовании библиотеку MIDI Objective-C, созданную Эндрю Мадсеном и разработанную им и Крисом Флеснером из Mixed In Key.

ЛИЦЕНЗИЯ MIKMIDI: Авторское право (c) 2013 Mixed In Key, LLC. Автор: Эндрю Р. Мадсен (andrew@mixedinkey.com)

Настоящим предоставляется бесплатная лицензия любому лицу, получившему копию данного программного обеспечения и связанных с ним документов («Программное обеспечение»), использовать Программное обеспечение без ограничений, включая, но не ограничиваясь, правами на использование, копирование, модификацию, объединение, публикацию, распространение, предоставление сублицензий и/или продажу копий Программного обеспечения, а также разрешение лицам, которым предоставляется Программное обеспечение, делать то же самое, при условии соблюдения следующих условий:

Вышеупомянутое уведомление об авторских правах и данное уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. В НИКАКИХ СЛУЧАЯХ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, НЕЗАВИСИМО ОТ ТОГО, ВОЗНИКЛИ ОНИ В РЕЗУЛЬТАТЕ ДЕЙСТВИЯ ПО ДОГОВОРОМ, ДЕЛИКТА ИЛИ ИНАЧЕ, ВОЗНИКШИЕ ИЗ, В СВЯЗИ С ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.

Обзор API

  • Константы - Полезные значения, которые нельзя изменить
    • commandTypes
  • Функции - API-вызовы, непосредственно предоставляемые расширением
    • deviceCallback
    • devices
    • virtualSources
  • Конструкторы - API-вызовы, возвращающие объект, обычно тот, который предлагает методы API
    • new
    • newVirtualSource
  • Методы - API-вызовы, которые могут быть выполнены только на объекте, возвращенном конструктором
    • callback
    • displayName
    • identityRequest
    • isOnline
    • isVirtual
    • manufacturer
    • model
    • name
    • sendCommand
    • sendSysex
    • synthesize

Документация API

Константы

commandTypes
Подпись hs.midi.commandTypes[]
Тип Константа
Описание

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

Источник extensions/midi/libmidi.m строка 1513

Функции

deviceCallback
Подпись hs.midi.deviceCallback(callbackFn) -> none
Тип Функция
Описание

Обратный вызов, который срабатывает при добавлении или удалении физического или виртуального устройства MIDI из системы.

Параметры
  • callbackFn - функция обратного вызова.
Возвращаемое значение
  • Ничего
Примечания
  • Функция обратного вызова должна принимать 2 аргумента и ничего не возвращать:
    • devices - Таблица, содержащая имена всех физически подключенных устройств MIDI в виде строк.
    • virtualDevices - Таблица, содержащая имена всех виртуальных устройств MIDI в виде строк.
  • Пример использования:
    hs.midi.deviceCallback(function(devices, virtualDevices)
         print(hs.inspect(devices))
         print(hs.inspect(virtualDevices))
    end)```
    
Источник extensions/midi/libmidi.m строка 342
devices
Подпись hs.midi.devices() -> table
Тип Функция
Описание

Возвращает таблицу текущих подключенных физических устройств MIDI.

Параметры
  • Нет
Возвращаемое значение
  • Таблица, содержащая имена всех физически подключенных устройств MIDI в виде строк.
Источник extensions/midi/libmidi.m строка 300
virtualSources
Подпись hs.midi.virtualSources() -> table
Тип Функция
Описание

Возвращает таблицу доступных виртуальных источников MIDI. Это включает устройства, такие как контроллеры Native Instruments, которые отображаются как виртуальные конечные точки, а не физические устройства.

Параметры
  • Нет
Возвращаемое значение
  • Таблица, содержащая имена всех виртуальных источников MIDI в виде строк.
Источник extensions/midi/libmidi.m строка 321

Конструкторы

new
Подпись hs.midi.new(deviceName) -> hs.midi object
Тип Конструктор
Описание

Создает новый hs.midi объект.

Параметры
  • deviceName - Строка, содержащая имя устройства MIDI. Действительное имя устройства можно найти, проверив hs.midi.devices() и/или hs.midi.virtualSources().
Возвращаемое значение
  • Объект hs.midi или nil в случае ошибки.
Примечания
  • Пример использования: hs.midi.new(hs.midi.devices()[1])
Источник extensions/midi/libmidi.m строка 391
newVirtualSource
Подпись hs.midi.newVirtualSource(virtualSource) -> hs.midi object
Тип Конструктор
Описание

Создает новый hs.midi объект.

Параметры
  • virtualSource - Строка, содержащая имя виртуального источника MIDI. Действительное имя виртуального источника можно найти, проверив hs.midi.virtualSources().
Возвращаемое значение
  • Объект hs.midi или nil в случае ошибки.
Примечания
  • Пример использования: hs.midi.new(hs.midi.virtualSources()[1])
Источник extensions/midi/libmidi.m строка 418

Методы

callback
Подпись hs.midi:callback(callbackFn)
Тип Метод
Описание

Устанавливает или удаляет функцию обратного вызова для объекта 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.
    • systemTimecodeQuarterFrame - Системная эксклюзивная (SysEx) команда:

      • dataByte1 - Первый байт данных как целое число.
      • dataByte2 - Второй байт данных как целое число.
      • timestamp - Отметка времени для команды в виде строки.
      • data - Сырые данные MIDI в виде шестнадцатеричной строки.
      • isVirtual - true если виртуальный MIDI-источник, иначе false.
    • systemSongPositionPointer - Команда указателя системной позиции песни:

      • dataByte1 - Первый байт данных как целое число.
      • dataByte2 - Второй байт данных как целое число.
      • timestamp - Отметка времени для команды в виде строки.
      • data - Сырые данные MIDI в виде шестнадцатеричной строки.
      • isVirtual - true если виртуальный MIDI-источник, иначе false.
    • systemSongSelect - Команда выбора системной песни:

      • dataByte1 - Первый байт данных как целое число.
      • dataByte2 - Второй байт данных как целое число.
      • timestamp - Отметка времени для команды в виде строки.
      • data - Сырые данные MIDI в виде шестнадцатеричной строки.
      • isVirtual - true если виртуальный MIDI-источник, иначе false.
    • systemTuneRequest - Команда системного запроса настройки:

      • dataByte1 - Первый байт данных как целое число.
      • dataByte2 - Второй байт данных как целое число.
      • timestamp - Отметка времени для команды в виде строки.
      • data - Сырые данные MIDI в виде шестнадцатеричной строки.
      • isVirtual - true если виртуальный MIDI-источник, иначе false.
    • systemTimingClock - Команда системных тактовых импульсов:

      • dataByte1 - Первый байт данных как целое число.
      • dataByte2 - Второй байт данных как целое число.
      • timestamp - Отметка времени для команды в виде строки.
      • data - Сырые данные MIDI в виде шестнадцатеричной строки.
      • isVirtual - true если виртуальный MIDI-источник, иначе false.
    • systemStartSequence - Команда системных тактовых импульсов:

      • dataByte1 - Первый байт данных как целое число.
      • dataByte2 - Второй байт данных как целое число.
      • timestamp - Отметка времени для команды в виде строки.
      • data - Сырые данные MIDI в виде шестнадцатеричной строки.
      • isVirtual - true если виртуальный MIDI-источник, иначе false.
    • systemContinueSequence - Команда запуска системной последовательности:

      • dataByte1 - Первый байт данных как целое число.
      • dataByte2 - Второй байт данных как целое число.
      • timestamp - Отметка времени для команды в виде строки.
      • data - Сырые данные MIDI в виде шестнадцатеричной строки.
      • isVirtual - true если виртуальный MIDI-источник, иначе false.
    • systemStopSequence - Команда продолжения системной последовательности:

      • dataByte1 - Первый байт данных как целое число.
      • dataByte2 - Второй байт данных как целое число.
      • timestamp - Отметка времени для команды в виде строки.
      • data - Сырые данные MIDI в виде шестнадцатеричной строки.
      • isVirtual - true если виртуальный MIDI-источник, иначе false.
    • systemKeepAlive - Системное сообщение о поддержании активности:

      • dataByte1 - Первый байт данных как целое число.
      • dataByte2 - Второй байт данных как целое число.
      • timestamp - Отметка времени для команды в виде строки.
      • data - Сырые данные MIDI в виде шестнадцатеричной строки.
      • isVirtual - true если виртуальный MIDI-источник, иначе false.
  • Пример использования:

    midiDevice = hs.midi.new(hs.midi.devices()[3])
    midiDevice:callback(function(object, deviceName, commandType, description, metadata)
               print("object: " .. tostring(object))
               print("deviceName: " .. deviceName)
               print("commandType: " .. commandType)
               print("description: " .. description)
               print("metadata: " .. hs.inspect(metadata))
               end)```
    
Источник extensions/midi/libmidi.m line 447
displayName
Подпись hs.midi:displayName() -> string
Тип Метод
Описание

Возвращает отображаемое имя объекта hs.midi.

Параметры
  • Нет
Возвращает
  • Имя в виде строки.
Источник extensions/midi/libmidi.m line 1423
identityRequest
Подпись hs.midi:identityRequest() -> none
Тип Метод
Описание

Отправляет сообщение запроса идентификации устройству hs.midi. Вы можете использовать hs.midi:callback() для получения ответа systemExclusive.

Параметры
  • Никаких
Возвращаемое значение
  • Никаких
Примечания
  • Пример использования:
midiDevice = hs.midi.new(hs.midi.devices()[3])
midiDevice:callback(function(object, deviceName, commandType, description, metadata)
                      print("object: " .. tostring(object))
                      print("deviceName: " .. deviceName)
                      print("commandType: " .. commandType)
                      print("description: " .. description)
                      print("metadata: " .. hs.inspect(metadata))
                    end)
midiDevice:identityRequest()```
Источник extensions/midi/libmidi.m строка 1343
isOnline
Подпись hs.midi:isOnline() -> boolean
Тип Метод
Описание

Возвращает статус подключения к сети объекта hs.midi.

Параметры
  • Никаких
Возвращаемое значение
  • true если подключен, в противном случае false
Источник extensions/midi/libmidi.m строка 1477
isVirtual
Подпись hs.midi:isVirtual() -> boolean
Тип Метод
Описание

Возвращает true если объект hs.midi виртуальный, в противном случае false.

Параметры
  • Никаких
Возвращаемое значение
  • true если виртуальный, в противном случае false
Источник extensions/midi/libmidi.m строка 1494
manufacturer
Подпись hs.midi:manufacturer() -> string
Тип Метод
Описание

Возвращает имя производителя объекта hs.midi.

Параметры
  • Никаких
Возвращаемое значение
  • Имя производителя в виде строки.
Источник extensions/midi/libmidi.m строка 1459
model
Подпись hs.midi:model() -> string
Тип Метод
Описание

Возвращает имя модели объекта hs.midi.

Параметры
  • Никаких
Возвращаемое значение
  • Имя модели в виде строки.
Источник extensions/midi/libmidi.m строка 1441
name
Подпись hs.midi:name() -> string
Тип Метод
Описание

Возвращает имя объекта hs.midi.

Параметры
  • Никаких
Возвращаемое значение
  • Имя в виде строки.
Источник extensions/midi/libmidi.m строка 1405
sendCommand
Подпись hs.midi:sendCommand(commandType, metadata) -> boolean
Тип Метод
Описание

Отправляет команду объекту hs.midi.

Параметры
  • 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, что отправляет команду на все каналы.
  • Пример использования:

    midiDevice = hs.midi.new(hs.midi.devices()[1])
    midiDevice:sendCommand("noteOn", {
        ["note"] = 72,
        ["velocity"] = 50,
        ["channel"] = 0,
    })
    hs.timer.usleep(500000)
    midiDevice:sendCommand("noteOn", {
        ["note"] = 74,
        ["velocity"] = 50,
        ["channel"] = 0,
    })
    hs.timer.usleep(500000)
    midiDevice:sendCommand("noteOn", {
        ["note"] = 76,
        ["velocity"] = 50,
        ["channel"] = 0,
    })
    midiDevice:sendCommand("pitchWheelChange", {
        ["pitchChange"] = 1000,
        ["channel"] = 0,
    })
    hs.timer.usleep(100000)
    midiDevice:sendCommand("pitchWheelChange", {
        ["pitchChange"] = 2000,
        ["channel"] = 0,
    })
    hs.timer.usleep(100000)
    midiDevice:sendCommand("pitchWheelChange", {
        ["pitchChange"] = 3000,
        ["channel"] = 0,
    })```
    
Источник extensions/midi/libmidi.m строка 1033
sendSysex
Подпись hs.midi:sendSysex(command) -> none
Тип Метод
Описание

Отправляет системную эксклюзивную команду объекту hs.midi.

Параметры
  • command - Системная эксклюзивная команда, которую вы хотите отправить, в виде строки. Пробелы в строке будут проигнорированы.
Возвращаемое значение
  • Никаких
Примечания
  • Пример использования:
    midiDevice:sendSysex("f07e7f06 01f7")```
    
Источник extensions/midi/libmidi.m строка 1011
synthesize
Подпись hs.midi:synthesize([value]) -> boolean
Тип Метод
Описание

Устанавливает или отображает, нужно ли устройству MIDI синтезировать аудио на вашем компьютере.

Параметры
  • [value] - true если вы хотите синтезировать звук, в противном случае false.
Возвращаемое значение
  • true если включено, в противном случае false
Источник extensions/midi/libmidi.m строка 1377

© 2014–2017 Hammerspoon contributors
Licensed under the MIT License.
https://www.hammerspoon.org/docs/hs.midi.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API