[Bennu Module] mod_beep

Started by FreeYourMind, February 22, 2010, 08:13:02 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

FreeYourMind

Como la que tiene DCElso en su modulo ?

Pero a cual le asignaria la thread ? o sea, tendria que llamar por ejemplo un Start_Beeps con thread y despues al final de los Beeps un Stop_Beeps ?

Que significan los parametros "S" y "SP" en las fuciones export que utilizan threads en los modulos ?

Por utilizar theads el modulo se me ha quedado en 278kb, una burrada ya que sin el sólo ocupa unos 8kb, y no he visto tal difeencia en los modulos oficiales...

FreeYourMind

Mientras no saco una segunda version donde resuleva estas dudas, os regalo la version 1.0.

Viene con un ejemplo con varias musiquillas y con codigo fuente, o sea, viene el proyecto completo para poder compilar en Windows, aparte de ser el modulo más friki según vosotros, tambien es el más sencillo de todos, ya nadie tendrá excusas para hacerse un modulo con code blocks, apuesto que lo compilais a la primera si poneis el proyecto en la ruta: "D:\BennuGD Beep", si no teneis drive D, pues yo editaria la ruta antes de abrir el proyecto con codeblocks, con un editor de texto.

Espero que os guste y que me ayudeis con la proxima version ;)

Descarga en mi página: http://www.gecasoft.no.sapo.pt


Windgate

Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

FreeYourMind

Ya hay novedades al repeto. Por fin ya tengo una segunda versión con multithread que permite tocar beeps sin pausar el resto del programa Bennu :)

De momento tengo otros problemas, ya que ahora las threads salen volando y las musicas se descuadran un poco. Intentaré probar con thread_sleep o algo que se me ocurra a ver si lo puedo arreglar, cuando salga de mi descanso, que estoy harto de tanto proyecto.

l1nk3rn3l

utiliza getticks() para controlar pausas durante un tiempo determinado...

http://www.libsdl.org/intro.en/usingtimers.html






..

SplinterGU

getticks consume cpu... mejor usar sdl_delay...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

¿Y delay a secas no? yo recuerdo haberlo usado en C++
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

digo sdl_delay para que sea mas portable.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Por eso, como delay es del propio C, pensé que sería aun más portable que las propias SDL, que necesitan ser recompiladas para cada plataforma ^^U
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

FreeYourMind

Lo que es casi seguro es que tendré que poner multithread tambien al Beep_Sleep, sino al hacer un sleep entre beeps seguramente bloqueé tambien la ejecución del resto del juego.
Estoy con ganas de llegar a casa y ponerme con ello :)

SplinterGU

delay no esta en todos lados...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

No hay manera...

SDL_Delay me anula los threads.

El problema es el siguiente:

1 - Si pongo sólo un Beep por ejemplo en un if(key_1) Beep(100, 120); end se me repite por los menos 3 veces (habria que hacer que sólo inicié uno al darle al botón).

2 -

Si pongo varios beeps dentro del begin end principal, ya funcionan (sólo se llama una vez cada beep), pero otro problema que tengo es que si son muchos no llegan a tocar todos, apesar de que todas las threads se crean...

Este es sin duda el mayor problema, ya que por alguna extraña razón no tocan todos...

Windgate

IF ( key ( _1 ) )
   WHILE ( key ( _1 ) )
      FRAME;
   END
   beep ( 100 , 200 );
END


Es una de tantas formas de filtrar teclas, de hecho creo que ya hablé sobre mod_key, debería haber una forma sencilla de detectar sólo la pulsación o sólo la liberación de la tecla pulsada, para estos casos tan bizarros.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

FreeYourMind

Grácias Wind, aunque la solución para eso es lo de menos, el otro problema es mas gordo :)

SplinterGU

es que solo tenes que tener 1 thread para los beeps... no mas que eso...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2