Purple Hearts hpmusic
Main Menu
Home
Downloads
News
Tips&Tricks
Songs
Articles
Good Links
Contact
Impressum
Who's Online
We have 75 guests online
Search
Controller Events PDF Print
Saturday, 06 November 2004
Was sind Controller Events und wie arbeiten sie? Controller Events

Controller Events

Einleitung

Controller Events sind elementare MIDI-Anweisungen, die den allgemeinen Zustand des Synthesizers 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 Synthesizern und Soundkarten 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-Synthesizern interpretiert, d.h. insbesondere nicht von üblichen Soundkarten.

Die Controller Events sind von 0 bis 127 numeriert, jedoch sind nicht alle Nummern belegt. Auch die vorhandenen werden nicht alle von den YAMAHA-Synthesizern ausgeführt. Fast alle Controller Events sind kanalspezifisch, d.h. wirken nur auf eine im Event spezifizierte MIDI-Kanal-Nummer. Im Anhang des Keyboard-Manuals finden wir eine Liste der implementierten Controller Events.

Im vorliegenden 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 über den PC ist daher nicht so sinnvoll. Lehrreich ist es, wenn man sich zusätzlich die Events mit Sequenzer-Software anzuschaut.

Die MIDI-Beispiele können entweder gesamt in einer Zip-Datei oder später einzeln nach Bedarf geladen werden:
Download MIDI Beispiele (12 KB)

Bank Select
Nr. 0 (MSB) 32 (LSB)

Eine Voice-Bank ist eine Gruppe von maximal 128 Voices, die von 0 bis 127 numeriert sind. General MIDI (GM) kennt nur 128 Melodie-Voices in einer Bank, 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 , und Bank Select LSB, und danach das Nicht-Controller-Event "Program Change". Erst dann kann die ausgewählte Voice gespielt werden. Die beiden Bank-Select Controller Events haben in GM keine Auswirkung.

Die Basis Voicebank für die sogenannten Panel-Voices wird durch MSB=0 und LSB=112 ausgewählt. Eine Voice kann aber erst aktiviert werden, wenn danach ein Program-Change-Event gesendet worden ist. Die Panel-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 betroffenden Kanäle, wenn wir ein Style, Multi-Pad oder Voices anwählen. Die Sequenzer-Software Cakewalk macht das Gleiche, wenn wir im Normal-Modus eine Bank und eine Voice auswählen.

Man kann nicht zum selben Zeitpunkt unterschiedliche Voices auf einem Kanal anspielen. Daher wird in fast allen MIDI-Dateien für jeden Kanal ein- und dieselbe Voice über die gesamte Songlänge eingestellt. Trotzdem kann man erreichen, dass auf einem Kanal 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 trickreiche Technik wird insbesondere in den einzelnen Pads von Multi-Pads eingesetzt, da hier nur jeweils ein Kanal benutzt wird.

Im Beispiel bank-select.mid 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. Es ist interessant, mit einem Sequenzer die Event-Liste zu betrachten.

Modulation
Nr. 1

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

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

Portamento Time
Nr. 5

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.mid wird der Effekt nacheinander mit den Parameterwerten 0, 32, 64, 96 and 127 aktiviert.

Main Volume
Nr. 7

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 in der Fader-Ansicht setzen. Zusätzlich wird Main Volume bei FADE IN/OUT verwendet. Das Controller Event Expression hat ebenfalls Einfluss auf die Lautstärke.

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

Panpot
Nr. 10

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.mid wird das Panorama nacheinander auf die Werte 0 (links), 32, 64 (Mitte), 96 und 127 (rechts) eingestellt. Danach gleitet Panorama von rechts nach links.

Expression
Nr. 11

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

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

Sustain On/Off
Nr. 64

Mit dem Controller Event Sustain On/Off wird der Sustain-Effekt aktiviert, d.h. das Sustain Pedal 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. DKeyboards 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.mid 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.

Portamento
Nr. 65

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

Sostenuto
Nr. 66

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.mid 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.

Harmonic Content
Nr. 71

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 im Menü Full Fader - Filter die Intensität von Harmonic Content einstellen.

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

Release Time
Nr. 72

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.mid wird Release Time nacheinander mit den Werten 0, 32, 64, 96 und 127 parametriert.

Attack Time
Nr. 73

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.mid wird Attack Time nacheinander mit den Werten 0, 32, 64, 96 und 127 parametriert.

Brightness
Nr. 74

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

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

Portamento Control
Nr. 84

Dieses Controller Event ist nicht in General MIDI (GM) spezifiziert, jedoch in der XG-Spezifikation verzeichnet. Im Test konnte ich keine Auswirkung auf den Sound feststellen.

Im Beispiel portament_control.mid wird Portament Control nacheinander mit den Werten 0, 32, 64, 96 und 127 parametriert.

Reverb Send Level
Nr. 91

Mit diesem Event wird die Stärke des Effekts Reverb spezifiziert; 0 entspricht kein Reverb, 127 entspricht maximaler Reverb. Wir können den Effekt am Keyboard im Menü Full Fader - Effect Depth - 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.mid wird der Effekt nacheinander mit den Werten 0, 32, 64, 96 und 127 parametriert. Danach gleitet Reverb Send Level von 127 auf 0 hinab.

Chorus Send Level
Nr. 93

Mit diesem Event wird die Stärke des Effekts Chorus spezifiziert; 0 entspricht kein Chorus, 127 entspricht maximaler Chorus. Wir können das Event am Keyboard im Menü Full Fader - Effect Depth - 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.mid wird der Effekt nacheinander mit den Werten 0, 32, 64, 96 und 127 parametriert. Danach gleitet Chorus Send Level von 127 auf 0 hinab.

Variation Send Level
Nr. 94

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.mid 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.

Reset All Controllers
Nr. 121

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.

RPN und NRPN
Nr. 6, 38, 98, 99, 100, 101

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.mid demonstriert den RPN-Effekt "Pitch Bend Empfindlichkeit". Diese Datei hat nicht das Format XF.

Im ersten Teil ist "Pitch Bend Sensitivity" Null: Wenn wir beim Ertönen des ersten Tons das Pitch Bend Rad bewegen, hat das keine Auswirkung.
Mit der zweiten Note wurde "Pitch Bend Sensitivity" mit 16000 belegt. Bewegen Sie noch einmal das Pitch Bend Rad.
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.


Mit der Einführung von GM2 wurden vier weitere Controller-Nummern belegt:

Decay Time
Nr. 75

Vibrato Rate
Nr. 76

Vibrato Depth
Nr. 77

Vibrato Delay
Nr. 78

Für diese neuen Controller-Events wurden noch keine Beispiel-Dateien erstellt.


Artikel drucken