Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

63 lines
2.1 KiB
C

/**********************************************************************
*<
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__