Piano Virtual utilizando framework QT
Descripción del problema
Nuestro
proyecto surge para suplir el hecho de contar con un piano, entendiendo que en
la mayoría de los casos un piano alcanza un precio no accesible para las
personas. Nuestro proyecto se enfoca en la carencia de la mayoría de las
escuelas públicas de tener un piano, por lo que implementaremos un software que
reproduzca un piano y un temporizador para los fines que estimen convenientes
los alumnos, esto ya que es más fácil que un colegio tenga computadores a que
tenga pianos.
Análisis del
problema
En el sistema los
usuarios serán los alumnos en este caso
y el programa, los usuarios interactuarán con el programa por medio del mouse
conectado al computador, el cual al tener el cursor sobre una tecla y
accionarla, implicará el sonido de la tecla antes mencionada.
Por otro lado tendremos un
comportamiento similar al accionarla el temporizador, no obstante, este se basa
en dos click`s, el primero para iniciar el temporizador y un segundo click para
detener el temporizador y mostrar por pantalla el tiempo efectuado entre estas
dos acciones.
Definición de
requerimientos
Nuestro proyecto presenta 2
casos de uso principales y un tercero derivado de ambos.
Respecto al primer caso “Generar
sonido”:
Usuario busca generar
sonido(s) en base a la marcación de una tecla o varias teclas, usuario hace
click en una o varias teclas, la condición que se debe cumplir es que el
usuario ejecute un click en el espacio correspondiente a cada tecla, es decir
no hacer click en el límite de dos teclas, tras ésta acción del usuario se
emite el sonido correspondiente a la tecla.
Respecto al segundo caso
“Utilizar temporizador por fines libres”:
Usuario busca ver el tiempo
entre el evento de inicio y término del caso, en base a la marcación de un
botón de inicialización del temporizador y de un botón de término de la misma.
La condición que se debe cumplir es que el usuario ejecute el primer click en
el espacio determinado y que el segundo se realice en el mismo segmento del
programa. La salida corresponde al tiempo entre estos eventos.
Respecto al tercer caso
“Temporizador de melodías”:
Usuario busca ver el tiempo
entre el inicio de una melodía en el teclado y el término de la misma, para
ello el caso se inicia con un click en el temporizador, para luego proceder con
la ejecución de click`s reiterados en teclas del piano, para concluir con la
ejecución del segundo click en el temporizador, las condiciones para que este
caso ocurra son las derivadas del caso uno y dos, teniendo finalmente como
salida la melodía y cuánto se ha demorado en realizarse la misma.
Diagrama
de clases UML
Diagrama
de secuencias caso 1:
Vista
del piano y su temporizador:
Dificultades:
La
principal dificultad fue la lectura de archivos, la cual no respondía de forma
estándar tras indicar la dirección de los mismos, lo cual se resolvió añadiendo
los archivos de la forma “resource file” en QT, tras ello la lectura de los
archivos funcionó con las rutas establecidas anteriormente.
Martín
Rojas
Diseño
y programación orientada a objetos - ELO329
Profesor
Dr. Agustín González
El proyecto se
encuentra en el siguiente link: Project_ELO329.zip