Página 1 de 1
 
 

Mensaje [Homebrew] [Sound] Reproducir Una Pista De Audio.

#1  FacundoARG 05 Noviembre 2009, 10:40 PM

Bueno les traigo un tutorial básico  a pedido de un colega, con colega me quedo chico es más bien un amigo metalero, Saturn_worship.
El tutorial se basa en reproducir CDDA o mas comunmente las pistas de audio de Saturn.
He hecho las implementaciones de CD (para abrirlo y explorar los datos) y una implementación de sonido CDDA.

Esta última esta basada en el sound player de Rockinb ya que no le encontre sentido alguno en modificarla, la verdad esta muy bien hecha y de esta forma prefiero que se concentren en el desarrollo del juego.

Los tracks deben estar en .wav con 16bits stereo a 44100khz de muestreo.

Ambas implementaciones están incluidas al final en un .zip

Como ya es un clásico, si no sabes cómo empezar, mira este link primero. Como simpre usaremos el ejemplo S_2_2.




La implementación tiene las siguientes funciones:
  • CDDA_init()
     
  • CDDA_stop()
     
  • CDDA_pause()
     
  • CDDA_Play(track Uint8)
     
  • CDDA_getStatusName()



CDDA_init()
dentro de esta funcion encontramos otra, la más importante
slCDDAOn(127, 127, 0, 0) los primeros dos parámetros son para el volúmen izquierdo y derecho respectivamente. Le podemos setear valores desde 0 a 127.
Los otros dos son para el LPan y RPan, sinceramente no he notado el cambio. Algún músico que me de una mano con esta explicación  

CDDA_stop()
Obviamente, esta función detiene el reproductor y setea la posición en el track 1.

CDDA_Play(track Uint8)
El parámetro que recive es el track mismo, si le pasamos un 2(dos) leerá el segundo track. El 3(tres) será el tercero y asi sucesivamente.

CDDA_pause()
Pausa el track pero queda posicionado ahi.

CDDA_getStatusName()

Esta funcion devuelve un puntero char, para que podamos imprimir el estado del reproductor.




Bien para comenzar, debemos incluir ambas implementaciones dentro de nuestro main.c

Código: [Descargar] [Ocultar]
  1. #include    "imp_sound_CDDA.h"  
  2. #include    "imp_CD.h" 


Luego, debemos en este orden:
  • Iniciar el CD :: init_CD();

  • Activar el sonido :: init_SFX();

     
  • Activar el CDDA :: CDDA_init();


por último despues de hacer el loading de los escenarios, sprites, modelos 3d, texturas, sonidos sfx, etc. Debemos hacer un CDDA_Stop().


Código: [Descargar] [Ocultar]
  1.     //Iniciamos el CD  
  2.     init_CD();  
  3.     //Iniciamos el sonido  
  4.     init_SFX();  
  5.       
  6.     //Activamos el CDDA, seteamos el sonido y ademas tomamos la cantidad de tracks  
  7.     CDDA_init();  
  8.       
  9.      CDDA_stop(); 


Por ultimo y gracias a Saturn_worship me ha dicho que la consola solo reproduce la música si la ponemos dentro del while; si lo hacemos fuera en ssf funcionará, pero claro esto ya es un bug encontrado en el emulador.
Supongo que la consola no lo reproduce porque necesita la sincronizacion slSynch(), que esta dentro del while.


tuto_cdda


PD: les dejo las implementaciones y el main.c  
 




____________
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] Reproducir Una Pista De Audio.

#2  saturn_worship 06 Noviembre 2009, 01:54 AM

Muchisimas gracias Facu....espero que sigamos consiguiendo más cosas...estoy ahí hardcore con lo de la resolución..poco a poco!!!!
 



 
avatar
blank.gif saturn_worship 
Staff Unreleased
Moderador
Moderador
Arqueologo Sega Saturn
 
Registrado: Abril 2007
Mensajes: 1182
  • Volver arriba Página inferior
 

Mensaje Re: [Sound] Reproducir Una Pista De Audio.

#3  Ryo Suzuki 10 Noviembre 2009, 11:01 PM

Gracias por otro gran aporte

Una pregunta, ¿como se comporta la Saturn vs PSX en este aspecto? Cual es mas "amigable" para el coder en este sentido?
 



 
avatar
japan.png Ryo Suzuki Sexo: Masculino
Alfonso Martínez González
Webmaster
Webmaster
Shenmue Freak
 
Registrado: Agosto 2005
Ubicación: 難波
Mensajes: 9735
  • Volver arriba Página inferior
 

Mensaje Re: [Sound] Reproducir Una Pista De Audio.

#4  saturn_worship 04 Diciembre 2009, 02:34 PM

Sobre PSX no puedo opinar, ya que no he tenido un dev delante, pero supongo que será fácil fácil y detallado por Sony.

El código expuesto aquí es una "interpretaicón" personal de las SGL por parte del señor RockinB, por lo tanto estamos sujetos a ello.

No he visto ningún manual por parte de SEGA al respecto, y seguramente funciona muy parecido, por el tema de que ambas cosas van con las SGL.

En cuanto a posibilidades , decir que esto no consume CPU para nada, y va independiente. Por lo tanto, configurado demanera diferente a las SGL, intuyo que con una buena compresión de audio, y una correcta configuración de parámetros, podría quedar prácticamente medio chip de audio para libre disposición del programador.

Facu, el SCSP (Sega Custom Sound Processor) es el que se encarga de esto no? Ya que se que tiene además un M68000 y otro más para audio-fx.

La cantidad de posibilidades...es...enorme.

De todos modos, volviendo al tema, decir que aquí se nos atragantan aun algunos procesos y maneras para que suene en Saturn real o Yabause. (casi solucionado). , parece ser que este tipo de código es bastante asimilable por el SSF.
 



 
avatar
blank.gif saturn_worship 
Staff Unreleased
Moderador
Moderador
Arqueologo Sega Saturn
 
Registrado: Abril 2007
Mensajes: 1182
  • Volver arriba Página inferior
 

Mensaje Re: [Sound] Reproducir Una Pista De Audio.

#5  FacundoARG 08 Diciembre 2009, 11:36 PM

saturn_worship escribió: [Ver mensaje]
El código expuesto aquí es una "interpretaicón" personal de las SGL por parte del señor RockinB, por lo tanto estamos sujetos a ello.


Además de tener razón, RockinB se a basado en los ejemplos que trae la SGL.

saturn_worship escribió: [Ver mensaje]
No he visto ningún manual por parte de SEGA al respecto, y seguramente funciona muy parecido, por el tema de que ambas cosas van con las SGL.


Los manuales esta "casi" todos, pero son de assambler. Solo explican cuales son los registros del micro y los tipos de interrupciones. Luego en assambler uno tiene que hacer todo.

saturn_worship escribió: [Ver mensaje]
Facu, el SCSP (Sega Custom Sound Processor) es el que se encarga de esto no? Ya que se que tiene además un M68000 y otro más para audio-fx.


El M68000 es el que repoduce el Sonido verdaderamente. El SCP assigna la memoria y las instrucciones. En otras palabras es el que controla todo el sistema de audio.

saturn_worship escribió: [Ver mensaje]
De todos modos, volviendo al tema, decir que aquí se nos atragantan aun algunos procesos y maneras para que suene en Saturn real o Yabause. (casi solucionado). , parece ser que este tipo de código es bastante asimilable por el SSF.

Nos falta el cartucho   , de a poco va mejorando la cosa.
 




____________
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
 


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