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.