Estrarre informazioni generali da un file audio aiff con le sole funzioni di Gambas
Da Gambas-it.org - Wikipedia.
Versione del 29 giu 2021 alle 16:51 di Vuott (Discussione | contributi)
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 bb As Byte[] Dim dur As Float Print "File aiff: "; Null, aiff info.nome = aiff fl = Open aiff For Read bb = New Byte[](4) Seek #fl, 4 bb.Read(fl, 0, 4) i = bb[3] i += bb[2] * 256 ' &0100 i += bb[1] * 65536 ' &010000 i += bb[0] * 16777216 ' &01000000 Print "Dimensione: "; Null, i + 8; " byte" info.dimensione = i + 8 Seek #fl, 21 bb.Read(fl, 0, 1) Print "Canali: "; Null, bb[0] info.canali = bb[0] bb.Read(fl, 0, 4) i = bb[3] i += bb[2] * 256 ' &0100 i += bb[1] * 65536 ' &010000 i += bb[0] * 16777216 ' &01000000 Print "Numero frames: "; Null, i * 4; " byte" info.frames = i * 4 bb.Read(fl, 0, 2) Print "Risoluzione: "; Null, bb[1]; " bit" info.risoluzione = bb[1] Seek #fl, 30 bb.Read(fl, 0, 2) i = bb[1] i += bb[0] * 256 ' &0100 Print "Frequenza: "; Null, i; " hertz" info.frequenza = i fl.Close dur = (info.frames / (info.canali * 2)) / info.frequenza Print "Durata: "; Null, CStr(Time(0, 0, 0, dur * 1000)) End
Riferimenti
- http://it.wikipedia.org/wiki/AIFF
- http://muratnkonar.com/aiff/index.html
- http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/AIFF/AIFF.html
- http://paulbourke.net/dataformats/audio/
- http://multimedia.cx/mirror/AudioIFF1_2_1.htm
- http://web.archive.org/web/20071219035740/http://www.cnpbagwell.com/aiff-c.txt
- http://sox.sourceforge.net/AudioFormats-11.html#ss11.1