Bennu Game Development

Foros en Español => Extensiones => Topic started by: FreeYourMind on February 23, 2010, 09:07:20 PM

Title: [Bennu Module] mod_midi
Post by: FreeYourMind on February 23, 2010, 09:07:20 PM
Esto esta que no para! No me lo creo, estaba justo mejorando el mod_beep para ponerlo aqui, y me he puesto a currar otro modulo, hehheheheheeh. Os pongo una beta sin source code, porque quiero tranquilizarme, arreglar el otro para que funcione en background, sacarlo de una vez, y eso si, despues me pongo a mejorar este y lo publico con source como debe de ser ;)

Este hace cosas parecidas, sólo es para Windows (me lo imagino a ver si no me equivoco), sólo que este utiliza MIDI, o sea, queda pokito para tenermos musica Midi en Bennu, eso si, me parece tan friki como el anterior :) heheheheheheheh



1 - Importar "mod_midi"

2 - Código ejemplo:

BEGIN
         
midi(95, 2000, 127, 111); // Freq, Dura, Vol, Voice, Tempo
midi(1, 1000, 0, 111);
midi(95, 2000, 127, 111);
midi(1, 1000, 0, 111);
midi(1, 1000, 0, 111);
midi(95, 2000, 127, 111);

midi_sleep(10);

END
Title: Re: [Bennu Module] mod_midi
Post by: SplinterGU on February 23, 2010, 10:29:14 PM
bennu ya tiene midi...
Title: Re: [Bennu Module] mod_midi
Post by: FreeYourMind on February 23, 2010, 10:45:25 PM
Ni lo sabia, pero este no es carga de ficheros midi, sino que toca midi en tiempo real, como componiendo, como se hace con el beep, aunque he echo algunas pruebas y no parece funcionar muy bien. Ya le dedicaré tiempo cuando ponga el beep funcionando sin la espera que dices. Por cierto en los modulos oficiales se puede ver un ejemplo de ejecución en background ? Tengo que ver como se hace ya que no lo tengo del todo claro.
Title: Re: [Bennu Module] mod_midi
Post by: DCelso on February 23, 2010, 11:36:04 PM
Mira que yo había pensado por hacer el mod_notes a través del canal mid, pero creía que Bennu ya lo traía :).
Jopaina, a este paso me vas a ganar en número de mods :( :(.
Tienes mejores ideas que yo :D o más bién :(
Title: Re: [Bennu Module] mod_midi
Post by: FreeYourMind on February 23, 2010, 11:59:16 PM
DCelso, no te preocupes que dejo ya de inventarme express mods  ;D, parece que cuando tenemos un DCelso dedicandose a los modulos de cuerpo y alma viene un capullin como Free, a meter la pata con modulos chorra, hehheheheehheh, yo aqui escaseando de ideas para lo que realmente quiero seguir que es con mi juego y me salen ideas para cosas totalmente distintas  ;D Hay que ver... cada vez más nos sorpreendemos nosotros mismos, heheheheh
Title: Re: [Bennu Module] mod_midi
Post by: DCelso on February 24, 2010, 01:09:02 AM
este, parece que no quiero que hagas módulos, pero es todo lo contrario, haz todos los que se te ocurran.
A mi se me acaban las ideas, muchas veces pienso que BennuGD ya tiene de todo y no falta nada (, que si 2d, que 3d que si acceso a BBDDS, que si parser de xmls, que si GUI para aplicaciones, que si procesado de fuentes truetype, que si sintetizador de voz, que si reproducción de video, juas vaya si es que no le falta de nada)  Pero siempre aparece alguna cosilla que asombra, como el reconocimiento de caras, por ejemplo, o tu mod_beep :D, así que nada, sigue inventando modulos o cosas interesantes.
Title: Re: [Bennu Module] mod_midi
Post by: SplinterGU on February 24, 2010, 01:32:07 PM
perdon, quise quise decir archivos midi... no midi por notas... eso si no hay...

por otro lado, no dejes de hacer modulos, cuanto mas hagas mas practica tendras en hacerlo... solo te digo que publiquen los codigos, si algo esta mal en los mismos sera mas facil decirles como corregirlos y ademas seran didacticos para el resto de la comunidad...
Title: Re: [Bennu Module] mod_midi
Post by: Windgate on February 24, 2010, 11:31:30 PM
En cuanto a lo que dice Splinter, mi primer módulo va a ser mod_nothing.dll y va a tener una función nothing ( ) que recibe un int y lo devuelve tal cual xD

Por supuesto para ello miraré vuestros ejemplos, así que dejad todo lo que podáis porfa. Lo que más temo es compilarla con CodeBlocks, le tengo pánico a ese entorno, pero dentro de lo que cabe es el que mejor me ha funcionado hasta ahora.
Title: Re: [Bennu Module] mod_midi
Post by: osk on February 25, 2010, 12:45:28 AM
En mi manualillo hay un pequeño apartado que sirve para iniciarse en esto de los módulos. Puede servir para el que no lo ha hecho nunca...
Title: Re: [Bennu Module] mod_midi
Post by: Drumpi on February 25, 2010, 01:49:51 AM
Ya lo comenté en el foro de gp32spain, pero lo mismo que existe la posibilidad de reproducir midis, aun se le pueden añadir muchas cosas: cambiar el tempo, saber en qué parte de la canción estás (pattern/linea), silenciar un canal/instrumento en plena ejecución (y hacer el efecto de Super Mario World "con yoshi/sin yoshi")... esto es válido para el resto de música modular.

Por cierto ¿por qué al invocar a la función en el ejemplo usas 4 parámetros y luego indicas en el comentario 5 valores?

Y leches, si tanto quereis express-mods, portar la VSE, que el código para Fenix 083b está hecho... pero no sé compilarlo para Bennu por un cambio en la estructura de los graphs. ;D
Title: Re: [Bennu Module] mod_midi
Post by: FreeYourMind on February 25, 2010, 07:02:32 AM
Quote from: Windgate on February 24, 2010, 11:31:30 PM
En cuanto a lo que dice Splinter, mi primer módulo va a ser mod_nothing.dll y va a tener una función nothing ( ) que recibe un int y lo devuelve tal cual xD

Por supuesto para ello miraré vuestros ejemplos, así que dejad todo lo que podáis porfa. Lo que más temo es compilarla con CodeBlocks, le tengo pánico a ese entorno, pero dentro de lo que cabe es el que mejor me ha funcionado hasta ahora.

No temas hombre, a ver si termino el mod_beep y lo subo, ya veras que estará listo a compilar con codeblocks y lo compilaras a la primera.
Title: Re: [Bennu Module] mod_midi
Post by: DCelso on February 26, 2010, 12:21:33 AM
drumpi, que es etd y vse?
Nunca he seguido esos proyectos, se que son para algo de 3d, pero nada más.
Title: Re: [Bennu Module] mod_midi
Post by: Drumpi on February 26, 2010, 12:44:57 AM
ETD era una libería creada por Tristan para obtener figuras 3D simples. Su rendimiento era bajo, sobre todo porque renderizaba sobre un MAP (por lo que en Bennu debería ir, como mínimo, el doble de rápido), y te permitía hacer cosas al nivel del chip SuperFX de SNES. Lo mejor es que se integraba perfectamente en Fenix, con todas las funciones, y no requería HW extra (bueno, esto último puede ser una ventaja o una pega ^^U).

VSE era más interesante: permitía crear entornos en plan modo7, pero con relieve. Usaba un mapa como textura, y otro de 256 colores como mapa de alturas. Estaba mucho más optimizada y con un poco de maña se conseguían resultados fantásticos (observar los ejemplos que traía). Además, incluía las funciones que metió el propio Tristan en otra DLL que permitía deformar las imágenes dándole las coordenadas de las 4 esquinas, y así conseguir texturas 3D que se podían integrar en los escenarios.
Superaba incluso en calidad al actual modo7, el cual yo le he encontrado muchas pegas. Vale que VSE aun arrastra algunas, pero las tengo localizadas.
Para hacer mapas para los juegos con un genial efecto 3D (creo que se le puede dar más detalle al relieve que con cualquier herramienta 3D), o incluso algún juego de plataformas, era una herramienta genial. Yo dejé aparcado un Sonic 3D por no tener hecho aun el motor de tiles para diseñar escenarios y porque nunca se portó a Fenix 084 y posteriores, que mejoraban mucho el rendimiento.
Title: Re: [Bennu Module] mod_midi
Post by: FreeYourMind on March 10, 2010, 12:14:48 PM
He encontrado loa version Vse08, es la última ? quereis que la porte a Bennu ? Tristan anda desaparecido, o no se importa que lo haga ?
Title: Re: [Bennu Module] mod_midi
Post by: DCelso on March 10, 2010, 12:32:11 PM
Nunca estaría de más tener una librería más :D.
Drumpi la pidió en sendas ocasiones.
Quizas, y digo solo quizas, sería rápidamente portable usando el generador de modulos que hize :D.
Title: Re: [Bennu Module] mod_midi
Post by: FreeYourMind on March 10, 2010, 12:44:57 PM
Es que estoy esperando la version multithead para portar el VSE con super rendimiento  ;D
Title: Re: [Bennu Module] mod_midi
Post by: Drumpi on March 10, 2010, 07:53:10 PM
Si, la última versión es la 0.8 (al menos, la que yo tengo y la que se publicó).
Había un problema para portarlo porque en la estructura interna de los graph, en la versión 083b de Fenix, existía un campo llamado FLAGS que no sabía para qué servía, y que se eliminó en posteriores versiones, y ni el propio Fenix Team me supo decir para qué servía (Tristán tampoco).
También se que hay un bug con la función VSE_TARGET y ciertos ángulos (no recuerdo si con ángulos de 0 o 90º). Según leí en el código, hay una linea en la que se puede provocar una división por cero, creo que sería fácil volver a dar con ella.

A mi me da igual que se haga como en la versión original o useis las funciones de repintado automático de la water.dll o fire.dll (dando ideas), lo que se es que como me hagais el favor, aparte de la semana de karma diario, me obligareis a hacer un plataformas pseudo 3D con bastante exploración (y creo que ha quedado claro mi experiencia en esconder cosas ;D).

:hype:
Title: Re: [Bennu Module] mod_midi
Post by: FreeYourMind on March 10, 2010, 08:35:23 PM
A ver si lo intento entre hoy y mañana.
Title: Re: [Bennu Module] mod_midi
Post by: FreeYourMind on March 10, 2010, 09:15:19 PM
Ya he intentado compilar el VSE y tambien la ETD. No esta tan sencillo, no me reconoce FILE ni GRAPH, me imagino que estan en los encabecados del SDK de Fenix, pero ni idea si BENNU ya ha cambiado esto o que ficheros .h necesito.

Me he limitado a substituir el #include <fxdll.h> por #include <bgddl.h>, me imagino que el codigo estaria completo y sólo tendria esta dependencia. Así que se lo dejo a DCElso ;D O que alguien me comente un poco esto y lo que necesito, que de momento no estoy para buscarme la fxdll.h para mirarla  ;D
Title: Re: [Bennu Module] mod_midi
Post by: DCelso on March 10, 2010, 10:26:52 PM
ualaa, yasta ea, ma tocao por hablar, cagoen :(.
A ver qué puedo hacer, no prometo nada.
Title: Re: [Bennu Module] mod_midi
Post by: DCelso on March 10, 2010, 10:42:42 PM
He estado leyendo el post de fenix con respecto a vse, post que siempre pasé por alto :D.
A ver, veo que la librería está hecha para fenix 0.83 pero que Splinter sacó un parche a algo, no se si a fenix o a la librería para que se pudiera compilar en la versión de cvs de por aquel entonces, a ver si nos puedes aclarar cualquier cosa de la que te acuerdes Splinter sobre este tema.
http://divsite.net/forum/viewthread.php?tid=3715&page=3
Title: Re: [Bennu Module] mod_midi
Post by: FreeYourMind on March 10, 2010, 11:32:16 PM
Esto esta un no parar!!! El creador del engine 3D para Fenix: lifenix.dll utilizado en el juego ganador 'Void Walker':

http://www.booleansoup.org/index.php?p=gallerygames&mode=view_item&type=full&id=42 (http://www.booleansoup.org/index.php?p=gallerygames&mode=view_item&type=full&id=42)

Me acaba de regalar el código fuente, despues de nunca haber sido publicado, grácias a mi ego de 'pesao man' :)
Mañana más un intento de portar este tambien a Bennu :)
Title: Re: [Bennu Module] mod_midi
Post by: DCelso on March 11, 2010, 12:13:36 AM
con respecto a vse... It's the final countdown.
Title: Re: [Bennu Module] mod_midi
Post by: SplinterGU on March 11, 2010, 02:20:04 AM
ni idea.
Title: Re: [Bennu Module] mod_midi
Post by: FreeYourMind on May 11, 2010, 08:55:56 PM
No paro de sorpreenderme en ocasiones.

Tenia esta libreria abandonadilla en estado beta, porque no me estaba funcionando correctamente. Y fijate, le he dado una mirada y he encontrado el error, con esto me orgullece apresentar la versión 1.0 (sin multithread de momento, esto lo reservo para una versión 2.0).

Este finde a ver si la limpio y saco un prg demo completo con varias musicas (al estilo del que hize para el modulo beep).

De momento os la dejo para ver si algun de vosotros se curra una musiquilla, ya os aviso que es muy divertido, hay sonidos de todo tipo, guitarradas, gritos, etc.


Os pongo alguna info y un pequeño prg de prueba:
Volume = 0 to 127
Voice = 0 to 127

Algunas voces para que podais trastear:

Shanai = 111, Tuba = 58, Accordion = 21
Rock Organ = 18, Marimba = 12, Steel String Guitar = 25
Choir Aahs = 52, Alto Sax = 65, Bird Tweet = 123, Sitar = 104
FX 8 (sci-fi) = 103, FX 3 (crystal) = 98, Glockenspiel = 9



BEGIN
midi(100, 1000, 127, 111, 1); // Frequency, Duration, Volume, Voice, Tempo
midi(100, 1000, 127, 58, 1);
midi(100, 1000, 127, 25, 1);
midi(100, 1000, 127, 98, 1);
midi(100, 1000, 127, 9, 1);
midi(100, 1000, 127, 123, 1);

midi_sleep(100);

loop
frame;end

END
Title: Re: [Bennu Module] mod_midi
Post by: Windgate on May 11, 2010, 09:42:06 PM
Gracias, los midi no me interesan mucho porque ando con el 3D y ahí no pegan, pero el esfuerzo se merece todo mi karma.
Title: Re: [Bennu Module] mod_midi
Post by: Fede on May 12, 2010, 05:43:05 AM
Yo no tengo ni idea, y estoy a años luz de comprender o usar tu módulo, pero aquí va el karma. ;D

Saludos.

EDITO:

Que me he enterado por gp32 que si no... Que cuando miro estos hilos, lo único que consigo es un bonito dolor de cabeza.  ;D y me hace sentir como mis primeras clases de cálculo.  :P
Title: Re: [Bennu Module] mod_midi
Post by: grisendo on May 12, 2010, 09:02:02 AM
A mí me va esto pero no lo he podido probar aún... va en Linux? Permite notas simultáneas? :D Debería probarlo antes de preguntar tanto ::) En cuanto lo pruebe me intento hacer alguna canción jeje...

Por cierto, hay alguna forma de cambiar los sonidos midi del sistema (Windows o Linux) para que sean más realistas? Yo los oigo con mi casio y suena miles de veces mejor que con el generador del ordenador... y alguna vez he oído algún midi en un un korg nuevo y guau!! O un solo de guitarra midi en una guitarra ídem... tremendo.
Title: Re: [Bennu Module] mod_midi
Post by: FreeYourMind on May 12, 2010, 09:11:50 AM
La calidad de los midi's siempre ha dependido de la calidad de la tarjeta de sonido, si en tu casio suena mil veces mejor te aconsejo a cambiar de tarjeta de sonido en tu pc (es viejuno no ?).

Sólo va en Windows porque tira de sus encabezados, habrá que estudiar como hacer algo similar en Linux (tanto los midis como el speaker).

Sólo toca una nota de cada vez (eso me imagino), a ver si os currais alguna musiquilla para ponerla en el prg demo.

Pensaba que por aqui sólo faltaban gráfistas  ;D
Title: Re: [Bennu Module] mod_midi
Post by: grisendo on May 12, 2010, 12:01:13 PM
Nop, es un portatil... quizá es que exageré al llamar "casio" a mi Roland...
Pena que no vaya en Linux, te habría hecho alguna cancioncilla... probaré a ver si rula en máquina virtual :D
Title: Re: [Bennu Module] mod_midi
Post by: Drumpi on May 12, 2010, 12:13:35 PM
En windows sí que hay una forma de cambiar los bancos midis: cambiando los drivers :D:D:D
En serio, uso mi SB Live 5.1 desde hace bastante tiempo, y con cada SO me ha sonado de una forma porque he tenido que ir usando drivers de tarjetas modernas que han "downgradeado" los señores de creative. Cuando tenía W98 y sus drivers nativos, era una delicia: muy buenos bancos sonoros, y además el propio soft me permitía cambiar entre 4 distintos (el de windows, uno que no sonaba y dos muy parecidos, para cambiarlos según el juego, porque había alguno en el que ciertos sonidos no se oían, como en el Sonic 3 & Knucles de PC).

En Linux es más fácil (como casi siempre), gracias a Timidity, librería que se puede usar para hacer el port de la librería.
Por cierto ¿Bennu no soportaba ya MIDI?
¿Y no he dicho ya la mitad de todo esto, antes?
Title: Re: [Bennu Module] mod_midi
Post by: FreeYourMind on May 12, 2010, 12:48:13 PM
Ya lo habia comentado Splinter, soportaba midi pero para leer ficheros midi, no para poner notas directamente....
Title: Re: [Bennu Module] mod_midi
Post by: grisendo on May 12, 2010, 12:52:35 PM
Bennu soporta reproducción de archivos MIDI, que se generan con otros programas y dentro
de Bennu se reproducen tal cual, no hay forma de modificarlos.

Esta librería es más para generar MIDI en tiempo de ejecución, aunque de momento sólo se
puedan utilizar notas sueltas. Lo veo ideal para un Guitar Hero más realista (sin poner el
típico "clap" cuando fallas de nota o alargas demasiado las notas).

Modificado:
Quote from: FreeYourMind on May 12, 2010, 12:48:13 PM
Ya lo habia comentado Splinter, soportaba midi pero para leer ficheros midi, no para poner notas directamente....

Te me adelantaste, qué lento soy!! jeje  :D
Title: Re: [Bennu Module] mod_midi
Post by: Drumpi on May 12, 2010, 04:07:11 PM
Mmmmm, leer los ficheros MID (almacenarlos manualmente en memoria) + reproducirlos a mano =
-Reproducir manualmente los canales que queramos.
-Modificar la velocidad en tiempo real.
-Generar (por fin) los bucles, teniendo intro y bucle principal, y reproducir una sección un número de veces.

Gutten, gutten :D :D :D
Si encima funcionase en WIZ, casi que podría hacer FrikiMusic2.0 :D :D :D
Title: Re: [Bennu Module] mod_midi
Post by: grisendo on May 12, 2010, 06:13:39 PM
Perdona, pero... dónde está la DLL para probar?  ;D

Edito: Ya la he encontrao, estoy un poco tonto ultimamente...  :(
Title: Re: [Bennu Module] mod_midi
Post by: grisendo on May 12, 2010, 07:09:55 PM
He hecho lo que he podido... Se me oía como el culo en máquina virtual (siempre se me oyen entrecortados los sonidos), y no he podido jugar mucho con la duración de las notas y el tempo... Te lo he dejado con una función que puede ser útil por aquello de las notas :D (igual la tenías ya de mod_beep, pero bueno...). Ahí va una canción cíclica, a ver si te funciona y sabes cual es (famosísima) :D

[code language="bennu"]
PROGRAM test;

IMPORT "mod_video"
IMPORT "mod_midi"
IMPORT "mod_key"
IMPORT "mod_math"

CONST

   CONST_E = 2.71828183;
   LN_2 = 0.693147181;

   DO = 1;
   DO_SHARP = 2;
   RE = 3;
   RE_SHARP = 4;
   MI = 5;
   FA = 6;
   FA_SHARP = 7;
   SOL = 8;
   SOL_SHARP = 9;
   LA = 10;
   LA_SHARP = 11;
   SI = 12;
   
   BELL = 9;
   
   VECES = 2;

END

FUNCTION float nota(int nota, int octava)
BEGIN
   RETURN(440 * pow(CONST_E, ( (octava - 3) + (nota - 10) / 12.0 ) * LN_2));
END

GLOBAL
   int i;
END

BEGIN

   FOR(i = 0; i < VECES; i++)
      midi(nota(MI, 1), 1000, 127, BELL, 2);
      midi(nota(LA, 1), 1000, 127, BELL, 2);
      midi(nota(MI, 1), 1000, 127, BELL, 2);
      midi(nota(SI, 1), 1000, 127, BELL, 2);
      midi(nota(MI, 1), 1000, 127, BELL, 2);
      midi(nota(SOL, 1), 1000, 127, BELL, 2);
      midi(nota(LA, 1), 1000, 127, BELL, 2);
      midi(nota(MI, 1), 1000, 127, BELL, 2);
      midi(nota(DO, 2), 1000, 127, BELL, 2);
      midi(nota(MI, 1), 1000, 127, BELL, 2);
      midi(nota(RE, 2), 1000, 127, BELL, 2);
      midi(nota(MI, 1), 1000, 127, BELL, 2);
      midi(nota(SI, 1), 1000, 127, BELL, 2);
      midi(nota(DO, 2), 1000, 127, BELL, 2);
      midi(nota(MI, 1), 1000, 127, BELL, 2);
      midi(nota(SI, 1), 1000, 127, BELL, 2);
   END

   midi_sleep(100);

   LOOP
      IF(key(_esc))
         BREAK;
      END
      FRAME;
   END

END
[/code]
Title: Re: [Bennu Module] mod_midi
Post by: FreeYourMind on May 12, 2010, 08:18:00 PM
Que bien, lo voy a probar ya.

Si te sirve de utilidad, te pongo este piano midi que he encontrado, se podria hacer algo similar con bennu usando la dll :)

(http://courses.washington.edu/info424/2007/images/vizGallery_clip_image002_0002.jpg)
Title: Re: [Bennu Module] mod_midi
Post by: Rein (K´)ah Al-Ghul on May 20, 2011, 12:53:22 AM
free, al final liberaste las fuentes???
Title: Re: [Bennu Module] mod_midi
Post by: FreeYourMind on May 20, 2011, 10:01:21 AM
Buena pregunta, el mod_beep si lo hice, si este no lo hice lo tienes dificil porque desde que saque esto ya he tenido que cambiar 2 veces de disco duro y la verdad no se si tengo algun backup, lo tendria que mirar pero mi habitación parece el almazen de la Retro xDD