this repo has no description
1#ifndef _MUSIC_DEVICE_H
2#define _MUSIC_DEVICE_H
3
4#include <CoreAudio/CoreAudioTypes.h>
5#include <AudioToolbox/AUComponent.h>
6
7#ifdef __cplusplus
8extern "C" {
9#endif
10
11typedef UInt32 MusicDeviceInstrumentID;
12struct MusicDeviceStdNoteParams
13{
14 UInt32 argCount;
15 Float32 mPitch;
16 Float32 mVelocity;
17};
18typedef struct MusicDeviceStdNoteParams MusicDeviceStdNoteParams;
19struct NoteParamsControlValue
20{
21 AudioUnitParameterID mID;
22 AudioUnitParameterValue mValue;
23};
24typedef struct NoteParamsControlValue NoteParamsControlValue;
25struct MusicDeviceNoteParams
26{
27 UInt32 argCount;
28 Float32 mPitch;
29 Float32 mVelocity;
30 NoteParamsControlValue mControls[1];
31};
32typedef struct MusicDeviceNoteParams MusicDeviceNoteParams;
33enum {
34 kMusicNoteEvent_UseGroupInstrument = 0xFFFFFFFF,
35 kMusicNoteEvent_Unused = 0xFFFFFFFF
36};
37
38
39
40
41
42
43typedef UInt32 MusicDeviceGroupID;
44typedef UInt32 NoteInstanceID;
45
46
47
48
49
50typedef AudioComponentInstance MusicDeviceComponent;
51extern OSStatus
52MusicDeviceMIDIEvent( MusicDeviceComponent inUnit,
53 UInt32 inStatus,
54 UInt32 inData1,
55 UInt32 inData2,
56 UInt32 inOffsetSampleFrame);
57extern OSStatus
58MusicDeviceSysEx( MusicDeviceComponent inUnit,
59 const UInt8 * inData,
60 UInt32 inLength);
61extern OSStatus
62MusicDeviceStartNote( MusicDeviceComponent inUnit,
63 MusicDeviceInstrumentID inInstrument,
64 MusicDeviceGroupID inGroupID,
65 NoteInstanceID * outNoteInstanceID,
66 UInt32 inOffsetSampleFrame,
67 const MusicDeviceNoteParams * inParams);
68extern OSStatus
69MusicDeviceStopNote( MusicDeviceComponent inUnit,
70 MusicDeviceGroupID inGroupID,
71 NoteInstanceID inNoteInstanceID,
72 UInt32 inOffsetSampleFrame);
73enum {
74 kMusicDeviceRange = 0x0100,
75 kMusicDeviceMIDIEventSelect = 0x0101,
76 kMusicDeviceSysExSelect = 0x0102,
77 kMusicDevicePrepareInstrumentSelect = 0x0103,
78 kMusicDeviceReleaseInstrumentSelect = 0x0104,
79 kMusicDeviceStartNoteSelect = 0x0105,
80 kMusicDeviceStopNoteSelect = 0x0106
81};
82typedef OSStatus
83(*MusicDeviceMIDIEventProc)( void * self,
84 UInt32 inStatus,
85 UInt32 inData1,
86 UInt32 inData2,
87 UInt32 inOffsetSampleFrame);
88typedef OSStatus
89(*MusicDeviceSysExProc)( void * self,
90 const UInt8 * inData,
91 UInt32 inLength);
92typedef OSStatus
93(*MusicDeviceStartNoteProc)( void * self,
94 MusicDeviceInstrumentID inInstrument,
95 MusicDeviceGroupID inGroupID,
96 NoteInstanceID * outNoteInstanceID,
97 UInt32 inOffsetSampleFrame,
98 const MusicDeviceNoteParams * inParams);
99typedef OSStatus
100(*MusicDeviceStopNoteProc)( void * self,
101 MusicDeviceGroupID inGroupID,
102 NoteInstanceID inNoteInstanceID,
103 UInt32 inOffsetSampleFrame);
104extern OSStatus
105MusicDevicePrepareInstrument( MusicDeviceComponent inUnit,
106 MusicDeviceInstrumentID inInstrument);
107
108
109extern OSStatus
110MusicDeviceReleaseInstrument( MusicDeviceComponent inUnit,
111 MusicDeviceInstrumentID inInstrument);
112
113#ifdef __cplusplus
114}
115#endif
116
117#endif