void insert_rest(short waveform[], int notelength, FILE *f) { int i ; for ( i = 0 ; i < notelength ; i++) { waveform[i] = 0 ; } wavfile_write(f, waveform, notelength) ; }
void create_note(int volume, int length, double frequency, short waveform[NUM_SAMPLES], FILE *f) { int i; for(i=0;i<length;i++) { double t = (double) i / WAVFILE_SAMPLES_PER_SECOND; waveform[i] = volume*sin(frequency*t*2*M_PI); } wavfile_write(f,waveform,length); }
void update_waveform(short waveform[], int maxvolume, double frequency, int notelength, FILE *f) { int i ; int volume ; float t ; for ( i = 0 ; i < notelength ; i++) { t = (float) i / WAVFILE_SAMPLES_PER_SECOND ; volume = maxvolume ; //volume = adjust_volume(maxvolume, t, notelength) ; //not used in the final program because it will not produce sound waveform[i] = triangle_waveform(frequency, .4*volume, t) + triangle_waveform(2*frequency, .2*volume, t) + triangle_waveform(4*frequency, .6*volume, t) ; } wavfile_write(f, waveform, notelength) ; }
int main() { short waveform[NUM_SAMPLES]; double frequency = 440.0; int volume = 32000; FILE * f; int length = NUM_SAMPLES; int i; f = wavfile_open("sound.wav"); if(!f) { printf("couldn't open sound.wav for writing: %s",strerror(errno)); return 1; } for(i=0;i<length;i = i+4) { double t = (double) i / WAVFILE_SAMPLES_PER_SECOND; waveform[i] = volume*sin(frequency*t*2*M_PI); } for(i=1;i<length;i = i + 4) { double t = (double) i / WAVFILE_SAMPLES_PER_SECOND; waveform[i] = (volume*(.3333))*sin(frequency*(.3333)*t*2*M_PI); } for(i=2;i<length;i = i + 4) { double t = (double) i / WAVFILE_SAMPLES_PER_SECOND; waveform[i] = (volume*(.5))*sin(frequency*(.5)*t*2*M_PI); } for(i=3;i<length;i = i+4) { double t = (double) i / WAVFILE_SAMPLES_PER_SECOND; waveform[i] = volume*.25*sin(frequency*.25*t*2*M_PI); } wavfile_write(f,waveform,length); wavfile_close(f); return 0; }