#ifndef DATATYPES_SOUNDCLASS_H #define DATATYPES_SOUNDCLASS_H /* ** $VER: soundclass.h 44.7 (6.6.1999) ** Includes Release 44.1 ** ** Interface definitions for DataType sound objects. ** ** Copyright © 1992-1999 Amiga, Inc. ** All Rights Reserved */ #ifndef UTILITY_TAGITEM_H #include <utility/tagitem.h> #endif #ifndef DATATYPES_DATATYPESCLASS_H #include <datatypes/datatypesclass.h> #endif #ifndef LIBRARIES_IFFPARSE_H #include <libraries/iffparse.h> #endif #ifndef DEVICES_TIMER_H #include <devices/timer.h> #endif /*****************************************************************************/ #define SOUNDDTCLASS "sound.datatype" /*****************************************************************************/ /* Sound attributes */ #define SDTA_Dummy (DTA_Dummy + 500) #define SDTA_VoiceHeader (SDTA_Dummy + 1) /* (BYTE *) Sample data */ #define SDTA_Sample (SDTA_Dummy + 2) /* (ULONG) Length of the sample data in UBYTEs */ #define SDTA_SampleLength (SDTA_Dummy + 3) /* (UWORD) Period */ #define SDTA_Period (SDTA_Dummy + 4) /* (UWORD) Volume. Range from 0 to 64 */ #define SDTA_Volume (SDTA_Dummy + 5) #define SDTA_Cycles (SDTA_Dummy + 6) /* The following tags are new for V40 */ /* (struct Task *) Task to signal when sound is complete or next buffer needed. */ #define SDTA_SignalTask (SDTA_Dummy + 7) /* (ULONG) Signal mask to use on completion or 0 to disable * * NOTE: Due to a bug in sound.datatype V40 SDTA_SignalBit * was actually implemented as a signal mask as opposed * to a bit number. The documentation now reflects * this. If you intend to use a signal bit number * instead of the mask, use the new V44 tag * SDTA_SignalBitNumber below. */ #define SDTA_SignalBit (SDTA_Dummy + 8) #define SDTA_SignalBitMask SDTA_SignalBit /* (BOOL) Playing a continuous stream of data. Defaults to FALSE. */ #define SDTA_Continuous (SDTA_Dummy + 9) /* The following tags are new for V44 */ /* (BYTE) Signal bit to use on completion or -1 to disable */ #define SDTA_SignalBitNumber (SDTA_Dummy + 10) /* (UWORD) Samples per second */ #define SDTA_SamplesPerSec (SDTA_Dummy + 11) /* (struct timeval *) Sample replay period */ #define SDTA_ReplayPeriod (SDTA_Dummy + 12) /* (BYTE *) Sample data */ #define SDTA_LeftSample (SDTA_Dummy + 13) #define SDTA_RightSample (SDTA_Dummy + 14) /* (BYTE) Stereo panning */ #define SDTA_Pan (SDTA_Dummy + 15) /* (BOOL) FreeVec() all sample data upon OM_DISPOSE. */ #define SDTA_FreeSampleData (SDTA_Dummy + 16) /* (BOOL) Wait for the current sample to be played back before * switching to the new sample data. */ #define SDTA_SyncSampleChange (SDTA_Dummy + 17) /*****************************************************************************/ /* Data compression methods */ #define CMP_NONE 0 #define CMP_FIBDELTA 1 /*****************************************************************************/ /* Unity = Fixed 1.0 = maximum volume */ #define Unity 0x10000UL /*****************************************************************************/ struct VoiceHeader { ULONG vh_OneShotHiSamples; /* # samples in the high octave 1-shot part */ ULONG vh_RepeatHiSamples; /* # samples in the high octave repeat part */ ULONG vh_SamplesPerHiCycle; /* # samples/cycle in high octave, else 0 */ UWORD vh_SamplesPerSec; /* data sampling rate */ UBYTE vh_Octaves; /* # of octaves of waveforms */ UBYTE vh_Compression; /* data compression technique used */ ULONG vh_Volume; /* playback nominal volume from 0 to Unity * (full volume). Map this value into * the output hardware's dynamic range. */ }; /*****************************************************************************/ /* Channel allocation */ #define SAMPLETYPE_Left (2L) #define SAMPLETYPE_Right (4L) #define SAMPLETYPE_Stereo (6L) typedef long SampleType; /*****************************************************************************/ /* IFF types */ #define ID_8SVX MAKE_ID('8','S','V','X') #define ID_VHDR MAKE_ID('V','H','D','R') #define ID_CHAN MAKE_ID('C','H','A','N') #define ID_BODY MAKE_ID('B','O','D','Y') /*****************************************************************************/ #endif /* DATATYPES_SOUNDCLASS_H */