miércoles, 16 de diciembre de 2009

Análisis de requisitos

Ahora que ya están definidos los requisitos, es un buen momento para empezar a definir de forma más formal que es lo que hará o mejor dicho que es lo que queremos que haga la aplicación a partir de esos requisitos informales de modo que lo siguiente que hay que hacer es tomar cada uno de los requisitos y explicarlos de un modo más técnico y teniendo en cuenta con que arquitectura se va ha contar.

En este primer punto ya sabemos que se necesita un PC que cuente por lo menos con un ratón (con rueda como ya se verá después) y un teclado (aunque esto parezca una obviedad es importante comentarlo). Pero ahora bien, como debe ser ese equipo, ya que otro de los requisitos ya descritos es que se hará una reproducción de varios sonidos en tiempo real por lo que sin duda esos sonidos tendrán que estar cargados en memoria y además habrá que contar con un procesador que sea capaz de mezclar estos sonidos casi a la vez que se reproducen. Sin duda es algo difícil de calcular ya que en este caso dependerá del SO, de las librerías que usemos, del interfaz que se cree, etc. por lo que en un primer lugar lo mejor sería ver que requisitos tienen algunas aplicaciones similares y establecer este como el requisito para un equipo en el que funcionará la aplicación. En este caso se utilizará como modelo la aplicación Linux MultiMedia Studio cuyos requisitos son un procesador a 1GHz y al menos 512 MB de RAM siendo estos valores los que límiten los recursos de los que se dispone para hacer funcionar la aplicación.

A continuación hay que centrarse en los requisitos más funcionales de la aplicación si bien ya se explican casi por ellos mismos a partirde la especificación de requisitos hay que redefinirlos de forma más precisa de cada uno de los puntos:
    • El principal objetivo que se quiere desarrollar es la reproducción y mezcla de varios sonidos (intrumentos) así como la aplicaciṕon de efectos sobre estos (en principio solo el cambio de intensidad) al detectarse la pulsación del teclado (de aquí ya se podrían sacar esquemas pero me estoy conteniendo :P).

    • El control de la intensidad debe realizarse en tiempo real al combinar controles de ratón y teclado. Es decir, al girar la rueda del ratón hacia un lado mientras se mantiene pulsada una tecla se bajará la intensidad del sonido asociado y si se gira al lado contrario pues al contrario.

    • La relación entre cada tecla y su sonido debe ser configurable por el usuario.

    • Además el usuario puede añadir nuevas fuentes de sonido y asociarlo a una determinado caracter de teclado para su reproducción así como eliminar los que ya han sido cargados previamente o editarlos cambiando su fuente de sonido por ejemplo.

    • Los instrumentos que debe ser capaz de reporducir la aplicación por defecto (es decir propios de la aplicación) son los de bombo, caja (redoble, claqueta, caja), toms, tom suelo, platillos, hit hat y ride. Este requisito por suerte ya está cubierto.

    • Y, aunque esto ya se debería haber comentado con anterioridad, el interfaz de la aplicación debe ser capaz de ejecutarse en Windows, y en los diferentes entornos de escritorio de Linux, por lo que tendrá que ser compatible con X11.



En resumen, para que la aplicación sea válida a los objetivos iniciales que se han propuesto anteriormente, el desarrollo debe cumplir tanto los aspectos funcionales mencionados como ser capaz de cumplir estos aspectos en la arquitectura indicada por lo que se deberá realizar el resto de las decisiones teniendo todos estos puntos en cuenta.

martes, 8 de diciembre de 2009

Especificación de requisitos

De las opciones ya propuestas en el braistorimng he decido que para una primera versión de la aplicación que más o menos además ya será utilizable cuente con los siguientes puntos ya desarrollados:

  • Reproducción de los sonidos de bombo, caja (redoble, claqueta, caja), toms, tom suelo, platillos, hit hat y ride. Es decir, desarrollar la principal funcionalidad de DrumSim que es la sintesis de instrumentos de percusión en tiempo real en coordinación con las pulsaciones del teclado.
  • Control individual de intensidad de cada uno de los instrumentos cargados en tiempo real a través de la combinación de ratón y teclado.
  • Adición de nuevos instrumentos lo que permitirá aumentar la capacidad de la aplicación a través de nuevas funtes de sonidos de instrumentos de percusión u otros efectos de sonido.
  • Configuración y manejo de los instrumentos cargados que permitirá borrar y editar sus características.

Con todo esto ya se debe de tener una pequeña idea de que es lo que se quiere conseguir pero queda mucho trabajo por hacer en los que habrá que definir los detalles de la aplicación.

domingo, 6 de diciembre de 2009

Metodología

La idea del desarrollo de la aplicación es que avance poco a poco, es decir incluyendo tan solo unas cuantas funcionalidades en cada versión de las que se han propuesto en el brainstorming (asignando a cada tarea su prioridad) por lo que el proceso de desarrollo de la aplicación se basará en la selección de las funcionalidades a desarrollar o lo que es lo mismo una especificación de requisitos, seguido del análisis de cada una de estas funcionalidades, su diseño, su integración en la aplicación ya desarrollada o con las librerías disponibles y finalmente su codificación y publicación.

Una de las metodologías que permite desarrollar de una forma ciclica y ágil es Extreme Programing, una metodología que permite justamente lo que se pretenede que es realizar el proceso completo de análisis-diseño, codificación, etc. a partir de la epecificación de requisitos (que además en cualquier momento pueden cambiar) para cada fase del desarrollo. Finalemente una vez se hayan abordado los aspectos formales de cada una de las versiónes se procederá su codificación, si bién XP tiene un gran enfásis en el desarrollo de un código de calidad gracias a métodos como la Programación por parejas, pruebas unitarias y otras recomendaciones a seguir al escribir que se tratarán de seguir en esta fase.

Aquí os dejo un par de enlasces por si quereís más información:


jueves, 3 de diciembre de 2009

Forja


Ya está lista la forja del proyecto en RedIRIS dónde se irá publicando la documentación, el código y los paquetes de instalación de la aplicación. Para acceder a la página con el resumen del proyecto os dejo este enlace aquí. Además desde allí podeis acceder a los foros, la lista de correo, repositorio de código y otros servicios que serán muy utiles a la hora de trabjar.

lunes, 30 de noviembre de 2009

Empezamos

Y ahora en serio ya que ya por fin el proyecto DrumSim ha sido aceptado en el VI Concurso de Software Libre Universitario.
Podeís ver la ficha del proyecto aquí y el resto de proyectos presentados para esta edición aquí (es decir la competencia :P) y que en total suman 100 proyectos con 141 participantes. Desde aquí solo decir, que gane el mejor!

lunes, 16 de noviembre de 2009

Otro aplazamiento más

Tras volver a aplazar del 7 al 14 de noviembre se vuelve a prorrogar el plazo ahora hasta el 20 de noviembre para la presentación de proyectos. Solo queda esperar y decir lo que siempre se dice en estos casos: Espain is different.

jueves, 12 de noviembre de 2009

OpenAl

Logo OpenAl
Siguiendo con la recopilación de material necesario para el desarrollo, sin duda en este caso una parte muy importante será la librería de sonido. Aunque la elección de OpenAl tan solo se justifique en mi caso por su conocimiento (que la he probado) ya que supera con creces en funcionalidades a las que en prinicipio la aplicación necesitará (por el momento) y sobretodo está orientada a programación de videojuegos.

Antes de esta elección también he barajado otras posibilidades como lo son CLAM que sin duda está orientada más a la edición y sintetización de audio pero que es mucho más clompleja a la hora de desarrollar o ccAudio un proyecto que simplifica enormemente la programación pero que quizá a la larga se pueda quedar un poco corto y obsoleto aunque sin duda también sería viable.

miércoles, 11 de noviembre de 2009

Sonidos

Para empezar a recoger todas las piezas que serán necesarias para completar el programa he estado buscando sonidos de batería por ahí ya que lo de grabarlos por uno mismo y una calidad decente es algo más que complicado y hay que tener una batería he decidido que la mejor solución será utilizar los de otro programa. En este caso Hydrogen que es un secuenciador de batería GPL el cual os invito utilizar si no lo habeís hecho aún. Los sonidos en formato flac aquí.

lunes, 19 de octubre de 2009

Brainstorming

Para empezar hay que decidir que es lo que se quiere hacer y como de momento lo único que sabemos es que queremos que suene una batería hay que definir algún que otro aspecto y de momento las ideas principales son:

- Reproducción del sonido de bombo, caja (redoble, claqueta, caja), toms, tom suelo, platillos, ride e hit hat
- Control de volumen independiente de cada elemento.
- Configuración de teclado y fuentes de sonido.
- Adición de nuevos sonidos personalizados.
- Grabación y reproducción de sonidos grabados.
- Exportación \ Importación.
- Grabación por capas (ritmo sobre ritmo o lo que es lo mismo en varios canales.).


Aunque claro esta que no todas son para la primera versión y de momento son solo ideas. Por cierto si a alguien más se le ocurre alguna que otra cosa más que no dude en comentarlo y se tendrá en cuenta.

martes, 13 de octubre de 2009

Y a seguir esperando

Al final se ha prorogado el plazo de inscripción en en concurso por lo que ahora queda esperar hasta el 7 de noviembre si el proyecto ha sido aceptado o no. Aun así creo que voy a empezar a trabajar y a publicar alguna que otra cosa (de momento documentación) para que se le puede hechar un vistazo.

lunes, 5 de octubre de 2009

A la espera

Acabo de inscribir el proyeco al IV Concurso Universitario de Software Libre. En parte el proyecto lo decidí empezar para apuntarlo a este concuros y en parte es algo que ya tenía en la cabeza hace tiempo e incluso ya tenia alguna demo mala, así que en representación de la UNED y como un buen mal estudiante espero que lo acepten (o no) y pueda empezar a meterle mano a la cosa con más o menos ilusión.

viernes, 2 de octubre de 2009

Introducción

Empieza el proyecto pero, ¿de que se trata?

La idea principal del proyecto es que el teclado sea bombo, platillos y caja y que cualquiera pueda directamente contar con una batería que al igual que en el caso de las de verdad necesitará un tiempo de aprendizaje, un poco de habilidad para ser tocada y sobre todo sentido del ritmo. La aplicación pretende servir para crear acompaniamientos de batería y otros instrumentos de percusión en grabación de maquetas, borradores de canciones, perfilar nuevos ritmos así como en estudios caseros.

Por supuesto, todo esto desde el software libre y multiplataforma que si no es tirar el dinero.