jueves, 10 de abril de 2014

[INVESTIGACIÓN] Conclusiones y trabajo a futuro

Para esta semana se pidió redactar la parte de conclusiones y trabajo a futuro. Debido a que las conclusiones aún no son ciertas del todo, marqué en rojo aquellas partes de la discusión que pueden ser cambiadas o removidas.
  • Se redactó un resumen del proyecto en general, abarcando principalmente la implementación de software y explicando lo que hace (tomando en cuenta que aún está en desarrollo).
  • Se explicaron algunos resultados de las pruebas y las conclusiones a las que se llegó con esos resultados, mencionando lo que se podría hacer para mejorar.
  • Se agregó la parte del trabajo a futuro, donde se mencionan algunas cosas que no se lograron durante el desarrollo propuesto pero que siguen en planes para implementar en un futuro.
Avance de proyecto

Durante esta semana se trabajo en mejorar algunos aspectos de funcionamiento del programa, específicamente analizar algunos errores que se generan a veces y modificar algunas rutinas que causan que el programa se quede congelado.

Para evitar los congelamientos repentinos, cambié algunas rutinas y las separé de la implementación principal. Ahora en lugar de ejecutar una parte del programa en un hilo, ejecuto un script en un subproceso distinto.

Aún ejecuto un hilo que espera una respuesta del subproceso, sin embargo, es un hilo que tiene poca carga, por lo tanto no causa congelamientos.

Una ventaja es que la lógica del script es que puede ser implementada en un lenguaje distinto a Python, lo cual puede causar una mejora de rendimiento, la cual es necesaria ya que el procesamiento tarda varios minutos actualmente en terminar, si deseo alcanzar la meta de procesamiento en tiempo real, será necesario hacer algo al respecto con ello.

En cuanto a los errores que se detectaron, parece ser que la causa es el procesar un archivo el cual no presenta patrones reconocibles. Como solución rápida, al detectar el error, en lugar de regresar la pista siguiente obtenida mediante el análisis, se regresa una pista al azar diferente a la actual.

Normalmente cuando no hay errores, se obtiene una lista de reproducción constante como la siguiente:

La primera parte corresponde al archivo a reproducir, la segunda dice la forma en que se obtuvo ya sea mediante el análisis (process) o mediante la selección al azar (random).

Cuando sucede el error ésto es lo que internamente sucede en el programa:

Se puede observar que el archivo conflictivo es "Qtam1t-120.wav", ya que después de reproducirse causa un error.

Por ahora continuaré trabajando en mejorar el análisis y hacerlo más rápido, muy probablemente cambie el lenguaje de programación exclusivamente para esta parte (una vez que ya sea eficiente).

También analizaré los datos de este archivo conflictivo y dar una solución más viable.

El desarrollo de los efectos de transición y la interfaz gráfica aún están en proceso.

miércoles, 2 de abril de 2014

[INVESTIGACIÓN] Análisis de experimentos

Para esta semana se redactó parte de lo que será la sección de análisis de experimentos la cual consiste en verificar los resultados de las evaluaciones obtenidas.

Cada prueba se analiza por separado y se explican las variables de cada prueba, así como el por qué se decidió utilizar tales variables. También se explica el por qué se realiza ese experimento y la intención de saber sus resultados.

Los análisis finales se redactarán una vez concluidas las pruebas, en ellos se explicará el motivo del comportamiento de los resultados obtenidos.

Avance de proyecto

Durante esta semana se trabajó en la selección automática de pistas. En la entrada anterior se explico que para encontrar patrones se analizan coincidencias de intensidades y se almacenan los tiempos y la cantidad de coincidencias.

Para seleccionar una pista de todas las existentes primero se analiza para cada una sus patrones y se obtienen sus tiempos y los patrones que puedan coincidir.

En cada lista se tienen los patrones compatibles con la pista actual y se procede a encontrar en cada lista un patrón que tenga la cantidad máxima de coincidencias posibles pero el tiempo de inicio mínimo posible.

Por cada lista se obtiene un candidato de tiempo de inicio y se guarda su número de coincidencias. Se evalúa de la misma forma con el candidato de cada pista y de esa manera se obtiene una sola.

A continuación se muestra en el video una prueba de la reproducción y la selección de pistas de forma automática:


Como se puede observar en el video se nota un patrón de reproducción con las pistas siguientes en orden: Stam1h-120.wav > Fill1s-120.wav > Qtam1t-120.wav, siendo la cuarta pista siempre variable.

Debido a que a veces se tiende a presentar este tipo de repetición, se agregó un factor aleatorio para cambiar a una pista compatible. Sin embargo es posible que en el futuro se cambie por una lista tabú, o algún método más eficiente en la selección de pistas.

Por ahora se genera una reproducción basada en la compatibilidad de patrones entre pistas y no una lista de reproducción en sí.

Para el resto del proyecto se trabajará en mejorar aspectos de este algoritmo y en producir una transición suave entre pistas.

También para esta última etapa se empezarán con las pruebas, inicialmente con ciertas pruebas de rendimiento, una vez que el proyecto esté completo se concluirán con las pruebas de rendimiento restantes y finalmente se realizarán las pruebas con usuarios.