Determine total sound playing length (ms)
BlitzMax Forums/BlitzMax Beginners Area/Determine total sound playing length (ms)
| ||
Hi ! you use a sound with loadsound, now... (an .ogg file) Is there a command to dertermine the total sound length (in milliseconds) ? Many Thanks |
| ||
after a bit of investimigation:SuperStrict Local sample:TAudioSample = LoadAudioSample("battle.ogg") Local spm:Float = sample.hertz * 60 Local timeSeconds:Float = (sample.length / spm) * 60 Print timeSeconds |
| ||
Does that still work with variable bitrate OGG files? |
| ||
*EDIT* I just tested it with OGGs of different bitrates and the results are consistent, I can only suggest trying it. |
| ||
I just dug out a few VBR OGG files and tested it too - works fine. |
| ||
cool :) *EDIT* just for the hell of it, I converted it to a function: SuperStrict Local sample:TAudioSample = LoadAudioSample("battle.ogg") Local length:Float = getSampleLength(sample) Print "Length in seconds: " + length Print "Length: " + Int(Floor(length/60))+"m "+Int(length Mod 60)+"s" Function getSampleLength:Float(sample:TAudioSample) Return Float( (sample.length / Float( (sample.hertz * 60) ) ) * 60) End Function |
| ||
many thanks. but what's the difference between s1 : TSound = loadsound and s2:TAudioSample = LoadAudioSample ? Later in your code could you play s2 with playsound ? Length don't exist with an TSound object ? |
| ||
SuperStrict Local sample:TAudioSample = LoadAudioSample("battle.ogg") Local length:Float = getSampleLength(sample) Print "Length in seconds: " + length Print "Length: " + Int(Floor(length/60))+"m "+Int(length Mod 60)+"s" Local sound:TSound = LoadSound(sample) Local channel:TChannel = PlaySound(sound) While channel.playing() Wend Function getSampleLength:Float(sample:TAudioSample) Return Float( (sample.length / Float( (sample.hertz * 60) ) ) * 60) End Function |
| ||
I am not a math expert but shouldn't the equation be Length/hertz? length ------- * 60 = Length/hertz 60*hertz |
| ||
I am not a math expert but shouldn't the equation be Length/hertz? .....isn't that exactly what Perturbatio said? |
| ||
No. There is no need to multiply it by 60 at all. |
| ||
No. There is no need to multiply it by 60 at all. You're right of course, but in my defence, I wrote that code in a hurry and it changed several times before I got it right. |