Marzo 10, 2010, 05:42:38 PM Ultima modificación: Marzo 10, 2010, 09:15:23 PM por Wadk
 :GM7: :GM8:

hice un "juego" que consistia en un sonido, un objeto, y un room

el objeto tiene en el evento evento step:

if(keyboard_check_pressed(vk_space)) sound_play(sound0);

pero el GM tarda unas desimas de segundo en ejecutar el sonido y quisiera seber si es posible evitar ese retraso.

estoy seguro de que es un retazo y no es el sonido, porque si lo reprodusco con reproductor de windows media, despues de hacer click en el boton play, cuando suelto el click, el sonido suena inmediatamente.

Les adjunto el sonido si quieren probar

#1 Marzo 10, 2010, 07:04:10 PM Ultima modificación: Marzo 11, 2010, 01:44:06 AM por soccer2008
Probando sonido  XD XD XD



Prueba ese c?digo en el evento draw, a mi me funciona bien :P :-[

me olvidaba el c?digo es este:

if(keyboard_check_direct(vk_space)){ sound_play(sound0);}
Un foro donde hay de todo: http://fileceru.foroactivo.net (se necesitan moderadores para el foro)

prueba usando keyboard_check

Orgulloso veterano de CGM
El poder de hacer un buen juego esta en tus manos.

Yo creo que el retraso se debe a la capacidad de tu compu y varia dependiendo de cada m?quina. Para prevenir esta falla lo mejor es usar una DLL que mantenga los sonidos en la memoria para que se reproduzcan inmediatamente.

P.D. Mientras se reproduzca el c?digo que utilices es indiferente.
       

#4 Marzo 12, 2010, 12:17:59 AM Ultima modificación: Marzo 12, 2010, 12:19:57 AM por Alfonsos1
@soccer2008

CitarPrueba ese c?digo en el evento draw, a mi me funciona bien

la diferencia entre un evento y otro es a lo sumo de 1 step, con un room_speed de 60 solo cambiaria una 1/60 de segundo.

@kakashigna

lo intente, pero es lo mismo, cuando mucho la diferencia es de un step (1/60 de segundo)

@Hackware

eso podria ser

SI ALGUIEN CONOCE ALGUNA DLL PARA MANTENER LOS SONIDOS EN LA MEMORIA QUE ME LO INFORME PORFABOR

y haz aprobado con este codigo?

if(keyboard_check_direct(vk_space)){ sound_play(sound0);}

screen_refresh();


latima q no tengo el gm a la mano  XD XD XD
Un foro donde hay de todo: http://fileceru.foroactivo.net (se necesitan moderadores para el foro)

tampoco soccer2008...

repito:
SI ALGUIEN CONOCE ALGUNA DLL PARA MANTENER LOS SONIDOS EN LA MEMORIA QUE ME LO INFORME PORFABOR

Haz aprobado con las dll de audio q hay en la secci?n de descarga?????
Un foro donde hay de todo: http://fileceru.foroactivo.net (se necesitan moderadores para el foro)

segun yo lo veo siempre va a haber un retraso de por lo menos un step ya que el GM primero cheque las sentencias if y luego las ejecuta por lo cual el sonido vendria ejecutandose un 1 step despues

eso es lo que yo creo corriganme si me equivoco

Orgulloso veterano de CGM
El poder de hacer un buen juego esta en tus manos.

Aqui te dejo un ejemplo, no us? dll  XD XD XD


sino te funciona es posiblemente q la canci?n tenga un espacio sin sonido al inicio de la misma:-[

http://rapidshare.com/files/362227796/ejem_retard_sonid.gmd.html
Un foro donde hay de todo: http://fileceru.foroactivo.net (se necesitan moderadores para el foro)

El retraso se debe, como menciona Hackware, a que el GM debe pasar todo el sonido a memoria y no puede reproducirlo hasta que dicho procedimiento esta completo, no tiene nada que ver con el evento que se utilice.

Si bien pienso que una DLL siempre es favorable, siempre puedes usar estas dos funciones:

sound_discard(index) Libera la memoria de audio utilizada por el sonido indicado.
sound_restore(index) Restaura el sonido indicado en la memoria de audio para reproduccion inmediata.


En el caso de DLL, hay varias por ah?, Sin Bass, Fmod, XE Audiere, todo es cuestion de buscar.

#11 Marzo 12, 2010, 05:18:05 PM Ultima modificación: Marzo 12, 2010, 05:28:11 PM por Alfonsos1
@kakashigna

el problema no es que se reprodusca en un step, o el que sigue, ya que un step dura em mi caso 1/60 de segundo.

@Killer

prove con dos sonidos sound0 y sound1 (ambos son el mismo wav que subi), en el evento create puse:

sound_restore(sound0);

luego puse para que cuando se presionen "H" o "J" se reprodusca sound0 o sound1 respectivamente.

pero no hay diferencia, lo estoy haciendo bien?, hay alguna manera de checar si el sonido esta realmente en memoria?

@soccer2008

si no hisiste el ejemplo para el wav que subi, supongo que es porque no pudiste solucionar el problema con el wav que sub?, o porque relmente no percives el peque?o retraso que tiene en GM

Y EN CUANTO A LAS DLL DEL LISTADO LE? SUS DESCRIPCIONES EN EL POST, PERO NO ENCONTRE QUE DIGA TEXTUALMENTE: "SUBE LOS SONIDOS A LA MEMORIA", POR LO QUE NO ESTOY SEGURO SI ALGUNA Y CUAL DE LAS 3 DLL QUE HAY EN EL LISTADO ME SERVIRIA.

-----------------------

si alguien no percive el retraso que menciono en el titulo del post, lo que quiero es que el sonido suene practicamente al mismo tiempo en que suena la tecla cuando le doy un dedaso  XD .

usa la DLL SAudio, es la que uso yo para reproducir m?sica y funciona muy bien.

#13 Marzo 12, 2010, 05:48:39 PM Ultima modificación: Marzo 12, 2010, 06:12:26 PM por soccer2008
Mira x aqui si hay alguna dll buena: http://www.gmtoolbox.com/ - http://www.ismavatar.com/dll.php

Mientras tanto intento hacer un ejemplo con el wav q requieres XD XD XD


Aqui te dejo el ejemplo mejorado, a mi parecer no percibo ningun retardo.

http://www.mediafire.com/?ouilgrohyyz
Un foro donde hay de todo: http://fileceru.foroactivo.net (se necesitan moderadores para el foro)

me sale error, no conoce la funcion:

sound_get_loadonuse(sonido1);

parece mal escrita, pero me fije en el listado y no hat ninguna funcion parecida