.NET TIPS

WAVEサウンド(.wavファイル)をループ再生するには?[2.0のみ、C#、VB]

デジタルアドバンテージ 一色 政彦
2007/08/30

 「TIPS:WAVEサウンド(.wavファイル)を再生するには?」では、Windows標準のサウンド・ファイル形式として採用されている「WAVE形式ファイル」(以降、.wavファイル)のサウンドを簡単に再生する方法を紹介した。また、「TIPS:WAVEサウンド(.wavファイル)を非同期で再生するには?」では、非同期で.wavファイルを再生する方法を紹介した。これらのTIPSで紹介された具体的な方法は、SoundPlayerクラス(System.Media名前空間)のPlaySyncメソッドやPlayメソッドを呼び出すことで.wavファイルを再生するというものだった。

 SoundPlayerクラスには、これら以外にもメソッドが提供されており、例えばほかの処理の実行中にそのバックグラウンドで.wavファイルをループ再生したりすることができる(=非同期的な繰り返し再生)。

 本TIPSではそのループ再生の方法について紹介する。

.wavファイルをループ再生するには?(非同期的な繰り返し再生)

 .wavファイルをループ再生するには、SoundPlayerオブジェクトのPlayLoopingメソッドを呼び出せばよい。SoundPlayerオブジェクトを作成するには、コンストラクタに.wavファイルのパスを指定してインスタンス化する。

 PlayLoopingメソッドを呼び出すことにより、新しいスレッドが作成され、そのスレッドを使用して(バックグラウンドで).wavファイルが再生される。再生中も、(PlayLoopingメソッドの)呼び出し元のスレッドでは、コードの実行が先に進む。

 次のコードは、実際にPlayLoopingメソッドを使って.wavファイルを再生するサンプルのコンソール・アプリケーションだ。

using System;
using System.Media;
using System.Threading;

class Program
{
  static void Main()
  {
    string path = @"C:\WINDOWS\Media\tada.wav";
    SoundPlayer wavePlayer = new SoundPlayer(path);
    Console.WriteLine("再生開始");
    wavePlayer.PlayLooping(); // ループ再生

    // サウンド再生中も以降の処理を実行する
    for (int i = 1; i <= 15; i++)
    {
      Thread.Sleep(1000);
      Console.WriteLine(i.ToString() + "秒経過");

      // 10秒経過後に再生をストップする
      if (i == 10)
      {
        wavePlayer.Stop(); // 再生をストップ
        Console.WriteLine("再生停止");
      }
    }
  }
}
Imports System
Imports System.Media
Imports System.Threading

Module Module1

  Sub Main()
    Dim path As String = "C:\WINDOWS\Media\tada.wav"
    Dim wavePlayer As New SoundPlayer(path)
    Console.WriteLine("再生開始")
    wavePlayer.PlayLooping() ' ループ再生

    ' サウンド再生中も以降の処理を実行する
    For i as Integer = 1 To 15 Step i + 1
      Thread.Sleep(1000)
      Console.WriteLine(i.ToString() + "秒経過")

      ' 10秒経過後に再生をストップする
      If i = 10 Then
        wavePlayer.Stop() ' 再生をストップ
        Console.WriteLine("再生停止")
      End If
    Next
  End Sub

End Module
.wavファイルをループ再生するコンソール・アプリケーションのプログラム・コード(上:C#、下:VB)

 このプログラムを実行すると、「ジャジャーン」というサウンドが繰り返し再生されている間に、コードの実行が先に進み、「1秒経過」「2秒経過」……というメッセージが1秒ごとに表示される。10秒後に(SoundPlayerオブジェクトのStopメソッドが呼び出されることにより)その再生が停止する。その後、「15秒経過」というメッセージを最後にアプリケーションは終了する。End of Article

利用可能バージョン:.NET Framework 2.0のみ
カテゴリ:クラス・ライブラリ 処理対象:サウンド
使用ライブラリ:SoundPlayerクラス(System.Media名前空間)
関連TIPS:WAVEサウンド(.wavファイル)を再生するには?
関連TIPS:WAVEサウンド(.wavファイル)を非同期で再生するには?

この記事と関連性の高い別の.NET TIPS
WAVEサウンド(.wavファイル)を非同期で再生するには?
WAVEサウンド(.wavファイル)を再生するには?
WindowsフォームでアニメーションGIFを再生/停止するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

Insider.NET 記事ランキング

本日 月間
ソリューションFLASH