音を作る
純音(一つの正弦波だけで作られる音)を作る
1.ソース
- ピアノ鍵盤でいうところの「ラ」の音(周波数 880Hz)
- サンプリング周波数 : 16k(1秒間にいくつ区切るか、電話だと8k、今回は毎秒16000回サンプル)
- 1秒間鳴らす
- 値の範囲は「1〜255」(後ほどodコマンドで確認)
#include <stdio.h> #include <math.h> int main(){ int smp_freq = 16000; int smp_cnt, iv; double freq = 880; double len = 1.0; double sec, v; smp_cnt = 1; do{ sec = (double)smp_cnt / smp_freq; v = sin(2* M_PI * freq * sec); iv = 128 + (int)(v * 127); putchar(iv); smp_cnt++; }while(sec < len); return 0; } /* end of main */
2.コンパイル
gcc -o prog_sin prog_sin.c -lm
4.WAVヘッダを付ける
sox -r 16000 -c 1 --bits 8 -e unsigned 880_16k.raw 880_16k.wav
「1〜255」なので、1Byte(unsigned char)で表現可能
5.再生
aplay 880_16k.wav
再生中の出力
再生中 WAVE '880_16k.wav' : Unsigned 8 bit, レート 16000 Hz, モノラル