Mostrando entradas con la etiqueta Groovebox. Mostrar todas las entradas
Mostrando entradas con la etiqueta Groovebox. Mostrar todas las entradas

viernes, 26 de febrero de 2010

Ritmos grises


Hacía ya días que no escribía nada aunque el código no ha dejado de crecer y mejorar. Días grises en los que un divorciado de la música recuerda a su gran amor: aquello que no es ruido, la música. Me he emocionado bastante escuchando uno de mis LP preferidos (si es que esto hoy en día tiene aún sentido) He llegado a la conclusión de que quizás sea posible apartarse de ella, pero ella siempre acaba reclamándote.

Y concentrándonos en mi locura particular, que sólo sirve para certificar mis paranoias mentales dejando claro que no hay mejor forma de malgastar talento, veamos los avances de REQUIEM Environment. Ya he integrado la “caja de ritmos”, es decir, la sección “Drums” entera al interface de la aplicación. Desgraciadamente aun hay fallos en la reproducción de ritmos, ocasionalmente lo que suena no concuerda con lo que se está viendo, y debo descubrir cuándo ocurre el fallo. Viendo el trabajo realizado en esta sección, diría que está a un 50%.

Otra integración es el interface gráfico del modo “Song”, una lista de “Scenes” que van desfilando de derecha a izquierda. Es una virguería gráfica que aún debe someterse a varias pruebas de flujo de trabajo.

Pero además de todo esto he estado arreglando pequeños bugs en la sección “Lead”, los 8 sintetizadores. El modo grabación funciona de forma distinta a lo planificado: “el usuario quiere grabar, ¿puede hacerlo en modo “Pattern” (encadenado de patrones) o sólo en modo “Phrase” (sin encadenar)”. “¿Puede el usuario ir a la sección “Drums” en grabación?, ¿y volver de ella? ¿Y si en plena grabación el usuario decide cambiar de patrón en tiempo real, dónde se grabarán los datos en este caso?”

La respuesta a todas esas preguntas es una serie de acotaciones en las acciones que indican qué puede hacer el usuario. Por ejemplo, si un usuario cambia la “Phrase” en la que está grabando, todo lo que toque o introduzca a partir de ese instante se registrará en la nueva “Phrase”. Podría haber decidido abortar la grabación, es decir, desactivar el botón “Rec”, aunque eso no sería lógico.

Otro caso es el modo “Pattern”, el encadenamiento de frases (“Phrase” en el GUI). En reproducción, las frases que componen un patrón van reproduciendo conmutándose entre sí y repitiéndose las veces establecidas por el usuario. Pero ¿y en grabación? En este caso la limitación viene por el diseño de REQUIEM, pues en grabación y estando en modo “Pattern”, los patrones no se reproducirán, es decir, es el usuario el que debería pulsar el botón correspondiente para conmutar la frase. Esto tiene una ventaja terrible: permite estar concentrado en cada frase, y cuando está perfecta pasar a la siguiente. Pero la desventaja es no poder realizar una grabación en tiempo real conmutando las frases tal y como están definidas en cada patrón: la latencia del motor de REQUIEM hace que las notas puedan grabarse en parte en otra frase del patrón. De momento no puedo solucionarlo. Y la última pregunta ¿puedo grabar estando en el “Event Editor”? La ventaja de hacerlo desde esa ventana es que tiene herramientas de edición muy útiles. Es en este paso en el que estoy trabajando actualmente.

Hasta luego…

sábado, 2 de enero de 2010

La idea original


Hace varios meses pude juguetear con un sintetizador Korg Triton. Me encantaron las “Combis”, que son conjuntos de hasta 8 sonidos que pueden ser controlados a tiempo real con los diales y botones del panel de control y que usan además el potente sistema de arpegiadores integrado en el aparato. “Qué pena que deba comprar uno de estos para divertirme un rato…” Ese fue el pensamiento.


Una “Performance” (o "Combi") típica en cualquier sintetizador / workstation suele contar de varios generadores de sonidos que son disparados por arpegiadores, controlados por la interpretación del músico. Logic dispone de varios generadores de sonidos, no tan sofisticados como los de un sintetizador dedicado, pero que funcionan muy bien en cualquier tipo de música electrónica. También contamos con arpegiadores, muy simples pero que pueden mejorarse hasta donde la imaginación dicte. Y contamos con un potente entorno de programación, en el que residen los propios arpegiadores y generadores de sonidos: el Environment.

Ahora imaginemos un nuevo plug-in. Con este plug-in puedo grabar una frase de varios compases que es reproducida usando el sintetizador integrado en el propio plug-in. Además, puedo encadenar frases musicales formando estructuras más densas, y por si fuera poco puedo toar un acorde a tiempo real y el plug-in corregirá las notas para adaptarse a la nueva escala. Este plug-in incluye extensas modulaciones, así puedo crear barridos de filtros automáticos, usar datos de velocidad de pulsación para controlar el panorama y otras sofisticaciones varias.

Ahora supongamos que este plug-in en realidad no tiene un único secuenciador de frases, sino 8 secuenciadores. Y cada uno de ellos dispara su propio sintetizador. Además cuenta con una sección de patrones rítmicos, creando la “groovebox” definitiva. Al más alto nivel, es posible grabar secuencialmente los cambios de patrones y sonidos, o incluso asignarlos a teclas para ser disparados al pulsar el número de nota MIDI correspondiente. Esto sería muy apetecible en actuaciones en directo.

Y otro detalle más… el plug-in cuenta con algo de inteligencia propia: puede auto-componer líneas partiendo de acordes y un asistente de composición musical.

Todo esto puede lograrse con el Environment, aunque no es una programación sencilla. Sería un Environment con varios miles de objetos, pero dichos objetos ya no serían meros objetos del Environment, sino proyecciones de un lenguaje de programación nuevo, divertido y muy potente (a nivel musical). Lo llamo E-Code y es otra forma de “ver” a los objetos del Environment y sobretodo de comprender cómo interactúan entre ellos.

Interface de usuario del Environment SOPHY

Aunque me resulta imposible relatar la función de cada nuevo objeto añadido al proyecto REQUIEM Environment, trataré de ilustrar los bloques básicos de su programación, el porqué de cada decisión tomada y las consecuencias a nivel de programación. Para ello primero deberé abordar varias cuestiones genéricas del concepto de programación E-Code. Aunque quizás suene aburrido será imprescindible para poder avanzar en la compresión del sistema de programación empleado.

Parte del motor de secuenciación del Environment SOPHY

jueves, 31 de diciembre de 2009

¿Qué es REQUIEM Environment?


Cualquier producto que no pueda ser definido en pocas palabras es un mal producto (comercialmente hablando) así que voy a tratar de hacerlo lo mejor posible.

REQUIEM es una groovebox interactiva programada completamente usando objetos del Environment.

Ampliando la definición anterior, REQUIEM no es un sencillo secuenciador conectado a un sintetizador, sino que es una completa estación de trabajo rítmica y melódica para generar paisajes sonoros tipo chill-out o complejas atmósferas sintéticas repletas de movimiento.

Su estructura consta de 8 partes melódicas (8 pistas) y 1 parte rítmica (con 8 pistas más). Cada parte melódica (o sintética, si así lo prefieres) consta de un sintetizador independiente con una sección de síntesis completa con 128 memorias Preset, una sección de modulación con 4 fuentes y 4 destinos (también gestionada por 128 memorias Preset, una sección de efectos con 128 memorias Preset y una sección de patrones con 128 memorias para patrones. El sintetizador puede ser seleccionado por el usuario: un ES-P o un ES-M.

La sección de patrones consta de 5 pasos en los que es posible definir qué frase musical va a sonar (de 128 que pueden ser grabadas por el usuario) y cuantas veces se repetirá antes de proceder con el patrón del siguiente paso. Cada frase consta de una resolución de 1/16, y almacena los números de nota, velocidades de pulsación y duraciones de nota. Es posible grabar las frases a tempo real tocando desde el teclado, paso-a-paso vía MIDI, o en pantalla con el interface de usuario.

Todas estas secciones con memorias conforman una Scene. Cuando el usuario selecciona una Scene (de 128 existentes en cada parte melódica), automáticamente se selecciona el preset de sonido, preset de modulación asignado, preset de efectos y preset de patrones. Las Scenes se pueden encadenar en el modo Song o alternativamente ser disparadas vía notas MIDI (para interpretaciones en directo). Además cada Scene selecciona la configuración de los moduladores, formada por 6 LFOs “normales”, 2 LFOs circulares y algo llamado Arkanoid LFO (una paranoia que genera modulaciones partiendo de los rebotes de una pelota virtual en una sala virtual).

Cada Scene puede ser transportada musicalmente siguiendo el tono de la pista de acordes, o a tiempo real mediante el motor reconocimiento de acordes de REQUIEM (al más puro estilo “Casiotone”, este motor aun está en fase previa y con varios problemas graves que deben solucionarse, como la latencia generada)

Técnicamente REQUIEM emplea dos capas de datos: los datos reales que son enviados a los sintetizadores de cada parte y los datos mostrados al usuario en el interface de usuario (GUI). Este segundo flujo de datos va retrasado expresamente respecto al primero para no generar retardos en la señal real, El retardo es mínimo e imperceptible para el usuario, y sólo afecta a los datos visuales.

NOTA: La parte rítmica todavía no ha sido desarrollada, pero constará de 128 patrones con 8 pistas y una resolución de 1/32.


Estado del proyecto

Actualmente hay programada la parte melódica con todo el interface de usuario funcionando y en estado de pruebas. Desafortunadamente hay varios problemas de visualización que voy resolviendo uno a uno.

miércoles, 30 de diciembre de 2009

¡Bienvenido a este rincón de sabiduría Lógica!


Si has llegado hasta aquí posiblemente sea por una de estas tres posibilidades:
  1. Eres usuario de Logic / Logic Pro y odias el Environment (¡me niego a llamarlo “Entorno”!)
  2. Eres usuario de Logic / Logic Pro y te encanta el Environment (sigo negándome a llamarlo “Entorno”…)
  3. Te has perdido completamente entre las olas del océano binario de la red…


Este blog no será una masterclass de Environment, sino que expondré la creación de un mega-Environment de programación muy avanzada (macros, alias, metas y otras cosillas muy simpáticas…) Mis tiempos de “doctor especializado” acabaron cuando mis obras circularon impunemente por las peer-to-peer y dejé de poder ganarme la vida vendiendo mis conocimientos (y con perdón, que no son pocos…)

Pero seamos positivos, ¡he vuelto! Dejé de programar Environments hace más de 4 años. Gracias a una buena terapia de grupo tipo “freakys unidos jamás serán vencidos” he decidido acabar lo que comencé, y no sólo esto, sino continuar mucho más allá. Lo genial de este mundo es que da cabida para todo tipo de locuras: creer que la Tierra sigue siendo un disco plano (efectivamente, y con foro incluido para debatir acerca de ello) o programar aplicaciones musicales usando el Environment. Observa que empleo el vocablo “aplicaciones”, esto es programas completamente funcionales usando únicamente el Environment, y cuyo resultado musical puede exportarse al secuenciador de Logic en tiempo real.

(Nota mental: “no me cree… deberás mostrarle algo…”)


Ok, hablemos de ello. El primer gráfico pertenece a SOPHY, mi niña bonita. Básicamente es un secuenciador de 8 pistas melódicas y 8 pistas rítmicas, cada una de ellas con 128 patrones (cuyos datos se almacenan en el Environment, no en Logic), con modo canción, 8 LFOs asignables, modulación interna, funciones de edición (copiar, pegar patrones, etc…), exportación a Logic y un montón de prestaciones más (128 presets de parámetros de síntesis para cada pista, mezclador con 128 escenas, etc…) Es del año 2002 (madre mía cómo pasa el tiempo) y tuve el placer de mostrárselo directamente a Gerhard Lengeling de Emagic en su propia sede. ¡8000 objetos!


Este segundo gráfico es el proyecto MOODY, un “Environment-dentro del-Environment”. Se trata de un conjunto de más de 70 módulos altamente funcionales para la creación de un sintetizador modular tipo groove-box, integrando distinto hardware externo como si fuera una única entidad. LFOs con memorias, secuenciadores con 128 patrones, generadores de rampas en los que puedes dibujar tus propias curvas, transformaciones, controles remotos, monitores… todo en formato Macro.


El tercer gráfico no es un proyecto, sino un experimento. Quise crear el genial interface gráfico del desaparecido Rebirth (Propellerhedas) en forma de Environment. El resultado es cuanto menos curioso, pero más allá no hay nada más: ni motor de datos ni interacción con el usuario.


¿Qué es una “aplicación musical completa diseñada únicamente el Environment”?

Afortunadamente todavía quedan usuarios con inquietudes a los que el Environment les susurra. Hay excelentes ejemplos de lo que es capaz de ofrecer esta mágica ventana a la programación que nos ofrece Logic. En el proyecto REQUIEM Environment las características especiales que le otorgan el estado de “aplicación musical completa” son las siguientes:

  • Interface de usuario: Contiene menús superiores como los de cualquier aplicación, con funciones de copiar, cortar y pegar para cada área de la aplicación. La visualización de los valores de los parámetros es dinámica, empleando unas pocas pantallas. La ruta de los eventos es independiente para “lo que está sonando” y para “lo que se está viendo”, es decir, hay dos capas de programación que interactúan: la que soporta los datos reales salientes de la programación y la ruta con la representación visual de esos datos para el usuario.
  • Memoria interna!: REQUIEM almacena todos los datos en los objetos que lo conforman por lo que Logic es usado tan sólo como reloj. La capacidad de memoria de REQUIEM es asombrosa: 128 patrones de 16 notas cada uno (con velocidades y duraciones) + 128 memorias de parámetros de síntesis (para sintetizadores ES-E / ES-M / ES-P) + 128 memorias de efectos (5 plug-ins con todos sus parámetros) + 128 memorias de modulaciones (matriz de 4 destinos de modulación con ancho de banda de modulación y corrección de modulación), todo ello multiplicado por 8. Dicho de otra forma, cada uno de los 8 dispositivos virtuales de REQUIEM almacena todo lo anterior.
  • La experiencia de uso debe ser tan sólida como la de cualquier aplicación: el objetivo es lograr que el usuario olvide que está usando un Environment.


¿Es posible lograrlo?...

Por cierto, sigo usando Logic 5.5 (con licencia y su XS Key, por supuesto) en versión Windows. No he cambiado a Mac para poder usar el flamante Logic Pro 9. Los motivos son varios, posiblemente algún día los comente. Digo esto porque los gráficos que verás son de la versión Logic 5.5.1 PC.

¡Larga vida al Environment!

(Hasta la próxima amigo…)