oh great, now i feel like an idiot!
Blitz3D Forums/Blitz3D Beginners Area/oh great, now i feel like an idiot!| 
 | ||
| I've been stumped by something that should be simple, something that was very simple on a Pygame engine (python made graphic). How would i go about looping the same sound while a key is held down? I can get it to play, but unfortunately, it bombs it about 1000 times a second, every time the loop processes. Ouch. I can also get it to loop once the key is hit, but I can't STOP looping it, once the key is no longer held down. I'm afraid to use the "freesound" command, cause loading and freeing a sound every time a key is held, could really bog up the harddrive. Any help is appreciated. Thanks :D | 
| 
 | ||
| You need to use the SoundChannel commands. | 
| 
 | ||
| 
mySoundPlaying=False
mySound=LoadSound("mySample.wav")
LoopSound mySound
While Not KeyHit(1)
	If KeyDown(57); SPACE KEY
		If mySoundPlaying=False
			myChannel=PlaySound(mySound)
			mySoundPlaying=True
		EndIf	
	Else
		StopChannel myChannel
		mySoundPlaying=False
	EndIf
Wend
FreeSound mySound
 | 
| 
 | ||
| great! at first it didn't work, so i went around tinkering with a few things, i'm not sure what i did, but it worked! thanks! | 
| 
 | ||
|  great! at first it didn't work  That's odd -- it should just need LoadSound pointing towards a legitimate wav file. No matter... glad you're sorted. | 
| 
 | ||
| Why not use ChannelPlaying() instead of using a separate var: mySound=LoadSound("mySample.wav")
LoopSound mySound
While Not KeyHit(1)
	If KeyDown(57); SPACE KEY
		If Not ChannelPlaying(myChannel)
			myChannel=PlaySound(mySound)
		EndIf	
	Else
		If ChannelPlaying(myChannel)
			StopChannel myChannel
		EndIf
	EndIf
Wend
FreeSound mySound | 
| 
 | ||
|  Why not use ChannelPlaying() instead of using a separate var  Because he might eventually want to restrict several sounds to the same channel and manage their priority manually. |