Editor de scripts de Logic Pro

Introducción al editor de scripts de Logic (Scripter)

Logic Pro X cuenta con una herramienta que es muy interesante para el músico amante de la tecnología: el editor de scripts o Scripter. Este plugin MIDI nos permite crear nuevos plugins MIDI utilizando código JavaScript. La realidad es que Scripter es quizás el plugin menos comprendido de Logic, ya que la documentación es algo limitada y se requiere cierta experiencia usando código para sacarle el máximo provecho. Sin embargo, bien vale la pena empezar a "jugar" con sus funciones, pues las posibilidades creativas son muy amplias.

Fig. 1. Ventana del plugin Scripter.

Pero ¿de qué nos sirve Scripter? Bueno, en términos generales nos permite manipular de muchas formas los datos MIDI que usamos en Logic para crear música. Por ejemplo:
  • Cambiar tono o volumen de ciertas notas.
  • Crear nuevas notas y reproducirlas a intervalos que programemos.
  • Crear cambios de control MIDI (CC) o manipularlos.
  • Generar notas al azar o basadas en alguna probabilidad.
  • Filtrar, cambiar o retrasar eventos MIDI.
En fin, con esta herramienta podríamos crear cosas como: 
  • Un efecto que simule el rasgueo de una guitarra.
  • Un algoritmo que genere melodías o patrones siguiendo ciertas reglas que indiquemos.
  • Arpegiadores o armonizadores a nuestro gusto.
  • Secuenciadores.
  • Interfaces de usuario con menús y sliders.
Fig. 2. Scripter y el Editor de scripts.

Como vemos, usando scripts podemos crear muchas herramientas que nos ayuden a nuestra creatividad musical. Hay que mencionar también que para usar Scripter no es obligatorio saber código, pues viene con varios presets muy interesantes que podemos utilizar de manera inmediata. De cualquier forma, vamos a ver cómo podemos empezar a crear nuestros propios scripts o bien modificar los presets acorde a nuestros intereses.


Iniciando con lo básico: JavaScript

JavaScript (JS) es un lenguaje que nació y se ha desarrollado junto con los navegadores de Internet. Sin embargo, sus posibilidades de aplicación se han extendido enormemente en los últimos años. Parte de esto se ha debido al alcance que ha tenido la web en todas las áreas de la vida moderna y otra parte ha sido porque el lenguaje en sí es robusto, fácil de aprender (en términos generales) y tiene muchísimos desarrolladores en el mundo. Es importante aclarar que JavaScript es un lenguaje distinto a Java y que no tienen nada que ver uno con el otro salvo por la similitud del nombre. El grupo Mozilla es el encargado de administrar el desarrollo de JS.

Como todo lenguaje de programación, JavaScript tiene una sintáxis específica que debemos aprender. Iremos viendo lo más esencial poco a poco tratando de enfocarnos en lo que nos interesa más: la música.


Funciones

Una función es una porción de código que puede ser reutilizable. Los lenguajes de programación tienen funciones básicas y también permiten la creación de nuevas funciones a los programadores. En el caso de Logic contamos con funciones que ya vienen definidas en la API de Scripter.

El ejemplo más sencillo que tenemos es el de un código que "reenvía" los datos MIDI que recibe. Es una especie de MIDI Thru virtual. Aquí está el código:

function HandleMIDI(evento) {
    evento.send();   //Reenvía el evento MIDI que recibe.
}


La palabra function es una palabra clave de JS que indica que usaremos la función llamada HandleMIDI(). Dicha función utilizará y procesará los datos MIDI guardados en la variable evento. Esta variable evento puede ser nombrada de otra forma si el programador así lo quiere.

Cuando la función HandleMIDI() se ejecuta, se llevan a cabo las instrucciones que aparecen entre las llaves { }. El texto que está después de las diagonales // es un comentario que ayuda al programador a entender lo que hace esa porción de código. Los comentarios son muy importantes para documentar el código y se usan con libertad según se requiera en cada caso. Los comentarios son ignorados por el sistema al ejecutar el código.

La instrucción event.send() lee los datos que están en la variable event y los envía hacia el canal de Logic que estemos usando. Cada instrucción en JS termina con un punto y coma (;).

Agreguemos una instrucción más para hacer el código un poco más interesante:

function HandleMIDI(evento) {
    evento.send();
    evento.trace();  //Se imprimen los datos del evento en la consola del editor                 
}


Al agregar evento.trace() hacemos que, además de escuchar las notas MIDI que tocamos, se imprima una bitácora en la consola de Scripter (parte inferior de la ventana) con la información del evento que estamos procesando.

Fig. 3. Consola de Scripter con los datos MIDI recibidos.

En la imagen podemos ver que en la consola se imprime una lista con los mensajes MIDI recibidos por el plugin. En este caso se trata de mensajes NoteOn y NoteOff con sus respectivos parámetros.

Este código es muy sencillo pero nos permite iniciarnos en la lógica que hay detrás de Scripter y que más adelante nos ayudará a explotar este plugin mucho más.




0 comments:

Publicar un comentario