home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
pascal
/
vdl020d.zip
/
VMIDI.DOC
< prev
next >
Wrap
Text File
|
1993-04-14
|
7KB
|
270 lines
{
════════════════════════════════════════════════════════════════════════════
Visionix Music Instrument Digital Interface (VMIDI)
Copyright 1991,92,93 Visionix
ALL RIGHTS RESERVED
────────────────────────────────────────────────────────────────────────────
Revision history in reverse chronological order:
Initials Date Comment
──────── ──────── ────────────────────────────────────────────────────────
lpg 03/16/93 Added Source Documentation
mep 02/11/93 Cleaned up code for beta release
jrt 02/08/93 Sync with beta 0.12 release
jrt 11/21/92 Sync with beta 0.08
jrt 09/01/92 First logged revision.
════════════════════════════════════════════════════════════════════════════
}
Unit VMidi;
{────────────────────────────────────────────────────────────────────────────}
Type
TError = WORD;
TMidiMessage = RECORD
Status : BYTE;
Data1 : BYTE;
Data2 : BYTE;
END;
TMidiHandle = WORD;
{----}
TMidiCaps = RECORD
ManufacturerID : WORD;
ProductID : WORD;
DriverVersion : WORD;
Name : String[20];
Technology : WORD;
Voices : WORD;
Notes : WORD;
ChannelMask : WORD;
Support : WORD;
END;
PMidiCaps = ^TMidiCaps;
{----}
PMidiBuffHeader = ^TMidiBuffHeader;
TMidiBuffHeader = RECORD
Data : Pointer;
BufferLength : WORD;
BytesRecorded : WORD;
User : Pointer;
Flags : LONGINT;
Next : PMidiBuffHeader;
Reserved : LONGINT;
END;
{----}
TMidiCallBack = Procedure( Signal : WORD;
Param1 : Longint;
Param2 : Longint );
{-----------}
{ - - - - - }
{ Driver }
{ - - - - - }
{-----------}
Const
MDS_Changed = 1;
MDS_Install = 2;
MDF_DriverNew = 1;
MDF_MidiInOpen = 2;
MDF_MidiInAddBuffer = 3;
MDF_MidiInReset = 4;
MDF_MidiInStart = 5;
MDF_MidiInStop = 6;
MDF_MidiInClose = 7;
Type
TMPU401DriverInfo = RECORD
IRQ : BYTE;
IOPort : WORD;
InOpen : BOOLEAN;
OutOpen : BOOLEAN;
InHandle : TMidiHandle;
OutHandle : TMidiHandle;
IBH : PMidiBuffHeader;
CurrIBH : PMidiBuffHeader;
InCallBack : TMidiCallBack;
OutCallBack : TMidiCallBack;
InState : BYTE;
END;
PMPU401DriverInfo = ^TMPU401DriverInfo;
Const
sMPU401Ready = $00;
sMPU401Started = $01;
sMPU401Stopped = $02;
sMPU401BuffersFull = $80;
Type
TMidiDriverPacket = RECORD
Func : WORD;
ID : Pointer;
DriverInfo : Pointer;
Handle : TMidiHandle;
DeviceID : WORD;
CallBack : TMidiCallBack;
OpenInstance : Pointer;
Flags : LONGINT;
MBH : PMidiBuffHeader;
Status : WORD;
END;
PMidiDriverPacket = ^TMidiDriverPacket;
TMidiDriverProc = Procedure( MDP : PMidiDriverPacket );
PMidiDriverProc = ^TMidiDriverProc;
Type
TIHandleInfo = RECORD
DeviceID : WORD;
END;
TIDeviceInfo = RECORD
Driver : TMidiDriverProc;
ID : Pointer;
END;
Var
IH1Data : PMPU401DriverInfo;
IH2Data : PMPU401DriverInfo;
IH3Data : PMPU401DriverInfo;
IH4Data : PMPU401DriverInfo;
IHUsed : BYTE;
HandleInfoList : Array[1..16] of TIHandleInfo;
HandlesIssued : WORD;
MidiInDeviceInfoList : Array[1..16] of TIDeviceInfo;
NumMidiInDevices : WORD;
MDP : TMidiDriverPacket;
{────────────────────────────────────────────────────────────────────────────}
Function VMidiDriverNew( Proc : TMidiDriverProc;
DriverInfo : Pointer ) : TError;
{--------------------------------------------------------------------------}
{ }
{ Midi Output Functions }
{ }
{--------------------------------------------------------------------------}
Procedure VMidiOutGetDevCaps( MidiOutCaps : PMidiCaps );
Procedure VMidiOutOpen( Var Handle : TMidiHandle;
DeviceID : WORD;
CallBack : TMidiCallBack;
Instance : Pointer;
Flags : LONGINT );
Procedure VMidiOutShortMsg( Handle : TMidiHandle;
Message : TMidiMessage );
Procedure VMidiOutPrepareHeader;
Procedure VMidiOutUnPrepareHeader;
Procedure VMidiOutLongMsg( MidiBuffHdr : PMidiBuffHeader;
Handle : TMidiHandle );
Procedure VMidiOutClose( Handle : TMidiHandle );
{--------------------------------------------------------------------------}
{ }
{ Midi Input Functions }
{ }
{--------------------------------------------------------------------------}
Function VMidiInGetNumDevs : WORD;
Procedure VMidiInGetDevCaps( MidiInCaps : PMidiCaps );
Procedure VMidiInOpen( Var Handle : TMidiHandle;
DeviceID : WORD;
CallBack : TMidiCallBack;
Instance : Pointer;
Flags : LONGINT );
Procedure VMidiInPrepareHeader( MidiBuffHdr : PMidiBuffHeader );
Procedure VMidiInUnPrepareHeader( MidiBuffHdr : PMidiBuffHeader );
Procedure VMidiInAddBuffer( MidiBuffHdr : PMidiBuffHeader );
Procedure VMidiInReset( Handle : TMidiHandle );
Procedure VMidiInStart( Handle : TMidiHandle );
Procedure VMidiInStop( Handle : TMidiHandle );
Procedure VMidiInClose( Handle : TMidiHandle );
{────────────────────────────────────────────────────────────────────────────}