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 “Play” REQUIEM 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