63 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /**********************************************************************
 | |
|  *<
 | |
| 	FILE: midiman.h
 | |
| 
 | |
| 	DESCRIPTION: A manager for MIDI
 | |
| 
 | |
| 	CREATED BY: Rolf Berteig
 | |
| 
 | |
| 	HISTORY: 6/7/97
 | |
| 
 | |
|  *>	Copyright (c) 1997, All Rights Reserved.
 | |
|  **********************************************************************/
 | |
| 
 | |
| #ifndef __MIDIMAN__
 | |
| #define __MIDIMAN__
 | |
| 
 | |
| #include <mmsystem.h>
 | |
| #include <mmreg.h>
 | |
| 
 | |
| 
 | |
| // This is the same function type that is passed to the Win32 API midiInOpen()
 | |
| // except that it returns a DWORD instead of void.
 | |
| typedef DWORD(*MIDI_IN_PROC)(HMIDIIN hMidiIn,UINT wMsg, DWORD dwInstance,DWORD dwParam1, DWORD dwParam2);
 | |
| 
 | |
| // Return values from MIDI_IN_PROC
 | |
| #define MIDIPROC_PROCESSED		1			// The message was processed and so no other callbacks should be called.
 | |
| #define MIDIPROC_NOTPROCESSED	0			// The message was not processed.
 | |
| 
 | |
| // These can be called to open/close/start/stop the midi in device.
 | |
| // The MIDI device can be opened more than once... it will only actually
 | |
| // close when Close() is called as many times as Open().
 | |
| CoreExport MMRESULT MIDIMan_Open(MIDI_IN_PROC proc,DWORD dwInstance,int priority=0);
 | |
| CoreExport MMRESULT MIDIMan_Close(MIDI_IN_PROC proc,DWORD dwInstance);
 | |
| CoreExport MMRESULT MIDIMan_Start();
 | |
| CoreExport MMRESULT MIDIMan_Stop();
 | |
| CoreExport BOOL MIDIMan_IsOpened();
 | |
| CoreExport BOOL MIDIMan_IsStarted();
 | |
| 
 | |
| // To temporary close and stop the MIDI device use these methods. These
 | |
| // will preserve the state of the Open/Close Start/Stop stack.
 | |
| CoreExport void MIDIMan_Suspend();
 | |
| CoreExport void MIDIMan_Resume();
 | |
| 
 | |
| // Macros to pull out peices of param1
 | |
| #define MIDI_CHANNEL(a)				((a)&0x0f)
 | |
| #define MIDI_EVENT(a)				((a)&0xf0)
 | |
| #define MIDI_NOTENUMBER(a)			(((a)&0xff00)>>8)
 | |
| #define MIDI_VELOCITY(a)			(((a)&0xff0000)>>16)
 | |
| #define MIDI_PITCHBEND(a)			(((a)&0xff0000)>>16)
 | |
| #define MIDI_NOTEFLOAT(a,low,high)	(float((a)-(low))/float((high)-(low)))
 | |
| #define MIDI_VELFLOAT(a)            (float(a)/127.0f)
 | |
| #define MIDI_BENDFLOAT(a)			(float(a)/127.0f)
 | |
| 
 | |
| // MIDI events
 | |
| #define MIDI_NOTE_ON		0x90
 | |
| #define MIDI_NOTE_OFF		0x80
 | |
| #define MIDI_PITCH_BEND		0xe0
 | |
| #define MIDI_CONTROLCHANGE	0xb0
 | |
| 
 | |
| 
 | |
| #endif // __MIDIMAN__
 | |
| 
 | 
