mirror of
https://github.com/id-Software/DOOM-IOS2.git
synced 2026-03-20 08:59:35 +01:00
Initial Commit
This commit is contained in:
268
common/embeddedaudiosynthesis/arm-wt-22k/lib_src/dls.h
Executable file
268
common/embeddedaudiosynthesis/arm-wt-22k/lib_src/dls.h
Executable file
@@ -0,0 +1,268 @@
|
||||
/*
|
||||
|
||||
dls.h
|
||||
|
||||
Description:
|
||||
|
||||
Interface defines and structures for the Instrument Collection Form
|
||||
RIFF DLS.
|
||||
|
||||
Written by Sonic Foundry 1996. Released for public use.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef _INC_DLS
|
||||
#define _INC_DLS
|
||||
|
||||
/*
|
||||
|
||||
Layout of an instrument collection:
|
||||
|
||||
|
||||
RIFF [] 'DLS ' [colh,INSTLIST,WAVEPOOL,INFOLIST]
|
||||
|
||||
INSTLIST
|
||||
LIST [] 'lins'
|
||||
LIST [] 'ins ' [insh,RGNLIST,ARTLIST,INFOLIST]
|
||||
LIST [] 'ins ' [insh,RGNLIST,ARTLIST,INFOLIST]
|
||||
LIST [] 'ins ' [insh,RGNLIST,ARTLIST,INFOLIST]
|
||||
|
||||
RGNLIST
|
||||
LIST [] 'lrgn'
|
||||
LIST [] 'rgn ' [rgnh,wsmp,wlnk,ARTLIST]
|
||||
LIST [] 'rgn ' [rgnh,wsmp,wlnk,ARTLIST]
|
||||
LIST [] 'rgn ' [rgnh,wsmp,wlnk,ARTLIST]
|
||||
|
||||
ARTLIST
|
||||
LIST [] 'lart'
|
||||
'art1' level 1 Articulation connection graph
|
||||
'art2' level 2 Articulation connection graph
|
||||
'3rd1' Possible 3rd party articulation structure 1
|
||||
'3rd2' Possible 3rd party articulation structure 2 .... and so on
|
||||
|
||||
WAVEPOOL
|
||||
ptbl [] [pool table]
|
||||
LIST [] 'wvpl'
|
||||
[path],
|
||||
[path],
|
||||
LIST [] 'wave',RIFFWAVE
|
||||
LIST [] 'wave',RIFFWAVE
|
||||
LIST [] 'wave',RIFFWAVE
|
||||
LIST [] 'wave',RIFFWAVE
|
||||
LIST [] 'wave',RIFFWAVE
|
||||
|
||||
INFOLIST
|
||||
LIST [] 'INFO'
|
||||
'icmt' 'One of those crazy comments.'
|
||||
'icop' 'Copyright (C) 1996 Sonic Foundry'
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
FOURCC's used in the DLS file
|
||||
*/
|
||||
/* shree */
|
||||
//#define FAR
|
||||
|
||||
/* shree
|
||||
|
||||
#define FOURCC_DLS mmioFOURCC('D','L','S',' ')
|
||||
#define FOURCC_COLH mmioFOURCC('c','o','l','h')
|
||||
#define FOURCC_WVPL mmioFOURCC('w','v','p','l')
|
||||
#define FOURCC_PTBL mmioFOURCC('p','t','b','l')
|
||||
#define FOURCC_PATH mmioFOURCC('p','a','t','h')
|
||||
#define FOURCC_wave mmioFOURCC('w','a','v','e')
|
||||
#define FOURCC_LINS mmioFOURCC('l','i','n','s')
|
||||
#define FOURCC_INS mmioFOURCC('i','n','s',' ')
|
||||
#define FOURCC_INSH mmioFOURCC('i','n','s','h')
|
||||
#define FOURCC_LRGN mmioFOURCC('l','r','g','n')
|
||||
#define FOURCC_RGN mmioFOURCC('r','g','n',' ')
|
||||
#define FOURCC_RGNH mmioFOURCC('r','g','n','h')
|
||||
#define FOURCC_LART mmioFOURCC('l','a','r','t')
|
||||
#define FOURCC_ART1 mmioFOURCC('a','r','t','1')
|
||||
#define FOURCC_WLNK mmioFOURCC('w','l','n','k')
|
||||
#define FOURCC_WSMP mmioFOURCC('w','s','m','p')
|
||||
#define FOURCC_VERS mmioFOURCC('v','e','r','s')
|
||||
*/
|
||||
/*
|
||||
Articulation connection graph definitions
|
||||
*/
|
||||
|
||||
/* Generic Sources */
|
||||
#define CONN_SRC_NONE 0x0000
|
||||
#define CONN_SRC_LFO 0x0001
|
||||
#define CONN_SRC_KEYONVELOCITY 0x0002
|
||||
#define CONN_SRC_KEYNUMBER 0x0003
|
||||
#define CONN_SRC_EG1 0x0004
|
||||
#define CONN_SRC_EG2 0x0005
|
||||
#define CONN_SRC_PITCHWHEEL 0x0006
|
||||
|
||||
/* Midi Controllers 0-127 */
|
||||
#define CONN_SRC_CC1 0x0081
|
||||
#define CONN_SRC_CC7 0x0087
|
||||
#define CONN_SRC_CC10 0x008a
|
||||
#define CONN_SRC_CC11 0x008b
|
||||
|
||||
/* Registered Parameter Numbers */
|
||||
#define CONN_SRC_RPN0 0x0100
|
||||
#define CONN_SRC_RPN1 0x0101
|
||||
#define CONN_SRC_RPN2 0x0102
|
||||
|
||||
/* Generic Destinations */
|
||||
#define CONN_DST_NONE 0x0000
|
||||
#define CONN_DST_ATTENUATION 0x0001
|
||||
#define CONN_DST_RESERVED 0x0002
|
||||
#define CONN_DST_PITCH 0x0003
|
||||
#define CONN_DST_PAN 0x0004
|
||||
|
||||
/* LFO Destinations */
|
||||
#define CONN_DST_LFO_FREQUENCY 0x0104
|
||||
#define CONN_DST_LFO_STARTDELAY 0x0105
|
||||
|
||||
/* EG1 Destinations */
|
||||
#define CONN_DST_EG1_ATTACKTIME 0x0206
|
||||
#define CONN_DST_EG1_DECAYTIME 0x0207
|
||||
#define CONN_DST_EG1_RESERVED 0x0208
|
||||
#define CONN_DST_EG1_RELEASETIME 0x0209
|
||||
#define CONN_DST_EG1_SUSTAINLEVEL 0x020a
|
||||
|
||||
/* EG2 Destinations */
|
||||
#define CONN_DST_EG2_ATTACKTIME 0x030a
|
||||
#define CONN_DST_EG2_DECAYTIME 0x030b
|
||||
#define CONN_DST_EG2_RESERVED 0x030c
|
||||
#define CONN_DST_EG2_RELEASETIME 0x030d
|
||||
#define CONN_DST_EG2_SUSTAINLEVEL 0x030e
|
||||
|
||||
#define CONN_TRN_NONE 0x0000
|
||||
#define CONN_TRN_CONCAVE 0x0001
|
||||
|
||||
typedef struct _DLSVERSION {
|
||||
DWORD dwVersionMS;
|
||||
DWORD dwVersionLS;
|
||||
}DLSVERSION, FAR *LPDLSVERSION;
|
||||
|
||||
|
||||
typedef struct _CONNECTION {
|
||||
USHORT usSource;
|
||||
USHORT usControl;
|
||||
USHORT usDestination;
|
||||
USHORT usTransform;
|
||||
LONG lScale;
|
||||
}CONNECTION, FAR *LPCONNECTION;
|
||||
|
||||
|
||||
/* Level 1 Articulation Data */
|
||||
|
||||
typedef struct _CONNECTIONLIST {
|
||||
ULONG cbSize; /* size of the connection list structure */
|
||||
ULONG cConnections; /* count of connections in the list */
|
||||
} CONNECTIONLIST, FAR *LPCONNECTIONLIST;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Generic type defines for regions and instruments
|
||||
*/
|
||||
|
||||
typedef struct _RGNRANGE {
|
||||
USHORT usLow;
|
||||
USHORT usHigh;
|
||||
}RGNRANGE, FAR * LPRGNRANGE;
|
||||
|
||||
#define F_INSTRUMENT_DRUMS 0x80000000
|
||||
|
||||
typedef struct _MIDILOCALE {
|
||||
ULONG ulBank;
|
||||
ULONG ulInstrument;
|
||||
}MIDILOCALE, FAR *LPMIDILOCALE;
|
||||
|
||||
/*
|
||||
Header structures found in an DLS file for collection, instruments, and
|
||||
regions.
|
||||
*/
|
||||
|
||||
#define F_RGN_OPTION_SELFNONEXCLUSIVE 0x0001
|
||||
|
||||
typedef struct _RGNHEADER {
|
||||
RGNRANGE RangeKey; /* Key range */
|
||||
RGNRANGE RangeVelocity; /* Velocity Range */
|
||||
USHORT fusOptions; /* Synthesis options for this range */
|
||||
USHORT usKeyGroup; /* Key grouping for non simultaneous play
|
||||
0 = no group, 1 up is group
|
||||
for Level 1 only groups 1-15 are allowed */
|
||||
}RGNHEADER, FAR *LPRGNHEADER;
|
||||
|
||||
typedef struct _INSTHEADER {
|
||||
ULONG cRegions; /* Count of regions in this instrument */
|
||||
MIDILOCALE Locale; /* Intended MIDI locale of this instrument */
|
||||
}INSTHEADER, FAR *LPINSTHEADER;
|
||||
|
||||
typedef struct _DLSHEADER {
|
||||
ULONG cInstruments; /* Count of instruments in the collection */
|
||||
}DLSHEADER, FAR *LPDLSHEADER;
|
||||
|
||||
/*
|
||||
definitions for the Wave link structure
|
||||
*/
|
||||
|
||||
/***** For level 1 only WAVELINK_CHANNEL_MONO is valid ****
|
||||
ulChannel allows for up to 32 channels of audio with each bit position
|
||||
specifiying a channel of playback */
|
||||
|
||||
#define WAVELINK_CHANNEL_LEFT 0x0001
|
||||
#define WAVELINK_CHANNEL_RIGHT 0x0002
|
||||
|
||||
#define F_WAVELINK_PHASE_MASTER 0x0001
|
||||
|
||||
typedef struct _WAVELINK { /* any paths or links are stored right after struct */
|
||||
USHORT fusOptions; /* options flags for this wave */
|
||||
USHORT usPhaseGroup; /* Phase grouping for locking channels */
|
||||
ULONG ulChannel; /* channel placement */
|
||||
ULONG ulTableIndex; /* index into the wave pool table, 0 based */
|
||||
}WAVELINK, FAR *LPWAVELINK;
|
||||
|
||||
#define POOL_CUE_NULL 0xffffffff
|
||||
|
||||
typedef struct _POOLCUE {
|
||||
// ULONG ulEntryIndex; /* Index entry in the list */
|
||||
ULONG ulOffset; /* Offset to the entry in the list */
|
||||
}POOLCUE, FAR *LPPOOLCUE;
|
||||
|
||||
typedef struct _POOLTABLE {
|
||||
ULONG cbSize; /* size of the pool table structure */
|
||||
ULONG cCues; /* count of cues in the list */
|
||||
} POOLTABLE, FAR *LPPOOLTABLE;
|
||||
|
||||
/*
|
||||
Structures for the "wsmp" chunk
|
||||
*/
|
||||
|
||||
#define F_WSMP_NO_TRUNCATION 0x0001
|
||||
#define F_WSMP_NO_COMPRESSION 0x0002
|
||||
|
||||
|
||||
typedef struct _rwsmp {
|
||||
ULONG cbSize;
|
||||
USHORT usUnityNote; /* MIDI Unity Playback Note */
|
||||
SHORT sFineTune; /* Fine Tune in log tuning */
|
||||
LONG lAttenuation; /* Overall Attenuation to be applied to data */
|
||||
ULONG fulOptions; /* Flag options */
|
||||
ULONG cSampleLoops; /* Count of Sample loops, 0 loops is one shot */
|
||||
} WSMPL, FAR *LPWSMPL;
|
||||
|
||||
|
||||
/* This loop type is a normal forward playing loop which is continually
|
||||
played until the envelope reaches an off threshold in the release
|
||||
portion of the volume envelope */
|
||||
|
||||
#define WLOOP_TYPE_FORWARD 0
|
||||
|
||||
typedef struct _rloop {
|
||||
ULONG cbSize;
|
||||
ULONG ulType; /* Loop Type */
|
||||
ULONG ulStart; /* Start of loop in samples */
|
||||
ULONG ulLength; /* Length of loop in samples */
|
||||
} WLOOP, FAR *LPWLOOP;
|
||||
|
||||
#endif /* _INC_DLS */
|
||||
Reference in New Issue
Block a user