Purple Hearts hpmusic

Controller Events

Monday, 20 April 2020
Was sind Controller Events und wie arbeiten sie?

Controller Events sind elementare MIDI-Anweisungen, die den allgemeinen Zustand des MIDI-Klangerzeugers oder den Charakter der Sounds beeinflussen. Im Gegensatz zu den herstellerspezifischen SysEx, die sich ähnlich auswirken, werden die Controller Events im Standard-MIDI-Protokoll spezifiziert und daher von fast allen Klangerzeugern akzeptiert und zumindest teilweise interpretiert. Die YAMAHA-Keyboards generieren Controller Events zumeist implizit, einige können jedoch auch explizit am Keyboard parametriert werden. Alle Controller Events können jedoch mit Sequenzer-Programmen in MIDI-Dateien eingetragen und bearbeitet werden. Die meisten Controller-Funktionen können mit den YAMAHA SysEx mit höherer Leistung erzielt werden, jedoch werden die SysEx nur von XG-Klangerzeugern interpretiert, d.h. insbesondere nicht von Klangerzeugern unter Windows.

Die Controller Events sind von 0 bis 127 nummeriert, jedoch sind nicht alle Nummern belegt. Auch die vorhandenen werden nicht alle von den YAMAHA-Klangerzeugern ausgeführt. Fast alle Controller Events sind kanalspezifisch, d.h. wirken nur auf eine im Event spezifizierte MIDI-Kanal-Nummer. In den Datenlisten der Yamaha-Keyboards finden wir eine Liste der implementierten Controller Events.

In diesem Artikel wird die Auswirkung von Controller Events an den Keyboards beschrieben. Für jedes Event wurde ein kleine MIDI-Datei programmiert, mit dem die Wirkung angehört werden kann. Jedes Midi demonstriert nur ein Controller-Event für MIDI-Kanal 1. Das MIDI-Datei-Format ist SMF0, XG, XF mit Lyrics. Damit werden auf Yamaha-Keyboards Kommentare im Lyric-Fenster dargestellt. Ein Abspielen mit dem PC Klangerzeuger ist aus erwähntem Grund nicht sinnvoll.
Lehrreich ist es, wenn man sich zusätzlich die Events mit meinem Programm PSRMIDI oder mit der Eventliste von Sequenzern anschaut.

Die MIDI-Beispiele können entweder gesamt in einer Zip-Datei oder sp?ter einzeln nach Bedarf heruntergeladen werden:
Download Controller Demos

Controller Bank Select: Nr. 0 (MSB), Nr. 32 (LSB)

Eine Voice-Bank ist eine Gruppe von maximal 128 Voices, die von 0 bis 127 nummeriert sind. General MIDI (GM) kennen nur 128 Melodie-Voices, aber die XG-Keyboards haben die Möglichkeit, unterschiedliche Voice-Banks einzustellen und haben damit Zugriff auf wesentlich mehr Voices. Um eine spezielle Voice auszuwählen, sind insgesamt 3 MIDI-Events erforderlich: Die zwei Controller Events Bank Select MSB Nr. 0 , und Bank Select LSB Nr. 32, und danach das Nicht-Controller-Event "Program Change". Erst dann kann die ausgewählte Voice gespielt werden. Die beiden Bank-Select Controller Events sind in GM unn?tig und werden vom Klangerzeuger unter Windows nicht ausgewertet.

Die Voicebank für die GM-Voices wird unter Yamaha XG durch MSB=0 und LSB=0 angewählt. Eine Voice kann aber erst aktiviert werden, wenn danach ein Program-Change-Event gesendet worden ist. Die Voice Cello bekommen wir also erst nach einem Patch Change, das wir mit der Date Voice-Nummer = 42 parametriert haben. Siehe dazu die Voice-Liste in den Data Listen der Keyboards.

Die Keyboards erzeugen die drei Events implizit für alle betroffenen Kanäle, wenn wir ein Style, Multi-Pad oder Voices anwählen. Das gilt auch für die Percussion-Voices (Drum- und SFX-Kits). Das gilt auch für den Sequenzer Cakewalk und mein Programm PSRUTI wenn wir Voices über eine XG-Instrumentendefinition auswählen.

Im Kanal darf die Voices im Verlauf gewechselt werden, was aber in den meisten Midifiles nicht praktiziert wird. Mit einem Trick kann man erreichen, dass auf einem Kanal sogar zu gleicher Zeit verschiedene Voices gespielt werden. Wir starten dazu eine Note, ändern unmittelbar danach die Voice und spielen eine weitere Note an. Die erste Note verbleibt bis zum Ausklingen in ihrer Voice. Diese Technik wird insbesondere in den einzelnen Pads von Multi-Pads eingesetzt, da hier nur jeweils ein Kanal benutzt wird.

Im Beispiel
Bank Select Demo
wird auf dem MIDI-Kanal 1 eine Solo-Trompete (Bank LSB=112) und Strings (XG-Bank LSB=0) zunächst zu unterschiedlichen Zeiten, dann mit überlappenden Sound abgespielt.

Controller 1: Modulation

Das Controller Event Modulation belegt den Effekt Modulation für einen vorgegebenen Kanal mit einem Wert, wirkt also nicht gleichzeitig auf mehrere Kanäle wie das Modulations-Rad am PSR.

Das Beispiel
Modulation Demo
setzt die Modulation nacheinander auf die Werte 0, 32, 64, 96 und 127. Danach gleitet die Modulation von 127 nach 0 hinab.

Controller 5: Portamento Time

Portamento ist ein Effekt, der einen gleitenden übergang von einem Ton zu einem anderen bewirkt; beide Töne müssen sich dabei leicht überlappen. Mit dem Portamento Time Event wird die Intensität des übergangs definiert. Portamento muss vorher mit dem Controller Event 65 (Portamento) eingeschaltet worden sein.

Im Beispiel
Portamento Time Demo
wird der Effekt nacheinander mit den Parameterwerten 0, 32, 64, 96 and 127 aktiviert.

Controller 7: Main Volume

Mit dem Controller Event Main Volume wird die Lautstärke eines MIDI-Kanals eingestellt. Am Keyboard kann man Main Volume für die einzelnen MIDI-Kanäle getrennt setzen.
Siehe auch Controller11: Expression.

Im Beispiel
Main Volume Demo
wird Main Volume nacheinander mit den Parameterwerten 0, 32, 64, 96 and 127 aktiviert; anschließend gleitet Main Volume hinab von 127 nach 0.

Controller 10: Panpot

Mit dem Controller Event Panpot wird das Panorama-Position, d.h. das Stereo Feld der Lautsprecher eingestellt. Mit dem Parameterwert 0 wird ausschließlich über den linken und mit 127 über den rechten Lautsprecher ausgegeben.

Im Beispiel
Panpot Demo
wird das Panorama nacheinander auf die Werte 0 (links), 32, 64 (Mitte), 96 und 127 (rechts) eingestellt. Danach gleitet Panorama von rechts nach links.

Controller 11: Expression

Mit dem Controller Event Expression wird die Lautstärke eines MIDI-Kanals auf einen bestimmten Prozentsatz der aktuellen Main Volume eingestellt. Vgl. hierzu Controller 7: Main Volume. Der Parameterwert 127 bedeutet 100%, 0 entspricht 0%, d.h. es ist nichts zu hören. Die Keyboards belegen als Voreinstellung Expression grundsätzlich mit dem Wert 127.

Im Beispiel
Expression Demo
wird Expression nacheinander mit den Werten 0, 32, 64, 96 und 127 belegt. Danach gleitet Expression von 127 nach 0 hinab,

Controller 64: Sustain On/Off

Mit dem Controller Event Sustain On/Off wird der Sustain-Effekt aktiviert bzw. deaktiviert, d.h. das Sustain Pedal ist gedrückt, wenn das Event mit Werten von 64 bis 127 aktiviert wird; bei Werten von 0 bis 63 wird der Effekt deaktiviert, d.h. das Pedal losgelassen. Im Zustand On werden alle Noten des MIDI-Kanals gehalten, auch wenn der Musiker die Taste freigibt, d.h. das Note-Off-Event wird solange zurückgestellt, bis das Sustain-Off-Event gesendet worden ist. Aus diesem Grunde ist der Sustain-Effekt bei Voices wirkungslos, deren Sound nicht nach Note On gehalten wird, d.h. bei denen der Sustain-Anteil der Hüllkurve nicht existiert. Hierzu zählen zum Beispiel Glocken- oder Drum-Voices. Die Keyboards setzen das Sustain-Controller-Event bei Betätigung des Sustain-Pedals ein, es wirkt hier implizit auf alle Melodie-Kanäle. Mit Sequenzer-Software kann Sustain auf einzelne Kanäle lokalisiert werden.

Im Beispiel
Sustain Demo
hören wir zunächst eine Trompete ohne Sustain, danach mit Sustain während einer Viertelnote, einer halben Note eine ganze Note und acht Taktschlägen.

Controller 65: Portamento

Mit diesem Controller Event wird der Portamento Effekt eingeschaltet (Parameterwerte 64 bis 127) oder ausgeschaltet (Parameterwerte 0 bis 63). Damit wird das Controller Event 5: Portamento Time aktiv geschaltet oder deaktiviert - siehe dort.

Controller 66: Sostenuto

Das Controller Event Sostenuto arbeitet ähnlich wie der Sustain Effekt, jedoch wirkt der Effekt nur auf Noten, die zum Zeitpunkt des Events schon ertönen; d.h. der Synthesizer hat ein Note On erhalten und die zugehörigen Note Off sind noch nicht gesendet worden. Alle Noten, die im Zustand Sostenuto On aktiviert werden, werden nicht gehalten. Daher wird durch Sostenuto der Effekt "Akkord halten" für Tasten implementiert, die gedrückt sind. Das Keyboard behandelt Sostenuto richtig, der Musiker kann diesen Effekt jedoch nicht während des Spielens erzeugen.

In jedem Teil des Beispiels
Sostenuto Demo
wird die erste Note oder der erste Akkord unterschiedlich lang durch Sostenuto gehalten. In dem Zustand "Sostenuto On" werden andere Noten angespielt aber nicht gehalten.

Controller 67: Soft Pedal

Bei "On" (Parameterwert 64 - 127) wird die Lautstärke erhöht, bei "Off" (0 - 63) sollte die Lautstärke normal sein. Bei den Yamaha-Keyboards höre ich keinen Einfluss auf die Lautstärke. Versuchen Sie das Beispiel
Soft Pedal Demo herunterladen
Die erste Note wird mit ausgeschaltetem, die zweite mit eingeschaltetem Soft-Pedal gespielt, und mit der dritten Note wechselt das Soft-Pedal während des Klangs von Aus auf Ein.

Controller 71: Harmonic Content

Harmonic Content verändert den Resonanz-Wert des Sounds, d.h die Lautstärke in der Nähe der maximal ausgegebenen Frequenz. Der Parameterwert 64 ist der Normalwert; mit höheren Werten wird der Sound zunehmend schärfer. Am Keyboard können wir die Intensität von Harmonic Content einstellen.

Im Beispiel
Harmonic Content Demo
wird nacheinander Harmonic Content auf die Werte 0, 32, 64, 96 und 127 gesetzt. Danach gleitet Harmonic Content von 127 nach 0 hinunter.

Controller 72: Release Time

Release Time beeinflusst den Release-Anteil der ADSR-Hüllkurve des Sounds. Es wird damit die Zeit zum Ausklingen des Sounds nach Freigabe der Taste gesetzt, d.h. nach Note Off. Das Keyboard interpretiert dieses Event, setzt es jedoch nicht ein.

Im Beispiel
Release Time Demo
wird Release Time nacheinander mit den Werten 0, 32, 64, 96 und 127 parametriert.

Controller 73: Attack Time

Attack Time beeinflusst den Attack-Anteil der ADSR-Hüllkurve des Sounds. Es wird damit die Zeitdauer zwischen Drücken der Taste (Note On) und dem Erreichen der maximalen Lautstärke beeinflusst. Das Keyboard interpretiert dieses Event, setzt es jedoch nicht ein.

Im Beispiel
Attack Time Demo
wird Attack Time nacheinander mit den Werten 0, 32, 64, 96 und 127 parametriert.

Controller 74: Brightness

Brightness beeinflusst die sogenannte "Filter Cutoff Frequenzen", d.h. die Frequenzbandbreite des Sounds. Am Keyboard können wir Brightness verändern.

Im Beispiel
Brightness Demo
wird Brightness nacheinander mit den Werten 0, 32, 64, 96 und 127 parametriert. Danach gleitet Brightness von 127 auf 0 hinab.

Controller 84: Portamento Control

Der Controller 84: Portamento Control wird mit einer Notennummer parametriert; d.h. für die Note A5 beispielsweise mit dem Wert 69 = hex 45. Mit einer Note-On nach einem Portamento Control gleitet die Tonhöhe von der Controller-Note auf die neue Note-On-Tonhöhe. Dabei wirkt die vom Portamento-Time-Controller eingestellten Rate.

Im Beispiel
Portamento Control Demo
wird die Auswirkung von Portamento Control mit verschiedenen Control - und Noten-Werten demonstriert.

Controller 91: Reverb Send Level

Mit diesem Event wird die Stärke des Hall-Effekts Reverb spezifiziert; 0 entspricht kein Reverb, 127 entspricht maximaler Reverb. Wir können den Effekt am Keyboard im Menü Reverb einstellen. Reverb Send Level wird eingesetzt, um für den im System-Modus arbeitenden Effektblock Reverb die Intensität kanalspezifisch festzulegen.

Im Beispiel
Reverb Send Level Demo
wird der Effekt nacheinander mit den Werten 0, 32, 64, 96 und 127 parametriert. Danach gleitet Reverb Send Level von 127 auf 0 hinab.

Controller 93: Chorus Send Level

Mit diesem Event wird die Stärke des Chorus-Effekts spezifiziert; 0 entspricht kein Chorus, 127 entspricht maximaler Chorus. Wir können das Event am Keyboard Chorus einstellen. Chorus Send Level wird eingesetzt, um für den im System-Modus arbeitenden Effektblock Chorus die Intensität kanalspezifisch festzulegen.

Im Beispiel
Chorus Send Level Demo
wird der Effekt nacheinander mit den Werten 0, 32, 64, 96 und 127 parametriert. Danach gleitet Chorus Send Level von 127 auf 0 hinab.

Controller 94: Variation Send Level

Mit diesem Event wird die Stärke des Variation-Effekts im Modus "Variation Connection System" eingestellt: 0 entspricht keine Variation, 127 entspricht maximale Variation. Da Variation am Keyboard nur im Modus "Variation Connection Insertion" arbeitet, hat das Event zunächst keine Auswirkung und wird daher auch grundsätzlich vom Keyboard mit dem Wert 0 parametriert.

Bemerkung: Im Standard-Modus des Keyboards "Variation Connection Insertion" wird die Intensität anhand der Einstellungen bei Full Fader - EFFECT Depth - DSP(3-7) über SysEx realisiert.

Im Beispiel
Variation Send Level Demo
wird Variation Send Level nacheinander mit den Werten 0, 32, 64, 96 und 127 parametriert. Anschließend gleitet der Parameterwert von 127 nach 0 hinunter. Damit dieses Event überhaupt wirkt, mussten einige SysEx eingetragen werden, die den Modus "Variation Connection System" einstellen. Als Variationseffekt wurde Hall2 gewählt.

Controller 121: Reset All Controllers

Mit diesem Controller Event werden alle Controller Funktionen initialisiert, d.h. mit Standardwerten aufgerufen. Die Initialwerte können im PSR-Handbuch nachgelesen werden. "Reset All Controllers" wird beim Keyboard nicht erzeugt, jedoch ausgeführt.

Controller 6, 38, 98, 99, 100, 101: RPN und NRPN:

Die eingeschränkte Anzahl 128 möglicher Controller Events und deren zum Teil ungenaue Parametrierung war der Anlass zur Einführung der RPN- und NRPN-Anweisungen. Für RPN und NRPN werden sechs spezielle Controller-Event-Nummern benutzt. Mit RPN sind herstellerübergreifende Funktionen spezifiziert worden, NRPN wurden für herstellerspezifische Erweiterungen eingeführt. Für die Aktivierung einer RPN bzw. NRPN-Funktion werden vier nacheinander auszuführende Controller Events benötigt. Mit den ersten zwei (Nr. 101 und 100 bei RPN, 99 und 98 bei NRPN) wird die Funktion spezifiziert, die folgenden zwei (Nr. 6 und 38) legen den Parameterwert im Bereich 0 bis 16383 fest.

Mit RPN-Events wird die Empfindlichkeit des Pitch Bend Rads eingestellt oder Tuning (Verstimmung) von Voices veranlasst. Die YAMAHA NRPN-Events verändern zum Beispiel die Vibrato-Geschwindigkeit - nachzulesen im PSR-Handbuch.

Ich habe nur ein Beispiel erzeugt.
RPN Demo
demonstriert den RPN-Effekt "Pitch Bend Empfindlichkeit".

Im ersten Teil ist "Pitch Bend Sensitivity" Null.
Mit der zweiten Note wurde "Pitch Bend Sensitivity" mit 16000 belegt.
Mit den letzten beiden Teilen wird die Grob- und die Feineinstellung des Tuning demonstriert. In beiden Fällen gleiten die Parameter von niedrigen zu hohen Werten und wieder zurück.

Controller 75: Decay Time

Der Controller verändert die Abklingphase (Decay) der Hüllkurve.
Siehe Articles - German - Begriffe der elektronischen Musiksynthese - Hüllkurve.

Im Beispiel
Decay Time Demo
wird der Controller nacheinander mit den Werten 0, 32, 64, 96 und 127 parametriert. Anschließend gleitet der Parameterwert von 127 nach 0 hinunter.

Controller 76: Vibrato Rate

Der Controller verändert die Vibrato-Geschwindigkeit.

Im Beispiel
Vibrato Rate Demo
wird der Controller nacheinander mit den Werten 0, 32, 64, 96 und 127 parametriert. Anschließend gleitet der Parameterwert von 127 nach 0 hinunter.

Controller 77: Vibrato Depth

Der Controller verändert die Frequenz des Vibrato-Ausschlags.

Im Beispiel
Vibrato Depth Demo
wird der Controller nacheinander mit den Werten 0, 32, 64, 96 und 127 parametriert. Anschließend gleitet der Parameterwert von 127 nach 0 hinunter.

Controller 78: Vibrato Delay

Der Controller verändert die Verzögerung des Vibrato-Effekts.

Im Beispiel
Vibrato Delay Demo
wird der Controller nacheinander mit den Werten 0, 32, 64, 96 und 127 parametriert. Anschließend gleitet der Parameterwert von 127 nach 0 hinunter.



Artikel drucken