10.07.2015 Views

[ebook]Programacion de videojuegos con SDL

[ebook]Programacion de videojuegos con SDL

[ebook]Programacion de videojuegos con SDL

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

P R O G R A M A C I Ó N D E V I D E O J U E G O S C O N S D L<strong>SDL</strong>_mixerNo voy a volver a recordarte lo tedioso que es trabajar <strong>con</strong> el subsistema <strong>de</strong> audio <strong>de</strong> <strong>SDL</strong>.<strong>SDL</strong>_mixer nos va a facilitar la tarea. Una <strong>de</strong> las mayores ventajas <strong>de</strong> <strong>SDL</strong>_mixer es que seencarga <strong>de</strong> realizar la mezcla <strong>de</strong> los canales <strong>de</strong> audio <strong>de</strong> forma automática. También pue<strong>de</strong>sespecificar tu propia función <strong>de</strong> mezcla, pero esto cae fuera <strong>de</strong>l ámbito <strong>de</strong> este libro.<strong>SDL</strong>_mixer distingue entre la reproducción <strong>de</strong> sonidos y la reproducción <strong>de</strong> la música <strong>de</strong>ljuego (para la que reserva un canal exclusivo). Los formatos válidos para la música son WAV,VOC, MOD, S3M, IT, XM, Ogg Vorbis, MP3 y MIDI.Para po<strong>de</strong>r utilizar <strong>SDL</strong>_mixer, tendrás que inicializar el subsistema <strong>de</strong> audio <strong>de</strong> <strong>SDL</strong>, es<strong>de</strong>cir, al inicializar <strong>SDL</strong> <strong>con</strong> <strong>SDL</strong>_Init, tendrás que incluir el flag <strong>SDL</strong>_INIT_AUDIO. Loprimero que hemos <strong>de</strong> hacer es inicializar la librería.int Mix_OpenAudio(int frequency, Uint16 format, int channels, int chunksize)Los párametros <strong>de</strong> esta función son similares a los <strong>de</strong> la estructura <strong>SDL</strong>_AudioSpec.El primero es freq, que especifica la frecuencia (en Hertzios) <strong>de</strong> reproducción <strong>de</strong>lsample. Valores habituales son 11025 (calidad telefónica), 22050 (calidad radiofónica) o44100 (calidad CD).El parámetro format especifica el formato <strong>de</strong>l sample (bits y tipo). Los posiblesvalores son:AUDIO_U8AUDIO_S8AUDIO_U16 o AUDIO_U16LSBAUDIO_S16 o AUDIO_S16LSBAUDIO_U16MSBAUDIO_S16MSBAUDIO_U16SYSAUDIO_S16SYSSample <strong>de</strong> 8 bits sin signoSample <strong>de</strong> 8 bits <strong>con</strong> signoSample <strong>de</strong> 16 bits sin signo enformato little-endian.Sample <strong>de</strong> 16 bits <strong>con</strong> signo enformato little-endian.Sample <strong>de</strong> 16 bits sin signo enformato big-endian.Sample <strong>de</strong> 16 bits <strong>con</strong> signo enformato big-endian.AUDIO_U16LSB oAUDIO_U16MSB <strong>de</strong>pendiendo <strong>de</strong>lpeso <strong>de</strong> tu sistema (big o littleendían)AUDIO_S16LSB oAUDIO_S16MSB <strong>de</strong>pendiendo <strong>de</strong>lpeso <strong>de</strong> tu sistema (big o littleendían)El parámetro channels indica el número <strong>de</strong> canales <strong>de</strong> audio. Pue<strong>de</strong>n ser 1 para monoy 2 para estereo. Para chunksize, el valor habitual es 4096 según la documentaciónoficial <strong>de</strong> <strong>SDL</strong>. En breve veremos lo que es un chunk.Esta función <strong>de</strong>vuelve –1 si hubo algún error, y 0 en caso <strong>de</strong> que todo vaya bien.La función complementaria a Mix_OpenAudio es la siguiente:void Mix_CloseAudio(void)que recomiendo usar <strong>con</strong> atexit(). La misión <strong>de</strong> esta función, como bién <strong>de</strong>bes saber,es finalizar la librería <strong>SDL</strong>_mixer.69

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!