Sounds not playing at modified pitch on Android

I have some sounds in my game scripted to play with a Play Sound Attached blueprint node. In the node, I set a custom pitch for some sounds.

They play with the modified pitch correctly on PC. But when I deploy the game to Android (on a Google Nexus 7 to be more specific), they play at their default, unmodified, base pitch.

Is this a bug, or simply a limitation of Android? It’s something I can work around by modifying the sounds’ pitches manually in Audacity instead, but this also means I won’t be able to modify the pitch in real-time for in-game events, which is a bummer.

EDIT: @ChrisBabcock: Understood, thank you for the fast response!

Hi pvalencia,

OpenSL ES on Android does not support pitch changes. We are working on our own mixer which will allow us to get better cross-platform support in the future.

It’s been almost one year. Is there no progress at all on this? We have a game that uses pitch modulation extensively on iOS and while porting to Android we were stunned to find it doesn’t work and we need to basically re-work out entire audio setup to use separate assets for each modulation.

Hi manoelneto,

Unfortunately, for the last 6 months or so, Epic’s priority for my work shifted from new audio engine work to supporting audio features and optimization for Paragon and Fortnite. As a result, since the summer, I’ve been working on a bunch of higher-level features with the current audio engine. I’m about to move back to working on our own mixer stuff in the coming weeks as those games ramp down support requirements. So hopefully I’ll be back on track to getting a solution that has better platform parity.

As for our OpenSLES implementation, unfortunately, it’s true that there isn’t any native support for pitch shifting without a custom mixer or hand-rolled resampling.

“Modify playback pitch and rate” in table 4 shows that it is not supported for Phone profiles (which is the majority of mobile profiles).

That’s a bummer. Replacing dynamic pitch changes by separate assets is not feasible on our project, so I’ll try to hack together a software audio device using Superpowered or something similar next week (any advice would be greatly appreciated).