投稿者 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;
    }

}