jueves, 27 de marzo de 2014

[INVESTIGACIÓN] Reportaje de resultados experimentales

Estas dos semanas se utilizaron para generar el reporte de resultados de los experimentos.

Para las pruebas de rendimiento se generaron tres cuadros.
  • El primer cuadro describe los resultados de velocidad de procesamiento, tomando en cuenta el sistema operativo y la cantidad de procesos que hay corriendo.
  • el segundo cuadro describe la eficiencia algorítmica, que consiste en analizar los resultados de la generación automática de listas con una lista predeterminada, se toman en cuenta criterios como un umbral de reconocimiento y la cantidad de bandas en la frecuencia.
  • el tercer cuadro solo es una prueba de funcionamiento, se corre todo el programa y se miden criterios del sistema operativo como la memoria o porcentaje de cpu utilizado.
Para las pruebas con usuarios se generaron 3 gráficas circulares. Las evaluaciones son: Muy Bueno, Bueno, Regular, Malo y Muy Malo.
  • La primera gráfica describe el grado de aceptación de los usuarios en cuanto a la generación automática de listas contra su propio criterio.
  • La segunda gráfica describe el nivel de aceptación de los usuarios para los efectos de transición entre pistas.
  • La tercera gráfica describe la facilidad con que los usuarios realizaron sus tareas.
Tanto las gráficas como los cuadros están en archivos independientes, la idea es generar un script que corra estas pruebas y modifique los archivos correspondientes para evitar escribir a mano cada uno.

Avance de proyecto

Durante este tiempo se trabajo en el reconocimiento de patrones al grado de encontrar los instantes de tiempo candidatos entre ambas pistas y la cantidad de coincidencias de patrón en ese instante de tiempo.

  • En la captura se muestra en la primera fila el nombre del archivo a comparar.
  • En las filas siguientes se tiene los instantes de tiempo en que se encuentra un patrón.
    • Las filas están ordenadas de mejor a peor candidato a ser un patrón.
    • Al mismo tiempo en cada fila se ordenan los instantes de tiempo del candidato de mejor a peor.
Para seleccionar un candidato, debo de calcular en cada uno de ellos, un patrón con un instante de tiempo lo suficientemente grande para dar buen tiempo de reproducción al archivo actual pero lo suficientemente amplio para dar la mejor calidad a la hora de hacer la transición entre pistas.

Para las siguientes semanas se trabajará en realizar la selección de candidato y con esto tendré la generación automática de listas. Una vez terminado esto, iniciaré con los efectos de transición.

jueves, 13 de marzo de 2014

[INVESTIGACIÓN] Diseño experimental

En esta semana se trabajó con el siguiente capítulo de tesis llamado diseño experimental. Consiste en describir los procesos de evaluación para el proyecto.

Decidí hacer dos tipos de pruebas: pruebas de rendimiento y pruebas con usuarios.

Las pruebas de rendimiento consisten en correr el programa bajo ciertas circunstancias y analizar su comportamiento, son las siguientes:
  • Velocidad de procesamiento: Se hace una prueba de velocidad de procesamiento mientras se reproduce un archivo.
  • Presición algorítmica: Se evalúa que tan acertado es el programa al generar datos.
  • Eficiencia de ejecución: Se evalúan aspectos de rendimiento en cuanto a la plataforma.
La intención es correr estas pruebas en las plataformas distintas plataformas disponibles en distintas circunstancias de software y hardware.

Por otra parte, las pruebas con usuarios solo son encuestas de retroalimentación, son las siguientes:
  • Generación automática de listas de reproducción: El usuario evalúa presición y calidad.
  • Transición y mezclado entre pistas: El usuario evalúa que tan bueno o malo es el efecto de transición y mezclado de pistas.
  • Interfaz gráfica: El usuario evalúa la usabilidad del software.
Avance de proyecto

Durante esta semana se trabajo en el reconocimiento de patrones y se modificaron cosas menores.

Para la detección de patrones utilizo la información obtenida de las pistas y busco coincidencias numéricas. Una vez encontradas todas las coincidencias se procede a comparar rangos de valores para intentar agrupar patrones.

Para hacer una prueba utilicé esta pista:

120 BPM

La pista de audio es muy constante, aunque las intensidades varían un poco el tiempo entre picos es similar, casi 2 picos por segundo dando un tempo de 120 BPM aproximado.

Al correr el programa de detección de patrones éste es el resultado:

Como se puede observar el resultado es una serie de listas con valores. El primer número fuera de la lista representa la posición temporal, por ahora manejo un índice. Los valores de la lista son los graficados anteriormente.

La primera fila contiene todos los valores graficados en orden. La cual es útil para analizar el orden de los patrones.

El resto de filas se organizan por patrones basados en similitudes.

Los siguientes datos describen un patrón con los valores [14070, 120]:

1 [14070, 120]
3 [14070, 120]
5 [14070, 120, 18760, 120]
9 [14070, 120]
11 [14070, 120, 28140, 120, 18760, 120]
17 [14070, 120, 18760, 120]
21 [14070, 120]
23 [14070, 120]
25 [14070, 120]
27 [14070, 120]
29 [14070, 120, 18760, 120]
33 [14070, 120, 18760, 120]
37 [14070, 120]
39 [14070, 120]
41 [14070, 120]
43 [14070, 120, 11260, 120, 18760, 120]
49 [14070, 120, 18760, 120, 28140, 120, 18760, 120, 18760, 120, 18760]

Por otra parte los datos valores describen un patron invertido:

2 [120, 14070]
4 [120, 14070]
6 [120, 18760]
8 [120, 14070]
10 [120, 14070]
12 [120, 28140]
14 [120, 18760]
16 [120, 14070]
18 [120, 18760]
20 [120, 14070]
22 [120, 14070]
24 [120, 14070]
26 [120, 14070]
28 [120, 14070]
30 [120, 18760]
32 [120, 14070]
34 [120, 18760]
36 [120, 14070]
38 [120, 14070]
40 [120, 14070]
42 [120, 14070]
44 [120, 11260]
46 [120, 18760]
48 [120, 14070]
50 [120, 18760]
52 [120, 28140]
54 [120, 18760]
56 [120, 18760]
58 [120, 18760]

El resto de datos también describen patrones con valores variados pero para muchos de esos valores ya se describió un patron que incluye al menos una vez su posición temporal.

Con la posición temporal y los datos obtenidos es posible calcular el inicio y final de una pista, los cuales son útiles para generar una transición entre pistas.

Para las siguientes semanas se trabajará en mejorar el algoritmo y se iniciará con las primeras pruebas en la generación de pistas de reproducción basadas en simples comparaciones de datos y el tiempo de separación entre picos.

jueves, 6 de marzo de 2014

[INVESTIGACIÓN] Implementación de la solución propuesta

Durante esta semana se continuó con la redacción de la solución propuesta.

En el capitulo se tienen 4 secciones:
  • Diseño e implementación: Se habla del diseño de interfaz y del funcionamiento del software.
  • Obtencion de información relevante: Se habla de la información obtenida de las pistas y del analisis que se realiza con esta.
  • Generación de listas de reproducción: Describe los algoritmos utilizados para generar listas de forma automática.
  • Transición inteligente entre pistas: Describe la forma en que se hace la transición entre pistas y como funciona.
Se agregaron figuras temporales que representan ejemplos gráficos de la implementación y diagramas de funcionamiento.

Avance de proyecto

En ésta semana no hubo mucho avance en cuanto a código pues sigo experimentando con métodos que me permitan comparar la información de forma eficiente y buscar una lógica de comparación entre los datos.

Por otra parte ahora se toma en cuenta otro parámetro para la obtención de información. Ahora se toman en cuenta rangos mayores y menores a una variable dada, dependiendo del rango son los datos que se obtienen.

En uno de los sonidos del post anterior este era el resultado de sus datos:

Ahora los resultados son así:

Aparentemente ahora la gráfica muestra cambios con respecto al ritmo más parecidos a los de la pista.