Eliminar o atraso entre repetir músicas XNA?

8

Estou fazendo um jogo com o XNA e tentando fazer com que algumas músicas de fundo fiquem em loop corretamente. Como o arquivo é um MP3 com cerca de 30 segundos de duração, instalei-o como a Song. Quero que ele faça um loop perfeitamente, mas mesmo quando defino a MediaPlayer.IsRepeatingpropriedade true, sempre há um atraso de cerca de um segundo antes que a música comece novamente. Existe alguma maneira de eliminar esse atraso, de modo que a música faça um loop instantaneamente, para que seja reproduzida com mais fluência?

Stephane Beniak
fonte

Respostas:

7

O MediaPlayer no XNA sempre teve um pequeno atraso ao repetir músicas e não vi nenhuma maneira de resolver o problema. Qual é a sua plataforma de destino? Você pode considerar usar o XACT se estiver direcionando o Xbox ou o Windows, pois ele não tem os mesmos problemas que a API do MediaPlayer.

Eu recomendaria não usar o SoundEffect (como recomendado pela Sprunth) para tocar música de fundo se você for lançar no mercado XBLIG ou WP7, pois isso não combina bem com o media player embutido e leva a problemas de certificação / revisão por pares . Por exemplo, se você tocar sua música de fundo como um SoundEffect no Xbox e um jogador quiser usar sua própria trilha sonora personalizada, sua música continuará sendo reproduzida, enquanto que se você tivesse usado uma música como recomendada, ela pararia "magicamente". Coisas ruins semelhantes acontecem no telefone.

Jogos de dadoo
fonte
4
Obrigado por esclarecer por que Songé a escolha correta aqui.
Stephane Beniak
+1 para XACT. Você deve importar suas músicas e efeitos sonoros como arquivos WAV descompactados e permitir que o XACT os comprima e os empacote em bancos de ondas.
michael.bartnett
4

Eu fiz um aplicativo xna rápido com um mp3 de ~ 15 segundos e posso confirmar que o MediaPlayer tem esse problema ao fazer um loop. Tentei novamente com o SoundEffect (e SoundEffectInstance para loop no XNA4) e o problema desapareceu. Então eu acho que você poderia mudar para o SoundEffect?

Algumas pesquisas / fontes: Música em loop usando o problema do MediaPlayer Maneiras de corrigir a diferença de atraso ao reproduzir MP3s no XNA 3.0

Sprunth
fonte