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.
- 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.
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
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 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:
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.
No hay comentarios.:
Publicar un comentario