Results 1 to 38 of 38

Thread: [VB6, Vista+] Core Audio Basics

Threaded View

  1. #1

    Thread Starter
    PowerPoster
    Join Date
    Jul 2010
    Location
    NYC
    Posts
    7,654

    [VB6, Vista+] Core Audio Basics


    Core Audio Demos

    A few days ago I released the latest version of my oleexp typelib containing all of the Core Audio interfaces. Here's a demo of some of the basic features.

    All of the functions shown in the above screenshot work, and additionally the 'Mute Default Multimedia Device' button also demonstrates how to set a callback for that device-- if any other app, like the volume mixer, then unmutes or does something else with that device, your app will be notified of the change. Note that all interfaces used for the callback must be module-level and not released while the callback is active, otherwise your app will freeze.

    Requirements
    -Windows Vista or higher
    -oleexp v4.0 (released 24 Nov 2016): Add oleexp.tlb as a reference-- for IDE only, does not need to be redistributed with compiled app.
    -oleexp addons: mCoreAudio.bas, mIID.bas, and mPKEY.bas (all of which are now included in main oleexp download).

    Code Example: Muting all active capture devices (e.g. microphones)
    Code:
    Dim sOut As String
    Dim i As Long
    Dim lp As Long
    Dim s1 As String
    Dim sName As String
    
    Dim pDvEnum As MMDeviceEnumerator
    Set pDvEnum = New MMDeviceEnumerator
    
    Dim pDvCol As IMMDeviceCollection
    
    pDvEnum.EnumAudioEndpoints eCapture, DEVICE_STATE_ACTIVE, pDvCol
    
    If (pDvCol Is Nothing) = False Then
        Dim nCount As Long
        Dim pDevice As IMMDevice
        If pDvCol.GetCount(nCount) = S_OK Then
            If nCount > 0 Then
                For i = 0 To (nCount - 1)
                    sName = GetDeviceName(pDvCol, i)
                    sOut = sOut & "Muting Device(" & i & ", Name=" & sName & ")..." & vbCrLf
                    pDvCol.Item i, pDevice
                    If (pDevice Is Nothing) = False Then
                        Dim pAEV As IAudioEndpointVolume
                        pDevice.Activate IID_IAudioEndpointVolume, CLSCTX_INPROC_SERVER, CVar(0), pAEV
                        If (pAEV Is Nothing) = False Then
                            If pAEV.SetMute(1, UUID_NULL) = S_OK Then
                                sOut = sOut & "...Device successfully muted!" & vbCrLf
                            Else
                                sOut = sOut & "...Failed to mute device " & i & " (" & sName & "). Already muted?" & vbCrLf
                            End If
                        Else
                            Debug.Print "Failed to set pAEV"
                            sOut = sOut & "...An error occured accessing the volume control." & vbCrLf
                        End If
                    Else
                        Debug.Print "Failed to set pDevice"
                        sOut = sOut & "...Failed to get pointer to device." & vbCrLf
                    End If
                Next
            Else
                sOut = "No active devices found." & vbCrLf
            End If
        Else
            Debug.Print "Failed to get device count."
            sOut = sOut & "An error occured getting the device count." & vbCrLf
        End If
    Else
        Debug.Print "Failed to set pDvCol"
        sOut = "Failed to get device collection (no active devices or an error occured)"
    End If
    Text1.Text = sOut
    ---------------------

    twinBASIC 64bit-compatible version can be found at: https://github.com/fafalone/CoreAudioDemos
    Attached Files Attached Files
    Last edited by fafalone; Oct 31st, 2025 at 02:37 AM. Reason: Attached project updated to reference oleexp.tlb 4.0 or higher

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width