/* * 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