WAVE を演奏

SoundPlayer で WAVE を演奏します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. WAVE を演奏する方法は幾つかあるのですが、ここでは最も簡単と思われる SoundPlayer を使って WAVE を演奏します。
    SoundPlayer で演奏出来るのは WAVE FILE だけのようで、MIDI や MP3 は演奏出来ませんでした。
    WAVE と Beep 音は、どちらも音(効果音など)を鳴らすのですが、プログラム的には別物です。
    Beep 音は Beep 音を鳴らす を参照して下さい。
  2. WAVE FILE は音の波形を記録したファイルですが、その内容は様々です。
    最初の頃はモノラルで記録されていましたが、すぐにステレオ録音になりました。
    波の高さを記録する量子化ビット数も音質の向上と共に変わって来ています。
    音質に大きく影響するサンプリング周波数(sampling frequency)も一定ではありません。
    音楽CDのサンプリング周波数は 44.1 kHz ですが、WAVE FILE ではわりと自由に設定できるようです。
    それらの関係で上位互換は保たれているようですが、全ての WAVE FILE を演奏出来るとは限らないので留意して下さい。
    windows system の WAVE ファイルが C:\Windows\Media のフォルダーに格納されています。
  3. 空のプロジェクトから作成した Windows Mode のソースコードです。
    マウスをクリックすると wav を演奏します。
    事前に @"c:\data\test\chimes.wav" または @"c:\data\test\ringin.wav" を格納して下さい。
    /*****************************************************/
    /*★ マウスのクリックで Wave を演奏する    前田 稔 ★*/
    /*****************************************************/
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    public class MyForm : Form
    {
        System.Media.SoundPlayer player;
    
        public MyForm()
        {
            this.Text = "Wave Play";
            player = new System.Media.SoundPlayer(@"c:\data\test\chimes.wav");
            //player = new System.Media.SoundPlayer(@"c:\data\test\ringin.wav");
        }
        // Destructor は無くても良い
        ~MyForm()
        {
            player.Dispose();
        }
    
        protected override void OnMouseDown(MouseEventArgs e)
        {
            this.Text = "Mouse Down";
            player.Play();
            //player.PlaySync();
            this.Text = "Exit";
        }
    }
    
    class form01
    {
        public static void Main()
        {
            MyForm mf = new MyForm();
            Application.Run(mf);
        }
    }
    
  4. new System.Media.SoundPlayer(@"c:\data\test\chimes.wav"); で wav をロードします。
        System.Media.SoundPlayer player;
    
        player = new System.Media.SoundPlayer(@"c:\data\test\chimes.wav");
        //player = new System.Media.SoundPlayer(@"c:\data\test\ringin.wav");
        
  5. player.Play() で wav を演奏します。
    Play() を使って演奏を開始すると、制御はすぐに次の命令に移ります。
    それに対して PlaySync() を使うと演奏が終了するまで待ち合わせます。
    "Mouse Down" と "Exit" をタイトルバーに表示しているので、違いを確かめて下さい。
        player.Play();
        //player.PlaySync();
        
  6. Destructor で player を解放していますが、無くてもかまいません。
        // Destructor は無くても良い
        ~MyForm()
        {
            player.Dispose();
        }
        

繰り返し演奏

  1. PlayLooping() で演奏すると wav が繰り返し演奏されます。
    演奏を停止するときは Stop() を実行します。
    次のプログラムは、マウスの左クリックで演奏を開始して、右クリックで停止します。
  2. ソースコードです。
    /*********************************************/
    /*★ 左クリックで開始、右で停止    前田 稔 ★*/
    /*********************************************/
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    public class MyForm : Form
    {
        System.Media.SoundPlayer player;
    
        public MyForm()
        {
            this.Text = "Wave Play";
            player = new System.Media.SoundPlayer(@"C:\DATA\Test\Chimes.wav");
            //player = new System.Media.SoundPlayer(@"C:\DATA\Test\ringin.wav");
        }
    /*
        // Destructor は無くても良い
        ~MyForm()
        {
            player.Dispose();
        }
    */
        protected override void OnMouseDown(MouseEventArgs e)
        {   if (e.Button == MouseButtons.Left)  //マウスの左ボタン
            {   player.PlayLooping();  }
            if (e.Button == MouseButtons.Right) //マウスの右ボタン
            {  player.Stop();  }
        }
    }
    
    class form01
    {
        public static void Main()
        {
            MyForm mf = new MyForm();
            Application.Run(mf);
        }
    }
    
  3. マウスの左ボタンで演奏を開始して、右ボタンで停止します。
        if (e.Button == MouseButtons.Left)  //マウスの左ボタン
        {   player.PlayLooping();  }
        if (e.Button == MouseButtons.Right) //マウスの右ボタン
        {  player.Stop();  }
        

前田稔(Maeda Minoru)の超初心者のプログラム入門