Hay algún motivo que pueda explicar que no consiga reproducir sonidos en formato *.ogg con load_wav y play_wav en Android pero que sí que funcione en Windows y Linux? (quitando los típicos problemas de que la ruta esté bien especificada, etc.)?
Prueba los ejemplos del pixtudio pack.. incluyen juegos con medios OGG
pixtudio
https://sourceforge.net/projects/coldev/files/bennugd2_Pixtudio/v1.3/
ejemplos
https://sourceforge.net/projects/coldev/files/bennugd2_Pixtudio/v1.2/examples%201.2.zip/download
Es gracioso, porque load_wav no debería cargar OGG xD
Abre una issue para que añada soporte para cargar OGG como sonido en Android :)
Voy a ver si encuentro algo en el pixtudio pack, por lo que dice panreyes es normal que no me funcione...
Ahí dejo el issue:
https://bitbucket.org/josebagar/pixtudio/issues/56/load_wav-play_wav-ogg-file-support-in (https://bitbucket.org/josebagar/pixtudio/issues/56/load_wav-play_wav-ogg-file-support-in)
Gracias en cualquier caso por vuestras respuestas
Así buscando entre los ejemplos no encontré nada que parezca cargar un archivo ogg con load_wav...
./examples/02_advance/borderpolice/borderpolice.prg: wavs[i]=load_wav("wav/"+i+".wav");
./examples/02_advance/common-src/net_play.pr-: unload_wav(wavs_ids[j]);
./examples/02_advance/common-src/net_play.pr-: wavs_ids[j]=load_wav(resource_path);
./examples/02_advance/common-src/net_play.pr-: unload_wav(wavs_ids[j]);
./examples/02_advance/common-src/net_play.pr-:Function net_load_wav(string mi_wav);
./examples/02_advance/common-src/net_play.pr-: i=load_wav(mi_wav);
./examples/02_advance/common-src/net_play.pr-:Function net_unload_wav(int id_wav);
./examples/02_advance/common-src/net_play.pr-: /*unload_wav(id_wav);
./examples/02_advance/common-src/net_play.pr-: unload_wav(wavs_ids[id_wav]);
./examples/02_advance/pixfrogger2/client.prg: wavs[i]=load_wav("wav/"+i+".wav");
./examples/02_advance/pixfrogger2/pixfrogger2.prg: wavs[i]=load_wav("wav/"+i+".wav");
./examples/02_advance/bankpanic/bankpanic.prg: sonidos[1]=load_wav("wav/1.wav");
./examples/02_advance/bankpanic/bankpanic.prg: sonidos[2]=load_wav("wav/2.wav");
./examples/02_advance/bankpanic/bankpanic.prg: sonidos[3]=load_wav("wav/3.wav");
./examples/02_advance/bankpanic/bankpanic.prg: sonidos[4]=load_wav("wav/4.wav");
./examples/02_advance/inforgames/inforgames.prg: wavs[i]=load_wav("wav/"+i+".wav");
./examples/02_advance/er3/er3.prg: sonidos[i]=load_wav("wav/"+i+".wav");
./examples/02_advance/lionlive/lionlive.prg: punch = net_load_wav ("wav/punch.wav");
./examples/02_advance/lionlive/lionlive.prg: wintro = net_load_wav ("wav/intro.wav");
./examples/02_advance/lionlive/lionlive.prg: wnoo = net_load_wav ("wav/noo.wav");
./examples/02_advance/lionlive/lionlive.prg: splash = net_load_wav ("wav/splash.wav");
./examples/02_advance/lionlive/lionlive.prg: just = net_load_wav ("wav/just.wav");
./examples/02_advance/lionlive/lionlive.prg: nham = net_load_wav ("wav/nham.wav");
./examples/02_advance/lionlive/lionlive.prg: groar = net_load_wav ("wav/groar.wav");
./examples/02_advance/lionlive/lionlive.prg: hoo = net_load_wav ("wav/hoo.wav");
./examples/02_advance/SpiderPix/SpideyPix.prg:twiph=load_wav(".\Data\twiph.wav");
./examples/02_advance/SpiderPix/SpideyPix.prg:twiphb=load_wav(".\Data\twiphb.wav");
./examples/02_advance/pixbros/pixbros.prg: wavs[i]=load_wav("wav/"+i+".wav");
./examples/02_advance/garnatron/garnatron.prg: s_disparo=load_wav("wav/laser.wav"); frame;
./examples/02_advance/garnatron/garnatron.prg: s_laser1=load_wav("wav/laser9.wav"); frame;
./examples/02_advance/garnatron/garnatron.prg: s_laser2=load_wav("wav/onda01.wav"); frame;
./examples/02_advance/garnatron/garnatron.prg: s_laser3=load_wav("wav/laser6.wav"); frame;
./examples/02_advance/garnatron/garnatron.prg: s_misil=load_wav("wav/bomba5.wav"); frame;
./examples/02_advance/garnatron/garnatron.prg: s_explosion=load_wav("wav/explos.wav"); frame;
./examples/02_advance/garnatron/garnatron.prg: s_explosion_grande=load_wav("wav/explosg.wav"); frame;
./examples/02_advance/pixpang2.1/pixpang/pixpang.prg: from flipando=0 to 16; s[flipando]=load_wav("wav/"+flipando+".wav"); end
./examples/02_advance/Mars2_source/logos.prg: //sound1=load_wav("./snd/cut.wav");
./examples/02_advance/Mars2_source/logos.prg: unload_wav(sound1);
./examples/02_advance/Mars2_source/logos.prg: sound1=load_wav("./snd/pixel.wav");
./examples/02_advance/Mars2_source/logos.prg: unload_wav(sound1);
./examples/02_advance/Mars2_source/scripts.prg: snd_autopsia=load_wav("./snd/autopsia.wav");
./examples/02_advance/Mars2_source/scripts.prg: sound1=load_wav("./snd/explosion_rocas.wav");
./examples/02_advance/Mars2_source/Mars2.prg: snd_notifica=load_wav("./snd/notifica.wav");
./examples/02_advance/Mars2_source/Mars2.prg: snd_puerta=load_wav("./snd/spacedoor.wav");
./examples/02_advance/Mars2_source/Mars2.prg: snd_compuerta=load_wav("./snd/mechanical.wav");
./examples/02_advance/Mars2_source/Mars2.prg: snd_key=load_wav("./snd/key.wav");
./examples/02_advance/Mars2_source/Mars2.prg: snd_pasos=load_wav("./snd/pasos.wav");
./examples/02_advance/Mars2_source/Mars2.prg: snd_martillo=load_wav("./snd/martillo.wav");
lo que veo bien es que hoy a panreyes todo le resulta gracioso! estas teniendo un buen dia parece! :D :)
Es importante ser feliz!
Qué formatos soporta load_wav?
mod_sound (tanto en BennuGD como en PixTudio) usa Mix_LoadWAV_RW (https://www.libsdl.org/projects/SDL_mixer/docs/SDL_mixer.html#SEC20). Su documentación dice:
QuoteLoad src for use as a sample. This can load WAVE, AIFF, RIFF, OGG, and VOC formats
Tengo que ver por qué funciona distinto en "sobremesa" que en Android, pero será por la forma en que está compilado.
Gracias,
Mi solución por ahora (por si a alguien le sirve) ha sido definir unas macros:
#ifndef OGG_AS_WAV
#define sound_load(X) load_wav(X + ".ogg")
#else
#define sound_load(X) load_wav(X + ".wav")
#endif
Y hacer unas modificationes a mi makefile (el cual es bastante rudimentario ya que no soy precisamente un experto).
android-dcb: $(SrcFiles)
$(CC) -D OGG_AS_WAV=1 -o $(Out)android/main.dcb $(Main)
ogg2wav: ./wav/*.ogg
-mkdir $(Out)android
-mkdir $(Out)android/wav
for i in ./wav/*.ogg; do \
if [ -e "$$i" ]; then \
file=`basename "$$i" ".ogg"`; \
ffmpeg -y -i "$$i" "$(Out)android/wav/$$file.wav"; \
fi \
done;
Me alegro en cualquier caso de haber encontrado un uso a la opción -D! (gracias Splinter por haberla introducido!)
Yo recuerdo eso, que load_wav leía los mismos formatos que load_song. Quizás la diferencia es que load_song permitía hacer streaming y por eso sólo se permitía tener una canción en reproducción cada vez... y porque también admitía formatos tipo S3M, XM, MOD e IT que necesitaban varios canales de reproducción, en lugar de sólo uno como los play_wav.
O lo mismo me lo estoy inventando, vete tu a saber.
¿Por qué no ha empezado ya la conferencia de M$ en el E3?