diff --git a/.gitignore b/.gitignore index 88c5807..d8dd753 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ *.wav -main.exe \ No newline at end of file diff --git a/README.md b/README.md index d6e8e38..39383e9 100644 --- a/README.md +++ b/README.md @@ -9,12 +9,10 @@ wav file generating 1. Run main.exe, the wave file `sine.wav` will be generated. ##Score structure: -1. Two integers at the beginning, for wave duration and the number of scores; -1. Two integers for each score, for pitch and duration respectively. +Two integers each line for each score; one for pitch and the other one for duration. ##Example: ``` -16 14 1 1 1 1 8 1 diff --git a/main.cpp b/main.cpp index c59e697..d2a35c5 100644 --- a/main.cpp +++ b/main.cpp @@ -9,6 +9,7 @@ #include #include +#include #include "wav.h" using namespace std; @@ -31,27 +32,31 @@ int main(int argc, char * argv[]) char in1addr[]="sine.wav";//输出 char in2addr[]="sine.txt";//输入文件 - - short snum; - short tlen; - + fstream wavin2; wavin2.open(in2addr,ios::in); - wavin2>>tlen>>snum; - cout<<"time:"<>frnum[i]>>tnum[i]; - freq[i]=fr(frnum[i]); - } + vector v_tnum; + vector v_freq; + + short f_i,t_i; + while(!wavin2.eof()) + { + wavin2>>f_i>>t_i; + v_freq.push_back(fr(f_i)); + v_tnum.push_back(t_i); + } wavin2.close(); + +short snum=v_tnum.size();// number of scores +short tlen=0;// total duration of scores +for(vector::iterator j=v_tnum.begin();j!=v_tnum.end();++j) + tlen += *j; + + cout<<"time:"< #include +#include #include using namespace std; const char df_riffId[4]={'R','I','F','F'}; @@ -85,7 +86,7 @@ class wavfile void chgaddr(char addr[]); void put_data(short *ldata,short *rdata,int bufsize,int);// - void put_data(int btt,int snum,double *freq,short tnum[],int); + void put_data(int btt,int snum,vector &v_freq,vector &v_tnum,int); void get_data(short *ldata,short *rdata,int bufsize,int offs) { if(st==1) @@ -187,19 +188,19 @@ void wavfile::put_data(short *ldata,short *rdata,int bufsize,int offs=44) } } } -void wavfile::put_data(int btt,int snum,double *freq,short tnum[],int offs=44) -{ +void wavfile::put_data(int btt,int snum,vector &v_freq,vector &v_tnum,int offs=44) +{ wavin.seekp(offs,ios::beg); for(int i=0;i