2011-12-11 3 views
7

私はいくつかのコードを調べましたが、すべてが数学関数波を作り出しているようですが、私は単一のトーン、またはカスタムシングルトーンで作られたカスタムウェーブが必要です。Delphiでシングルトーンまたはカスタムウェーブを再生するにはどうすればよいですか?

私は私の答えに近いこの How can I generate continuous tones of varying frequencies?

をお読みください。 Assumin上記のリンクのようにwaveOutWriteを使用するつもりですが、HWAVEOUTの各サンプルに対してどのようにamp/freqが計算されているかわかりません。それは次のように行うのリンクからコードで

Samples[i] := round(vol*sin(omega*t));

私はいくつかのアンプと15kHzののFREQ単一のトーンをしたいと仮定すると、サンプルは、[1]を算出することだろうか、(これは関係ありませんか)?

答えて

9

(時間的に)連続した正弦波は、Aは、いくつかの振幅A*sin(2*PI*f*t)PIとして定義することができ、ウェル、3.14 ...、fはヘルツでトーン周波数であり、tは、秒単位の時間です。あなたは連続時間を持っていないので、お時間が離散的であるため、

さて、あなたはtの代わりにdt*iを代用してdtはサンプルまたは1/sample rateiの間の時間であるサンプル数であるA*sin(2*PI*f*dt*i)を取得します。あなたはA*sin(2*PI*(f/Fs)*i)と綴ることができます。あるサンプルレート(サンプル/秒または単純にHz)を選択すると、最高音調はFs/2 Hzより大きくなることはありません。

+0

ありがとうございます! – MitziMeow