Verwenden des JavaScript Event-Objekts in Logic Pro

Wenn die Funktion „HandleMIDI“ aufgerufen wird, steht ein Event-Objekt des Scripter-MIDI-Plug-ins für ein MIDI-Event und implementiert mehrere Methoden, die du in einem Skript aufrufen kannst.

Das Event-Objekt wird nicht direkt instanziiert, sondern dient als Prototyp für die folgenden Event-spezifischen Methoden, Eigenschaften und Typen.

Tipp: Mit dem JavaScript-Schlagwort „new“ kannst du für ein beliebiges Event-Objekt eine neue Instanz erstellen.

Event-Methoden

  • Event.send(): Event wird gesendet.

  • Event.sendAfterMilliseconds(number ms): Event wird gesendet, sobald ein bestimmter Wert verstrichen ist (dieser Wert kann eine ganze Zahl oder eine Gleitkommazahl sein).

  • Event.sendAtBeat(number beat): Event wird bei einem bestimmten Takt (Gleitkommazahl) auf dem Zeitstrahl des Host-Programms gesendet.

  • Event.sendAfterBeats(number beat): Ähnlich wie oben, mit dem Unterschied, dass der Taktwert als Verzögerung in Taktschritten von der aktuellen Position verwendet wird.

  • Event.trace(): Druckt das Event in der Plug-in-Konsole aus. Weitere Informationen findest du unter Verwenden des Objekts „Trace“.

  • Event.toString(): Erzeugt eine String-Darstellung des Events.

Event-Eigenschaften

  • Event.toarticulationID(integer number): Legt die Articulation ID from 0-254 fest.

  • Event.channel(number): Stellt MIDI-Kanal 1 bis 16 ein.

  • Event.beatPos: Ruft die exakte Taktposition des Events auf.

Event-Typen

Das Event-Objekt Event ist ein Prototyp für die folgenden Event-Typen. Alle Event-Typen übernehmen die oben beschriebenen Methoden und die Kanaleigenschaften.

Die Event-Typen und die dazugehörigen Eigenschaften werden folgendermaßen an HandleMIDI durchgereicht:

  • NoteOn.pitch(integer number): Tonhöhe zwischen 1 und 127.

  • NoteOn.velocity(integer number): Velocity (Anschlagsdynamik) zwischen 0 und 127. Ein Velocity-Wert von 0 wird als Note-Off-Event interpretiert, nicht als Note-On-Event.

  • NoteOff.pitch(integer number): Tonhöhe zwischen 1 und 127.

  • NoteOff.velocity(integer number): Velocity (Anschlagsdynamik) zwischen 0 und 127.

  • PolyPressure.pitch(integer number): Tonhöhe zwischen 1 und 127.

  • PolyPressure.value(integer number): Definiert den Druckwert zwischen 0 und 127.

  • ControlChange.number(integer number): Controller-Nummer zwischen 0 und 127.

  • ControlChange.value(integer number): Controller-Wert zwischen 0 und 127.

  • ProgramChange.number(integer number): Program Change-Nummer zwischen 0 und 127.

  • ChannelPressure.value(integer number): Aftertouch-Wert zwischen 0 und 127.

  • PitchBend.value(integer number): 14-Bit-Pitchbend-Wert zwischen -8192 und 8191. Der Wert 0 stellt die Mitte dar.

  • TargetEvent.target(string): Erstellt benutzerdefinierbare MIDI CC-Befehle oder steuert Plug-in-Parameter.

  • TargetEvent.value(float): Legt einen Target-Wert fest.

Lade die entsprechende Tutorial-Einstellung, um das Skript im Skripteditor anzuzeigen. Dies erleichtert das Verständnis der Syntaxstruktur und des Layouts von Code und Kommentaren. Weitere Informationen findest du unter Verwenden des Script Editors.

Tutorial-Skript 7: Event Creation

In Logic Proersetzt dieses Beispiel jedes eingegangene MIDI-Event durch einen Befehl zur Änderung der Modulationssteuerung.

  • Text nach „/*“ zeigt Kommentare an, die den JavaScript-Code erklären.

    Tipp: Mit dem JavaScript-Schlagwort „new“ kannst du für ein beliebiges Event-Objekt eine neue Instanz erstellen.

    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 */}

Tutorial-Skript 8: Event Modification

In Logic Proersetzt dieses Beispiel jedes eingegangene MIDI-Event durch Note-On/Note-Off auf C3. Das Beispiel verwendet auch die NeedsTimingInfo-Variable. Weitere Informationen findest du unter Verwenden des JavaScript TimingInfo-Objekts.

  • Text nach „/*“ zeigt Kommentare an, die den JavaScript-Code erklären.

    Tipp: Mit dem JavaScript-Schlagwort „new“ kannst du für ein beliebiges Event-Objekt eine neue Instanz erstellen.

    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 */}

Tutorial-Skript 15: Control Plug-ins

In Logic Prokannst du benutzerdefinierbare MIDI CC-Befehle erstellen oder Plug-in-Parameter steuern. TargetEvent liest den zu ändernden Parameter aus einem Menü, in dem ein Benutzer einen Ziel-MIDI CC-Befehl auswählen kann. Alternativ kannst du auch die Funktion „Learn Plug-in Parameter“ verwenden, um einen Plug-in-Parameter zuzuweisen, der nach (unter) dem Scripter in demselben Channel-Strip eingesetzt wird. Das gewählte Ziel wird mit dem Plug-in-Setting gesichert.

  • Text nach „/*“ zeigt Kommentare an, die den JavaScript-Code erklären.

    Tipp: Mit dem JavaScript-Schlagwort „new“ kannst du für ein beliebiges Event-Objekt eine neue Instanz erstellen.

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

    Mit dem Code werden Plug-in-Parameter mit dem Modwheel gesteuert. Zum Testen der Funktion in Tutorial-Skript 15 füge ein beliebiges Plug-in oder Software-Instrument im selben Kanal ein und führe dann das Skript aus. Wähle „Learn Plug-in Parameter“ im Menü aus, klicke dann auf einen Plug-in-Parameter, um ihn mit dem Modwheel zu steuern.

    Erstelle ein Menü für das Modwheel-Ziel, indem du den Menüeintrag benennst und dafür den „Ziel“-Typ festlegst.

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

    HandleMIDI wird immer dann aufgerufen, wenn Scripter ein MIDI-Event in Tutorial-Skript 15 empfängt. Der unten gezeigten Code weist das Modwheel dem im Menü ausgewählten Ziel zu.

    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(); };};

Handbücher zum Download:

Logic Pro – Benutzerhandbuch: Apple Books

Logic Pro – Instrumente: Apple Books

Logic Pro – Effekte: Apple Books

Morty Proxy This is a proxified and sanitized view of the page, visit original site.
Hilfreich?
Zeichenbeschränkung: 250
Die maximal zulässige Anzahl von Zeichen beträgt 250.
Vielen Dank für Ihre Rückmeldung.
Morty Proxy This is a proxified and sanitized view of the page, visit original site.