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 |