を持っていますC#/ Consoleアプリケーションと、基本的なDirectSound機能にアクセスできるSharpDXパッケージが含まれています。私はちょうど最初の例で行くように2秒のメモ 'A'を作成し、演奏しようとしています。次のコードを実行すると、2秒間再生されますが、非常に静的です。私は計算に何かがあると仮定していますが、正確に何が分かるのかわかりません。誰もが自分のデジタルサウンドバッファーを書いた経験がありますか?私のDirectXサウンドバッファは、だから私は大学の割り当てに取り組んで楽しむ(シャープ自分のスキルの一部を維持するために)、私はこの1つに取り組むことにしましたスタティックノイズ
おかげで、 - ジェフ
public class Execution : IDisposable
{
IntPtr Handle;
DirectSound Device;
SecondarySoundBuffer Buffer;
public Execution()
{
Handle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
Device = new DirectSound();
Device.SetCooperativeLevel(Handle, CooperativeLevel.Priority);
var rate = 44100;
var bits = 16;
var channels = 1;
var waveFormat = new WaveFormat(rate, bits, channels);
// Create a buffer with 2 seconds of sample data
var seconds = 2;
var bufferDescription = new SoundBufferDescription() { Format = waveFormat, BufferBytes = waveFormat.AverageBytesPerSecond * seconds };
Buffer = new SecondarySoundBuffer(Device, bufferDescription);
var noteFrequency = 440f; // A
var bufferData = new float[bufferDescription.BufferBytes];
var count = 0;
for (var sample = 0; sample < bufferDescription.BufferBytes; sample++)
{
var sampleInSeconds = (float)sample/(float)bufferDescription.BufferBytes * (float)seconds;
var value = (float)Math.Sin(2f * Math.PI * noteFrequency * sampleInSeconds);
bufferData[sample] = value;
}
Buffer.Write(bufferData, 0, LockFlags.EntireBuffer);
}
public void Execute()
{
Buffer.Play(0, 0);
}
public void Dispose()
{
Buffer.Dispose();
Device.Dispose();
}
}