C# NAudioで個別に音量調整をしたい
投稿者 (削除されました)  ()
投稿日時
2024/3/22 05:20:56
(削除されました)
投稿者 KOZ  (社会人)
投稿日時
2024/3/22 06:33:22
AudioFileReader と WaveOutEvent を使い、AudioFileReader の Volume プロパティを使うと個別に調整できるようです。
using NAudio.Wave;
public partial class Form1 : Form
{
readonly AudioFileReader reader1 = new("test1.mp3");
readonly AudioFileReader reader2 = new("test2.mp3");
readonly WaveOutEvent WaveOut1 = new();
readonly WaveOutEvent WaveOut2 = new();
public Form1() {
InitializeComponent();
}
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
WaveOut1.Init(reader1);
WaveOut2.Init(reader2);
}
private void button1_Click(object sender, EventArgs e) {
PlayControl(WaveOut1, reader1, trackBar1);
}
private void button2_Click(object sender, EventArgs e) {
PlayControl(WaveOut2, reader2, trackBar2);
}
private void trackBar1_Scroll(object sender, EventArgs e) {
SetVolume(reader1, trackBar1);
}
private void trackBar2_Scroll(object sender, EventArgs e) {
SetVolume(reader2, trackBar2);
}
private static void PlayControl(WaveOutEvent waveOut, AudioFileReader reader, TrackBar trackBar) {
if (waveOut.PlaybackState == PlaybackState.Playing) {
waveOut.Stop();
} else {
SetVolume(reader, trackBar);
reader.Position = 0;
waveOut.Play();
}
}
private static void SetVolume(AudioFileReader reader, TrackBar trackBar) {
reader.Volume = (float)trackBar.Value / trackBar.Maximum;
}
}
using NAudio.Wave;
public partial class Form1 : Form
{
readonly AudioFileReader reader1 = new("test1.mp3");
readonly AudioFileReader reader2 = new("test2.mp3");
readonly WaveOutEvent WaveOut1 = new();
readonly WaveOutEvent WaveOut2 = new();
public Form1() {
InitializeComponent();
}
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
WaveOut1.Init(reader1);
WaveOut2.Init(reader2);
}
private void button1_Click(object sender, EventArgs e) {
PlayControl(WaveOut1, reader1, trackBar1);
}
private void button2_Click(object sender, EventArgs e) {
PlayControl(WaveOut2, reader2, trackBar2);
}
private void trackBar1_Scroll(object sender, EventArgs e) {
SetVolume(reader1, trackBar1);
}
private void trackBar2_Scroll(object sender, EventArgs e) {
SetVolume(reader2, trackBar2);
}
private static void PlayControl(WaveOutEvent waveOut, AudioFileReader reader, TrackBar trackBar) {
if (waveOut.PlaybackState == PlaybackState.Playing) {
waveOut.Stop();
} else {
SetVolume(reader, trackBar);
reader.Position = 0;
waveOut.Play();
}
}
private static void SetVolume(AudioFileReader reader, TrackBar trackBar) {
reader.Volume = (float)trackBar.Value / trackBar.Maximum;
}
}
投稿者 祈り星  (社会人)
投稿日時
2024/3/23 07:57:08
回答ありがとうございます。
試したところ、無事に問題なく目的の個別音量調整が出来ました。
ありがとうございます、凄く助かりました。
試したところ、無事に問題なく目的の個別音量調整が出来ました。
ありがとうございます、凄く助かりました。
OS Windows10
visual studio community 2022
フレームワーク .NET 7.0
NAudioで音を鳴らしていますが音楽と効果音を別々に音量調整をしたいのですがどうすればいいでしょうか?
bgm1.Volume = 0.5f; などで音量調整をしようとしてもPC自体の機能として存在している音量を調整するミキサーを操作しているようで、個別ではなく全体の音量を弄ってしまうため個別音量調整は根本的にこのようなコードではないようで困っています。
現在は以下のように音楽を鳴らしています、どうかよろしくお願いします。