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

📄 playmidi.h

📁 MIDI解码程序(用VC编写)
💻 H
📖 第 1 页 / 共 2 页
字号:
  /* For portamento */  uint8 portamento_time_msb, portamento_time_lsb;  int porta_control_ratio, porta_dpb;  int32 last_note_fine;  /* For Drum part */  struct DrumParts *drums[128];  /* For NRPN Vibrato */  int32 vibrato_depth, vibrato_delay;  float vibrato_ratio;  /* For RPN */  uint8 rpnmap[RPN_MAX_DATA_ADDR]; /* pseudo RPN address map */  uint8 rpnmap_lsb[RPN_MAX_DATA_ADDR];  uint8 lastlrpn, lastmrpn;  int8  nrpn; /* 0:RPN, 1:NRPN, -1:Undefined */  int rpn_7f7f_flag;		/* Boolean flag used for RPN 7F/7F */  /* For channel envelope */  int32 envelope_rate[6]; /* for Envelope Generator in mix.c			   * 0: value for attack rate			   * 2: value for decay rate			   * 3: value for release rate			   */  int mapID;			/* Program map ID */  AlternateAssign *altassign;	/* Alternate assign patch table */  int32 lasttime;     /* Last sample time of computed voice on this channel */  /* flag for random pan */  int pan_random;  /* for Voice LPF / Resonance */  int8 param_resonance, param_cutoff_freq;	/* -64 ~ 63 */  float cutoff_freq_coef, resonance_dB;  int8 velocity_sense_depth, velocity_sense_offset;    int8 scale_tuning[12], prev_scale_tuning;  int8 temper_type;  int8 soft_pedal;  int8 sostenuto;  int8 damper_mode;  int8 tone_map0_number;  FLOAT_T pitch_offset_fine;	/* in Hz */  int8 assign_mode;  int8 legato;	/* legato footswitch */  int8 legato_flag;	/* note-on flag for legato */  midi_controller mod, bend, caf, paf, cc1, cc2;  ChannelBitMask channel_layer;  int port_select;  struct part_eq_xg eq_xg;  int8 dry_level;  int8 note_limit_high, note_limit_low;	/* Note Limit (Keyboard Range) */  int8 vel_limit_high, vel_limit_low;	/* Velocity Limit */  int32 rx;	/* Rx. ~ (Rcv ~) */  int drum_effect_num;  int8 drum_effect_flag;  struct DrumPartEffect *drum_effect;  int8 sysex_gs_msb_addr, sysex_gs_msb_val,		sysex_xg_msb_addr, sysex_xg_msb_val, sysex_msb_addr, sysex_msb_val;} Channel;/* Causes the instrument's default panning to be used. */#define NO_PANNING -1typedef struct {	int16 freq, last_freq, orig_freq;	double reso_dB, last_reso_dB, orig_reso_dB, reso_lin; 	int8 type;	/* filter type. 0: Off, 1: 12dB/oct, 2: 24dB/oct */ 	int32 f, q, p;	/* coefficients in fixed-point */	int32 b0, b1, b2, b3, b4;	float gain;	int8 start_flag;} FilterCoefficients;#define ENABLE_PAN_DELAY#ifdef ENABLE_PAN_DELAY#define PAN_DELAY_BUF_MAX 48	/* 0.5ms in 96kHz */#endif	/* ENABLE_PAN_DELAY */typedef struct {  uint8    status, channel, note, velocity;  int vid, temper_instant;  Sample *sample;#if SAMPLE_LENGTH_BITS == 32 && TIMIDITY_HAVE_INT64  int64 sample_offset;	/* sample_offset must be signed */#else  splen_t sample_offset;#endif  int32    orig_frequency, frequency, sample_increment,    envelope_volume, envelope_target, envelope_increment,    tremolo_sweep, tremolo_sweep_position,    tremolo_phase, tremolo_phase_increment,    vibrato_sweep, vibrato_sweep_position;  final_volume_t left_mix, right_mix;#ifdef SMOOTH_MIXING  int32 old_left_mix, old_right_mix,     left_mix_offset, right_mix_offset,     left_mix_inc, right_mix_inc;#endif  FLOAT_T    left_amp, right_amp, tremolo_volume;  int32    vibrato_sample_increment[VIBRATO_SAMPLE_INCREMENTS], vibrato_delay;  int	vibrato_phase, orig_vibrato_control_ratio, vibrato_control_ratio,    vibrato_depth, vibrato_control_counter,    envelope_stage, control_counter, panning, panned;  int16 tremolo_depth;  /* for portamento */  int porta_control_ratio, porta_control_counter, porta_dpb;  int32 porta_pb;  int delay; /* Note ON delay samples */  int32 timeout;  struct cache_hash *cache;  uint8 chorus_link;	/* Chorus link */  int8 proximate_flag;  FilterCoefficients fc;  FLOAT_T envelope_scale, last_envelope_volume;  int32 inv_envelope_scale;  int modenv_stage;  int32    modenv_volume, modenv_target, modenv_increment;  FLOAT_T last_modenv_volume;  int32 tremolo_delay, modenv_delay;  int32 delay_counter;#ifdef ENABLE_PAN_DELAY  int32 *pan_delay_buf, pan_delay_rpt, pan_delay_wpt, pan_delay_spt;#endif	/* ENABLE_PAN_DELAY */} Voice;/* Voice status options: */#define VOICE_FREE	(1<<0)#define VOICE_ON	(1<<1)#define VOICE_SUSTAINED	(1<<2)#define VOICE_OFF	(1<<3)#define VOICE_DIE	(1<<4)/* Voice panned options: */#define PANNED_MYSTERY 0#define PANNED_LEFT 1#define PANNED_RIGHT 2#define PANNED_CENTER 3/* Anything but PANNED_MYSTERY only uses the left volume */#define ISDRUMCHANNEL(c)  IS_SET_CHANNELMASK(drumchannels, c)extern Channel channel[];extern Voice *voice;/* --module */extern int opt_default_module;enum {	MODULE_TIMIDITY_DEFAULT = 0x0,	/* GS modules */	MODULE_SC55 = 0x1,	MODULE_SC88 = 0x2,	MODULE_SC88PRO = 0x3,	MODULE_SC8850 = 0x4,	/* XG modules */	MODULE_MU50 = 0x10,	MODULE_MU80 = 0x11,	MODULE_MU90 = 0x12,	MODULE_MU100 = 0x13,	/* GM modules */	MODULE_SBLIVE = 0x20,	MODULE_SBAUDIGY = 0x21,	/* Special modules */	MODULE_TIMIDITY_SPECIAL1 = 0x70,	MODULE_TIMIDITY_DEBUG = 0x7f,};static inline int get_module() {return opt_default_module;}static inline int is_gs_module(){	int module = get_module();    return (module >= MODULE_SC55 && module <= MODULE_MU100);}static inline int is_xg_module(){	int module = get_module();    return (module >= MODULE_MU50 && module <= MODULE_MU100);}extern int32 control_ratio, amp_with_poly, amplification;extern ChannelBitMask default_drumchannel_mask;extern ChannelBitMask drumchannel_mask;extern ChannelBitMask default_drumchannels;extern ChannelBitMask drumchannels;extern int adjust_panning_immediately;extern int max_voices;extern int voices, upper_voices;extern int note_key_offset;extern FLOAT_T midi_time_ratio;extern int opt_modulation_wheel;extern int opt_portamento;extern int opt_nrpn_vibrato;extern int opt_reverb_control;extern int opt_chorus_control;extern int opt_surround_chorus;extern int opt_channel_pressure;extern int opt_lpf_def;extern int opt_overlap_voice_allow;extern int opt_temper_control;extern int opt_tva_attack;extern int opt_tva_decay;extern int opt_tva_release;extern int opt_delay_control;extern int opt_eq_control;extern int opt_insertion_effect;extern int opt_drum_effect;extern int opt_env_attack;extern int opt_modulation_envelope;extern int noise_sharp_type;extern int32 current_play_tempo;extern int opt_realtime_playing;extern int reduce_voice_threshold; /* msec */extern int check_eot_flag;extern int special_tonebank;extern int default_tonebank;extern int playmidi_seek_flag;extern int effect_lr_mode;extern int effect_lr_delay_msec;extern int auto_reduce_polyphony;extern int play_pause_flag;extern int reduce_quality_flag;extern int no_4point_interpolation;extern ChannelBitMask channel_mute;extern int temper_type_mute;extern int8 current_keysig;extern int8 current_temper_keysig;extern int temper_adj;extern int8 opt_init_keysig;extern int8 opt_force_keysig;extern int key_adjust;extern FLOAT_T tempo_adjust;extern int opt_pure_intonation;extern int current_freq_table;extern int32 opt_drum_power;extern int opt_amp_compensation;extern int opt_realtime_priority;	/* interface/alsaseq_c.c */extern int opt_sequencer_ports;		/* interface/alsaseq_c.c */extern int opt_user_volume_curve;extern int opt_pan_delay;extern int play_midi_file(char *fn);extern void dumb_pass_playing_list(int number_of_files, char *list_of_files[]);extern void default_ctl_lyric(int lyricid);extern int check_apply_control(void);extern void recompute_freq(int v);extern int midi_drumpart_change(int ch, int isdrum);extern void ctl_note_event(int noteID);extern void ctl_mode_event(int type, int trace, long arg1, long arg2);extern char *channel_instrum_name(int ch);extern int get_reverb_level(int ch);extern int get_chorus_level(int ch);extern void playmidi_output_changed(int play_state);extern Instrument *play_midi_load_instrument(int dr, int bk, int prog);extern void midi_program_change(int ch, int prog);extern void free_voice(int v);extern void play_midi_setup_drums(int ch,int note);/* For stream player */extern void playmidi_stream_init(void);extern void playmidi_tmr_reset(void);extern int play_event(MidiEvent *ev);extern void recompute_voice_filter(int);extern int32 get_note_freq(Sample *, int);extern void free_drum_effect(int);#endif /* ___PLAYMIDI_H_ */

⌨️ 快捷键说明

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