Index: i_mmsys.sbp
===================================================================
--- /api_mmsys.sbp	(revision 158)
+++ 	(revision )
@@ -1,2632 +1,0 @@
-' api_mmsys.sbp
-' Include file for Multimedia API's
-
-
-#ifndef _INC_MMSYS
-#define _INC_MMSYS
-
-
-' general constants
-Const MAXPNAMELEN            = 32
-Const MAXERRORLENGTH         = 256
-Const MAX_JOYSTICKOEMVXDNAME = 260
-
-Const MM_MIDI_MAPPER        =  1
-Const MM_WAVE_MAPPER        =  2
-Const MM_SNDBLST_MIDIOUT    =  3
-Const MM_SNDBLST_MIDIIN     =  4
-Const MM_SNDBLST_SYNTH      =  5
-Const MM_SNDBLST_WAVEOUT    =  6
-Const MM_SNDBLST_WAVEIN     =  7
-Const MM_ADLIB              =  9
-Const MM_MPU401_MIDIOUT     = 10
-Const MM_MPU401_MIDIIN      = 11
-Const MM_PC_JOYSTICK        = 12
-
-' general data types
-TypeDef MMVERSION = DWord
-TypeDef VERSION = DWord
-TypeDef MMRESULT = DWord
-
-' MMTIME data structure
-
-Type Smpte
-	hour As Byte
-	min As Byte
-	sec As Byte
-	frame As Byte
-	fps As Byte
-	dummy As Byte
-	pad[ELM(2)] As Byte
-End Type
-
-Type Midi
-	songptrpos As DWord
-End Type
-
-Type MMTIME
-Public
-	wType As DWord
-	u As DWord
-/* union
-	ms As DWord
-	sample As DWord
-	cb As DWord
-	ticks As DWord
-	smpte As Smpte
-	midi As Midi
-*/
-End Type
-TypeDef PMMTIME = *MMTIME
-TypeDef LPMMTIME = *MMTIME
-
-Const MAKEFOURCC(ch0, ch1, ch2, ch3) = (((ch0 As Byte) or ((ch1 As Byte)<<8) or ((ch2 As Byte)<<16) or ((ch3 As Byte)<<24)) As DWord)
-
-' types for wType field in MMTIME struct
-Const TIME_MS        = &H0001
-Const TIME_SAMPLES   = &H0002
-Const TIME_BYTES     = &H0004
-Const TIME_SMPTE     = &H0008
-Const TIME_MIDI      = &H0010
-Const TIME_TICKS     = &H0020
-
-'----------------------------------------
-' Multimedia Extensions Window Messages
-
-Const MM_JOY1MOVE =       &H3A0			'joystick
-Const MM_JOY2MOVE =       &H3A1
-Const MM_JOY1ZMOVE =      &H3A2
-Const MM_JOY2ZMOVE =      &H3A3
-Const MM_JOY1BUTTONDOWN = &H3B5
-Const MM_JOY2BUTTONDOWN = &H3B6
-Const MM_JOY1BUTTONUP =   &H3B7
-Const MM_JOY2BUTTONUP =   &H3B8
-
-Const MM_MCINOTIFY =      &H3B9			'MCI
-
-Const MM_WOM_OPEN =       &H3BB			'waveform output
-Const MM_WOM_CLOSE =      &H3BC
-Const MM_WOM_DONE =       &H3BD
-
-Const MM_WIM_OPEN =       &H3BE			'waveform input
-Const MM_WIM_CLOSE =      &H3BF
-Const MM_WIM_DATA =       &H3C0
-
-Const MM_MIM_OPEN =       &H3C1			'MIDI input
-Const MM_MIM_CLOSE =      &H3C2
-Const MM_MIM_DATA =       &H3C3
-Const MM_MIM_LONGDATA =   &H3C4
-Const MM_MIM_ERROR =      &H3C5
-Const MM_MIM_LONGERROR =  &H3C6
-
-Const MM_MOM_OPEN =       &H3C7			'MIDI output
-Const MM_MOM_CLOSE =      &H3C8
-Const MM_MOM_DONE =       &H3C9
-
-Const MM_DRVM_OPEN =      &H3D0			'installable drivers
-Const MM_DRVM_CLOSE =     &H3D1
-Const MM_DRVM_DATA =      &H3D2
-Const MM_DRVM_ERROR =     &H3D3
-
-Const MM_STREAM_OPEN	 =  &H3D4
-Const MM_STREAM_CLOSE	 =  &H3D5
-Const MM_STREAM_DONE	 =  &H3D6
-Const MM_STREAM_ERROR	 =  &H3D7
-
-Const MM_MOM_POSITIONCB = &H3CA
-
-Const MM_MCISIGNAL =      &H3CB
-
-Const MM_MIM_MOREDATA =   &H3CC			'MIM_DONE w/ pending events
-
-Const MM_MIXM_LINE_CHANGE =   &H3D0		'mixer line change notify
-Const MM_MIXM_CONTROL_CHANGE =&H3D1		'mixer control change notify
-
-
-'----------------------------------------------
-' String resource number bases (internal use)
-
-Const MMSYSERR_BASE =        0
-Const WAVERR_BASE =          32
-Const MIDIERR_BASE =         64
-Const TIMERR_BASE =          96
-Const JOYERR_BASE =          160
-Const MCIERR_BASE =          256
-Const MIXERR_BASE =          1024
-
-Const MCI_STRING_OFFSET =    512
-Const MCI_VD_OFFSET =        1024
-Const MCI_CD_OFFSET =        1088
-Const MCI_WAVE_OFFSET =      1152
-Const MCI_SEQ_OFFSET =       1216
-
-
-'----------------------------------------------
-' General error return values
-
-Const MMSYSERR_NOERROR     = 0                    'no error
-Const MMSYSERR_ERROR       = (MMSYSERR_BASE + 1)  'unspecified error
-Const MMSYSERR_BADDEVICEID = (MMSYSERR_BASE + 2)  'device ID out of range
-Const MMSYSERR_NOTENABLED  = (MMSYSERR_BASE + 3)  'driver failed enable
-Const MMSYSERR_ALLOCATED   = (MMSYSERR_BASE + 4)  'device already allocated
-Const MMSYSERR_INVALHANDLE = (MMSYSERR_BASE + 5)  'device handle is invalid
-Const MMSYSERR_NODRIVER    = (MMSYSERR_BASE + 6)  'no device driver present
-Const MMSYSERR_NOMEM       = (MMSYSERR_BASE + 7)  'memory allocation error
-Const MMSYSERR_NOTSUPPORTED= (MMSYSERR_BASE + 8)  'function isn't supported
-Const MMSYSERR_BADERRNUM   = (MMSYSERR_BASE + 9)  'error value out of range
-Const MMSYSERR_INVALFLAG   = (MMSYSERR_BASE + 10) 'invalid flag passed
-Const MMSYSERR_INVALPARAM  = (MMSYSERR_BASE + 11) 'invalid parameter passed
-Const MMSYSERR_HANDLEBUSY  = (MMSYSERR_BASE + 12) 'handle being used
-Const MMSYSERR_INVALIDALIAS= (MMSYSERR_BASE + 13) 'specified alias not found
-Const MMSYSERR_BADDB       = (MMSYSERR_BASE + 14) 'bad registry database
-Const MMSYSERR_KEYNOTFOUND = (MMSYSERR_BASE + 15) 'registry key not found
-Const MMSYSERR_READERROR   = (MMSYSERR_BASE + 16) 'registry read error
-Const MMSYSERR_WRITEERROR  = (MMSYSERR_BASE + 17) 'registry write error
-Const MMSYSERR_DELETEERROR = (MMSYSERR_BASE + 18) 'registry delete error
-Const MMSYSERR_VALNOTFOUND = (MMSYSERR_BASE + 19) 'registry value not found
-Const MMSYSERR_NODRIVERCB  = (MMSYSERR_BASE + 20) 'driver does not call DriverCallback
-Const MMSYSERR_LASTERROR   = (MMSYSERR_BASE + 20) 'last error in range
-
-
-'--------------------------------------------------------
-' Installable driver support
-
-Type _System_DeclareHandle_HDRVR:unused As DWord:End Type
-TypeDef HDRVR = *_System_DeclareHandle_HDRVR
-
-Type DRVCONFIGINFOEX
-	dwDCISize As DWord
-	lpszDCISectionName As LPCWSTR
-	lpszDCIAliasName As LPCWSTR
-	dnDevNode As DWORD
-End Type
-TypeDef PDRVCONFIGINFOEX = *DRVCONFIGINFOEX
-TypeDef LPDRVCONFIGINFOEX = *DRVCONFIGINFOEX
-
-' Driver messages
-Const DRV_LOAD                = &H0001
-Const DRV_ENABLE              = &H0002
-Const DRV_OPEN                = &H0003
-Const DRV_CLOSE               = &H0004
-Const DRV_DISABLE             = &H0005
-Const DRV_FREE                = &H0006
-Const DRV_CONFIGURE           = &H0007
-Const DRV_QUERYCONFIGURE      = &H0008
-Const DRV_INSTALL             = &H0009
-Const DRV_REMOVE              = &H000A
-Const DRV_EXITSESSION         = &H000B
-Const DRV_POWER               = &H000F
-Const DRV_RESERVED            = &H0800
-Const DRV_USER                = &H4000
-
-Type DRVCONFIGINFO
-	dwDCISize As DWord
-	lpszDCISectionName As LPCWSTR
-	lpszDCIAliasName As LPCWSTR
-End Type
-TypeDef PDRVCONFIGINFO = *DRVCONFIGINFO
-TypeDef LPDRVCONFIGINFO = *DRVCONFIGINFO
-
-' Supported return values for DRV_CONFIGURE message
-Const DRVCNF_CANCEL           = &H0000
-Const DRVCNF_OK               = &H0001
-Const DRVCNF_RESTART          = &H0002
-
-TypeDef DRIVERPROC = *Function(dwDriverId As DWord, hdrvr As HDRVR, msg As DWord, lParam1 As LPARAM, lParam2 As LPARAM) As LRESULT
-
-Declare Function CloseDriver Lib "winmm" (hDriver As HDRVR, lParam1 As Long, lParam2 As Long) As LRESULT
-Declare Function OpenDriver Lib "winmm" (szDriverName As LPCWSTR, szSectionName As LPCWSTR, lParam2 As Long) As HDRVR
-Declare Function SendDriverMessage Lib "winmm" (hDriver As HDRVR, message As DWord, lParam1 As Long, lParam2 As Long) As LRESULT
-Declare Function GetDriverModuleHandle Lib "winmm" (hDriver As HDRVR) As HMODULE
-Declare Function DefDriverProc Lib "winmm" (dwDriverIdentifier As DWord, hdrvr As HDRVR, uMsg As DWord, lParam1 As LPARAM, lParam2 As LPARAM) As LRESULT
-
-Declare Function DrvClose Lib "winmm" Alias "CloseDriver" (hDriver As HDRVR, lParam1 As Long, lParam2 As Long) As LRESULT
-Declare Function DrvOpen Lib "winmm" Alias "OpenDriver" (szDriverName As LPCWSTR, szSectionName As LPCWSTR, lParam2 As Long) As HDRVR
-Declare Function DrvSendMessage Lib "winmm" Alias "SendDriverMessage" (hDriver As HDRVR, message As DWord, lParam1 As Long, lParam2 As Long) As LRESULT
-Declare Function DrvGetModuleHandle Lib "winmm" Alias "GetDriverModuleHandle" (hDriver As HDRVR) As HMODULE
-Declare Function DrvDefDriverProc Lib "winmm" Alias "DefDriverProc" (dwDriverIdentifier As DWord, hdrvr As HDRVR, uMsg As DWord, lParam1 As LPARAM, lParam2 As LPARAM) As LRESULT
-
-' return values from DriverProc() function
-Const DRV_CANCEL            = DRVCNF_CANCEL
-Const DRV_OK                = DRVCNF_OK
-Const DRV_RESTART           = DRVCNF_RESTART
-
-Const DRV_MCI_FIRST         = DRV_RESERVED
-Const DRV_MCI_LAST          = (DRV_RESERVED + &HFFF)
-
-
-'--------------------------------------------------------
-' Driver callback support
-Const CALLBACK_TYPEMASK  = &H00070000     'callback type mask
-Const CALLBACK_NULL      = &H00000000     'no callback
-Const CALLBACK_WINDOW    = &H00010000     'dwCallback is a HWND
-Const CALLBACK_TASK      = &H00020000     'dwCallback is a HTASK
-Const CALLBACK_FUNCTION  = &H00030000     'dwCallback is a FARPROC
-Const CALLBACK_THREAD    = (CALLBACK_TASK)'thread ID replaces 16 bit task
-Const CALLBACK_EVENT     = &H00050000     'dwCallback is an EVENT Handle
-
-TypeDef DRVCALLBACK = *Sub(hdrvr As HDRVR, uMsg As DWord, dwUser As DWord, dw1 As DWord, dw2 As DWord)
-TypeDef PDRVCALLBACK = *DRVCALLBACK
-TypeDef LPDRVCALLBACK = *DRVCALLBACK
-
-
-'--------------------------------------------------------
-' General MMSYSTEM support
-
-Declare Function mmsystemGetVersion Lib "winmm" () As DWord
-
-
-
-'--------------------------------------------------------
-' Sound support
-
-#ifdef UNICODE
-Declare Function sndPlaySound Lib "winmm" Alias "sndPlaySoundW" (pszSound As PCWSTR, fuSound As DWord) As BOOL
-#else
-Declare Function sndPlaySound Lib "winmm" Alias "sndPlaySoundA" (pszSound As PCSTR, fuSound As DWord) As BOOL
-#endif
-
-Const SND_SYNC = &H0000
-Const SND_ASYNC = &H0001
-Const SND_NODEFAULT = &H0002
-Const SND_MEMORY = &H0004
-Const SND_LOOP = &H0008
-Const SND_NOSTOP = &H0010
-Const SND_NOWAIT = &H00002000
-Const SND_ALIAS = &H00010000
-Const SND_ALIAS_ID = &H00110000
-Const SND_FILENAME = &H00020000
-Const SND_RESOURCE = &H00040004
-Const SND_PURGE = &H0040
-Const SND_APPLICATION = &H0080
-Const SND_ALIAS_START = 0
-
-Const sndAlias(ch0, ch1) = (SND_ALIAS_START + ((&HFF AND ch0) OR (&HFF AND ch1)<<8))
-
-Const SND_ALIAS_SYSTEMASTERISK = sndAlias(&H53, &H2A)
-Const SND_ALIAS_SYSTEMQUESTION = sndAlias(&H53, &H3F)
-Const SND_ALIAS_SYSTEMHAND = sndAlias(&H53, &H48)
-Const SND_ALIAS_SYSTEMEXIT = sndAlias(&H53, &H45)
-Const SND_ALIAS_SYSTEMSTART = sndAlias(&H53, &H53)
-Const SND_ALIAS_SYSTEMWELCOME = sndAlias(&H53, &H57)
-Const SND_ALIAS_SYSTEMEXCLAMATION = sndAlias(&H53, &H21)
-Const SND_ALIAS_SYSTEMDEFAULT = sndAlias(&H53, &H44)
-
-#ifdef UNICODE
-Declare Function PlaySound Lib "winmm" Alias "PlaySoundW" (pszSound As PCWSTR, hmod As HMODULE, fdwSound As DWord) As BOOL
-#else
-Declare Function PlaySound Lib "winmm" Alias "PlaySoundA" (pszSound As PCSTR, hmod As HMODULE, fdwSound As DWord) As BOOL
-#endif
-
-
-'--------------------------------------------------------
-' Waveform audio support
-
-' waveform audio error return values
-Const WAVERR_BADFORMAT    = (WAVERR_BASE + 0)
-Const WAVERR_STILLPLAYING = (WAVERR_BASE + 1)
-Const WAVERR_UNPREPARED   = (WAVERR_BASE + 2)
-Const WAVERR_SYNC         = (WAVERR_BASE + 3)
-Const WAVERR_LASTERROR    = (WAVERR_BASE + 3)
-
-' waveform audio data types
-Type _System_DeclareHandle_HWAVE:unused As DWord:End Type
-TypeDef HWAVE = *_System_DeclareHandle_HWAVE
-Type _System_DeclareHandle_HWAVEIN:unused As DWord:End Type
-TypeDef HWAVEIN = *_System_DeclareHandle_HWAVEIN
-Type _System_DeclareHandle_HWAVEOUT:unused As DWord:End Type
-TypeDef HWAVEOUT = *_System_DeclareHandle_HWAVEOUT
-
-TypeDef WAVECALLBACK = DRVCALLBACK
-TypeDef LPWAVECALLBACK = *WAVECALLBACK
-
-' wave callback messages
-Const WOM_OPEN = MM_WOM_OPEN
-Const WOM_CLOSE = MM_WOM_CLOSE
-Const WOM_DONE = MM_WOM_DONE
-Const WIM_OPEN = MM_WIM_OPEN
-Const WIM_CLOSE = MM_WIM_CLOSE
-Const WIM_DATA = MM_WIM_DATA
-
-' device ID for wave device mapper
-Const WAVE_MAPPER = (-1)
-
-' flags for dwFlags parameter in waveOutOpen() and waveInOpen()
-Const WAVE_FORMAT_QUERY = &H0001
-Const WAVE_ALLOWSYNC = &H0002
-Const WAVE_MAPPED = &H0004
-Const WAVE_FORMAT_DIRECT = &H0008
-Const WAVE_FORMAT_DIRECT_QUERY = (WAVE_FORMAT_QUERY OR WAVE_FORMAT_DIRECT)
-
-' wave data block header
-Type WAVEHDR
-	lpData As LPSTR
-	dwBufferLength As DWord
-	dwBytesRecorded As DWord
-	dwUser As DWord
-	dwFlags As DWord
-	dwLoops As DWord
-	lpNext As *WAVEHDR
-	reserved As DWord
-End Type
-TypeDef PWAVEHDR = *WAVEHDR
-TypeDef LPWAVEHDR = *WAVEHDR
-
-' flags for dwFlags field of WAVEHDR
-Const WHDR_DONE = &H00000001
-Const WHDR_PREPARED = &H00000002
-Const WHDR_BEGINLOOP = &H00000004
-Const WHDR_ENDLOOP = &H00000008
-Const WHDR_INQUEUE = &H00000010
-
-' waveform output device capabilities structure
-Type WAVEOUTCAPSW
-	wMid As Word
-	wPid As Word
-	vDriverVersion As MMVERSION
-	szPname[ELM(MAXPNAMELEN)] As WCHAR
-	dwFormats As DWord
-	wChannels As Word
-	wReserved1 As Word
-	dwSupport As DWord
-End Type
-TypeDef PWAVEOUTCAPSW = *WAVEOUTCAPSW
-TypeDef LPWAVEOUTCAPSW = *WAVEOUTCAPSW
-
-Type WAVEOUTCAPSA
-	wMid As Word
-	wPid As Word
-	vDriverVersion As MMVERSION
-	szPname[ELM(MAXPNAMELEN)] As SByte
-	dwFormats As DWord
-	wChannels As Word
-	wReserved1 As Word
-	dwSupport As DWord
-End Type
-TypeDef PWAVEOUTCAPSA = *WAVEOUTCAPSA
-TypeDef LPWAVEOUTCAPSA = *WAVEOUTCAPSA
-
-#ifdef UNICODE
-TypeDef WAVEOUTCAPS = WAVEOUTCAPSW
-TypeDef PWAVEOUTCAPS = PWAVEOUTCAPSW
-TypeDef LPWAVEOUTCAPS = LPWAVEOUTCAPSW
-#else
-TypeDef WAVEOUTCAPS = WAVEOUTCAPSA
-TypeDef PWAVEOUTCAPS = PWAVEOUTCAPSA
-TypeDef LPWAVEOUTCAPS = LPWAVEOUTCAPSA
-#endif
-
-' flags for dwSupport field of WAVEOUTCAPS
-Const WAVECAPS_PITCH = &H0001
-Const WAVECAPS_PLAYBACKRATE = &H0002
-Const WAVECAPS_VOLUME = &H0004
-Const WAVECAPS_LRVOLUME = &H0008
-Const WAVECAPS_SYNC = &H0010
-Const WAVECAPS_SAMPLEACCURATE = &H0020
-Const WAVECAPS_DIRECTSOUND = &H0040
-
-' waveform input device capabilities structure
-Type WAVEINCAPSW
-	wMid As Word
-	wPid As Word
-	vDriverVersion As MMVERSION
-	szPname[ELM(MAXPNAMELEN)] As WCHAR
-	dwFormats As DWord
-	wChannels As Word
-	wReserved1 As Word
-End Type
-TypeDef PWAVEINCAPSW = *WAVEINCAPSW
-TypeDef LPWAVEINCAPSW = *WAVEINCAPSW
-
-Type WAVEINCAPSA
-	wMid As Word
-	wPid As Word
-	vDriverVersion As MMVERSION
-	szPname[ELM(MAXPNAMELEN)] As SByte
-	dwFormats As DWord
-	wChannels As Word
-	wReserved1 As Word
-End Type
-TypeDef PWAVEINCAPSA = *WAVEINCAPSA
-TypeDef LPWAVEINCAPSA = *WAVEINCAPSA
-
-#ifdef UNICODE
-TypeDef WAVEINCAPS = WAVEINCAPSW
-TypeDef PWAVEINCAPS = PWAVEINCAPSW
-TypeDef LPWAVEINCAPS = LPWAVEINCAPSW
-#else
-TypeDef WAVEINCAPS = WAVEINCAPSA
-TypeDef PWAVEINCAPS = PWAVEINCAPSA
-TypeDef LPWAVEINCAPS = LPWAVEINCAPSA
-#endif
-
-' defines for dwFormat field of WAVEINCAPS and WAVEOUTCAPS
-Const WAVE_INVALIDFORMAT     = &H00000000       ' invalid format
-Const WAVE_FORMAT_1M08       = &H00000001       ' 11.025 kHz, Mono,   8-bit 
-Const WAVE_FORMAT_1S08       = &H00000002       ' 11.025 kHz, Stereo, 8-bit 
-Const WAVE_FORMAT_1M16       = &H00000004       ' 11.025 kHz, Mono,   16-bit
-Const WAVE_FORMAT_1S16       = &H00000008       ' 11.025 kHz, Stereo, 16-bit
-Const WAVE_FORMAT_2M08       = &H00000010       ' 22.05  kHz, Mono,   8-bit 
-Const WAVE_FORMAT_2S08       = &H00000020       ' 22.05  kHz, Stereo, 8-bit 
-Const WAVE_FORMAT_2M16       = &H00000040       ' 22.05  kHz, Mono,   16-bit
-Const WAVE_FORMAT_2S16       = &H00000080       ' 22.05  kHz, Stereo, 16-bit
-Const WAVE_FORMAT_4M08       = &H00000100       ' 44.1   kHz, Mono,   8-bit 
-Const WAVE_FORMAT_4S08       = &H00000200       ' 44.1   kHz, Stereo, 8-bit 
-Const WAVE_FORMAT_4M16       = &H00000400       ' 44.1   kHz, Mono,   16-bit
-Const WAVE_FORMAT_4S16       = &H00000800       ' 44.1   kHz, Stereo, 16-bit
-
-' OLD general waveform format structure (information common to all formats)
-Type WAVEFORMAT
-	wFormatTag As Word
-	nChannels As Word
-	nSamplesPerSec As DWord
-	nAvgBytesPerSec As DWord
-	nBlockAlign As Word
-End Type
-TypeDef PWAVEFORMAT = *WAVEFORMAT
-TypeDef LPWAVEFORMAT = *WAVEFORMAT
-
-' flags for wFormatTag field of WAVEFORMAT
-Const WAVE_FORMAT_PCM = 1
-
-' specific waveform format structure for PCM data
-Type PCMWAVEFORMAT
-	wf As WAVEFORMAT
-	wBitsPerSample As Word
-End Type
-TypeDef PPCMWAVEFORMAT = *PCMWAVEFORMAT
-TypeDef LPPCMWAVEFORMAT = *PCMWAVEFORMAT
-
-Type WAVEFORMATEX
-	wFormatTag As Word
-	nChannels As Word
-	nSamplesPerSec As DWord
-	nAvgBytesPerSec As DWord
-	nBlockAlign As Word
-	wBitsPerSample As Word
-	cbSize As Word
-End Type
-TypeDef PWAVEFORMATEX = *WAVEFORMATEX
-TypeDef LPWAVEFORMATEX = *WAVEFORMATEX
-TypeDef LPCWAVEFORMATEX = *WAVEFORMATEX
-
-' waveform audio function prototypes
-Declare Function waveOutGetNumDevs Lib "winmm" () As DWord
-#ifdef UNICODE
-Declare Function waveOutGetDevCaps Lib "winmm" Alias "waveOutGetDevCapsW" (uDeviceID As DWord, ByRef pwoc As WAVEOUTCAPSW, cbwoc As DWord) As MMRESULT
-#else
-Declare Function waveOutGetDevCaps Lib "winmm" Alias "waveOutGetDevCapsA" (uDeviceID As DWord, ByRef pwoc As WAVEOUTCAPS, cbwoc As DWord) As MMRESULT
-#endif
-Declare Function waveOutGetVolume Lib "winmm" (hwo As HWAVEOUT, ByRef pdwVolume As DWord) As MMRESULT
-Declare Function waveOutSetVolume Lib "winmm" (hwo As HWAVEOUT, dwVolume As DWord) As MMRESULT
-#ifdef UNICODE
-Declare Function waveOutGetErrorText Lib "winmm" Alias "waveOutGetErrorTextW" (mmrError As MMRESULT, pszText As LPWSTR, cchText As DWord) As MMRESULT
-#else
-Declare Function waveOutGetErrorText Lib "winmm" Alias "waveOutGetErrorTextA" (mmrError As MMRESULT, pszText As LPSTR, cchText As DWord) As MMRESULT
-#endif
-Declare Function waveOutOpen Lib "winmm" (ByRef phwo As HWAVEOUT, uDeviceID As DWord, ByRef pwfx As WAVEFORMATEX, dwCallback As DWord, dwInstance As DWord, fdwOpen As DWord) As MMRESULT
-Declare Function waveOutClose Lib "winmm" (hwo As HWAVEOUT) As MMRESULT
-Declare Function waveOutPrepareHeader Lib "winmm" (hwo As HWAVEOUT, ByRef pwh As WAVEHDR, cbwh As DWord) As MMRESULT
-Declare Function waveOutUnprepareHeader Lib "winmm" (hwo As HWAVEOUT, ByRef pwh As WAVEHDR, cbwh As DWord) As MMRESULT
-Declare Function waveOutWrite Lib "winmm" (hwo As HWAVEOUT, ByRef pwh As WAVEHDR, cbwh As DWord) As MMRESULT
-Declare Function waveOutPause Lib "winmm" (hwo As HWAVEOUT) As MMRESULT
-Declare Function waveOutRestart Lib "winmm" (hwo As HWAVEOUT) As MMRESULT
-Declare Function waveOutReset Lib "winmm" (hwo As HWAVEOUT) As MMRESULT
-Declare Function waveOutBreakLoop Lib "winmm" (hwo As HWAVEOUT) As MMRESULT
-Declare Function waveOutGetPosition Lib "winmm" (hwo As HWAVEOUT, ByRef pmmt As MMTIME, cbmmt As DWord) As MMRESULT
-Declare Function waveOutGetPitch Lib "winmm" (hwo As HWAVEOUT, ByRef pdwPitch As DWord) As MMRESULT
-Declare Function waveOutSetPitch Lib "winmm" (hwo As HWAVEOUT, dwPitch As DWord) As MMRESULT
-Declare Function waveOutGetPlaybackRate Lib "winmm" (hwo As HWAVEOUT, ByRef pdwRate As DWord) As MMRESULT
-Declare Function waveOutSetPlaybackRate Lib "winmm" (hwo As HWAVEOUT, dwRate As DWord) As MMRESULT
-Declare Function waveOutGetID Lib "winmm" (hwo As HWAVEOUT, ByRef puDeviceID As DWord) As MMRESULT
-Declare Function waveOutMessage Lib "winmm" (hwo As HWAVEOUT, uMsg As DWord, dw1 As DWord, dw2 As DWord) As MMRESULT
-
-Declare Function waveInGetNumDevs Lib "winmm" () As DWord
-#ifdef UNICODE
-Declare Function waveInGetDevCaps Lib "winmm" Alias "waveInGetDevCapsW" (uDeviceID As DWord, ByRef pwic As WAVEINCAPSW, cbwic As DWord) As MMRESULT
-Declare Function waveInGetErrorText Lib "winmm" Alias "waveInGetErrorTextW" (mmrError As MMRESULT, pszText As LPWSTR, cchText As DWord) As MMRESULT
-#else
-Declare Function waveInGetDevCaps Lib "winmm" Alias "waveInGetDevCapsA" (uDeviceID As DWord, ByRef pwic As WAVEINCAPS, cbwic As DWord) As MMRESULT
-Declare Function waveInGetErrorText Lib "winmm" Alias "waveInGetErrorTextA" (mmrError As MMRESULT, pszText As LPSTR, cchText As DWord) As MMRESULT
-#endif
-Declare Function waveInOpen Lib "winmm" (ByRef phwi As HWAVEIN, uDeviceID As DWord, ByRef pwfx As WAVEFORMATEX, dwCallback As DWord, dwInstance As DWord, fdwOpen As DWord) As MMRESULT
-Declare Function waveInClose Lib "winmm" (hwi As HWAVEIN) As MMRESULT
-Declare Function waveInPrepareHeader Lib "winmm" (hwi As HWAVEIN, ByRef pwh As WAVEHDR, cbwh As DWord) As MMRESULT
-Declare Function waveInUnprepareHeader Lib "winmm" (hwi As HWAVEIN, ByRef pwh As WAVEHDR, cbwh As DWord) As MMRESULT
-Declare Function waveInAddBuffer Lib "winmm" (hwi As HWAVEIN, ByRef pwh As WAVEHDR, cbwh As DWord) As MMRESULT
-Declare Function waveInStart Lib "winmm" (hwi As HWAVEIN) As MMRESULT
-Declare Function waveInStop Lib "winmm" (hwi As HWAVEIN) As MMRESULT
-Declare Function waveInReset Lib "winmm" (hwi As HWAVEIN) As MMRESULT
-Declare Function waveInGetPosition Lib "winmm" (hwi As HWAVEIN, ByRef pmmt As MMTIME, cbmmt As DWord) As MMRESULT
-Declare Function waveInGetID Lib "winmm" (hwi As HWAVEIN, ByRef puDeviceID As DWord) As MMRESULT
-Declare Function waveInMessage Lib "winmm" (hwi As HWAVEIN, uMsg As DWord, dw1 As DWord, dw2 As DWord) As MMRESULT
-
-
-
-'--------------------------------------------------------
-' MIDI audio support
-
-' MIDI error return values
-Const MIDIERR_UNPREPARED = (MIDIERR_BASE + 0)
-Const MIDIERR_STILLPLAYING = (MIDIERR_BASE + 1)
-Const MIDIERR_NOMAP = (MIDIERR_BASE + 2)
-Const MIDIERR_NOTREADY = (MIDIERR_BASE + 3)
-Const MIDIERR_NODEVICE = (MIDIERR_BASE + 4)
-Const MIDIERR_INVALIDSETUP = (MIDIERR_BASE + 5)
-Const MIDIERR_BADOPENMODE = (MIDIERR_BASE + 6)
-Const MIDIERR_DONT_CONTINUE = (MIDIERR_BASE + 7)
-Const MIDIERR_LASTERROR = (MIDIERR_BASE + 7)
-
-' MIDI audio data types
-Type _System_DeclareHandle_HMIDI:unused As DWord:End Type
-TypeDef HMIDI = *_System_DeclareHandle_HMIDI
-Type _System_DeclareHandle_HMIDIIN:unused As DWord:End Type
-TypeDef HMIDIIN = *_System_DeclareHandle_HMIDIIN
-Type _System_DeclareHandle_HMIDIOUT:unused As DWord:End Type
-TypeDef HMIDIOUT = *_System_DeclareHandle_HMIDIOUT
-Type _System_DeclareHandle_HMIDISTRM:unused As DWord:End Type
-TypeDef HMIDISTRM = *_System_DeclareHandle_HMIDISTRM
-
-TypeDef MIDICALLBACK = DRVCALLBACK
-TypeDef LPMIDICALLBACK = *MIDICALLBACK
-
-Const MIDIPATCHSIZE  = 128
-
-TypeDef LPPATCHARRAY = *Word
-TypeDef LPKEYARRAY = *Word
-
-' MIDI callback messages
-Const MIM_OPEN = MM_MIM_OPEN
-Const MIM_CLOSE = MM_MIM_CLOSE
-Const MIM_DATA = MM_MIM_DATA
-Const MIM_LONGDATA = MM_MIM_LONGDATA
-Const MIM_ERROR = MM_MIM_ERROR
-Const MIM_LONGERROR = MM_MIM_LONGERROR
-Const MOM_OPEN = MM_MOM_OPEN
-Const MOM_CLOSE = MM_MOM_CLOSE
-Const MOM_DONE = MM_MOM_DONE
-Const MIM_MOREDATA = MM_MIM_MOREDATA
-Const MOM_POSITIONCB = MM_MOM_POSITIONCB
-
-' device ID for MIDI mapper
-Const MIDIMAPPER = (-1)
-Const MIDI_MAPPER = (-1)
-
-Const MIDI_IO_STATUS = &H00000020
-
-' flags for wFlags parm of midiOutCachePatches(), midiOutCacheDrumPatches()
-Const MIDI_CACHE_ALL = 1
-Const MIDI_CACHE_BESTFIT = 2
-Const MIDI_CACHE_QUERY = 3
-Const MIDI_UNCACHE = 4
-
-' MIDI output device capabilities structure
-Type MIDIOUTCAPSW
-	wMid As Word
-	wPid As Word
-	vDriverVersion As MMVERSION
-	szPname[ELM(MAXPNAMELEN)] As WCHAR
-	wTechnology As Word
-	wVoices As Word
-	wNotes As Word
-	wChannelMask As Word
-	dwSupport As DWord
-End Type
-TypeDef PMIDIOUTCAPSW = *MIDIOUTCAPSW
-TypeDef LPMIDIOUTCAPSW = *MIDIOUTCAPSW
-
-Type MIDIOUTCAPSA
-	wMid As Word
-	wPid As Word
-	vDriverVersion As MMVERSION
-	szPname[ELM(MAXPNAMELEN)] As SByte
-	wTechnology As Word
-	wVoices As Word
-	wNotes As Word
-	wChannelMask As Word
-	dwSupport As DWord
-End Type
-TypeDef PMIDIOUTCAPSA = *MIDIOUTCAPSA
-TypeDef LPMIDIOUTCAPSA = *MIDIOUTCAPSA
-
-#ifdef UNICODE
-TypeDef MIDIOUTCAPS = MIDIOUTCAPSW
-TypeDef PMIDIOUTCAPS = PMIDIOUTCAPSW
-TypeDef LPMIDIOUTCAPS = LPMIDIOUTCAPSW
-#else
-TypeDef MIDIOUTCAPS = MIDIOUTCAPSA
-TypeDef PMIDIOUTCAPS = PMIDIOUTCAPSA
-TypeDef LPMIDIOUTCAPS = LPMIDIOUTCAPSA
-#endif
-
-' flags for wTechnology field of MIDIOUTCAPS structure
-Const MOD_MIDIPORT = 1
-Const MOD_SYNTH = 2
-Const MOD_SQSYNTH = 3
-Const MOD_FMSYNTH = 4
-Const MOD_MAPPER = 5
-
-' flags for dwSupport field of MIDIOUTCAPS structure
-Const MIDICAPS_VOLUME = &H0001
-Const MIDICAPS_LRVOLUME = &H0002
-Const MIDICAPS_CACHE = &H0004
-Const MIDICAPS_STREAM = &H0008
-
-' MIDI input device capabilities structure
-Type MIDIINCAPSW
-	wMid As Word
-	wPid As Word
-	vDriverVersion As MMVERSION
-	szPname[ELM(MAXPNAMELEN)] As Char
-	dwSupport As DWord
-End Type
-TypeDef PMIDIINCAPSW = *MIDIINCAPSW
-TypeDef LPMIDIINCAPSW = *MIDIINCAPSW
-
-Type MIDIINCAPSA
-	wMid As Word
-	wPid As Word
-	vDriverVersion As MMVERSION
-	szPname[ELM(MAXPNAMELEN)] As Char
-	dwSupport As DWord
-End Type
-TypeDef PMIDIINCAPSA = *MIDIINCAPSA
-TypeDef LPMIDIINCAPSA = *MIDIINCAPSA
-
-#ifdef UNICODE
-TypeDef MIDIINCAPS = MIDIINCAPSW
-TypeDef PMIDIINCAPS = PMIDIINCAPSW
-TypeDef LPMIDIINCAPS = LPMIDIINCAPSW
-#else
-TypeDef MIDIINCAPS = MIDIINCAPSA
-TypeDef PMIDIINCAPS = PMIDIINCAPSA
-TypeDef LPMIDIINCAPS = LPMIDIINCAPSA
-#endif
-
-' MIDI data block header
-Type MIDIHDR
-	lpData As LPSTR
-	dwBufferLength As DWord
-	dwBytesRecorded As DWord
-	dwUser As DWord
-	dwFlags As DWord
-	lpNext As *MIDIHDR
-	reserved As DWord
-	dwOffset As DWord
-	dwReserved[ELM(8)] As DWord
-End Type
-TypeDef PMIDIHDR = *MIDIHDR
-TypeDef LPMIDIHDR = *MIDIHDR
-
-Type MIDIEVENT
-	dwDeltaTime As DWord
-	dwStreamID As DWord
-	dwEvent As DWord
-	dwParms[ELM(1)] As DWord
-End Type
-
-Type MIDISTRMBUFFVER
-	dwVersion As DWord
-	dwMid As DWord
-	dwOEMVersion As DWord
-End Type
-
-' flags for dwFlags field of MIDIHDR structure
-Const MHDR_DONE = &H00000001
-Const MHDR_PREPARED = &H00000002
-Const MHDR_INQUEUE = &H00000004
-Const MHDR_ISSTRM = &H00000008
-
-Const MEVT_F_SHORT = &H00000000
-Const MEVT_F_LONG = &H80000000
-Const MEVT_F_CALLBACK = &H40000000
-Const MEVT_EVENTTYPE(x) = ((x>>24) AND &HFF)
-Const MEVT_EVENTPARM(x) = (x AND &H00FFFFFF)
-Const MEVT_SHORTMSG = (&H00)
-Const MEVT_TEMPO = (&H01)
-Const MEVT_NOP = (&H02)
-Const MEVT_LONGMSG = (&H80)
-Const MEVT_COMMENT = (&H82)
-Const MEVT_VERSION = (&H84)
-
-Const MIDISTRM_ERROR = (-2)
-
-' Structures and defines for midiStreamProperty
-Const MIDIPROP_SET = &H80000000
-Const MIDIPROP_GET = &H40000000
-Const MIDIPROP_TIMEDIV = &H00000001
-Const MIDIPROP_TEMPO = &H00000002
-
-Type MIDIPROPTIMEDIV
-	cbStruct As DWord
-	dwTimeDiv As DWord
-End Type
-TypeDef LPMIDIPROPTIMEDIV = *MIDIPROPTIMEDIV
-
-Type MIDIPROPTEMPO
-	cbStruct As DWord
-	dwTempo As DWord
-End Type
-TypeDef LPMIDIPROPTEMPO = *MIDIPROPTEMPO
-
-
-' MIDI function prototypes
-Declare Function midiOutGetNumDevs Lib "winmm" () As DWord
-Declare Function midiStreamOpen Lib "winmm" (ByRef phms As HMIDISTRM, ByRef puDeviceID As DWord, cMidi As DWord, dwCallback As DWord, dwInstance As DWord, fdwOpen As DWord) As MMRESULT
-Declare Function midiStreamClose Lib "winmm" (hms As HMIDISTRM) As MMRESULT
-Declare Function midiStreamProperty Lib "winmm" (hms As HMIDISTRM, lppropdata As *Byte, dwProperty As DWord) As MMRESULT
-Declare Function midiStreamPosition Lib "winmm" (hms As HMIDISTRM, ByRef lpmmt As MMTIME, cbmmt As DWord) As MMRESULT
-Declare Function midiStreamOut Lib "winmm" (hms As HMIDISTRM, ByRef pmh As MIDIHDR, cbmh As DWord) As MMRESULT
-Declare Function midiStreamPause Lib "winmm" (hms As HMIDISTRM) As MMRESULT
-Declare Function midiStreamRestart Lib "winmm" (hms As HMIDISTRM) As MMRESULT
-Declare Function midiStreamStop Lib "winmm" (hms As HMIDISTRM) As MMRESULT
-
-Declare Function midiConnect Lib "winmm" (hmi As HMIDI, hmo As HMIDIOUT, pReserved As VoidPtr) As MMRESULT
-Declare Function midiDisconnect Lib "winmm" (hmi As HMIDI, hmo As HMIDIOUT, pReserved As VoidPtr) As MMRESULT
-#ifdef UNICODE
-Declare Function midiOutGetDevCaps Lib "winmm" Alias "midiOutGetDevCapsW" (uDeviceID As DWord, ByRef pmoc  As MIDIOUTCAPSW, cbmoc As DWord) As MMRESULT
-#else
-Declare Function midiOutGetDevCaps Lib "winmm" Alias "midiOutGetDevCapsA" (uDeviceID As DWord, ByRef pmoc  As MIDIOUTCAPS, cbmoc As DWord) As MMRESULT
-#endif
-Declare Function midiOutGetVolume Lib "winmm" (hmo As HMIDIOUT, ByRef pdwVolume As DWord) As MMRESULT
-Declare Function midiOutSetVolume Lib "winmm" (hmo As HMIDIOUT, dwVolume As DWord) As MMRESULT
-#ifdef UNICODE
-Declare Function midiOutGetErrorText Lib "winmm" Alias "midiOutGetErrorTextW" (mmrError As MMRESULT, pszText As LPWSTR, cchText As DWord) As MMRESULT
-#else
-Declare Function midiOutGetErrorText Lib "winmm" Alias "midiOutGetErrorTextA" (mmrError As MMRESULT, pszText As LPSTR, cchText As DWord) As MMRESULT
-#endif
-Declare Function midiOutOpen Lib "winmm" (ByRef phmo As HMIDIOUT, uDeviceID As DWord, dwCallback As DWord, dwInstance As DWord, fdwOpen As DWord) As MMRESULT
-Declare Function midiOutClose Lib "winmm" (hmo As HMIDIOUT) As MMRESULT
-Declare Function midiOutPrepareHeader Lib "winmm" (hmo As HMIDIOUT, ByRef pmh As MIDIHDR, cbmh As DWord) As MMRESULT
-Declare Function midiOutUnprepareHeader Lib "winmm" (hmo As HMIDIOUT, ByRef pmh As MIDIHDR, cbmh As DWord) As MMRESULT
-Declare Function midiOutShortMsg Lib "winmm" (hmo As HMIDIOUT, dwMsg As DWord) As MMRESULT
-Declare Function midiOutLongMsg Lib "winmm" (hmo As HMIDIOUT, ByRef pmh As MIDIHDR, cbmh As DWord) As MMRESULT
-Declare Function midiOutReset Lib "winmm" (hmo As HMIDIOUT) As MMRESULT
-Declare Function midiOutCachePatches Lib "winmm" (hmo As HMIDIOUT, uBank As DWord, ByRef pwpa As Word, fuCache As DWord) As MMRESULT
-Declare Function midiOutCacheDrumPatches Lib "winmm" (hmo As HMIDIOUT, uPatch As DWord, ByRef pwkya As Word, fuCache As DWord) As MMRESULT
-Declare Function midiOutGetID Lib "winmm" (hmo As HMIDIOUT, ByRef puDeviceID As DWord) As MMRESULT
-Declare Function midiOutMessage Lib "winmm" (hmo As HMIDIOUT, uMsg As DWord, dw1 As DWord, dw2 As DWord) As MMRESULT
-
-Declare Function midiInGetNumDevs Lib "winmm" () As DWord
-#ifdef UNICODE
-Declare Function midiInGetDevCaps Lib "winmm" Alias "midiInGetDevCapsW" (uDeviceID As DWord, ByRef pmic As MIDIINCAPSW, cbmic As DWord) As MMRESULT
-Declare Function midiInGetErrorText Lib "winmm" Alias "midiInGetErrorTextW" (mmrError As MMRESULT, pszText As LPWSTR, cchText As DWord) As MMRESULT
-#else
-Declare Function midiInGetDevCaps Lib "winmm" Alias "midiInGetDevCapsA" (uDeviceID As DWord, ByRef pmic As MIDIINCAPS, cbmic As DWord) As MMRESULT
-Declare Function midiInGetErrorText Lib "winmm" Alias "midiInGetErrorTextA" (mmrError As MMRESULT, pszText As LPSTR, cchText As DWord) As MMRESULT
-#endif
-Declare Function midiInOpen Lib "winmm" (ByRef phmi As HMIDIIN, uDeviceID As DWord, dwCallback As DWord, dwInstance As DWord, fdwOpen As DWord) As MMRESULT
-Declare Function midiInClose Lib "winmm" (hmi As HMIDIIN) As MMRESULT
-Declare Function midiInPrepareHeader Lib "winmm" (hmi As HMIDIIN, ByRef pmh As MIDIHDR, cbmh As DWord) As MMRESULT
-Declare Function midiInUnprepareHeader Lib "winmm" (hmi As HMIDIIN, ByRef pmh As MIDIHDR, cbmh As DWord) As MMRESULT
-Declare Function midiInAddBuffer Lib "winmm" (hmi As HMIDIIN, ByRef pmh As MIDIHDR, cbmh As DWord) As MMRESULT
-Declare Function midiInStart Lib "winmm" (hmi As HMIDIIN) As MMRESULT
-Declare Function midiInStop Lib "winmm" (hmi As HMIDIIN) As MMRESULT
-Declare Function midiInReset Lib "winmm" (hmi As HMIDIIN) As MMRESULT
-Declare Function midiInGetID Lib "winmm" (hmi As HMIDIIN, ByRef puDeviceID As DWord) As MMRESULT
-Declare Function midiInMessage Lib "winmm" (hmi As HMIDIIN, uMsg As DWord, dw1 As DWord, dw2 As DWord) As MMRESULT
-
-
-'--------------------------------------------------------
-' Auxiliary audio support
-
-' device ID for aux device mapper
-Const AUX_MAPPER = (-1)
-
-' Auxiliary audio device capabilities structure
-Type AUXCAPSW
-	wMid As Word
-	wPid As Word
-	vDriverVersion As MMVERSION
-	szPname[ELM(MAXPNAMELEN)] As WCHAR
-	wTechnology As Word
-	wReserved1 As Word
-	dwSupport As DWord
-End Type
-TypeDef PAUXCAPSW = *AUXCAPSW
-TypeDef NPAUXCAPSW = *AUXCAPSW
-TypeDef LPAUXCAPSW = *AUXCAPSW
-
-Type AUXCAPSA
-	wMid As Word
-	wPid As Word
-	vDriverVersion As MMVERSION
-	szPname[ELM(MAXPNAMELEN)] As SByte
-	wTechnology As Word
-	wReserved1 As Word
-	dwSupport As DWord
-End Type
-TypeDef PAUXCAPSA = *AUXCAPSA
-TypeDef NPAUXCAPSA = *AUXCAPSA
-TypeDef LPAUXCAPSA = *AUXCAPSA
-
-#ifdef UNICODE
-TypeDef AUXCAPS = AUXCAPSW
-TypeDef PAUXCAPS = PAUXCAPSW
-TypeDef NPAUXCAPS = NPAUXCAPSW
-TypeDef LPAUXCAPS = LPAUXCAPSW
-#else
-TypeDef AUXCAPS = AUXCAPSA
-TypeDef PAUXCAPS = PAUXCAPSA
-TypeDef NPAUXCAPS = NPAUXCAPSA
-TypeDef LPAUXCAPS = LPAUXCAPSA
-#endif
-
-Const AUXCAPS_CDAUDIO = 1
-Const AUXCAPS_AUXIN = 2
-
-Const AUXCAPS_VOLUME = &H0001
-Const AUXCAPS_LRVOLUME = &H0002
-
-' auxiliary audio function prototypes
-Declare Function auxGetNumDevs Lib "winmm" () As DWord
-#ifdef UNICODE
-Declare Function auxGetDevCaps Lib "winmm" Alias "auxGetDevCapsW" (uDeviceID As DWord, pac As *AUXCAPSW, cbac As DWord) As MMRESULT
-#else
-Declare Function auxGetDevCaps Lib "winmm" Alias "auxGetDevCapsA" (uDeviceID As DWord, pac As *AUXCAPS, cbac As DWord) As MMRESULT
-#endif
-Declare Function auxSetVolume Lib "winmm" (uDeviceID As DWord, dwVolume As DWord) As MMRESULT
-Declare Function auxGetVolume Lib "winmm" (uDeviceID As DWord, pdwVolume As *DWord) As MMRESULT
-Declare Function auxOutMessage Lib "winmm" (uDeviceID As DWord, uMsg As DWord, dw1 As DWord, dw2 As DWord) As MMRESULT
-
-
-'--------------------------------------------------------
-' Mixer Support
-
-TypeDef HMIXEROBJ = VoidPtr
-TypeDef LPHMIXEROBJ = HMIXEROBJ
-TypeDef HMIXER = VoidPtr
-TypeDef LPHMIXER = *HMIXER
-
-Const MIXER_SHORT_NAME_CHARS = 16
-Const MIXER_LONG_NAME_CHARS = 64
-
-Const MIXERR_INVALLINE = (MIXERR_BASE + 0)
-Const MIXERR_INVALCONTROL = (MIXERR_BASE + 1)
-Const MIXERR_INVALVALUE = (MIXERR_BASE + 2)
-Const MIXERR_LASTERROR = (MIXERR_BASE + 2)
-
-Const MIXER_OBJECTF_HANDLE = &H80000000
-Const MIXER_OBJECTF_MIXER = &H00000000
-Const MIXER_OBJECTF_HMIXER = (MIXER_OBJECTF_HANDLE OR MIXER_OBJECTF_MIXER)
-Const MIXER_OBJECTF_WAVEOUT = &H10000000
-Const MIXER_OBJECTF_HWAVEOUT = (MIXER_OBJECTF_HANDLE OR MIXER_OBJECTF_WAVEOUT)
-Const MIXER_OBJECTF_WAVEIN = &H20000000
-Const MIXER_OBJECTF_HWAVEIN = (MIXER_OBJECTF_HANDLE OR MIXER_OBJECTF_WAVEIN)
-Const MIXER_OBJECTF_MIDIOUT = &H30000000
-Const MIXER_OBJECTF_HMIDIOUT = (MIXER_OBJECTF_HANDLE OR MIXER_OBJECTF_MIDIOUT)
-Const MIXER_OBJECTF_MIDIIN = &H40000000
-Const MIXER_OBJECTF_HMIDIIN = (MIXER_OBJECTF_HANDLE OR MIXER_OBJECTF_MIDIIN)
-Const MIXER_OBJECTF_AUX = &H50000000
-
-Declare Function mixerGetNumDevs Lib "winmm" () As DWord
-
-Type MIXERCAPSW
-	wMid As Word
-	wPid As Word
-	vDriverVersion As MMVERSION
-	szPname[ELM(MAXPNAMELEN)] As WCHAR
-	fdwSupport As DWord
-	cDestinations As DWord
-End Type
-TypeDef PMIXERCAPSW = *MIXERCAPSW
-TypeDef LPMIXERCAPSW = *MIXERCAPSW
-
-Type MIXERCAPSA
-	wMid As Word
-	wPid As Word
-	vDriverVersion As MMVERSION
-	szPname[ELM(MAXPNAMELEN)] As SByte
-	fdwSupport As DWord
-	cDestinations As DWord
-End Type
-TypeDef PMIXERCAPSA = *MIXERCAPSA
-TypeDef LPMIXERCAPSA = *MIXERCAPSA
-
-#ifdef UNICODE
-TypeDef MIXERCAPS = MIXERCAPSW
-TypeDef PMIXERCAPS = PMIXERCAPSW
-TypeDef LPMIXERCAPS = LPMIXERCAPSW
-Declare Function mixerGetDevCaps Lib "winmm" Alias "mixerGetDevCapsW" (uMxId As DWord, pmxcaps As *MIXERCAPSW, cbmxcaps As DWord) As MMRESULT
-#else
-TypeDef MIXERCAPS = MIXERCAPSA
-TypeDef PMIXERCAPS = PMIXERCAPSA
-TypeDef LPMIXERCAPS = LPMIXERCAPSA
-Declare Function mixerGetDevCaps Lib "winmm" Alias "mixerGetDevCapsA" (uMxId As DWord, pmxcaps As *MIXERCAPS, cbmxcaps As DWord) As MMRESULT
-#endif
-
-Declare Function mixerOpen Lib "winmm" (phmx As *HMIXER, uMxId As DWord, dwCallback As DWord, dwInstance As DWord, fdwOpen As DWord) As MMRESULT
-Declare Function mixerClose Lib "winmm" (hmx As HMIXER) As MMRESULT
-Declare Function mixerMessage Lib "winmm" (hmx As HMIXER, uMsg As DWord, dwParam1 As DWord, dwParam2 As DWord) As DWord
-
-#ifdef UNICODE
-Type TARGET
-	dwType As DWord
-	dwDeviceID As DWord
-	wMid As Word
-	wPid As Word
-	vDriverVersion As MMVERSION
-	szPname[ELM(MAXPNAMELEN)] As WCHAR
-End Type
-#else
-Type TARGET
-	dwType As DWord
-	dwDeviceID As DWord
-	wMid As Word
-	wPid As Word
-	vDriverVersion As MMVERSION
-	szPname[ELM(MAXPNAMELEN)] As SByte
-End Type
-#endif
-
-Type MIXERLINEW
-	cbStruct As DWord
-	dwDestination As DWord
-	dwSource As DWord
-	dwLineID As DWord
-	fdwLine As DWord
-	dwUser As DWord
-	dwComponentType As DWord
-	cChannels As DWord
-	cConnections As DWord
-	cControls As DWord
-	szShortName[ELM(MIXER_SHORT_NAME_CHARS)] As WCHAR
-	szName[ELM(MIXER_LONG_NAME_CHARS)] As WCHAR
-	Target As TARGET
-End Type
-TypeDef PMIXERLINEW = *MIXERLINEW
-TypeDef LPMIXERLINEW = *MIXERLINEW
-
-Type MIXERLINEA
-	cbStruct As DWord
-	dwDestination As DWord
-	dwSource As DWord
-	dwLineID As DWord
-	fdwLine As DWord
-	dwUser As DWord
-	dwComponentType As DWord
-	cChannels As DWord
-	cConnections As DWord
-	cControls As DWord
-	szShortName[ELM(MIXER_SHORT_NAME_CHARS)] As SByte
-	szName[ELM(MIXER_LONG_NAME_CHARS)] As SByte
-	Target As TARGET
-End Type
-TypeDef PMIXERLINEA = *MIXERLINEA
-TypeDef LPMIXERLINEA = *MIXERLINEA
-
-#ifdef UNICODE
-TypeDef MIXERLINE = MIXERLINEA
-TypeDef PMIXERLINE = PMIXERLINEA
-TypeDef LPMIXERLINE = LPMIXERLINEA
-#else
-TypeDef MIXERLINE = MIXERLINEW
-TypeDef PMIXERLINE = PMIXERLINEW
-TypeDef LPMIXERLINE = LPMIXERLINEW
-#endif
-
-' MIXERLINE.fdwLine
-Const MIXERLINE_LINEF_ACTIVE = &H00000001
-Const MIXERLINE_LINEF_DISCONNECTED = &H00008000
-Const MIXERLINE_LINEF_SOURCE = &H80000000
-
-' MIXERLINE.dwComponentType
-Const MIXERLINE_COMPONENTTYPE_DST_FIRST = &H00000000
-Const MIXERLINE_COMPONENTTYPE_DST_UNDEFINED = (MIXERLINE_COMPONENTTYPE_DST_FIRST + 0)
-Const MIXERLINE_COMPONENTTYPE_DST_DIGITAL = (MIXERLINE_COMPONENTTYPE_DST_FIRST + 1)
-Const MIXERLINE_COMPONENTTYPE_DST_LINE = (MIXERLINE_COMPONENTTYPE_DST_FIRST + 2)
-Const MIXERLINE_COMPONENTTYPE_DST_MONITOR = (MIXERLINE_COMPONENTTYPE_DST_FIRST + 3)
-Const MIXERLINE_COMPONENTTYPE_DST_SPEAKERS = (MIXERLINE_COMPONENTTYPE_DST_FIRST + 4)
-Const MIXERLINE_COMPONENTTYPE_DST_HEADPHONES = (MIXERLINE_COMPONENTTYPE_DST_FIRST + 5)
-Const MIXERLINE_COMPONENTTYPE_DST_TELEPHONE = (MIXERLINE_COMPONENTTYPE_DST_FIRST + 6)
-Const MIXERLINE_COMPONENTTYPE_DST_WAVEIN = (MIXERLINE_COMPONENTTYPE_DST_FIRST + 7)
-Const MIXERLINE_COMPONENTTYPE_DST_VOICEIN = (MIXERLINE_COMPONENTTYPE_DST_FIRST + 8)
-Const MIXERLINE_COMPONENTTYPE_DST_LAST = (MIXERLINE_COMPONENTTYPE_DST_FIRST + 8)
-
-Const MIXERLINE_COMPONENTTYPE_SRC_FIRST = &H00001000
-Const MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED = (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0)
-Const MIXERLINE_COMPONENTTYPE_SRC_DIGITAL = (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1)
-Const MIXERLINE_COMPONENTTYPE_SRC_LINE = (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2)
-Const MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE = (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3)
-Const MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER = (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4)
-Const MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC = (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5)
-Const MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE = (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6)
-Const MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER = (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7)
-Const MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT = (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8)
-Const MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY = (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9)
-Const MIXERLINE_COMPONENTTYPE_SRC_ANALOG = (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
-Const MIXERLINE_COMPONENTTYPE_SRC_LAST = (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
-
-' MIXERLINE.Target.dwType
-Const MIXERLINE_TARGETTYPE_UNDEFINED = 0
-Const MIXERLINE_TARGETTYPE_WAVEOUT = 1
-Const MIXERLINE_TARGETTYPE_WAVEIN = 2
-Const MIXERLINE_TARGETTYPE_MIDIOUT = 3
-Const MIXERLINE_TARGETTYPE_MIDIIN = 4
-Const MIXERLINE_TARGETTYPE_AUX = 5
-
-#ifdef UNICODE
-Declare Function mixerGetLineInfo Lib "winmm" Alias "mixerGetLineInfoW" (hmxobj As HMIXEROBJ, pmxl As *MIXERLINEW, fdwInfo As DWord) As MMRESULT
-#else
-Declare Function mixerGetLineInfo Lib "winmm" Alias "mixerGetLineInfoA" (hmxobj As HMIXEROBJ, pmxl As *MIXERLINE, fdwInfo As DWord) As MMRESULT
-#endif
-
-Const MIXER_GETLINEINFOF_DESTINATION = &H00000000
-Const MIXER_GETLINEINFOF_SOURCE = &H00000001
-Const MIXER_GETLINEINFOF_LINEID = &H00000002
-Const MIXER_GETLINEINFOF_COMPONENTTYPE = &H00000003
-Const MIXER_GETLINEINFOF_TARGETTYPE = &H00000004
-Const MIXER_GETLINEINFOF_QUERYMASK = &H0000000F
-
-Declare Function mixerGetID Lib "winmm" (hmxobj As HMIXEROBJ, puMxId As *DWord, fdwId As DWord) As MMRESULT
-
-Type MIXERCONTROLW
-	cbStruct As DWord
-	dwControlID As DWord
-	dwControlType As DWord
-	fdwControl As DWord
-	cMultipleItems As DWord
-	szShortName[ELM(MIXER_SHORT_NAME_CHARS)] As WCHAR
-	szName[ELM(MIXER_LONG_NAME_CHARS)] As WCHAR
-	Bounds[ELM(6)] As DWord
-	Metrics[ELM(6)] As DWord
-End Type
-TypeDef PMIXERCONTROLW = *MIXERCONTROLW
-TypeDef LPMIXERCONTROLW = *MIXERCONTROLW
-
-Type MIXERCONTROLA
-	cbStruct As DWord
-	dwControlID As DWord
-	dwControlType As DWord
-	fdwControl As DWord
-	cMultipleItems As DWord
-	szShortName[ELM(MIXER_SHORT_NAME_CHARS)] As SByte
-	szName[ELM(MIXER_LONG_NAME_CHARS)] As SByte
-	Bounds[ELM(6)] As DWord
-	Metrics[ELM(6)] As DWord
-End Type
-TypeDef PMIXERCONTROLA = *MIXERCONTROLA
-TypeDef LPMIXERCONTROLA = *MIXERCONTROLA
-
-#ifdef UNICODE
-TypeDef MIXERCONTROL = MIXERCONTROLW
-TypeDef PMIXERCONTROL = PMIXERCONTROLW
-TypeDef LPMIXERCONTROL = LPMIXERCONTROLW
-#else
-TypeDef MIXERCONTROL = MIXERCONTROLA
-TypeDef PMIXERCONTROL = PMIXERCONTROLA
-TypeDef LPMIXERCONTROL = LPMIXERCONTROLA
-#endif
-
-' MIXERCONTROL.fdwControl
-Const MIXERCONTROL_CONTROLF_UNIFORM = &H00000001
-Const MIXERCONTROL_CONTROLF_MULTIPLE = &H00000002
-Const MIXERCONTROL_CONTROLF_DISABLED = &H80000000
-
-' MIXERCONTROL_CONTROLTYPE_xxx
-Const MIXERCONTROL_CT_CLASS_MASK = &HF0000000
-Const MIXERCONTROL_CT_CLASS_CUSTOM = &H00000000
-Const MIXERCONTROL_CT_CLASS_METER = &H10000000
-Const MIXERCONTROL_CT_CLASS_SWITCH = &H20000000
-Const MIXERCONTROL_CT_CLASS_NUMBER = &H30000000
-Const MIXERCONTROL_CT_CLASS_SLIDER = &H40000000
-Const MIXERCONTROL_CT_CLASS_FADER = &H50000000
-Const MIXERCONTROL_CT_CLASS_TIME = &H60000000
-Const MIXERCONTROL_CT_CLASS_LIST = &H70000000
-Const MIXERCONTROL_CT_SUBCLASS_MASK = &H0F000000
-Const MIXERCONTROL_CT_SC_SWITCH_BOOLEAN = &H00000000
-Const MIXERCONTROL_CT_SC_SWITCH_BUTTON = &H01000000
-Const MIXERCONTROL_CT_SC_METER_POLLED = &H00000000
-Const MIXERCONTROL_CT_SC_TIME_MICROSECS = &H00000000
-Const MIXERCONTROL_CT_SC_TIME_MILLISECS = &H01000000
-Const MIXERCONTROL_CT_SC_LIST_SINGLE = &H00000000
-Const MIXERCONTROL_CT_SC_LIST_MULTIPLE = &H01000000
-Const MIXERCONTROL_CT_UNITS_MASK = &H00FF0000
-Const MIXERCONTROL_CT_UNITS_CUSTOM = &H00000000
-Const MIXERCONTROL_CT_UNITS_BOOLEAN = &H00010000
-Const MIXERCONTROL_CT_UNITS_SIGNED = &H00020000
-Const MIXERCONTROL_CT_UNITS_UNSIGNED = &H00030000
-Const MIXERCONTROL_CT_UNITS_DECIBELS = &H00040000
-Const MIXERCONTROL_CT_UNITS_PERCENT = &H00050000
-
-' MIXERCONTROL.dwControlType
-Const MIXERCONTROL_CONTROLTYPE_CUSTOM = (MIXERCONTROL_CT_CLASS_CUSTOM OR MIXERCONTROL_CT_UNITS_CUSTOM)
-Const MIXERCONTROL_CONTROLTYPE_BOOLEANMETER = (MIXERCONTROL_CT_CLASS_METER OR MIXERCONTROL_CT_SC_METER_POLLED OR MIXERCONTROL_CT_UNITS_BOOLEAN)
-Const MIXERCONTROL_CONTROLTYPE_SIGNEDMETER = (MIXERCONTROL_CT_CLASS_METER OR MIXERCONTROL_CT_SC_METER_POLLED OR MIXERCONTROL_CT_UNITS_SIGNED)
-Const MIXERCONTROL_CONTROLTYPE_PEAKMETER = (MIXERCONTROL_CONTROLTYPE_SIGNEDMETER + 1)
-Const MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER = (MIXERCONTROL_CT_CLASS_METER OR MIXERCONTROL_CT_SC_METER_POLLED OR MIXERCONTROL_CT_UNITS_UNSIGNED)
-Const MIXERCONTROL_CONTROLTYPE_BOOLEAN = (MIXERCONTROL_CT_CLASS_SWITCH OR MIXERCONTROL_CT_SC_SWITCH_BOOLEAN OR MIXERCONTROL_CT_UNITS_BOOLEAN)
-Const MIXERCONTROL_CONTROLTYPE_ONOFF = (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 1)
-Const MIXERCONTROL_CONTROLTYPE_MUTE = (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2)
-Const MIXERCONTROL_CONTROLTYPE_MONO = (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 3)
-Const MIXERCONTROL_CONTROLTYPE_LOUDNESS = (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 4)
-Const MIXERCONTROL_CONTROLTYPE_STEREOENH = (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 5)
-Const MIXERCONTROL_CONTROLTYPE_BUTTON = (MIXERCONTROL_CT_CLASS_SWITCH OR MIXERCONTROL_CT_SC_SWITCH_BUTTON OR MIXERCONTROL_CT_UNITS_BOOLEAN)
-Const MIXERCONTROL_CONTROLTYPE_DECIBELS = (MIXERCONTROL_CT_CLASS_NUMBER OR MIXERCONTROL_CT_UNITS_DECIBELS)
-Const MIXERCONTROL_CONTROLTYPE_SIGNED = (MIXERCONTROL_CT_CLASS_NUMBER OR MIXERCONTROL_CT_UNITS_SIGNED)
-Const MIXERCONTROL_CONTROLTYPE_UNSIGNED = (MIXERCONTROL_CT_CLASS_NUMBER OR MIXERCONTROL_CT_UNITS_UNSIGNED)
-Const MIXERCONTROL_CONTROLTYPE_PERCENT = (MIXERCONTROL_CT_CLASS_NUMBER OR MIXERCONTROL_CT_UNITS_PERCENT)
-Const MIXERCONTROL_CONTROLTYPE_SLIDER = (MIXERCONTROL_CT_CLASS_SLIDER OR MIXERCONTROL_CT_UNITS_SIGNED)
-Const MIXERCONTROL_CONTROLTYPE_PAN = (MIXERCONTROL_CONTROLTYPE_SLIDER + 1)
-Const MIXERCONTROL_CONTROLTYPE_QSOUNDPAN = (MIXERCONTROL_CONTROLTYPE_SLIDER + 2)
-Const MIXERCONTROL_CONTROLTYPE_FADER = (MIXERCONTROL_CT_CLASS_FADER OR MIXERCONTROL_CT_UNITS_UNSIGNED)
-Const MIXERCONTROL_CONTROLTYPE_VOLUME = (MIXERCONTROL_CONTROLTYPE_FADER + 1)
-Const MIXERCONTROL_CONTROLTYPE_BASS = (MIXERCONTROL_CONTROLTYPE_FADER + 2)
-Const MIXERCONTROL_CONTROLTYPE_TREBLE = (MIXERCONTROL_CONTROLTYPE_FADER + 3)
-Const MIXERCONTROL_CONTROLTYPE_EQUALIZER = (MIXERCONTROL_CONTROLTYPE_FADER + 4)
-Const MIXERCONTROL_CONTROLTYPE_SINGLESELECT = (MIXERCONTROL_CT_CLASS_LIST OR MIXERCONTROL_CT_SC_LIST_SINGLE OR MIXERCONTROL_CT_UNITS_BOOLEAN)
-Const MIXERCONTROL_CONTROLTYPE_MUX = (MIXERCONTROL_CONTROLTYPE_SINGLESELECT + 1)
-Const MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT = (MIXERCONTROL_CT_CLASS_LIST OR MIXERCONTROL_CT_SC_LIST_MULTIPLE OR MIXERCONTROL_CT_UNITS_BOOLEAN)
-Const MIXERCONTROL_CONTROLTYPE_MIXER = (MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1)
-Const MIXERCONTROL_CONTROLTYPE_MICROTIME = (MIXERCONTROL_CT_CLASS_TIME OR MIXERCONTROL_CT_SC_TIME_MICROSECS OR MIXERCONTROL_CT_UNITS_UNSIGNED)
-Const MIXERCONTROL_CONTROLTYPE_MILLITIME = (MIXERCONTROL_CT_CLASS_TIME OR MIXERCONTROL_CT_SC_TIME_MILLISECS OR MIXERCONTROL_CT_UNITS_UNSIGNED)
-
-Type MIXERLINECONTROLSW
-	cbStruct As DWord
-	dwLineID As DWord
-	dwControl_ID_Type As DWord
-	cControls As DWord
-	cbmxctrl As DWord
-	pamxctrl As *MIXERCONTROLW
-End Type
-TypeDef PMIXERLINECONTROLSW = *MIXERLINECONTROLSW
-TypeDef LPMIXERLINECONTROLSW = *MIXERLINECONTROLSW
-
-Type MIXERLINECONTROLSA
-	cbStruct As DWord
-	dwLineID As DWord
-	dwControl_ID_Type As DWord
-	cControls As DWord
-	cbmxctrl As DWord
-	pamxctrl As *MIXERCONTROL
-End Type
-TypeDef PMIXERLINECONTROLSA = *MIXERLINECONTROLSA
-TypeDef LPMIXERLINECONTROLSA = *MIXERLINECONTROLSA
-
-#ifdef UNICODE
-TypeDef MIXERLINECONTROLS = MIXERLINECONTROLSW
-TypeDef PMIXERLINECONTROLS = PMIXERLINECONTROLSW
-TypeDef LPMIXERLINECONTROLS = LPMIXERLINECONTROLSW
-Declare Function mixerGetLineControls Lib "winmm" Alias "mixerGetLineControlsA" (hmxobj As HMIXEROBJ, pmxlc As *MIXERLINECONTROLSW, fdwControls As DWord) As MMRESULT
-#else
-TypeDef MIXERLINECONTROLS = MIXERLINECONTROLSA
-TypeDef PMIXERLINECONTROLS = PMIXERLINECONTROLSA
-TypeDef LPMIXERLINECONTROLS = LPMIXERLINECONTROLSA
-Declare Function mixerGetLineControls Lib "winmm" Alias "mixerGetLineControlsA" (hmxobj As HMIXEROBJ, pmxlc As *MIXERLINECONTROLS, fdwControls As DWord) As MMRESULT
-#endif
-
-Const MIXER_GETLINECONTROLSF_ALL = &H00000000
-Const MIXER_GETLINECONTROLSF_ONEBYID = &H00000001
-Const MIXER_GETLINECONTROLSF_ONEBYTYPE = &H00000002
-Const MIXER_GETLINECONTROLSF_QUERYMASK = &H0000000F
-
-Type MIXERCONTROLDETAILS
-	cbStruct As DWord
-	dwControlID As DWord
-	cChannels As DWord
-	cMultipleItems As DWord
-	cbDetails As DWord
-	paDetails As VoidPtr
-End Type
-TypeDef PMIXERCONTROLDETAILS = *MIXERCONTROLDETAILS
-TypeDef LPMIXERCONTROLDETAILS = *MIXERCONTROLDETAILS
-
-Type MIXERCONTROLDETAILS_LISTTEXTW
-	dwParam1 As DWord
-	dwParam2 As DWord
-	szName[ELM(MIXER_LONG_NAME_CHARS)] As WCHAR
-End Type
-TypeDef PMIXERCONTROLDETAILS_LISTTEXTW = *MIXERCONTROLDETAILS_LISTTEXTW
-TypeDef LPMIXERCONTROLDETAILS_LISTTEXTW = *MIXERCONTROLDETAILS_LISTTEXTW
-
-Type MIXERCONTROLDETAILS_LISTTEXTA
-	dwParam1 As DWord
-	dwParam2 As DWord
-	szName[ELM(MIXER_LONG_NAME_CHARS)] As SByte
-End Type
-TypeDef PMIXERCONTROLDETAILS_LISTTEXTA = *MIXERCONTROLDETAILS_LISTTEXTA
-TypeDef LPMIXERCONTROLDETAILS_LISTTEXTA = *MIXERCONTROLDETAILS_LISTTEXTA
-
-#ifdef UNICODE
-TypeDef MIXERCONTROLDETAILS_LISTTEXT = MIXERCONTROLDETAILS_LISTTEXTW
-TypeDef PMIXERCONTROLDETAILS_LISTTEXT = PMIXERCONTROLDETAILS_LISTTEXTW
-TypeDef LPMIXERCONTROLDETAILS_LISTTEXT = LPMIXERCONTROLDETAILS_LISTTEXTW
-#else
-TypeDef MIXERCONTROLDETAILS_LISTTEXT = MIXERCONTROLDETAILS_LISTTEXTA
-TypeDef PMIXERCONTROLDETAILS_LISTTEXT = PMIXERCONTROLDETAILS_LISTTEXTA
-TypeDef LPMIXERCONTROLDETAILS_LISTTEXT = LPMIXERCONTROLDETAILS_LISTTEXTA
-#endif
-
-Type MIXERCONTROLDETAILS_BOOLEAN
-	fValue As Long
-End Type
-TypeDef PMIXERCONTROLDETAILS_BOOLEAN = *MIXERCONTROLDETAILS_BOOLEAN
-TypeDef LPMIXERCONTROLDETAILS_BOOLEAN = *MIXERCONTROLDETAILS_BOOLEAN
-
-Type MIXERCONTROLDETAILS_SIGNED
-	lValue As Long
-End Type
-TypeDef PMIXERCONTROLDETAILS_SIGNED = *MIXERCONTROLDETAILS_SIGNED
-TypeDef LPMIXERCONTROLDETAILS_SIGNED = *MIXERCONTROLDETAILS_SIGNED
-
-Type MIXERCONTROLDETAILS_UNSIGNED
-	dwValue As DWord
-End Type
-TypeDef PMIXERCONTROLDETAILS_UNSIGNED = *MIXERCONTROLDETAILS_UNSIGNED
-TypeDef LPMIXERCONTROLDETAILS_UNSIGNED = *MIXERCONTROLDETAILS_UNSIGNED
-
-Declare Function mixerGetControlDetailsA Lib "winmm" (hmxobj As HMIXEROBJ, pmxcd As *MIXERCONTROLDETAILS, fdwDetails As DWord) As MMRESULT
-Declare Function mixerGetControlDetailsW Lib "winmm" (hmxobj As HMIXEROBJ, pmxcd As *MIXERCONTROLDETAILS, fdwDetails As DWord) As MMRESULT
-#ifdef UNICODE
-Declare Function mixerGetControlDetails Lib "winmm" Alias "mixerGetControlDetailsW" (hmxobj As HMIXEROBJ, pmxcd As *MIXERCONTROLDETAILS, fdwDetails As DWord) As MMRESULT
-#else
-Declare Function mixerGetControlDetails Lib "winmm" Alias "mixerGetControlDetailsA" (hmxobj As HMIXEROBJ, pmxcd As *MIXERCONTROLDETAILS, fdwDetails As DWord) As MMRESULT
-#endif
-
-Const MIXER_GETCONTROLDETAILSF_VALUE = &H00000000
-Const MIXER_GETCONTROLDETAILSF_LISTTEXT = &H00000001
-Const MIXER_GETCONTROLDETAILSF_QUERYMASK = &H0000000F
-
-Declare Function mixerSetControlDetails Lib "winmm" (hmxobj As HMIXEROBJ, pmxcd As *MIXERCONTROLDETAILS, fdwDetails As DWord) As MMRESULT
-
-Const MIXER_SETCONTROLDETAILSF_VALUE = &H00000000
-Const MIXER_SETCONTROLDETAILSF_CUSTOM = &H00000001
-Const MIXER_SETCONTROLDETAILSF_QUERYMASK = &H0000000F
-
-
-'--------------------------------------------------------
-' Timer support
-
-' timer error
-Const TIMERR_NOERROR = (0)
-Const TIMERR_NOCANDO = (TIMERR_BASE+1)
-Const TIMERR_STRUCT = (TIMERR_BASE+33)
-
-TypeDef LPTIMECALLBACK = *Sub(uTimerID As DWord, uMsg As DWord, dwUser As DWord, dw1 As DWord, dw2 As DWord)
-
-Const TIME_ONESHOT = &H0000
-Const TIME_PERIODIC = &H0001
-
-Const TIME_CALLBACK_FUNCTION = &H0000
-Const TIME_CALLBACK_EVENT_SET = &H0010
-Const TIME_CALLBACK_EVENT_PULSE = &H0020
-
-' timer device capabilities data structure
-Type TIMECAPS
-	wPeriodMin As DWord
-	wPeriodMax As DWord
-End Type
-TypeDef PTIMECAPS = *TIMECAPS
-TypeDef NPTIMECAPS = *TIMECAPS
-TypeDef LPTIMECAPS = *TIMECAPS
-
-' timer function prototypes
-Declare Function timeGetSystemTime Lib "winmm" (pmmt As *MMTIME, cbmmt As DWord) As MMRESULT
-Declare Function timeGetTime Lib "winmm" () As DWord
-Declare Function timeSetEvent Lib "winmm" (uDelay As DWord, uResolution As DWord, fptc As LPTIMECALLBACK, dwUser As DWord, fuEvent As DWord) As MMRESULT
-Declare Function timeKillEvent Lib "winmm" (uTimerID As DWord) As MMRESULT
-Declare Function timeGetDevCaps Lib "winmm" (ptc As *TIMECAPS, cbtc As DWord) As MMRESULT
-Declare Function timeBeginPeriod Lib "winmm" (uPeriod As DWord) As MMRESULT
-Declare Function timeEndPeriod Lib "winmm" (uPeriod As DWord) As MMRESULT
-
-
-'--------------------------------------------------------
-' Joystick support
-
-' joystick error
-Const JOYERR_NOERROR = (0)
-Const JOYERR_PARMS = (JOYERR_BASE+5)
-Const JOYERR_NOCANDO = (JOYERR_BASE+6)
-Const JOYERR_UNPLUGGED = (JOYERR_BASE+7)
-
-' constants used with JOYINFO and JOYINFOEX structures and MM_JOY* messages
-Const JOY_BUTTON1 = &H0001
-Const JOY_BUTTON2 = &H0002
-Const JOY_BUTTON3 = &H0004
-Const JOY_BUTTON4 = &H0008
-Const JOY_BUTTON1CHG = &H0100
-Const JOY_BUTTON2CHG = &H0200
-Const JOY_BUTTON3CHG = &H0400
-Const JOY_BUTTON4CHG = &H0800
-
-' constants used with JOYINFOEX
-Const JOY_BUTTON5 = &H00000010
-Const JOY_BUTTON6 = &H00000020
-Const JOY_BUTTON7 = &H00000040
-Const JOY_BUTTON8 = &H00000080
-Const JOY_BUTTON9 = &H00000100
-Const JOY_BUTTON10 = &H00000200
-Const JOY_BUTTON11 = &H00000400
-Const JOY_BUTTON12 = &H00000800
-Const JOY_BUTTON13 = &H00001000
-Const JOY_BUTTON14 = &H00002000
-Const JOY_BUTTON15 = &H00004000
-Const JOY_BUTTON16 = &H00008000
-Const JOY_BUTTON17 = &H00010000
-Const JOY_BUTTON18 = &H00020000
-Const JOY_BUTTON19 = &H00040000
-Const JOY_BUTTON20 = &H00080000
-Const JOY_BUTTON21 = &H00100000
-Const JOY_BUTTON22 = &H00200000
-Const JOY_BUTTON23 = &H00400000
-Const JOY_BUTTON24 = &H00800000
-Const JOY_BUTTON25 = &H01000000
-Const JOY_BUTTON26 = &H02000000
-Const JOY_BUTTON27 = &H04000000
-Const JOY_BUTTON28 = &H08000000
-Const JOY_BUTTON29 = &H10000000
-Const JOY_BUTTON30 = &H20000000
-Const JOY_BUTTON31 = &H40000000
-Const JOY_BUTTON32 = &H80000000
-
-' constants used with JOYINFOEX structure
-Const JOY_POVCENTERED = (-1)
-Const JOY_POVFORWARD = 0
-Const JOY_POVRIGHT = 9000
-Const JOY_POVBACKWARD = 18000
-Const JOY_POVLEFT = 27000
-
-Const JOY_RETURNX = &H00000001
-Const JOY_RETURNY = &H00000002
-Const JOY_RETURNZ = &H00000004
-Const JOY_RETURNR = &H00000008
-Const JOY_RETURNU = &H00000010
-Const JOY_RETURNV = &H00000020
-Const JOY_RETURNPOV = &H00000040
-Const JOY_RETURNBUTTONS = &H00000080
-Const JOY_RETURNRAWDATA = &H00000100
-Const JOY_RETURNPOVCTS = &H00000200
-Const JOY_RETURNCENTERED = &H00000400
-Const JOY_USEDEADZONE = &H00000800
-Const JOY_RETURNALL = (JOY_RETURNX OR JOY_RETURNY OR JOY_RETURNZ OR JOY_RETURNR OR JOY_RETURNU OR JOY_RETURNV OR JOY_RETURNPOV OR JOY_RETURNBUTTONS)
-Const JOY_CAL_READALWAYS = &H00010000
-Const JOY_CAL_READXYONLY = &H00020000
-Const JOY_CAL_READ3 = &H00040000
-Const JOY_CAL_READ4 = &H00080000
-Const JOY_CAL_READXONLY = &H00100000
-Const JOY_CAL_READYONLY = &H00200000
-Const JOY_CAL_READ5 = &H00400000
-Const JOY_CAL_READ6 = &H00800000
-Const JOY_CAL_READZONLY = &H01000000
-Const JOY_CAL_READRONLY = &H02000000
-Const JOY_CAL_READUONLY = &H04000000
-Const JOY_CAL_READVONLY = &H08000000
-
-' joystick ID constants
-Const JOYSTICKID1 = 0
-Const JOYSTICKID2 = 1
-
-' joystick driver capabilites
-Const JOYCAPS_HASZ = &H0001
-Const JOYCAPS_HASR = &H0002
-Const JOYCAPS_HASU = &H0004
-Const JOYCAPS_HASV = &H0008
-Const JOYCAPS_HASPOV = &H0010
-Const JOYCAPS_POV4DIR = &H0020
-Const JOYCAPS_POVCTS = &H0040
-
-Type JOYCAPSW
-	wMid As Word
-	wPid As Word
-	szPname[ELM(MAXPNAMELEN)] As WCHAR
-	wXmin As DWord
-	wXmax As DWord
-	wYmin As DWord
-	wYmax As DWord
-	wZmin As DWord
-	wZmax As DWord
-	wNumButtons As DWord
-	wPeriodMin As DWord
-	wPeriodMax As DWord
-	wRmin As DWord
-	wRmax As DWord
-	wUmin As DWord
-	wUmax As DWord
-	wVmin As DWord
-	wVmax As DWord
-	wCaps As DWord
-	wMaxAxes As DWord
-	wNumAxes As DWord
-	wMaxButtons As DWord
-	szRegKey[ELM(MAXPNAMELEN)] As WCHAR
-	szOEMVxD[ELM(MAX_JOYSTICKOEMVXDNAME)] As WCHAR
-End Type
-TypeDef PJOYCAPSW = *JOYCAPSW
-TypeDef NPJOYCAPSW = *JOYCAPSW
-TypeDef LPJOYCAPSW = *JOYCAPSW
-
-Type JOYCAPSA
-	wMid As Word
-	wPid As Word
-	szPname[ELM(MAXPNAMELEN)] As SByte
-	wXmin As DWord
-	wXmax As DWord
-	wYmin As DWord
-	wYmax As DWord
-	wZmin As DWord
-	wZmax As DWord
-	wNumButtons As DWord
-	wPeriodMin As DWord
-	wPeriodMax As DWord
-	wRmin As DWord
-	wRmax As DWord
-	wUmin As DWord
-	wUmax As DWord
-	wVmin As DWord
-	wVmax As DWord
-	wCaps As DWord
-	wMaxAxes As DWord
-	wNumAxes As DWord
-	wMaxButtons As DWord
-	szRegKey[ELM(MAXPNAMELEN)] As SByte
-	szOEMVxD[ELM(MAX_JOYSTICKOEMVXDNAME)] As SByte
-End Type
-TypeDef PJOYCAPSA = *JOYCAPSA
-TypeDef NPJOYCAPSA = *JOYCAPSA
-TypeDef LPJOYCAPSA = *JOYCAPSA
-
-#ifdef UNICODE
-TypeDef JOYCAPS = JOYCAPSW
-TypeDef PJOYCAPS = PJOYCAPSW
-TypeDef NPJOYCAPS = NPJOYCAPSW
-TypeDef LPJOYCAPS = LPJOYCAPSW
-#else
-TypeDef JOYCAPS = JOYCAPSA
-TypeDef PJOYCAPS = PJOYCAPSA
-TypeDef NPJOYCAPS = NPJOYCAPSA
-TypeDef LPJOYCAPS = LPJOYCAPSA
-#endif
-
-Type JOYINFO
-	wXpos As DWord
-	wYpos As DWord
-	wZpos As DWord
-	wButtons As DWord
-End Type
-TypeDef PJOYINFO = *JOYINFO
-TypeDef NPJOYINFO = *JOYINFO
-TypeDef LPJOYINFO = *JOYINFO
-
-Type JOYINFOEX
-	dwSize As DWord
-	dwFlags As DWord
-	dwXpos As DWord
-	dwYpos As DWord
-	dwZpos As DWord
-	dwRpos As DWord
-	dwUpos As DWord
-	dwVpos As DWord
-	dwButtons As DWord
-	dwButtonNumber As DWord
-	dwPOV As DWord
-	dwReserved1 As DWord
-	dwReserved2 As DWord
-End Type
-TypeDef PJOYINFOEX = *JOYINFOEX
-TypeDef NPJOYINFOEX = *JOYINFOEX
-TypeDef LPJOYINFOEX = *JOYINFOEX
-
-' joystick function prototypes
-Declare Function joyGetNumDevs Lib "winmm" () As DWord
-#ifdef UNICODE
-Declare Function joyGetDevCaps Lib "winmm" Alias "joyGetDevCapsW" (uJoyID As DWord, pjc As *JOYCAPSW, cbjc As DWord) As MMRESULT
-#else
-Declare Function joyGetDevCaps Lib "winmm" Alias "joyGetDevCapsA" (uJoyID As DWord, pjc As *JOYCAPS, cbjc As DWord) As MMRESULT
-#endif
-Declare Function joyGetPos Lib "winmm" (uJoyID As DWord, pji As *JOYINFO) As MMRESULT
-Declare Function joyGetPosEx Lib "winmm" (uJoyID As DWord, pji As *JOYINFOEX) As MMRESULT
-Declare Function joyGetThreshold Lib "winmm" (uJoyID As DWord, puThreshold As *DWord) As MMRESULT
-Declare Function joyReleaseCapture Lib "winmm" (uJoyID As DWord) As MMRESULT
-Declare Function joySetCapture Lib "winmm" (hwnd As HWND, uJoyID As DWord, uPeriod As DWord, fChanged As BOOL) As MMRESULT
-Declare Function joySetThreshold Lib "winmm" (uJoyID As DWord, uThreshold As DWord) As MMRESULT
-
-
-'--------------------------------------------------------
-' Multimedia File I/O support
-
-' MMIO error return values
-Const MMIOERR_BASE = 256
-Const MMIOERR_FILENOTFOUND = (MMIOERR_BASE + 1)
-Const MMIOERR_OUTOFMEMORY = (MMIOERR_BASE + 2)
-Const MMIOERR_CANNOTOPEN = (MMIOERR_BASE + 3)
-Const MMIOERR_CANNOTCLOSE = (MMIOERR_BASE + 4)
-Const MMIOERR_CANNOTREAD = (MMIOERR_BASE + 5)
-Const MMIOERR_CANNOTWRITE = (MMIOERR_BASE + 6)
-Const MMIOERR_CANNOTSEEK = (MMIOERR_BASE + 7)
-Const MMIOERR_CANNOTEXPAND = (MMIOERR_BASE + 8)
-Const MMIOERR_CHUNKNOTFOUND = (MMIOERR_BASE + 9)
-Const MMIOERR_UNBUFFERED = (MMIOERR_BASE + 10)
-Const MMIOERR_PATHNOTFOUND = (MMIOERR_BASE + 11)
-Const MMIOERR_ACCESSDENIED = (MMIOERR_BASE + 12)
-Const MMIOERR_SHARINGVIOLATION = (MMIOERR_BASE + 13)
-Const MMIOERR_NETWORKERROR = (MMIOERR_BASE + 14)
-Const MMIOERR_TOOMANYOPENFILES = (MMIOERR_BASE + 15)
-Const MMIOERR_INVALIDFILE = (MMIOERR_BASE + 16)
-
-' MMIO constants
-Const CFSEPCHAR = "+"
-
-' MMIO data types
-TypeDef FOURCC = DWord
-TypeDef HPSTR = *Char
-TypeDef HMMIO = VoidPtr
-
-TypeDef LPMMIOPROC = *Function(lpmmioinfo As LPSTR, uMsg As DWord, lParam1 As LPARAM, lParam2 As LPARAM) As LRESULT
-
-Type MMIOINFO
-	dwFlags As DWord
-	fccIOProc As FOURCC
-	pIOProc As LPMMIOPROC
-	wErrorRet As DWord
-	htask As HTASK
-	cchBuffer As Long
-	pchBuffer As HPSTR
-	pchNext As HPSTR
-	pchEndRead As HPSTR
-	pchEndWrite As HPSTR
-	lBufOffset As Long
-	lDiskOffset As Long
-	adwInfo[ELM(3)] As DWord
-	dwReserved1 As DWord
-	dwReserved2 As DWord
-	hmmio As HMMIO
-End Type
-TypeDef PMMIOINFO = *MMIOINFO
-TypeDef NPMMIOINFO = *MMIOINFO
-TypeDef LPMMIOINFO = *MMIOINFO
-
-Type MMCKINFO
-	ckid As FOURCC
-	cksize As DWord
-	fccType As FOURCC
-	dwDataOffset As DWord
-	dwFlags As DWord
-End Type
-TypeDef PMMCKINFO = *MMCKINFO
-TypeDef NPMMCKINFO = *MMCKINFO
-TypeDef LPMMCKINFO = *MMCKINFO
-
-Const MMIO_RWMODE = &H00000003
-Const MMIO_SHAREMODE = &H00000070
-Const MMIO_CREATE = &H00001000
-Const MMIO_PARSE = &H00000100
-Const MMIO_DELETE = &H00000200
-Const MMIO_EXIST = &H00004000
-Const MMIO_ALLOCBUF = &H00010000
-Const MMIO_GETTEMP = &H00020000
-Const MMIO_DIRTY = &H10000000
-Const MMIO_READ = &H00000000
-Const MMIO_WRITE = &H00000001
-Const MMIO_READWRITE = &H00000002
-Const MMIO_COMPAT = &H00000000
-Const MMIO_EXCLUSIVE = &H00000010
-Const MMIO_DENYWRITE = &H00000020
-Const MMIO_DENYREAD = &H00000030
-Const MMIO_DENYNONE = &H00000040
-Const MMIO_FHOPEN = &H0010
-Const MMIO_EMPTYBUF = &H0010
-Const MMIO_TOUPPER = &H0010
-Const MMIO_INSTALLPROC = &H00010000
-Const MMIO_GLOBALPROC = &H10000000
-Const MMIO_REMOVEPROC = &H00020000
-Const MMIO_UNICODEPROC = &H01000000
-Const MMIO_FINDPROC = &H00040000
-Const MMIO_FINDCHUNK = &H0010
-Const MMIO_FINDRIFF = &H0020
-Const MMIO_FINDLIST = &H0040
-Const MMIO_CREATERIFF = &H0020
-Const MMIO_CREATELIST = &H0040
-
-Const MMIOM_READ = MMIO_READ
-Const MMIOM_WRITE = MMIO_WRITE
-Const MMIOM_SEEK = 2
-Const MMIOM_OPEN = 3
-Const MMIOM_CLOSE = 4
-Const MMIOM_WRITEFLUSH = 5
-Const MMIOM_RENAME = 6
-Const MMIOM_USER = &H8000
-
-Const FOURCC_RIFF = MAKEFOURCC(&H52, &H49, &H46, &H46)
-Const FOURCC_LIST = MAKEFOURCC(&H4C, &H49, &H53, &H54)
-Const FOURCC_DOS = MAKEFOURCC(&H44, &H4F, &H53, &H20)
-Const FOURCC_MEM = MAKEFOURCC(&H4D, &H45, &H4D, &H20)
-
-Const SEEK_SET = 0
-Const SEEK_CUR = 1
-Const SEEK_END = 2
-
-Const MMIO_DEFAULTBUFFER = 8192
-
-Function mmioFOURCC(ch0 As String, ch1 As String, ch2 As String, ch3 As String) As FOURCC
-	mmioFOURCC = MAKEFOURCC(Asc(ch0), Asc(ch1), Asc(ch2), Asc(ch3))
-End Function
-
-' MMIO function prototypes
-#ifdef UNICODE
-Declare Function mmioStringToFOURCC Lib "winmm" Alias "mmioStringToFOURCCW" (sz As LPWSTR, uFlags As DWord) As FOURCC
-Declare Function mmioInstallIOProc Lib "winmm" Alias "mmioInstallIOProcW" (fccIOProc As FOURCC, pIOProc As LPMMIOPROC, dwFlags As DWord) As LPMMIOPROC
-Declare Function mmioOpen Lib "winmm" Alias "mmioOpenW" (pszFileName As LPWSTR, pmmioinfo As *MMIOINFO, fdwOpen As DWord) As HMMIO
-Declare Function mmioRename Lib "winmm" Alias "mmioRenameW" (pszFileName As LPSTR, pszNewFileName As LPWSTR, pmmioinfo As *MMIOINFO, fdwRename As DWord) As MMRESULT
-#else
-Declare Function mmioStringToFOURCC Lib "winmm" Alias "mmioStringToFOURCCA" (sz As LPSTR, uFlags As DWord) As FOURCC
-Declare Function mmioInstallIOProc Lib "winmm" Alias "mmioInstallIOProcA" (fccIOProc As FOURCC, pIOProc As LPMMIOPROC, dwFlags As DWord) As LPMMIOPROC
-Declare Function mmioOpen Lib "winmm" Alias "mmioOpenA" (pszFileName As LPSTR, pmmioinfo As *MMIOINFO, fdwOpen As DWord) As HMMIO
-Declare Function mmioRename Lib "winmm" Alias "mmioRenameA" (pszFileName As LPSTR, pszNewFileName As LPSTR, pmmioinfo As *MMIOINFO, fdwRename As DWord) As MMRESULT
-#endif
-Declare Function mmioClose Lib "winmm" (hmmio As HMMIO, fuClose As DWord) As MMRESULT
-Declare Function mmioRead Lib "winmm" (hmmio As HMMIO, pch As HPSTR, cch As Long) As Long
-Declare Function mmioWrite Lib "winmm" (hmmio As HMMIO, pch As HPSTR, cch As Long) As Long
-Declare Function mmioSeek Lib "winmm" (hmmio As HMMIO, lOffset As Long, iOrigin As Long) As Long
-Declare Function mmioGetInfo Lib "winmm" (hmmio As HMMIO, pmmioinfo As *MMIOINFO, fuInfo As DWord) As MMRESULT
-Declare Function mmioSetInfo Lib "winmm" (hmmio As HMMIO, pmmioinfo As *MMIOINFO, fuInfo As DWord) As MMRESULT
-Declare Function mmioSetBuffer Lib "winmm" (hmmio As HMMIO, pchBuffer As LPSTR, cchBuffer As Long, fuBuffer As DWord) As MMRESULT
-Declare Function mmioFlush Lib "winmm" (hmmio As HMMIO, fuFlush As DWord) As MMRESULT
-Declare Function mmioAdvance Lib "winmm" (hmmio As HMMIO, pmmioinfo As *MMIOINFO, fuAdvance As DWord) As MMRESULT
-Declare Function mmioSendMessage Lib "winmm" (hmmio As HMMIO, uMsg As DWord, lParam1 As LPARAM, lParam2 As LPARAM) As LRESULT
-Declare Function mmioDescend Lib "winmm" (hmmio As HMMIO, pmmcki As *MMCKINFO, pmmckiParent As *MMCKINFO, fuDescend As DWord) As MMRESULT
-Declare Function mmioAscend Lib "winmm" (hmmio As HMMIO, pmmcki As *MMCKINFO, fuAscend As DWord) As MMRESULT
-Declare Function mmioCreateChunk Lib "winmm" (hmmio As HMMIO, pmmcki As *MMCKINFO, fuCreate As DWord) As MMRESULT
-
-
-'--------------------------------------------------------
-' MCI support
-
-TypeDef MCIERROR = DWord
-TypeDef MCIDEVICEID = DWord
-TypeDef YIELDPROC = *Function(mciId As MCIDEVICEID, dwYieldData As DWord) As DWord
-
-' MCI Functions
-#ifdef UNICODE
-Declare Function mciSendCommand Lib "winmm" Alias "mciSendCommandW" (mciId As MCIDEVICEID, uMsg As DWord, dwParam1 As DWord, ByRef dwParam2 As Any) As MCIERROR
-Declare Function mciSendString Lib "winmm" Alias "mciSendStringW" (lpstrCommand As LPWSTR, lpstrReturnString As LPWSTR, uReturnLength As DWord, hwndCallback As HWND) As MCIERROR
-Declare Function mciGetDeviceID Lib "winmm" Alias "mciGetDeviceIDW" (pszDevice As LPWSTR) As MCIDEVICEID
-Declare Function mciGetErrorString Lib "winmm" Alias "mciGetErrorStringA" (mcierr As MCIERROR, pszText As LPWSTR, cchText As DWord) As BOOL
-#else
-Declare Function mciSendCommand Lib "winmm" Alias "mciSendCommandA" (mciId As MCIDEVICEID, uMsg As DWord, dwParam1 As DWord, ByRef dwParam2 As Any) As MCIERROR
-Declare Function mciSendString Lib "winmm" Alias "mciSendStringA" (lpstrCommand As LPSTR, lpstrReturnString As LPSTR, uReturnLength As DWord, hwndCallback As HWND) As MCIERROR
-Declare Function mciGetDeviceID Lib "winmm" Alias "mciGetDeviceIDA" (pszDevice As LPSTR) As MCIDEVICEID
-Declare Function mciGetErrorString Lib "winmm" Alias "mciGetErrorStringA" (mcierr As MCIERROR, pszText As LPSTR, cchText As DWord) As BOOL
-#endif
-
-Declare Function mciSetYieldProc Lib "winmm" (mciId As MCIDEVICEID, fpYieldProc As YIELDPROC, dwYieldData As DWord) As BOOL
-Declare Function mciGetCreatorTask Lib "winmm" (mciId As MCIDEVICEID) As HTASK
-Declare Function mciGetYieldProc Lib "winmm" (mciId As MCIDEVICEID, pdwYieldData As *DWord) As YIELDPROC
-Declare Function mciExecute Lib "winmm" (pszCommand As LPSTR) As BOOL
-
-Const MCIERR_INVALID_DEVICE_ID = (MCIERR_BASE + 1)
-Const MCIERR_UNRECOGNIZED_KEYWORD = (MCIERR_BASE + 3)
-Const MCIERR_UNRECOGNIZED_COMMAND = (MCIERR_BASE + 5)
-Const MCIERR_HARDWARE = (MCIERR_BASE + 6)
-Const MCIERR_INVALID_DEVICE_NAME = (MCIERR_BASE + 7)
-Const MCIERR_OUT_OF_MEMORY = (MCIERR_BASE + 8)
-Const MCIERR_DEVICE_OPEN = (MCIERR_BASE + 9)
-Const MCIERR_CANNOT_LOAD_DRIVER = (MCIERR_BASE + 10)
-Const MCIERR_MISSING_COMMAND_STRING = (MCIERR_BASE + 11)
-Const MCIERR_PARAM_OVERFLOW = (MCIERR_BASE + 12)
-Const MCIERR_MISSING_STRING_ARGUMENT = (MCIERR_BASE + 13)
-Const MCIERR_BAD_INTEGER = (MCIERR_BASE + 14)
-Const MCIERR_PARSER_INTERNAL = (MCIERR_BASE + 15)
-Const MCIERR_DRIVER_INTERNAL = (MCIERR_BASE + 16)
-Const MCIERR_MISSING_PARAMETER = (MCIERR_BASE + 17)
-Const MCIERR_UNSUPPORTED_FUNCTION = (MCIERR_BASE + 18)
-Const MCIERR_FILE_NOT_FOUND = (MCIERR_BASE + 19)
-Const MCIERR_DEVICE_NOT_READY = (MCIERR_BASE + 20)
-Const MCIERR_INTERNAL = (MCIERR_BASE + 21)
-Const MCIERR_DRIVER = (MCIERR_BASE + 22)
-Const MCIERR_CANNOT_USE_ALL = (MCIERR_BASE + 23)
-Const MCIERR_MULTIPLE = (MCIERR_BASE + 24)
-Const MCIERR_EXTENSION_NOT_FOUND = (MCIERR_BASE + 25)
-Const MCIERR_OUTOFRANGE = (MCIERR_BASE + 26)
-Const MCIERR_FLAGS_NOT_COMPATIBLE = (MCIERR_BASE + 28)
-Const MCIERR_FILE_NOT_SAVED = (MCIERR_BASE + 30)
-Const MCIERR_DEVICE_TYPE_REQUIRED = (MCIERR_BASE + 31)
-Const MCIERR_DEVICE_LOCKED = (MCIERR_BASE + 32)
-Const MCIERR_DUPLICATE_ALIAS = (MCIERR_BASE + 33)
-Const MCIERR_BAD_CONSTANT = (MCIERR_BASE + 34)
-Const MCIERR_MUST_USE_SHAREABLE = (MCIERR_BASE + 35)
-Const MCIERR_MISSING_DEVICE_NAME = (MCIERR_BASE + 36)
-Const MCIERR_BAD_TIME_FORMAT = (MCIERR_BASE + 37)
-Const MCIERR_NO_CLOSING_QUOTE = (MCIERR_BASE + 38)
-Const MCIERR_DUPLICATE_FLAGS = (MCIERR_BASE + 39)
-Const MCIERR_INVALID_FILE = (MCIERR_BASE + 40)
-Const MCIERR_NULL_PARAMETER_BLOCK = (MCIERR_BASE + 41)
-Const MCIERR_UNNAMED_RESOURCE = (MCIERR_BASE + 42)
-Const MCIERR_NEW_REQUIRES_ALIAS = (MCIERR_BASE + 43)
-Const MCIERR_NOTIFY_ON_AUTO_OPEN = (MCIERR_BASE + 44)
-Const MCIERR_NO_ELEMENT_ALLOWED = (MCIERR_BASE + 45)
-Const MCIERR_NONAPPLICABLE_FUNCTION = (MCIERR_BASE + 46)
-Const MCIERR_ILLEGAL_FOR_AUTO_OPEN = (MCIERR_BASE + 47)
-Const MCIERR_FILENAME_REQUIRED = (MCIERR_BASE + 48)
-Const MCIERR_EXTRA_CHARACTERS = (MCIERR_BASE + 49)
-Const MCIERR_DEVICE_NOT_INSTALLED = (MCIERR_BASE + 50)
-Const MCIERR_GET_CD = (MCIERR_BASE + 51)
-Const MCIERR_SET_CD = (MCIERR_BASE + 52)
-Const MCIERR_SET_DRIVE = (MCIERR_BASE + 53)
-Const MCIERR_DEVICE_LENGTH = (MCIERR_BASE + 54)
-Const MCIERR_DEVICE_ORD_LENGTH = (MCIERR_BASE + 55)
-Const MCIERR_NO_INTEGER = (MCIERR_BASE + 56)
-
-Const MCIERR_WAVE_OUTPUTSINUSE = (MCIERR_BASE + 64)
-Const MCIERR_WAVE_SETOUTPUTINUSE = (MCIERR_BASE + 65)
-Const MCIERR_WAVE_INPUTSINUSE = (MCIERR_BASE + 66)
-Const MCIERR_WAVE_SETINPUTINUSE = (MCIERR_BASE + 67)
-Const MCIERR_WAVE_OUTPUTUNSPECIFIED = (MCIERR_BASE + 68)
-Const MCIERR_WAVE_INPUTUNSPECIFIED = (MCIERR_BASE + 69)
-Const MCIERR_WAVE_OUTPUTSUNSUITABLE = (MCIERR_BASE + 70)
-Const MCIERR_WAVE_SETOUTPUTUNSUITABLE = (MCIERR_BASE + 71)
-Const MCIERR_WAVE_INPUTSUNSUITABLE = (MCIERR_BASE + 72)
-Const MCIERR_WAVE_SETINPUTUNSUITABLE = (MCIERR_BASE + 73)
-
-Const MCIERR_SEQ_DIV_INCOMPATIBLE = (MCIERR_BASE + 80)
-Const MCIERR_SEQ_PORT_INUSE = (MCIERR_BASE + 81)
-Const MCIERR_SEQ_PORT_NONEXISTENT = (MCIERR_BASE + 82)
-Const MCIERR_SEQ_PORT_MAPNODEVICE = (MCIERR_BASE + 83)
-Const MCIERR_SEQ_PORT_MISCERROR = (MCIERR_BASE + 84)
-Const MCIERR_SEQ_TIMER = (MCIERR_BASE + 85)
-Const MCIERR_SEQ_PORTUNSPECIFIED = (MCIERR_BASE + 86)
-Const MCIERR_SEQ_NOMIDIPRESENT = (MCIERR_BASE + 87)
-
-Const MCIERR_NO_WINDOW = (MCIERR_BASE + 90)
-Const MCIERR_CREATEWINDOW = (MCIERR_BASE + 91)
-Const MCIERR_FILE_READ = (MCIERR_BASE + 92)
-Const MCIERR_FILE_WRITE = (MCIERR_BASE + 93)
-Const MCIERR_NO_IDENTITY = (MCIERR_BASE + 94)
-Const MCIERR_CUSTOM_DRIVER_BASE = (MCIERR_BASE + 256)
-
-Const MCI_FIRST = DRV_MCI_FIRST
-Const MCI_OPEN = &H0803
-Const MCI_CLOSE = &H0804
-Const MCI_ESCAPE = &H0805
-Const MCI_PLAY = &H0806
-Const MCI_SEEK = &H0807
-Const MCI_STOP = &H0808
-Const MCI_PAUSE = &H0809
-Const MCI_INFO = &H080A
-Const MCI_GETDEVCAPS = &H080B
-Const MCI_SPIN = &H080C
-Const MCI_SET = &H080D
-Const MCI_STEP = &H080E
-Const MCI_RECORD = &H080F
-Const MCI_SYSINFO = &H0810
-Const MCI_BREAK = &H0811
-Const MCI_SAVE = &H0813
-Const MCI_STATUS = &H0814
-Const MCI_CUE = &H0830
-Const MCI_REALIZE = &H0840
-Const MCI_WINDOW = &H0841
-Const MCI_PUT = &H0842
-Const MCI_WHERE = &H0843
-Const MCI_FREEZE = &H0844
-Const MCI_UNFREEZE = &H0845
-Const MCI_LOAD = &H0850
-Const MCI_CUT = &H0851
-Const MCI_COPY = &H0852
-Const MCI_PASTE = &H0853
-Const MCI_UPDATE = &H0854
-Const MCI_RESUME = &H0855
-Const MCI_DELETE = &H0856
-
-Const MCI_USER_MESSAGES = (DRV_MCI_FIRST + &H400)
-Const MCI_LAST = &H0FFF
-
-Const MCI_ALL_DEVICE_ID = (-1)
-
-' constants for predefined MCI device types
-Const MCI_DEVTYPE_VCR =               513
-Const MCI_DEVTYPE_VIDEODISC =         514
-Const MCI_DEVTYPE_OVERLAY =           515
-Const MCI_DEVTYPE_CD_AUDIO =          516
-Const MCI_DEVTYPE_DAT =               517
-Const MCI_DEVTYPE_SCANNER =           518
-Const MCI_DEVTYPE_ANIMATION =         519
-Const MCI_DEVTYPE_DIGITAL_VIDEO =     520
-Const MCI_DEVTYPE_OTHER =             521
-Const MCI_DEVTYPE_WAVEFORM_AUDIO =    522
-Const MCI_DEVTYPE_SEQUENCER =         523
-Const MCI_DEVTYPE_FIRST =             MCI_DEVTYPE_VCR
-Const MCI_DEVTYPE_LAST =              MCI_DEVTYPE_SEQUENCER
-Const MCI_DEVTYPE_FIRST_USER =        &H1000
-
-' return values for 'status mode' command
-Const MCI_MODE_NOT_READY =            MCI_STRING_OFFSET + 12
-Const MCI_MODE_STOP =                 MCI_STRING_OFFSET + 13
-Const MCI_MODE_PLAY =                 MCI_STRING_OFFSET + 14
-Const MCI_MODE_RECORD =               MCI_STRING_OFFSET + 15
-Const MCI_MODE_SEEK =                 MCI_STRING_OFFSET + 16
-Const MCI_MODE_PAUSE =                MCI_STRING_OFFSET + 17
-Const MCI_MODE_OPEN =                 MCI_STRING_OFFSET + 18
-
-'--------------------------------------------------------
-' Time Format(used in MCI_SET_PARAMS, MCI_STATUS_PARAMS)
-
-Const MCI_FORMAT_MILLISECONDS =       0
-Const MCI_FORMAT_HMS =                1
-Const MCI_FORMAT_MSF =                2
-Const MCI_FORMAT_FRAMES =             3
-Const MCI_FORMAT_SMPTE_24 =           4
-Const MCI_FORMAT_SMPTE_25 =           5
-Const MCI_FORMAT_SMPTE_30 =           6
-Const MCI_FORMAT_SMPTE_30DROP =       7
-Const MCI_FORMAT_BYTES =              8
-Const MCI_FORMAT_SAMPLES =            9
-Const MCI_FORMAT_TMSF =               10
-
-'------------
-' MCI Macros
-
-'MSF
-Function MCI_MSF_MINUTE(msf As DWord) As Byte
-	Return (&HFF AND msf)
-End Function
-Function MCI_MSF_SECOND(msf As DWord) As Byte
-	Return (&HFF AND (msf>> 8))
-End Function
-Function MCI_MSF_FRAME(msf As DWord) As Byte
-	Return (&HFF AND (msf>>16))
-End Function
-Function MCI_MAKE_MSF(minutes As Byte, seconds As Byte, frames As Byte) As DWord
-	Return MAKELONG(minutes,MAKEWORD(seconds,frames))
-End Function
-
-'TMSF
-Function MCI_TMSF_TRACK(tmsf As DWord) As Byte
-	Return (&HFF AND (tmsf))
-End Function
-Function MCI_TMSF_MINUTE(tmsf As DWord) As Byte
-	Return (&HFF AND (((tmsf)) >> 8))
-End Function
-Function MCI_TMSF_SECOND(tmsf As DWord) As Byte
-	Return (&HFF AND ((tmsf)>>16))
-End Function
-Function MCI_TMSF_FRAME(tmsf As DWord) As Byte
-	Return (&HFF AND ((tmsf)>>24))
-End Function
-Function MCI_MAKE_TMSF(tracks As Byte, minutes As Byte, seconds As Byte, frames As Byte) As DWord
-	Return MAKELONG(MAKEWORD(tracks,minutes),MAKEWORD(seconds,frames))
-End Function
-
-'HMS
-Function MCI_HMS_HOUR(hms As DWord) As Byte
-	Return (&HFF AND (hms))
-End Function
-Function MCI_HMS_MINUTE(hms As DWord) As Byte
-	Return (&HFF AND ((hms)>> 8))
-End Function
-Function MCI_HMS_SECOND(hms As DWord) As Byte
-	Return (&HFF AND ((hms)>>16))
-End Function
-Function MCI_MAKE_HMS(hours As Byte, minutes As Byte, seconds As Byte) As DWord
-	Return MAKELONG(hours,MAKEWORD(minutes,seconds))
-End Function
-
-' flags for wParam of MM_MCINOTIFY message
-Const MCI_NOTIFY_SUCCESSFUL = &H0001
-Const MCI_NOTIFY_SUPERSEDED = &H0002
-Const MCI_NOTIFY_ABORTED = &H0004
-Const MCI_NOTIFY_FAILURE = &H0008
-
-' common flags for dwFlags parameter of MCI command messages
-Const MCI_NOTIFY =                    &H00000001
-Const MCI_WAIT =                      &H00000002
-Const MCI_FROM =                      &H00000004
-Const MCI_TO =                        &H00000008
-Const MCI_TRACK =                     &H00000010
-
-' flags for dwFlags parameter of MCI_OPEN command message
-Const MCI_OPEN_SHAREABLE =            &H00000100
-Const MCI_OPEN_ELEMENT =              &H00000200
-Const MCI_OPEN_ALIAS =                &H00000400
-Const MCI_OPEN_ELEMENT_ID =           &H00000800
-Const MCI_OPEN_TYPE_ID =              &H00001000
-Const MCI_OPEN_TYPE =                 &H00002000
-
-' flags for dwFlags parameter of MCI_SEEK command message
-Const MCI_SEEK_TO_START = &H00000100
-Const MCI_SEEK_TO_END = &H00000200
-
-' flags for dwFlags parameter of MCI_STATUS command message
-Const MCI_STATUS_ITEM = &H00000100
-Const MCI_STATUS_START = &H00000200
-
-' flags for dwItem field of the MCI_STATUS_PARMS parameter block
-Const MCI_STATUS_LENGTH = &H00000001
-Const MCI_STATUS_POSITION = &H00000002
-Const MCI_STATUS_NUMBER_OF_TRACKS = &H00000003
-Const MCI_STATUS_MODE = &H00000004
-Const MCI_STATUS_MEDIA_PRESENT = &H00000005
-Const MCI_STATUS_TIME_FORMAT = &H00000006
-Const MCI_STATUS_READY = &H00000007
-Const MCI_STATUS_CURRENT_TRACK = &H00000008
-
-' flags for dwFlags parameter of MCI_INFO command message
-Const MCI_INFO_PRODUCT = &H00000100
-Const MCI_INFO_FILE = &H00000200
-Const MCI_INFO_MEDIA_UPC = &H00000400
-Const MCI_INFO_MEDIA_IDENTITY = &H00000800
-Const MCI_INFO_NAME = &H00001000
-Const MCI_INFO_COPYRIGHT = &H00002000
-
-' flags for dwFlags parameter of MCI_GETDEVCAPS command message
-Const MCI_GETDEVCAPS_ITEM = &H00000100
-
-' flags for dwItem field of the MCI_GETDEVCAPS_PARMS parameter block
-Const MCI_GETDEVCAPS_CAN_RECORD = &H00000001
-Const MCI_GETDEVCAPS_HAS_AUDIO = &H00000002
-Const MCI_GETDEVCAPS_HAS_VIDEO = &H00000003
-Const MCI_GETDEVCAPS_DEVICE_TYPE = &H00000004
-Const MCI_GETDEVCAPS_USES_FILES = &H00000005
-Const MCI_GETDEVCAPS_COMPOUND_DEVICE = &H00000006
-Const MCI_GETDEVCAPS_CAN_EJECT = &H00000007
-Const MCI_GETDEVCAPS_CAN_PLAY = &H00000008
-Const MCI_GETDEVCAPS_CAN_SAVE = &H00000009
-
-' flags for dwFlags parameter of MCI_SYSINFO command message
-Const MCI_SYSINFO_QUANTITY = &H00000100
-Const MCI_SYSINFO_OPEN = &H00000200
-Const MCI_SYSINFO_NAME = &H00000400
-Const MCI_SYSINFO_INSTALLNAME = &H00000800
-
-' flags for dwFlags parameter of MCI_SET command message
-Const MCI_SET_DOOR_OPEN = &H00000100
-Const MCI_SET_DOOR_CLOSED = &H00000200
-Const MCI_SET_TIME_FORMAT = &H00000400
-Const MCI_SET_AUDIO = &H00000800
-Const MCI_SET_VIDEO = &H00001000
-Const MCI_SET_ON = &H00002000
-Const MCI_SET_OFF = &H00004000
-
-' flags for dwAudio field of MCI_SET_PARMS or MCI_SEQ_SET_PARMS
-Const MCI_SET_AUDIO_ALL = &H00000000
-Const MCI_SET_AUDIO_LEFT = &H00000001
-Const MCI_SET_AUDIO_RIGHT = &H00000002
-
-' flags for dwFlags parameter of MCI_BREAK command message
-Const MCI_BREAK_KEY = &H00000100
-Const MCI_BREAK_HWND = &H00000200
-Const MCI_BREAK_OFF = &H00000400
-
-' flags for dwFlags parameter of MCI_RECORD command message
-Const MCI_RECORD_INSERT = &H00000100
-Const MCI_RECORD_OVERWRITE = &H00000200
-
-' flags for dwFlags parameter of MCI_SAVE command message
-Const MCI_SAVE_FILE = &H00000100
-
-' flags for dwFlags parameter of MCI_LOAD command message
-Const MCI_LOAD_FILE = &H00000100
-
-Type MCI_GENERIC_PARMS
-	dwCallback As DWord
-End Type
-TypeDef PMCI_GENERIC_PARMS = *MCI_GENERIC_PARMS
-TypeDef LPMCI_GENERIC_PARMS = *MCI_GENERIC_PARMS
-
-Type MCI_OPEN_PARMS
-	dwCallback As DWord
-	wDeviceID As DWord
-	lpstrDeviceType As LPSTR
-	lpstrElementName As LPSTR
-	lpstrAlias As LPSTR
-End Type
-TypeDef PMCI_OPEN_PARMS = *MCI_OPEN_PARMS
-TypeDef LPMCI_OPEN_PARMS = *MCI_OPEN_PARMS
-
-Type MCI_PLAY_PARMS
-	dwCallback As DWord
-	dwFrom As DWord
-	dwTo As DWord
-End Type
-TypeDef PMCI_PLAY_PARMS = *MCI_PLAY_PARMS
-TypeDef LPMCI_PLAY_PARMS = *MCI_PLAY_PARMS
-
-Type MCI_SEEK_PARMS
-	dwCallback As DWord
-	dwTo As DWord
-End Type
-TypeDef PMCI_SEEK_PARMS = *MCI_SEEK_PARMS
-TypeDef LPMCI_SEEK_PARMS = *MCI_SEEK_PARMS
-
-Type MCI_STATUS_PARMS
-	dwCallback As DWord
-	dwReturn As DWord
-	dwItem As DWord
-	dwTrack As DWord
-End Type
-TypeDef PMCI_STATUS_PARMS = *MCI_STATUS_PARMS
-TypeDef LPMCI_STATUS_PARMS = *MCI_STATUS_PARMS
-
-Type MCI_INFO_PARMSW
-	dwCallback As DWord
-	lpstrReturn As LPWSTR
-	dwRetSize As DWord
-End Type
-TypeDef PMCI_INFO_PARMSW = *MCI_INFO_PARMSW
-TypeDef LPMCI_INFO_PARMSW = *MCI_INFO_PARMSW
-
-Type MCI_INFO_PARMSA
-	dwCallback As DWord
-	lpstrReturn As LPSTR
-	dwRetSize As DWord
-End Type
-TypeDef PMCI_INFO_PARMSA = *MCI_INFO_PARMSA
-TypeDef LPMCI_INFO_PARMSA = *MCI_INFO_PARMSA
-
-#ifdef UNICODE
-TypeDef MCI_INFO_PARMS = MCI_INFO_PARMSW
-TypeDef PMCI_INFO_PARMS = PMCI_INFO_PARMSW
-TypeDef LPMCI_INFO_PARMS = LPMCI_INFO_PARMSW
-#else
-TypeDef MCI_INFO_PARMS = MCI_INFO_PARMSA
-TypeDef PMCI_INFO_PARMS = PMCI_INFO_PARMSA
-TypeDef LPMCI_INFO_PARMS = LPMCI_INFO_PARMSA
-#endif
-
-Type MCI_GETDEVCAPS_PARMS
-	dwCallback As DWord
-	dwReturn As DWord
-	dwItem As DWord
-End Type
-TypeDef PMCI_GETDEVCAPS_PARMS = *MCI_GETDEVCAPS_PARMS
-TypeDef LPMCI_GETDEVCAPS_PARMS = *MCI_GETDEVCAPS_PARMS
-
-Type MCI_SYSINFO_PARMSW
-	dwCallback As DWord
-	lpstrReturn As LPWSTR
-	dwRetSize As DWord
-	dwNumber As DWord
-	wDeviceType As DWord
-End Type
-TypeDef PMCI_SYSINFO_PARMSW = *MCI_SYSINFO_PARMSW
-TypeDef LPMCI_SYSINFO_PARMSW = *MCI_SYSINFO_PARMSW
-
-Type MCI_SYSINFO_PARMSA
-	dwCallback As DWord
-	lpstrReturn As LPSTR
-	dwRetSize As DWord
-	dwNumber As DWord
-	wDeviceType As DWord
-End Type
-TypeDef PMCI_SYSINFO_PARMSA = *MCI_SYSINFO_PARMSA
-TypeDef LPMCI_SYSINFO_PARMSA = *MCI_SYSINFO_PARMSA
-
-#ifdef UNICODE
-TypeDef MCI_SYSINFO_PARMS = MCI_SYSINFO_PARMSW
-TypeDef PMCI_SYSINFO_PARMS = PMCI_SYSINFO_PARMSW
-TypeDef LPMCI_SYSINFO_PARMS = LPMCI_SYSINFO_PARMSW
-#else
-TypeDef MCI_SYSINFO_PARMS = MCI_SYSINFO_PARMSA
-TypeDef PMCI_SYSINFO_PARMS = PMCI_SYSINFO_PARMSA
-TypeDef LPMCI_SYSINFO_PARMS = LPMCI_SYSINFO_PARMSA
-#endif
-
-Type MCI_SET_PARMS
-	dwCallback As DWord
-	dwTimeFormat As DWord
-	dwAudio As DWord
-End Type
-TypeDef PMCI_SET_PARMS = *MCI_SET_PARMS
-TypeDef LPMCI_SET_PARMS = *MCI_SET_PARMS
-
-Type MCI_BREAK_PARMS
-	dwCallback As DWord
-	nVirtKey As Long
-	hwndBreak As HWND
-End Type
-TypeDef PMCI_BREAK_PARMS = *MCI_BREAK_PARMS
-TypeDef LPMCI_BREAK_PARMS = *MCI_BREAK_PARMS
-
-Type MCI_SAVE_PARMSW
-	dwCallback As DWord
-	lpfilename As LPWSTR
-End Type
-TypeDef PMCI_SAVE_PARMSW = *MCI_SAVE_PARMSW
-TypeDef LPMCI_SAVE_PARMSW = *MCI_SAVE_PARMSW
-
-Type MCI_SAVE_PARMSA
-	dwCallback As DWord
-	lpfilename As LPSTR
-End Type
-TypeDef PMCI_SAVE_PARMSA = *MCI_SAVE_PARMSA
-TypeDef LPMCI_SAVE_PARMSA = *MCI_SAVE_PARMSA
-
-#ifdef UNICODE
-TypeDef MCI_SAVE_PARMS = MCI_SAVE_PARMSW
-TypeDef PMCI_SAVE_PARMS = PMCI_SAVE_PARMSW
-TypeDef LPMCI_SAVE_PARMS = LPMCI_SAVE_PARMSW
-#else
-TypeDef MCI_SAVE_PARMS = MCI_SAVE_PARMSA
-TypeDef PMCI_SAVE_PARMS = PMCI_SAVE_PARMSA
-TypeDef LPMCI_SAVE_PARMS = LPMCI_SAVE_PARMSA
-#endif
-
-Type MCI_LOAD_PARMSW
-	dwCallback As DWord
-	lpfilename As LPWSTR
-End Type
-TypeDef PMCI_LOAD_PARMSW = *MCI_LOAD_PARMSW
-TypeDef LPMCI_LOAD_PARMSW = *MCI_LOAD_PARMSW
-
-Type MCI_LOAD_PARMSA
-	dwCallback As DWord
-	lpfilename As LPSTR
-End Type
-TypeDef PMCI_LOAD_PARMSA = *MCI_LOAD_PARMSA
-TypeDef LPMCI_LOAD_PARMSA = *MCI_LOAD_PARMSA
-
-#ifdef UNICODE
-TypeDef MCI_LOAD_PARMS = MCI_LOAD_PARMSW
-TypeDef PMCI_LOAD_PARMS = PMCI_LOAD_PARMSW
-TypeDef LPMCI_LOAD_PARMS = LPMCI_LOAD_PARMSW
-#else
-TypeDef MCI_LOAD_PARMS = MCI_LOAD_PARMSA
-TypeDef PMCI_LOAD_PARMS = PMCI_LOAD_PARMSA
-TypeDef LPMCI_LOAD_PARMS = LPMCI_LOAD_PARMSA
-#endif
-
-Type MCI_RECORD_PARMS
-	dwCallback As DWord
-	dwFrom As DWord
-	dwTo As DWord
-End Type
-TypeDef PMCI_RECORD_PARMS = *MCI_RECORD_PARMS
-TypeDef LPMCI_RECORD_PARMS = *MCI_RECORD_PARMS
-
-' MCI extensions for videodisc devices
-Const MCI_VD_MODE_PARK =              (MCI_VD_OFFSET + 1)
-Const MCI_VD_MEDIA_CLV =              (MCI_VD_OFFSET + 2)
-Const MCI_VD_MEDIA_CAV =              (MCI_VD_OFFSET + 3)
-Const MCI_VD_MEDIA_OTHER =            (MCI_VD_OFFSET + 4)
-Const MCI_VD_FORMAT_TRACK =           &H4001
-Const MCI_VD_PLAY_REVERSE =           &H00010000
-Const MCI_VD_PLAY_FAST =              &H00020000
-Const MCI_VD_PLAY_SPEED =             &H00040000
-Const MCI_VD_PLAY_SCAN =              &H00080000
-Const MCI_VD_PLAY_SLOW =              &H00100000
-Const MCI_VD_SEEK_REVERSE =           &H00010000
-Const MCI_VD_STATUS_SPEED =           &H00004002
-Const MCI_VD_STATUS_FORWARD =         &H00004003
-Const MCI_VD_STATUS_MEDIA_TYPE =      &H00004004
-Const MCI_VD_STATUS_SIDE =            &H00004005
-Const MCI_VD_STATUS_DISC_SIZE =       &H00004006
-Const MCI_VD_GETDEVCAPS_CLV =         &H00010000
-Const MCI_VD_GETDEVCAPS_CAV =         &H00020000
-Const MCI_VD_SPIN_UP =                &H00010000
-Const MCI_VD_SPIN_DOWN =              &H00020000
-Const MCI_VD_GETDEVCAPS_CAN_REVERSE = &H00004002
-Const MCI_VD_GETDEVCAPS_FAST_RATE =   &H00004003
-Const MCI_VD_GETDEVCAPS_SLOW_RATE =   &H00004004
-Const MCI_VD_GETDEVCAPS_NORMAL_RATE = &H00004005
-Const MCI_VD_STEP_FRAMES =            &H00010000
-Const MCI_VD_STEP_REVERSE =           &H00020000
-Const MCI_VD_ESCAPE_STRING =          &H00000100
-
-Type MCI_VD_PLAY_PARMS
-	dwCallback As DWord
-	dwFrom As DWord
-	dwTo As DWord
-	dwSpeed As DWord
-End Type
-TypeDef PMCI_VD_PLAY_PARMS = *MCI_VD_PLAY_PARMS
-TypeDef LPMCI_VD_PLAY_PARMS = *MCI_VD_PLAY_PARMS
-
-Type MCI_VD_STEP_PARMS
-	dwCallback As DWord
-	dwFrames As DWord
-End Type
-TypeDef PMCI_VD_STEP_PARMS = *MCI_VD_STEP_PARMS
-TypeDef LPMCI_VD_STEP_PARMS = *MCI_VD_STEP_PARMS
-
-Type MCI_VD_ESCAPE_PARMSW
-	dwCallback As DWord
-	lpstrCommand As LPWSTR
-End Type
-TypeDef PMCI_VD_ESCAPE_PARMSW = *MCI_VD_ESCAPE_PARMSW
-TypeDef LPMCI_VD_ESCAPE_PARMSW = *MCI_VD_ESCAPE_PARMSW
-
-Type MCI_VD_ESCAPE_PARMSA
-	dwCallback As DWord
-	lpstrCommand As LPSTR
-End Type
-TypeDef PMCI_VD_ESCAPE_PARMSA = *MCI_VD_ESCAPE_PARMSA
-TypeDef LPMCI_VD_ESCAPE_PARMSA = *MCI_VD_ESCAPE_PARMSA
-
-#ifdef UNICODE
-TypeDef MCI_VD_ESCAPE_PARMS = MCI_VD_ESCAPE_PARMSW
-TypeDef PMCI_VD_ESCAPE_PARMS = PMCI_VD_ESCAPE_PARMSW
-TypeDef LPMCI_VD_ESCAPE_PARMS = LPMCI_VD_ESCAPE_PARMSW
-#else
-TypeDef MCI_VD_ESCAPE_PARMS = MCI_VD_ESCAPE_PARMSA
-TypeDef PMCI_VD_ESCAPE_PARMS = PMCI_VD_ESCAPE_PARMSA
-TypeDef LPMCI_VD_ESCAPE_PARMS = LPMCI_VD_ESCAPE_PARMSA
-#endif
-
-' MCI extensions for CD audio devices
-Const MCI_CDA_STATUS_TYPE_TRACK = &H00004001
-Const MCI_CDA_TRACK_AUDIO = (MCI_CD_OFFSET + 0)
-Const MCI_CDA_TRACK_OTHER = (MCI_CD_OFFSET + 1)
-
-' MCI extensions for waveform audio devices
-Const MCI_WAVE_PCM =                   (MCI_WAVE_OFFSET + 0)
-Const MCI_WAVE_MAPPER =                (MCI_WAVE_OFFSET + 1)
-Const MCI_WAVE_OPEN_BUFFER =           &H00010000
-Const MCI_WAVE_SET_FORMATTAG =         &H00010000
-Const MCI_WAVE_SET_CHANNELS =          &H00020000
-Const MCI_WAVE_SET_SAMPLESPERSEC =     &H00040000
-Const MCI_WAVE_SET_AVGBYTESPERSEC =    &H00080000
-Const MCI_WAVE_SET_BLOCKALIGN =        &H00100000
-Const MCI_WAVE_SET_BITSPERSAMPLE =     &H00200000
-Const MCI_WAVE_INPUT =                 &H00400000
-Const MCI_WAVE_OUTPUT =                &H00800000
-Const MCI_WAVE_STATUS_FORMATTAG =      &H00004001
-Const MCI_WAVE_STATUS_CHANNELS =       &H00004002
-Const MCI_WAVE_STATUS_SAMPLESPERSEC =  &H00004003
-Const MCI_WAVE_STATUS_AVGBYTESPERSEC = &H00004004
-Const MCI_WAVE_STATUS_BLOCKALIGN =     &H00004005
-Const MCI_WAVE_STATUS_BITSPERSAMPLE =  &H00004006
-Const MCI_WAVE_STATUS_LEVEL =          &H00004007
-Const MCI_WAVE_SET_ANYINPUT =          &H04000000
-Const MCI_WAVE_SET_ANYOUTPUT =         &H08000000
-Const MCI_WAVE_GETDEVCAPS_INPUTS =     &H00004001
-Const MCI_WAVE_GETDEVCAPS_OUTPUTS =    &H00004002
-
-Type MCI_WAVE_OPEN_PARMSW
-	dwCallback As DWord
-	wDeviceID As MCIDEVICEID
-	lpstrDeviceType As LPWSTR
-	lpstrElementName As LPWSTR
-	lpstrAlias As LPWSTR
-	dwBufferSeconds As DWord
-End Type
-TypeDef PMCI_WAVE_OPEN_PARMSW = *MCI_WAVE_OPEN_PARMSW
-TypeDef LPMCI_WAVE_OPEN_PARMSW = *MCI_WAVE_OPEN_PARMSW
-
-Type MCI_WAVE_OPEN_PARMSA
-	dwCallback As DWord
-	wDeviceID As MCIDEVICEID
-	lpstrDeviceType As LPSTR
-	lpstrElementName As LPSTR
-	lpstrAlias As LPSTR
-	dwBufferSeconds As DWord
-End Type
-TypeDef PMCI_WAVE_OPEN_PARMSA = *MCI_WAVE_OPEN_PARMSA
-TypeDef LPMCI_WAVE_OPEN_PARMSA = *MCI_WAVE_OPEN_PARMSA
-
-#ifdef UNICODE
-TypeDef MCI_WAVE_OPEN_PARMS = MCI_WAVE_OPEN_PARMSW
-TypeDef PMCI_WAVE_OPEN_PARMS = PMCI_WAVE_OPEN_PARMSW
-TypeDef LPMCI_WAVE_OPEN_PARMS = LPMCI_WAVE_OPEN_PARMSW
-#else
-TypeDef MCI_WAVE_OPEN_PARMS = MCI_WAVE_OPEN_PARMSA
-TypeDef PMCI_WAVE_OPEN_PARMS = PMCI_WAVE_OPEN_PARMSA
-TypeDef LPMCI_WAVE_OPEN_PARMS = LPMCI_WAVE_OPEN_PARMSA
-#endif
-
-Type MCI_WAVE_DELETE_PARMS
-	dwCallback As DWord
-	dwFrom As DWord
-	dwTo As DWord
-End Type
-TypeDef PMCI_WAVE_DELETE_PARMS = *MCI_WAVE_DELETE_PARMS
-TypeDef LPMCI_WAVE_DELETE_PARMS = *MCI_WAVE_DELETE_PARMS
-
-Type MCI_WAVE_SET_PARMS
-	dwCallback As DWord
-	dwTimeFormat As DWord
-	dwAudio As DWord
-	wInput As DWord
-	wOutput As DWord
-	wFormatTag As Word
-	wReserved2 As Word
-	nChannels As Word
-	wReserved3 As Word
-	nSamplesPerSec As DWord
-	nAvgBytesPerSec As DWord
-	nBlockAlign As Word
-	wReserved4 As Word
-	wBitsPerSample As Word
-	wReserved5 As Word
-End Type
-TypeDef PMCI_WAVE_SET_PARMS = *MCI_WAVE_SET_PARMS
-TypeDef LPMCI_WAVE_SET_PARMS = *MCI_WAVE_SET_PARMS
-
-' MCI extensions for MIDI sequencer devices
-Const MCI_SEQ_DIV_PPQN =         (0 + MCI_SEQ_OFFSET)
-Const MCI_SEQ_DIV_SMPTE_24 =     (1 + MCI_SEQ_OFFSET)
-Const MCI_SEQ_DIV_SMPTE_25 =     (2 + MCI_SEQ_OFFSET)
-Const MCI_SEQ_DIV_SMPTE_30DROP = (3 + MCI_SEQ_OFFSET)
-Const MCI_SEQ_DIV_SMPTE_30 =     (4 + MCI_SEQ_OFFSET)
-Const MCI_SEQ_FORMAT_SONGPTR =   &H4001
-Const MCI_SEQ_FILE =             &H4002
-Const MCI_SEQ_MIDI =             &H4003
-Const MCI_SEQ_SMPTE =            &H4004
-Const MCI_SEQ_NONE =             65533
-Const MCI_SEQ_MAPPER =           65535
-Const MCI_SEQ_STATUS_TEMPO =     &H00004002
-Const MCI_SEQ_STATUS_PORT =      &H00004003
-Const MCI_SEQ_STATUS_SLAVE =     &H00004007
-Const MCI_SEQ_STATUS_MASTER =    &H00004008
-Const MCI_SEQ_STATUS_OFFSET =    &H00004009
-Const MCI_SEQ_STATUS_DIVTYPE =   &H0000400A
-Const MCI_SEQ_STATUS_NAME =      &H0000400B
-Const MCI_SEQ_STATUS_COPYRIGHT = &H0000400C
-Const MCI_SEQ_SET_TEMPO =        &H00010000
-Const MCI_SEQ_SET_PORT =         &H00020000
-Const MCI_SEQ_SET_SLAVE =        &H00040000
-Const MCI_SEQ_SET_MASTER =       &H00080000
-Const MCI_SEQ_SET_OFFSET =       &H01000000
-
-Type MCI_SEQ_SET_PARMS
-	dwCallback As DWord
-	dwTimeFormat As DWord
-	dwAudio As DWord
-	dwTempo As DWord
-	dwPort As DWord
-	dwSlave As DWord
-	dwMaster As DWord
-	dwOffset As DWord
-End Type
-TypeDef PMCI_SEQ_SET_PARMS = *MCI_SEQ_SET_PARMS
-TypeDef LPMCI_SEQ_SET_PARMS = *MCI_SEQ_SET_PARMS
-
-' MCI extensions for animation devices
-Const MCI_ANIM_OPEN_WS =                &H00010000
-Const MCI_ANIM_OPEN_PARENT =            &H00020000
-Const MCI_ANIM_OPEN_NOSTATIC =          &H00040000
-Const MCI_ANIM_PLAY_SPEED =             &H00010000
-Const MCI_ANIM_PLAY_REVERSE =           &H00020000
-Const MCI_ANIM_PLAY_FAST =              &H00040000
-Const MCI_ANIM_PLAY_SLOW =              &H00080000
-Const MCI_ANIM_PLAY_SCAN =              &H00100000
-Const MCI_ANIM_STEP_REVERSE =           &H00010000
-Const MCI_ANIM_STEP_FRAMES =            &H00020000
-Const MCI_ANIM_STATUS_SPEED =           &H00004001
-Const MCI_ANIM_STATUS_FORWARD =         &H00004002
-Const MCI_ANIM_STATUS_HWND =            &H00004003
-Const MCI_ANIM_STATUS_HPAL =            &H00004004
-Const MCI_ANIM_STATUS_STRETCH =         &H00004005
-Const MCI_ANIM_INFO_TEXT =              &H00010000
-Const MCI_ANIM_GETDEVCAPS_CAN_REVERSE = &H00004001
-Const MCI_ANIM_GETDEVCAPS_FAST_RATE =   &H00004002
-Const MCI_ANIM_GETDEVCAPS_SLOW_RATE =   &H00004003
-Const MCI_ANIM_GETDEVCAPS_NORMAL_RATE = &H00004004
-Const MCI_ANIM_GETDEVCAPS_PALETTES =    &H00004006
-Const MCI_ANIM_GETDEVCAPS_CAN_STRETCH = &H00004007
-Const MCI_ANIM_GETDEVCAPS_MAX_WINDOWS = &H00004008
-Const MCI_ANIM_REALIZE_NORM =           &H00010000
-Const MCI_ANIM_REALIZE_BKGD =           &H00020000
-Const MCI_ANIM_WINDOW_HWND =            &H00010000
-Const MCI_ANIM_WINDOW_STATE =           &H00040000
-Const MCI_ANIM_WINDOW_TEXT =            &H00080000
-Const MCI_ANIM_WINDOW_ENABLE_STRETCH =  &H00100000
-Const MCI_ANIM_WINDOW_DISABLE_STRETCH = &H00200000
-Const MCI_ANIM_WINDOW_DEFAULT =         &H00000000
-Const MCI_ANIM_RECT =                   &H00010000
-Const MCI_ANIM_PUT_SOURCE =             &H00020000
-Const MCI_ANIM_PUT_DESTINATION =        &H00040000
-Const MCI_ANIM_WHERE_SOURCE =           &H00020000
-Const MCI_ANIM_WHERE_DESTINATION =      &H00040000
-Const MCI_ANIM_UPDATE_HDC =             &H00020000
-
-Type MCI_ANIM_OPEN_PARMSW
-	dwCallback As DWord
-	wDeviceID As MCIDEVICEID
-	lpstrDeviceType As LPWSTR
-	lpstrElementName As LPWSTR
-	lpstrAlias As LPWSTR
-	dwStyle As DWord
-	hWndParent As HWND
-End Type
-TypeDef PMCI_ANIM_OPEN_PARMSW = *MCI_ANIM_OPEN_PARMSW
-TypeDef LPMCI_ANIM_OPEN_PARMSW = *MCI_ANIM_OPEN_PARMSW
-
-Type MCI_ANIM_OPEN_PARMSA
-	dwCallback As DWord
-	wDeviceID As MCIDEVICEID
-	lpstrDeviceType As LPSTR
-	lpstrElementName As LPSTR
-	lpstrAlias As LPSTR
-	dwStyle As DWord
-	hWndParent As HWND
-End Type
-TypeDef PMCI_ANIM_OPEN_PARMSA = *MCI_ANIM_OPEN_PARMSA
-TypeDef LPMCI_ANIM_OPEN_PARMSA = *MCI_ANIM_OPEN_PARMSA
-
-#ifdef UNICODE
-TypeDef MCI_ANIM_OPEN_PARMS = MCI_ANIM_OPEN_PARMSW
-TypeDef PMCI_ANIM_OPEN_PARMS = PMCI_ANIM_OPEN_PARMSW
-TypeDef LPMCI_ANIM_OPEN_PARMS = LPMCI_ANIM_OPEN_PARMSW
-#else
-TypeDef MCI_ANIM_OPEN_PARMS = MCI_ANIM_OPEN_PARMSA
-TypeDef PMCI_ANIM_OPEN_PARMS = PMCI_ANIM_OPEN_PARMSA
-TypeDef LPMCI_ANIM_OPEN_PARMS = LPMCI_ANIM_OPEN_PARMSA
-#endif
-
-Type MCI_ANIM_PLAY_PARMS
-	dwCallback As DWord
-	dwFrom As DWord
-	dwTo As DWord
-	dwSpeed As DWord
-End Type
-TypeDef PMCI_ANIM_PLAY_PARMS = *MCI_ANIM_PLAY_PARMS
-TypeDef LPMCI_ANIM_PLAY_PARMS = *MCI_ANIM_PLAY_PARMS
-
-Type MCI_ANIM_STEP_PARMS
-	dwCallback As DWord
-	dwFrames As DWord
-End Type
-TypeDef PMCI_ANIM_STEP_PARMS = *MCI_ANIM_STEP_PARMS
-TypeDef LPMCI_ANIM_STEP_PARMS = *MCI_ANIM_STEP_PARMS
-
-Type MCI_ANIM_WINDOW_PARMSA
-	dwCallback As DWord
-	hWnd As HWND
-	nCmdShow As DWord
-	lpstrText As LPSTR
-End Type
-TypeDef PMCI_ANIM_WINDOW_PARMSA = *MCI_ANIM_WINDOW_PARMSA
-TypeDef LPMCI_ANIM_WINDOW_PARMSA = *MCI_ANIM_WINDOW_PARMSA
-TypeDef MCI_ANIM_WINDOW_PARMS = MCI_ANIM_WINDOW_PARMSA
-TypeDef PMCI_ANIM_WINDOW_PARMS = PMCI_ANIM_WINDOW_PARMSA
-TypeDef LPMCI_ANIM_WINDOW_PARMS = LPMCI_ANIM_WINDOW_PARMSA
-
-Type MCI_ANIM_RECT_PARMS
-	dwCallback As DWord
-	rc As RECT
-End Type
-TypeDef PMCI_ANIM_RECT_PARMS = *MCI_ANIM_RECT_PARMS
-TypeDef LPMCI_ANIM_RECT_PARMS = *MCI_ANIM_RECT_PARMS
-
-Type MCI_ANIM_UPDATE_PARMS
-	dwCallback As DWord
-	rc As RECT
-	hDC As HDC
-End Type
-TypeDef PMCI_ANIM_UPDATE_PARMS = *MCI_ANIM_UPDATE_PARMS
-TypeDef LPMCI_ANIM_UPDATE_PARMS = *MCI_ANIM_UPDATE_PARMS
-
-' MCI extensions for video overlay devices
-Const MCI_OVLY_OPEN_WS =                &H00010000
-Const MCI_OVLY_OPEN_PARENT =            &H00020000
-Const MCI_OVLY_STATUS_HWND =            &H00004001
-Const MCI_OVLY_STATUS_STRETCH =         &H00004002
-Const MCI_OVLY_INFO_TEXT =              &H00010000
-Const MCI_OVLY_GETDEVCAPS_CAN_STRETCH = &H00004001
-Const MCI_OVLY_GETDEVCAPS_CAN_FREEZE =  &H00004002
-Const MCI_OVLY_GETDEVCAPS_MAX_WINDOWS = &H00004003
-Const MCI_OVLY_WINDOW_HWND =            &H00010000
-Const MCI_OVLY_WINDOW_STATE =           &H00040000
-Const MCI_OVLY_WINDOW_TEXT =            &H00080000
-Const MCI_OVLY_WINDOW_ENABLE_STRETCH =  &H00100000
-Const MCI_OVLY_WINDOW_DISABLE_STRETCH = &H00200000
-Const MCI_OVLY_WINDOW_DEFAULT =         &H00000000
-Const MCI_OVLY_RECT =                   &H00010000
-Const MCI_OVLY_PUT_SOURCE =             &H00020000
-Const MCI_OVLY_PUT_DESTINATION =        &H00040000
-Const MCI_OVLY_PUT_FRAME =              &H00080000
-Const MCI_OVLY_PUT_VIDEO =              &H00100000
-Const MCI_OVLY_WHERE_SOURCE =           &H00020000
-Const MCI_OVLY_WHERE_DESTINATION =      &H00040000
-Const MCI_OVLY_WHERE_FRAME =            &H00080000
-Const MCI_OVLY_WHERE_VIDEO =            &H00100000
-
-Type MCI_OVLY_OPEN_PARMSW
-	dwCallback As DWord
-	wDeviceID As MCIDEVICEID
-	lpstrDeviceType As LPWSTR
-	lpstrElementName As LPWSTR
-	lpstrAlias As LPWSTR
-	dwStyle As DWord
-	hWndParent As HWND
-End Type
-TypeDef PMCI_OVLY_OPEN_PARMSW = *MCI_OVLY_OPEN_PARMSW
-TypeDef LPMCI_OVLY_OPEN_PARMSW = *MCI_OVLY_OPEN_PARMSW
-
-Type MCI_OVLY_OPEN_PARMSA
-	dwCallback As DWord
-	wDeviceID As MCIDEVICEID
-	lpstrDeviceType As LPSTR
-	lpstrElementName As LPSTR
-	lpstrAlias As LPSTR
-	dwStyle As DWord
-	hWndParent As HWND
-End Type
-TypeDef PMCI_OVLY_OPEN_PARMSA = *MCI_OVLY_OPEN_PARMSA
-TypeDef LPMCI_OVLY_OPEN_PARMSA = *MCI_OVLY_OPEN_PARMSA
-
-#ifdef UNICODE
-TypeDef MCI_OVLY_OPEN_PARMS = MCI_OVLY_OPEN_PARMSW
-TypeDef PMCI_OVLY_OPEN_PARMS = PMCI_OVLY_OPEN_PARMSW
-TypeDef LPMCI_OVLY_OPEN_PARMS = LPMCI_OVLY_OPEN_PARMSW
-#else
-TypeDef MCI_OVLY_OPEN_PARMS = MCI_OVLY_OPEN_PARMSA
-TypeDef PMCI_OVLY_OPEN_PARMS = PMCI_OVLY_OPEN_PARMSA
-TypeDef LPMCI_OVLY_OPEN_PARMS = LPMCI_OVLY_OPEN_PARMSA
-#endif
-
-Type MCI_OVLY_WINDOW_PARMSW
-	dwCallback As DWord
-	hWnd As HWND
-	nCmdShow As DWord
-	lpstrText As LPWSTR
-End Type
-TypeDef PMCI_OVLY_WINDOW_PARMSW = *MCI_OVLY_WINDOW_PARMSW
-TypeDef LPMCI_OVLY_WINDOW_PARMSW = *MCI_OVLY_WINDOW_PARMSW
-
-#ifdef UNICODE
-TypeDef MCI_OVLY_WINDOW_PARMS = MCI_OVLY_WINDOW_PARMSW
-TypeDef PMCI_OVLY_WINDOW_PARMS = PMCI_OVLY_WINDOW_PARMSW
-TypeDef LPMCI_OVLY_WINDOW_PARMS = LPMCI_OVLY_WINDOW_PARMSW
-#else
-TypeDef MCI_OVLY_WINDOW_PARMS = MCI_OVLY_WINDOW_PARMSA
-TypeDef PMCI_OVLY_WINDOW_PARMS = PMCI_OVLY_WINDOW_PARMSA
-TypeDef LPMCI_OVLY_WINDOW_PARMS = LPMCI_OVLY_WINDOW_PARMSA
-#endif
-
-Type MCI_OVLY_RECT_PARMS
-	dwCallback As DWord
-	rc As RECT
-End Type
-TypeDef PMCI_OVLY_RECT_PARMS = *MCI_OVLY_RECT_PARMS
-TypeDef LPMCI_OVLY_RECT_PARMS = *MCI_OVLY_RECT_PARMS
-
-Type MCI_OVLY_SAVE_PARMSW
-	dwCallback As DWord
-	lpfilename As LPWSTR
-	rc As RECT
-End Type
-TypeDef PMCI_OVLY_SAVE_PARMSW = *MCI_OVLY_SAVE_PARMSW
-TypeDef LPMCI_OVLY_SAVE_PARMSW = *MCI_OVLY_SAVE_PARMSW
-
-Type MCI_OVLY_SAVE_PARMSA
-	dwCallback As DWord
-	lpfilename As LPSTR
-	rc As RECT
-End Type
-TypeDef PMCI_OVLY_SAVE_PARMSA = *MCI_OVLY_SAVE_PARMSA
-TypeDef LPMCI_OVLY_SAVE_PARMSA = *MCI_OVLY_SAVE_PARMSA
-
-#ifdef UNICODE
-TypeDef MCI_OVLY_SAVE_PARMS = MCI_OVLY_SAVE_PARMSW
-TypeDef PMCI_OVLY_SAVE_PARMS = PMCI_OVLY_SAVE_PARMSW
-TypeDef LPMCI_OVLY_SAVE_PARMS = LPMCI_OVLY_SAVE_PARMSW
-#else
-TypeDef MCI_OVLY_SAVE_PARMS = MCI_OVLY_SAVE_PARMSA
-TypeDef PMCI_OVLY_SAVE_PARMS = PMCI_OVLY_SAVE_PARMSA
-TypeDef LPMCI_OVLY_SAVE_PARMS = LPMCI_OVLY_SAVE_PARMSA
-#endif
-
-Type MCI_OVLY_LOAD_PARMSW
-	dwCallback As DWord
-	lpfilename As LPWSTR
-	rc As RECT
-End Type
-TypeDef PMCI_OVLY_LOAD_PARMSW = *MCI_OVLY_LOAD_PARMSW
-TypeDef LPMCI_OVLY_LOAD_PARMSW = *MCI_OVLY_LOAD_PARMSW
-
-Type MCI_OVLY_LOAD_PARMSA
-	dwCallback As DWord
-	lpfilename As LPSTR
-	rc As RECT
-End Type
-TypeDef PMCI_OVLY_LOAD_PARMSA = *MCI_OVLY_LOAD_PARMSA
-TypeDef LPMCI_OVLY_LOAD_PARMSA = *MCI_OVLY_LOAD_PARMSA
-
-#ifdef UNICODE
-TypeDef MCI_OVLY_LOAD_PARMS = MCI_OVLY_LOAD_PARMSW
-TypeDef PMCI_OVLY_LOAD_PARMS = PMCI_OVLY_LOAD_PARMSW
-TypeDef LPMCI_OVLY_LOAD_PARMS = LPMCI_OVLY_LOAD_PARMSW
-#else
-TypeDef MCI_OVLY_LOAD_PARMS = MCI_OVLY_LOAD_PARMSA
-TypeDef PMCI_OVLY_LOAD_PARMS = PMCI_OVLY_LOAD_PARMSA
-TypeDef LPMCI_OVLY_LOAD_PARMS = LPMCI_OVLY_LOAD_PARMSA
-#endif
-
-' DISPLAY Driver extensions
-Const NEWTRANSPARENT = 3
-Const QUERYROPSUPPORT = 40
-
-' DIB Driver extensions
-Const SELECTDIB = 41
-Const DIBINDEX(n) = MAKELONG(n,&H10FF)
-
-#endif '_INC_MMSYS
