Older Version
Newer Version
newcat1
Jan 14, 2014
Get the length of a wave file
This is an alternative way to the way described on the original site. Thanks to Alyce who shared the ReverseString$() function.
NOTICE: It seems like sometimes (about 5% or less) the length is bugged (much smaller than it should be. I didn't notice it was bigger than the original though). I am trying to fix this ASAP, the updated code will be on this site.
This is an alternative way to the way described on the original site. Thanks to Alyce who shared the ReverseString$() function.
NOTICE: It seems like sometimes (about 5% or less) the length is bugged (much smaller than it should be. I didn't notice it was bigger than the original though). I am trying to fix this ASAP, the updated code will be on this site.
function getWavLength(file$)
open file$ for binary as #wav
content$ = input$(#wav,32)
close #wav
size$ = mid$(content$, 5, 4) 'Get the 4 bytes which contain the size of the file
size$ = ReverseString$(size$) 'Reverse those bytes because they are Little-Endian
size = hexdec(tohex$(asc(size$)) + tohex$(asc(right$(size$, 3))) + tohex$(asc(right$(size$, 2))) + tohex$(asc(right$(size$, 1))))
size = size - 36 'Subtract 36 bytes because the actual sound data starts at byte 44, but the size in the header has already 8 bytes subtraced
bitrate$ = mid$(content$, 29, 4)
bitrate$ = ReverseString$(bitrate$)
bitrate = hexdec(tohex$(asc(bitrate$)) + tohex$(asc(right$(bitrate$, 3))) + tohex$(asc(right$(bitrate$, 2))) + tohex$(asc(right$(bitrate$, 1))))
getWavLength = int(size / bitrate)
end function
function ReverseString$(string$)
for i = len(string$) to 1 step -1
ReverseString$=ReverseString$+mid$(string$,i,1)
next i
end function
function tohex$(val)
tohex$ = dechex$(val)
if tohex$ = "0" then
tohex$ = "00"
end if
end function