Página 1 de 1
 
 

Mensaje [Homebrew] [Sound] Cargando Y Ejecutando Un Sonido Wav

#1  FacundoARG 13 Septiembre 2009, 06:40 AM

Bueno, hize un pequeño espacio para subir otro tutorial más .

Estoy medio complicado con el tiempo ultimamente, pero ya voy a tener un poco más .
Bien hoy toca el sonido. Sin sonido los juegos son muy aburridos, asi que les voy a mostrar como cargar un sonido en formato nativo PCM directamente a la memoria de sonido. Tambien se puede cargar en la RAM del sistema, como lo hize con los sprites
pero esa es otra historia.

Bien, como siempre vamos a comenzar con el ejemplo S_2_2. Si no sabes como configurar el entorno, aca lo tenes.

Extraje con el emulador Kega, un sonido de Virtua Racing   

Primero que todo, hay que entender el Sonido.
Como sabemos el sonido no es mas que una onda elastica si mal no recuedo que viaja a unos 1200 km/h  ( Como Sonic   ) .
La propaga el ambiente, gracias a las particulas que tenemos (aire)    . Bien basta de física.

Nuestra querida Saturn, maneja Sonido Stereo, un muestreo 44100kHz y tiene 8 Canales. Y tiene 512kbytes para almacenar, las armoniosas musicas de los juegos.

Además, podemos leer las pistas de audio CDDA. Pero si leemos una de estas, logicamente no podemos leer los datos, entonces primero hay que hacer un gran loading y al ultimo dar play a la pista correspondiente.

Estamos pobres con el sonido, porque si usamos stereo ocupamos 2 canales, entonces podemos reproducir solo 4 sonidos al mismo tiempo, la memoria es poca también, ya que no es mucha, encima no tiene compresion por Hardware, que significa esto que al momento de cargar el sonido, se lo hacemos en crudo ó RAW (en ingles).

Como decia el archivo, originalmente ocupa 5 segundos, a 44100kHz, 16bits de profundidad y es Stereo. Ocupa 535kbytes, osea no entra   .
Bien le sacamos las partes mudas del final y el inicio, le bajamos la profundidad a 8bits, el muestreo a 11025kHz, y lo hacemos Mono. entonces ahora ocupa 17,5Kbytes. Ahora si es otra cosa.

Ahora convertimos el .wav en .PCM con el siguiente .bat file

Código: [Descargar] [Ocultar]
  1. COPY C:SaturnOrbitSET_COF.BAT .TMP.BAT  
  2. CALL TMP.BAT  
  3. DEL TMP.BAT  
  4. RB_SaturnPCM.EXE vr.wav  
  5. MOVE vr.pcm ../cd/vr.pcm  
  6. pause  
  7.  


Guarden este archivo como WAVTOPMC.BAT . Ejecutenlo y ahora van a tener dentro de la carpeta CD un archivo llamado vr.pcm.


Bien, ahora vamos de a poco.
Primero, debemos inicializar el subsistema de sonido.
Código: [Descargar] [Ocultar]
  1. //incluimos los drivers.  
  2. #include <sddrvs.dat>  
  3. void snd_init()  
  4. {  
  5.   char sound_map[] = {0xff , 0xff};  
  6.   //Iniciamos el subsistema de sonido  
  7.   slInitSound(sddrvstsk , sizeof(sddrvstsk) , (Uint8 *)sound_map , sizeof(sound_map));  
  8.  
  9. };  
  10.  


Ahora el método para cargar el sonido en memoria.

Código: [Descargar] [Ocultar]
  1. char *vr_snd;  
  2. //Este es el tamaño en bytes de sonido  
  3. Uint32 vr_size = 17296;  
  4. //Estas son las caracteristicas con las que se va a reproducir.  
  5. //Este numero 0x69ce no se que significa pero si lo cambian el sonido  se corrompe.  
  6. PCM vr_dat = {(_Mono | _PCM8Bit) , 0 , 127 , 0 , 0x69ce , 0 , 0 , 0 , 0};  
  7.  
  8. void snd_loadSound_PCM()  
  9. {  
  10. vr_snd = NULL;  
  11. Sint32 load = GFS_Load(GFS_NameToId("VR.PCM"), 0, (Uint32 *)0x200000, 0x100000);  
  12.     if(load <= 0)  
  13.         slPrint("ERROR loading file vr.pcm!", slLocate(2, 11));  
  14. vr_snd = (char *)0x200000;  
  15. vr_size = load;    
  16. };  
  17.  


Para hace un play
Código: [Descargar] [Ocultar]
  1. //Aca hacemos play al sonido, pasandole primero las caracteristicas, segundo la informacion y  
  2. //tercero la cantidad de bytes para que haga el offset de memoria ;)  
  3. slPCMOn(&vr_dat, vr_snd  ,vr_size);  
  4.  


Luego dentro del main, debe llamar estas funciones snd_init() y snd_loadSound_PCM() antes del loop principal.
En mi caso, cuando aprieto el botón A del PAD, se escucha el sonido

Pidanme la iso por MP.  
 




____________
SegaSaturn Developer Addict
 
avatar
argentina.png FacundoARG Sexo: Masculino
Colaborador SEGASATURNO
Colaborador SEGASATURNO
Professional Videogamer Coder
Donante Unreleased €
 
Registrado: Diciembre 2006
Ubicación: San Luis
Mensajes: 691
  • Volver arriba Página inferior
 

Mensaje Re: [Sound] Cargando Y Ejecutando Un Sonido Wav

#2  Jean La Montarde 14 Septiembre 2009, 09:57 AM

Otro gran tuto , haber si a lo largo de la semana me pongo de nuevo con ellos y avanzamos todos xD

Por cierto tienes un MP
 



 
avatar
spain.png Jean La Montarde Sexo: Masculino
SEGA Fan
SEGA Fan
 
Registrado: Julio 2009
Mensajes: 181
  • Volver arriba Página inferior
 

Mensaje Re: [Sound] Cargando Y Ejecutando Un Sonido Wav

#3  sergio-dreamer 28 Septiembre 2009, 05:13 AM

EY AMIGO YA VISTE COMO SI ERES TODO UN PROFECIONAL JAJAJA!!!! YA POSTEA ALGO DE DREAMCAST BUENO AMIGO TE MANDO UN ABRAZO CUIDESE
 



 
avatar
mexico.png sergio-dreamer Sexo: Masculino
SEGA Junior
SEGA Junior
 
Registrado: Septiembre 2009
Ubicación: Mexico D.F
Mensajes: 42
  • Volver arriba Página inferior
 


Ocultar¿Este tema fue útil?
Compartir este tema
Correo a un amigo Facebook Twitter Windows Live Favorites MySpace del.icio.us Digg SlashDot google.com LinkedIn StumbleUpon Blogmarks Diigo reddit.com Blinklist co.mments.com
technorati.com DIGG ITA linkagogo.com meneame.net netscape.com newsvine.com yahoo.com Fai Informazione Ok Notizie Segnalo Bookmark IT fark.com feedmelinks.com spurl.net

Página 1 de 1