Usar el objeto Event de JavaScript

Cuando se llama a la función HandleMIDI del módulo MIDI Scripter, un objeto Event representa un evento MIDI e implementa varios métodos a los que puedes llamar en el script.

El objeto Event no se instancia directamente, sino que es un prototipo para los siguientes métodos, propiedades y tipos específicos de eventos.

Consejo: Puedes usar la palabra clave de JavaScript “new” para generar una nueva instancia de un objeto Event de cualquier tipo.

Métodos Event

  • Event.send(): Se envía el evento.

  • Event.sendAfterMilliseconds(number ms): Se envía el evento una vez transcurrido el valor especificado (puede ser un número entero o de coma flotante).

  • Event.sendAtBeat(number beat): Se envía el evento a un tiempo determinado (número de coma flotante) en el control temporal del huésped.

  • Event.sendAfterBeats(number beat): Igual que antes, pero usa el valor de tiempo como retardo en tiempos desde la posición actual.

  • Event.trace(): Se imprime el evento en la consola del módulo. Consulta Utilizar el objeto Trace.

  • Event.toString(): Devuelve una representación String del evento.

Propiedades de Event

  • Event.toarticulationID(número entero): Ajusta el ID de la articulación de 0 a 254.

  • Event.channel(número): Ajusta el canal MIDI de 1 a 16.

  • Event.beatPos: Recupera la posición de tiempo exacta del evento.

Tipos de eventos

El objeto Event es un prototipo para los siguientes tipos de evento. Todos los tipos de evento heredan los métodos y las propiedades de canal descritas anteriormente.

Los tipos de eventos y sus propiedades se pasan a HandleMIDI como sigue:

  • NoteOn.pitch(número entero): Tono de 1 a 127.

  • NoteOn.velocity(número entero): Velocidad de 0 a 127. El valor de velocidad 0 se interpreta como evento de nota desactivada, no de nota activada.

  • NoteOff.pitch(número entero): Tono de 1 a 127.

  • NoteOff.velocity(número entero): Velocidad de 0 a 127.

  • PolyPressure.pitch(número entero): Tono de 1 a 127.

  • PolyPressure.value(número entero): Define un valor de presión de 0 a 127.

  • ControlChange.number(número entero): Número de controlador de 0 a 127.

  • ControlChange.value(número entero): Valor de controlador de 0 a 127.

  • ProgramChange.number(número entero): Número de cambio de programa de 0 a 127.

  • ChannelPressure.value(número entero): Valor de Aftertouch de 0 a 127.

  • PitchBend.value(número entero): valor de curva de tono de 14 bits de -8192 a 8191. El valor de 0 es el centro.

  • TargetEvent.target(string): Crea mensajes de controlador continuo MIDI definibles por el usuario o controla parámetros de módulos.

  • TargetEvent.value(float): Ajusta el valor de destino.

Carga el ajuste de Tutorial correspondiente para ver el script en el editor de scripts. Esto te ayudará a entender la estructura de la sintaxis y la disposición del código y los comentarios. Consulta Usar el editor de scripts del módulo MIDI Scripter de Logic Pro.

Script de Tutorial 7: Creación de evento

En Logic Pro, este ejemplo sustituye cada evento MIDI recibido por un mensaje de cambio del control de modulación.

  • El texto situado a continuación de /* muestra los comentarios que explican el código JavaScript.

    Consejo: Puedes usar la palabra clave de JavaScript “new” para generar una nueva instancia de un objeto Event de cualquier tipo.

    function HandleMIDI() { var cc = new ControlChange; /* make a new control change message */ cc.number = 1; /* set it to controller 1 (modulation) */ cc.value = 100; /* set the value */ cc.send(); /* send the event */ cc.trace(); /* print the event to the console */}

Script de Tutorial 8: Modificación de evento

En Logic Pro, este ejemplo sustituye cada evento MIDI recibido por una nota C3 activa/inactiva. El ejemplo también utiliza la variable NeedsTimingInfo. Consulta Usar el objeto TimingInfo de JavaScript.

  • El texto situado a continuación de /* muestra los comentarios que explican el código JavaScript.

    Consejo: Puedes usar la palabra clave de JavaScript “new” para generar una nueva instancia de un objeto Event de cualquier tipo.

    var NeedsTimingInfo = true; /* needed for .sendAfterBeats() to work */function HandleMIDI() { var on = new NoteOn; /* make a new note on */ on.pitch = 60; /* set its pitch to C3 */ on.send(); /* send the note */ var off = new NoteOff(on); /* make a note off using the note on to initialize its pitch value (to C3) */ off.sendAfterBeats(1); /* send a note off one beat later */}

Script de Tutorial 15: Módulos de control

En Logic Pro, puedes crear mensajes de controlador continuo MIDI definibles por el usuario o puedes controlar parámetros de módulos. TargetEvent lee el parámetro que se va a modificar desde un menú donde el usuario puede seleccionar un destino de controlador continuo MIDI. También puedes utilizar la función “Learn Plug-in Parameter” para asignar cualquier parámetro de módulo insertado después (debajo) de Scripter en el mismo canal. El destino seleccionado se guarda con el ajuste del módulo.

  • El texto situado a continuación de /* muestra los comentarios que explican el código JavaScript.

    Consejo: Puedes usar la palabra clave de JavaScript “new” para generar una nueva instancia de un objeto Event de cualquier tipo.

    TargetEvent properties:TargetEvent.target(string) /* Name of target menu entry */TargetEvent.value(float) /* Value of set Target from 0.0 to 1.0 */

    El código que se muestra a continuación controla cualquier parámetro de módulo con la rueda de modulación. Para probar la función del script de Tutorial 15, inserta cualquier módulo o instrumento de software en el mismo canal y ejecuta el script. Selecciona el parámetro de módulo Recordar en el menú y haz clic en cualquier parámetro del módulo para controlarlo con la rueda de modulación.

    Para crear un menú para el destino de la rueda de modulación, asigna un nombre a la entrada de menú y defínelo como de tipo “destino”.

    var PluginParameters = [/* parameter 0 */{ name:"Modwheel Target", type:"target"}];

    Se llama a HandleMIDI cada vez que Scripter recibe un evento MIDI en el script de Tutorial 15. El código que se muestra a continuación reasigna la rueda de modulación al destino elegido en el menú.

    function HandleMIDI(incomingEvent) { /* remap modulation to target selected in menu and check for incoming CC event with number 1 (Modwheel) */ if ((incomingEvent instanceof ControlChange) && (incomingEvent.number == 1)) { var newEvent = new TargetEvent(); /* create new Target event */ newEvent.target = "Modwheel Target"; /* name the menu entry to be used by this event */ newEvent.value = incomingEvent.value / 127; /* rescale from 0..127 to 0.0...1.0 */ newEvent.send(); /* send the event */ } else { /* send all other events */ incomingEvent.send(); };};
Morty Proxy This is a proxified and sanitized view of the page, visit original site.
¿Te ha resultado útil?
Límite de caracteres: 250
El límite máximo de caracteres es 250.
Gracias por tus comentarios.
Morty Proxy This is a proxified and sanitized view of the page, visit original site.