#include //standard libreria. include significa che i contenuti dei files .h vengono inclusi nel programma #include //standard input output #include //funzione del tempo di sistema #include "wavfile.h" //header contenente intestazione file wave. quando ci sono le virgolette il file di intestazione sta nella stessa cartella del sorgente #include #include #include #define tablen 4096 // simboli di costanti #define pi2 6.283185307179586476925286766559 void main () { float sr=44100.0; int i,samp; //variabili numero intero a 32 (4 byte) double x; //numero con virgola a DOppia precisione (8 Byte) short int *seno,*buffer; //puntatore a intero a 16 bit double sintable [tablen]; //alloco tablen (4096 double per 8 byte (4096* byte)) struct WavHdr header; // riserva uno spazio di memoria come è stato definito float secondi,frequenza;//con virgola semplice (4 byte) FILE *fp; //serve per aprire il file wave x = pi2/(double)tablen; printf ("frequenza: "); scanf ("%f", &frequenza); //printf ("durata: "); //scanf ("%f", &secondi); fp=fopen ("Flauto_eb.wav","rb"); //apre il file .wav if (fp==NULL) {printf ("errore in lettura"); exit(1);} fread (&header,sizeof(struct WavHdr),1,fp);// legge l'intestazione del file .wav secondi=((float)header.samp_num/(float)header.samp_rate)/2;//calcolo della durata del file Flauto_eb.wav samp = (int)((float)header.samp_rate*secondi); //numeri campioni dell'onda buffer= (short int*)calloc (samp,sizeof(short int)); fread(buffer,sizeof(short int), samp, fp);// lettura dei campioni sonori fclose(fp); seno= (short int*)calloc (samp,sizeof(short int)); //calloc permette una allocazione dinamica, //(array è di misura variabile) for (i=0; i