4
Contains: Definition of AIFF file format components.
6
Version: Technology: System 8.5
7
Release: Universal Interfaces 3.4.2
9
Copyright: � 1989-2002 by Apple Computer, Inc., all rights reserved.
11
Bugs?: For bug reports, consult the following page on
14
http://www.freepascal.org/bugs.html
20
Modified for use with Free Pascal
22
Please report any bugs to <gpc@microbizz.nl>
33
{$setc UNIVERSAL_INTERFACES_VERSION := $0342}
34
{$setc GAP_INTERFACES_VERSION := $0200}
36
{$ifc not defined USE_CFSTR_CONSTANT_MACROS}
37
{$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
40
{$ifc defined CPUPOWERPC and defined CPUI386}
41
{$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
43
{$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
44
{$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
47
{$ifc not defined __ppc__ and defined CPUPOWERPC}
52
{$ifc not defined __i386__ and defined CPUI386}
58
{$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
59
{$error Conflicting definitions for __ppc__ and __i386__}
62
{$ifc defined __ppc__ and __ppc__}
63
{$setc TARGET_CPU_PPC := TRUE}
64
{$setc TARGET_CPU_X86 := FALSE}
65
{$elifc defined __i386__ and __i386__}
66
{$setc TARGET_CPU_PPC := FALSE}
67
{$setc TARGET_CPU_X86 := TRUE}
69
{$error Neither __ppc__ nor __i386__ is defined.}
71
{$setc TARGET_CPU_PPC_64 := FALSE}
73
{$ifc defined FPC_BIG_ENDIAN}
74
{$setc TARGET_RT_BIG_ENDIAN := TRUE}
75
{$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
76
{$elifc defined FPC_LITTLE_ENDIAN}
77
{$setc TARGET_RT_BIG_ENDIAN := FALSE}
78
{$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
80
{$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
82
{$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
83
{$setc CALL_NOT_IN_CARBON := FALSE}
84
{$setc OLDROUTINENAMES := FALSE}
85
{$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
86
{$setc OPAQUE_UPP_TYPES := TRUE}
87
{$setc OTCARBONAPPLICATION := TRUE}
88
{$setc OTKERNEL := FALSE}
89
{$setc PM_USE_SESSION_APIS := TRUE}
90
{$setc TARGET_API_MAC_CARBON := TRUE}
91
{$setc TARGET_API_MAC_OS8 := FALSE}
92
{$setc TARGET_API_MAC_OSX := TRUE}
93
{$setc TARGET_CARBON := TRUE}
94
{$setc TARGET_CPU_68K := FALSE}
95
{$setc TARGET_CPU_MIPS := FALSE}
96
{$setc TARGET_CPU_SPARC := FALSE}
97
{$setc TARGET_OS_MAC := TRUE}
98
{$setc TARGET_OS_UNIX := FALSE}
99
{$setc TARGET_OS_WIN32 := FALSE}
100
{$setc TARGET_RT_MAC_68881 := FALSE}
101
{$setc TARGET_RT_MAC_CFM := FALSE}
102
{$setc TARGET_RT_MAC_MACHO := TRUE}
103
{$setc TYPED_FUNCTION_POINTERS := TRUE}
104
{$setc TYPE_BOOL := FALSE}
105
{$setc TYPE_EXTENDED := FALSE}
106
{$setc TYPE_LONGLONG := TRUE}
114
AIFFID = $41494646 (* 'AIFF' *);
115
AIFCID = $41494643 (* 'AIFC' *);
116
FormatVersionID = $46564552 (* 'FVER' *);
117
CommonID = $434F4D4D (* 'COMM' *);
118
FORMID = $464F524D (* 'FORM' *);
119
SoundDataID = $53534E44 (* 'SSND' *);
120
MarkerID = $4D41524B (* 'MARK' *);
121
InstrumentID = $494E5354 (* 'INST' *);
122
MIDIDataID = $4D494449 (* 'MIDI' *);
123
AudioRecordingID = $41455344 (* 'AESD' *);
124
ApplicationSpecificID = $4150504C (* 'APPL' *);
125
CommentID = $434F4D54 (* 'COMT' *);
126
NameID = $4E414D45 (* 'NAME' *);
127
AuthorID = $41555448 (* 'AUTH' *);
128
CopyrightID = $28632920 (* '(c) ' *);
129
AnnotationID = $414E4E4F (* 'ANNO' *);
133
ForwardBackwardLooping = 2;
136
AIFCVersion1 = $A2805140;
138
{ Compression Names }
139
NoneName = 'not compressed';
140
ACE2to1Name = 'ACE 2-to-1';
141
ACE8to3Name = 'ACE 8-to-3';
142
MACE3to1Name = 'MACE 3-to-1';
143
MACE6to1Name = 'MACE 6-to-1';
144
{ Compression Types }
145
NoneType = $4E4F4E45 (* 'NONE' *);
146
ACE2Type = $41434532 (* 'ACE2' *);
147
ACE8Type = $41434538 (* 'ACE8' *);
148
MACE3Type = $4D414333 (* 'MAC3' *);
149
MACE6Type = $4D414336 (* 'MAC6' *);
154
MarkerIdType = SInt16;
155
ChunkHeaderPtr = ^ChunkHeader;
161
ContainerChunkPtr = ^ContainerChunk;
162
ContainerChunk = record
168
FormatVersionChunkPtr = ^FormatVersionChunk;
169
FormatVersionChunk = record
175
CommonChunkPtr = ^CommonChunk;
180
numSampleFrames: UInt32;
182
sampleRate: extended80;
185
ExtCommonChunkPtr = ^ExtCommonChunk;
186
ExtCommonChunk = record
190
numSampleFrames: UInt32;
192
sampleRate: extended80;
194
compressionName: SInt8; { variable length array, Pascal string }
197
SoundDataChunkPtr = ^SoundDataChunk;
198
SoundDataChunk = record
212
MarkerChunkPtr = ^MarkerChunk;
217
Markers: array [0..0] of Marker; { variable length array }
220
AIFFLoopPtr = ^AIFFLoop;
223
beginLoop: MarkerIdType;
224
endLoop: MarkerIdType;
227
InstrumentChunkPtr = ^InstrumentChunk;
228
InstrumentChunk = packed record
231
baseFrequency: UInt8;
234
highFrequency: UInt8;
238
sustainLoop: AIFFLoop;
239
releaseLoop: AIFFLoop;
242
MIDIDataChunkPtr = ^MIDIDataChunk;
243
MIDIDataChunk = record
246
MIDIdata: SInt8; { variable length array }
249
AudioRecordingChunkPtr = ^AudioRecordingChunk;
250
AudioRecordingChunk = record
253
AESChannelStatus: packed array [0..23] of UInt8;
256
ApplicationSpecificChunkPtr = ^ApplicationSpecificChunk;
257
ApplicationSpecificChunk = record
260
applicationSignature: OSType;
261
data: SInt8; { variable length array }
264
CommentPtr = ^Comment;
267
marker: MarkerIdType;
269
text: SInt8; { variable length array, Pascal string }
272
CommentsChunkPtr = ^CommentsChunk;
273
CommentsChunk = record
277
comments: array [0..0] of Comment; { variable length array }
280
TextChunkPtr = ^TextChunk;
284
text: SInt8; { variable length array, Pascal string }