mercoledì 16 marzo 2016

Analizzare un file audio WAV

Se volessimo analizzare un file audio, dovremmo prima di tutto sapere come è fatto. Uno dei formati più semplici è il wav, che non è compresso e i dati partono dopo il byte 44.
Il formato WAV, stereo, dopo il byte 44, pone due byte per il canale sinistro, due byte per il canale destro, e poi ricomincia. Per questo motivo possiamo fare un grafico leggendo questi byte.
Facciamo uno stack con:
  • un bottone
  • un campo di testo
  • un grafico di tipo linea
A questo punto nel pulsante mettiamo il seguente codice:

on mouseUp
   put URL "binfile:C:\Users\MAX\Documents\fanhit.wav" into MioAudio #percorso dell'audio da analizzare
   put 0 into cont #contatore byte
   put 0 into cont2 #contatore canale sinistro
   put 0 into cont3 #contatore punti del grafico
   repeat for each byte theByte in mioAudio
      add 1 to cont
      if cont > 44 then    #dopo il byte 44 possiamo analizzare l'audio
         add 1 to cont2 #contiamo i byte dei canali, 1 e 2 sinistro, 3 e 4 destro
         switch cont2
            case 1 #primo byte canale sinistro               
               put byteTonum(theByte) into temp
               break
            case 2 #secondo byte canale sinistro
               put temp + (256 * byteTonum(theByte)) into temp
               add 1 to cont3 #spostiamo lungo x sull'asse del grafico
               put cont3,byteTonum(theByte) & return after punti #aggiungiamo una riga di coordinate x,y per il grafico
               break
            case 4
               put 0 into cont2 #resettiamo il contatore dei canali
         end switch         
      end if      
   end repeat
   put punti into field 1 #vediamo l'elenco dei punti
   set the points of graphic "line" to punti #facciamo il grafico del canale sinistro
end mouseUp


Premendo il pulsante otterremo questo:

Ovviamente questo è solo un esempio molto semplice, ma da qui potete proseguire voi a fare od aggiungere effetti.