FMOD Ex

Started by josebita, September 15, 2009, 05:14:28 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.


osk

Oh, guay!!
Unas preguntas...si no te importa...

¿No habías hecho una librería para usar Gstreamer -al menos la parte de audio-? ¿La has desechado?
¿Sería posible retirar la dependencia de SDL_Mixer y añadir la de FMODEx para Bennu, si se viera que esta última librería es mucho mejor?
¿Has visto los tipos de licencia que tiene FMOD?...porque yo no me termino de aclarar. Lo que es seguro que GPL no es.

Venga, gracias!!

josebita

La verdad es que GStreamer está muy bien, pero se me complica hacer algunas cosas muy simples y se estaba convirtiendo en algo demasiado complicado de portar a windows (ando intentando echar a andar el karaoke en windows y quizás es que no entiendo bien los tutoriales o soy un poco torpe, pero en comparación ayer escribí el mini-binding en cerca de 2 horas, basándome en un ejemplo que proporcionan y sin conocer el nuevo API de FMOD 4). Sinceramente lo que me hace falta es el sistema de audio de Bennu pero que pueda reproducir MP3, porque no puedo controlar el formato en el que el usuario se descarga las canciones del karaoke. Además, de momento no tengo intención de mejorar el soporte de vídeos para el karaoke.

La librería es tremendamente sencilla de portar a windows (de hecho, la escribí en un windows 2008) y para hacer el tipo de cosas que me hacen falta para el karaoke me viene mucho mejor.

Además, ya conocía FMOD (hace muuuuchos años hice otro binding para FMOD 3 para Fenix) y sé que funciona muy bien.

Y no, yo no reemplazaría -en general- el sistema de audio de Bennu por éste. En un proyecto "normal" el programador puede convertir las músicas a OGG si hace falta y en ese caso el sistema de audio actual basado en SDL_mixer me parece cojonudo.

Y en cuanto a las licencias: si el proyecto es gratuito y sin ánimo de lucro te permiten usar FMOD Ex -que es comercial a más no poder- de forma gratuita. Para un proyecto comercial o incluso shareware te cobran.

josebita

#3
Bueno, me he puesto a trabajar en esto por programar un poquillo algo que no sea el port a la Wii.

Ahora puede reproducir más de una canción a la vez (INSERTAR INSULTO Y/O MOFA AQUÍ) y puede sacar las etiquetas de los archivos de audio (tipo autor, estilo... lo que haya).
Además, me he puesto a trabajar en el soporte para micrófonos (¡karaoke!) y he visto que es muy fácil de hacer que detecte los tonos de los micros (incluso de más de uno, pa lo que de la CPU).
Aún así, me queda ver cómo hacerlo de forma que se acople bien a Bennu.

También he limpiado y simplificado el número de funciones y su uso.

Aviso por ir poniendo los dientes largos. Cuando lo tenga funcionando os lo dejo por aquí :)
[code language="bash"]Mic section=========================================================
Number of microphones: 1
Mic 0: Linux EsounD Driver
Sound playback section==============================================
Playing on channel 31
[/code]

josebita

#4
Bueno, el soporte para leer la entrada del micro y sacar el espectro (FFT) ya está listo. El API aún no es definitivo, pero por si a alguien le interesa echarle un ojo, la tengo funcionando en Linux, MacOS X y -aunque aún no la he compilado- windows. ¿Alguien quiere echarle un ojo?.



PD: Las barras que se ven abajo a la izqda. de la ventana de BennuGD son las barras del espectro de mi voz; como estaba hablando bajito, son pequeñajas. Y como estaba hablando grave (frecuencias bajas), están a la izqda.

FreeYourMind

A la foto que has puesto ya se lo he echado :) si quieres que eche el otro ojo a algo mas dimelo :)

josebita

#6
Es más por si a alguien le resulta útil para algún juego. Lo he hecho para mi karaoke, y por tanto lo primero que le he hecho es que lea la FFT del micro, pero es muy fácil y pronto le haré que pueda sacar la FFT de la música que se está reproduciendo.

Se me ocurre que, por ejemplo, se podría hacer un escenario en plan discoteca, donde las luces se vayan iluminando con la música, o cosas así.

PD: Pero vamos, que si te es útil, dímelo y la subo (win?, linux?) mañana :)

FreeYourMind

Sabes que llevo esperando la version Windows de tu karaoke hace años, o una que funcione en mi linux Mint...
Como me molaria ponerle una musica de baile portuguesa ;)

A ver si pones la prueba esta que estas haciendo para probar.

josebita

Mañana subo los binarios del programilla de ejemplo compilados en Ubuntu, así que casi seguro que funcionarán en Mint.

Y en cuanto al karaoke, el martes acabo mis exámenes, así que le meetré un repaso e intentaré sacar versiones binarias (win/linux/osx) durante septiembre/octubre, con soporte para detección de tonos de voz.

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Ok, entonces mañana desenpolvoro mi portatil linuxero, que tengo que probar tambien los beeps de Splinter.

Drumpi

Mola, la de cosas que se pueden hacer sacando el espectro de la voz... empezando por el reconocimiento de palabras.
¿Qué librería has usado para ello? ¿o te has currado tu la FFT en C?

k++
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)

josebita

La gracia está en que sólo estoy usando FMOD Ex, que es la que se encarga de todo. Si alguien mira el código C de la librería, verá que es tremendamente simple para lo que hace. Ojalá hubiera algo parecido en capacidad y simplicidad de uso a FMOD Ex que fuera libre... :(

En cuanto al ejemplo, intentaré ponerlo esta noche, pero igual tiene que ser mañana por la mañana.

Y en cuanto a las versiones del karaoke... la verdad es que lo abandoné durante algún tiempo. La FMOD Ex se colgaba durante unas buenas cuantas versiones al intentar reproducir un OGG y con otras librerías no tengo soporte para micro. Hace cosa de una semana volví a probar la última versión de la FMOD Ex y resulta que ya no casca; por eso he retomado el karaoke.

josebita

#13
Versiones binarias:

MacOS X: http://www.megaupload.com/?d=WLZ8VRU3
Win32:     http://www.megaupload.com/?d=Z77XXY7U
Linux:      http://www.megaupload.com/?d=5QHIV7WF

Notas:
* Como ya digo, el API está sin terminar, así que algunas funciones/globales puede que cambien de nombre o forma de uso. Aún así, el cambio probablemente no será enorme. De todos modos, agradezco comentarios/sugerencias.

* MacOS X: Descomprimir en ruta sin espacios y doble click en el el programa .app resultante.
* Windows: Descomprimir y ejecutar main.exe.
* Linux: Descomprimir en ruta sin espacios y doble click en runme.sh.

* El paquete para MacOS X lo podeis usar de ejemplo de empaquetado de un juego BennuGD para MacOS X. Siempre y cuando no contenga espacios en el nombre, se comportará como una aplicación más del sistema.
* Las versiones para MacOS X y Windows incluyen la última versión binaria de BennuGD. La versión para Linux asume que está instalado en el sistema bien por el script oficial o por los paquetes de mi PPA.

Danielo515

Está genial! No me he puesto con el código aún, solo he probado el ejecutable, pero para que veas aquí te pongo una comparación de cómo lo ve el windows media y cómo lo ve tu programa con una canción de Amon Amath.