Loop sound while keydown

BlitzMax Forums/BlitzMax Beginners Area/Loop sound while keydown

I'm trying to play a burning sound while holding the acceleration key button...

I'v tried loading a sound into loop mode, then trying to play the sound while the key is pressed, then not when its not held down.. but failed so far..

Any ideas?

if keydown(?) 
 if not channelplaying(?) then playsound(?,?)
else
 if channelPlaying(?)then stopchannel(?)
endif


woops, no wonder i'm not getting a responce.... thought i already replyed

I tried this before, and it didnt work, i get the error: Unable to convert something.audio.TSound to TChannel

heres my code at the moment:
		If KeyDown(KEY_UP)
		
			'Afterburner effect
			Local par1:TPartical = New TPartical
				par1.Create(x-(Cos(angle))*10,y-Rand(-2,8)-(Sin(angle))*10,20)
			Local par2:TPartical = New TPartical
				par2.Create(x-(Cos(angle))*10,y-Rand(-2,8)-(Sin(angle))*10,20)
			Local par3:TPartical = New TPartical
				par3.Create(x-(Cos(angle))*10,y-Rand(-2,8)-(Sin(angle))*10,20)
			Local par4:TPartical = New TPartical
				par4.Create(x-(Cos(angle))*10,y-Rand(-2,8)-(Sin(angle))*10,20)
			Local par5:TPartical = New TPartical
				par5.Create(x-(Cos(angle))*10,y-Rand(-2,8)-(Sin(angle))*10,20)
				
			vx:+Cos(angle)*accel
			vy:+Sin(angle)*accel
 
 			If Not ChannelPlaying(afterburn) PlaySound(afterburn)

		Else
			If ChannelPlaying(afterburn) StopChannel(afterburn)
		EndIf


and i'm loading it like this:
Global afterburn:TSound = LoadSound("Media\afterburn.wav",SOUND_LOOP)


thanks for the help :)

You seem to be checking whether a channel is playing but using a TSound to check it.
e.g. afterburn is a TSound and not a TChannel.

how do i make it a channel? i tried changing:

Global afterburn:TSound = LoadSound("Media\afterburn.wav",SOUND_LOOP)

to

Global afterburn:TChannel = LoadSound("Media\afterburn.wav",SOUND_LOOP)


still, an error.. I'm stumped..

Slightly edited from the doc...
' channelplaying.bmx

sound:tsound = LoadSound ("shoot.wav")

Input "Hit return to begin channelplaying test, use ctrl-C to exit"

channel:tchannel=playsound (sound)
while true
	print "ChannelPlaying(channel)="+ChannelPlaying(channel)
wend

you can also use the allocchannel cmd

it should be something like this:
		Global aftchannel:TChannel = AllocChannel()

and this:
		.
		.
		.
		.
		If KeyDown(KEY_UP)
		
			'Afterburner effect
			Local par1:TPartical = New TPartical
				par1.Create(x-(Cos(angle))*10,y-Rand(-2,8)-(Sin(angle))*10,20)
			Local par2:TPartical = New TPartical
				par2.Create(x-(Cos(angle))*10,y-Rand(-2,8)-(Sin(angle))*10,20)
			Local par3:TPartical = New TPartical
				par3.Create(x-(Cos(angle))*10,y-Rand(-2,8)-(Sin(angle))*10,20)
			Local par4:TPartical = New TPartical
				par4.Create(x-(Cos(angle))*10,y-Rand(-2,8)-(Sin(angle))*10,20)
			Local par5:TPartical = New TPartical
				par5.Create(x-(Cos(angle))*10,y-Rand(-2,8)-(Sin(angle))*10,20)
				
			vx:+Cos(angle)*accel
			vy:+Sin(angle)*accel
 
 			If Not ChannelPlaying(aftchannel) PlaySound(afterburn,aftchannel)

		Else
			If ChannelPlaying(aftchannel) StopChannel(aftchannel)
		EndIf


seems to work, thanks