home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Hack-Phreak Scene Programs
/
cleanhpvac.zip
/
cleanhpvac
/
CONTRSRC.ZIP
/
SRC
/
MOD.H
< prev
next >
Wrap
C/C++ Source or Header
|
1994-08-06
|
7KB
|
234 lines
/* MOD.H
*
* ProTracker Module Player, v1.10
*
* 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 __MOD_H
#define __MOD_H
/****************************************************************************\
* struct modInstHdr
* -----------------
* Description: Protracker module instrument header. Note that all 16-bit
* fields are big-endian.
\****************************************************************************/
typedef struct
{
char iname[22]; /* instrument name */
ushort slength; /* sample length */
uchar finetune; /* sample finetune value */
uchar volume; /* sample default volume */
ushort loopStart; /* sample loop start, in words */
ushort loopLength; /* sample loop length, in words */
} modInstHdr;
/****************************************************************************\
* struct modHeader
* ----------------
* Description: Protracker module file header
\****************************************************************************/
typedef struct
{
char songName[20]; /* song name */
modInstHdr instruments[31]; /* instrument headers */
uchar songLength; /* song length */
uchar unused; /* unused by Protracker, used to be
song restart position */
uchar orders[128]; /* pattern playing orders */
char sign[4]; /* module signature */
} modHeader;
/****************************************************************************\
* .MTM stuff. Not used currently
\****************************************************************************/
typedef struct
{
char iName[22];
ulong sLength;
ulong loopStart;
ulong loopEnd;
uchar fineTune;
uchar volume;
struct attributes
{
int bits : 1;
int unsused : 7;
} attr;
} mtmInstHdr;
typedef struct
{
char sign[3];
uchar version;
char sName[20];
ushort numTracks;
uchar lastPattern;
uchar lastOrder;
ushort lenComment;
uchar numInsts;
uchar attribute;
uchar beatsPerTrack;
uchar amountTracks;
uchar panPositions[32];
mtmInstHdr instruments[];
} mtmHdr;
/****************************************************************************\
* struct modChannel
* -----------------
* Description: Protracker Module Player internal channel structure
\****************************************************************************/
typedef struct
{
uchar note;
uchar inst;
uchar cmd;
uchar info;
uchar comp;
uchar sample;
uchar volume;
ushort period;
ushort snote;
uchar loff;
uchar coff;
ushort toperi;
uchar notepsp;
uchar retrigc;
uchar status;
uchar vibcmd;
uchar vibpos;
uchar trecmd;
uchar trepos;
uchar volbar;
ushort playoff;
} modChannel;
extern ModulePlayer mpMOD; /* Protracker Module Player */
#ifdef __cplusplus
extern "C" {
#endif
/****************************************************************************\
*
* Function: int modLoadModule(char *fileName, SoundDevice *SD,
* mpModule **module);
*
* Description: Loads a Protracker module into memory
*
* Input: char *fileName name of module file to be loaded
* SoundDevice *SD Sound Device which will store the
* samples
* mpModule **module pointer to variable which will store
* the module pointer.
*
* Returns: MIDAS error code.
* Pointer to module structure is stored in *module.
*
\****************************************************************************/
int CALLING modLoadModule(char *fileName, SoundDevice *SD, mpModule **module);
/****************************************************************************\
*
* Function: int modFreeModule(mpModule *module, SoundDevice *SD);
*
* Description: Deallocates a Protracker module
*
* Input: mpModule *module module to be deallocated
* SoundDevice *SD Sound Device that has stored the
* samples
*
* Returns: MIDAS error code
*
\****************************************************************************/
int CALLING modFreeModule(mpModule *module, SoundDevice *sd);
int CALLING modConvertSample(uchar *sample, ushort length);
int CALLING modConvertTrack(void *track, ushort type, ushort *trackLen);
int CALLING modIdentify(uchar *header, int *recognized);
int CALLING modInit(SoundDevice *SD);
int CALLING modClose(void);
int CALLING modPlayModule(mpModule *module, ushort firstSDChannel,
ushort numSDChannels, ushort loopStart, ushort loopEnd);
int CALLING modStopModule(void);
int CALLING modSetInterrupt(void);
int CALLING modRemoveInterrupt(void);
int CALLING modPlay(void);
int CALLING modSetPosition(ushort pos);
int CALLING modGetInformation(mpInformation *info);
/****************************************************************************\
* enum modFunctIDs
* ----------------
* Description: ID numbers for Protracker Module Player functions
\****************************************************************************/
enum modFunctIDs
{
ID_modIdentify = ID_mod,
ID_modInit,
ID_modClose,
ID_modLoadModule,
ID_modFreeModule,
ID_modPlayModule,
ID_modStopModule,
ID_modSetInterrupt,
ID_modRemoveInterrupt,
ID_modPlay,
ID_modSetPosition,
ID_modGetInformation,
ID_modConvertSample,
ID_modConvertTrack
};
#ifdef __cplusplus
}
#endif
#endif