You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
8.7 KiB
143 lines
8.7 KiB
Attribute VB_Name = "MCI_Defs"
|
|
' Public Constants
|
|
Public Const MAXEXTRABYTES = 3 ' Maximum (Extra Bytes + 1) In Non PCM Wave Formats...
|
|
Public Const MAXBUFFERS = 500 ' Maximum Wave Buffer Array Member
|
|
Public Const MINBUFFERS = 0 ' Minimum Wave Buffer Array Member
|
|
|
|
'== MCI Wave Constants ================================================
|
|
' Sound Quality
|
|
Public Const c8_0kHz = 8000 ' 8.0 khz
|
|
Public Const c11_025kHz = 11025 ' 11.025 khz
|
|
Public Const c22_05kHz = 22050 ' 22.05 khz
|
|
Public Const c44_1kHz = 44010 ' 44.1 khz
|
|
|
|
' Sound Format
|
|
Public Const WAVE_FORMAT_PCM = &H1 ' Microsoft Windows PCM Wave Format
|
|
Public Const WAVE_FORMAT_ADPCM = &H11 ' ADPCM Wave Format
|
|
Public Const WAVE_FORMAT_IMA_ADPCM = &H11 ' IMA ADPCM Wave Format
|
|
Public Const WAVE_FORMAT_DVI_ADPCM = &H11 ' DVI ADPCM Wave Format
|
|
Public Const WAVE_FORMAT_DSPGROUP_TRUESPEECH = &H22 ' DSP Group Wave Format
|
|
Public Const WAVE_FORMAT_GSM610 = &H31 ' GSM610 Wave Format
|
|
Public Const WAVE_FORMAT_MSN_AUDIO = &H32 ' MSN Audio Wave Format
|
|
|
|
' PCM Wave Format Types
|
|
Public Const WAVE_FORMAT_1M08 = &H1 ' 11.025 kHz, Mono, 8-bit
|
|
Public Const WAVE_FORMAT_1M16 = &H4 ' 11.025 kHz, Mono, 16-bit
|
|
Public Const WAVE_FORMAT_1S08 = &H2 ' 11.025 kHz, Stereo, 8-bit
|
|
Public Const WAVE_FORMAT_1S16 = &H8 ' 11.025 kHz, Stereo, 16-bit
|
|
Public Const WAVE_FORMAT_2M08 = &H10 ' 22.05 kHz, Mono, 8-bit
|
|
Public Const WAVE_FORMAT_2M16 = &H40 ' 22.05 kHz, Mono, 16-bit
|
|
Public Const WAVE_FORMAT_2S08 = &H20 ' 22.05 kHz, Stereo, 8-bit
|
|
Public Const WAVE_FORMAT_2S16 = &H80 ' 22.05 kHz, Stereo, 16-bit
|
|
Public Const WAVE_FORMAT_4M08 = &H100 ' 44.1 kHz, Mono, 8-bit
|
|
Public Const WAVE_FORMAT_4M16 = &H400 ' 44.1 kHz, Mono, 16-bit
|
|
Public Const WAVE_FORMAT_4S08 = &H200 ' 44.1 kHz, Stereo, 8-bit
|
|
Public Const WAVE_FORMAT_4S16 = &H800 ' 44.1 kHz, Stereo, 16-bit
|
|
|
|
'== Wave...Open() Constants ===========================================
|
|
Public Const WAVE_FORMAT_QUERY = &H1& ' Query wave format flag
|
|
Public Const WAVE_MAPPER = (-1) ' Maps To First Available Sound Device
|
|
Public Const WAVE_ALLOWSYNC = &H2& ' Asynchronous playback flag
|
|
Public Const CALLBACK_WINDOW = &H10000 ' dwCallback is a HWND
|
|
Public Const CALLBACK_NULL = &H0& ' no callback
|
|
|
|
'== MCI WaveHeader Bit Values In dwflags ==============================
|
|
Public Const WHDR_DONE = &H1& '[00001][01] done bit
|
|
Public Const WHDR_PREPARED = &H2& '[00010][02] set if this header has been prepared
|
|
Public Const WHDR_BEGINLOOP = &H4& '[00100][04] loop start block
|
|
Public Const WHDR_ENDLOOP = &H8& '[01000][08] loop end block
|
|
Public Const WHDR_INQUEUE = &H10& '[10000][16] reserved for driver
|
|
|
|
'== MCI MM Return Codes ===============================================
|
|
Public Const ERROR_SHARING_VIOLATION = 32
|
|
Public Const MMSYSERR_NOERROR = 0 ' no error
|
|
Public Const MMSYSERR_BASE = 0
|
|
Public Const MMSYSERR_ERROR = (MMSYSERR_BASE + 1) ' unspecified error
|
|
Public Const MMSYSERR_BADDEVICEID = (MMSYSERR_BASE + 2) ' device ID out of range
|
|
Public Const MMSYSERR_NOTENABLED = (MMSYSERR_BASE + 3) ' driver failed enable
|
|
Public Const MMSYSERR_ALLOCATED = (MMSYSERR_BASE + 4) ' device already allocated
|
|
Public Const MMSYSERR_INVALHANDLE = (MMSYSERR_BASE + 5) ' device handle is invalid
|
|
Public Const MMSYSERR_NODRIVER = (MMSYSERR_BASE + 6) ' no device driver present
|
|
Public Const MMSYSERR_NOMEM = (MMSYSERR_BASE + 7) ' memory allocation error
|
|
Public Const MMSYSERR_NOTSUPPORTED = (MMSYSERR_BASE + 8) ' function isn't supported
|
|
Public Const MMSYSERR_BADERRNUM = (MMSYSERR_BASE + 9) ' error value out of range
|
|
Public Const MMSYSERR_INVALFLAG = (MMSYSERR_BASE + 10) ' invalid flag passed
|
|
Public Const MMSYSERR_INVALPARAM = (MMSYSERR_BASE + 11) ' invalid parameter passed
|
|
Public Const MMSYSERR_LASTERROR = (MMSYSERR_BASE + 11) ' last error in range
|
|
|
|
Public Const WAVERR_BASE = 32
|
|
Public Const WAVERR_BADFORMAT = (WAVERR_BASE + 0) ' unsupported wave format
|
|
Public Const WAVERR_STILLPLAYING = (WAVERR_BASE + 1) ' still something playing
|
|
Public Const WAVERR_UNPREPARED = (WAVERR_BASE + 2) ' header not prepared
|
|
Public Const WAVERR_LASTERROR = (WAVERR_BASE + 3) ' last error in range
|
|
Public Const WAVERR_SYNC = (WAVERR_BASE + 3) ' device is synchronous
|
|
|
|
'== flag values for wFlags parameter ==================================
|
|
Public Const SND_SYNC = &H0 ' play synchronously (default)
|
|
Public Const SND_ASYNC = &H1 ' play asynchronously
|
|
Public Const SND_NODEFAULT = &H2 ' don't use default sound
|
|
Public Const SND_MEMORY = &H4 ' lpszSoundName points to a memory file
|
|
Public Const SND_LOOP = &H8 ' loop the sound until next sndPlaySound
|
|
Public Const SND_NOSTOP = &H10 ' don't stop any currently playing sound
|
|
|
|
'== MCI Wave API Declarations ================================================
|
|
Declare Function timeGetTime Lib "winmm.dll" () As Long
|
|
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal SoundData As Any, ByVal uFlags As Long) As Long
|
|
|
|
Declare Function waveInOpen Lib "winmm.dll" (lphWaveIn As Long, ByVal uDeviceID As Long, lpFormat As WAVEFORMATEX, ByVal dwCallback As Long, ByVal dwInstance As Long, ByVal dwFlags As Long) As Long
|
|
Declare Function waveInPrepareHeader Lib "winmm.dll" (ByVal hWaveIn As Long, wH As WAVEHDR, ByVal uSize As Long) As Long
|
|
Declare Function waveInUnprepareHeader Lib "winmm.dll" (ByVal hWaveIn As Long, wH As WAVEHDR, ByVal uSize As Long) As Long
|
|
Declare Function waveInAddBuffer Lib "winmm.dll" (ByVal hWaveIn As Long, wH As WAVEHDR, ByVal uSize As Long) As Long
|
|
Declare Function waveInStart Lib "winmm.dll" (ByVal hWaveIn As Long) As Long
|
|
Declare Function waveInStop Lib "winmm.dll" (ByVal hWaveIn As Long) As Long
|
|
Declare Function waveInReset Lib "winmm.dll" (ByVal hWaveIn As Long) As Long
|
|
Declare Function waveInClose Lib "winmm.dll" (ByVal hWaveIn As Long) As Long
|
|
|
|
Declare Function waveOutOpen Lib "winmm.dll" (lphWaveOut As Long, ByVal uDeviceID As Long, lpFormat As WAVEFORMATEX, ByVal dwCallback As Long, ByVal dwInstance As Long, ByVal dwFlags As Long) As Long
|
|
Declare Function waveOutPrepareHeader Lib "winmm.dll" (ByVal hWaveOut As Long, wH As WAVEHDR, ByVal uSize As Long) As Long
|
|
Declare Function waveOutUnprepareHeader Lib "winmm.dll" (ByVal hWaveOut As Long, wH As WAVEHDR, ByVal uSize As Long) As Long
|
|
Declare Function waveOutWrite Lib "winmm.dll" (ByVal hWaveOut As Long, wH As WAVEHDR, ByVal uSize As Long) As Long
|
|
Declare Function waveOutClose Lib "winmm.dll" (ByVal hWaveOut As Long) As Long
|
|
Declare Function waveOutReset Lib "winmm.dll" (ByVal hWaveOut As Long) As Long
|
|
Declare Function waveOutPause Lib "winmm.dll" (ByVal hWaveOut As Long) As Long
|
|
Declare Function waveOutRestart Lib "winmm.dll" (ByVal hWaveOut As Long) As Long
|
|
|
|
'== Global Memory Functions ==================================================
|
|
Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
|
|
Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
|
|
Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
|
|
Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
|
|
|
|
Declare Sub CopyPTRtoBYTES Lib "Kernel32.dll" Alias "RtlMoveMemory" (ByRef ByteDest As Byte, ByVal PtrSrc As Long, ByVal length As Long)
|
|
Declare Sub CopyBYTEStoPTR Lib "Kernel32.dll" Alias "RtlMoveMemory" (ByVal PtrDest As Long, ByRef ByteSrc As Byte, ByVal length As Long)
|
|
|
|
Public Const GMEM_MOVEABLE = &H2&
|
|
Public Const GMEM_SHARE = &H2000&
|
|
Public Const GMEM_ZEROINIT = &H40&
|
|
|
|
'== MCI User Defined Data Types...=======================================
|
|
Type WAVEHDR
|
|
lpData As Long ' pointer to locked data buffer
|
|
dwBufferLength As Long ' length of data buffer
|
|
dwBytesRecorded As Long ' used for input only
|
|
dwUser As Long ' for client's use
|
|
dwFlags As Long ' assorted flags (see defines)
|
|
dwLoops As Long ' loop control counter
|
|
wavehdr_tag As Long ' reserved for driver
|
|
Reserved As Long ' reserved for driver
|
|
hData As Long ' handle to locked data buffer
|
|
End Type
|
|
|
|
Type WAVEFORMATEX
|
|
wFormatTag As Integer ' format type
|
|
nChannels As Integer ' number of channels (i.e. mono, stereo, etc.)
|
|
nSamplesPerSec As Long ' sample rate
|
|
nAvgBytesPerSec As Long ' for buffer estimation
|
|
nBlockAlign As Integer ' block size of data
|
|
wBitsPerSample As Integer ' Bits Per Sample
|
|
cbSize As Integer ' Size Of (FACT CHUNCK)
|
|
xBytes(MAXEXTRABYTES) As Byte ' (FACT CHUNCK)
|
|
End Type
|
|
|
|
|