domingo, 28 de marzo de 2010

Sentido del ritmo II


Después de duras negociaciones con mi pobre antiguo Pentium 4, finalmente he podido grabar un vídeo con sonido y capturarlo todo en el mismo ordenador. Por suerte el driver ASIO de la tarjeta empleada, una E-MU 1820, permite el envío de audio al driver multimedia desde las entradas ASIO o físicas simultáneamente.

Dejando a un lado cuestiones técnicas, aquí tienes a REQUIEM trabajando para ti. El vídeo muestra la creación de una ritmo sencillo (bombo y platos) usando los pulsadores virtuales (PADs) en pantalla. Espero que te guste.
 

viernes, 26 de marzo de 2010

Tecnología obsoleta


A diferencia de lo habitual, REQUIEM está siendo desarrollado usando un ordenador arcaico con unas prestaciones ridículas en cuanto a velocidad y potencia. Esto garantiza que el código pueda “volar” en las máquinas de última generación. Aunque REQUIEM no ataca directamente a la CPU del ordenador, sí recarga el rendimiento del motor MIDI y audio de Logic con la consecuente carga en el driver ASIO del ordenador. Si a mi me funciona significa que funcionará en cualquier ordenador moderno.

Este principio tan “bello y noble” tiene una consecuencia negativa: estoy haciendo malabarismos para lograr tener a REQUIEM en reproducción mientras se graba el audio generado se envía simultáneamente al driver multimedia de Windows para que la aplicación de grabación de video en pantalla pueda capturar tanto la imagen como el sonido. Mi pobre PC está sufriendo… (Debo decir que aunque es una máquina muy antigua está configurada para arrancar con el 97% de recursos libres) Este es el motivo por el que hasta ahora no he publicado un vídeo con sonido.

En cuanto a REQUIEM, el motor de la sección “Drums Device” ha sido modificado con los buffers de copia de pista y copia de todo el patrón entero (“Phrase” en el argot de REQUIEM, esto es, copiar las 8 pistas simultáneamente). Además he añadido una función muy simple pero altamente útil: “Copy to next”. Esta función realiza una operación “Copy” del instrumento de percusión seleccionado (pista seleccionada en el “Drums Device”) en la “Phrase” seleccionada y pega el contenido copiado en la siguiente “Phrase” en el mismo instrumento seleccionado. Esto permite transferir pistas al patrón siguiente al actual, pudiendo crear variaciones del patrón en grabación con una sencilla operación.

Pero además estoy implementado esta misma operación a escala “Phrase”, es decir, copiando los 8 instrumentos simultáneamente a la “Phrase” siguiente a la actual. Así, al tener tu ritmo programado, podrás copiarlo al siguiente patrón y realizar modificaciones en el mismo. Luego podrás encadenarlos formando un ritmo más complejo con más compases de duración.

También he modificado el aspecto gráfico del interface de usuario. Ahora es más compacto provocando una menor confusión gráfica al mostrar tantos controles en pantalla.


Modo grabación en el "Drums Device"

Espero poder ofrecer un vídeo con sonido en breve...

domingo, 14 de marzo de 2010

Sentido del ritmo I


Fue ayer cuando di con la solución. No estaba frente al ordenador, estaba conduciendo. La solución me encontró a mi, y no yo a ella.

No he mostrado nada acerca de la caja de ritmos de REQUIEM porque sufría un curioso bug. El interface de usuario del “Drums Device” muestra las notas de cada instrumento seleccionado. Si seleccionamos “SD 1” mostrar los acentos de la pista de la caja 1. Si luego pulsamos “BD 2” mostrará los acentos del segundo bombo, dependiendo del patrón seleccionado. Pero esto no ocurría hasta ahora. A veces se mostraba el contenido correcto pero sonaban patrones distintos. Habiendo repasado el código cientos de veces, decidí hace semanas avanzar por otros caminos programando otras áreas de REQUIEM. Y el código no estaba mal, estaba bien escrito, lo que fallaba era la ruta de ejecución.

Esquema del código. Parte musical, sin síntesis de sonidos.

Código E-Code del dispositivo de ritmos. Parte musical, sin síntesis de sonidos.
Cada instrumento de la caja de ritmos tiene su propio botón tipo On / Off para poder apagarlo si es necesario. Técnicamente, “apagar” significa que el procesado de los objetos deja de funcionar (se corta) pero que el contenido se sigue viendo. El “corte” era lo que estaba mal, pues al deshabilitar parte del proceso del instrumento apagado, éste no podía actualizarse una vez se ponía de nuevo en marcha. Y como consecuencia sonaba el contenido antiguo, el existente antes de pulsar el botón “Off”. De modo que una vez arreglado, me complace presentarte la caja de ritmos de REQUIEM:

 
¡Hasta la próxima!

miércoles, 10 de marzo de 2010

¡Vaya pedazo de código!


Imagina que estas componiendo tu canción y quieres copiar los compases 5, 6, 7 y 8, en los compases  15, 16, 17 y 18 (por poner un ejemplo) Esto tan sencillo se vuelve arduamente complejo en E-Code.

La sección “Song” de REQUIEM opera sobre objetos transformadores a modo de matrices de memoria. Esta técnica es empleada en cualquier parte “memorizable” de REQUIEM, sólo que en esta ocasión la estructura es distinta. En un único objeto transformador se almacenan los 128 patrones que se reproducen en cada uno de los 128 compases. Por ejemplo, el compás 1 reproduce el patrón 54, el compás 2 el 13, el compás 3 el 120, etc…

Lo interesante es ofrecer funciones tipo copiar / pegar de modo que el usuario pueda copiar una sección de compases sobre otra sección de compases de la misma duración. Así pues, técnicamente hay que copiar parte de los 128 datos almacenados en el transformador, pasarlos a otro transformador a modo de almacén temporal, reubicar el puntero de memoria del primer transformador (del que hemos copiado los datos), y disparar los datos almacenados en el segundo transformador escribiéndolos en la posición actual del primero. Los datos existentes de esa porción quedarán eliminados y sustituidos por los nuevos.

El código E-Code para esta operación lo puedes ver en el siguiente vídeo. Actualmente la ejecución de este código provoca un bug gráfico en mi Logic 5.5, así que habrá que descubrir qué funciona mal, teniendo en cuenta que el código en sí funciona y efectúa todo lo narrado.

jueves, 4 de marzo de 2010

Yo grabo, tú grabas, él graba…


El procedimiento de grabación de notas en REQUIEM ya está listo e integrado en el GUI. Este es el resumen de su operatividad.

Al pulsar el botón “Rec” ocurre lo siguiente:
  1. Cambios gráficos en el interface de usuario con nuevos controles y colores distintos.
  2. Apertura del buffer de escritura: las memorias son rellenadas con nuevos datos.
  3. Bloqueo del modo “Pattern”: Los patrones no son encadenados pero si es posible conmutar de uno a otro manualmente.
  4. Bloqueo del acceso al “Phrase Editor” (el editor de eventos de REQUIEM)
  5. El teclado virtual muestra las notas entrantes, no las salientes. Se abre el acceso de la entrada de MIDI externo.
  6.  El contador de compases cambia mostrando información del paso (“Step”) editado actualmente. Se crea una copia de la información de compás previa para poder ser reclamada al abandonar el modo de grabación, restaurando así el valor del contador de compases.
  7. El visualizador de pasos (“Steps”) se sitúa en el “Step 1” mostrando lo que haya grabado.
La grabación en REQUIEM es bastante versátil. Como método de introducción el usuario puede usar el teclado virtual en pantalla o su teclado MIDI. Independientemente del modo de grabación (paso a paso o a tiempo real), el usuario puede indicar si se capturará el tono de las notas entrantes, su velocidad de pulsación o su duración. Esto se indica con los botones de la esquina inferior derecha “Note”, “Vel” y “Len”.

 
Modo Play

 
Modo Rec
Modos de grabación

La grabación puede ser a tiempo real o paso a paso. El modo de grabación lo define el estado del botón “Realtime”. Al activar el botón “Realtime” el usuario podrá tocar en tiempo real (siguiendo la claqueta) y REQUIEM grabará las notas en las 16 posiciones de nota (“Steps”). Las notas introducidas aparecerán en el teclado virtual superior y en los indicadores centrales sobre el transporte.

En el modo paso a paso es el usuario quien indica el “Step” en el que se grabará la nota, velocidad y duración de nota. Para ello puede usar el fader “Step” y los botones “<” y “>” del transporte. El indicador central “Step” mostrará el paso actual y a su lado aparecerá la información grabada en dicho paso. Si se desea eliminar una nota se procederá con el botón “| Delete |” de la esquina inferior derecha.

En la grabación paso a paso es posible grabar en modo “Stop” o en “Play”. Si se inicia la reproducción REQUIEM reproducirá la información grabada junto con las nuevas notas introducidas en sus pertinentes posiciones. Además existe una útil función tipo “Auto-Step” que permite pasar al paso siguiente al introducir la nota, ahorrando la pulsación del botón “>” cada vez. Esta función se activa con el botón “>>” y no tiene efecto en modo a tiempo real (“Realtime”)

Por último existe el botón “Chain” que en teoría debe encadenar las frases, así si un usuario quiere grabar de un tirón las frases 1, 2, 3, 4 y 5 (por ejemplo) puede hacerlo pulsando ese botón. De momento no se ha implementado esta función.

En modo “Pattern” la grabación varía. En este modo el usuario puede encadenar hasta 5 frases (“Phrases”) indicando las repeticiones que efectúa cada una de las frases. Al pasar a modo grabación, al pulsar “PlayREQUIEM no encadenará los patrones, sino que el usuario deberá usar los botones “<” y “>” de la sección “Pattern” para conmutar entre las distintas frases que conforman el patrón. Para reproducir el patrón de forma normal basta con pulsar “Rec” para abandonar el modo grabación.

La función de grabación se deshabilita automáticamente si el usuario cambia al dispositivo de ritmos “Drum Device”. Aunque es posible ir cambiando de dispositivo “Lead” en plena grabación y grabar todos los patrones necesarios de cada dispositivo sin tener que abandonar el modo grabación, esto no es así en el caso del dispositivo de ritmos. Se hace necesario abandonar la grabación debido a requerimientos del motor de ritmos de REQUIEM. Dicho de otra forma, problemas de diseño que no sé si lograré superar.


Por último, en el “Phrase Editor” la grabación se deshabilita (al pulsar “Rec” no ocurre nada). Esto es necesario ya que el propio “Phrase Editor” abre su puerta dedicada a la introducción de datos. Si además habilitamos la grabación son dos las puertas abiertas y se gestionan dos buffers de datos. Es demasiada complejidad para algo evidente: ¿se puede introducir y editar información en el “Phrase Editor”?... ¡Entonces para qué habilitar el modo grabación!

El procedimiento de grabación debe ser el mismo en el dispositivo de ritmos, así la experiencia del usuario podrá aprovecharse al instante. Evidentemente hay algún cambio significativo, pero la disposición de los controles será la misma.

Buenas noches… y buena suerte