| sound - handle of a sound loaded with LoadSound |
|
Marks a loaded sound as looping, so the next time it is played it repeats forever. It does not make any noise by itself. This is a Sound command, which means it sets a property on the loaded sound rather than on a playback: call it once after LoadSound, then PlaySound to actually start it. Every play of that sound from then on loops, so mark the sounds that should loop and leave the one-shots alone. It is what you want for background music kept in memory, engine hum, rain, a siren, a machine gun's rattle - anything that should run until you decide otherwise. Keep the channel handle PlaySound gives you, because a looping sound will not stop on its own: StopChannel is the only way to end it, and PauseChannel the way to hold it. The loop is seamless - the sample restarts the instant it ends - so any silence at the start or end of the file becomes an audible gap on every repeat. Trim your loops in an audio editor, not in code. There is no matching command to switch looping back off. If you need the same audio both ways, load it twice and mark only one of the handles. See also: PlaySound, LoadSound, StopChannel, ChannelPlaying, PlayMusic. |
; LoopSound Example
; -----------------
Graphics 640,480,0,2
SetBuffer BackBuffer()
; Load a short tone to use as an engine hum
snd_hum=LoadSound("media/beep.wav")
; LoopSound only MARKS the sound to repeat endlessly - it does not
; start playback. PlaySound is still needed to actually hear it.
LoopSound snd_hum
channel=0
While Not KeyDown(1)
; Space toggles the looping hum on and off
If KeyHit(57) Then
If channel=0 Then
channel=PlaySound(snd_hum)
Else
StopChannel channel
channel=0
End If
End If
Cls
; A pulsing speaker circle while the loop is running
If channel<>0 Then
r=40+Sin(MilliSecs()/2.0)*10
Color 80,255,80
Oval 320-r,240-r,r*2,r*2,False
Color 255,255,255
Text 320,300,"looping endlessly...",True
Else
Color 70,70,70
Oval 280,200,80,80,False
Color 160,160,160
Text 320,300,"silent",True
End If
Color 255,255,255
Text 0,0,"Space: start/stop the loop Esc: exit"
Text 0,20,"LoopSound snd_hum (a short beep repeated seamlessly)"
Flip
Wend
End