I'm trying to add some nice kalimba sound effects to my playdate app I've nearly finished making. I'm using an android app called "keylimba" to generate some mp3 SFX & then exporting them to Wav ADPCM to use them with the sample player.
Unfortunately, my lovely kalimba noises get all gross & fuzzy whenever I convert them to Wav files with ADPCM. I've tried with audacity, ffmpeg, adpcm-xq but all to no avail (I've even enlisted a friend who is a full time audio producer to try to help).
here's an example of how it sounds on my playdate (apologies for the super out of focus vid. any "quieter" sounds in the vid are from me messing with the gain to see if that had an effect on the fuzz - it didn't, it just made it quieter)
desperate for help as I love the sfx I've made, and using file player to use the mp3s instead of sampler player is much worse on performance & everything chugs!
You can rule out that this is ADPCM by trying plain WAV.
exporting as 16 bit unsigned wavs works fine
It's likely that your volumes are too high.
I tried lowering my volume levels a crazy amount (-18 DB!) and used adpcm-xq again and i can still hear the fuzz (albeit quieter now, but that's because the entire track is quieter lol)
Try to avoid starting from MP3 if you can help it.
sadly starting from something other than mp3 isn't an option as that's the only export option the app I'm using to generate the sfx gives me
there's a link to the originals in my first post - if you have a chance I'd love to see if there's a way to get them working as ADPCM wavs.
Thanks again for such a useful reply though - appreciate the various troubleshooting steps to work through
it's possible volume is peaking somewhere in the chain that's not obvious. You have channel volume, source volume, and then however the clip is processed before you get it in-game. Sounds like you've experimented with that, and had no luck.
It's possible the low-end of the audio is fuzzing up the sound. Consider a simple high-pass filter to reduce the volume of (or entirely remove) low frequencies which might not be critical to your audio.
If you've reduced, EQ'd (filtered), and are still having distortion issues please let us know. I'd be interested to hear how this resolves.
alright, I'm spending the morning playing with playdate's sound effects functions to see if it's something I can fix on the device, rather than in audacity - will report back..
As DJ_irl suggested, I'll try reducing volume on device, and some high/low pass filters
using a low pass filter with a freq of 250 eliminates all fuzz for me, but makes the sfx very very quiet.
only way i could think of combatting this was by chucking an overdrive effect on (lol), which sounded ok in the simulator, but clipped a bunch on the playdate itself
I've spent a good while trying other techniques & am just gonna stick with the excessive low pass filter for the moment. it's just about loud enough when the pd is at full volume, so it'll have to do till i can find another way round this
Not sure if it adds any new information, but if I play the mp3 itself on the device with a playdate.sound.fileplayer, it already has a light fuzz. It seems to me like the ADPCM compression just really amplifies what's already there.
ooh interesting, that's good to know. I think I've settled now with the low pass filter, it's very close to good enough that I'll keep it and just see if anyone complains!
fwiw I have one sound effect in my game that has a similar tonality and has the exact same issue at the top few volume notches of the PD. It drove me insane! I tried EQ'ing every which way and ended up just having to turn the volume way down (well below the rest of my sound effects).
It looks like there's some weird interaction between ADPCM decoding and sample rate conversion causing that buzz. I converted reset.mp3 to WAV then encoded an ADPCM version with adpcm-xq and comparing the two I can hear that buzz pretty clearly, even in the simulator. I then noticed that the file is 48 kHz, so I resampled at 44.1 kHz and ran the same test, can't hear any difference. I also recorded the simulator output there with BlackHole and subtracted it from the original file, found no audible difference.
Try resampling your files to 44,100 Hz before doing the ADPCM conversion and I bet you'll have better luck. Also, it sounds like these are all monophonic, so converting them to 1 channel audio will save half the memory. You could also try 22,050 Hz to shave another 50% off that. I didn't hear any difference when I tested that, but I probably can't hear above 10 kHz anyway.
I'll file a bug on this, but it's a pretty niche case and it has an easy workaround so it's not very high priority.
alright so i got excited & tried it out tonight. I resampled all tracks at 22050Hz, used adpcm-xq, set my channel's volume to 0.8 & used a low pass filter of 750.
Unfortunately, I'm still getting clipping when using the playdate speakers
my prev. "solution" of a super high low pass filter doesn't really work in real world scenarios - it's ok in my super quiet study but taking it into real life today proved it still wasn't loud enough