#include #include #include #include #include "wave.h" /* >createSweepWave wave.wav -s8000 -b8 -t5 s:sampling frequency[Hz] b:bit size[bit] t:time[sec] */ int main(int argc,char *argv[]) { WaveConstant_t mywc={8000,8,40000,1}; /******************************************* サンプリング周波数 8000 [Hz] 1サンプルを構成するビット数 8 [bit] ファイル中のサンプル数 40000 [個] ファイル中のチャンネル数 1 [channel] ********************************************/ char fname[256]="testwave.wav"; int TimeInSec=5; unsigned long int i; short int data; double Frequency,FrequencyFactor; if (argc==1) { printf("usage:\n"); printf(" >createSweepWave -sSamplingFrequency -bBitsPerSample -tDuration filename\n"); printf("example:\n"); printf(" >createSweepWave -s8000 -b8 -t2 toneA.wav\n"); exit(1); } while(--argc) { if (strstr(argv[argc],"-s")) sscanf(&argv[argc][2],"%d",&mywc.SamplingFrequency); else if (strstr(argv[argc],"-b")) sscanf(&argv[argc][2],"%d",&mywc.BitsPerSample); else if (strstr(argv[argc],"-t")) sscanf(&argv[argc][2],"%d",&TimeInSec); else strcpy(fname,argv[argc]); } mywc.NumberOfSamples=mywc.SamplingFrequency*TimeInSec; FrequencyFactor=1./mywc.NumberOfSamples*log(0.1*mywc.SamplingFrequency/50.); /*コマンドラインで与えられたファイル名の出力用waveファイル*/ /*をオープンしてもらい,waveファイル用定数mywcからwaveファイルの情報ヘッ*/ /*ダー部分に書き出してもらう。*/ /*成功したら1,失敗したら0が戻ってくる。*/ /*なおFILE *fpはwave.c内で確保されており,呼び出し側はfpについて考える*/ /*必要はない。*/ if (openOutputWaveFile(fname,&mywc)==0) { printf("can't open the file to write\n"); exit(1); } for (i=0;i