Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Mr Matsusaka on May 31, 2011, 08:45:49 PM

Title: El sonido...
Post by: Mr Matsusaka on May 31, 2011, 08:45:49 PM
Con este thread me gustaria un poco comentar mis problemas con el sonido y al mismo tiempo recabar algo de informacion sobre el funcionamiento de el mismo, de trucos para conseguir determinadas cosas y preguntar un poco por los cambios en las ultimas versiones.

Desde tiempos inmemoriales (desde Fenix al menos) al llamar un play_sound/play_wav este devuelve el id del canal donde se esta reproduciendo.
Si hacemos un stop_sound y metemos el valor que el anterior play_sound nos dio deberia cortar el sonido de cuajo.
Si llamamos al stop_sound con el sonido ya terminado en teoria no deberia suceder nada.

El problema viene cuando llamamos al stop_sound cuando el sonido hace rato dejo de sonar, y su canal ya fue tomado por un sonido distinto. Resultando en que el stop_sound cortara a un sonido no deseado. Al final para evitar daños colaterales he optado por usar el stop_sound lo menos posible, aunque indudablemente hay casos donde quedaria mejor poder cortar determinados sonidos.

Alguien tiene algun sistema idoneo, o existe alguna funcion nueva con la que se pueda controlar los canales de sonido a nuestro antojo?
Title: Re: El sonido...
Post by: FreeYourMind on May 31, 2011, 09:06:21 PM
Te dejo mis tips:

1 - Primero me certifico que tengo canales de sobra para todos los sonidos y que no se mezclen por este motivo:

sound_channels = 32;
y hago tambien un reserve_channels si necesario

2 - Si pones id a todos los sonidos no deberias tener problemas con los id's, ya que los controlarias todos.

3 - Para no tener problemas suelo hacer esto al hacer un unload:

IF (Mus_Menu != null) unload_wav(Mus_Menu); Mus_Menu = 0; END

sólo lo descargo si existe y le pongo id 0 al ya no existir, si en todos los sonidos haces estos controles seguramente ya no tengas problemas de mezclas de id's entre sonidos.
Title: Re: El sonido...
Post by: Futu-block on May 31, 2011, 09:44:49 PM
o puedes poner que los sonidos se reproduzcan infinitamente y que se pare con un stop...
valdria para las melodias de fondo, a la hora de pasar pantalla reducimos el sonido progresivamente y queda de lujo; aunque nos corte la cancion por la mitad
Title: Re: El sonido...
Post by: BoMbErLiNk on June 01, 2011, 04:11:49 AM
Puedes usar los canales manualmente, el tercer parametro de play_wav :

play_wav(id,repetir,canal);

Lo ideal es que cada personaje tenga un canal único fijo, así puedes cortar dialogos o lanzar nuevos sin miedo a que escuches 2 voces del mismo personaje a la vez, con esto puedes cortar facilmente su voz, si es el canal 5, stop_wav(5);, lo mismo para explosiones y sonidos estridentes, agrupados en un único canal para no saturar los bajos y agudos, esto del stop_wav es solo para pararlo, si hay un sonido en el canal 5 y lanzas un play_wav con canal 5 lo cortaras igualmente a favor del nuevo.

El resto de sonidos que no creas importantes lo puedes dejar por control automatico sin el tercer parametro o bien usando -1 en canal, o en un rango de canales que no vayas a usar si lo que quieres es tener control absoluto de los canales y asegurarte de que ningun sonido se cuele por el canal 5.

Por defecto el sistema de sonido viene con 8 canales (0 a 7) y 22khz, pero puedes cambiarlo así :

sound_freq = 44100;
sound_channels=32;
reserve_channels(24);

Sound channels es solo para la estructura, si usas un valor diferente a 32 puede que no se escuche el sonido, reserve channels sera el número real de canales.  :)
Title: Re: El sonido...
Post by: Mr Matsusaka on June 01, 2011, 05:56:30 AM
Quote from: BoMbErLiNk on June 01, 2011, 04:11:49 AM
Puedes usar los canales manualmente, el tercer parametro de play_wav :

play_wav(id,repetir,canal);

Esto es exactamente lo que estaba buscando! Muchas gracias BoMbErLiNk.
Title: Re: El sonido...
Post by: SplinterGU on June 01, 2011, 02:47:00 PM
Quote from: BoMbErLiNk on June 01, 2011, 04:11:49 AM
Puedes usar los canales manualmente, el tercer parametro de play_wav :

play_wav(id,repetir,canal);

Lo ideal es que cada personaje tenga un canal único fijo, así puedes cortar dialogos o lanzar nuevos sin miedo a que escuches 2 voces del mismo personaje a la vez, con esto puedes cortar facilmente su voz, si es el canal 5, stop_wav(5);, lo mismo para explosiones y sonidos estridentes, agrupados en un único canal para no saturar los bajos y agudos, esto del stop_wav es solo para pararlo, si hay un sonido en el canal 5 y lanzas un play_wav con canal 5 lo cortaras igualmente a favor del nuevo.

El resto de sonidos que no creas importantes lo puedes dejar por control automatico sin el tercer parametro o bien usando -1 en canal, o en un rango de canales que no vayas a usar si lo que quieres es tener control absoluto de los canales y asegurarte de que ningun sonido se cuele por el canal 5.

Por defecto el sistema de sonido viene con 8 canales (0 a 7) y 22khz, pero puedes cambiarlo así :

sound_freq = 44100;
sound_channels=32;
reserve_channels(24);

Sound channels es solo para la estructura, si usas un valor diferente a 32 puede que no se escuche el sonido, reserve channels sera el número real de canales.  :)

bomber ? ? ? ? ya sabia yo que no se iba a ir... :)
Title: Re: El sonido...
Post by: ErPera on June 02, 2011, 10:17:23 AM
Es lógico, que si ejecuto el juego a pantalla completa, el sonido suene a "lata"? Si juego sin pantalla completa suena bien, pero en el momento que pongo a pantalla completa el juego, todo el sonido de mi PC empieza a sonar mal, no es algo que se note demasiado, pero se nota la diferencia de calidad de sonido.
Title: Re: El sonido...
Post by: Krammer on June 02, 2011, 06:27:47 PM
Interesante BUG, ya decía yo que sucedían cosas extrañas y no sabia porque..
Aunque no puedo ayudarte con una respuesta, tu me has ayudado a comprender lo que le sucede a mi programa.

Gracias.
Title: Re: El sonido...
Post by: Arcontus on June 09, 2011, 06:37:50 PM
En mi caso no he tenido problemas en mi proyecto con el audio, ni pantalla completa, ni ventana y a distintas resoluciones y con muchas pistas simultaneas.

Es muy extraño lo del sonido, pero en el pasado a mi también me sucedió con ciertos programas o juegos, mucho antes de conocer Bennu. En aquel caso lo solucioné cambiando de PC, pero probablemente con nuevos drivers o nueva tarjeta de sonido quizas se solucione.

Estoy pensando que también puede ser que el problema esté relacionado con el número de canales reproduciendose simultaneamente, ya que cada tarjeta tiene límites distintos y puede ser que por algún motivo se sobrepasen los de vuestra tarjeta y provoque el problema. Antes de hacer nada, probaría en otro PC vuestro proyecto, para descartar.

Saludos!
Title: Re: El sonido...
Post by: SplinterGU on June 09, 2011, 07:05:33 PM
el problema es que si usas fade_music_off y nunca haces fade_music_in, nunca volveras a obtener el sonido en el w7
Title: Re: El sonido...
Post by: Arcontus on June 09, 2011, 07:12:24 PM
Quote from: SplinterGU on June 09, 2011, 07:05:33 PM
el problema es que si usas fade_music_off y nunca haces fade_music_in, nunca volveras a obtener el sonido en el w7

Creo que se refieren a "sonido en lata" no que se apague este.

Saludos!
Title: Re: El sonido...
Post by: SplinterGU on June 09, 2011, 07:13:26 PM
Quote from: Arcontus on June 09, 2011, 07:12:24 PM
Quote from: SplinterGU on June 09, 2011, 07:05:33 PM
el problema es que si usas fade_music_off y nunca haces fade_music_in, nunca volveras a obtener el sonido en el w7

Creo que se refieren a "sonido en lata" no que se apague este.

Saludos!

jejeje, me confundi de hilo, cierto, gracias!
Title: Re: El sonido...
Post by: Futu-block on June 09, 2011, 08:15:12 PM
es cierto lo de la lata, a mi tamien me pasa