home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 19
/
CD_ASCQ_19_010295.iso
/
dos
/
prg
/
midas
/
dsm.h
< prev
next >
Wrap
C/C++ Source or Header
|
1994-08-06
|
6KB
|
165 lines
/* DSM.H
*
* Digital Sound Mixer, v1.11
*
* Copyright 1994 Petteri Kangaslampi and Jarno Paananen
*
* This file is part of the MIDAS Sound System, and may only be
* used, modified and distributed under the terms of the MIDAS
* Sound System license, LICENSE.TXT. By continuing to use,
* modify or distribute this file you indicate that you have
* read the license and understand and accept it fully.
*/
#ifndef __DSM_H
#define __DSM_H
#define VOLLEVELS 33
#define VOLSHIFT 1
/****************************************************************************\
* struct dsmChannel
* -----------------
* Description: DSM channel data
\****************************************************************************/
typedef struct
{
ushort pos; /* mixing position */
ushort posl; /* mixing position fraction */
ulong rate; /* playing rate in Hz */
ushort inst; /* instrument number */
uchar *sample; /* current sample data */
uchar smpType; /* current sample type */
uchar smpPos; /* current sample position */
ushort slength; /* current sample length */
ushort loopStart; /* current sample loop start */
ushort loopEnd; /* current sample loop end */
uchar looping; /* 1 if current sample is looping */
uchar instChanged; /* 1 if instrument has been changed
(Amiga Loop Emulation) */
char panning; /* panning information */
uchar volume; /* playing volume (0-64) */
uchar muted; /* 1 if channel muted, 0 if not */
uchar hasData; /* 1 if channel has data to be played,
0 if not */
} dsmChannel;
/****************************************************************************\
* struct dsmInstrument
* --------------------
* Description: DSM internal instrument structure
\****************************************************************************/
typedef struct
{
void *sample; /* pointer to sample data */
uchar smpType; /* sample type */
uchar smpPos; /* sample position. see enum
dsmSmpPos */
ushort slength; /* sample length */
ushort loopStart; /* sample loop start */
ushort loopEnd; /* sample loop end */
uchar volume; /* default playing volume */
uchar looping; /* 1 if looping sample, 0 if not */
uchar inuse; /* 1 if sample is in use, 0 if not
(removed using dsmRemInstrument) */
} dsmInstrument;
#ifdef __cplusplus
extern "C" {
#endif
/****************************************************************************\
* DSM functions. See documentation on Sound Device member functions
\****************************************************************************/
int CALLING dsmInit(ushort mixRate, ushort mode);
int CALLING dsmClose(void);
int CALLING dsmOpenChannels(unsigned channels);
int CALLING dsmCloseChannels(void);
int CALLING dsmGetMixRate(ushort *mixRate);
int CALLING dsmGetMode(ushort *mode);
int CALLING dsmClearChannels(void);
int CALLING dsmMute(int mute);
int CALLING dsmPause(int pause);
int CALLING dsmSetMasterVolume(uchar masterVolume);
int CALLING dsmPlaySound(unsigned channel, ulong rate);
int CALLING dsmStopSound(unsigned channel);
int CALLING dsmSetRate(unsigned channel, ulong rate);
int CALLING dsmGetRate(unsigned channel, ulong *rate);
int CALLING dsmSetVolume(unsigned channel, uchar volume);
int CALLING dsmSetInstrument(unsigned channel, ushort inst);
int CALLING dsmSetPosition(unsigned channel, ushort pos);
int CALLING dsmGetPosition(unsigned channel, ushort *pos);
int CALLING dsmSetPanning(unsigned channel, short panning);
int CALLING dsmGetPanning(unsigned channel, short *panning);
int CALLING dsmMuteChannel(unsigned channel, int mute);
int CALLING dsmAddInstrument(void far *sample, int smpType, ushort length,
ushort loopStart, ushort loopEnd, uchar volume,
int loop, ushort *instHandle);
int CALLING dsmRemInstrument(ushort inst);
int CALLING dsmSetUpdRate(ushort updRate);
int CALLING dsmPlay(int *callMP);
#ifdef __cplusplus
}
#endif
extern dmaBuffer dsmBuffer; /* mixing buffer */
extern ushort dsmDMAPos;
/****************************************************************************\
* enum dsmFunctIDs
* ----------------
* Description: ID numbers for DSM functions
\****************************************************************************/
enum dsmFunctIDs
{
ID_dsmInit = ID_dsm,
ID_dsmClose,
ID_dsmOpenChannels,
ID_dsmCloseChannels,
ID_dsmGetMixRate,
ID_dsmGetMode,
ID_dsmClearChannels,
ID_dsmMute,
ID_dsmPause,
ID_dsmSetMasterVolume,
ID_dsmPlaySound,
ID_dsmStopSound,
ID_dsmSetRate,
ID_dsmGetRate,
ID_dsmSetVolume,
ID_dsmSetInstrument,
ID_dsmSetPosition,
ID_dsmGetPosition,
ID_dsmSetPanning,
ID_dsmGetPanning,
ID_dsmMuteChannel,
ID_dsmAddInstrument,
ID_dsmRemInstrument,
ID_dsmSetUpdRate,
ID_dsmPlay,
ID_dsmMixData
};
#endif