# liveSHOW_MIDI Client

Kurze Erklärung MIDI
Einstellungen
Verbinden mit einem Server
Auswahl der Midi Geräte
Fernsteuern des Servers - MIDI in
Senden von MIDI Befehlen durch Trigger - MIDI out
Das Speichern und laden von MIDI Einstellungen
Die liveSHOW_MIDI Client Software basiert auf dem SPIT Protokoll (siehe www.liveSHOWSoftware.de). Die Software kann sich mit einem SPIT Server (z.B. die liveSHOWsoftware) verbinden, diesen über Midi Befehle fernsteuern oder anhand Trigger Midi Befehle senden.
Das SPIT Protokoll ist ein Netzwerkprotokoll daher kann die liveSHOW_MIDI Client Software auch auf einem anderen Rechner laufen, der über Netzwerk mit dem Rechner der Server Software verbunden ist. Es dürfen sich auch mehrere liveSHOW_MIDI Clients mit einem Server verbinden, jeder liveSHOW_MIDI Client kann darf mit unterschiedlichen Midi Befehlen konfiguriert sein.
Um den liveSHOW_MIDI Client zu verwenden muss man kein MIDI Experte sein, es ist jedoch hilfreich wenigsten eine klein wenig Ahnung von MIDI zu haben. Daher folgt nun eine extrem zusammengefasste Erklärung zu MIDI, wer es genauer wissen will kann bei der MIDI Association (www.midi.org) nachlesen.

## Kurze Erklärung zu MIDI:

MIDI (Musical Instrument Digital Interface) ist ursprünglich ein Industriestandard für den Austausch von musikalischer Steuerinformation zwischen elektronischen Instrumenten. MIDI. wurde Dave Smith in Kooperation mit Ikutaro Kakehashi von der Roland Corporation entwickelt und im August 1982 eingeführt, In der Zwischenzeit wurde MIDI mehrfach erweitert. Ein Beispiel für die Verwendung von MIDI ist ein Keyboard. Mit jedem Tastendruck wird ein MIDI Befehl an einen Synthesizer gesendet, der dann aus diesem MIDI Befehl einen hörbaren Ton erzeugt.
Im Prinzip besteht jeder MIDI Befehl aus einer Anzahl von Bytes, die zwischen den Geräten hin- und her gesendet werden. Es gibt im Prinzip drei Kategorien von Midi Befehlen:

1. SHORT Messages
   Hier werden immer drei Bytes gesendet. Je nach Befehl werden die Bytes anderst interpretiert Das erste Byte enthält immer die Befehlskennung und den MIDI Kanal. Das zweite und dritte Byte enthalten Werte. Ein Tastenanschlag auf einem Keyboard könnte zum Beispiel folgenden Midi Befehl erzeugen: 99 31 7F
   Das erste Byte enthält den Befehl und den MIDI Kanal (99 9x = Note ON, x9 = Kanal 10), das zweite Byte enthält in diesem Fall den Notenwert (31 = C#3), das dritte Byte enthält die Anschlagstärke.
   Würde dieser Befehl an einen MIDI Synthesizer gesendet werden, so hört man einen lauten Beckenschlag (Kanal 10 sind die Percussion Instrumente, C#3 ist ein Becken und 7F ist der höchste Anschlagwert)
   Wird die Taste wieder losgelassen, könnte folgender Befehl erzeugt werden: 99 31 00 Dies ist der gleiche MIDI Befehl, nur mit dem Anschlagwert 00, dies wird als Note Off interpretiert.
   Ein Tonmischpult würde diesen Befehl komplett anderst interpretieren, z.B. könnte es sein, dass mit 99 31 7F das 'Muten' von Kanal 1 ausgelöst wird.
2. SYSEX Messages
   Hier können mehrere Bytes gesendet werden, es gibt jedoch einen festen Aufbau der Bytes:
   F0 7F 01 04 01 xx.. F7 (F0 ist immer das Statusbyte, 7F ist der Gerätehersteller, 01 ist die DeviceID, 04 ist die SubID1, 01 ist die SubID2, xx.. ist eine Folge von Datenbytes, F7 ist immer EOX).
   Der Aufbau Statusbyte, Herstellerbyte, DeviceID, SubID1, SubID2, Datenbytes, EOX ist immer vorhanden. Die Länge der Datenbytes kann variieren. Schaut man un den MIDI Spezifaktionen nach, so wird dieser Befehl die Hauptlautstärke auf ca. 50% einstellen.
   Je nach MIDI Gerät kann dieser Befehl aber auch anderst interpretiert werden. SYSEX Nachrichten eröffnen ein weites Feld an möglichen Befehlen.
   Problem: Nicht alle Geräte verstehen SYSEX Nachrichten und es gibt wohl teilweise auch Probleme mit der Verständigung.
3. Midi Timecode
   Der Midi Timecode ist ein Zeitsignal. Die Idee ist, dass es einen Sender gibt, der eine Zeit sendet und alle anderen Geräte reagieren auf eine bestimmte Zeit. So lassen sich Geräte zeitlich synchronisieren.
   Die liveSHOWsoftware könnte als Zeitgeber agieren, es könnte aber auch ein Midi Timecode Modem die Rolle des Zeitgebers übernehmen.
   Der Midi Timecode ist eine Mischform aus Midi Sysex und Midi Short Befehlen. Immer wenn gesprungen wird (vorspulen, Sprung in einer Timeline etc.) wird ein Midi Sysex Befehl mit der aktuellen Zeit gesendet (Full Frame Nachricht).
   Wenn eine Sequenz abgespielt wird (Timeline, Modem gestartet, etc.), werden Midi Short Befehle gesendet. Die Midi Short Befehle beinhalten jedoch nicht die komplette Zeitangabe. Für die Übermittlung eines Zeitpunktes werden 8 Midi Short Befehle benötigt, dabei wird nur jeder zweite Frame gesendet (Quarter Frame Nachricht).
   Der Midi Tmecode stammt aus der Zeit des Filmschnitts, daher werden nicht Milliskunden Auflösungen gesendet sondern es wird in Frameraten aufgelöst (24-, 25, oder 30- Frames pro Sekunde). Die SPIT_MidiClient Software verwendet jedoch Angaben in Millisekunden und rechnet diese in Framraten um, dies ist einfacher zu bedienen.
   Hinweis: Da Windows oder Mac OS keine Echtzeit-Betriebssysteme sind, kann es beim Senden von Timecode eventuell zu Unregelmäßigkeiten kommen. Ein Empfänger, der die Timecode Nachrichten sehr streng auf Plausibilität prüft, könnte die Nachrichten als nicht konsistent abweisen.

Nachdem es viele Geräte gibt, die MIDI Nachrichten empfangen oder senden können, wurde das MIDI Protokoll auch für andere Zwecke außer der Instrumentenansteuerung verwendet. So gibt es zum Beispiel einen Unterbereich von MIDI für die Show Steuerung (MIDI SHOW CONTROL)..
Wie im obigen Abschnitt erklärt ist im Prinzip aber alles eine Sache der Interpretation eines MIDI Befehls. So kann der Notenbefehl 99 31 7F im liveSHOW_MIDI Client, zum Beispiel dem Sprung zur nächsten Szene zugewiesen werden.
Früher wurden die MIDI-Geräte immer mit einem MIDI-Kabel verbunden.
Bei Rechnern sind manchmal MIDI-Geräte im Betriebssystem eingebaut (z.B. Synthesizer zur Tonerzeugung über die Soundkarte), diese können direkt verwendet werden. Externe MIDI-Controller können häufig über ein USB-Kabel mit dem Rechner verbunden werden.
Es gibt günstige USB-MIDI-Interfaces, die per USB mit dem Rechner verbunden werden und auf der Gegenseite MIDI In/Out-Buchsen besitzen. So können auch MIDI-Controller, die nur ein Kabelanschluss besitzen, mit dem Rechner verbunden werden. Es gibt inzwischen auch Bluetooth MIDI-Interfaces.
Damit zwei Software-Programme auf dem Rechner MIDI-Befehle austauschen können, gibt es Tools, die ein virtuelles MIDI-Gerät auf dem Rechner simulieren (z.B. loopMIDI von Thomas Erichsen).
Danke: An dieser Stelle sei Derek Cook für die Entwicklung von CoreMidi4j gedankt. Ohne CoreMidi4j wäre es nicht möglich mit dem SPIT_MidiClient auf dem Mac OS Sysex-Nachrichten zu empfangen oder zu senden.

## Einstellungen

### Den liveSHOW_MIDI Client mit einem Server (liveSHOWsoftware) verbinden

Wenn die liveSHOWsoftware (SPIT Server) verwendet wird, so findet die liveSHOW_MIDI Client Software alle laufenden liveSHOWsoftware Instanzen automatisch. Hierzu muss eine Netzwerkverbindung zwischen den Rechnern bestehen oder der liveSHOW_MIDI Client auf demselben Rechner wie die liveSHOWsoftware laufen.
Die gefundenen SPIT Server (liveSHOWsoftware) werden in der Auswahlliste links oben angezeigt. Hier können Sie den Server auswählen und mit verbinden.
Hat die Verbindung funktioniert, so wird unterhalb der Auswahlliste der Computername des Servers, die Kennung der Serversoftware und der Name des geladenen Projektes angezeigt.
Wurde der liveSHOW_MIDI Client einmal mit einem Server (Serversoftware) verbunden, so kann er sich später automatisch mit der Serversoftware verbinden, sobald ein Server im Netzwerk gefunden wurde, auf dem die Software läuft und 'automatisch verbinden' ausgewählt wurde..

| Verbindet den liveSHOW_MIDI Client mit dem ausgewählten Server
| Trennt die Verbindung zum Server
| Ist dies aktiviert, so wird automatisch eine Verbindung hergestellt, wenn ein passender Server gefunden wurde. Hierzu muss beim ersten Programmstart einmal eine Verbindung händisch hergestellt werden.
| Ist dies aktiviert, so wird beim Start des liveSHOW_MIDI Clients automatisch die zuletzt geladenen/gespeicherten Einstellungen geöffnet.
| Alle Einstellungen können in einer Datei gespeichert werden. Die MIDI Einstellungen sind eng mit dem Projekt des Servers verknüpft. Um diesen Zusammenhang erkennbar zu machen, sollten Sie immer den gleichen Dateinamen wie das Projekt des Servers verwenden. ACHTUNG: Wenn Sie ein Server Projekt auf einen anderen Rechner portieren (z.B. vom Bürorechner auf den Showrechner, so müssen Sie daran denken auch die entsprechenden MIDI Einstellungs Datei auf den anderen Rechner zu kopieren.
| Die gespeicherten Einstellungen können aus aus einer Datei geladen werden.
| Zeigt die Hilfe für den liveSHOW_MIDI Client an |
| Hier wird die Spielzeit des Servers angezeigt. In der liveSHOWsoftware ist dies die Postion des Mediencursors. |

### Auswahl der Midi Geräte

An dieser Stelle können Sie angeben, welche MIDI-Geräte von dem liveSHOW_MIDI Client verwendet werden sollen.
Midi Geräte können z.B. Synthesizer, Keyboards, Midi Controller, Mischpulte, USB Interfaces, Midi Timecode Modems,... sein.
Je nach Art des Gerätes können Midi Befehle gesendet (midi out) oder empfangen (midi in) werden.
Problem: Aktuell können zwei identische (gleiche) Midi Geräte nicht unterschieden werden. Sie können nur mehrere Midi Geräte unterschiedlichen Typs verwenden!
(Dies ist liegt daran, dass die Geräte nur mit ihrem Namen und Hersteller identifiziert werden können. Es gibt für Midi-Geräte keine eindeutige Identifizierung, wie z.B. die MAC-Adresse eines Netzwerkgerätes.)
Problemlösung für zwei identische Geräte:
Unter Mac OS können die Namen der Midi Geräte mit dem 'Midi-Studio' eingestellt werden.
UnterWindows wird man im RegistryEditor die Namen der angeschlossenen Geräte ändern müssen (die Anleitung hierzu muss im Internet gesucht werden).
Solange Sie nur ein Midi Gerät oder mehrere unterschiedliche Midi Geräte verwenden, tritt das obige Problem nicht auf.
In der SPIT_MidiClient Software werden unter Midi in oder Midi out die angeschlossenen Midi Geräte aufgelistet.
Midi-out Geräte werden zum Senden von Midi-Befehlen verwendet.
Midi-in Geräte werden zum Empfangen von Midi-Befehlen verwendet, die dann Fernbedienungs-Kommandos auslösen können.
Vor jedem Gerät befindet sich en Kästchen , über dieses können die Geräte verbunden (aktiviert) oder getrennt (deaktiviert) werden.
Es gibt USB Interfaces, die nicht als vollständiges Midi Gerät gebaut sind, sondern über einen CommPort Midi Daten mit dem Rechner austauschen. Diese Geräte werden nicht automatisch aufgelistet, sondern müssen explizit hinzugefügt werden .
Ein Beispiel für solch ein Gerät ist das Enttec USB DMX Pro MK2.

| Öffnet ein Auswahlfenster für CommPort Geräte oder dem virtuellen 'Timecode Loopback' Gerät.
| Löschr ein ausgewähltes Gerät aus der Liste (nur CommPort Geräte oder 'Timecode Loopback'
| Öffnet ein Einstellungs-Fenster für ein CommPort Gerät.

Wenn sie auf klicken öffnet sich en Fenster, in dem Sie ein CommPort Gerät auswählen und mit hinzufügen können:
Sie können hier ein CommPort Gerät oder das virtuelle 'Loopback Timecode' Gerät auswählen. Und mit hinzufügen.
'Loopback Timecode' ist zum Testen gedacht und sollte nicht im Live-Einsatz verwendet werden.
'Loopback Timecode' ist ein virtueller Empfänger, der die gesendeten Midi Timecode Befehle wieder an die SPIT_MidiClient Software zurück gibt.
Wenn Sie ein CommPort Gerät hinzufügen, öffnet sich automatisch ein Einstellungsfenster, in dem Sie den CommPort eingeben und das Gerät verbinden können.
Das Einstellungsfenster erreichen Sie auch über .

## Fernsteuern des SPIT Servers (z.B. liveSHOWsoftware) - MIDI in

Das Prinzip: Der SPIT Server (z.B. liveSHPWsoftware) teilt dem liveSHOW_MIDI Client mit, welche Fernsteuerbefehle existieren.
Im liveSHOW_MIDI Client kann jedem Fernsteuerbefehl ein Midi-Befehl zugeordnet werden. Wenn der Midi-Befehl empfangen wird, wird der der entsprechende Fernsteuerbefehl ausgeführt.
Der Midi-Befehl kann z.B. durch einen angeschlossenen Midi Controller (z,B. Midi-Keyboard) gesendet werden.
So können Sie im Fall der liveSHOWsoftware z.B. durch Drücken einer Midi-Controller-Taste in die nächste Szene wechseln oder einen anderen Fernsteuerungs-Befehl auslösen..
Mit dem Suchfeld können Sie die Liste einschränken.
Wenn Sie auf eine Spaltenüberschrift klicken werden alle Reihen entsprechend sortiert.
Der SPIT Server (z.B. die liveSHOWsoftware) sendet an die verbundenen MIDI Clients alle möglichen Fernsteuerbefehle. In der Liste dieser Befehle können Sie einen auswählen.
Einem ausgewählten Fernsteuerungs-Befehl, kann nun ein MIDI Befehl zugeordnet werden. Dies geschieht auf der rechten Seite neben der Liste der Fernsteuerbefehle.
Bei MIDI Controllern / Keyboards ist jeder Taste oder Schieberegler ein MIDI Befehl zugeordnet, der beim Betätigen der Taste gesendet wird.
Wurde einem Fernsteuerbefehl ein Midi-Befehl zugeordnet, so wird der Fernsteuerbefehl ausgeführt, wenn der zugewiesene Midi-Befehl empfangen wird.
Das Lernen von Midi-Befehlen:
Wenn Sie mit der Maus auf das grün umrandeten Lernfeld klicken, wird dieses grün ausgefüllt und das gesamte Fenster bekommt einen grünen Rahmen.
Wenn Sie einen Fernsteuerbefehl auswählen und dann eine Taste etc. auf Ihrem MIDI Controller / Keyboard drücken, so wird der gesendete MIDI Befehl auf der rechten Seite dargestellt. Der Befehl wird nur angezeigt und nicht ausgeführt.
Achtung: Sie müssen daran denken, das Lernenfeld wieder zu deaktivieren, indem Sie nochmals auf das Feld klicken. Solange das Lernfeld aktiviert ist und das gesamte Fenster einen grünen Rahmen besitzt wird kein Midi-Befehl ausgeführt!
Sollte nichts angezeigt werden, so müssen Sie eventuell Ihr Midi-Gerät in den Einstellungen (Midi In - Fernsteuerung) noch auswählen - siehe weiter oben.
Das manuelle Eingeben eines Midi-Befehls:
Natürlich dürfen Sie auch den MIDI Befehl direkt eingeben und verändern.
Wenn Sie die genaue Bytefolge kennen können Sie diese auch in der Liste der Fernsteuerbefehle in der Spalte 'MIDI IN' eingeben. Hierzu klicken Sie einfach doppelt auf die entsprechende Tabellenzelle.
Oder Sie stellen den Midi-Befehl auf der rechten Seite ein.
ACHTUNG: Das Drücken einer Controller oder Keyboardtaste löst meistens zwei MIDI Befehle aus.
Der erste MIDI Befehl wird gesendet, wenn die Taste gedrückt wird. Hier ist meistens noch die Anschlagstärke als Wert angegeben.
Der zweite MIDI Befehl wird gesendet, wenn die Taste losgelassen wird. Hier ist es entweder der gleiche Befehl wie beim Drücken der Taste, es wird dann meist der Wert 0 als Anschlagstärke angegeben. Es kann aber auch ein anderer MIDI Befehl sein.
Zum Beispiel sendet ein Keyboard in der Regel beim Drücken einer Taste den MIDI Befehl 'Note on' mit der Anschlagstärke als Wert und beim Loslassen entweder den Befehl 'Note on' mit der Anschlagstärke 0 oder den Befehl 'Note off'.
Welcher Befehl gesendet wird, ist abhängig vom MIDI Gerät oder dessen Einstellungen.
Es gibt zwei Arten von Fernsteuerbefehlen des SPIT Servers:

1. Fernsteuerbefehle ohne Wertangabe: z.B. der Sprung zur nächsten Szene
2. Fernsteuerbefehle mit Wertangabe: z.B. Verändern des Lautstärkereglers, hier wird die Lautstärke als Wert angegeben.

Bei MIDI Controllern gibt es:

1. Tasten (diskrete Wertangaben)
2. Schieberegler oder Drehräder/Knobs (kontinuierliche Wertangaben).

Fall 1: Sie wollen einen Sprung zur nächsten Szene einstellen, also einen Fernsteuerbefehl ohne Wertangabe.
Hier könnte man auf den Wert des MIDI Befehls verzichten. Allerdings werden, wie oben erwähnt, bei einem Tastendruck häufig zwei MIDI Befehle gesendet, die sich vielleicht nur durch den Wert der Anschlagstärke unterscheiden. Also muss noch eine Angabe gemacht werden, wann der Fernsteuerbefehl ausgelöst wird:
Hier können Sie eine Bedingung und einen Wert in Prozent angeben. Erst wenn die Bedingung zutrifft, wird der Fernsteuerbefehl ausgelöst.
Bei der in der Grafik gezeigten Einstellung (Wert <= 0) und einer Keybordtaste (wie oben beschrieben) wird der Fernsteuerbefehl erst beim Loslassen der Taste ausgelöst.
Solch eine Bedingung (Wert <= 0) ermöglicht es auch mit einem MIDI Schieberegler z.B. einen Sprung zur nächsten Szene auszulösen. Wenn Sie den Schieberegler nach oben schieben passiert nichts, erst wenn Sie den Schieberegler auf die Nullstellung fahren, wird der Fernsteuerbefehl ausgelöst.
Fall 2: Sie wollen z.B. eine Lautstärke mit einem MIDI Schieberegler verändern, also einen Fernsteuerbefehl mit Wertangabe auslösen.
Hier wird auf jeden Fall eine Wertangabe benötigt. Also wird man Schieberegler oder Drehregler des MIDI Controllers verwenden.
Schieberegler liefern meistens den aktuellen Positionswert im MIDI Befehl mit.
Drehregler können jedoch meist auf zwei Arten funktionieren. Entweder liefern Drehregler einen kontinuierlichen Wert (wie ein Schieberegler) oder sie liefern bei jeder Drehung einen Wert >= 65 bzw. einen Wert <= 64, je nachdem ob sie in oder gegen den Uhrzeigersinn gedreht werden.
Also benötigen wir auch diesem Fall noch eine weitere Angabe:
Hier können Sie angeben, ob Sie den Wert aus dem MIDI Befehl direkt (Schieberegler) verwenden möchten, oder ob Sie bei den Fernsteuerwert um einen Prozentsatz erhöhen oder erniedrigen möchten. Erhöht wird dabei, wenn ein MIDI Befehl einen Wert über 50% des MIDI Wertebereiches (klassisch >= 65) liefert. Bei einem Wert unter 50% des MIDI Wertebereiches (klassisch <= 64) wird der Fernsteuerwert um den Prozentsatz erniedrigt.
Der Prozentsatz muss keine ganze Zahl sein, Werte wie 0.5 sind erlaubt. Wenn Sie einen zu kleinen Prozentsatz wählen, kann es sein, dass Sie keine Veränderungen erreichen.
Empfangen von Timecode, Aktion zu einer bestimmten Zeit auslösen
Wenn ein Fernsteuerbefehl zu einem bestimmten Zeitpunkt ausgeführt werden soll, können Sie den Zeitpunkt eingeben (Midi Timecode).
Hierzu muss ein Midi Gerät ausgewählt sein, dass einen Midi Tmecode sendet.
Die macht nur für Fernsteuerbefehle Sinn, die keine Wertangaben benötigen. In der liveSHOWsoftware sind dies z.B. Hauptszenenbrücken oder Jingles. Einen Regler per Midi Timecode fernzusteuern macht keinen Sinn.
Die Zeit wird in folgendem Format angegeben: hh:mm:ss:mmm (hh = Stunden, mm = Minuten, ss = Sekunden, mmm = Millisekunden)
Sie können aber auch die originäre Zeit des Fernsteuerobjektes (Position in der Timeline etc.) verwenden.

| Der Befehl wird ausgeführt, wenn der angebene Zeitpunkt übermittelt wird. In der Tabelle der SPIT Fernsteuer Objekte wird dies mit MTC und der Zeitangabe dargestellt.
| Der Befehl wird ausgeführt, wenn die empfangene Zeit dem Startzeitpunktes des Fernsteuerobjektes entspricht. In der liveSHOWsoftware ist dies z.B. der Startzeitpunkt einer Hauptszenenbrücke in der Timeline. In der Tabelle der SPIT Fernsteuer Objekte wird dies nur mit MTC dargestellt.

Hinweis: Der SPIT_MidiClient macht keine strenge Überprüfung des Timecodes, es werden auch zeitlich inkonsistente Timecode Nachrichten akzeptiert.

## Das Senden von Midi Befehlen durch Trigger - MIDI out

Das Prinzip: In der SPIT Server Software können Trigger angelegt werden, in der liveSHOW_MIDI Client Software kann einem Trigger ein Midi Befehl zugeordnet werden, der gesendet wird, wenn der Trigger von der Server Software gespielt wird.
Hierbei wird zwischen Trigger-Typen und Trigger-Objekten unterschieden. In der liveSHOWsoftware können Trigger-Typen angelegt werden, die namentlich eine gewünschte Aktion beschreiben.
Im liveSHOW_MIDI Client können einem Trigger-Typ Midi-Befehle zugeordnet werden.
Wird in der liveSHOWsoftware ein Trigger-Typ in die Timeline (oder in das Jinglefenster) gezogen, so entsteht ein Trigger-Objekt, das auf den Trigger-Typ verweist. Immer wenn ein Trigger-Objekt von der liveSHOWsoftware abgespielt wird, wird dies dem liveSHOW_MIDI Client mitgeteilt und dieser führt den zugewiesenen Midi Befehl des Trigger-Typs aus.
Es werden drei Situationen unterschieden, für jede Situation kann ein Midi Befehl zugeordnet werden:

1. Das Objekt wird gestartet (Start)
   In der liveSHOWsoftware läuft der Playcursor gerade in das Objekt oder der Cursor wird in das Objekt gesetzt.
   Der zugeordnete Midi Befehl wird einmal gesendet.
2. Das Objekt wird gespielt (dauernd)
   In der liveSHOWsoftware befindet sich der Playcursor innerhalb des Objektes.
   Der zugeordnete Midi Befehl wird immer wieder während des Abspielens gesendet.
3. Das Objekt wird beendet (Ende)
   In der liveSHOWsoftware verlässt der Playcursor das Objekt.
   Der zugeordnete Midi Befehl wird einmal gesendet.

Der eingestellte MIDI Befehl wird nur an die ausgewählten Mid-Geräte gesendet- siehe weiter oben unten Auswahl von Midi-Geräten.
Grundsätzlich wird zwischen Trigger Typen und Trigger Objekten unterschieden:

- Ein Trigger Typ ist die Grundlage (Quelle) für ein Trigger Objekt. Ein bestimmter Trigger Typ existiert genau einmal. Trigger Typen können nicht abgespielt werden, sie sind nur die Grundlage für ein Trigger Objekt.
- Ein Trigger Objekt besitzt genau einen Trigger Typ. Trigger Objekte können mehrfach vorhanden sein. Trigger Objekte können abgespielt werden.

Jedes Trigger Objekt besitzt genau einen Trigger Typ. Ein TriggerTyp kann in mehreren Trigger Objekten verwendet werden.
Im Fall der liveSHOWsoftware können aus einem einem Trigger Typ mehrere Trigger Objekte in der Timeline erzeugt werden (siehe liveSHOWsoftware - Medien).
Welcher MIDI Befehl beim Abspielen eines Trigger Objektes gesendet wird, kann über die Zuordnung von MIDI Befehlen an einen Trigger Typ eingestellt werden.
In anderen Worten: alle Trigger Objekte, die denselben Trigger Typ als Quelle besitzen, werden beim Abspielen die gleichen MIDI Befehle senden. Für verschiedene Trigger Typen können unterschiedliche MIDI Befehle eingestellt sein.
Der liveSHOW_MIDI Client listet alle Trigger Typen auf, die in der jeweilgen SPIT Serversoftware (z.B. liveSHOWsoftware) erzeugt wurden.
Mit dem Suchfeld können Sie die Liste einschränken.
Wenn Sie auf eine Spaltenüberschrift klicken, werden alle Reihen entsprechend sortiert.
Wenn Sie einen Trigger Typ auswählen, können Sie diesem Trigger Typ MIDI Befehle zuordnen. Diese MIDI Befehle werden gesendet, wenn ein Trigger Objekt abgespielt wird, das diesen Trigger Typ als Quelle hat.
Wie oben schon beschrieben gibt es drei Ereignisse beim Abspielen eines Trigger Objektes, denen jeweils ein Midi-Befehl zugeordnet werden kann:

1. beim Start : Das Trigger Objekt wird gestartet oder der Play Cursor springt in das Objekt
   Der zugewiesene Midi-Befehl wird einmal beim Start des Objektes gesendet.
2. am Ende: Der Play Cursor verlässt das Trigger Objekt
   Der zugewiesene Midi-Befehl wird einmal gesendet, wenn der Playcursor das Objekt verlässt.
3. Dauernd: Der Play Cursor befindet sich innerhalb des Objektes, es werden in regelmässigen Abständen Triggerereignisse gesendet
   Der zugewiesene Midi-Befehl wird dauernd in regelmäßigen Abständen gesendet, während das Objekt abgespielt wird.

Die Byte Einstellung des MIDI Befehls können Sie z.B. aus der Anleitung des MIDI Synthesizer oder des Tonmischpultes entnehmen.
Auswahl von Midi-Geräten an die der Befehl (die Befehle) des ausgewählten Trigger-Typs gesendet werden sollen:
In der Liste werden alle Midi-Geräte aufgelistet, die Sie unter Einstellungen (Midi Out Senden) aktiviert haben. Wenn Sie einen Haken in das Kontrollkästchen vor einem Midi-Gerät setzen, werden für den ausgewählten Trigger-Typ die eingestellten Befehle an dieses Midi-Gerät gesendet.
Diese Zuweisungen bleiben erhalten, auch wenn Sie ein Midi-Gerät deaktivieren oder das Midi-Gerät eventuell nicht angeschlossen ist. Deaktivierte oder nicht angeschlossene Midi-Geräte tauchen in der Liste nicht auf!
Dies ist wichtig, um die Zuweisungen zu Midi-Geräten zu erhalten, auch wenn ein Gerät kurzfristig entfernt wird.

| Löscht alle Zuweisungen zu Midi-Geräten. Auch zu nicht gelisteten Midi-Geräten. Sollten aktuell nicht alle notwendigen Midi-Geräte angeschlossen sein, so müssen Sie das Löschen der Zuweisungen mit Bedacht ausführen.

Ein kleines Anwendungsbeispiel: Nehmen wir an, Sie besitzen ein Tonmischpult, das MIDI Befehle empfangen kann.
Sie wollen in einer Szene den Mikrofonkanal eines Schauspielers öffnen (Mute Channel 1 off), nach dieser Szene soll das Mikrofon wieder aus sein (Mute Channel 1 on).
In der liveSHOWsoftware könnten Sie hierzu einen Trigger Type "Mute Channel 1" anlegen. Diesen Trigger Typ ziehen Sie in die Timeline, dort entsteht ein Trigger Objekt. Dieses Trigger Objekt ziehen Sie über die Länge der Szene.
In der SPIT_Midi_Client Software weisen Sie nun dem Trigger Typ einen Start MIDI-Befehl zu (MIDI-Befehl für 'Mute Channel 1 off), indem Sie den Trigger Typ auswählen, auf den Knopf 'beim Start' klicken und rechts den Midi-Befehl einstellen.
Den passenden Midi-Befehl entnehmen Sie aus der Beschribung Ihres Tonmischpultes.
Dann weisen Sie dem Trigger Typ einen Ende MIDI-Befehl (MIDI Befehl für 'Mute Channel 1 on') zu, indem Sie den Trigger Typ auswählen, auf den Knopf 'am Ende' klicken und rechts den entsprechenden Midi-Befehl eingeben..
Nun ist der Kanal 1 offen (Mute off), sobald sich der Play Cursor innerhalb des Objektes befindet. Verlässt der Play Cursor das Objekt, so ist der Kanal 1 geschlossen (Mute on).
Das Erkennen/Lernen von Midi-Befehlen:
Wenn das MIDI Gerät nicht nur MIDI Befehle empfangen, sondern auch senden kann, oder Sie von einem anderen Gerät einen Befehl übernehmen wollen, so können Sie auch das Lernfeld verwenden.
Hierzu müssen Sie unter Einstellungen (MIDI In Fernsteuerung) das Gerät auswählen von dem Sie die Befehle lernen wollen und dann wieder zu MIDI out (Trigger) wechseln.
Wenn Sie mit der Maus auf das grün umrandeten Lernfeld klicken, wird dieses grün ausgefüllt.
Wenn Sie jetzt auf eine Taste etc. auf Ihrem MIDI Controller / Keyboard drücken, so wird der gesendete MIDI Befehl auf der rechten Seite dargestellt. Der Befehl wird nur angezeigt und nicht ausgeführt.
Damit dies funktioniert müssen Sie unter MIDI in (Remote) ein MIDI Eingabegerät ausgewählt haben!
Achtung: Sie müssen daran denken, das Lernenfeld wieder zu deaktivieren, indem Sie nochmals auf das Feld klicken. Solange das Lernfeld aktiviert ist und das gesamte Fenster einen grünen Rahmen besitzt wird kein Midi-Befehl ausgeführt!
Das Manuelle Eingeben von Midi-Befehlen:
Natürlich dürfen Sie auch den MIDI Befehl direkt eingeben und verändern.
Wenn Sie die genaue Bytefolge kennen können Sie diese auch in der Liste der Trigger Typen in den Spalten 'MIDI Start', 'MIDI Playing' oder 'MIDI End' eingeben. Hierzu klicken Sie einfach doppelt auf die entsprechende Tabellenzelle.
Oder Sie stellen den Midi-Befehl auf der rechten Seite ein.
Wenn ein Trigger Objekt abgespielt wird, so kann ein Wert mitgeliefert werden. Zum Beispiel werden beim Einfaden eines Trigger Objektes die Werte von 0% - 100% geliefert.
Bitte Beachten:

- Am Ende eines Trigger Objektes wird immer ein Wert von 0% geliefert.
- Wenn ein Trigger Objekt eingefadet (0% - 100%) wird, so ist für das Startereignis der Wert logischerweise immer 0%.
- Wenn das Trigger Objekt nicht eingefadet wird, so liefert das Startereignis das eingestellte Grundvolumen/-helligkeit des Objektes als Wert.

Es ist also notwendig genau zu überlegen, ob man den Wert aus dem Trigger Objekt verwendet oder den im Befehl angegebenen (festen) Wert verwendet.
Sie können festlegen, ob für den MIDI Befehl der fest eingestellte Wert (meistens Data 2, bei MIDISysex Befehlen ist der Wert in den Data Bytes versteckt) verwendet werden soll, oder ob der mitgelieferte Wert aus dem Trigger Objekt verwendet werden soll:
Unten im Fenster werden Ihnen der Vollständig halber die Trigger Objekte angezeigt.
Mit dem Suchfeld können Sie die Liste einschränken.
Wenn Sie auf eine Spaltenüberschrift klicken, werden alle Reihen entsprechend sortiert.
Es werden die Gruppe und Name des zugeordnete Trigger Typs, der Name des Objektes, der Startzeitpunkt und die Länge angezeigt. Wird das Objekt abgespielt, so wird der mitgelieferte Wert und die akzuelle Position innerhalb des Objektes angezeigt.
Senden von Timecode
Wenn ein SPIT Trigger Objekt abgespielt wird, kann während das Objekt abgespielt wird ein Timecode gesendet werden. Die Midi Timecode Nachrichten werden an alle ausgewählten Midi Geräte (Midi out) gesendet.
Hinweis: Da Windows oder Mac OS keine Echtzeit-Betriebssysteme sind, kann es beim Senden von Timecode eventuell zu Unregelmäßigkeiten kommen. Ein Empfänger, der die Timecode Nachrichten sehr streng auf Plausibilität prüft, könnte die Nachrichten als nicht konsistent abweisen.
Die Startzeit kann bei 'Midi Timecode' angegeben werden.
Es macht hier nur Sinn für den Start eines Objektes eine Zeit anzugeben:
Sie können ene beliebige Startzeit eingeben oder die originäre Startzeit des Trigger Objektes verwenden.
Die Zeit wird in folgendem Format angegeben: hh:mm:ss:mmm (hh = Stunden, mm = Minuten, ss = Sekunden, mmm = Millisekunden)

| Wenn das Objekt abgespielt wird, werden Timecode Nachrichten gesendet. Der Startzeitpunkt ist die angegebene Zeit. In der Tabelle der SPIT Typen wird dies mit MTC und der Zeitangabe dargestellt
| Der Startzeitpunkt wird von der Startposition des jeweilgen Trigger Objektes übernommen. In der Tabelle der SPIT Typen wird dies nur mit MTC dargestellt.

### Erzeugen von Triggern am Beispiel der liveSHOWsoftware

Im Menü der liveSHOWsoftware klicken Sie auf Medien - Trigger:
Es öffnet sich das Trigger-Fenster:
Wenn Sie auf das Plus-Symbol klicken, wird ein neuer Trigger-Typ erzeugt. In der Tabelle können Sie den Namen des Trigger-Typs ändern.
Den Trigger-Typ können Sie mit gedrückter linker Maustaste in eine Medien-Spur der Timeline ziehen oder in den Medienbereich des Jingle-Fensters.
In der Timeline entsteht ein Trigger-Objekt.
Wenn der Medien-Cursor das Trigger-Objekt errreicht , verlässt oder innerhalb des Objektes spielt, werden diie Midi-Befehle gesendet, wie Sie es weiter oben eingestellt haben.
Wenn im liveSHOW_Midi-Client für das Trigger-Objekt (dem zugehörigen Trigger-Typ) kein Befehl,eingestellt wurde oder kein Midi-Gerät zugewiesen wurde, an das die Befehle gesendet werden sollen, so wird in der Timeline das Trigger-Objekt mit einem roten Rahmen dargestellt.
Der rote Rahmen erscheint auch, wenn ein zugewiesenes Midi-Gerät deaktiviert wird oder aktuell nicht angeschlossen ist.
Hinweis: Werden mehrere liveSHOW_Midi-Clients gestartet, so erscheint der rote Rahmen NUR wenn die Zuweisung in ALLEN liveSHOW_Midi-Clients falsch ist. Ist wenigstens in einem der liveSHOW_Midi-Clients die Zuweisung für den Trigger-Typ richtig, so verschwindet der rote Rahmen.

## Das Laden und Speichern von MIDI Einstellungen

MIDI Einstellungen sind abhängig von dem geladenen Projekt des SPIT Servers (z.B. liveSHOWsoftware). Daher sollte der Dateiname unter dem die Einstellungen gespeichert werden, dem Dateinamen des Server Projektes entsprechen. Der liveSHOW_MIDI Client schlägt automatisch beim Speichern oder Laden den entsprechenden Namen vor - vorausgesetzt der liveSHOW_MIDI Client ist mit dem Server vebunden.
Wenn Sie sich angewöhnen die MIDI Einstellungen immer im Projektordner des Servers zu speichern, so finden Sie recht schnell die zum Server Projekt passende Datei.
ACHTUNG: Wenn Sie ein Server Projekt auf einen anderen Rechner portieren (z.B. vom Bürorechner auf den Showrechner), so müssen Sie daran denken auch die entsprechenden MIDI Einstellungs Datei auf den anderen Rechner zu kopieren.

| Alle Einstellungen können in einer Datei gespeichert werden. Die MIDI Einstellungen sind eng mit dem Projekt des Servers verknüpft. Um diesen Zusammenhang erkennbar zu machen, sollten Sie immer den gleichen Dateinamen wie das Projekt des Servers verwenden. ACHTUNG: Wenn Sie ein Server Projekt auf einen anderen Rechner portieren (z.B. vom Bürorechner auf den Showrechner, so müssen Sie daran denken auch die entsprechenden MIDI Einstellungs Datei auf den anderen Rechner zu kopieren. Wenn Sie die Midi-Einstellungen schon einaml gespeichert hatten und ein Midi-Gerät aktuell nicht angeschlossen ist, erscheint eine Meldung, dass es Verweise zu nicht angeschlossenen Midi-Geräten gibt. Sie können dann entscheiden, ob Sie: die Verweise behalten wollen Wird ein Misi-Gerät wieder angeschlossen, so wird es automatisch aktiviert. die Verweise NICHT behalten wollen Dann werden alle Verweise zu nicht angeschlossenen Midi-Geräten gelöscht und nur die Verweise zu aktuell angeschlossenen Midi-Geräte gespeichert.
| Die gespeicherten Einstellungen können aus aus einer Datei geladen werden.
| Ist dies aktiviert, so wird beim Start des liveSHOW_MIDI Clients automatisch die zuletzt geladenen/gespeicherten Einstellungen geöffnet. |

Anmerkung: Alle Trigger Typen, Trigger Objekte oder Fernsteuerbefehle, die im liveSHOW_MIDI Client gelistet sind und nicht mit denen des Server Projektes übereinstimmen, werden mit einem roten Hintergrund dargestellt.