summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/ntddmidi.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/sdk/inc/ntddmidi.h')
-rw-r--r--public/sdk/inc/ntddmidi.h136
1 files changed, 136 insertions, 0 deletions
diff --git a/public/sdk/inc/ntddmidi.h b/public/sdk/inc/ntddmidi.h
new file mode 100644
index 000000000..44549eb4b
--- /dev/null
+++ b/public/sdk/inc/ntddmidi.h
@@ -0,0 +1,136 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddmidi.h
+
+Abstract:
+
+ This include file defines all constants and types for
+ accessing an NT wave device.
+
+Author:
+
+ Robin Speed (RobinSp) 12-Dec-91
+
+Revision History:
+
+--*/
+
+#ifndef _NTDDMIDI_
+#define _NTDDMIDI_
+
+#include <ntddsnd.h> // general sound stuff
+
+//
+// Device Name - this string is the name of the device. It is the name
+// that when added to the name of the root of the device tree and with
+// the device number appended, gives the name of the device required for
+// a call to NtOpenFile.
+// So for example, if the root is \Device and the Device type is
+// MidiIn and the device number is 2, the full name is \Device\MidiIn2
+//
+
+#define DD_MIDI_IN_DEVICE_NAME "\\Device\\MidiIn"
+#define DD_MIDI_IN_DEVICE_NAME_U L"\\Device\\MidiIn"
+#define DD_MIDI_OUT_DEVICE_NAME "\\Device\\MidiOut"
+#define DD_MIDI_OUT_DEVICE_NAME_U L"\\Device\\MidiOut"
+
+//
+// MIDI device driver IOCTL set
+//
+
+#define IOCTL_MIDI_GET_CAPABILITIES CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_MIDI_SET_STATE CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0002, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_MIDI_GET_STATE CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0003, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_MIDI_SET_VOLUME CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_MIDI_GET_VOLUME CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_MIDI_PLAY CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0006, METHOD_NEITHER, FILE_WRITE_ACCESS)
+#define IOCTL_MIDI_RECORD CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0007, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_MIDI_CACHE_PATCHES CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0008, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_MIDI_CACHE_DRUM_PATCHES CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0009, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+
+//
+// IOCTL used in the debug build only
+//
+
+#if DBG
+
+#define IOCTL_MIDI_SET_DEBUG_LEVEL CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0040, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#endif // DBG
+
+
+//
+// Product Ids - see winmm.h
+//
+
+
+//
+// Midi input output buffer format
+//
+
+typedef struct {
+ LARGE_INTEGER Time; // Time when data received
+ // (in units of 100ns from when
+ // midi input was started)
+ UCHAR Data[sizeof(ULONG)]; // Data (at least 4 byts for
+ // alignment).
+} MIDI_DD_INPUT_DATA, *PMIDI_DD_INPUT_DATA;
+
+
+//
+// Midi volume structure
+//
+
+typedef struct _MIDI_DD_VOLUME {
+ ULONG Left;
+ ULONG Right;
+} MIDI_DD_VOLUME, *PMIDI_DD_VOLUME;
+
+//
+// Patch array structure
+//
+
+//
+// Midi cache patches structures
+//
+
+typedef struct _MIDI_DD_CACHE_PATCHES {
+ ULONG Bank;
+ ULONG Flags;
+ USHORT Patches[128];
+} MIDI_DD_CACHE_PATCHES, *PMIDI_DD_CACHE_PATCHES;
+
+//
+// Midi cache drum patches structures
+//
+
+typedef struct _MIDI_DD_CACHE_DRUM_PATCHES {
+ ULONG Patch;
+ ULONG Flags;
+ USHORT DrumPatches[128];
+} MIDI_DD_CACHE_DRUM_PATCHES, *PMIDI_DD_CACHE_DRUM_PATCHES;
+
+//
+// State flags used to set the state of a driver
+//
+
+#define MIDI_DD_STOP 0x0001
+#define MIDI_DD_PLAY 0x0002 // output devices only
+#define MIDI_DD_RECORD 0x0003 // input devices only
+#define MIDI_DD_RESET 0x0004
+
+//
+// States returned by the get state ioctl
+//
+
+#define MIDI_DD_IDLE 0x0000
+#define MIDI_DD_STOPPED 0x0001 // stopped
+#define MIDI_DD_PLAYING 0x0002 // output devices only
+#define MIDI_DD_RECORDING 0x0003 // input devices only
+
+#endif // _NTDDMIDI_