Spec-Zone .ru
спецификации, руководства, описания, API
ADC домой > Ссылочная библиотека> Ссылка> Аудио> Core Audio> Ссылка Платформы Core MIDI

 


MIDIThruConnection.h

Включает:
<CoreFoundation/CoreFoundation.h>
<CoreMIDI/MIDIServices.h>

Обзор

Этот заголовок определяет функции для создания игры MIDI - через соединения

между источниками MIDI и местами назначения. Эти соединения могут быть персистентными или переходными, принадлежать клиенту.

При помощи соединений вместо того, чтобы делать сами операции MIDI Through,

издержки перемещения сообщений MIDI между сервером и клиентом для через луг сокращены.

Цель этих функций состоит в том, чтобы разрешить как гибкий ряд трансформаций

как возможный при хранении API и структур данных относительно простыми.



Функции

MIDIThruConnectionCreate

Создает через соединение.

MIDIThruConnectionDispose

Располагает через соединение.

MIDIThruConnectionFind

Возвраты все персистентные через соединения создаются клиентом.

MIDIThruConnectionGetParams

Получает через MIDIThruConnectionParams соединения.

MIDIThruConnectionParamsInitialize

Заполняет MIDIThruConnectionParams значениями по умолчанию.

MIDIThruConnectionSetParams

Изменяется через MIDIThruConnectionParams соединения.


MIDIThruConnectionCreate


Создает через соединение.

extern OSStatus MIDIThruConnectionCreate(
    CFStringRef inPersistentOwnerID, 
    CFDataRef inConnectionParams, 
    MIDIThruConnectionRef *outConnection ) ;  
Параметры
inPersistentOwnerID

Если ноль, тогда соединение отмечено, как принадлежится клиенту и будет автоматически расположено с клиентом. если это - ненуль, то это

должен быть уникальный идентификатор, например, «com.mycompany. MyCoolProgram».

inConnectionParams

MIDIThruConnectionParams содержится в CFDataRef.

outConnection

По успешному возврату ссылка на недавно - создает соединение.

Возвращаемое значение

OSStatus заканчивается код.

Доступность
Представленный в OS X v10.2

MIDIThruConnectionDispose


Располагает через соединение.

extern OSStatus MIDIThruConnectionDispose(
    MIDIThruConnectionRef connection ) ;  
Параметры
connection

Соединение, которое будет расположено

Возвращаемое значение

OSStatus заканчивается код.

Доступность
Представленный в OS X v10.2

MIDIThruConnectionFind


Возвраты все персистентные через соединения создаются клиентом.

extern OSStatus MIDIThruConnectionFind(
    CFStringRef inPersistentOwnerID, 
    CFDataRef *outConnectionList ) ;  
Параметры
inPersistentOwnerID

ID владельца, соединения которого должны быть возвращены.

outConnectionList

По успешному возврату, CFDataRef, содержащий массив MIDIThruConnectionRef.

Возвращаемое значение

OSStatus заканчивается код.

Доступность
Представленный в OS X v10.2

MIDIThruConnectionGetParams


Получает через MIDIThruConnectionParams соединения.

extern OSStatus MIDIThruConnectionGetParams(
    MIDIThruConnectionRef connection, 
    CFDataRef *outConnectionParams ) ;  
Параметры
connection

Соединение, которое будет расположено.

outConnectionParams

По успешному возврату, MIDIThruConnectionParams соединения в CFDataRef

Возвращаемое значение

OSStatus заканчивается код.

Обсуждение

Возвращенный CFDataRef содержит структуру MIDIThruConnectionParams. Вызывающая сторона ответственна за выпуск его.

Доступность
Представленный в OS X v10.2

MIDIThruConnectionParamsInitialize


Заполняет MIDIThruConnectionParams значениями по умолчанию.

extern void MIDIThruConnectionParamsInitialize( 
    MIDIThruConnectionParams *inConnectionParams ) ;  
Параметры
inConnectionParams

Структура, которая будет инициализирована.

Возвращаемое значение

OSStatus заканчивается код.

Обсуждение

Эта функция удобства заполняет структуру соединения значениями по умолчанию: никакие конечные точки, никакие трансформации (главным образом обнуляет за исключением карты канала).

Затем просто заполнение источника и добавление одного места назначения создадут простое, неизмененный через соединение.

Доступность
Представленный в OS X v10.2

MIDIThruConnectionSetParams


Изменяется через MIDIThruConnectionParams соединения.

extern OSStatus MIDIThruConnectionSetParams(
    MIDIThruConnectionRef connection, 
    CFDataRef inConnectionParams ) ;  
Параметры
connection

Соединение, которое будет изменено.

inConnectionParams

Новый MIDIThruConnectionParams соединения в CFDataRef

Возвращаемое значение

OSStatus заканчивается код.

Доступность
Представленный в OS X v10.2

Определения типов


MIDIThruConnectionRef


#if __LP64__ 
typedef MIDIObjectRef MIDIThruConnectionRef;  
#else 
typedef struct OpaqueMIDIThruConnection * MIDIThruConnectionRef;  
#endif  
Обсуждение

Непрозрачная ссылка на игру - через соединение.


MIDIThruConnectionRef


#if __LP64__ 
typedef MIDIObjectRef MIDIThruConnectionRef;  
#else 
typedef struct OpaqueMIDIThruConnection * MIDIThruConnectionRef;  
#endif  
Обсуждение

Непрозрачная ссылка на игру - через соединение.

Структуры и объединения


MIDIControlTransform


Описывает трансформацию событий изменения управления MIDI.

struct MIDIControlTransform { 
    MIDITransformControlType controlType; 
    MIDITransformControlType remappedControlType; 
    UInt16 controlNumber; 
    MIDITransformType transform; 
    SInt16 param; 
};  
Поля
controlType

Тип управления указан controlNumber

remappedControlType

Если преобразование является kMIDITransform_MapControl, типом элемента управления выводом

controlNumber

Контрольное число, которое будет затронуто.

transform

Тип трансформации, которая будет применена к значениям события.

param

Параметр методу трансформации (см. описание MIDITransformType).

Обсуждение

Единственный MIDIThruConnectionParams может описать любое число трансформаций для управления событиями. Важно, чтобы многократные трансформации были упорядочены правильно: отфильтруйте,

перекарта, затем измените значения.

Все трансформации сделаны внутренне с помощью 14-разрядных значений, так например, когда выполнение добавлять/минуты/макс. преобразовывает на 7-разрядном значении управления, параметр должен быть 14-разрядным значением.

Например, для добавления 10 к значению управления параметрический усилитель должен быть (10 << 7) = 1280.


MIDIThruConnectionEndpoint


Описывает источник или место назначения в MIDIThruConnection.

struct MIDIThruConnectionEndpoint { 
    MIDIEndpointRef endpointRef; 
    MIDIUniqueID uniqueID; 
};  
Поля
endpointRef

Конечная точка, указанная как MIDIEndpointRef.

uniqueID

Конечная точка указана ее uniqueID.

Обсуждение

При создании одного из них можно оставить uniqueID 0, если конечная точка существует, и Вы передаете ее MIDIEndpointRef.

При получении одного из них от CoreMIDI endpointRef может быть NULL, если это не существует, но

uniqueID всегда будет ненулевым.


MIDIThruConnectionParams


Описывает ряд маршрутизаций MIDI и трансформаций.

struct MIDIThruConnectionParams { 
    UInt32 version; 
    UInt32 numSources; 
    MIDIThruConnectionEndpoint sources[
            kMIDIThruConnection_MaxEndpoints]; 
    UInt32 numDestinations; 
    MIDIThruConnectionEndpoint destinations[
            kMIDIThruConnection_MaxEndpoints];  
    UInt8 channelMap[16]; 
    UInt8 lowVelocity, highVelocity; 
    UInt8 lowNote, highNote; 
    MIDITransform noteNumber; 
    MIDITransform velocity; 
    MIDITransform keyPressure; 
    MIDITransform channelPressure; 
    MIDITransform programChange; 
    MIDITransform pitchBend;  
    UInt8 filterOutSysEx; 
    UInt8 filterOutMTC; 
    UInt8 filterOutBeatClock; 
    UInt8 filterOutTuneRequest; 
    UInt8 reserved2[3]; 
    UInt8 filterOutAllControls;  
    UInt16 numControlTransforms; 
    UInt16 numMaps; 
    UInt16 reserved3[4];  
    // remainder of structure is variable-length: 
    // MIDIControlTransform controls[]; 
    // MIDIValueMap maps[]; 
};  
Поля
version

Версия этой структуры; должен быть 0.

numSources

Число допустимых источников в следующем массиве.

sources

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

numDestinations

Число допустимых мест назначения в следующем массиве.

destinations

Весь вывод MIDI от соединения направляется этим местам назначения.

channelMap

Карты каждый источник, 16 MIDI образовывает канал для формирования каналов 0-15 (1-16) или 0xFF, когда должен быть отфильтрован MIDI от канала.

lowVelocity

Отметьте события со скоростью меньше, чем отфильтровано это значение.

highVelocity

Отметьте события со скоростью, больше, чем это, если это не 0, отфильтрованы.

lowNote

См. highNote.

highNote

Если highNote> = lowNote, то примечания вне этого диапазона отфильтрованы. Если lowNote> highNote, то примечания в этом диапазоне отфильтрованы.

Это применяется к примечанию и полифоническим ключевым событиям давления. Если существует MIDIValueMap, применяющийся к noteNumber, эти поля проигнорированы.

noteNumber

Указывает, как преобразовываются числа примечания MIDI.

velocity

Указывает, как преобразовываются скорости примечания MIDI.

keyPressure

Указывает, как преобразовывается MIDI полифонические ключевые события давления.

channelPressure

Указывает, как преобразовывается MIDI, монофонический (канал) события давления.

programChange

Указывает, как преобразовываются события изменения программы MIDI.

pitchBend

Указывает, как преобразовываются события изгиба подачи MIDI.

filterOutSysEx

Если 1, указывает, что должны быть отфильтрованы монопольные системой сообщения.

filterOutMTC

Если 1, указывает, что должны быть отфильтрованы сообщения Временного кода MIDI.

filterOutBeatClock

Если 1, указывает, что часы MIDI, игра, останавливаются, и сообщения резюме должны быть отфильтрованы.

filterOutTuneRequest

Если 1, указывает, что должны быть отфильтрованы сообщения Запроса Мелодии MIDI.

reserved2

Должен быть 0.

filterOutAllControls

Если 1, указывает, что должен быть отфильтрован весь MIDI непрерывные управляющие сообщения.

numControlTransforms

Число трансформаций управления в части переменной длины структуры.

numMaps

Число MIDIValueMaps в части переменной длины структуры.

reserved3

Должен быть 0.

Обсуждение

Остаток от структуры непостоянно измерен. Это содержит numControlTransform экземпляры MIDIControlTransform, сопровождаемого numMaps экземплярами MIDIValueMap.


MIDITransform


Описывает, как преобразовывается единственный тип события MIDI.

struct MIDITransform { 
    MIDITransformType transform; 
    SInt16 param; 
};  
Поля
transform

Тип трансформации, которая будет применена к значениям события.

param

Параметр методу трансформации (см. описание MIDITransformType).

Обсуждение

Эта структура управляет трансформацией различных событий MIDI кроме изменений управления.


MIDIValueMap


struct MIDIValueMap { 
    UInt8 value[128]; 
};  
Обсуждение

Пользовательское отображение функционирует для преобразования MIDI 7-разрядные значения, как содержится в числах примечания, скоростях, значениях управления,

и т.д. y = значение [x], где x является вводом значение MIDI, y вывод.

Перечисления


MIDITransformControlType


enum { // MIDITransformControlType 
    kMIDIControlType_7Bit = 0, 
    kMIDIControlType_14Bit = 1, 
    kMIDIControlType_7BitRPN = 2, 
    kMIDIControlType_14BitRPN = 3, 
    kMIDIControlType_7BitNRPN = 4, 
    kMIDIControlType_14BitNRPN = 5 
};  
Константы
kMIDIControlType_7Bit

контрольные числа могут быть 0-127

kMIDIControlType_14Bit

контрольные числа могут быть 0-31

kMIDIControlType_7BitRPN

контрольные числа могут быть 0-16383

kMIDIControlType_14BitRPN
kMIDIControlType_7BitNRPN
kMIDIControlType_14BitNRPN
Обсуждение

Указывает, как интерпретируются контрольные числа.


MIDITransformType


enum { // MIDITransformType 
    kMIDITransform_None = 0, 
    kMIDITransform_FilterOut = 1, 
    kMIDITransform_MapControl = 2, 
    kMIDITransform_Add = 8, 
    kMIDITransform_Scale = 9, 
    kMIDITransform_MinValue = 10, 
    kMIDITransform_MaxValue = 11, 
    kMIDITransform_MapValue = 12 
};  
Константы
kMIDITransform_None

никакая трансформация (неиспользованный параметрический усилитель)

kMIDITransform_FilterOut

отфильтруйте указанный тип события (неиспользованный параметрический усилитель)

kMIDITransform_MapControl

преобразуйте одно контрольное число другому; параметрический усилитель является целевым контрольным числом

kMIDITransform_Add

добавьте параметрический усилитель к значениям

kMIDITransform_Scale

многократное значение числом фиксированной точки в параметрическом усилителе, который находится в фиксированной точке: bbbb.bbbb bbbb bbbb

kMIDITransform_MinValue

минимальное значение значения является параметрическим усилителем

kMIDITransform_MaxValue

максимальное значение значения является параметрическим усилителем

kMIDITransform_MapValue

преобразуйте значение с помощью карты; параметрический усилитель является индексом карты в массиве соединения карт.

Обсуждение

Значения, указывающие тип трансформации MIDI, как найдено в элементе преобразования MIDITransform.

#defines


MIDIThruConnectionParamsSize


Возвращает размер MIDIThruConnectionParams.

#define MIDIThruConnectionParamsSize(ptr) \ 
    (sizeof(MIDIThruConnectionParams) + (ptr)->numControlTransforms * sizeof(MIDIControlTransform) \ 
    + (ptr)->numMaps * sizeof(MIDIValueMap)) 
Обсуждение

Счета на элементы переменной длины в структуре и возвратах ее истинный размер в байтах.

Последнее обновление: 06.06.2008