ロゴ メインコンテンツへ
RSSフィード
「ソフトウェア開発」に関連する記事一覧

C# NAudioでループ再生するwavをフェードイン、フェードアウトするサンプル

2023/11/26
(この記事の文字数: 93)

NAudio でループする BGM をフェードイン、フェードアウトさせる簡単なサンプルです。LoopStreamクラスは「C# NAudioでwavファイルをループ再生する」に記載のクラスです。

var bgmPath = @"test.wav";
var reader = new AudioFileReader(bgmPath);
var bgmFileReader = reader;
bgmFileReader.Volume = 0.0f;
LoopStream loop = new(reader);
WaveOutEvent bgmOutputDevice = new();
bgmOutputDevice.Init(loop);

bgmOutputDevice.Volume = 1.0f;
bgmOutputDevice.Play();

// フェードイン
{
    var targetVolume = 1.0f;
    var fadeMilliseconds = 3000;
    int intervalMilliseconds = fadeMilliseconds;
    int samples = 100;
    int sleepMilliseconds = intervalMilliseconds / samples;
    float increment = targetVolume / samples;
    for (int i = 0; i < samples; ++i)
    {
        Thread.Sleep(sleepMilliseconds);

        float nextVolume = bgmFileReader!.Volume + increment;
        bgmFileReader.Volume = nextVolume > targetVolume ? targetVolume : nextVolume;
    }
    bgmFileReader.Volume = targetVolume;
}


// フェードアウト
{
    int fadeOutMilliseconds = 3000;
    int fadeOutSamples = 100;
    int sleepMilliseconds = fadeOutMilliseconds / fadeOutSamples;
    float volumeDecrement = bgmFileReader.Volume / fadeOutSamples;
    for (int i = 0; i < fadeOutSamples; ++i)
    {
        Thread.Sleep(sleepMilliseconds);

        float nextVolume = bgmFileReader.Volume - volumeDecrement;
        bgmFileReader.Volume = nextVolume < 0.0f ? 0.0f : nextVolume;
    }
    bgmFileReader.Volume = 0.0f;

    bgmOutputDevice.Stop();
}


  このエントリーをはてなブックマークに追加  

<<「ソフトウェア開発」の記事一覧に戻る

コメント(0 件)



コンテンツロード: 0.0069 sec
Copyright(C)2006-2024 puarts All Rights Reserved