/************************************************************ Created: Monday, December 2, 1991 at 5:00 PM AIFF.h C Interface to the Macintosh Libraries Copyright Apple Computer, Inc. 1990-1991 All rights reserved ************************************************************/ #ifndef __AIFF__ #define __AIFF__ #ifndef __TYPES__ #include #endif enum { #define AIFFID 'AIFF' #define AIFCID 'AIFC' #define FormatVersionID 'FVER' #define CommonID 'COMM' #define FORMID 'FORM' #define SoundDataID 'SSND' #define MarkerID 'MARK' #define InstrumentID 'INST' #define MIDIDataID 'MIDI' #define AudioRecordingID 'AESD' #define ApplicationSpecificID 'APPL' #define CommentID 'COMT' #define NameID 'NAME' #define AuthorID 'AUTH' #define CopyrightID '(c) ' #define AnnotationID 'ANNO' NoLooping = 0, ForwardLooping = 1, ForwardBackwardLooping = 2, /* AIFF-C Versions */ AIFCVersion1 = 0xA2805140 /* Compression Names */ #define NoneName "\pnot compressed" #define ACE2to1Name "\pACE 2-to-1" #define ACE8to3Name "\pACE 8-to-3" #define MACE3to1Name "\pMACE 3-to-1" #define MACE6to1Name "\pMACE 6-to-1" /* Compression Types */ #define NoneType 'NONE' #define ACE2Type 'ACE2' #define ACE8Type 'ACE8' #define MACE3Type 'MAC3' #define MACE6Type 'MAC6' }; typedef unsigned long ID; typedef short MarkerIdType; struct ChunkHeader { ID ckID; long ckSize; }; typedef struct ChunkHeader ChunkHeader; struct ContainerChunk { ID ckID; long ckSize; ID formType; }; typedef struct ContainerChunk ContainerChunk; struct FormatVersionChunk { ID ckID; long ckSize; unsigned long timestamp; }; typedef struct FormatVersionChunk FormatVersionChunk; typedef FormatVersionChunk *FormatVersionChunkPtr; struct CommonChunk { ID ckID; long ckSize; short numChannels; unsigned long numSampleFrames; short sampleSize; extended80 sampleRate; }; typedef struct CommonChunk CommonChunk; typedef CommonChunk *CommonChunkPtr; struct ExtCommonChunk { ID ckID; long ckSize; short numChannels; unsigned long numSampleFrames; short sampleSize; extended80 sampleRate; ID compressionType; char compressionName[1]; }; typedef struct ExtCommonChunk ExtCommonChunk; typedef ExtCommonChunk *ExtCommonChunkPtr; struct SoundDataChunk { ID ckID; long ckSize; unsigned long offset; unsigned long blockSize; }; typedef struct SoundDataChunk SoundDataChunk; typedef SoundDataChunk *SoundDataChunkPtr; struct Marker { MarkerIdType id; unsigned long position; Str255 markerName; }; typedef struct Marker Marker; struct MarkerChunk { ID ckID; long ckSize; unsigned short numMarkers; Marker Markers[1]; }; typedef struct MarkerChunk MarkerChunk; typedef MarkerChunk *MarkerChunkPtr; struct AIFFLoop { short playMode; MarkerIdType beginLoop; MarkerIdType endLoop; }; typedef struct AIFFLoop AIFFLoop; struct InstrumentChunk { ID ckID; long ckSize; char baseFrequency; char detune; char lowFrequency; char highFrequency; char lowVelocity; char highVelocity; short gain; AIFFLoop sustainLoop; AIFFLoop releaseLoop; }; typedef struct InstrumentChunk InstrumentChunk; typedef InstrumentChunk *InstrumentChunkPtr; struct MIDIDataChunk { ID ckID; long ckSize; unsigned char MIDIdata[1]; }; typedef struct MIDIDataChunk MIDIDataChunk; typedef MIDIDataChunk *MIDIDataChunkPtr; struct AudioRecordingChunk { ID ckID; long ckSize; unsigned char AESChannelStatus[24]; }; typedef struct AudioRecordingChunk AudioRecordingChunk; typedef AudioRecordingChunk *AudioRecordingChunkPtr; struct ApplicationSpecificChunk { ID ckID; long ckSize; OSType applicationSignature; char data[1]; }; typedef struct ApplicationSpecificChunk ApplicationSpecificChunk; typedef ApplicationSpecificChunk *ApplicationSpecificChunkPtr; struct Comment { unsigned long timeStamp; MarkerIdType marker; unsigned short count; char text[1]; }; typedef struct Comment Comment; struct CommentsChunk { ID ckID; long ckSize; unsigned short numComments; Comment comments[1]; }; typedef struct CommentsChunk CommentsChunk; typedef CommentsChunk *CommentsChunkPtr; struct TextChunk { ID ckID; long ckSize; char text[1]; }; typedef struct TextChunk TextChunk; typedef TextChunk *TextChunkPtr; #endif