Differenze tra le versioni di "Creare il blocco d'intestazione di un file WAV"
Riga 10: | Riga 10: | ||
Nell'esempio che segue, supporremo che i dati audio grezzi, passati alla ''Procedura'' mediante una variabile di tipo ''Stringa'' come argomento, siano stati acquisiti in precedenza da un file avente le seguenti caratteristiche: 44100 hertz, 16 bit, 2 canali. Si creerà un completo nuovo file WAV unendo il corretto blocco d'intestazione (''header'') a tali dati grezzi. | Nell'esempio che segue, supporremo che i dati audio grezzi, passati alla ''Procedura'' mediante una variabile di tipo ''Stringa'' come argomento, siano stati acquisiti in precedenza da un file avente le seguenti caratteristiche: 44100 hertz, 16 bit, 2 canali. Si creerà un completo nuovo file WAV unendo il corretto blocco d'intestazione (''header'') a tali dati grezzi. | ||
− | '''Private''' Procedure CreaHeaderWav(dati_grezzi As String) | + | '''Private''' Procedure CreaHeaderWav(<FONT Color=#B22222>dati_grezzi</font> As String) |
Dim fl As File | Dim fl As File | ||
Riga 26: | Riga 26: | ||
bb = Byte[].FromString(ini) | bb = Byte[].FromString(ini) | ||
− | i = Len(dati_grezzi) | + | i = Len(<FONT Color=#B22222>dati_grezzi</font>) |
i2 = i + 36 | i2 = i + 36 | ||
Riga 54: | Riga 54: | ||
'''End''' | '''End''' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | =Riferimenti= | ||
+ | * http://www.topherlee.com/software/pcm-tut-wavformat.html | ||
+ | * http://unusedino.de/ec64/technical/formats/wav.html |
Versione delle 16:12, 19 mag 2015
Il blocco di intestazione (header) di un file WAV è posto all'inizio del file, solitamente formato da 44 byte, e contiene le informazioni generali sui dati audio e sul file medesimo.
Per poter creare un blocco d'inteztazione di un file wav, è necessario tenere conto dei suoi elementi fondamentali:
- quantità dei dati audio grezzi (in byte);
- frequenza di campionamento (in hertz);
- risoluzione di campionamento (in bit);
- numero dei canali di uscita.
Da questi elementi principali è possibile individuare e quindi porre nel blocco di intestazione del file wav anche gli altri valori che lo compongono.
Nell'esempio che segue, supporremo che i dati audio grezzi, passati alla Procedura mediante una variabile di tipo Stringa come argomento, siano stati acquisiti in precedenza da un file avente le seguenti caratteristiche: 44100 hertz, 16 bit, 2 canali. Si creerà un completo nuovo file WAV unendo il corretto blocco d'intestazione (header) a tali dati grezzi.
Private Procedure CreaHeaderWav(dati_grezzi As String) Dim fl As File Dim ini As String Dim bh As Byte[] = [&57, &41, &56, &45, &66, &6D, &74, &20, &10, &00, &00, &00, &01, &00, &02, &00, &44, &AC, &00, &00, &10, &B1, &02, &00, &04, &00, &10, &00, &64, &61, &74, &61] Dim bb As New Byte[] Dim i, i2 As Integer fl = Open "/percorso/di/destinazione/del/nuovo/file.wav" For Create ini = "RIFF" bb = Byte[].FromString(ini) i = Len(dati_grezzi) i2 = i + 36 ' Imposta il valore dimensionale di 4 byte a partire dal 5° byte del futuro file: bb.Add(i2 And &FF) bb.Add(Shr(i2 And &FF00&, 8)) bb.Add(Shr(i2 And &FF0000&, 16)) bb.Add(Shr(i2 And &FF000000&, 24)) bb = bb.Insert(bh) ' Imposta il valore dimensionale di 4 byte a partire dal 41° byte del futuro file ' e relativo alla dimensione dei dati audio grezzi: bb.Add(i And &FF) bb.Add(Shr(i And &FF00&, 8)) bb.Add(Shr(i And &FF0000&, 16)) bb.Add(Shr(i And &FF000000&, 24)) bb = bb.Insert(Byte[].FromString(dati_grezzi)) ' Crea il nuovo file wav: bb.Write(fl, 0, bb.Count) fl.Close End