⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mikmod_internals.h

📁 wince下著名的视频播放器源码
💻 H
📖 第 1 页 / 共 2 页
字号:
	VOL_VOLUME = 1,	VOL_PANNING,	VOL_VOLSLIDE,	VOL_PITCHSLIDEDN,	VOL_PITCHSLIDEUP,	VOL_PORTAMENTO,	VOL_VIBRATO};/* IT resonant filter information */#define	UF_MAXMACRO		0x10#define	UF_MAXFILTER	0x100#define FILT_CUT		0x80#define FILT_RESONANT	0x81typedef struct FILTER {    UBYTE filter,inf;} FILTER;/*========== Instruments *//* Instrument format flags */#define IF_OWNPAN       1#define IF_PITCHPAN     2/* Envelope flags: */#define EF_ON           1#define EF_SUSTAIN      2#define EF_LOOP         4#define EF_VOLENV       8/* New Note Action Flags */#define NNA_CUT         0#define NNA_CONTINUE    1#define NNA_OFF         2#define NNA_FADE        3#define NNA_MASK        3#define DCT_OFF         0#define DCT_NOTE        1#define DCT_SAMPLE      2#define DCT_INST        3#define DCA_CUT         0#define DCA_OFF         1#define DCA_FADE        2#define KEY_KICK        0#define KEY_OFF         1#define KEY_FADE        2#define KEY_KILL        (KEY_OFF|KEY_FADE)#define KICK_ABSENT     0#define KICK_NOTE       1#define KICK_KEYOFF     2#define KICK_ENV        4#define AV_IT           1   /* IT vs. XM vibrato info *//*========== Playing */#define POS_NONE        (-2)	/* no loop position defined */#define	LAST_PATTERN	(UWORD)(-1)	/* special ``end of song'' pattern */typedef struct ENVPR {	UBYTE  flg;          /* envelope flag */	UBYTE  pts;          /* number of envelope points */	UBYTE  susbeg;       /* envelope sustain index begin */	UBYTE  susend;       /* envelope sustain index end */	UBYTE  beg;          /* envelope loop begin */	UBYTE  end;          /* envelope loop end */	SWORD  p;            /* current envelope counter */	UWORD  a;            /* envelope index a */	UWORD  b;            /* envelope index b */	ENVPT* env;          /* envelope points */} ENVPR;typedef struct MP_CHANNEL {	INSTRUMENT* i;	SAMPLE*     s;	UBYTE       sample;       /* which sample number */	UBYTE       note;         /* the audible note as heard, direct rep of period */	SWORD       outvolume;    /* output volume (vol + sampcol + instvol) */	SBYTE       chanvol;      /* channel's "global" volume */	UWORD       fadevol;      /* fading volume rate */	SWORD       panning;      /* panning position */	UBYTE       kick;         /* if true = sample has to be restarted */	UBYTE       kick_flag;    /* kick has been true */	UWORD       period;       /* period to play the sample at */	UBYTE       nna;          /* New note action type + master/slave flags */	UBYTE       volflg;       /* volume envelope settings */	UBYTE       panflg;       /* panning envelope settings */	UBYTE       pitflg;       /* pitch envelope settings */	UBYTE       keyoff;       /* if true = fade out and stuff */	SWORD       handle;       /* which sample-handle */	UBYTE       notedelay;    /* (used for note delay) */	SLONG       start;        /* The starting byte index in the sample */} MP_CHANNEL;typedef struct MP_CONTROL {	struct MP_CHANNEL	main;	struct MP_VOICE	*slave;	  /* Audio Slave of current effects control channel */	UBYTE       slavechn;     /* Audio Slave of current effects control channel */	UBYTE       muted;        /* if set, channel not played */	UWORD		ultoffset;    /* fine sample offset memory */	UBYTE       anote;        /* the note that indexes the audible */	UBYTE		oldnote;	SWORD       ownper;	SWORD       ownvol;	UBYTE       dca;          /* duplicate check action */	UBYTE       dct;          /* duplicate check type */	UBYTE*      row;          /* row currently playing on this channel */	SBYTE       retrig;       /* retrig value (0 means don't retrig) */	ULONG       speed;        /* what finetune to use */	SWORD       volume;       /* amiga volume (0 t/m 64) to play the sample at */	SWORD       tmpvolume;    /* tmp volume */	UWORD       tmpperiod;    /* tmp period */	UWORD       wantedperiod; /* period to slide to (with effect 3 or 5) */	UBYTE       arpmem;       /* arpeggio command memory */	UBYTE       pansspd;      /* panslide speed */	UWORD       slidespeed;	UWORD       portspeed;    /* noteslide speed (toneportamento) */	UBYTE       s3mtremor;    /* s3m tremor (effect I) counter */	UBYTE       s3mtronof;    /* s3m tremor ontime/offtime */	UBYTE       s3mvolslide;  /* last used volslide */	SBYTE       sliding;	UBYTE       s3mrtgspeed;  /* last used retrig speed */	UBYTE       s3mrtgslide;  /* last used retrig slide */	UBYTE       glissando;    /* glissando (0 means off) */	UBYTE       wavecontrol;	SBYTE       vibpos;       /* current vibrato position */	UBYTE       vibspd;       /* "" speed */	UBYTE       vibdepth;     /* "" depth */	SBYTE       trmpos;       /* current tremolo position */	UBYTE       trmspd;       /* "" speed */	UBYTE       trmdepth;     /* "" depth */	UBYTE       fslideupspd;	UBYTE       fslidednspd;	UBYTE       fportupspd;   /* fx E1 (extra fine portamento up) data */	UBYTE       fportdnspd;   /* fx E2 (extra fine portamento dn) data */	UBYTE       ffportupspd;  /* fx X1 (extra fine portamento up) data */	UBYTE       ffportdnspd;  /* fx X2 (extra fine portamento dn) data */	ULONG       hioffset;     /* last used high order of sample offset */	UWORD       soffset;      /* last used low order of sample-offset (effect 9) */	UBYTE       sseffect;     /* last used Sxx effect */	UBYTE       ssdata;       /* last used Sxx data info */	UBYTE       chanvolslide; /* last used channel volume slide */	UBYTE       panbwave;     /* current panbrello waveform */	UBYTE       panbpos;      /* current panbrello position */	SBYTE       panbspd;      /* "" speed */	UBYTE       panbdepth;    /* "" depth */	UWORD       newsamp;      /* set to 1 upon a sample / inst change */	UBYTE       voleffect;    /* Volume Column Effect Memory as used by IT */	UBYTE       voldata;      /* Volume Column Data Memory */	SWORD       pat_reppos;   /* patternloop position */	UWORD       pat_repcnt;   /* times to loop */} MP_CONTROL;/* Used by NNA only player (audio control.  AUDTMP is used for full effects   control). */typedef struct MP_VOICE {	struct MP_CHANNEL	main;	ENVPR       venv;	ENVPR       penv;	ENVPR       cenv;	UWORD       avibpos;      /* autovibrato pos */	UWORD       aswppos;      /* autovibrato sweep pos */	ULONG       totalvol;     /* total volume of channel (before global mixings) */	BOOL        mflag;	SWORD       masterchn;	UWORD       masterperiod;	MP_CONTROL* master;       /* index of "master" effects channel */} MP_VOICE;/*========== Loaders */typedef struct MLOADER {struct MLOADER* next;	CHAR*       type;	CHAR*       version;	BOOL        (*Init)(void);	BOOL        (*Test)(void);	BOOL        (*Load)(BOOL);	void        (*Cleanup)(void);	CHAR*       (*LoadTitle)(void);} MLOADER;/* internal loader variables */extern MREADER* modreader;extern UWORD   finetune[16];extern MODULE  of;                  /* static unimod loading space */extern UWORD   npertab[7*OCTAVE];   /* used by the original MOD loaders */extern SBYTE   remap[UF_MAXCHAN];   /* for removing empty channels */extern UBYTE*  poslookup;           /* lookup table for pattern jumps after                                      blank pattern removal */extern UBYTE   poslookupcnt;extern UWORD*  origpositions;extern BOOL    filters;             /* resonant filters in use */extern UBYTE   activemacro;         /* active midi macro number for Sxx */extern UBYTE   filtermacros[UF_MAXMACRO];    /* midi macro settings */extern FILTER  filtersettings[UF_MAXFILTER]; /* computed filter settings */extern int*    noteindex;/*========== Internal loader interface */extern BOOL   ReadComment(UWORD);extern BOOL   ReadLinedComment(UWORD,UWORD);extern BOOL   AllocPositions(int);extern BOOL   AllocPatterns(void);extern BOOL   AllocTracks(void);extern BOOL   AllocInstruments(void);extern BOOL   AllocSamples(void);extern CHAR*  DupStr(CHAR*,UWORD,BOOL);/* loader utility functions */extern int*   AllocLinear(void);extern void   FreeLinear(void);extern int    speed_to_finetune(ULONG,int);extern void   S3MIT_ProcessCmd(UBYTE,UBYTE,unsigned int);extern void   S3MIT_CreateOrders(BOOL);/* flags for S3MIT_ProcessCmd */#define	S3MIT_OLDSTYLE	1	/* behave as old scream tracker */#define	S3MIT_IT		2	/* behave as impulse tracker */#define	S3MIT_SCREAM	4	/* enforce scream tracker specific limits *//* used to convert c4spd to linear XM periods (IT and IMF loaders). */extern UWORD  getlinearperiod(UWORD,ULONG);extern ULONG  getfrequency(UWORD,ULONG);/* loader shared data */#define STM_NTRACKERS 3extern CHAR *STM_Signatures[STM_NTRACKERS];/*========== Player interface */extern BOOL   Player_Init(MODULE*);extern void   Player_Exit(MODULE*);extern void   Player_HandleTick(void);/*========== Drivers *//* max. number of handles a driver has to provide. (not strict) */#define MAXSAMPLEHANDLES 384/* These variables can be changed at ANY time and results will be immediate */extern UWORD md_bpm;         /* current song / hardware BPM rate *//* Variables below can be changed via MD_SetNumVoices at any time. However, a   call to MD_SetNumVoicess while the driver is active will cause the sound to   skip slightly. */extern UBYTE md_numchn;      /* number of song + sound effects voices */extern UBYTE md_sngchn;      /* number of song voices */extern UBYTE md_sfxchn;      /* number of sound effects voices */extern UBYTE md_hardchn;     /* number of hardware mixed voices */extern UBYTE md_softchn;     /* number of software mixed voices *//* This is for use by the hardware drivers only.  It points to the registered   tickhandler function. */extern void (*md_player)(void);extern SWORD  MD_SampleLoad(SAMPLOAD*,int);extern void   MD_SampleUnload(SWORD);extern ULONG  MD_SampleSpace(int);extern ULONG  MD_SampleLength(int,SAMPLE*);/* uLaw conversion */extern void unsignedtoulaw(char *,int);/* Parameter extraction helper */extern CHAR  *MD_GetAtom(CHAR*,CHAR*,BOOL);/* Internal software mixer stuff */extern void VC_SetupPointers(void);extern BOOL VC1_Init(void);extern BOOL VC2_Init(void);#if defined(unix) || defined(__APPLE__) && defined(__MACH__)/* POSIX helper functions */extern BOOL MD_Access(CHAR *);extern BOOL MD_DropPrivileges(void);#endif/* Macro to define a missing driver, yet allowing binaries to dynamically link   with the library without missing symbol errors */#define MISSING(a) MDRIVER a = { NULL, NULL, NULL, 0, 0 }/*========== Prototypes for non-MT safe versions of some public functions */extern void _mm_registerdriver(struct MDRIVER*);extern void _mm_registerloader(struct MLOADER*);extern BOOL MikMod_Active_internal(void);extern void MikMod_DisableOutput_internal(void);extern BOOL MikMod_EnableOutput_internal(void);extern void MikMod_Exit_internal(void);extern BOOL MikMod_SetNumVoices_internal(int,int);extern void Player_Exit_internal(MODULE*);extern void Player_Stop_internal(void);extern BOOL Player_Paused_internal(void);extern void Sample_Free_internal(SAMPLE*);extern void Voice_Play_internal(SBYTE,SAMPLE*,ULONG);extern void Voice_SetFrequency_internal(SBYTE,ULONG);extern void Voice_SetPanning_internal(SBYTE,ULONG);extern void Voice_SetVolume_internal(SBYTE,UWORD);extern void Voice_Stop_internal(SBYTE);extern BOOL Voice_Stopped_internal(SBYTE);#ifdef __cplusplus}#endif#endif/* ex:set ts=4: */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -