#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 */