Hi. Quick one: I use this sound when a player loses a level, but its a long sound and the app pauses to load the sound the first time it’s played:
Any way I can preload/precache this?
I think you can say
var = sound() but I’m not sure. I’m not around my iPad. If not, you can try putting it in a function that returns it. Now I don’t know. Sorry. I don’t mean to confuse you of this doesn’t work.
My experience is that playing a long sound doesn’t tend to slow performance – but trying to play an overlapping sound does. That is, if you have a sound underway, and make another call to sound(), things can get choppy, particularly if multiple calls stack up. If you want a longer sound to play out as previewed and not cause delay, you may need a timer or flag to ensure it doesn’t get called more than once.
Sorry if this doesn’t resolve your issue. Since sounds are synthesized and not loaded from file, I haven’t had an issue with first-play time.
I do notice about a half-second delay if I play the sound above, but it doesn’t seem to play any faster if I delay a few seconds and play it again.
@peteroyle version 1.3.1 will offer a lot of control over sound caching, however for now I believe you can do the following to pre-cache a sound:
-- Play sound once, at the start, with volume 0
sound(DATA, "ZgNACABFQEBAK01AOAl7PgAAgD8AAIA/fwBAf0BAQEBAXmkO", 0.0)
-- Subsequent plays should be cached
If your sounds are long, you may need to increase the soundBufferSize(), otherwise it will delay during the sound generation.
Thanks for the suggestions everyone. I used Simeon’s trick and it’s working fine now.