added concrete implementations of putc(), getc(), getchar() and gets()
[tangerine.git] / compiler / include / midi / camd.h
blobe060bb9680f42c24d2b8ba306f67005fc0c7f812
1 #ifndef MIDI_CAMD_H
2 #define MIDI_CAMD_H
4 /*
5 Copyright © 1995-2001, The AROS Development Team. All rights reserved.
6 $Id$
7 */
9 /* Some comments are needed in this file. */
10 #ifndef EXEC_TYPES_H
11 # include <exec/types.h>
12 #endif
13 #ifndef EXEC_LISTS_H
14 # include <exec/lists.h>
15 #endif
16 #ifndef UTILITY_TAGITEM_H
17 # include <utility/tagitem.h>
18 #endif
20 #define CD_Linkages 0
22 typedef union{
23 ULONG l[2];
24 UBYTE b[4];
25 }MidiMsg;
27 #define mm_Msg l[0]
28 #define mm_Time l[1]
29 #if !AROS_BIG_ENDIAN
30 # define mm_Status b[3]
31 # define mm_Data1 b[2]
32 # define mm_Data2 b[1]
33 # define mm_Port b[0]
34 #else
35 # define mm_Status b[0]
36 # define mm_Data1 b[1]
37 # define mm_Data2 b[2]
38 # define mm_Port b[3]
39 #endif
40 #define mm_Data b
42 struct MidiCluster{
43 struct Node mcl_Node;
44 WORD mcl_Participants;
45 struct List mcl_Receivers;
46 struct List mcl_Senders;
47 WORD mcl_PublicParticipants;
48 UWORD mcl_Flags;
50 /* Private data */
53 /* Please use GetMidiLinkAttrsA instead of reading directly, and no
54 writing is allowed.
56 struct MidiLink{
57 struct Node ml_Node;
58 WORD ml_Pad;
60 struct MinNode ml_OwnerNode;
61 struct MidiNode *ml_MidiNode;
62 struct MidiCluster *ml_Location;
63 char *ml_ClusterComment;
65 UBYTE ml_Flags;
66 UBYTE ml_PortID;
67 UWORD ml_ChannelMask;
68 ULONG ml_EventTypeMask;
69 union SysExFilter{
70 UBYTE b[4];
71 ULONG sxf_Packed;
72 }ml_SysExFilter;
74 APTR ml_ParserData;
75 APTR ml_UserData;
77 /* Private data may follow. (currently not, but..) */
79 #if !AROS_BIG_ENDIAN
80 # define sxf_Mode b[3]
81 # define sxf_ID1 b[2]
82 # define sxf_ID2 b[1]
83 # define sxf_ID3 b[0]
84 #else
85 # define sxf_Mode b[0]
86 # define sxf_ID1 b[1]
87 # define sxf_ID2 b[2]
88 # define sxf_ID3 b[3]
89 #endif
91 #define MLTYPE_Receiver 0
92 #define MLTYPE_Sender 1
93 #define MLTYPE_NTypes 2
95 #define MLF_Sender 1
96 #define MLF_PartChange 2
97 #define MLF_PrivateLink 4
98 #define MLF_DeviceLink 8
100 #define MLINK_Base (TAG_USER+65)
101 enum{
102 MLINK_Location=MLINK_Base,
103 MLINK_ChannelMask,
104 MLINK_EventMask,
105 MLINK_UserData,
106 MLINK_Comment,
107 MLINK_PortID,
108 MLINK_Private,
109 MLINK_Priority,
110 MLINK_SysExFilter,
111 MLINK_SysExFilterX,
112 MLINK_Parse,
113 MLINK_Reserved,
114 MLINK_ErrorCode,
115 MLINK_Name
118 #define SXF_ModeBits 4
119 #define SXF_CountBits 3
120 #define SXFM_Off 0
121 #define SXFM_1Byte 0
122 #define SXFM_3Byte 4
124 /* Please use GetMidiAttrsA instead of reading directly, and no
125 writing is allowed.
127 struct MidiNode{
128 struct Node mi_Node;
130 UWORD mi_ClientType;
132 struct Image *mi_Image;
134 struct MinList mi_OutLinks;
135 struct MinList mi_InLinks;
137 struct Task *mi_SigTask;
138 struct Hook *mi_ReceiveHook;
139 struct Hook *mi_ParticipantHook;
140 BYTE mi_ReceiveSigBit;
141 BYTE mi_ParticipantSigBit;
143 UBYTE mi_ErrFilter;
145 UBYTE mi_pad;
147 ULONG *mi_TimeStamp;
149 ULONG mi_MsgQueueSize;
150 ULONG mi_SysExQueueSize;
152 /* Private data. */
156 #define CCType_Sequencer 1
157 #define CCType_SampleEditor 2
158 #define CCType_PatchEditor 4
159 #define CCType_Notator 8
160 #define CCType_EventProcessor 16
161 #define CCType_EventFilter 32
162 #define CCType_EventRouter 64
163 #define CCType_ToneGenerator 128
164 #define CCType_EventGenerator 256
165 #define CCType_GraphicAnimator 512
167 #define MIDI_Base (TAG_USER+65)
168 enum{
169 MIDI_Name=MIDI_Base,
170 MIDI_SignalTask,
171 MIDI_RecvHook,
172 MIDI_PartHook,
173 MIDI_RecvSignal,
174 MIDI_PartSignal,
175 MIDI_MsgQueue,
176 MIDI_SysExSize,
177 MIDI_TimeStamp,
178 MIDI_ErrFilter,
179 MIDI_ClientType,
180 MIDI_Image,
181 MIDI_ErrorCode
184 enum{
185 CME_NoMem=801,
186 CME_NoSignals,
187 CME_NoTimer
189 #define CME_NoUnit(a) (820+(a))
191 enum{
192 CMB_Note,
193 CMB_Prog,
194 CMB_PitchBend,
195 CMB_CtrlMSB,
196 CMB_CtrlLSB,
197 CMB_CtrlSwitch,
198 CMB_CtrlByte,
199 CMB_CtrlParam,
200 CMB_CtrlUndef,
201 CMB_Mode,
202 CMB_ChanPress,
203 CMB_PolyPress,
204 CMB_RealTime,
205 CMB_SysCom,
206 CMB_SysEx
209 #define CMF_Note (1L<<CMB_Note)
210 #define CMF_Prog (1L<<CMB_Prog)
211 #define CMF_PitchBend (1L<<CMB_PitchBend)
212 #define CMF_CtrlMSB (1L<<CMB_CtrlMSB)
213 #define CMF_CtrlLSB (1L<<CMB_CtrlLSB)
214 #define CMF_CtrlSwitch (1L<<CMB_CtrlSwitch)
215 #define CMF_CtrlByte (1L<<CMB_CtrlByte)
216 #define CMF_CtrlParam (1L<<CMB_CtrlParam)
217 #define CMF_CtrlUndef (1L<<CMB_CtrlUndef)
218 #define CMF_Mode (1L<<CMB_Mode)
219 #define CMF_ChanPress (1L<<CMB_ChanPress)
220 #define CMF_PolyPress (1L<<CMB_PolyPress)
221 #define CMF_RealTime (1L<<CMB_RealTime)
222 #define CMF_SysCom (1L<<CMB_SysCom)
223 #define CMF_SysEx (1L<<CMB_SysEx)
225 #define CMF_Ctrl (CMF_CtrlMSB|CMF_CtrlLSB|CMF_CtrlSwitch|CMF_CtrlByte|CMF_CtrlParam|CMF_CtrlUndef)
226 #define CMF_Channel (CMF_Note|CMF_Prog|CMF_PitchBend|CMF_Ctrl|CMF_Mode|CMF_ChanPress|CMF_PolyPress)
227 #define CMD_All (CMF_Ctrl|CMF_Channel|CMF_SysCom|CMF_SysEx)
229 #define PutMidiMsg(midilink,msg) PutMidi((midilink),(msg)->mm_Msg)
231 enum{
232 CMEB_MsgErr,
233 CMEB_BufferFull,
234 CMEB_SysExFull,
235 CMEB_ParseMem,
236 CMEB_RecvErr,
237 CMEB_RecvOverflow,
238 CMEB_SysExTooBig
241 #define CMEF_MsgErr (1L<<CMEB_MsgErr)
242 #define CMEF_BufferFull (1L<<CMEB_BufferFull)
243 #define CMEF_SysExFull (1L<<CMEB_SysExFull)
244 #define CMEF_ParseMem (1L<<CMEB_ParseMem)
245 #define CMEF_RecvErr (1L<<CMEB_RecvErr)
246 #define CMEF_RecvOverflow (1L<<CMEB_RecvOverflow)
247 #define CMEF_SysExTooBig (1L<<CMEB_SysExTooBig)
249 #define CMEF_All (CMEF_MsgErr|CMEF_BufferFull|CMEF_SysExFull|CMEF_ParseMem|CMEF_RecvErr|CMEF_RecvOverflow|CMEF_SysExTooBig)
251 struct ClusterNotifyNode{
252 struct MinNode cnn_Node;
253 struct Task *cnn_Task;
254 BYTE cnn_SigBit;
258 #endif