Estrarre informazioni generali da un file audio aiff con le sole funzioni di Gambas

Da Gambas-it.org - Wikipedia.

Il formato AIFF (Audio Interchange File Format) è utilizzato per immagazzinare dati audio secondo il metodo di rappresentazione digitale Pulse-code modulation (PCM). Pertanto, essi non sono compressi.

E' possibile estrarre alcune informazioni generiche relative al file ed all'audio dal blocco iniziale, comune a tutti i file di tipo aiff, anche mediante le sole risorse di Gambas.


Mostriamo un semplice esempio:

Public Struct InfoAIFF
  nome As String
  dimensione As Integer
  canali As Byte
  frames As Integer
  risoluzione As Byte
  frequenza As Integer
End Struct


Public Sub Main()

 Dim info As New InfoAIFF
 Dim aiff As String = "/percorso/del/file.aiff"
 Dim fl As File
 Dim i As Integer
 Dim b, c As Byte
 Dim dur As Float

 Print "File aiff:      "; aiff
 info.nome = aiff

 fl = Open aiff For Read

 Seek #fl, 4
 For c = 1 To 4
   Read #fl, b
   i = Shl(i, 8) Or b
 Next
 Print "Dimensione:     "; i + 8; " byte"
 info.dimensione = i + 8
 
 Seek #fl, InStr(File.Load(aiff), "COMM") + 8
 Read #fl, b
 Print "Canali:         "; b
 info.canali = b
 
 For c = 1 To 4
   Read #fl, b
   i = Shl(i, 8) Or b
 Next
 Print "Numero frames:  "; i; " byte"
 info.frames = i

 Seek #fl, Seek(fl) + 1
 Read #fl, b
 Print "Risoluzione:    "; b; " bit"
 info.risoluzione = b

 i = 0
 Seek #fl, Seek(fl) + 2
 For c = 1 To 2
   Read #fl, b
   i = Shl(i, 8) Or b
 Next
 Print "Frequenza:      "; i; " hertz"
 info.frequenza = i

 fl.Close

 dur = info.frames / info.frequenza
 Print "Durata:         "; Time(0, 0, 0, dur * 1000)
   
End


Riferimenti