📄 playmidi.h
字号:
#define RELEASE "Playmidi 2.4"/************************************************************************ playmidi.h -- defines and structures for use by playmidi package Copyright (C) 1994-1996 Nathan I. Laredo This program is modifiable/redistributable under the terms of the GNU General Public Licence. 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. Send your comments and all your spare pocket change to laredo@gnu.ai.mit.edu (Nathan Laredo) or to PSC 1, BOX 709, 2401 Kelly Drive, Lackland AFB, TX 78236-5128, USA. *************************************************************************/* edited by Peter Kutak *//* email : kutak@stonline.sk *//* Default mask for percussion instruments. Channels 16 and 10 = 0x8200 */#define PERCUSSION 0x0200/* change the following if you have lots of synth devices */#define MAX_CARDS 5/* the following definition is set by Configure */#define FM_DEFAULT_MODE 0/* the following definition is set by Configure */#define PATCH_PATH1 "/dos/ultrasnd/midi"/* the following definition is set by Configure */#define PATCH_PATH2 "/usr/local/lib/Plib"/* change this if you notice performance problems, 128 bytes by default */#define SEQUENCERBLOCKSIZE 128/* change this if you have really outrageous midi files > 128 tracks *//* 128 tracks is approximately a 4K structure */#define MAXTRKS 128/* where to find fm patch libraries */#define SEQUENCER_DEV "/dev/sequencer"#define O3MELODIC "/etc/std.o3"#define O3DRUMS "/etc/drums.o3"#define SBMELODIC "/etc/std.sb"#define SBDRUMS "/etc/drums.sb"#define ISPERC(x) (perc & (1 << x))#define ISGUS(x) (play_gus & (1 << x))#define ISFM(x) (play_fm & (1 << x))#define ISMIDI(x) (play_ext & (1 << x))#define ISAWE(x) (play_awe & (1 << x))#define ISPLAYING(x) (chanmask & (1 << x))#define NO_EXIT 100#include <stdio.h>#include <string.h>#include <stdlib.h>#include <sys/soundcard.h>#include <sys/ioctl.h>#ifdef linux#include <linux/awe_voice.h>#else#include <awe_voice.h>#endifstruct chanstate { int program; int bender; int oldbend; /* used for graphics */ int bender_range; int oldrange; /* used for graphics */ int controller[255]; int pressure;};struct voicestate { int note; int channel; int timestamp; int dead;};/* Non-standard MIDI file formats */#define RIFF 0x52494646#define CTMF 0x43544d46/* Standard MIDI file format definitions */#define MThd 0x4d546864#define MTrk 0x4d54726b#define meta_event 0xff#define sequence_number 0x00#define text_event 0x01#define copyright_notice 0x02#define sequence_name 0x03#define instrument_name 0x04#define lyric 0x05#define marker 0x06#define cue_point 0x07#define channel_prefix 0x20#define end_of_track 0x2f#define set_tempo 0x51#define smpte_offset 0x54#define time_signature 0x58#define key_signature 0x59#define sequencer_specific 0x74struct miditrack { unsigned char *data; /* data of midi track */ unsigned long int length; /* length of track data */ unsigned long int index; /* current byte in track */ unsigned long int ticks; /* current midi tick count */ unsigned char running_st; /* running status byte */};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -