| /* |
| * Wine Midi driver for Mac OS X |
| * |
| * Copyright 2006 Emmanuel Maillard |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| #ifndef WINE_COREMIDI_H |
| #define WINE_COREMIDI_H |
| |
| #include <CoreFoundation/CoreFoundation.h> |
| |
| #ifdef WINE_DEFINITIONS |
| /* |
| * Due to CoreMIDI headers conflict redefine some types for Wine |
| */ |
| typedef void *MIDIClientRef; |
| typedef void *MIDIEndpointRef; |
| typedef void *MIDIPortRef; |
| typedef void *MIDIObjectRef; |
| |
| typedef struct MIDIPacketList MIDIPacketList; |
| |
| /* |
| * functions |
| */ |
| extern OSStatus MIDIClientDispose(MIDIClientRef client); |
| extern unsigned MIDIGetNumberOfDestinations(void); |
| extern MIDIEndpointRef MIDIGetDestination(unsigned i); |
| extern unsigned MIDIGetNumberOfSources(void); |
| extern MIDIEndpointRef MIDIGetSource(unsigned i); |
| extern OSStatus MIDIOutputPortCreate(MIDIClientRef client, CFStringRef portName, MIDIPortRef *outPort); |
| |
| typedef void (*MIDIReadProc)(const MIDIPacketList *pktlist, void *readProcRefCon, void *srcConnRefCon); |
| extern OSStatus MIDIInputPortCreate(MIDIClientRef client, CFStringRef portName, MIDIReadProc readProc, void *refCon, MIDIPortRef *outPort); |
| |
| extern OSStatus MIDIObjectGetProperties(MIDIObjectRef obj, CFPropertyListRef *outProperties, Boolean deep); |
| |
| extern OSStatus MIDIPortConnectSource(MIDIPortRef port, MIDIEndpointRef source, void *connRefCon); |
| |
| /* |
| * Due to AudioUnit headers conflict redefine some types. |
| */ |
| typedef void *AudioUnit; |
| typedef void *AUGraph; |
| |
| extern OSStatus MusicDeviceMIDIEvent(AudioUnit au, UInt32 inStatus, UInt32 inData1, UInt32 inData2, UInt32 inOffsetSampleFrame); |
| extern OSStatus MusicDeviceSysEx(AudioUnit au, const UInt8 *inData, UInt32 inLength); |
| |
| /* audiounit.c */ |
| extern int AudioUnit_SetVolume(AudioUnit au, float left, float right); |
| extern int AudioUnit_GetVolume(AudioUnit au, float *left, float *right); |
| #endif |
| |
| typedef struct { |
| UInt16 devID; |
| UInt16 length; |
| Byte data[256]; |
| } MIDIMessage; |
| |
| /* coremidi.c */ |
| extern MIDIClientRef CoreMIDI_CreateClient(CFStringRef name); |
| extern void CoreMIDI_GetObjectName(MIDIObjectRef obj, char *name, int size); |
| extern void MIDIIn_ReadProc(const MIDIPacketList *pktlist, void *refCon, void *connRefCon); |
| |
| extern void MIDIOut_Send(MIDIPortRef port, MIDIEndpointRef dest, UInt8 *buffer, unsigned length); |
| |
| /* midi.c */ |
| void MIDIIn_SendMessage(MIDIMessage msg); |
| |
| #endif |