Quote: " play two versions of the same file and time it so that the second file starts to play just as the first one ends"
Unfortunately, iOS and Android will only stream 1 file at a time. Neither mp3 nor Ogg Vorbis were designed to provide tight looping. In any case, MP3 frames have to be a certain size, so avoiding a gap would be hard. In a nut-shell - it ain't going to happen. The stream start may take quite a long time on low-end processors because the buffers will have to be decoded.
Last time this topic came up I posted an example of using relatively small WAV chunks to provide infinite music, using a ring-buffer. Because WAVs are PCM data and held in memory in the playback routines they should start very quickly.
And alternative trick would be to keep your MP3 but have a suitable bridge passage as a WAV - trigger that when the MP3 stops, and then restart the MP3. Personally I'd make it a chord or some suitable ambient sound to avoid strict timing issues.
-- Jim - When is there going to be a release?