Skip to content

[Bug]: WASAPI - Changing microphone enhancements invalidates current configuration #1629

@aleksandarResolume

Description

@aleksandarResolume

Detailed steps on how to reproduce the bug

Windows offers Audio enhancements per audio input (such as "voice clarity"). when this option is toggled, the setup changes and buffers become stale, requiring an engine reset.
When enhancements switch, and the current setup/buffers become invalid, an issue in the implementation occurs where a notification is triggered (when the enhancements are toggled on/off):

JUCE_COMRESULT OnPropertyValueChanged (LPCWSTR, const PROPERTYKEY) { return notify(); }

this propagates and triggers the timer which calls

device->deviceChangeDetector.triggerAsyncDeviceChangeCallback();

this calls:

void systemDeviceChanged()
 {
     const auto newDevices = scan();

     if (std::exchange (devices, newDevices) != newDevices)
     {
         hasScanned = true;
         callDeviceChangeListeners();
     }
 }

(juce_WASAPI_windows.cpp, juce_HiddenMessageWindow_windows.h)

the issue is that the device list remains the same and std::exchange (devices, newDevices) != newDevices doesn't trigger the callback on client side. Hence, the setup becomes stale and the buffers are not updated anymore.

What is the expected behaviour?

buffers should be reallocated and clients notified.

Operating systems

Windows

What versions of the operating systems?

10, 11

Architectures

x86_64

Stacktrace

Plug-in formats (if applicable)

No response

Plug-in host applications (DAWs) (if applicable)

No response

Testing on the develop branch

I have not tested against the develop branch

Code of Conduct

  • I agree to follow the Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions