こんにちは、RCC2回生のさよりです。音楽が好きでDTMやDJなんかもやってます。

DTMではEDMをよく聴くのでEDMを作ろうと頑張ってます。EDMはLeadやBassなどの音がかっこよくないとダサくなってしまうのでこだわりをもって音を作ったり選んだりしています。

音を作るときには波形もこだわります。波形の形によって結構音の与える印象が変わります。

今回、自分でいろいろな波形で作られた音を出してみたいと思ったので作ってみました。

数式

sin波の数式はこのようになっています。

ここでは

fs : サンプリング周波数[Hz]

n : 離散時間

A : 信号の最大振幅

としています。

数式を入力する代わりに使うため
sin波の式

作ってみた

最初にモノラルの構造体の中身を設定したり、振幅や周波数、基本周波数の値を設定します。

for(count = 0; count < pcm.length; count++){
    pcm.s[count] = amplitude * sin(2.0 * M_PI * f * (double)count / pcm.fs);
}

その後にこんな感じでsin波の式に従って配列へデータを格納していきました。

後はwavファイルに書き出しました。

できたの?

上手くいきませんでした…

少し直せば動くと思うのでアドカレ公開後ぐらいには出来てる気がします…

sin波だけじゃなく他の波形でもやってみたいと思います!

参考文献

サウンドエフェクトのプログラミング―Cによる音の加工と音源合成 小坂 直敏 (著)

やさしい音と音楽のプログラミング 横山 真男 (著)

WAVEファイル読み・書き込み @syuhei1008


Twitterでフォローしよう

おすすめの記事