/* MikMod sound library (c) 1998, 1999, 2000 Miodrag Vallat and others - see file AUTHORS for complete list. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*============================================================================== $Id: mikmod.h.in,v 1.40 2000/12/27 21:38:57 miod Exp $ MikMod sound library include file Modified by ozzy@Orkysquad on 23/08/2001 added MDRIVER drv_ds_raw driver. Disabled @ characters (0x40) ==============================================================================*/ #ifndef _MIKMOD_H_ #define _MIKMOD_H_ #include #include /* * ========== Compiler magic for shared libraries */ #if defined WIN32 && defined _DLL #ifdef DLL_EXPORTS #define MIKMODAPI __declspec(dllexport) #else #define MIKMODAPI __declspec(dllimport) #endif #else #define MIKMODAPI #endif /* * ========== Library version */ #define LIBMIKMOD_VERSION_MAJOR LIBMIKMOD_MAJOR_VERSIONL #define LIBMIKMOD_VERSION_MINOR LIBMIKMOD_MINOR_VERSIONL #define LIBMIKMOD_REVISION LIBMIKMOD_MICRO_VERSIONL #define LIBMIKMOD_VERSION \ ((LIBMIKMOD_VERSION_MAJOR<<16)| \ (LIBMIKMOD_VERSION_MINOR<< 8)| \ (LIBMIKMOD_REVISION)) MIKMODAPI extern long MikMod_GetVersion(void); /* * ========== Platform independent-type definitions */ #include #include #include /*@DOES_NOT_HAVE_SIGNED@*/ #if defined(__alpha) /* 64 bit architectures */ typedef signed char SBYTE; /* 1 byte, signed */ typedef unsigned char UBYTE; /* 1 byte, unsigned */ //typedef signed short signed short; /* 2 bytes, signed */ //typedef unsigned short unsigned int; /* 2 bytes, unsigned */ typedef signed int SLONG; /* 4 bytes, signed */ typedef unsigned int ULONG; /* 4 bytes, unsigned */ typedef int int; /* 0=false, <>0 true */ #else /* 32 bit architectures */ typedef signed char SBYTE; /* 1 byte, signed */ typedef unsigned char UBYTE; /* 1 byte, unsigned */ //qbism//jf 02-10-15 typedef signed short signed short; /* 2 bytes, signed */ //qbism//jf 02-10-15 typedef unsigned short unsigned int; /* 2 bytes, unsigned */ typedef signed long SLONG; /* 4 bytes, signed */ #if !defined(__OS2__)&&!defined(__EMX__)&&!defined(WIN32) typedef unsigned long ULONG; /* 4 bytes, unsigned */ typedef int int; /* 0=false, <>0 true */ #endif #endif //HACK HACK HACK /* * ========== Error codes */ enum { MMERR_OPENING_FILE = 1, MMERR_OUT_OF_MEMORY, MMERR_DYNAMIC_LINKING, MMERR_SAMPLE_TOO_BIG, MMERR_OUT_OF_HANDLES, MMERR_UNKNOWN_WAVE_TYPE, MMERR_LOADING_PATTERN, MMERR_LOADING_TRACK, MMERR_LOADING_HEADER, MMERR_LOADING_SAMPLEINFO, MMERR_NOT_A_MODULE, MMERR_NOT_A_STREAM, MMERR_MED_SYNTHSAMPLES, MMERR_ITPACK_INVALID_DATA, MMERR_DETECTING_DEVICE, MMERR_INVALID_DEVICE, MMERR_INITIALIZING_MIXER, MMERR_OPENING_AUDIO, MMERR_8BIT_ONLY, MMERR_16BIT_ONLY, MMERR_STEREO_ONLY, MMERR_ULAW, MMERR_NON_BLOCK, MMERR_AF_AUDIO_PORT, MMERR_AIX_CONFIG_INIT, MMERR_AIX_CONFIG_CONTROL, MMERR_AIX_CONFIG_START, MMERR_GUS_SETTINGS, MMERR_GUS_RESET, MMERR_GUS_TIMER, MMERR_HP_SETSAMPLESIZE, MMERR_HP_SETSPEED, MMERR_HP_CHANNELS, MMERR_HP_AUDIO_OUTPUT, MMERR_HP_AUDIO_DESC, MMERR_HP_BUFFERSIZE, MMERR_OSS_SETFRAGMENT, MMERR_OSS_SETSAMPLESIZE, MMERR_OSS_SETSTEREO, MMERR_OSS_SETSPEED, MMERR_SGI_SPEED, MMERR_SGI_16BIT, MMERR_SGI_8BIT, MMERR_SGI_STEREO, MMERR_SGI_MONO, MMERR_SUN_INIT, MMERR_OS2_MIXSETUP, MMERR_OS2_SEMAPHORE, MMERR_OS2_TIMER, MMERR_OS2_THREAD, MMERR_DS_PRIORITY, MMERR_DS_BUFFER, MMERR_DS_FORMAT, MMERR_DS_NOTIFY, MMERR_DS_EVENT, MMERR_DS_THREAD, MMERR_DS_UPDATE, MMERR_WINMM_HANDLE, MMERR_WINMM_ALLOCATED, MMERR_WINMM_DEVICEID, MMERR_WINMM_FORMAT, MMERR_WINMM_UNKNOWN, MMERR_MAC_SPEED, MMERR_MAC_START, MMERR_MAX }; /* * ========== Error handling */ typedef void (MikMod_handler)(void); typedef MikMod_handler *MikMod_handler_t; MIKMODAPI extern int MikMod_errno; MIKMODAPI extern int MikMod_critical; MIKMODAPI extern char *MikMod_strerror(int); MIKMODAPI extern MikMod_handler_t MikMod_RegisterErrorHandler(MikMod_handler_t); /* * ========== Library initialization and core functions */ struct MDRIVER; MIKMODAPI extern void MikMod_RegisterAllDrivers(void); MIKMODAPI extern char* MikMod_InfoDriver(void); MIKMODAPI extern void MikMod_RegisterDriver(struct MDRIVER*); MIKMODAPI extern int MikMod_DriverFromAlias(char*); MIKMODAPI extern int MikMod_Init(char*); MIKMODAPI extern void MikMod_Exit(void); MIKMODAPI extern int MikMod_Reset(char*); MIKMODAPI extern int MikMod_SetNumVoices(int,int); MIKMODAPI extern int MikMod_Active(void); MIKMODAPI extern int MikMod_EnableOutput(void); MIKMODAPI extern void MikMod_DisableOutput(void); MIKMODAPI extern void MikMod_Update(void); MIKMODAPI extern int MikMod_InitThreads(void); MIKMODAPI extern void MikMod_Lock(void); MIKMODAPI extern void MikMod_Unlock(void); /* * ========== Reader, Writer */ typedef struct MREADER { int (*Seek)(struct MREADER*,long,int); long (*Tell)(struct MREADER*); int (*Read)(struct MREADER*,void*,size_t); int (*Get)(struct MREADER*); int (*Eof)(struct MREADER*); } MREADER; typedef struct MWRITER { int (*Seek)(struct MWRITER*,long,int); long (*Tell)(struct MWRITER*); int (*Write)(struct MWRITER*,void*,size_t); int (*Put)(struct MWRITER*,int); } MWRITER; /* * ========== Samples */ /* Sample playback should not be interrupted */ #define SFX_CRITICAL 1 /* Sample format [loading and in-memory] flags: */ #define SF_16BITS 0x0001 #define SF_STEREO 0x0002 #define SF_SIGNED 0x0004 #define SF_BIG_ENDIAN 0x0008 #define SF_DELTA 0x0010 #define SF_ITPACKED 0x0020 #define SF_FORMATMASK 0x003F /* General Playback flags */ #define SF_LOOP 0x0100 #define SF_BIDI 0x0200 #define SF_REVERSE 0x0400 #define SF_SUSTAIN 0x0800 #define SF_PLAYBACKMASK 0x0C00 /* Module-only Playback Flags */ #define SF_OWNPAN 0x1000 #define SF_UST_LOOP 0x2000 #define SF_EXTRAPLAYBACKMASK 0x3000 /* Panning constants */ #define PAN_LEFT 0 #define PAN_HALFLEFT 64 #define PAN_CENTER 128 #define PAN_HALFRIGHT 192 #define PAN_RIGHT 255 #define PAN_SURROUND 512 /* panning value for Dolby Surround */ typedef struct SAMPLE { signed short panning; /* panning (0-255 or PAN_SURROUND) */ ULONG speed; /* Base playing speed/frequency of note */ UBYTE volume; /* volume 0-64 */ unsigned int inflags; /* sample format on disk */ unsigned int flags; /* sample format in memory */ ULONG length; /* length of sample (in samples!) */ ULONG loopstart; /* repeat position (relative to start, in samples) */ ULONG loopend; /* repeat end */ ULONG susbegin; /* sustain loop begin (in samples) \ Not Supported */ ULONG susend; /* sustain loop end / Yet! */ /* Variables used by the module player only! (ignored for sound effects) */ UBYTE globvol; /* global volume */ UBYTE vibflags; /* autovibrato flag stuffs */ UBYTE vibtype; /* Vibratos moved from INSTRUMENT to SAMPLE */ UBYTE vibsweep; UBYTE vibdepth; UBYTE vibrate; char* samplename; /* name of the sample */ /* Values used internally only */ unsigned int avibpos; /* autovibrato pos [player use] */ UBYTE divfactor; /* for sample scaling, maintains proper period slides */ ULONG seekpos; /* seek position in file */ signed short handle; /* sample handle used by individual drivers */ } SAMPLE; /* Sample functions */ MIKMODAPI extern SAMPLE *Sample_Load(char*); MIKMODAPI extern SAMPLE *Sample_LoadFP(FILE*); MIKMODAPI extern SAMPLE *Sample_LoadGeneric(MREADER*); MIKMODAPI extern void Sample_Free(SAMPLE*); MIKMODAPI extern SBYTE Sample_Play(SAMPLE*,ULONG,UBYTE); MIKMODAPI extern void Voice_SetVolume(SBYTE,unsigned int); MIKMODAPI extern unsigned int Voice_GetVolume(SBYTE); MIKMODAPI extern void Voice_SetFrequency(SBYTE,ULONG); MIKMODAPI extern ULONG Voice_GetFrequency(SBYTE); MIKMODAPI extern void Voice_SetPanning(SBYTE,ULONG); MIKMODAPI extern ULONG Voice_GetPanning(SBYTE); MIKMODAPI extern void Voice_Play(SBYTE,SAMPLE*,ULONG); MIKMODAPI extern void Voice_Stop(SBYTE); MIKMODAPI extern int Voice_Stopped(SBYTE); MIKMODAPI extern SLONG Voice_GetPosition(SBYTE); MIKMODAPI extern ULONG Voice_RealVolume(SBYTE); /* * ========== Internal module representation (UniMod) */ /* Instrument definition - for information only, the only field which may be of use in user programs is the name field */ /* Instrument note count */ #define INSTNOTES 120 /* Envelope point */ typedef struct ENVPT { signed short pos; signed short val; } ENVPT; /* Envelope point count */ #define ENVPOINTS 32 /* Instrument structure */ typedef struct INSTRUMENT { char* insname; UBYTE flags; unsigned int samplenumber[INSTNOTES]; UBYTE samplenote[INSTNOTES]; UBYTE nnatype; UBYTE dca; /* duplicate check action */ UBYTE dct; /* duplicate check type */ UBYTE globvol; unsigned int volfade; signed short panning; /* instrument-based panning var */ UBYTE pitpansep; /* pitch pan separation (0 to 255) */ UBYTE pitpancenter; /* pitch pan center (0 to 119) */ UBYTE rvolvar; /* random volume varations (0 - 100%) */ UBYTE rpanvar; /* random panning varations (0 - 100%) */ /* volume envelope */ UBYTE volflg; /* bit 0: on 1: sustain 2: loop */ UBYTE volpts; UBYTE volsusbeg; UBYTE volsusend; UBYTE volbeg; UBYTE volend; ENVPT volenv[ENVPOINTS]; /* panning envelope */ UBYTE panflg; /* bit 0: on 1: sustain 2: loop */ UBYTE panpts; UBYTE pansusbeg; UBYTE pansusend; UBYTE panbeg; UBYTE panend; ENVPT panenv[ENVPOINTS]; /* pitch envelope */ UBYTE pitflg; /* bit 0: on 1: sustain 2: loop */ UBYTE pitpts; UBYTE pitsusbeg; UBYTE pitsusend; UBYTE pitbeg; UBYTE pitend; ENVPT pitenv[ENVPOINTS]; } INSTRUMENT; struct MP_CONTROL; struct MP_VOICE; /* Module definition */ /* maximum master channels supported */ #define UF_MAXCHAN 64 /* Module flags */ #define UF_XMPERIODS 0x0001 /* XM periods / finetuning */ #define UF_LINEAR 0x0002 /* LINEAR periods (UF_XMPERIODS must be set) */ #define UF_INST 0x0004 /* Instruments are used */ #define UF_NNA 0x0008 /* IT: NNA used, set numvoices rather than numchn */ #define UF_S3MSLIDES 0x0010 /* uses old S3M volume slides */ #define UF_BGSLIDES 0x0020 /* continue volume slides in the background */ #define UF_HIGHBPM 0x0040 /* MED: can use >255 bpm */ #define UF_NOWRAP 0x0080 /* XM-type (i.e. illogical) pattern break semantics */ #define UF_ARPMEM 0x0100 /* IT: need arpeggio memory */ #define UF_FT2QUIRKS 0x0200 /* emulate some FT2 replay quirks */ #define UF_PANNING 0x0400 /* module uses panning effects or have non-tracker default initial panning */ typedef struct MODULE { /* general module information */ char* songname; /* name of the song */ char* modtype; /* string type of module loaded */ char* comment; /* module comments */ unsigned int flags; /* See module flags above */ UBYTE numchn; /* number of module channels */ UBYTE numvoices; /* max # voices used for full NNA playback */ unsigned int numpos; /* number of positions in this song */ unsigned int numpat; /* number of patterns in this song */ unsigned int numins; /* number of instruments */ unsigned int numsmp; /* number of samples */ struct INSTRUMENT* instruments; /* all instruments */ struct SAMPLE* samples; /* all samples */ UBYTE realchn; /* real number of channels used */ UBYTE totalchn; /* total number of channels used (incl NNAs) */ /* playback settings */ unsigned int reppos; /* restart position */ UBYTE initspeed; /* initial song speed */ unsigned int inittempo; /* initial song tempo */ UBYTE initvolume; /* initial global volume (0 - 128) */ unsigned int panning[UF_MAXCHAN]; /* panning positions */ UBYTE chanvol[UF_MAXCHAN]; /* channel positions */ unsigned int bpm; /* current beats-per-minute speed */ unsigned int sngspd; /* current song speed */ signed short volume; /* song volume (0-128) (or user volume) */ int extspd; /* extended speed flag (default enabled) */ int panflag; /* panning flag (default enabled) */ int wrap; /* wrap module ? (default disabled) */ int loop; /* allow module to loop ? (default enabled) */ int fadeout; /* volume fade out during last pattern */ unsigned int patpos; /* current row number */ signed short sngpos; /* current song position */ ULONG sngtime; /* current song time in 2^-10 seconds */ signed short relspd; /* relative speed factor */ /* internal module representation */ unsigned int numtrk; /* number of tracks */ UBYTE** tracks; /* array of numtrk pointers to tracks */ unsigned int* patterns; /* array of Patterns */ unsigned int* pattrows; /* array of number of rows for each pattern */ unsigned int* positions; /* all positions */ int forbid; /* if true, no player update! */ unsigned int numrow; /* number of rows on current pattern */ unsigned int vbtick; /* tick counter (counts from 0 to sngspd) */ unsigned int sngremainder;/* used for song time computation */ struct MP_CONTROL* control; /* Effects Channel info (size pf->numchn) */ struct MP_VOICE* voice; /* Audio Voice information (size md_numchn) */ UBYTE globalslide; /* global volume slide rate */ UBYTE pat_repcrazy;/* module has just looped to position -1 */ unsigned int patbrk; /* position where to start a new pattern */ UBYTE patdly; /* patterndelay counter (command memory) */ UBYTE patdly2; /* patterndelay counter (real one) */ signed short posjmp; /* flag to indicate a jump is needed... */ } MODULE; /* * ========== Module loaders */ struct MLOADER; MIKMODAPI extern char* MikMod_InfoLoader(void); MIKMODAPI extern void MikMod_RegisterAllLoaders(void); MIKMODAPI extern void MikMod_RegisterLoader(struct MLOADER*); MIKMODAPI extern struct MLOADER load_669; /* 669 and Extended-669 (by Tran/Renaissance) */ MIKMODAPI extern struct MLOADER load_amf; /* DMP Advanced Module Format (by Otto Chrons) */ MIKMODAPI extern struct MLOADER load_dsm; /* DSIK internal module format */ MIKMODAPI extern struct MLOADER load_far; /* Farandole Composer (by Daniel Potter) */ MIKMODAPI extern struct MLOADER load_gdm; /* General DigiMusic (by Edward Schlunder) */ MIKMODAPI extern struct MLOADER load_it; /* Impulse Tracker (by Jeffrey Lim) */ MIKMODAPI extern struct MLOADER load_imf; /* Imago Orpheus (by Lutz Roeder) */ MIKMODAPI extern struct MLOADER load_med; /* Amiga MED modules (by Teijo Kinnunen) */ MIKMODAPI extern struct MLOADER load_m15; /* Soundtracker 15-instrument */ MIKMODAPI extern struct MLOADER load_mod; /* Standard 31-instrument Module loader */ MIKMODAPI extern struct MLOADER load_mtm; /* Multi-Tracker Module (by Renaissance) */ MIKMODAPI extern struct MLOADER load_okt; /* Amiga Oktalyzer */ MIKMODAPI extern struct MLOADER load_stm; /* ScreamTracker 2 (by Future Crew) */ MIKMODAPI extern struct MLOADER load_stx; /* STMIK 0.2 (by Future Crew) */ MIKMODAPI extern struct MLOADER load_s3m; /* ScreamTracker 3 (by Future Crew) */ MIKMODAPI extern struct MLOADER load_ult; /* UltraTracker (by MAS) */ MIKMODAPI extern struct MLOADER load_uni; /* MikMod and APlayer internal module format */ MIKMODAPI extern struct MLOADER load_xm; /* FastTracker 2 (by Triton) */ /* * ========== Module player */ MIKMODAPI extern MODULE* Player_Load(char*,int,int); MIKMODAPI extern MODULE* Player_LoadFP(FILE*,int,int); MIKMODAPI extern MODULE* Player_LoadGeneric(MREADER*,int,int); MIKMODAPI extern char* Player_LoadTitle(char*); MIKMODAPI extern char* Player_LoadTitleFP(FILE*); MIKMODAPI extern void Player_Free(MODULE*); MIKMODAPI extern void Player_Start(MODULE*); MIKMODAPI extern int Player_Active(void); MIKMODAPI extern void Player_Stop(void); MIKMODAPI extern void Player_TogglePause(void); MIKMODAPI extern int Player_Paused(void); MIKMODAPI extern void Player_NextPosition(void); MIKMODAPI extern void Player_PrevPosition(void); MIKMODAPI extern void Player_SetPosition(unsigned int); MIKMODAPI extern int Player_Muted(UBYTE); MIKMODAPI extern void Player_SetVolume(signed short); MIKMODAPI extern MODULE* Player_GetModule(void); MIKMODAPI extern void Player_SetSpeed(unsigned int); MIKMODAPI extern void Player_SetTempo(unsigned int); MIKMODAPI extern void Player_Unmute(SLONG,...); MIKMODAPI extern void Player_Mute(SLONG,...); MIKMODAPI extern void Player_ToggleMute(SLONG,...); MIKMODAPI extern int Player_GetChannelVoice(UBYTE); MIKMODAPI extern unsigned int Player_GetChannelPeriod(UBYTE); typedef void (MikMod_player)(void); typedef MikMod_player *MikMod_player_t; MIKMODAPI extern MikMod_player_t MikMod_RegisterPlayer(MikMod_player_t); #define MUTE_EXCLUSIVE 32000 #define MUTE_INCLUSIVE 32001 /* * ========== Drivers */ enum { MD_MUSIC = 0, MD_SNDFX }; enum { MD_HARDWARE = 0, MD_SOFTWARE }; /* Mixing flags */ /* These ones take effect only after MikMod_Init or MikMod_Reset */ #define DMODE_16BITS 0x0001 /* enable 16 bit output */ #define DMODE_STEREO 0x0002 /* enable stereo output */ #define DMODE_SOFT_SNDFX 0x0004 /* Process sound effects via software mixer */ #define DMODE_SOFT_MUSIC 0x0008 /* Process music via software mixer */ #define DMODE_HQMIXER 0x0010 /* Use high-quality (slower) software mixer */ /* These take effect immediately. */ #define DMODE_SURROUND 0x0100 /* enable surround sound */ #define DMODE_INTERP 0x0200 /* enable interpolation */ #define DMODE_REVERSE 0x0400 /* reverse stereo */ struct SAMPLOAD; typedef struct MDRIVER { struct MDRIVER* next; char* Name; char* Version; UBYTE HardVoiceLimit; /* Limit of hardware mixer voices */ UBYTE SoftVoiceLimit; /* Limit of software mixer voices */ char* Alias; void (*CommandLine) (char*); int (*IsPresent) (void); signed short (*SampleLoad) (struct SAMPLOAD*,int); void (*SampleUnload) (signed short); ULONG (*FreeSampleSpace) (int); ULONG (*RealSampleLength) (int,struct SAMPLE*); int (*Init) (void); void (*Exit) (void); int (*Reset) (void); int (*SetNumVoices) (void); int (*PlayStart) (void); void (*PlayStop) (void); void (*Update) (void); void (*Pause) (void); void (*VoiceSetVolume) (UBYTE,unsigned int); unsigned int (*VoiceGetVolume) (UBYTE); void (*VoiceSetFrequency)(UBYTE,ULONG); ULONG (*VoiceGetFrequency)(UBYTE); void (*VoiceSetPanning) (UBYTE,ULONG); ULONG (*VoiceGetPanning) (UBYTE); void (*VoicePlay) (UBYTE,signed short,ULONG,ULONG,ULONG,ULONG,unsigned int); void (*VoiceStop) (UBYTE); int (*VoiceStopped) (UBYTE); SLONG (*VoiceGetPosition) (UBYTE); ULONG (*VoiceRealVolume) (UBYTE); } MDRIVER; /* These variables can be changed at ANY time and results will be immediate */ MIKMODAPI extern UBYTE md_volume; /* global sound volume (0-128) */ MIKMODAPI extern UBYTE md_musicvolume; /* volume of song */ MIKMODAPI extern UBYTE md_sndfxvolume; /* volume of sound effects */ MIKMODAPI extern UBYTE md_reverb; /* 0 = none; 15 = chaos */ MIKMODAPI extern UBYTE md_pansep; /* 0 = mono; 128 == 100% (full left/right) */ /* The variables below can be changed at any time, but changes will not be implemented until MikMod_Reset is called. A call to MikMod_Reset may result in a skip or pop in audio (depending on the soundcard driver and the settings changed). */ MIKMODAPI extern unsigned int md_device; /* device */ MIKMODAPI extern unsigned int md_mixfreq; /* mixing frequency */ MIKMODAPI extern unsigned int md_mode; /* mode. See DMODE_? flags above */ /* The following variable should not be changed! */ MIKMODAPI extern MDRIVER* md_driver; /* Current driver in use. */ /* Known drivers list */ MIKMODAPI extern struct MDRIVER drv_nos; /* no sound */ MIKMODAPI extern struct MDRIVER drv_pipe; /* piped output */ MIKMODAPI extern struct MDRIVER drv_raw; /* raw file disk writer [music.raw] */ MIKMODAPI extern struct MDRIVER drv_stdout; /* output to stdout */ MIKMODAPI extern struct MDRIVER drv_wav; /* RIFF WAVE file disk writer [music.wav] */ MIKMODAPI extern struct MDRIVER drv_ultra; /* Linux Ultrasound driver */ MIKMODAPI extern struct MDRIVER drv_sam9407; /* Linux sam9407 driver */ MIKMODAPI extern struct MDRIVER drv_AF; /* Dec Alpha AudioFile */ MIKMODAPI extern struct MDRIVER drv_aix; /* AIX audio device */ MIKMODAPI extern struct MDRIVER drv_alsa; /* Advanced Linux Sound Architecture (ALSA) */ MIKMODAPI extern struct MDRIVER drv_esd; /* Enlightened sound daemon (EsounD) */ MIKMODAPI extern struct MDRIVER drv_hp; /* HP-UX audio device */ MIKMODAPI extern struct MDRIVER drv_oss; /* OpenSound System (Linux,FreeBSD...) */ MIKMODAPI extern struct MDRIVER drv_sgi; /* SGI audio library */ MIKMODAPI extern struct MDRIVER drv_sun; /* Sun/NetBSD/OpenBSD audio device */ MIKMODAPI extern struct MDRIVER drv_dart; /* OS/2 Direct Audio RealTime */ MIKMODAPI extern struct MDRIVER drv_os2; /* OS/2 MMPM/2 */ MIKMODAPI extern struct MDRIVER drv_ds_raw; /* Windows DirectX3 software mixing - jm & ozzy */ MIKMODAPI extern struct MDRIVER drv_ds; /* Win32 DirectSound driver */ MIKMODAPI extern struct MDRIVER drv_win; /* Win32 multimedia API driver */ MIKMODAPI extern struct MDRIVER drv_mac; /* Macintosh Sound Manager driver */ /*========== Virtual channel mixer interface (for user-supplied drivers only) */ MIKMODAPI extern int VC_Init(void); MIKMODAPI extern void VC_Exit(void); MIKMODAPI extern int VC_SetNumVoices(void); MIKMODAPI extern ULONG VC_SampleSpace(int); MIKMODAPI extern ULONG VC_SampleLength(int,SAMPLE*); MIKMODAPI extern int VC_PlayStart(void); MIKMODAPI extern void VC_PlayStop(void); MIKMODAPI extern signed short VC_SampleLoad(struct SAMPLOAD*,int); MIKMODAPI extern void VC_SampleUnload(signed short); MIKMODAPI extern ULONG VC_WriteBytes(SBYTE*,ULONG); MIKMODAPI extern ULONG VC_SilenceBytes(SBYTE*,ULONG); MIKMODAPI extern void VC_VoiceSetVolume(UBYTE,unsigned int); MIKMODAPI extern unsigned int VC_VoiceGetVolume(UBYTE); MIKMODAPI extern void VC_VoiceSetFrequency(UBYTE,ULONG); MIKMODAPI extern ULONG VC_VoiceGetFrequency(UBYTE); MIKMODAPI extern void VC_VoiceSetPanning(UBYTE,ULONG); MIKMODAPI extern ULONG VC_VoiceGetPanning(UBYTE); MIKMODAPI extern void VC_VoicePlay(UBYTE,signed short,ULONG,ULONG,ULONG,ULONG,unsigned int); MIKMODAPI extern void VC_VoiceStop(UBYTE); MIKMODAPI extern int VC_VoiceStopped(UBYTE); MIKMODAPI extern SLONG VC_VoiceGetPosition(UBYTE); MIKMODAPI extern ULONG VC_VoiceRealVolume(UBYTE); #endif /* ex:set ts=4: */