![]() |
|
elaborazione di un segnale
Questa volta proviamo a leggere un file contente un suono e ad apportavi una modifica:
ci limitiamo a prendere un suono stereo e a farlo diventare mono.
Abbiamo un esempio in C, mono.c e il suo analogo
in Fortran mono.f90
Applicando questo programma all'output del precedente programma fase1.f90, si vede
che quando i due segnali a destra e a sinistra sono esattamente in opposizione di fase
si cancellano.
Si noti che uno degli svantaggi di avere files senza header è quello di non
sapere a priori quanti sono i record presenti.
In questo caso è stato sufficiente leggere un record e subito dopo scriverlo.
In altri casi può essere necessario leggere una prima volta tutto il file solo
per contare i record; oppure si può guardare la lunghezza del file e dividere
per 4.
Lo stesso esempio con octave:
octave:1> infile=fopen("stereo.cdr","r");
octave:2 a=fread(infile,[2,Inf],"int16","ieee-be");
octave:4> n=size(a)(2)
n = 155232
octave:5> s=(a(1,:)+a(2,:))/2;
octave:7> outfile=fopen("mono.cdr","w");
octave:8> for i=1:n
> fwrite(outfile,int16(s(i)),"int16","ieee-be");
> fwrite(outfile,int16(s(i)),"int16","ieee-be");
> end
Abbiamo qui un filmato (16MB) dell'intera operazione.
![]() |
|