#include <stdio.h>
#include <stdlib.h>
#include <math.h>
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;
}