#include #include #include int main(int argc, char *argv[]) { long x=0; FILE *s; char *head; char *audio; char campione; head = new char[44]; audio = new char[8000]; sprintf(head, "RIFF"); //impostiamo un secondo di audio... memcpy(&head[4], "\x64\x1f\x00\x00", 4); //num campioni * num canali * bytes per campione sprintf(&head[8], "WAVE"); sprintf(&head[12], "fmt "); memcpy(&head[16], "\x10\x00\x00\x00", 4); memcpy(&head[20], "\x01\x00", 2); //audio format memcpy(&head[22], "\x01\x00", 2); //numero canali memcpy(&head[24], "\x40\x1f\x00\x00", 4); //frequenza campionamento memcpy(&head[28], "\x40\x1f\x00\x00", 4); //byterate = frequenza campionamento * numero canali * bit per campione/8 sprintf(&head[32], "\x01\x00"); //allineamento blocchi = bytes per campione * num canali sprintf(&head[34], "\x08\x00"); //bit per campione sprintf(&head[36], "data"); //impostiamo un secondo di audio... memcpy(&head[40], "\x40\x1f\x00\x00", 4); //num campioni * num canali * bytes per campione s = fopen("mio_wav.wav", "wb"); //scrivo l'header fwrite(head,1,44,s); //scrivo audio for(x=0;x<8000;x++){ campione = 128+30*cos((double)x/2.866); //onda sinusoidale a circa 440hz, la nota LA audio[x] = campione; } fwrite(audio, 1, 8000, s); fclose(s); return 1; }