SecondaryBufferにサイン波を書く

C#でDirectSoundを使ってみることにした。まずは再生のテストということで、SecondaryBufferにサイン波を書き込む。

        private void writeSin(SecondaryBuffer s, int hz)
        {
            Int16[] data = new Int16[44100];
            double t = 0;
            for(int i=0;i<44100;i++){
                t = Math.PI * 2 / 44100 * i;
                t *= hz;
                t = Math.Sin(t) * Int16.MaxValue/10;  // divided by 10 means volume control
                data[i] = (short)t;
            }
            s.Write(0, data, LockFlag.None);
        }