|
|
(15 versioni intermedie di uno stesso utente non sono mostrate) |
Riga 1: |
Riga 1: |
− | 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.
| + | #REDIRECT [[Creare il blocco d'intestazione di un file WAV avendo dati audio grezzi]] |
− | | |
− | 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.
| |
− | <BR>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 con le seguenti caratteristiche: 44100 hertz, 16 bit, 2 canali, e che si dovrà creare 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
| |
− |
| |
− | <FONT color=gray>' ''Imposta il valore dimensionale di 4 byte a partire dal 5° byte del futuro file:'' </font>
| |
− | 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)
| |
− |
| |
− | <FONT color=gray>' ''Imposta il valore dimensionale di 4 byte a partire dal 41° byte del futuro file''
| |
− | ' ''e relativo alla dimensione dei dati audio grezzi:'' </font>
| |
− | 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))
| |
− |
| |
− | <FONT color=gray>' ''Crea il nuovo file wav:'' </font>
| |
− | bb.Write(fl, 0, bb.Count)
| |
− |
| |
− | fl.Close
| |
− |
| |
− | '''End'''
| |