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

📄 playmidi.h

📁 SDL_mixer 是一个基于 SDL 的混音器
💻 H
字号:
/*    TiMidity -- Experimental MIDI to WAVE converter    Copyright (C) 1995 Tuukka Toivonen <toivonen@clinet.fi>    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU 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 General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program; if not, write to the Free Software    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.   playmidi.h   */typedef struct {  int32 time;  uint8 channel, type, a, b;} MidiEvent;/* Midi events */#define ME_NONE 	0#define ME_NOTEON	1#define ME_NOTEOFF	2#define ME_KEYPRESSURE	3#define ME_MAINVOLUME	4#define ME_PAN		5#define ME_SUSTAIN	6#define ME_EXPRESSION	7#define ME_PITCHWHEEL	8#define ME_PROGRAM	9#define ME_TEMPO	10#define ME_PITCH_SENS	11#define ME_ALL_SOUNDS_OFF	12#define ME_RESET_CONTROLLERS	13#define ME_ALL_NOTES_OFF	14#define ME_TONE_BANK	15#define ME_LYRIC	16#define ME_TONE_KIT	17#define ME_MASTERVOLUME	18#define ME_CHANNEL_PRESSURE 19#define ME_HARMONICCONTENT	71#define ME_RELEASETIME		72#define ME_ATTACKTIME		73#define ME_BRIGHTNESS		74#define ME_REVERBERATION	91#define ME_CHORUSDEPTH		93#define ME_EOT		99#define SFX_BANKTYPE	64typedef struct {  int    bank, program, volume, sustain, panning, pitchbend, expression,     mono, /* one note only on this channel -- not implemented yet */    /* new stuff */    variationbank, reverberation, chorusdepth, harmoniccontent,    releasetime, attacktime, brightness, kit, sfx,    /* end new */    pitchsens;  FLOAT_T    pitchfactor; /* precomputed pitch bend factor to save some fdiv's */  char transpose;  char *name;} Channel;/* Causes the instrument's default panning to be used. */#define NO_PANNING -1/* envelope points */#define MAXPOINT 7typedef struct {  uint8    status, channel, note, velocity, clone_type;  Sample *sample;  Sample *left_sample;  Sample *right_sample;  int32 clone_voice;  int32    orig_frequency, frequency,    sample_offset, loop_start, loop_end;  int32    envelope_volume, modulation_volume;  int32    envelope_target, modulation_target;  int32    tremolo_sweep, tremolo_sweep_position, tremolo_phase,    lfo_sweep, lfo_sweep_position, lfo_phase,    vibrato_sweep, vibrato_sweep_position, vibrato_depth, vibrato_delay,    starttime, echo_delay_count;  int32    echo_delay,    sample_increment,    envelope_increment,    modulation_increment,    tremolo_phase_increment,    lfo_phase_increment;    final_volume_t left_mix, right_mix, lr_mix, rr_mix, ce_mix, lfe_mix;  FLOAT_T    left_amp, right_amp, lr_amp, rr_amp, ce_amp, lfe_amp,    volume, tremolo_volume, lfo_volume;  int32    vibrato_sample_increment[VIBRATO_SAMPLE_INCREMENTS];  int32    envelope_rate[MAXPOINT], envelope_offset[MAXPOINT];  int32    vibrato_phase, vibrato_control_ratio, vibrato_control_counter,    envelope_stage, modulation_stage, control_counter,    modulation_delay, modulation_counter, panning, panned;} Voice;/* Voice status options: */#define VOICE_FREE 0#define VOICE_ON 1#define VOICE_SUSTAINED 2#define VOICE_OFF 3#define VOICE_DIE 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 *//* Envelope stages: */#define ATTACK 0#define HOLD 1#define DECAY 2#define RELEASE 3#define RELEASEB 4#define RELEASEC 5#define DELAY 6extern Channel channel[16];extern Voice voice[MAX_VOICES];extern signed char drumvolume[MAXCHAN][MAXNOTE];extern signed char drumpanpot[MAXCHAN][MAXNOTE];extern signed char drumreverberation[MAXCHAN][MAXNOTE];extern signed char drumchorusdepth[MAXCHAN][MAXNOTE];extern int32 control_ratio, amp_with_poly, amplification;extern int32 drumchannels;extern int adjust_panning_immediately;extern int voices;#define ISDRUMCHANNEL(c) ((drumchannels & (1<<(c))))extern int GM_System_On;extern int XG_System_On;extern int GS_System_On;extern int XG_System_reverb_type;extern int XG_System_chorus_type;extern int XG_System_variation_type;extern int play_midi(MidiEvent *el, int32 events, int32 samples);extern int play_midi_file(char *fn);extern void dumb_pass_playing_list(int number_of_files, char *list_of_files[]);

⌨️ 快捷键说明

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