Visualizzare la forma d'onda di un file WAV
Da Gambas-it.org - Wikipedia.
Versione del 27 ago 2020 alle 16:39 di Vuott (Discussione | contributi)
E' possibile visualizzare, seppur in modo approssimativo, con le sole funzioni di Gambas la forma d'onda di un file audio WAV.
Nell'esempio che segue si supporrà che il file sia a due canali e a 16bit. Porremo inoltre sul Form una DrawingArea:
Private fl As File Private fileWAV As String Private ini As Integer Public Sub Form_Open() With Me .W = Desktop.W .H = Desktop.H End With With DrawingArea1 .W = Desktop.W .H = Desktop.H End With fileWAV = "/percorso/del/file.wav'" If InStr(fileWAV, "RIFF") == 0 Then Message.Error("Il file caricato non è un file 'WAV' o è inestinte !") Endif fl = Open fileWAV For Read ini = Val(InputBox("Inserire il byte iniziale:")) End Public Sub DrawingArea1_Draw() Dim d, sh As Short Dim i, ii, r, v As Integer d = InStr(File.Load(fileWAV), "data") If ini And 1 Then ini += 1 ' Ci si sposta al byte impostato dei dati audio grezzi: Seek #fl, ini + (d + 7) For i = 0 To 9999 Read #fl, sh If sh = 0 Then ii = 1 If sh < 0 Then ii = sh / 10 If sh > 0 Then ii = sh / 10 If sh > 0 Then v = ii r = 1 Else v = 1 r = ii Endif With Paint .Begin(DrawingArea1) .Brush = Paint.Color(Color.RGB(r, v, 0)) .MoveTo(i, 400) .RelLineTo(0, ii * 0.5) .Stroke .End End With Next Print "\nLetti in totale "; Seek(fl); " byte" End
Invece, per ottenere un risultato più preciso e soddisfcente, gli iscritti al forum www.gambas-it.org possono scaricare in questa discussione il sorgente di un programma molto più complesso che fa uso delle risorse esterne della libreria di sndfile e di Cairo.