C#と、managedDirectX  超入門

     

1.C#って....素晴らしい

えっ!、メインプログラムは、これだけっ?

いえ、メインプログラムと、Form用のプログラムは、同じ名前空間で、分割されているのです、ホッ。

これは、素晴らしい! シンプルイズベスト!

うれしい機能は、

    エディタに、一文字でも入力すると、小窓に候補が、出現することです。

ええわあー、すっかり、C#が気に入りました (^_^)

文字の補完もあって、

    入力間違い無くなるし、文法的間違いも、すぐ、分かりますね。

フォームデザイナーも、付いとるし...ええわあ。

2.managedDirectXを、使う

DirectXにも、managedDirectXなるものが、存在します。

よう、解らんけど、何でも、コーディングが、シンプルで、わかり易いそうです。

これは、もう、managedDirectXを、使う1手ですね。

 

C#も、初めてなのですが、気にいったし、C#を勉強しながら、managedDirectXも、やるもんね....

managedDirectXについては、DirectX SDKに、documentが、ついてます。(日本語のdirectX documentも

installしたけど、.netFrameworkで、読めない、出てこん。 install場所が、悪いんやろか...)

3.超簡単な DirectSound プログラム

Atelier Blue様の所で、DirectSoundの例を、発見致しました、ありがとうございます。

DirectXの、DirectSound sampleより、シンプルで、ステキです。

このプログラムをrunすると、c:\windows\Media\notify.wavが、一回聞こえます。

checkBox1を、checkすると、この音が、連続再生されます。

プログラムは、たったこれだけ!

Form1.cs です。

using System;

using System.Windows.Forms;

using System.Drawing;

using Microsoft.DirectX.DirectSound;

namespace Sound1

{

    public partial class SoundForm : Form

    {

        //DirectSound用の変数

        private Device device = null ;

        private SecondaryBuffer secondaryBufferA = null ;

        //file name

        private string filename = @"c:\WINDOWS\Media\notify.wav";

 

        public SoundForm()

        {

            InitializeComponent();

            this.Text = "DirectSoundのテスト";

            DirectSound_Initialize();

        }

 

        private void DirectSound_Initialize()

        {

            device = new Device();

            //強調レベルの設定が必要

            device.SetCooperativeLevel(this, CooperativeLevel.Normal);

            //どういう種類のバッファにするか?

            BufferDescription desc = new BufferDescription();

            //これで、secondaryBufferを作れる

            secondaryBufferA = new SecondaryBuffer(filename,desc,device);

            secondaryBufferA.Play(0, BufferPlayFlags.Default);

        }

        private void checkBox1_CheckStateChanged(object sender, EventArgs e)

        {

            if (checkBox1.Checked)

            secondaryBufferA.Play(0, BufferPlayFlags.Looping);

            else

            secondaryBufferA.Stop();

            secondaryBufferA.SetCurrentPosition(0);

        }

        protected override void Dispose(bool disposing)

        {

            if (disposing)

            {

                if (secondaryBufferA != null)

                {

                    secondaryBufferA.Stop();

                    secondaryBufferA.Dispose();

                }

                if (device != null)

                {

                    device.Dispose();

                }

            }

                base.Dispose(disposing);

        }

     }

}

シンプルで、分かりやすーい! こんなん、大好き です。

Atelier Blue様、再度、御礼申し上げます。

そうそう、

プログラムが、一旦出来上がったら、テンプレートにして置くと、

コードを1から入れ直す手間が、省けます。(ファイルメニューをクリックすると、テンプレートのエクスポートの項が出ます)

4.effectを、入れる

DirectX SDK の、managedDirectX documentから EffectDescription Structureの項を、読み

この方法を、試す。

既存のeffects(chorus, distortion, echo)を、試します。

骨子は

    1.Create and setup the sound device

    2.Create and setup the buffer description

    3.Create and setup the buffer for playing the sound

です。

自前のeffect (fir filter等) を、出す方法は、まだ、分かりませんねん。

H.18.6.9