Retourne les informations d'un fichier audio wav.
Source / Exemple :
;usage: $wav(fichier).channels|format|frequency|bps|bpsample|length
alias wav {
var %size = $file($1-).size
if (!%size) return 0
bread " $+ $1- $+ " 0 2048 &wav
;Un fichier WAV qui se respecte, commence toujours par RIFF
if ($bvar(&wav,1,4).text != RIFF) return
;chunck format
var %pos = $bfind(&wav,5,fmt)
if (!%pos) return
;chunck data
var %pos2 = $bfind(&wav,%pos,data)
;on 'enlève' la taille des headers
dec %size $calc(%pos2 + 8 + $bvar(&wav,%pos2,$calc(%pos2 + 4)).long)
if ($prop == channels) return $bvar(&wav,$calc(%pos + 10)).word
if ($prop == format) {
var %name = G723_ADPCM ANTEX_ADPCME G721_ADPCM APTX AUDIOFILE_AF36 AUDIOFILE_AF10 CONTROL_RES_VQLPC CONTROL_RES_CR10 CREATIVE_ADPCM DOLBY_AC2 DSPGROUP_TRUESPEECH DIGISTD DIGIFIX DIGIREAL DIGIADPCM ECHOSC1 FM_TOWNS_SND IBM_CVSD OLIGSM OLIADPCM OLICELP OLISBC OLIOPR IMA_ADPCM DVI_ADPCM UNKNOWN PCM ADPCM ALAW MULAW GSM610 MPEG NMS_VBXADPCM OKI_ADPCM SIERRA_ADPCM SONARC MEDIASPACE_ADPCM YAMAHA_ADPCM
var %num = 20 51 64 37 36 38 52 55 512 48 34 21 22 53 54 35 768 5 4096 4097 4098 4099 4100 17 0 1 2 6 7 49 80 56 16 19 33 18 32
return $gettok(%name,$findtok(%num,$bvar(&wav,$calc(%pos + 8)).word,32),32)
}
if ($prop == frequency) return $bvar(&wav,$calc(%pos + 12)).long
if ($prop == bps) return $bvar(&wav,$calc(%pos + 16)).long
if ($prop == bpsample) return $bvar(&wav,$calc(%pos + 22)).word
;taille divisée par le taux bits par seconde
if ($prop == length) return $int($calc(%size / $bvar(&wav,$calc(%pos + 16)).long))
return $1-
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.