SONiVOX JETCreator Bedienungsanleitung

Content-Authoring-Anwendung für die JET Interactive Music Engine

1 Einführung

1.1 Übersicht

Dieses Dokument enthält die Nutzerrichtlinien für den SONiVOX JET Creator, eine Authoring-Anwendung zum Erstellen und Vorsprechen von JET-Dateien. JET ist ein interaktiver Musikplayer für kleine eingebettete Geräte wie Geräte mit der Android-Plattform. Anwendungen können interaktive Musiksoundtracks im MIDI-Format hinzufügen, die in Echtzeit auf Spielereignisse und Nutzerinteraktionen reagieren.

JET arbeitet in Verbindung mit dem integrierten Audio-Synthesizer (EAS) von SONiVOX, dem MIDI-Wiedergabegerät für Android. Sowohl die JET- als auch die EAS-Engines sind über die Klasse JetPlayer in die eingebettete Android-Plattform sowie in die JET Creator-Anwendung integriert. So kann der Autor von JET-Inhalten sicher sein, dass die Wiedergabe sowohl in der JET Creator-Version als auch in der endgültigen Android-App, die auf Android-Mobilgeräten wiedergegeben wird, identisch klingen.

Neben der grafischen Benutzeroberfläche bietet JET Creator zwei Hauptfunktionen. Der erste Schritt besteht darin, alle Quelldaten (MIDI-Dateien und DLS-Dateien) zu erfassen, die JET-Echtzeitattribute hinzuzufügen und eine JET-Datei (.jet) zu erstellen, die von der Android-Anwendung verwendet wird. Bei der zweiten Funktion müssen die interaktiven Wiedergabeelemente in der Android-App abgehört werden.

Die JET Creator-Anwendung ist in der Programmiersprache Python geschrieben. Daher müssen Sie die aktuelle Version von Python und WXWidgets installiert haben. Es gibt sowohl eine Mac- als auch eine Windows-Version.

1.2 Abkürzungen und allgemeine Begriffe

Es ist wichtig, einen gemeinsamen Satz von Begriffen zu verwenden, um Verwirrung zu minimieren. Da JET MIDI auf unterschiedliche Weise nutzt, reichen übliche Fachbegriffe unter Umständen nicht immer aus. Im Folgenden findest du die Definition der Begriffe, wie sie auf dieser Seite und in der JET Creator-Anwendung verwendet werden:

Kanal: MIDI-Daten, die einem bestimmten MIDI-Kanal zugeordnet sind. Standard-MIDI ermöglicht 16 Kanäle mit MIDI-Daten, die jeweils einem bestimmten Instrument zugeordnet sind.

Controller: Ein MIDI-Ereignis, das aus einer Kanalnummer, einer Controllernummer und einem Controllerwert besteht. Die MIDI-Spezifikation weist vielen Controllernummern bestimmte Funktionen zu, z. B. Lautstärke, Expression, Sustain-Pedal usw. JET verwendet Controller-Ereignisse auch, um spezielle Steuerinformationen in eine MIDI-Sequenz einzubetten und für die Audiosynchronisierung bereitzustellen.

DAW: Digital Audio Workstation Eine gängige Bezeichnung für MIDI- und Audiosequencing-Anwendungen wie Logic, SONAR, Cubase und andere.

EAS:Eingebetteter MIDI-Synthesizer. Der Name des SONiVOX MIDI-Synthesizers.

JET: Jet Interactive Engine Der Name der interaktiven Musik-Engine SONiVOX JET.

M/B/T: Measures, Beats und Ticks

Segment: Ein Musikabschnitt wie ein Refrain oder eine Strophe, die Bestandteil der Gesamtkomposition ist. In JET kann ein Segment eine vollständige MIDI-Datei oder ein Segment sein, das aus einem Teil einer MIDI-Datei abgeleitet wird.

SMF-0: Standard-MIDI-Dateityp 0; eine MIDI-Datei, die einen einzelnen Track enthält, aber aus mehreren Kanälen mit MIDI-Daten bestehen kann.

SMF-1: Standard-MIDI-Dateityp 1; eine MIDI-Datei mit einem oder mehreren Tracks. Jeder Track kann wiederum aus einem oder mehreren Kanälen mit MIDI-Daten bestehen. Konventionsgemäß wird jeder Kanal auf einem separaten Track in einer SMF-1-Datei gespeichert. Es ist jedoch möglich, mehrere MIDI-Kanäle für einen einzelnen Track zu verwenden oder mehrere Tracks, die Daten für denselben MIDI-Kanal enthalten.

Track: Ein einzelner Track in einer DAW, der eine zeitlich festgelegte Abfolge von Ereignissen enthält. Achte darauf, Tracks nicht mit Kanälen zu verwechseln. Eine MIDI-Datei kann viele Tracks mit mehreren Tracks enthalten, die denselben MIDI-Kanal nutzen.

2 Das JET Interactive Music Concept

Interaktive Musik kann als Musik definiert werden, die sich in Echtzeit aufgrund nicht vorhersehbarer Ereignisse wie Nutzerinteraktionen oder Spielereignisse ändert. Interaktive Musik ist auf diese Weise viel ansprechender, da sie der Energie und Stimmung eines Spiels viel besser entsprechen kann als eine vorab komponierte Komposition, die sich nie ändert. In einigen Anwendungen und Spielen spielt interaktive Musik eine zentrale Rolle. Guitar Hero ist ein so beliebtes Spiel. Wenn der Endnutzer erfolgreich die Noten am Griffbrett erfasst, passt sich die Musik an und hält gleichzeitig Erfolge und Misserfolge fest. JET ermöglicht auch diese Art von musikbasierten Spielen.

Es gibt verschiedene Methoden zum Erstellen und Steuern von interaktiver Musik, darunter JET. In diesem Abschnitt werden die Funktionen von JET und deren Verwendung in einem Spiel oder einer Softwareanwendung beschrieben. Außerdem wird beschrieben, wie JET verwendet werden kann, um auf Geräten mit geringem Platzbedarf, z. B. Android-fähigen Mobiltelefonen, Arbeitsspeicher zu sparen.

2.1.1 Datenkomprimierung

JET unterstützt ein flexibles Musikformat, mit dem sich erweiterte Musiksequenzen mit minimaler Datenmenge erstellen lassen. Eine Musikkomposition wird in Segmente aufgeteilt, die in einer bestimmten Reihenfolge zu einem längeren Stück zusammengesetzt werden können. Die Sequenz kann bei der Erstellung der Musikdatei festgelegt oder dynamisch und über die Programmsteuerung erstellt werden.

2.1.2 Beispiel für lineare Musik


Abbildung 1: Stück für lineare Musik

Dieses Diagramm zeigt, wie Musiksegmente gespeichert werden. Jedes Segment wird als separate MIDI-Datei erstellt. Ein Nachbearbeitungstool kombiniert die Dateien in einer einzelnen Containerdatei. Jedes Segment kann alternative Musiktitel enthalten, die stummgeschaltet oder die Stummschaltung aufgehoben werden können, um zusätzliches Interesse zu wecken. Ein Beispiel ist ein Blechakzent im Refrain, der nur das letzte Mal durchgespielt wird. Segmente können auch nach oben oder unten transponiert werden.

Der untere Teil des Diagramms zeigt, wie die Musiksegmente zu einem linearen Musikstück kombiniert werden können. In diesem Beispiel könnte die Brücke mit einer Halbschritt-Tastenmodulation enden und die übrigen Segmente könnten entsprechend um einen Halbschritt vertauscht werden.

2.1.3 Beispiel für nicht lineare Musik


Abbildung 2: Nicht lineares Musikstück

In diesem Diagramm sehen wir ein nicht lineares Musikstück. Das Szenario ist ein Ego-Shooter und JET stellt die Hintergrundmusik bereit. Das Intro wird abgespielt, während das Level geladen wird, und geht dann unter der Programmsteuerung zum Suchsegment über. Dieses Segment wird unbegrenzt wiederholt, eventuell mit kleinen Variationen (mithilfe der Funktion zum Stummschalten/Lautschalten), bis die Aktivität im Spiel eine Änderung vorgibt.

Wenn sich der Spieler einem Versteck eines Monsters nähert, beginnt das Programm einen synchronisierten Übergang zum Segment „Danger“ und erhöht die Spannung im Audio. Wenn sich der Spieler dem Versteck nähert, werden weitere Spuren wieder stummgeschaltet, um die Spannung zu erhöhen.

Während der Spieler in den Kampf mit dem Monster kämpft, beginnt das Programm einen synchronisierten Übergang zum Kampfsegment. Das Segment wiederholt sich auf unbestimmte Zeit im weiteren Kampf. Durch einen Bonustreffer wird die Stummschaltung einer dekorativen Spur vorübergehend aufgehoben, die den Spieler über einen erfolgreichen Angriff informiert. Gleichermaßen wird eine andere Spur vorübergehend wieder aktiviert, um anzuzeigen, dass der Spieler Sonderschaden erhält.

Am Ende des Kampfes geht die Musik je nach Ausgang des Kampfes zu einem Sieg oder Niederschlag über.

2.1.4 Synchronisierung der Stummschaltung/Lautschaltung

JET kann auch das Stummschalten und Aufheben der Stummschaltung von Titeln mit Ereignissen in der Musik synchronisieren. Im Ego-Shooter-Spiel wäre es wahrscheinlich wünschenswert, die musikalischen Ereignisse im Zusammenhang mit Boni und Schaden so nah wie möglich an das tatsächliche Spielereignis zu stellen. Wenn du die Stummschaltung eines Titels aber in dem Moment aufhebst, in dem das Spielereignis stattfindet, kann dies dazu führen, dass ein Musikclip in der Mitte startet. Es ist auch möglich, einen Clip am Anfang zu starten, dann aber nicht mit den anderen Musiktiteln zu synchronisieren.

Mit der JET-Synchronisierungs-Engine kann jedoch zum nächsten passenden Zeitpunkt ein Clip gestartet und die Synchronisierung beibehalten werden. Dies kann erreicht werden, indem eine Reihe kurzer Musikclips auf eine dekorative Spur gelegt werden. Ein MIDI-Ereignis im Stream kennzeichnet den Beginn eines Clips und ein zweites Ereignis das Ende des Clips. Wenn die Anwendung die JET-Clip-Funktion aufruft, darf der nächste Clip im Track vollständig synchron mit der Musik wiedergegeben werden. Optional kann der Track durch ein zweites MIDI-Ereignis automatisch stummgeschaltet werden.


Abbildung 3: Synchronisierte Stummschaltung/Stummschaltung

2.2 Audiosynchronisierung

JET bietet eine API zur Audiosynchronisierung, mit der das Spiel mit Audioereignissen synchronisiert werden kann. Dazu werden Daten benötigt, die zum Zeitpunkt der Erstellung des Inhalts in der MIDI-Datei eingebettet waren. Wenn die JET-Engine während der Wiedergabe ein Ereignis erkennt, wird ein Callback an das Anwendungsprogramm generiert. Das Timing des Callbacks kann angepasst werden, um die Latenz im Audiowiedergabesystem auszugleichen, sodass Audio und Video synchronisiert werden können. Das folgende Diagramm zeigt ein Beispiel für ein einfaches Musikspiel, bei dem im Rhythmus der Musik der Links- und Rechtspfeil gedrückt werden.


Abbildung 4: Musikspiel

Die Pfeile stellen Ereignisse in der Musiksequenz dar, bei denen Spielereignisse synchronisiert werden müssen. In diesem Fall steht der blaue Pfeil für eine Zeit, zu der der Spieler die linke Taste drücken soll, und der rote Pfeil für die rechte Schaltfläche. Der gelbe Pfeil teilt der Spiel-Engine mit, dass die Sequenz abgeschlossen ist. Der Player darf vor und nach der Veranstaltung während eines bestimmten Zeitfensters die entsprechende Taste drücken.

Wenn ein Ereignis empfangen wird und der Spieler keine Schaltfläche gedrückt hat, wird ein Timer auf die halbe Länge des Fensters eingestellt. Wenn der Spieler die Schaltfläche drückt, bevor der Timer abläuft, registriert das Spiel einen Erfolg. Falls nicht, meldet das Spiel einen Fehler.

Wenn der Player die Schaltfläche drückt, bevor das Ereignis empfangen wird, wird ein Timer auf die halbe Länge des Fensters eingestellt. Wenn ein Ereignis empfangen wird, bevor der Timer abläuft, meldet das Spiel einen Erfolg. Falls nicht, meldet das Spiel einen Fehler. Das Spiel kann auch Bonuspunkte beinhalten, um den zeitlichen Ablauf des eigentlichen Ereignisses zu erreichen.

3 Übersicht über die Erstellung von Inhalten bei JET

Um JET-Dateien zu erstellen und sie interaktiv wiederzugeben, arbeitet der Autor in zwei Anwendungen, die so konzipiert sind, dass sie reibungslos zusammenarbeiten. Die erste ist eine beliebige Standardanwendung für MIDI-Sequenzierung, die VST-Plug-ins (für PC) oder AU-Plug-ins (für Mac) unterstützt. Hier erstellt der Autor seine MIDI-Musikdateien mit dem Plug-in als Synthesizer. Die zweite Anwendung ist die JET Creator-Anwendung. Hier importiert der Autor seine MIDI-Musikdateien (und optional ein DLS2-Soundset) und richtet die Bedingungen für die interaktive Wiedergabe innerhalb des JET-fähigen Spiels ein. Optional kann der Inhaltsautor mit einem Instrumenteneditor, der das DLS-Level 2-Format unterstützt, einen benutzerdefinierten Satz von DLS-Instrumenten erstellen. Eine solche Anwendung ist Awave von MJSoft.

Weitere Informationen zum Erstellen von Inhalten finden Sie in der Dokumentation zu den JET-Richtlinien für die Erstellung von Inhalten.

4 JET Creator installieren und starten

JET Creator ist eine Python-Anwendung. Daher müssen Python und wxPython auf Ihrem Computer installiert sein.

JetCreator wurde entwickelt und getestet mit:

Python-Version 2.5.4

wxPython Version 2.8.7.1

Diese können hier heruntergeladen werden:

PC:

  • http://www.python.org/download/releases/2.5.4/
  • http://www.wxpython.org/download.php

MAC:

  • http://wiki.python.org/moin/MacPython/Leopard
  • http://www.wxpython.org/download.php

Nachdem Sie Python und wxPython installiert haben, entpacken oder kopieren Sie alle Dateien im Anwendungsverzeichnis des JET Creator in einen Ordner auf Ihrer Festplatte.

Um JET Creator zu starten, geben Sie über eine Eingabeaufforderung das Verzeichnis ein, in dem Sie Python installiert haben. Führen Sie als Nächstes Python mit dem Befehl aus:

python jetcreator.py

5 JET Creator verwenden

5.1 Dateitypen

Mit JET Creator sind verschiedene Dateitypen verknüpft.

JETC JET Creator-Projektdatei. Diese Datei enthält alle Informationen, die mit einem JET Creator-Projekt verknüpft sind. Beim Speichern oder Speichern unter JET Creator wird dieser Dateityp gespeichert.

.jet JET-Datei. Diese Ausgabedatei wird jedes Mal automatisch von JET Creator generiert, wenn Sie Ihr JET Creator-Projekt speichern. Dies ist die Datei, die alle JET-Assets in einer einzigen Datei bündelt, die von der Android-Anwendung verwendet wird. Geben Sie diese Datei an den Entwickler der Android-Anwendung weiter.

.Mid-Datei. Dies ist die Standarddatei des MIDI-Typs 1, die JET Creator zum Erstellen von Segmenten verwendet.

.seg-Segmentdatei. Dies ist eine JET-Segmentdatei. Es hat denselben Namen wie die MIDI-Datei, auf die es verweist, enthält jedoch zusätzliche Segmentinformationen.

ZIP-Archivdatei herunterladen. Wenn Sie ein JET-Archiv exportieren, wird eine ZIP-Datei mit allen Assets (Dateien) erstellt, die für JET Creator erforderlich sind. Hiermit können Sie JET Creator-Projekte auf andere Personen übertragen.

5.2 Dialogfeld öffnen

Wenn Sie JET Creator zum ersten Mal starten, wird ein offenes Dialogfeld wie das folgende angezeigt.

<img <="" Rahmen="0" Höhe="285" p="" src="/static/images/jet/jc_open_dlg.png" width="450" />

Open (Öffnen) öffnet eine vorhandene JETC-Datei (JET Creator-Datei). Wechseln Sie über die Browserschaltfläche zu dem Verzeichnis, in dem Sie Ihre .jtc-Datei gespeichert haben.

Neu erstellt eine neue .jtc-Datei.

Beim Importieren wird eine JET-Archivdatei (.zip) importiert.

Mit Abbrechen wird das Dialogfeld geschlossen und die Anwendung beendet.

5 Hauptfenster

Das Hauptfenster der JET Creator-Anwendung sieht wie in der Abbildung unten aus. Es gibt drei Hauptabschnitte von oben nach unten: Segmentansicht, Ereignisansicht und Zeitachse.

Im Bereich „Segmentansicht“ wird eine Liste der aktuellen Segmente angezeigt, aus der jedes Segment die jeweilige MIDI- und (optional) DLS2-Datei abgeleitet ist. Außerdem wird die Start- und Endzeit der einzelnen Segmente sowie die Flag-Einstellungen zum Quantisieren, Transponieren, Wiederholen und Stummschalten der einzelnen Segmente angezeigt.

Direkt unter der Segmentansicht ist die Ereignisansicht. Im Bereich „Ereignisansicht“ werden alle Ereignisse angezeigt, die einem bestimmten Segment zugeordnet sind. Ereignisse werden nur angezeigt, wenn das Segment, dem sie zugewiesen sind, hervorgehoben ist. Bei jedem Ereignis werden der Typ, die Start- und Endpunkte, die Track- und Midi-Kanalzuweisung sowie die Ereignis-ID angezeigt.

Direkt unter der Ereignisansicht befindet sich die Zeitachse. Auf der Zeitachse sehen Sie, wie viele Messungen es in einem bestimmten Segment gibt und welche Ereignisse mit diesem Segment verknüpft sind. Auf der Zeitachse wird nun das aktuell ausgewählte oder wiedergegebene Segment angezeigt. In diesem Fenster können Sie ein Ereignis auslösen, während das Segment wiedergegeben wird. Klicken Sie dazu einfach in der Zeitachse auf das Ereignis.


JET Hauptfenster für Creator

Mit den Schaltflächen auf der linken Seite des Hauptfensters haben Sie folgende Möglichkeiten:

Hinzufügen: Zeigt das Segment- oder Ereignisfenster zum Hinzufügen eines neuen Segments oder Ereignisses an.

Überarbeiten: Zeigt das Segment oder Ereignisfenster zur Aktualisierung eines vorhandenen Segments oder Ereignisses an.

Löschen: Löscht das ausgewählte Segment oder Ereignis (nach Bestätigung erforderlich)

Verschieben: Zeigt das Fenster zum Verschieben an, mit dem Sie ausgewählte Segmente oder Ereignisse in der Zeit verschieben können.

Alle in die Warteschlange: Wählt alle Segmente für die Wiedergabe aus.

Alle aus der Warteschlange entfernen: Alle Segmente werden aus der Warteschlange entfernt bzw. ihre Auswahl aufgehoben.

Wiedergeben: Startet die Wiedergabe aller Segmente in der Warteschlange. Die Schaltfläche wechselt zu „Stopp“, wenn Segmente

Audition: Zeigt das Audition-Fenster an (siehe unten)

5.1 Segmentfenster

Im Segmentfenster werden die Attribute eines bestimmten Segments zugewiesen und vorgelesen, wie in der Abbildung unten dargestellt. Auf der linken Seite des Fensters werden die in der JET-Datei gespeicherten Segmentattribute angezeigt. Auf der rechten Seite des Fensters kann der Autor Stummschaltungs-Flags setzen, Einstellungen wiederholen und transponieren und das Segment im JET-Spiel vorspielen.

Hinweis: Die Vorspielattribute (Stummschaltungs-Flags, Wiederholung und Transponieren) werden nicht in der JET-Inhaltsdatei (.jet) gespeichert, sondern vom Spiel oder der App selbst definiert. In der Programmiersprache entsprechen diese Einstellungen direkt den API-Aufrufen der JET-Engine. Damit kann der JET-Inhaltsautor simulieren, wie das Segment während des Spiels auf die API-Befehle der Anwendung reagiert.

Die Segmentparameter haben folgende Aufgaben:

  • Segmentname: Legt den Namen des Segments fest,
  • MIDI-Datei: Name und Speicherort der MIDI-Datei, aus der das Segment stammt. Über die Schaltfläche rechts daneben öffnen Sie einen Browser, in dem Sie eine Midi-Datei auf der Festplatte suchen können.
  • DLS-Datei: der Name und der Speicherort der DLS2-Datei (falls vorhanden), die die MIDI-Datei für dieses Segment verwendet.
  • M/B/T zu Beginn – Startmessung, Beat und Tick des Segments
  • End-M/B/T - End-Takt, Beat und Tick des Segments
  • Quantisieren: Quantisieren Sie den Wert für die Quantisierung des aktuellen Segments während der Wiedergabe.

Die Vorspielfelder sind:

  • Track-Stummschaltungen: Zeigt die MIDI-Spuren (nicht die Kanäle) in der MIDI-Datei an. Durch Klicken auf das Kästchen eines Tracks wird dieser stummgeschaltet.
  • Channel: Zeigt den MIDI-Kanal an, der jedem Track zugewiesen ist.
  • Name: Zeigt das Metaereignis des Titelnamens (falls vorhanden) für jeden Track an.
  • Wiederholen: Gibt an, wie oft ein Segment während der Wiedergabe wiederholt werden soll.
  • Transponieren: Gibt die Transponierung in Halbtönen oder Halbschritten an, die ein Segment während der Wiedergabe transponieren soll.
  • Rechts neben dem Audition-Fenster befinden sich einige zusätzliche Schaltflächen. Das hat folgende Auswirkungen:
  • OK - Wenn Sie "OK" auswählen, werden alle Segmenteinstellungen bestätigt und das Segmentierungsfenster geschlossen.
  • Abbrechen - Wenn Sie auf "Abbrechen" klicken, werden alle Änderungen abgebrochen und das Segmentierungsfenster geschlossen.
  • Replizieren: Das Fenster "Segment replizieren" wird für die gleichzeitige Eingabe mehrerer Segmente angezeigt. Weitere Informationen erhalten Sie im Folgenden.
  • Segment abspielen/beenden: Startet oder stoppt die Wiedergabe des Segments mithilfe der zugewiesenen Segmentattribute.
  • MIDI-Datei abspielen/beenden: Startet oder stoppt die Wiedergabe der MIDI-Datei, der das Segment zugewiesen ist.
  • Pausieren/fortsetzen: Pausiert die Wiedergabe oder setzt sie fort.

5.2 Ereignisfenster

Im Ereignisfenster werden die Ereignisattribute eines bestimmten Segments zugewiesen und vorgespielt, wie in der folgenden Abbildung dargestellt. Um einem Segment ein Ereignis hinzuzufügen, muss der Autor zuerst das Segment auswählen, das das Ereignis enthalten soll, und dann auf die Schaltfläche „Hinzufügen“ klicken. Das Ereignisfenster wird aufgerufen.

Das Ereignisfenster besteht aus zwei Hauptabschnitten. Der Segmentbereich auf der linken Seite des Ereignisfensters dient nur der Anzeige. Hier sehen Sie die Attribute für das jeweilige Segment. Im Bereich „Ereignis“ auf der rechten Seite können Ereignisse zugewiesen werden. Folgende Parameter sind verfügbar:

Event Name (Ereignisname): Weist einem Ereignis einen Namen zu.

Ereignistyp: Hier wählen Sie den Ereignistyp aus, der zugewiesen werden soll.

M/B/T zu Beginn: Setzt Takt, Beat und Tick für das Ereignis.

End-M/B/T – Setzt Taktung, Schläge und Tick für das Ereignis (falls zutreffend)

Track - Gibt an, auf welchen Track im jeweiligen Segment das Ereignis angewendet wird.

Kanal: Legt fest, für welchen MIDI-Kanal das Ereignis gilt. Der MIDI-Kanal sollte mit dem MIDI-Kanal des Tracks übereinstimmen.

Event ID (Ereignis-ID): Hier legen Sie die Ereignis-ID für das Ereignis fest. Mehrere Ereignisse können demselben Segment zugewiesen werden. Sie werden anhand der Ereignis-ID identifiziert.

Rechts neben dem Audition-Fenster befinden sich einige zusätzliche Schaltflächen. Das hat folgende Auswirkungen:

OK - Wenn Sie "OK" auswählen, werden alle Termineinstellungen bestätigt und das Terminfenster geschlossen.

Abbrechen - Wenn Sie auf "Abbrechen" klicken, werden alle Änderungen abgebrochen und das Terminfenster geschlossen.

Replizieren: Das Fenster „Ereignis replizieren“ wird für die gleichzeitige Eingabe mehrerer Ereignisse angezeigt. Siehe unten.

Wiedergabe/Stopp: Startet oder stoppt die Wiedergabe des Segments mithilfe der zugewiesenen Segmentattribute. Während das Segment wiedergegeben wird, können Ereignisse ausgelöst und vorgelesen werden.

Trigger: Löst das zugewiesene Ereignis aus. Dadurch wird der API-Befehl repliziert, den das JET-Spiel zum Auslösen des Ereignisses verwendet. Dadurch erhält der Inhaltsautor eine Methode, um das Verhalten des Ereignisses vorzulesen.

Stummschalten/Stummschaltung aufheben - Stummschalten/Stummschaltung aufheben - Stummschaltung/Stummschaltung aufheben - Stummschaltung oder Aufhebung der Stummschaltung des Titels, dem das Ereignis zugewiesen ist.

Pausieren/fortsetzen: Pausiert die Wiedergabe oder setzt sie fort.

Um das Verhalten eines Ereignisses vorzuspielen, klicken Sie auf die Schaltfläche "Play". Dadurch wird die Wiedergabe gestartet. Beim Klicken auf die Trigger-Schaltfläche wird das Trigger-Ereignis gesendet. Dies entspricht der Auswahl des grünen Triggerereignisses in der Zeitachse.

Hinweis: Trigger-Ereignisse sollen die Stummschaltung eines einzelnen Tracks eines Segments aufheben, wenn sie ausgelöst wird, und dann diesen Track am Ende des Triggersegments stummschalten. Daher muss das Flag „Stummschalten“ so eingestellt sein, dass der Track stummgeschaltet wird, für den ein Triggerereignis beim Empfang eines Triggerereignisses die Stummschaltung aufgehoben hat.

Weitere Informationen zur Funktionsweise und Funktionsweise von Triggerereignissen finden Sie unten in Abschnitt 6: Details.

5.3 Windows replizieren

Wenn Sie JET-Dateien erstellen, müssen Sie oft Dutzende oder sogar Hunderte von Ereignissen erstellen. Möglicherweise müssen Sie auch Termine verschieben. Die Fenster „Replikation“ und „Verschieben“ ermöglichen dies. Für die Erstellung mehrerer Segmente oder Ereignisse gibt es zwei Replikationsfenster. Sie sehen so aus:

Segmentfenster replizieren

Ereignisfenster replizieren

Beide Replikationsfenster funktionieren gleich. Nachdem Sie ein erstes Segment oder Ereignis erstellt haben, können Sie die Schaltfläche „Replizieren“ auswählen. Die Parameter sind:

Namenspräfix: Damit legen Sie das Präfix für den Namen jedes erstellten Segments oder Ereignisses fest.

M/B/T zu Beginn: Setzt die Startzeit für das erste Segment oder Ereignis.

Increment M/B/T – Stellt die Zeit zwischen erstellten Segmenten oder Ereignissen ein.

Zahl: Hier legen Sie die Anzahl der Segmente oder Ereignisse fest, die Sie erstellen möchten. Wenn die Zahl die Länge der MIDI-Datei (für Segmente) oder des Segments (für Ereignisse) überschreitet, werden diese Objekte nicht erstellt.

Vorschau: In der Vorabversion können Sie sich die erstellten Objekte ansehen, bevor Sie sie einfügen.

5.4 Fenster verschieben

Die Funktion „Verschieben“ funktioniert ähnlich wie die Funktion „Replikat“: Sie können damit mehrere Segmente oder Ereignisse gleichzeitig bearbeiten. In diesem Fall können Sie sie entsprechend verschieben. Wie „Replikat“ gibt es auch zwei Verschiebungsfenster, eines für Segmente und eines für Ereignisse. Die Fenster sehen so aus:

Ereignisfenster verschieben

Dazu wählen Sie zunächst die Segmente oder Ereignisse aus, die Sie verschieben möchten. Klicken Sie dann auf die Schaltfläche "Verschieben". Die Parameter sind:

M/B/T zu Beginn: Setzt die Startzeit für das erste Segment oder Ereignis.

Increment M/B/T: Legt die Zeit in M/B/T fest, um die Sie die Objekte verschieben möchten.

Vorschau: In der Vorabversion können Sie die erstellten Objekte prüfen, bevor Sie „OK“ sagen, um sie zu verschieben.

5.5 Vorspielfenster

Durch Klicken auf die Schaltfläche Audition im Hauptfenster der JET Creator-Anwendung wird das Audition-Fenster geöffnet. Hier kann der Autor des Inhalts oder der Anwendungsprogrammierer die interaktive Wiedergabe in der mobilen App oder dem Spiel selbst simulieren.

JET-Vorspielfenster

Das Vorspielfenster besteht aus vier Hauptabschnitten. Im Bereich ganz links sehen Sie die verfügbaren Segmente und ihre Länge in Sekunden. Im mittleren Bereich sehen Sie eine laufende Liste der Segmente, die sich in der Warteschlange für die Wiedergabe befinden, sowie deren Wiedergabestatus. Ganz rechts sehen Sie die Stummschaltungs-Flags für das aktuell wiedergegebene Segment. Der Zeitachsenabschnitt unten entspricht dem Abschnitt im Hauptfenster. Es enthält das aktuell wiedergegebene Segment sowie alle Ereignistrigger, die mit diesem Segment verknüpft sind.

Im Fenster "Vorspielen" kannst du jedes Segment in beliebiger Reihenfolge für die Wiedergabe zur Wiedergabeliste hinzufügen. Wählen Sie dazu einfach das gewünschte Segment aus und klicken Sie auf die Warteschlange. Dieses Segment wird im Warteschlangenfenster angezeigt und die Wiedergabe beginnt, sofern es das erste Segment ist. Anschließend kannst du ein beliebiges anderes Segment oder beliebige Segmente auswählen und für die Wiedergabe angeben. Sobald die Wiedergabe der Segmente abgeschlossen ist, wird das nächste Segment in der Wiedergabeliste abgespielt. Wie auch bei den anderen Fenstern von JET Creator können Sie in Echtzeit während der Wiedergabe der einzelnen Segmente die Stummschaltung aufheben, die Stummschaltung aufheben, Ereignisclips auslösen usw.

Die Schaltflächen verhalten sich so:

Warteschlange: lädt das ausgewählte Segment in die Warteschlange und startet die Wiedergabe.

Abbrechen und in die Warteschlange stellen: Das aktuell wiedergegebene Segment wird abgebrochen, bevor das ausgewählte Segment zur Wiedergabe in die Warteschlange gestellt wird.

Aktuelles Segment abbrechen: Damit wird das aktuell wiedergegebene Segment in der Warteschlange abgebrochen und das nächste Segment wiedergegeben.

Stopp: Stoppt die Wiedergabe aller Segmente in der Warteschlange.

Alle stummschalten - schaltet alle Tracks im aktuellen Segment stumm.

Keine Stummschaltung: hebt die Stummschaltung aller Tracks im aktuellen Segment auf.

Original-Stummschaltungen: Setzt die ursprünglichen Stummschaltungen für das aktuelle Segment.

Die Kombination dieser Wiedergabeoptionen ermöglicht es einem Autor oder Anwendungsprogrammierer, jedes Verhalten einer interaktiven Musikanwendung vorzuspielen.

5.6 JET-Creator-Menüs

Die JET Creator-Menüs bieten Zugriff auf viele Parameter im Hauptfenster sowie auf einige zusätzliche Parameter.

5.6.1 Menü „Datei“

Das Menü „File“ (Datei) enthält die folgenden Elemente:

Neu: Erstellt eine neue JET Creator-Datei (.jtc)

Öffnen - Öffnet eine bestehende JET Creator-Datei

Speichern: Die aktuell geöffnete JET Creator-Datei wird gespeichert.

Speichern unter - Speichert die aktuell geöffnete JET Creator-Datei in einer neuen Datei

Projekt importieren – Importiert ein JET Creator-Archiv (.zip)

Projekt exportieren – Exportiert ein JET Creator-Archiv (.zip)

Beenden: Beendet die Anwendung.

5.6.2 Menü „Bearbeiten“

Das Menü "Bearbeiten" enthält die folgenden Elemente:

Rückgängig machen: Dadurch wird die letzte Änderung rückgängig gemacht.

Wiederholen: Mit dieser Option wird der letzte Schritt, der rückgängig gemacht wurde, rückgängig gemacht.

Cut (Ausschneiden): Ausgewählten Parameter in Zwischenablage kopieren und Auswahl löschen.

Kopieren - Ausgewählten Parameter in Zwischenablage kopieren und Auswahl beibehalten

Einfügen – Ausgewählten Parameter einfügen

5.6.3 JET

Das Menü "Bearbeiten" enthält die folgenden Elemente:

Eigenschaften: Öffnet das Fenster mit den JET Creator-Prioritäten. In diesem Fenster können Sie die folgenden Bedingungen für eine bestimmte JET-Datei festlegen:

Urheberrechtsinformationen – Enthält Urheberrechtsinformationen, die in die JET-Datei eingefügt werden

Chase-Controller – Option, Controller zu jagen (ein/aus). Diese sollte normalerweise aktiviert sein.

Leere Tracks löschen – löscht alle leeren MIDI-Tracks

5.6.4 Segmente

Das Menü „Segmente“ enthält die folgenden Elemente:

„Segment hinzufügen“: Öffnet das Fenster „Segment“,

Segment aktualisieren: Segmentattribute aktualisieren

Segment löschen: Löscht das aktuelle Segment aus der Segmentliste.

5.6.5 Hilfe

Das Hilfemenü enthält mindestens die folgenden Elemente:

JET Creator-Hilfe – öffnet das PDF-Hilfedokument oder öffnet die Online-Hilfe

Über – JET Creator-Versionsnummer, SONiVOX-Informationen

6 Triggerereignisse – Erklärung

Das Aufteilen einer MIDI-Datei in einzelne (nicht lineare) Segmente und das Einreihen dieser Segmente zur Wiedergabe in einem Spiel basierend auf Ereignissen innerhalb des Spiels ist eine Möglichkeit, wie JET-Musikdateien interaktiv sind. Trigger-Ereignisse sind eine zusätzliche Methode für die interaktive Wiedergabe. Beide würden in einem interaktiven Spiel oder einer interaktiven Anwendung zusammen verwendet werden.

Triggerereignisse ermöglichen Folgendes:

  1. Tracks in einem MIDI-Segment können basierend auf Spielereignissen aktiviert oder deaktiviert werden. Er könnte beispielsweise zwei Drum-Tracks verfassen, eine schnelle und eine langsame. Wenn die Action in einem Spiel schnell ist, könnte der schnelle Drum-Track abgespielt werden. Wenn die Action im Spiel langsam ist, kann auch der langsame Drum-Track abgespielt werden.
  2. Nutzeraktionen können mit Trigger-Ereignissen verglichen werden, die an musikalisch korrekten Orten vorab in eine Musikdatei eingefügt werden. Abhängig von den Ergebnissen können Punkte oder andere Spielaktionen stattfinden. .
  3. Musikalische Übergänge zwischen Levels oder Actionsequenzen können musikalisch nahtlos synchronisiert werden.

Intern verwendet JET Standard-MIDI CC-Ereignisse, um diese Aktionen auszuführen und Audio zu synchronisieren. Die von JET verwendeten Controller gehören zu denjenigen, die in der Spezifikation nicht für eine bestimmte Verwendung definiert sind. Die spezifischen Definitionen der Verantwortlichen:

Controller 80-83, für die Verwendung durch eine Anwendung reserviert

Controller 102 JET-Ereignismarkierung

Controller 103 JET-Clipmarkierung

Controller 104-119 Für zukünftige Verwendung reserviert

6.1 JET Clip-Markierung (CC103)

Controller 103 ist zum Markieren von Clips in einem MIDI-Track reserviert, die durch den API-Aufruf JET_TriggerClip ausgelöst werden können. Die Clip-ID ist in den unteren 6 Bit des Controller-Werts codiert. Bit 6 wird auf eins gesetzt, um den Beginn eines Clips anzugeben, und auf null, um das Ende eines Clips anzugeben.

Um beispielsweise einen Clip mit der Clip-ID 1 zu identifizieren, fügt der Autor am Anfang des Clips ein MIDI-Controller-Ereignis mit Controller=103 und value=65 und am Ende des Clips ein weiteres Ereignis mit Controller=103 und value=1 ein. Wird die Funktion JET_TriggerClip() mit der Clip-ID 1 aufgerufen, wird die Stummschaltung des Titels aufgehoben, sobald der Controller-Wert 65 erreicht wird, und wieder stummgeschaltet, sobald der Controller-Wert 1 erreicht wird.

Abbildung 5: Synchronisierter Clip

Wenn in der Abbildung oben die Funktion JET_TriggerClip() vor dem ersten Controller-Ereignis aufgerufen wird, wird die Stummschaltung von Spur 3 aufgehoben, wenn das erste Controller-Ereignis eintritt. Dann wird der erste Clip wiedergegeben und der Track stummgeschaltet, wenn das zweite Controller-Ereignis eintritt. Wird die Funktion JET_TriggerClip() nach dem ersten Controller-Ereignis aufgerufen, wird die Stummschaltung von Spur 3 aufgehoben, wenn das dritte Controller-Ereignis eintritt. Dann wird der zweite Clip wiedergegeben und der Track wieder stummgeschaltet, wenn das vierte Controller-Ereignis eintritt.

Hinweis:Normalerweise wird der Track, der den Clip enthält, von der Anwendung stummgeschaltet, wenn das Segment durch den Aufruf von JET_QueueSegment() anfangs in die Warteschlange gestellt wird. Ist er nicht stummgeschaltet, wird der Clip immer wiedergegeben, bis Jet_TriggerClip() mit der Clip-ID aufgerufen wurde.

6.2 JET-Ereignismarkierung (CC102)

Controller 102 dient zum Markieren von Ereignissen in den MIDI-Streams, die für JET-Funktionen spezifisch sind. Derzeit ist der einzige definierte Wert 0, was das Ende eines Segments zu Zeitzwecken markiert.

Normalerweise startet JET die Wiedergabe des nächsten Segments oder wiederholt das aktuelle Segment, wenn das MIDI-End-of-Track-Meta-Ereignis erkannt wird. Einige MIDI-Authoring-Tools erschweren die korrekte Platzierung der Markierung am Ende des Tracks, was zu Synchronisierungsproblemen führt, wenn Segmente verbunden werden.

Um dieses Problem zu vermeiden, kann der Autor eine JET-Segmentende-Markierung (Controller=102, Wert=0) an dem Punkt platzieren, an dem das Segment eine Schleife durchlaufen soll. Wenn die Markierung für das Segmentende erkannt wird, wird das nächste Segment ausgelöst. Wird das aktuelle Segment in einer Schleife wiedergegeben, wird die Wiedergabe am Anfang des Segments fortgesetzt.

Die Markierung für das Ende eines Segments kann auch verwendet werden, um eine Musikfigur über das Ende einer Messung hinaus zu vervollständigen, die den Beginn des nächsten Abschnitts markiert. Beispielsweise könnte der Inhaltsautor ein 4-Balken-Segment mit einer Trommelfüllung erstellen, die mit Takt 1 des 5. Taktes endet, einem Balken jenseits des natürlichen Endes des Segments. Wenn Sie eine Markierung für das Ende des Segments am Ende des vierten Balkens platzieren, wird das nächste Segment ausgelöst, die Trommelfüllung wird jedoch parallel zum nächsten Segment fortgesetzt und sorgt so für musikalische Kontinuität.

Abbildung 6: Markierung für das Ende eines Segments

6.3 Anwendungscontroller (CC80-83)

Die Anwendung kann Controller in diesem Bereich für ihre eigenen Zwecke verwenden. Wenn ein Controller in diesem Bereich gefunden wird, wird das Ereignis in eine Ereigniswarteschlange gesetzt, die von der Anwendung abgefragt werden kann. Zu den Verwendungsmöglichkeiten gehört das Synchronisieren von Videoereignissen mit Audio und das Markieren eines Punkts in einem MIDI-Segment, um das nächste Segment in die Warteschlange zu stellen. Der Bereich der von der Anwendung überwachten Controller kann während der Initialisierung von der Anwendung geändert werden.

7 JET-Richtlinien für Creator

7.1 Aufgabenreihenfolge

Wie bei allen Projekten solltest du am besten das interaktive Musikschema mit dem Spieledesigner und dem Programmierer besprechen und entwerfen, bevor du mit deiner Komposition beginnst. Eine Gliederung und/oder Spezifikation kann sehr hilfreich sein, wenn es darum geht, Aufgaben nach dem Start des Spiels nicht noch einmal zu wiederholen.

Grundsätzlich sollten Sie Ihre Musik zuerst in der DAW Ihrer Wahl schreiben, wie Sie sie komponieren, und dann die endgültige MIDI-Datei nach Bedarf für die Anwendung aufteilen. Gehe als Nächstes zu JET Creator und erstelle alle deine Musiksegmente in der Reihenfolge, in der sie am einfachsten wiedergegeben werden, wenn sie nacheinander abgespielt werden. Füge schließlich die JET-Ereignisse hinzu, um die Segmente über das Android-Spiel zu steuern und bei Bedarf in JET Creator vorzuspielen. Speichern Sie das Projekt schließlich in JET Creator und übergeben Sie die Jet-Datei an den Programmierer, damit er sie in das Spiel integriert. Nach der Vorschau wird es wahrscheinlich Änderungen an den MIDI-Dateien und den JET Creator-Attributen geben.

7.2 Arbeitsspeicher sparen

Wenn Sie Speicherplatz sparen möchten, verfassen Sie so wenige MIDI-Dateien wie möglich und erstellen Sie dann mehrere Segmente aus dieser MIDI-Datei. Zum Beispiel kann eine MIDI-Datei mit 12 Takten und drei Abschnitten in jeweils 4 Takten (A, B, C) einen viel längeren Titel produzieren. Erstellen Sie einfach mehrere Segmente, die auf die eine MIDI-Datei verweisen, und ordnen Sie sie nach Belieben an. A, A, B, A, C, A, B, A, A würde beispielsweise einen 36-Takt-Lied kreieren. Mit JET können Sie Wiederholungen hinzufügen, Segmente transponieren und Titel interaktiv stummschalten bzw. die Stummschaltung aufheben.

7.3 Replizieren

Wenn Sie das Hinzufügen von Segmenten oder Ereignissen beschleunigen möchten, verwenden Sie den Befehl „Replizieren“. Die Replikation kann mehrere Segmente oder Ereignisse gleichzeitig hinzufügen und verwendet einen Offset-Parameter und eine Präfixnamenskonvention, um die Lesbarkeit zu verbessern. Der MOVE-Befehl ist auch hilfreich, um mehrere Ereignisse um eine festgelegte Anzahl von Takten, Beats oder Ticks zu verschieben.

7.4 Interaktive Optionen

In JET sind mehrere interaktive Audiokonzepte möglich. Im Folgenden finden Sie einige Beispiele. Wir hoffen jedoch, dass Entwickler auf weitere Vorschläge einfallen werden, an die wir noch nicht gedacht haben. Diese sind:

7.4.1 Trigger für mehrere Segmente

Bei dieser Methode löst die App bestimmte Segmente basierend auf Ereignissen im Spiel aus. So könnte z. B. ein Flur, in dem viele Gefechte stattfinden, Segment 1 und ein Flur ohne Gefechte Segment 2 auslösen. Die Verwendung von JET-TriggerClips in Verbindung mit dieser Methode sorgt für noch mehr Diversität.

7.4.2 Arrays stummschalten

Bei dieser Methode löst die Anwendung Stummschaltungs- und Stummschaltungsereignisse für bestimmte Tracks in einer einzelnen MIDI-Sequenz aus. So können beispielsweise in einem Flur mit vielen Kämpfen MIDI-Tracks 1–16 und in einem Flur ohne Kämpfe die gleiche Midi-Datei wiedergegeben werden, die Tracks 9–16 werden aber stummgeschaltet. Die Verwendung von JET-TriggerClips in Verbindung mit dieser Methode sorgt für noch mehr Diversität.

7.4.3 Musikgesteuertes Gameplay

Musikgesteuertes Gaming ist ähnlich wie Guitar Hero und JETBOY: Die Musikinhalte bestimmen, wie grausame Ereignisse dargestellt werden. Die Anwendung fragt dann die Nutzerreaktion auf die Grafikereignisse ab und ändert als Reaktion darauf die Musik interaktiv. Bei dieser Methode nutzt das Spiel JET-Anwendungsereignisse, MIDI-Controller, die in die MIDI-Datei eingebettet sind und vom Spiel in Echtzeit gelesen werden. Abhängig von der Nutzerantwort können mehrere Arrays zum Auslösen und/oder Stummschalten von Segmenten festgelegt werden.