Spec-Zone .ru
спецификации, руководства, описания, API
|
ADC домой > Ссылочная библиотека> Ссылка> Аудио> Core Audio> Ссылка Серверной инфраструктуры Core MIDI
|
MIDIDriver.h |
Включает: | <CoreFoundation/CFPlugIn.h> <CoreFoundation/CFPlugInCOM.h> <CoreFoundation/CFRunLoop.h> <CoreMIDI/CoreMIDI.h> |
Это - заголовочный файл для интерфейса драйвера MIDI OS X.
Драйверами MIDI является CFPlugIns, установленный в следующие места:
/System/Library/Extensions -- not recommended for non-Apple drivers, but necessary for compatibility with CoreMIDI 1.0 /Library/Audio/MIDI Drivers -- starting with CoreMIDI 1.1 ~/Library/Audio/MIDI Drivers -- starting with CoreMIDI 1.1
Обратитесь к документации CFPlugIn для получения дополнительной информации о плагинах.
Водительский пакет настройки должен включать настройки, напоминающие следующее:
Bundle settings: CFBundleIdentifier String com.mycompany.midi.driver.mydevice (note that this will be the driver's persistent ID in MIDISetup's) CFPlugInDynamicRegistration String NO CFPlugInFactories Dictionary 1 key/value pair [your new factory UUID] String [your factory function name] CFPlugInTypes Dictionary 1 key/value pair ECDE9574-0FE4-11D4-BB1A-0050E4CEA526 Array 1 object (this is kMIDIDriverTypeID) 0 String [your new factory UUID] Build settings: WRAPPER_EXTENSION plugin
Драйверы имеют доступ к большей части CoreMIDI API. Они должны соединиться с
CoreMIDIServer.framework, не CoreMIDI.framework.
В отличие от приложений, драйверы связываются с сервером непосредственно, не через Маха, обменивающегося сообщениями. Это требует некоторых ограничений на контексты от
который драйвер может вызвать сервер.
MIDI функции I/O MIDISend и MIDIReceived можно вызвать от любого потока.
Все другие функции CoreMIDI должны только быть вызваны от основного потока сервера, который является потоком, на котором драйвер создается и из который все вызовы к драйверу кроме
Отправьте (), сделаны.
Интерфейс COM-стиля к драйверу MIDI.
MIDIDeviceCreate |
extern OSStatus MIDIDeviceCreate( MIDIDriverRef owner, CFStringRef name, CFStringRef manufacturer, CFStringRef model, MIDIDeviceRef *outDevice) ;
owner
Драйвер, создающий устройство. NULL, если недрайвер.
name
Имя нового устройства.
manufacturer
Имя производителя устройства.
model
Имя модели устройства.
outDevice
По успешному возврату, точкам к недавно создаваемому устройству.
OSStatus заканчивается код.
Драйверы вызывают эту функцию для создания новых объектов MIDIDevice, соответствующих присутствующим аппаратным средствам.
Недрайверы могут вызвать эту функцию с CoreMIDI 1.1, к
создайте внешние устройства.
MIDIDeviceDispose |
extern OSStatus MIDIDeviceDispose( MIDIDeviceRef device);
device
Устройство, которое будет расположено.
OSStatus заканчивается код.
Драйверы могут вызвать эту функцию для расположения объектов MIDIDevice, еще не добавленных к системе через MIDISetupAddDevice.
Как только устройство было добавлено к системе с MIDISetupAddDevice, драйвер не должен использовать этот вызов для уничтожения его; это должно
используйте MIDISetupRemoveDevice, чтобы сделать так.
Недрайверы не имеют доступа к этой функции; они должны вызвать MIDISetupAddDevice и MIDISetupRemoveDevice.
MIDIDeviceListAddDevice |
extern OSStatus MIDIDeviceListAddDevice( MIDIDeviceListRef devList, MIDIDeviceRef dev) ;
devList
Список устройств.
dev
Устройство для добавления к списку.
OSStatus заканчивается код.
Добавьте устройство к списку устройств.
MIDIDeviceListDispose |
extern OSStatus MIDIDeviceListDispose( MIDIDeviceListRef devList) ;
devList
Список устройств, который будет расположен.
OSStatus заканчивается код.
Расположите список устройств, но не содержавшие устройства.
MIDIDeviceListGetDevice |
extern MIDIDeviceRef MIDIDeviceListGetDevice( MIDIDeviceListRef devList, ItemCount index0) ;
devList
Список устройств.
deviceIndex0
Индекс (0... MIDIDeviceListGetNumberOfDevices ()-1) устройства для возврата.
Ссылка на устройство или NULL, если произошла ошибка.
Возвратите одно из устройств в списке устройств.
MIDIDeviceListGetNumberOfDevices |
extern ItemCount MIDIDeviceListGetNumberOfDevices( MIDIDeviceListRef devList) ;
devList
Список устройств.
Число устройств в списке, или 0, если произошла ошибка.
Возвращает число устройств в списке устройств.
MIDIDriverEnableMonitoring |
extern OSStatus MIDIDriverEnableMonitoring( MIDIDriverRef driver, Boolean enabled) ;
driver
Драйвер, Функция монитора которого должна быть включена.
enabled
истина, чтобы позволить контролировать, ложь для отключения его.
OSStatus заканчивается код.
Драйвер может выполнить этот вызов для имения передачи MIDIServer это каждый исходящий пакет MIDI всем местам назначения в системе (не просто те, которыми управляют
самостоятельно).
MIDIEndpointGetRefCons |
extern OSStatus MIDIEndpointGetRefCons( MIDIEndpointRef endpt, void **ref1, void **ref2);
endpt
Конечная точка, refCons которой должны быть возвратом
ref1
На выходе, первом refCon.
ref2
На выходе, втором refCon.
OSStatus заканчивается код.
Получите refCons, присвоенный конечным точкам
MIDIEndpointSetRefCons |
extern OSStatus MIDIEndpointSetRefCons( MIDIEndpointRef endpt, void *ref1, void *ref2);
endpt
Конечная точка, refCons которой должны быть установлены
ref1
Первый refCon.
ref2
Второй refCon.
OSStatus заканчивается код.
Драйверам нужен эффективный способ перевести из MIDIEndpoint (источник или место назначения) к их собственному внутреннему соответствию структур данных
та конечная точка. Эта функция обеспечивает путь к драйверу для присвоения его собственного refCons конечным точкам.
Эти refCons пасуются назад к драйверу в Отправлять () и Сброс ()
методы.
RefCons не являются персистентными (т.е. они не сохраняются как часть MIDISetup). Они должны быть повторно инициализированы в каждом вызове для Запуска ().
Типичное использование должно использовать один refCon для обращения к устройству, и секунда
относиться к порту на устройстве.
MIDIGetDriverDeviceList |
extern MIDIDeviceListRef MIDIGetDriverDeviceList( MIDIDriverRef driver) ;
driver
Драйвер, устройства которого должны быть возвращены.
Требуемый список устройств.
Возвращает список устройств, которые находятся в текущем MIDISetup и создававшихся/владевшихся указанным драйвером.
Возвращенный список устройств должен быть расположен (использование MIDIDeviceListDispose)
вызывающей стороной.
MIDIGetDriverIORunLoop |
extern CFRunLoopRef MIDIGetDriverIORunLoop();
CFRunLoopRef драйвера сервера поток I/O.
Драйверы обычно должны получать асинхронные обратные вызовы завершения I/O на высокоприоритетном потоке. Сохранить драйверы от проблемы
создавая их собственные потоки с этой целью, и сделать эффективное использование системных ресурсов, MIDIServer обеспечивает поток который
драйверы могут использовать.
Драйверы должны выполнить как можно меньше работы в этом потоке; обычно, просто исключение из очереди и кодирующий исходящие пакеты и декодирующий входящие пакеты
в MIDIPacketLists, который будет передан MIDIReceived.
Это - поток приоритета в реальном времени и не должно использоваться ни для чего кроме I/O. Для задач более низкого приоритета драйверы могут использовать runloop который
было текущим, когда они были созданы.
kMIDIDriverPropertyUsesSerial |
extern const CFStringRef kMIDIDriverPropertyUsesSerial;
Эта константа, «MIDIDriverUsesSerial», когда определено к «YES» в водительском пакете, говорит MIDIServer, что драйвер использует последовательные порты и приемлем
присвойте последовательные порты ему.
Когда Запуск последовательного драйвера () метод вызывают, он должен использовать MIDIGetSerialPortOwner для обнаружения, какие последовательные порты он имеет
присвоенный использованию, и только используют те порты.
Новый для CoreMIDI 1.1.
MIDIDeviceListRef |
#if __LP64__ typedef MIDIObjectRef MIDIDeviceListRef; #else typedef struct OpaqueMIDIDeviceList* MIDIDeviceListRef; #endif
MIDIDeviceListRef является списком MIDIDeviceRef. Устройства не принадлежат списку (т.е. расположение списка не располагает
устройства это ссылается).
MIDIDeviceListRef |
#if __LP64__ typedef MIDIObjectRef MIDIDeviceListRef; #else typedef struct OpaqueMIDIDeviceList* MIDIDeviceListRef; #endif
MIDIDeviceListRef является списком MIDIDeviceRef. Устройства не принадлежат списку (т.е. расположение списка не располагает
устройства это ссылается).
MIDIDriverRef |
typedef MIDIDriverInterface ** MIDIDriverRef;
Точки к указателю на MIDIDriverInterface, структура CFPlugIn (определенный в MIDIDriver.h) содержащий функцию
указатели для водительских методов. Только MIDIServer может вызвать водительские методы.
kMIDIDriverInterface2ID |
UUID для версии 2 интерфейса драйвера MIDI.
#define kMIDIDriverInterface2ID \ CFUUIDGetConstantUUIDWithBytes(NULL, 0x43, 0xC9, 0x8C, 0x3C, 0x30, 0x6C, 0x11, 0xD5, 0xAF, 0x73, 0x00, 0x30, 0x65, 0xA8, 0x30, 0x1E)
См. описание структуры MIDIDriverInterface для получения информации о различных версиях интерфейса драйвера MIDI.
Интерфейс драйвера версии 2 является доступным началом с CoreMIDI 1.1.
kMIDIDriverInterfaceID |
UUID для версии 1 интерфейса драйвера MIDI.
#define kMIDIDriverInterfaceID \ CFUUIDGetConstantUUIDWithBytes(NULL, 0x49, 0xDF, 0xCA, 0x9E, 0x0F, 0xE5, 0x11, 0xD4, 0x95, 0x0D, 0x00, 0x50, 0xE4, 0xCE, 0xA5, 0x26)
См. описание структуры MIDIDriverInterface для получения информации о различных версиях интерфейса драйвера MIDI.
kMIDIDriverTypeID |
UUID для плагинов драйвера MIDI.
#define kMIDIDriverTypeID \ CFUUIDGetConstantUUIDWithBytes(NULL, 0xEC, 0xDE, 0x95, 0x74, 0x0F, 0xE4, 0x11, 0xD4, 0xBB, 0x1A, 0x00, 0x50, 0xE4, 0xCE, 0xA5, 0x26)
kMIDIDriverTypeID должен быть введен в Ваши водительские настройки пакета следующим образом:
CFPlugInTypes Dictionary 1 key/value pair ECDE9574-0FE4-11D4-BB1A-0050E4CEA526 Array 1 object (this is kMIDIDriverTypeID) 0 String [your new factory UUID]
Последнее обновление: 06.06.2008