Why is audio pitch clamped between 0.4 and 2.0?

I do not know the reason the pitch is clamped in the ranges that it is. I suspect it was a decision made back in UDK days and likely before the audio engine used XAudio2. There’s nothing preventing you from changing the clamped values to something else. I can add it to my backlog of features to add support for setting global parameters like that in the audio project settings. Along with max voice counts, we can add min and max values to volume scaling, global headroom, etc.

Note that for game audio there are some potential downsides to unlimited (or extreme) pitch scaling. Destructive audio compression (e.g. ogg-vorbis) can sound very bad with extreme pitch shifting as frequencies that are normally not easily heard can be discarded, then with pitching, those artifacts can become audible. Also, for sounds which are real-time decompressed, extreme pitching up can cause buffer underruns due the fact that queued buffers are skipped so fast that it requires newly decoded buffers faster than the async decoder can feed to the voice.