Disponible la version 0.3 de Tapita

#16 por monon el 29/06/2014
Pablo_F escribió:
El logo es muy gracioso, me encanta.

Jaja Ya se que te encanta este "ninot".
Pero se hace dificil crear un logo que contenga muchos elementos de informacion y no pierda el caracter de icono.
Aun así lo intentaré.

Por otro lado veo que parece ser que las ultimas modificaciones (respecto "keyboard input") funcionan.

He subido una alpha 6 (0.3.1) que incluye un menu para conectar los puertos de jack, el cual se refresca aunque la conexion se haga a traves de un patchbay estilo Qjackctl.

Sigo esperando mas apreciaciones (o errores) de la aplicacion.

Una cosita mas para Luis:
Intenté hacer free() a las llamadas de double_to_char() para liberar malloc(), como habias comentado en otro hilo pero me provocan Violaciones de Segmento ¿ 8-[ ?
Subir
#17 por vagar el 29/06/2014
Antes de meternos en harina sería interesante, dada la complejidad que ya ha adquirido el invento, empezar a llevar control de versiones. Veo que en SF tienes dado de alta un repo git, ¿por qué no lo usas?

http://sourceforge.net/p/forge/documentation/Git/

Ars longa, vita brevis.
Mi colección de enlaces web en diigo.

Subir
#18 por igny el 30/06/2014
Salut Monon, siento ser siempre el gafe joder. Enhorabuena por el esfuerzo y trabajo que te estàs pegando.

Mira he bajado la versión última, con avlinux i al compilar me da el siguiente error:

igny@pcxavi:~/Downloads$ cd tapita-0.3.1-alpha6
igny@pcxavi:~/Downloads/tapita-0.3.1-alpha6$ cd ./src
igny@pcxavi:~/Downloads/tapita-0.3.1-alpha6/src$ make
gcc -g -Wall utils.o tapita.o -lm -ljack -lasound `pkg-config --libs --cflags gtk+-2.0` -o tapita
tapita.o: In function `main':
/home/igny/Downloads/tapita-0.3.1-alpha6/src/tapita.c:286: undefined reference to `gtk_combo_box_text_new'
tapita.o: In function `connect_port':
/home/igny/Downloads/tapita-0.3.1-alpha6/src/tapita.c:700: undefined reference to `GTK_COMBO_BOX_TEXT'
/home/igny/Downloads/tapita-0.3.1-alpha6/src/tapita.c:700: undefined reference to `gtk_combo_box_text_get_active_text'
collect2: ld returned 1 exit status
make: *** [tapita] Error 1
igny@pcxavi:~/Downloads/tapita-0.3.1-alpha6/src$ su
Password:
root@pcxavi:/home/igny/Downloads/tapita-0.3.1-alpha6/src# make install
gcc -g -Wall utils.o tapita.o -lm -ljack -lasound `pkg-config --libs --cflags gtk+-2.0` -o tapita
tapita.o: In function `main':
/home/igny/Downloads/tapita-0.3.1-alpha6/src/tapita.c:286: undefined reference to `gtk_combo_box_text_new'
tapita.o: In function `connect_port':
/home/igny/Downloads/tapita-0.3.1-alpha6/src/tapita.c:700: undefined reference to `GTK_COMBO_BOX_TEXT'
/home/igny/Downloads/tapita-0.3.1-alpha6/src/tapita.c:700: undefined reference to `gtk_combo_box_text_get_active_text'
collect2: ld returned 1 exit status
make: *** [tapita] Error 1
root@pcxavi:/home/igny/Downloads/tapita-0.3.1-alpha6/src#

Salut monon
Subir
#19 por monon el 01/07/2014
lgarrido escribió:
tienes dado de alta un repo git, ¿por qué no lo usas?

La di de alta para , mas adelante, usarla. Si , pero... la pereza!
No vayas a pensar con eso que soy un haragán indomable.

igny escribió:
undefined reference to `gtk_combo_box_text_new'

Si tienes instaladas las bibliotecas de desarrollo de gtk2
libgtk-2.0-dev
lo mas probable es que sea un problema de versiones.
Por lo visto GtkComboBoxText fué incluida a partir de la versión 2.24.
Quiza la tuya es un poco mas "vieja"
Puedes comprobarlo con
dpkg-query -s libgtk2.0-dev | grep -i version

Así que mucho me parece que voy a tener que cambiar la creacion de combobox.
Subir
#20 por monon el 01/07/2014
#18
Bueno creo que ya está arreglado.
para la alpha 8 , que subiré al final del dia de hoy, he cambiado GtkComboBoxText por un ComboBox tradicional.
Supongo que así funcionará en todas las versiones de Gtk 2.

Ya me diras cosas Xavi: Si has podido compilar, si te responde todo bien ( jeje sobre todo la "barra de espacio"), y prueba tambien la entrada de jack a ver que tal...
Subir
#21 por monon el 01/07/2014
#17
Luis te prometo que en los proximos dias intento usar el repositorio Git... de verdad de la buena.
Subir
#22 por vagar el 01/07/2014
Hey, monon, tranqui. A tu ritmo, y sólo si tú quieres, faltaría más.

Yo te lo recomiendo encarecidamente porque facilita muchísimo el desarrollo y la colaboración. Por ejemplo, puedes probar algo y si no funciona deshacerlo muy fácilmente. O si yo le echo un vistazo a tu código y tengo alguna sugerencia me cuesta menos mandarte un parche y a ti aplicarlo que andar copiando y pegando en el foro. Pero si ves que tienes otras prioridades no pasa nada.

Ars longa, vita brevis.
Mi colección de enlaces web en diigo.

Subir
#23 por monon el 01/07/2014
Pero si es que tienes razón... las cosas hay que intentar hacerlas lo mejor posible (ya que no perfectas, y dentro de las capacidades y conocimientos) y si Git ayuda pues mejor.

Esto son simplemente ejercicios de apredizaje, partiendo de problemas reales que yo tengo.
Te habras fijado que mi estilo es muy BASICo.
Desde 1982 que no programaba (hasta que reempeze en 2009 con python) y solo hace falta un GOTO por ahí perdido.
Pero aún así quisiera hacerlo bien ( o no muy mal) y que sea util para mi y para vosotros ( un "vosotros" amplio).

Por fin he conseguido liberar los punteros generados desde double_to_char() sin que me proboque ningun problema.
Así que ese cambio tambien está incluido en "alpha 8". Y alguna cosa más.

Salud y gracias
Subir
#24 por igny el 03/07/2014
Salut monon, yo tampoco quiero agobiar amigo. Faltaría más.

Gràcies.

P.D. Tienes razón, avlinux trae la versión Version: 2.20.1-2
(un poco vieja :) )

Salut
Subir
#25 por monon el 03/07/2014
Salud Xavi el codigo del repositorio Git.
http://sourceforge.net/code-snapshots/git/t/ta/tapita/code.git/tapita-code-bc615bccec8a9672999a799d38ad93ff011e57a1.zip
Hacaba de salir del horno gracias al aviso de Luis. Habia dejado "tu" trabajo a medias.
Ahora espero que funcione en todas las versiones de GTK.
Subir
#26 por vagar el 03/07/2014
¡Fantástico, prueba superada! :campeon: Bienvenido monon al lado oscuro :grupo:

Compila bien, funciona más o menos bien (sólo he probado el espaciador) y el repo va perfectamente.

Próxima parada: usar un sistema de compilación y detección de dependencias. Yo últimamente uso CMake, otras alternativas son autotools o waf.

Posibles mejoras:

1) Reintentar la conexión al servidor jackd 4-5 veces si falla, con intervalos de 1 segundo. Así le da tiempo a arrancar si no estaba ejecutándose.

2) Modificar el algoritmo de medición haciéndolo adaptativo, de forma que los últimos golpes tengan mayor ponderación. Por ejemplo, periodo_medio = (ultimo_periodo + periodo_medio) / 2

Ars longa, vita brevis.
Mi colección de enlaces web en diigo.

Subir
#27 por monon el 04/07/2014
1- Habia estado pensando en lo del servidor jack.
Que la aplicacion se lanzase igualmente pero con las opciones de jack inactivas y/o "hidden".
Por si alguien quisiera usar la aplicacion sin usar jack o sin tenerlo instalado.

2- ¿No nos iria eso "desviando" el tempo?
Quiero decir... si en 6000 ms. exactos he dado 12 taps el programa sabe que estamos a 120 BPM aunque alguno de los golpes estuviese desfasado , siempre que el ultimo haya sido justo a los 6000.
¿Que sucederia si ese pequeño "desfase" de los golpes lo voy intruduciendo en el calculo?
Ahora , por decirlo de algun modo ( y con taps suficientes 10, 15) un golpe un poco despistado o errado lo desprecia.
Voy a probarlo y te digo algo...
Subir
#28 por vagar el 04/07/2014
Bueno, el ejemplo que he puesto es muy simplificado, simplemente para ilustrar la idea. La ponderación puede ser distinta, más conservadora:

periodo_medio = 0.1 * ultimo_periodo + 0.9 * periodo_medio

o tener en cuenta más de un golpe reciente:

periodo_medio = 0.2 * ultimo_periodo + 0.1 * penultimo_periodo + 0.7 * periodo_medio

En cualquier caso la idea es ir diluyendo, más o menos rápidamente, la influencia del pasado. Lo bueno del algoritmo adaptativo es que puedes hacer accelerandos o ritardandos, el algoritmo actual es muy conservador.

Por cierto, por si a alguien le resulta curioso, esas fórmulas implementan un filtro paso bajo digital. Al mezclar la historia con el valor actual se suavizan las variaciones en éste. Cuanto más alto sea el coficiente de ponderación de la historia, más baja será la frecuencia de corte.

Ars longa, vita brevis.
Mi colección de enlaces web en diigo.

Subir
#29 por monon el 04/07/2014
En principio la idea general de tapita era solo poder determinar un tempo de modo rapido e incondicional.
Si quieres te explico la historia, pero... Bah! Te la explico igual. ;-)

Una de las bandas que "manageo" son un desastre.
No por que no sean buenos desde un puto de vista extrictamente musical, si no por que , de un ensayo para el otro, no se aclaran en determinar los tempos de los temas. Ya sabes, cuestiones de estado de animo y demas monsergas.
No todos estan en el mismo punto de sus bioritmos y discuten como demonios.
Así que necesitan un instrumento objetivo que les pueda decir a que tempo base deben tocar tal o cual tema.
El cual no va a evitar las discusiones, pero si a que todos sepan a que tempo debe ser interpretado un tema determinado.

Curioso eso que explicas del filtro. ¿supongo que te refieres al algoritmo en si mismo?
Subir
#30 por catorze el 04/07/2014
Lo que dice lgarrido es interesante, pero ¿se podria poner como opcional? dependiendo de el caso en que nos encontremos puede ser útil o no.

Supongamos que quiero averigur el tempo de un tema que me han pasado y que se sabe que está grabado con claqueta, seria preferible que no sea adaptativo.

El otro caso seria cuando el que tiene que grabar está practicando el tema y vas marcando para saber que tempo utiliza, el adaptativo seria mejor opción claro.

Saludos!
Subir
Respuesta rápida

Regístrate o para poder postear en este hilo