mirror of
https://github.com/byteworksinc/ORCA-C.git
synced 2024-12-22 07:30:54 +00:00
122 lines
6.8 KiB
C
122 lines
6.8 KiB
C
/********************************************
|
|
*
|
|
* MIDI Tool Set
|
|
*
|
|
* Copyright Apple Computer, Inc.1986-90
|
|
* All Rights Reserved
|
|
*
|
|
* Copyright 1992, Byte Works, Inc.
|
|
*
|
|
********************************************/
|
|
|
|
#ifndef __TYPES__
|
|
#include <TYPES.h>
|
|
#endif
|
|
|
|
#ifndef __MIDI__
|
|
#define __MIDI__
|
|
|
|
/* MIDI */
|
|
#define miToolNum 0x0020 /* the tool number of the MIDI Tool Set */
|
|
#define miDrvrFileType 0x00BB /* filetype of MIDI device driver */
|
|
#define miNSVer 0x0102 /* minimum version of Note Synthesizer required by MIDI Tool Set */
|
|
#define miSTVer 0x0203 /* minimum version of Sound Tools needed by MIDI Tool Set */
|
|
#define miDrvrAuxType 0x0300 /* aux type of MIDI device driver */
|
|
|
|
/* Error Codes */
|
|
#define miStartUpErr 0x2000 /* MIDI Tool Set is not started */
|
|
#define miPacketErr 0x2001 /* incorrect length for a received MIDI command */
|
|
#define miArrayErr 0x2002 /* a designated array had an insufficient or illegal size */
|
|
#define miFullBufErr 0x2003 /* input buffer overflow */
|
|
#define miToolsErr 0x2004 /* the required tools were not started up or had insufficient versions */
|
|
#define miOutOffErr 0x2005 /* MIDI output must first be enabled */
|
|
#define miNoBufErr 0x2007 /* no buffer is currently allocated */
|
|
#define miDriverErr 0x2008 /* the designated file is not a legal MIDI device driver */
|
|
#define miBadFreqErr 0x2009 /* the MIDI clock cannot attain the requested frequency */
|
|
#define miClockErr 0x200A /* the MIDI clock value wrapped to zero */
|
|
#define miConflictErr 0x200B /* conflicting processes for MIDI input */
|
|
#define miNoDevErr 0x200C /* no MIDI device driver loaded */
|
|
#define miDevNotAvail 0x2080 /* the requested device is not available */
|
|
#define miDevSlotBusy 0x2081 /* requested slot is already in use */
|
|
#define miDevBusy 0x2082 /* the requested device is already in use */
|
|
#define miDevOverrun 0x2083 /* device overrun by incoming MIDI data */
|
|
#define miDevNoConnect 0x2084 /* no connection to MIDI */
|
|
#define miDevReadErr 0x2085 /* framing error in received MIDI data */
|
|
#define miDevVersion 0x2086 /* ROM version is incompatible with device driver */
|
|
#define miDevIntHndlr 0x2087 /* conflicting interrupt handler is installed */
|
|
|
|
/* MidiClock */
|
|
#define miSetClock 0x0000 /* set time stamp clock */
|
|
#define miStartClock 0x0001 /* start time stamp clock */
|
|
#define miStopClock 0x0002 /* stop time stamp clock */
|
|
#define miSetFreq 0x0003 /* set clock frequency */
|
|
|
|
/* MidiControl */
|
|
#define miRawMode 0x00000000L /* raw mode for MIDI input and output */
|
|
#define miSetRTVec 0x0000 /* set real-time message vector */
|
|
#define miPacketMode 0x00000001L /* packet mode for MIDI input and output */
|
|
#define miSetErrVec 0x0001 /* set real-time error vector */
|
|
#define miStandardMode 0x00000002L /* standard mode for MIDI input and output */
|
|
#define miSetInBuf 0x0002 /* set input buffer information */
|
|
#define miSetOutBuf 0x0003 /* set output buffer information */
|
|
#define miStartInput 0x0004 /* start MIDI input */
|
|
#define miStartOutput 0x0005 /* start MIDI output */
|
|
#define miStopInput 0x0006 /* stop MIDI input */
|
|
#define miStopOutput 0x0007 /* stop MIDI output */
|
|
#define miFlushInput 0x0008 /* discard contents of input buffer */
|
|
#define miFlushOutput 0x0009 /* discard contents of output buffer */
|
|
#define miFlushPacket 0x000A /* discard next input packet */
|
|
#define miWaitOutput 0x000B /* wait for output buffer to empty */
|
|
#define miSetInMode 0x000C /* set input mode */
|
|
#define miSetOutMode 0x000D /* set output mode */
|
|
#define miClrNotePad 0x000E /* clear all notes marked on in the note pad */
|
|
#define miSetDelay 0x000F /* set minimum delay between output packets */
|
|
#define miOutputStat 0x0010 /* enable/disable output of running-status */
|
|
#define miIgnoreSysEx 0x0011 /* ignore system exclusive input */
|
|
|
|
/* MidiDevice */
|
|
#define miSelectDrvr 0x0000 /* display device driver selection dialog */
|
|
#define miLoadDrvr 0x0001 /* load and initialize device driver */
|
|
#define miUnloadDrvr 0x0002 /* shutdown MIDI device, unload driver */
|
|
|
|
/* MidiInfo */
|
|
#define miNextPktLen 0x0000 /* return length of next packet */
|
|
#define miInputChars 0x0001 /* return number of characters in input buffer */
|
|
#define miOutputChars 0x0002 /* return number of characters in output buffer */
|
|
#define miMaxInChars 0x0003 /* return maximum number of characters in input buffer */
|
|
#define miMaxOutChars 0x0004 /* return maximum number of characters in output buffer */
|
|
#define miRecordAddr 0x0005 /* return current MidiRecordSeq address */
|
|
#define miPlayAddr 0x0006 /* return current MidiPlaySeq address */
|
|
#define miClockValue 0x0007 /* return current time stamp clock value */
|
|
#define miClockFreq 0x0008 /* return number of clock ticks per second */
|
|
#define midiInputPoll 0x00E101B2L /* MidiInputChannel - vector to poll MIDI input channel */
|
|
|
|
struct MiBufInfo {
|
|
Word bufSize; /* size of buffer (0 for default) */
|
|
Pointer address; /* address of buffer (0 for auto-allocation) */
|
|
};
|
|
typedef struct MiBufInfo MiBufInfo;
|
|
|
|
struct MiDriverInfo {
|
|
Word slot; /* device slot */
|
|
Word external; /* slot internal (=0) / external (=1) */
|
|
Byte pathname[65]; /* device driver pathname */
|
|
};
|
|
typedef struct MiDriverInfo MiDriverInfo, *MiDriverInfoPtr;
|
|
|
|
extern pascal void MidiBootInit(void) inline(0x0120,dispatcher);
|
|
extern pascal void MidiStartUp(Word, Word) inline(0x0220,dispatcher);
|
|
extern pascal void MidiShutDown(void) inline(0x0320,dispatcher);
|
|
extern pascal Word MidiVersion(void) inline(0x0420,dispatcher);
|
|
extern pascal void MidiReset(void) inline(0x0520,dispatcher);
|
|
extern pascal Boolean MidiStatus(void) inline(0x0620,dispatcher);
|
|
extern pascal void MidiClock(Word, Long) inline(0x0B20,dispatcher);
|
|
extern pascal void MidiControl(Word, Long) inline(0x0920,dispatcher);
|
|
extern pascal void MidiDevice(Word, Pointer) inline(0x0A20,dispatcher);
|
|
extern pascal LongWord MidiInfo(Word) inline(0x0C20,dispatcher);
|
|
#define MidiInputPoll() asm {jsl 0xE101B2} /* Not a true tool call. Made through its own vector */
|
|
extern pascal Word MidiReadPacket(Pointer, Word) inline(0x0D20,dispatcher);
|
|
extern pascal Word MidiWritePacket(Pointer) inline(0x0E20,dispatcher);
|
|
|
|
#endif
|