ftp.nice.ch/pub/next/developer/languages/c/gcc.2.7.2.2.I.b.tar.gz#/lib/gcc-lib/m68k-next-nextstep3/2.7.2.2.f.2/include/mididriver/midi_spec.h

This is midi_spec.h in view mode; [Download] [Up]

/*
 *	File:	mididriver/midi_spec.h
 *	Author:	David Jaffe
 *	Copyright (C) 1991, NeXT, Inc.
 *
 *      MIDI definitions
 */

#ifndef	_MIDI_SPEC_
#define _MIDI_SPEC_

/*
 * MIDI status bytes (from International MIDI Association document
 * MIDI-1.0, August 5, 1983)
 */
#define MIDI_RESETCONTROLLERS	0x79
#define MIDI_LOCALCONTROL	0x7a
#define MIDI_ALLNOTESOFF	0x7b
#define MIDI_OMNIOFF		0x7c
#define MIDI_OMNION		0x7d
#define MIDI_MONO		0x7e
#define MIDI_POLY		0x7f
#define	MIDI_NOTEOFF		0x80
#define	MIDI_NOTEON		0x90
#define	MIDI_POLYPRES		0xa0
#define	MIDI_CONTROL		0xb0
#define	MIDI_PROGRAM		0xc0
#define	MIDI_CHANPRES		0xd0
#define	MIDI_PITCH		0xe0
#define	MIDI_CHANMODE		MIDI_CONTROL
#define	MIDI_SYSTEM		0xf0
#define	MIDI_SYSEXCL		(MIDI_SYSTEM | 0x0)
#define MIDI_TIMECODEQUARTER	(MIDI_SYSTEM | 0x1)
#define	MIDI_SONGPOS		(MIDI_SYSTEM | 0x2)
#define	MIDI_SONGSEL		(MIDI_SYSTEM | 0x3)
#define	MIDI_TUNEREQ		(MIDI_SYSTEM | 0x6)
#define	MIDI_EOX		(MIDI_SYSTEM | 0x7)
#define MIDI_CLOCK		(MIDI_SYSTEM | 0x8)
#define MIDI_START		(MIDI_SYSTEM | 0xa)
#define MIDI_CONTINUE		(MIDI_SYSTEM | 0xb)
#define MIDI_STOP		(MIDI_SYSTEM | 0xc)
#define MIDI_ACTIVE		(MIDI_SYSTEM | 0xe)
#define MIDI_RESET		(MIDI_SYSTEM | 0xf)

#define MIDI_MAXDATA            0x7f
#define MIDI_OP(y)              (y & (MIDI_STATUSMASK))
#define MIDI_DATA(y)            (y & (MIDI_MAXDATA))
#define MIDI_MAXCHAN            0x0f
#define MIDI_NUMCHANS             16
#define MIDI_NUMKEYS             128
#define MIDI_ZEROBEND         0x2000
#define MIDI_DEFAULTVELOCITY     64

/* MIDI Controller numbers */

#define MIDI_MODWHEEL           1
#define MIDI_BREATH             2
#define MIDI_FOOT               4
#define MIDI_PORTAMENTOTIME     5
#define MIDI_DATAENTRY          6
#define MIDI_MAINVOLUME         7
#define MIDI_BALANCE            8
#define MIDI_PAN                10
#define MIDI_EXPRESSION         11
#define MIDI_EFFECTCONTROL1	12
#define MIDI_EFFECTCONTROL2	13			

/* LSB for above */
#define MIDI_MODWHEELLSB        (1 + 31)  
#define MIDI_BREATHLSB          (2 + 31)
#define MIDI_FOOTLSB            (4 + 31)
#define MIDI_PORTAMENTOTIMELSB  (5 + 31)
#define MIDI_DATAENTRYLSB       (6 + 31)
#define MIDI_MAINVOLUMELSB      (7 + 31)
#define MIDI_BALANCELSB         (8 + 31)
#define MIDI_PANLSB             (10 + 31)
#define MIDI_EXPRESSIONLSB      (11 + 31)

#define MIDI_DAMPER             64
#define MIDI_PORTAMENTO         65
#define MIDI_SOSTENUTO          66
#define MIDI_SOFTPEDAL          67
#define MIDI_HOLD2              69
/*
 * Controller 91-95 definitions from original 1.0 MIDI spec
 */
#define MIDI_EXTERNALEFFECTSDEPTH 91
#define MIDI_TREMELODEPTH       92
#define MIDI_CHORUSDEPTH        93
#define MIDI_DETUNEDEPTH        94
#define MIDI_PHASERDEPTH        95
/*
 * Controller 91-95 definitions as of June 1990
 */
#define MIDI_EFFECTS1		91
#define MIDI_EFFECTS2		92
#define MIDI_EFFECTS3		93
#define MIDI_EFFECTS4		94
#define MIDI_EFFECTS5		95
#define MIDI_DATAINCREMENT      96
#define MIDI_DATADECREMENT      97

/*
 * Masks for disassembling MIDI status bytes
 */
#define	MIDI_STATUSBIT	0x80	/* indicates this is a status byte */
#define	MIDI_STATUSMASK	0xf0	/* bits indicating type of status req */
#define	MIDI_SYSRTBIT	0x08	/* differentiates SYSRT from SYSCOM */

/* Some useful parsing macros. */
#define MIDI_TYPE_SYSTEM_REALTIME(byte)	(((byte)&0xf8) == 0xf8)
#define MIDI_TYPE_1BYTE(byte)	(   MIDI_TYPE_SYSTEM_REALTIME(byte) \
				 || (byte) == 0xf6 || (byte) == 0xf7)
#define MIDI_TYPE_2BYTE(byte)	(   (((byte)&0xe0) == 0xc0) \
				 || (((byte)&0xe0) == 0xd0) \
				 || ((byte)&0xfd) == 0xf1)
#define MIDI_TYPE_3BYTE(byte)	(   ((byte)&0xc0) == 0x80 \
				 || ((byte)&0xe0) == 0xe0 \
				 || (byte) == 0xf2)
#define MIDI_TYPE_SYSTEM(byte)	(((byte)&0xf0) == 0xf0)
#define MIDI_EVENTSIZE(byte)    (MIDI_TYPE_1BYTE(byte) ? 1 : \
				 MIDI_TYPE_2BYTE(byte) ? 2 : 3)
				 



#endif


These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.