playmidi.h
上传用户:nini_0081
上传日期:2022-07-21
资源大小:2628k
文件大小:3k
- #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>
- #endif
- struct 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 0x74
- struct 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 */
- };