You are currently offline, waiting for your internet to reconnect

How To Select Soundcard in Visual Basic with Multimedia Control

This article was previously published under Q180032
This article describes how to set the WaveAudio device (soundcard) used bythe Multimedia Control (MCI32.ocx) using Visual Basic.
To set the WaveAudio device (soundcard) used by the Multimedia Control, youmust use the mciSendCommand API. The Multimedia Control does not directlyprovide a method to let you set the device used for playing or recording.

The following Visual Basic sample code shows how to use mciSendCommand tospecify the device used for WaveAudio output.

Sample Code

Following are the required definitions and declarations. Place these in amodule file:
   Public Const MMSYSERR_NOERROR = 0   Public Const MCI_SET = &H80D   Public Const MCI_WAVE_OUTPUT = &H800000   Type MCI_WAVE_SET_PARMS       dwCallback As Long       dwTimeFormat As Long       dwAudio As Long       wInput As Long       wOutput As Long       wFormatTag As Integer       wReserved2 As Integer       nChannels As Integer       wReserved3 As Integer       nSamplesPerSec As Long       nAvgBytesPerSec As Long       nBlockAlign As Integer       wReserved4 As Integer       wBitsPerSample As Integer       wReserved5 As Integer   End Type   Declare Function mciGetErrorString Lib "winmm.dll" _       Alias "mciGetErrorStringA" (ByVal dwError As Long, _       ByVal lpstrBuffer As String, ByVal uLength As Long) As Long   Declare Function mciSendCommand Lib "winmm.dll" Alias _       "mciSendCommandA" (ByVal wDeviceID As Long, _       ByVal uMessage As Long, ByVal dwParam1 As Long, _       ByRef dwParam2 As Any) As Long				

Sample Code

The following code sets the output device. This code assumes that you havea Multimedia Control called "MMControl1." This code should be called afterthe wave file to be played has been opened by MMControl1.
   Dim parms As MCI_WAVE_SET_PARMS    Dim rc As Long    ' Specify the soundcard. This specifies the soundcard with a deviceID    ' of 0. If you have a single soundcard, then this will open it. If you    ' have multiple soundcards, the deviceIDs will be 0, 1, 2, etc.    parms.wOutput = 0    ' Send the MCI command to set the output device.    rc = mciSendCommand(MMControl1.DeviceID, MCI_SET, _        MCI_WAVE_OUTPUT, parms)    if (rc <> MMSYSERR_NOERROR) then        ' The command failed.    End If				
See the mciSendCommand documentation in the Win32 SDK documentation.

Article ID: 180032 - Last Review: 11/21/2006 15:40:37 - Revision: 3.2

  • Microsoft Win32 Application Programming Interface
  • kbhowto KB180032