NAudioで音量を変更する方法

目次

NAudioとは

NAudioを使用すればWindowsの音量をC#のコードで変更することができます
nugetでインストールします

dotnet add package NAudio

使い方

再生デバイスの取得

var devEnum = new MMDeviceEnumerator();
var device = devEnum.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);

マスター音量の取得

音量の範囲は0~1.0です

var masterVolume = device.AudioEndpointVolume.MasterVolumeLevelScalar;

マスター音量の変更

下記例では音量を0.5に変更します

device.AudioEndpointVolume.MasterVolumeLevelScalar = 0.5f;

プロセスごとの音量を取得する

Windows10ではマスター音量とは別にプロセスごとの音量を管理することができます

var sessions = device.AudioSessionManager.Sessions;
var sessionCount = sessions.Count;
for (var i = 0; i < sessionCount; i++)
{
    var session = device.AudioSessionManager.Sessions[i];
    Console.WriteLine($"{session.DisplayName}: {session.SimpleAudioVolume.Volume}");
}

特定プロセスの音量を変更する

下記コードはGoogle Chromeの音量を変更する例です
まずプロセス名でGoogle Chromeのプロセスを取得します
Google Chromeは内部で複数プロセスが動いているので全プロセスを取得する必要があります

sessionをループで回しながら、Google ChromeのプロセスIDのどれかに合致するものがあれば音量を変更します

var processIds = System.Diagnostics.Process.GetProcesses().Where(x => x.ProcessName == "chrome").Select(x => x.Id).ToArray();
var sessions = device.AudioSessionManager.Sessions;
var sessionCount = sessions.Count;
for (var i = 0; i < sessionCount; i++)
{
    var session = device.AudioSessionManager.Sessions[i];
    if (processIds.Contains((int)session.GetProcessID))
    {
        session.SimpleAudioVolume.Volume = 0.5f;
        break;
    }
}
よかったらシェアしてね!
目次
閉じる