[故]ぶろぐ
2014年6月13日金曜日
初めての音声合成・その②
waveファイルの読み書きについて、
以下のリンクでwaveのファイルフォーマットについて詳しく説明されている。
Waveファイルを入出力してみる
WAV ファイルフォーマット
まずはsin波を出力するコードを書いてみた。
以下ソースコード(環境win7 64bit VC++2012)
1kHzのsin波をwavファイルに出力する。
#include
#include
#define _USE_MATH_DEFINES #include
/* 注意 int型はバイト数が2~8Byteまで存在し、範囲が定まらないので、 short型(short int型と同値?)(たぶん2Byte固定)を使う。 バイナリでの書き込みはリトルエンディアンでは無く、 ビックエンディアンで書き込む必要がある。 */ int main(void){ //3秒分のバッファを確保する。 //44.1[kilo*Sample/second]だから(一秒当たり44.1kサンプル) //44100*2[byte]==88200[Byte/s] // //3秒分のバッファだから、 //88200[Byte/s]*3==264600[Byte](==258.3984375[kByte]) size_t SUMofSample = 44100*3; //合計サンプル数 short* sin_wave = (short*)malloc(SUMofSample*sizeof(short)); //1kHzのsin波の生成 //44.1[k*Sample/second]だから、44.1[k*Sample]/1[k/second]==44.1[Sample]で一周期 double* sin_wave_buf = (double*)malloc(SUMofSample*sizeof(double));//doubleで計算してから最後に整数に丸める。 for(int i=0; i
tabをスペース置換しているので、一応ファイルで置いておく。
http://ux.getuploader.com/ADMIS/download/47/Source.cpp
その他の参考URL
C++でWaveファイルを出力する
0 件のコメント:
コメントを投稿
次の投稿
前の投稿
ホーム
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿