Modificare il volume audio di un file WAV mediante le sole risorse di Gambas

Da Gambas-it.org - Wikipedia.

Per modificare il volume audio (Ampiezza dell'onda sonora) di un file wav, è necessario operare sui singoli campioni audio del file.
Più in particolare:

- per aumentare il volume si deve moltiplicare il singolo campione per un valore (che può essere anche in virgola mobile).
Esempio:

campione_audio * 1.5

- per diminuire il volume si deve dividere il singolo campione per un determinato valore.
Esempio:

campione_audio / 8

Di seguito mostriamo un esempio, con il quale saranno modificati i campioni audio di un file wav con risoluzione a 16-bit, ottenendo alla fine un nuovo file wav, la cui esecuzione avrà un volume audio inferiore a quello del file wav originario.

Public Sub Main()

 Dim wav As String
 Dim cc As Short[]
 Dim i As Integer
 Dim fl As File
 
 wav = "/percorso/del/file.wav"
 
 fl = Open wav For Read
 cc = New Short[Lof(fl) / SizeOf(gb.Short)]
 cc.Read(fl, 0, cc.Count)
 fl.Close

' Comincia dal primo campione dopo il blocco d'intestazione del file wav, tenendo conto che il vettore, contenente i dati del file, è di tipo "Short[]":
 For i = 44 / SizeOf(gb.Short) To cc.Max
   cc[i] = cc[i] / 16
 Next
 
 fl = Open "/tmp/finale.wav" For Create 
 cc.Write(fl, 0, cc.Count)
 fl.Close

End