Differenze tra le versioni di "Visualizzare la forma d'onda di un file WAV"

Da Gambas-it.org - Wikipedia.
Riga 71: Riga 71:
 
    
 
    
 
  '''End'''
 
  '''End'''
 +
 +
 +
 +
 +
Invece, per ottenere un risultato più preciso e soddisfcente, gli <SPAN Stle= "text-decoration:underline">iscritti</span> al forum ''www.gambas-it.org'' possono scaricare [http://www.gambas-it.org/smf/index.php?topic=3294.msg34448#new in questa discussione] il sorgente di un programma molto più complesso che fa uso delle risorse esterne della libreria di ''sndfile'' e di ''Cairo''.

Versione delle 16:30, 16 nov 2014

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"

  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)
      .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.