Вот этого кода достаточно, чтобы считывать уровень сигнала на устройстве записи по умолчанию:
#SingleInstance, Force
#include va.ahk
audioMeter := VA_GetAudioMeter("capture")
VA_IAudioMeterInformation_GetMeteringChannelCount(audioMeter, channelCount)
VA_GetDevicePeriod("capture", devicePeriod)
Loop
{
VA_IAudioMeterInformation_GetPeakValue(audioMeter, peakValue)
ToolTip, %peakValue%
Sleep, %devicePeriod%
}
Только чтобы и правда увидеть уровень сигнала, нужно запустить любое приложение использующее микрофон (или устройство записи), кроме тех приложений, которые используют устройство в "монопольном режиме".
Вариант (от автора VA) с инициализацией звукового клиента (не требует запуска левых приложений, показывает уровень сразу):
#SingleInstance, Force
#include va.ahk
; Get the device which we'll be monitoring.
device := VA_GetDevice("capture")
; Get IAudioClient interface.
VA_IMMDevice_Activate(device, IID_IAudioClient:="{1CB9AD4C-DBFA-4c32-B178-C2F568A703B2}", 7, 0, audioClient)
; Get mixer format to pass to Initialize.
VA_IAudioClient_GetMixFormat(audioClient, format)
; Initialize audio client to ensure peak meter is active.
VA_IAudioClient_Initialize(audioClient, 0, 0, 0, 0, format, 0)
; Get IAudioMeterInformation interface.
audioMeter := VA_GetAudioMeter(device)
; No longer needed, so free it:
MeterLength = 30
; "The peak value for each channel is recorded over one device
; period and made available during the subsequent device period."
VA_GetDevicePeriod("capture", devicePeriod)
Loop
{
VA_IAudioMeterInformation_GetPeakValue(audioMeter, peakValue)
ToolTip, %peakValue%
Sleep, %devicePeriod%
}