周波数440Hzの正弦波をサンプリングレート48Kで作ってみる(考察編)

タグ: | 投稿日: 投稿者:

まいど、いかおです

表題の件、考えてみます。間違ってたらツッコミをよろしくお願いします。

サイン波ですからsin/cos/tanのsinを使いますよね。これを1秒間に440回転させればいいんです。

ここでサンプリングレートが48Kですから、1回転の長さ(サンプル数)は

1回転の長さ=48000/440

この長さで1回転させるのでサンプル取得のステップ幅は

サンプル取得のステップ幅 = 1回転の長さ / 360

で、コード的にはこんな感じなのか?

// 1秒分の440Hzのサイン波作成
// サンプルはunsigned shortで作ってみる(16bit)
// 音量はどうしよう・・・とりあえず128
static const double PI =  3.1415926535;
static const short vol = 128;
double sampleWidth = (48000 / 440) / 360;
double deg = 0.0f;

unsigned short sample[48000]:

for(int i=0;i < 48000;i++){
    sample[i] = (unsigned short)vol * sin(deg * PI /180);
    deg = deg + (48000 / 440) / 360;
}

次回、実際にやってみて検証します。

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>