📄 xmp.h
字号:
/* Extended Module Player * Copyright (C) 1996-1999 Claudio Matsuoka and Hipolito Carraro Jr * * This file is part of the Extended Module Player and is distributed * under the terms of the GNU General Public License. See doc/COPYING * for more information. * * $Id: xmp.h,v 1.1 2001/10/28 20:18:12 mariuss Exp $ */#ifndef __XMP_H#define __XMP_H#define XMP_DEF_NAMESIZE 64#define XMP_OK 0x00#define XMP_KEY_OFF 0x61#define XMP_KEY_CUT 0x62#define XMP_KEY_FADE 0x63/* DSP effects */#define XMP_FX_CHORUS 0x00#define XMP_FX_REVERB 0x01#define XMP_FX_CUTOFF 0x02#define XMP_FX_RESONANCE 0x03#define XMP_FX_FILTER_B0 0xb0#define XMP_FX_FILTER_B1 0xb1#define XMP_FX_FILTER_B2 0xb2/* Event echo messages */#define XMP_ECHO_NONE 0x00#define XMP_ECHO_END 0x01#define XMP_ECHO_BPM 0x02#define XMP_ECHO_VOL 0x03#define XMP_ECHO_INS 0x04#define XMP_ECHO_ORD 0x05#define XMP_ECHO_ROW 0x06#define XMP_ECHO_CHN 0x07#define XMP_ECHO_PBD 0x08#define XMP_ECHO_GVL 0x09#define XMP_ECHO_NCH 0x0a/* xmp_player_ctl arguments */#define XMP_ORD_NEXT 0x00#define XMP_ORD_PREV 0x01#define XMP_ORD_SET 0x02#define XMP_MOD_STOP 0x03#define XMP_MOD_RESTART 0x04#define XMP_MOD_PAUSE 0x05#define XMP_GVOL_INC 0x06#define XMP_GVOL_DEC 0x07#define XMP_TIMER_STOP 0x08#define XMP_TIMER_RESTART 0x09/* Fetch control */#define XMP_MODE_MED (0)#define XMP_MODE_MTM (0)#define XMP_MODE_ST3 (XMP_CTL_NCWINS | XMP_CTL_IGNWINS | \ XMP_CTL_S3MLOOP | XMP_CTL_RTGINS)#define XMP_MODE_FT2 (XMP_CTL_OINSMOD | XMP_CTL_CUTNWI | \ XMP_CTL_OFSRST)#define XMP_MODE_IT (XMP_CTL_NCWINS | XMP_CTL_INSPRI | \ XMP_CTL_ENVFADE | XMP_CTL_S3MLOOP | \ XMP_CTL_OFSRST | XMP_CTL_ITENV)/* Player control macros */#define xmp_ord_next() xmp_player_ctl (XMP_ORD_NEXT, 0)#define xmp_ord_prev() xmp_player_ctl (XMP_ORD_PREV, 0)#define xmp_ord_set(x) xmp_player_ctl (XMP_ORD_SET, x)#define xmp_mod_stop() xmp_player_ctl (XMP_MOD_STOP, 0)#define xmp_stop_module() xmp_player_ctl (XMP_MOD_STOP, 0)#define xmp_mod_restart() xmp_player_ctl (XMP_MOD_RESTART, 0)#define xmp_restart_module() xmp_player_ctl (XMP_MOD_RESTART, 0)#define xmp_mod_pause() xmp_player_ctl (XMP_MOD_PAUSE, 0)#define xmp_pause_module() xmp_player_ctl (XMP_MOD_PAUSE, 0)#define xmp_timer_stop() xmp_player_ctl (XMP_TIMER_STOP, 0)#define xmp_timer_restart() xmp_player_ctl (XMP_TIMER_RESTART, 0)#define xmp_gvol_inc() xmp_player_ctl (XMP_GVOL_INC, 0)#define xmp_gvol_dec() xmp_player_ctl (XMP_GVOL_DEC, 0)#define xmp_mod_load xmp_load_module#define xmp_mod_play xmp_play_module/* Error messages */#define XMP_ERR_NCTRL -1#define XMP_ERR_DNREG -2#define XMP_ERR_NODRV -3#define XMP_ERR_DSPEC -4#define XMP_ERR_DOPEN -5#define XMP_ERR_DINIT -6#define XMP_ERR_PATCH -7#define XMP_ERR_TPTCH -8#define XMP_ERR_VIRTC -9#define XMP_ERR_ALLOC -10#define XMP_ERR_SYNTH -11struct xmp_control { char *drv_id; /* Driver ID */ char *description; /* Driver description */ char **help; /* Driver help info */ char *outfile; /* Output file name when mixing to file */ char *filename; /* Module file name */ char name[XMP_DEF_NAMESIZE]; /* module name */ char type[XMP_DEF_NAMESIZE]; /* module type */ int memavl; /* Memory availble in the sound card */ int verbose; /* Verbosity level */#define XMP_FMT_FM 0x00000001 /* Active mode FM */#define XMP_FMT_UNS 0x00000002 /* Unsigned samples */#define XMP_FMT_MONO 0x00000004 /* Mono output */#define XMP_FMT_BIGEND 0x00000008 /* Big-endian samples (output) */ int outfmt; /* Software mixing output data format */ int resol; /* Software mixing resolution output */ int freq; /* Software mixing rate (Hz) */ /* Global mode control */#define XMP_CTL_ITPT 0x00000001 /* Mixer interpolation */#define XMP_CTL_REVERSE 0x00000002 /* Reverse stereo */#define XMP_CTL_8BIT 0x00000004 /* Convert 16 bit samples to 8 bit */#define XMP_CTL_BIGEND 0x00000008 /* Big-endian samples (input) */#define XMP_CTL_LOOP 0x00000010 /* Enable module looping */#define XMP_CTL_VIRTUAL 0x00000040 /* Enable virtual channels */#define XMP_CTL_DYNPAN 0x00000080 /* Enable dynamic pan */ /* Fetch control */#define XMP_CTL_MEDBPM 0x00000100 /* Enable MED BPM timing */#define XMP_CTL_S3MLOOP 0x00000200 /* Active s3m loop mode */#define XMP_CTL_ENVFADE 0x00000400 /* Fade at end of envelope */#define XMP_CTL_ITENV 0x00000800 /* IT envelope mode */#define XMP_CTL_IGNWINS 0x00001000 /* Ignore invalid instrument */#define XMP_CTL_NCWINS 0x00002000 /* Don't cut invalid instrument */#define XMP_CTL_INSPRI 0x00004000 /* Reset note for every new != ins */#define XMP_CTL_CUTNWI 0x00008000 /* Cut only when note + invalid ins */#define XMP_CTL_OINSMOD 0x00010000 /* XM old instrument mode */#define XMP_CTL_OFSRST 0x00020000 /* Always reset sample offset */#define XMP_CTL_FX9BUG 0x00040000 /* Protracker effect 9 bug emulation */ #define XMP_CTL_ST3GVOL 0x00080000 /* ST 3 weird global volume effect */#define XMP_CTL_FINEFX 0x00100000 /* Enable 0xf/0xe for fine effects */#define XMP_CTL_VSALL 0x00200000 /* Volume slides in all frames */#define XMP_CTL_FIXLOOP 0x00400000 /* Fix sample loop start */#define XMP_CTL_RTGINS 0x00800000 /* Retrig instrument on toneporta */#define XMP_CTL_FILTER 0x01000000 /* IT lowpass filter */ int flags; /* xmp internal control flags, set default mode */ int fetch; /* Fetch mode control per module, copy from flags */ int size; /* File size */ int numusr; /* Number of user allocated channels */ int numtrk; /* Number of tracks */ int numchn; /* Number of virtual channels needed by the module */ int numvoc; /* Number of voices currently in use */ int numbuf; /* Number of output buffers */ int maxvoc; /* Channel max number of voice */ int crunch; /* Sample crunching ratio */ int pause; /* Player pause */ int start; /* Set initial order (default = 0) */ int mix; /* Percentage of L/R channel separation */ int time; /* Maximum playing time in seconds */ int tempo; /* Set initial tempo */ double rrate; /* Replay rate */ int c4rate; /* C4 replay rate */ int pos; /* Current ord */ int chorus; /* Chorus level */ int reverb; /* Reverb leval */ int volume; /* Global volume */ int volbase; /* Volume base */ int *vol_xlat; /* Volume translation table */ int reserved[16]; /* Reserved */ char *parm[64]; /* Driver parameter data */};struct xmp_fmt_info { char *suffix; char *tracker; int (*loader)(); struct xmp_fmt_info *next;};struct xmp_drv_info { char *id; char *description; char **help; int (*init)(); void (*shutdown)(); int (*numvoices)(); void (*voicepos)(); void (*echoback)(); void (*setpatch)(); void (*setvol)(); void (*setnote)(); void (*setpan)(); void (*setbend)(); void (*seteffect)(); void (*starttimer)(); void (*stoptimer)(); void (*reset)(); void (*bufdump)(); void (*bufwipe)(); void (*clearmem)(); void (*sync)(); int (*writepatch)(); int (*getmsg)(); struct xmp_drv_info *next;};struct xmp_module_info { char name[0x40]; char type[0x40]; int chn; int pat; int ins; int trk; int smp; int len; int bpm; int tpo;};extern char *xmp_version;extern char *xmp_date;extern char *xmp_copyright;extern char *xmp_build;void xmp_init (int, char **, struct xmp_control *);int xmp_load_module (char *);struct xmp_module_info* xmp_get_module_info (struct xmp_module_info *);struct xmp_fmt_info* xmp_get_fmt_info (struct xmp_fmt_info **);struct xmp_drv_info* xmp_get_drv_info (struct xmp_drv_info **);char* xmp_get_driver_description (void);void xmp_set_driver_parameter (struct xmp_control *, char *);void xmp_get_driver_cfg (int *, int *, int *, int *);void xmp_channel_mute (int, int, int);void xmp_display_license (void);void xmp_register_event_callback (void (*)());int xmp_player_ctl (int, int);int xmp_open_audio (struct xmp_control *);void xmp_close_audio (void);int xmp_play_module (void);int xmp_tell_parent (void);int xmp_wait_parent (void);int xmp_check_parent (int);int xmp_tell_child (void);int xmp_wait_child (void);int xmp_check_child (int);void* xmp_get_shared_mem (int);void xmp_detach_shared_mem (void *);int xmp_verbosity_level (int);#endif /* __XMP_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -