Instrukcja obsługi SONiVOX JETCreator

Zgłoszenie do tworzenia treści na potrzeby Interactive Music Engine JET

1 Wstęp

1.1 Omówienie

Dokument zawiera wskazówki użytkownika dla SONiVOX JET Creator, aplikacji służącej do tworzenia i kontroli plików JET. JET to interaktywny odtwarzacz muzyczny dla małych, osadzonych urządzeń, w tym tych z platformą Android. Umożliwia aplikacjom dodanie interaktywnych ścieżek dźwiękowych w formacie MIDI, które reagują w czasie rzeczywistym na zdarzenia w grze i interakcje użytkownika.

JET działa w połączeniu z technologią firmy SONiVOX (EAS) – urządzeniem do odtwarzania dźwięku MIDI na Androida. Zarówno silniki JET, jak i EAS są zintegrowane z platformą umieszczoną na Androidzie za pomocą klasy JetPlayer, a także z aplikacją JET Creator. Dzięki temu autor treści JET może mieć pewność, że odtwarzanie będzie brzmieć dokładnie tak samo zarówno w aplikacji JET Creator, jak i w ostatniej aplikacji na Androida odtwarzanej na urządzeniach mobilnych z Androidem.

Oprócz graficznego interfejsu użytkownika JET Creator obejmuje 2 główne funkcje. Pierwszy z nich obejmuje zebranie wszystkich danych źródłowych (pliki MIDI i plik DLS), dodanie atrybutów JET w czasie rzeczywistym i utworzenie pliku JET (.jet), którego będzie używać aplikacja na Androida. Druga funkcja polega na przesłuchaniu interaktywnych elementów odtwarzania w miarę ich działania w aplikacji na Androida.

Aplikacja JET Creator jest napisana w języku Python, dlatego musisz mieć zainstalowaną aktualną wersję Pythona i WXWidgets. Istnieje zarówno wersja dla komputerów Mac, jak i systemów Windows.

1.2. Skróty i popularne terminy

Ważne jest, by użyć wspólnego zestawu terminów, by uniknąć nieporozumień. Ponieważ JET wykorzystuje MIDI w unikalny sposób, standardowe określenia branżowe nie zawsze wystarczyć. Oto definicja terminów użytych na tej stronie i w zgłoszeniu do twórcy JET:

Kanał: dane MIDI powiązane z konkretnym kanałem MIDI. Standard MIDI pozwala na 16 kanałów danych MIDI, z których każdy jest zazwyczaj powiązany z konkretnym instrumentem.

Kontroler: zdarzenie MIDI składające się z numeru kanału, numeru kontrolera i wartości kontrolera. Specyfikacja MIDI wiąże wiele numerów kontrolera z określonymi funkcjami, takimi jak głośność, ekspresja, pedał utrzymania itp. JET wykorzystuje też zdarzenia kontrolera jako sposób na umieszczanie w sekwencji MIDI informacji dotyczących elementów sterujących w celu zapewnienia synchronizacji dźwięku.

DAW: cyfrowa stacja robocza audio. Powszechny termin oznaczający aplikacje MIDI i do sekwencjonowania dźwięku, np. Logic, SONAR, Cubase i inne.

EAS: wbudowany syntezator MIDI. Nazwa silnika syntezatora SONiVOX MIDI.

JET: silnik Jet Interactive. Nazwa interaktywnego silnika muzyki SONiVOX JET.

M/B/T: miary, bity i takty

Segment: sekcja muzyczna, np. refren lub zwrotka, będąca elementem całej kompozycji. W JET segment może być całym plikiem MIDI lub wyodrębnionym z jego części.

SMF-0: standardowy plik MIDI typu 0, plik MIDI, który zawiera 1 ścieżkę, ale może zawierać wiele kanałów danych MIDI.

SMF-1: standardowy plik MIDI typu 1, plik MIDI, który zawiera jeszcze 1 utwór. Każda z nich może z kolei składać się z jednego lub wielu kanałów danych MIDI. Zgodnie z konwencją każdy kanał jest przechowywany na osobnej ścieżce w pliku SMF-1. Na jednej ścieżce można jednak umieścić wiele kanałów MIDI lub wiele ścieżek zawierających dane dla tego samego kanału MIDI.

Śledzenie: pojedyncza ścieżka w DAW, zawierająca sekwencje zdarzeń w czasie. Uważaj, żeby nie pomylić ścieżek z kanałami. Plik MIDI może zawierać wiele ścieżek z kilkoma ścieżkami wykorzystującymi ten sam kanał MIDI.

2 The JET Interactive Music Concept

Muzykę interaktywną można zdefiniować jako muzykę, która zmienia się w czasie rzeczywistym zgodnie z nieprzewidywalnymi zdarzeniami, takimi jak interakcja użytkownika czy rozgrywka. W ten sposób muzyka interaktywna jest znacznie bardziej wciągająca, ponieważ można ją znacznie lepiej dopasować do energii i nastroju gry niż w przypadku wcześniej skomponowanej kompozycji, która nigdy się nie zmienia. W niektórych aplikacjach i grach interaktywna muzyka ma kluczowe znaczenie. Jedną z takich popularnych gier jest Guitar Hero. Gdy użytkownik zdoła zarejestrować nuty spływające po progu, muzyka się dostosowuje i jednocześnie zachowuje swoje sukcesy i porażki. JET umożliwia również tego rodzaju gry muzyczne.

Jest kilka metod tworzenia i kontrolowania muzyki interaktywnej, a jeT to jedna z nich. W tej sekcji opisujemy funkcje JET i sposoby ich wykorzystania w grach lub aplikacjach. Opisano również, jak można wykorzystać JET do oszczędzania pamięci w małych urządzeniach, np. telefonach z Androidem.

2.1.1 Kompresja danych

JET obsługuje elastyczny format muzyczny, dzięki któremu można tworzyć rozszerzone sekwencje muzyczne przy minimalnej ilości danych. Kompozycja muzyczna jest dzielona na segmenty, które można ułożyć w określony sposób, aby utworzyć dłuższy utwór. Sekwencjonowanie można ustalić na etapie tworzenia pliku muzycznego lub dynamicznie pod kontrolą programu.

2.1.2 Przykład muzyki linearnej


Rys. 1. Muzyka linearna

Ten diagram pokazuje, jak przechowywane są segmenty muzyczne. Każdy segment jest generowany jako osobny plik MIDI. Narzędzie do przetwarzania końcowego łączy pliki w jeden plik. Każdy segment może zawierać alternatywne utwory, które można wyciszyć lub wyłączyć w celu wzbudzenia dodatkowego zainteresowania. Przykładem może być akcent mosiężny w refrensie granym tylko do ostatniej ścieżki. Segmenty można też transponować w górę lub w dół.

W dolnej części diagramu widać, jak można połączyć segmenty muzyczne w liniowy utwór. W tym przykładzie most może kończyć się modulacją klawiszy w połowie kroku, a pozostałe segmenty można przekształcić w połowę kroku, aby dopasować.

2.1.3 Przykład muzyki nielinearnej


Rys. 2. Nieliniowy utwór muzyczny

Na tym schemacie widzimy utwór nieliniowy. Scenariusz to strzelanka pierwszoosobowa (FPS), a zespół JET dostarcza muzykę w tle. Wprowadzenie odtwarza się w trakcie wczytywania poziomu, a następnie przechodzi w sekcji kontroli programu do segmentu z wyszukiwarką. Segment powtarza się w nieskończoność, na przykład z niewielkimi wahaniami (przy użyciu funkcji wyciszania/wyłączania wyciszenia), dopóki aktywność w grze nie wymusza zmiany.

Gdy gracz zbliża się do kryjówki potwora, program rozpoczyna zsynchronizowane przejście do segmentu zagrożenia, zwiększając poziom napięcia dźwięku. Gdy gracz zbliża się do kryjówki, dodatkowe ścieżki audio nie są wyciszone, co zwiększa napięcie.

Gdy gracz wchodzi do walki z potworem, program rozpoczyna zsynchronizowane przejście do segmentu walki. Segment powtarza się w nieskończoność, w miarę jak walka trwa. Bonusowe uderzenie tymczasowo wyłącza wyciszenie ścieżki dekoracyjnej informującej gracza o udanym ataku. I podobnie, inny utwór jest tymczasowo wyciszany, co oznacza, że gracz otrzyma specjalne obrażenia.

Po zakończeniu walki muzyka zmienia się w segment zwycięstwa lub porażki w zależności od wyniku bitwy.

2.1.4 Wyciszanie/wyłączanie wyciszenia synchronizacji

JET może też synchronizować wyciszanie i wyłączanie wyciszenia ścieżek ze zdarzeniami w muzyce. Na przykład w grach FPS najlepiej byłoby umieszczać wydarzenia muzyczne związane z bonusami i szkodami jak najbliżej wydarzenia w grze. Jednak wyłączenie wyciszenia utworu w momencie wystąpienia gry może sprawić, że klip muzyczny rozpocznie się w środku. Może się też zdarzyć, że klip zostanie uruchomiony od samego początku, ale nie zostanie zsynchronizowany z innymi utworami muzycznymi.

Mechanizm synchronizacji JET pozwala jednak rozpocząć klip w odpowiednim momencie i podtrzymać synchronizację. Można to osiągnąć, umieszczając kilka krótkich klipów muzycznych w ozdobnej ścieżce. Zdarzenie MIDI w strumieniu oznacza początek klipu, a drugie – koniec klipu. Gdy aplikacja wywołuje funkcję klipu JET, następny klip na ścieżce może być w pełni zsynchronizowany z muzyką. Opcjonalnie ścieżka może być automatycznie wyciszona przez drugie zdarzenie MIDI.


Rys. 3. Zsynchronizowane wyciszanie i wyłączanie wyciszenia

2.2 Synchronizacja dźwięku

JET udostępnia interfejs API do synchronizacji dźwięku, który pozwala synchronizować rozgrywkę ze zdarzeniami w ścieżce audio. Mechanizm opiera się na danych umieszczonych w pliku MIDI w momencie utworzenia treści. Gdy silnik JET wykryje zdarzenie podczas odtwarzania, wygeneruje wywołanie zwrotne do programu aplikacji. Czas wywołania zwrotnego można dostosować tak, aby skompensować opóźnienie w systemie odtwarzania dźwięku, co umożliwi synchronizowanie dźwięku i obrazu. Poniższy schemat przedstawia przykład prostej gry muzycznej, w której należy naciskać strzałki w lewo i w prawo w odpowiednim tempie.


Rys. 4. Gra muzyczna

Strzałki oznaczają zdarzenia w sekwencji muzycznej, w której zdarzenia gry muszą być synchronizowane. W tym przypadku niebieska strzałka oznacza czas, w którym odtwarzacz powinien nacisnąć lewy przycisk, a czerwona – prawy przycisk. Żółta strzałka informuje silnik gry, że sekwencja została zakończona. Odtwarzacz może nacisnąć odpowiedni klawisz przed zdarzeniem i po nim.

Jeśli zdarzenie zostanie odebrane, a odtwarzacz nie kliknie przycisku, licznik czasu zostanie ustawiony na połowę długości okna. Jeśli gracz naciśnie przycisk przed upływem czasu, gra zarejestruje sukces, a jeśli nie, zarejestruje błąd.

Jeśli gracz naciśnie przycisk przed odebraniem zdarzenia, licznik czasu zostanie ustawiony na połowę długości okna. Jeśli zdarzenie zostanie odebrane przed upływem limitu czasu, gra zarejestruje sukces, a jeśli nie, zarejestruje niepowodzenie. Rozgrywka może obejmować też bonusy za zbliżanie się do momentu wydarzenia.

3 JET Omówienie tworzenia treści

Aby tworzyć pliki JET i interaktywnie je odtwarzać, autor treści będzie pracować w 2 aplikacjach, które płynnie ze sobą współdziałają. Pierwszą z nich są gotowe aplikacje do sekwencjonowania MIDI, które obsługują wtyczki VST (na PC) lub AU (na Macach). Tutaj autor skomponuje pliki muzyczne MIDI, używając wtyczki jako syntezatora. Kolejne zgłoszenie to zgłoszenie do programu JET Creator. Tutaj autor zaimportuje pliki muzyczne MIDI (i opcjonalnie zestaw dźwiękowy DLS2) oraz skonfiguruje warunki interaktywnego odtwarzania w grze obsługującej JET. Opcjonalnie autor treści może utworzyć niestandardowy zestaw instrumentów DLS za pomocą edytora instrumentów, który obsługuje format DLS poziomu 2. Jedną z takich aplikacji jest Awave firmy MJSoft.

Więcej informacji na ten temat znajdziesz w dokumentacji JET dotyczącej tworzenia treści.

4. Instalowanie i uruchamianie Kreatora JET

JET Creator to aplikacja w języku Python, dlatego musisz mieć na komputerze zainstalowane Pythona i wxPython.

JetCreator został stworzony i przetestowany przy użyciu:

Python 2.5.4

wxPython wersja 2.8.7.1

Można je pobrać tutaj:

Komputer:

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

Adres MAC:

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

Po zainstalowaniu Pythona i wxPython po prostu rozpakuj lub skopiuj wszystkie pliki z katalogu aplikacji JET Creator do folderu na dysku twardym.

Aby uruchomić JET Creator, otwórz komunikat z poleceniem i umieść katalog w miejscu, w którym jest zainstalowany Python. Następnie uruchom Pythona za pomocą polecenia:

python jetcreator.py

5. Wykorzystanie kreatora JET

5.1 Typy plików

Z twórcą JET powiązanych jest kilka różnych typów plików.

.jtc JET Plik projektu twórcy. Zawiera on wszystkie informacje powiązane z projektem JET Creator. Ten typ pliku zostaje zapisany w usłudze JET Creator po zapisaniu lub zapisaniu go jako pliku.

Plik .jet JET. Ten plik wyjściowy jest automatycznie generowany przez JET Creator za każdym razem, gdy zapiszesz swój projekt dla twórców JET. Jest to plik zawierający wszystkie zasoby JET w jednym pliku, którego będzie używać aplikacja na Androida. Przekaż ten plik deweloperowi aplikacji na Androida.

Plik .mid. To standardowy plik MIDI typu 1, który JET Creator wykorzysta do tworzenia segmentów.

.seg. To jest plik JET Segment. Ma taką samą nazwę jak plik MIDI, do którego się odwołuje, ale zawiera dodatkowe informacje o segmentach.

.zip Zip pliku archiwalnego. Po wyeksportowaniu archiwum JET tworzony jest plik ZIP, który zawiera wszystkie zasoby (pliki) niezbędne dla twórcy JET. Użyj go, aby przekazać innym projekty twórcy JET.

5.2 Otwórz okno

Po pierwszym uruchomieniu narzędzia JET Creator wyświetla się takie okno.

<img <="" border="0" height="285" p="" src="/static/images/jet/jc_open_dlg.png" width="450" />

Otwórz powoduje otwarcie istniejącego pliku .jtc (JET Creator). Użyj przycisku przeglądarki, aby przejść do katalogu, w którym jest zapisany plik .jtc.

Nowy spowoduje utworzenie nowego pliku .jtc.

Opcja Importuj importuje plik JET Archive (.zip).

Anuluj anuluje okno i zamknie aplikację.

5 Okno główne

Główne okno aplikacji JET Creator wygląda tak jak na ilustracji poniżej. Od góry do dołu widoczne są 3 główne sekcje: widok segmentu, widok zdarzenia i oś czasu.

W sekcji widoku segmentu znajduje się lista bieżących segmentów, z których pochodzi plik MIDI i (opcjonalnie) plik DLS2, z którego pochodzi każdy segment. Pokazuje też czas rozpoczęcia i zakończenia każdego segmentu, a w każdym z nich kwantyfikuje, transponuje, powtarza i wycisza ustawienia flag.

Tuż pod widokiem Segment znajduje się widok zdarzenia. W sekcji widoku zdarzeń wyświetlane są wszystkie zdarzenia powiązane z danym segmentem. Zdarzenia wyświetlają się tylko wtedy, gdy zaznaczony jest segment, do którego są przypisane. Każde wydarzenie ma podaną jego typ, punkt początkowy i końcowy, przypisanie kanału śledzenia i międzynarodowego oraz jego identyfikator.

Tuż pod widokiem Zdarzenie znajduje się oś czasu. Na osi czasu widać liczbę pomiarów danego segmentu oraz wszelkie powiązane z nim zdarzenia. Na osi czasu pojawi się aktualnie wybrany lub odtwarzany segment. Podczas odtwarzania segmentu możesz wywołać zdarzenie w tym oknie – wystarczy kliknąć odpowiednie zdarzenie na osi czasu.


JET Główne okno twórcy

Przyciski znajdujące się po lewej stronie okna głównego pełnią następujące funkcje:

Dodaj: wyświetla okno segmentu lub zdarzenia służące do dodania nowego segmentu lub zdarzenia.

Zmień: wyświetla okno aktualizacji istniejącego segmentu lub zdarzenia,

Usuń: usuwa wybrany segment lub zdarzenie (zostanie wyświetlona prośba o potwierdzenie).

Przenieś: wyświetla okno przenoszenia, które umożliwia przenoszenie wybranych segmentów lub zdarzeń w czasie

Kolejka wszystkie: zaznacza wszystkie segmenty kolejki do odtwarzania

Usuń z kolejki wszystkie segmenty: usuwa (usuwa zaznaczenie) wszystkich segmentów

Odtwórz: Rozpoczyna odtwarzanie wszystkich segmentów w kolejce. Przycisk zmienia się w przycisk Stop, jeśli są odtwarzane,

Przesłuchanie: wyświetla okno Przesłuchania (patrz poniżej).

5.1 Okno segmentu

Okno segmentu to miejsce, w którym atrybuty danego segmentu są przypisywane i sprawdzane, jak widać na ilustracji poniżej. W lewej części okna widoczne są atrybuty segmentów przechowywane w pliku JET. Po prawej stronie okna autor może ustawić flagi wyciszenia, powtórzyć i transponować ustawienia oraz przesłuchać segment z rozgrywką JET.

Uwaga: atrybuty przesłuchania (flagi wyciszenia, powtórzenia i transponowanie) nie są przechowywane w pliku treści JET (.jet), ale raczej określane przez samą grę lub aplikację. W języku programowania ustawienia te odpowiadają bezpośrednio wywołaniam interfejsu API mechanizmu JET. Dzięki temu autor treści JET może symulować reakcję segmentu na polecenia interfejsu API aplikacji podczas rozgrywki.

Parametry segmentu:

  • Nazwa segmentu – ustawia nazwę segmentu.
  • Plik MIDI – nazwa i lokalizacja pliku MIDI, z którego pochodzi segment. Kliknięcie przycisku po prawej stronie powoduje wyświetlenie się w przeglądarce pliku midi na dysku twardym.
  • Plik DLS – nazwa i lokalizacja pliku DLS2 (jeśli występuje), którego plik MIDI używa w przypadku tego segmentu.
  • Od M/B/T – początkowy pomiar, uderzenie i takt segmentu
  • Koniec M/B/T – miara końcowa, rytm i taktyka segmentu
  • Kwantyzuj – kwantyzuj wartość bieżącego segmentu podczas odtwarzania

Pola, które należy wypełnić podczas przesłuchania, są następujące:

  • Wyciszenia ścieżek – pokazuje ścieżki MIDI (nie kanały) z pliku MIDI. Kliknięcie pola wyboru ścieżki spowoduje jej wyciszenie.
  • Kanał – wyświetla kanał MIDI przypisany do każdej ścieżki.
  • Name (Nazwa) – wyświetla metazdarzenie nazwy ścieżki (jeśli występuje) dla każdej ścieżki.
  • Powtarzaj – określa, ile razy dany fragment ma się powtarzać podczas odtwarzania.
  • Transponuj – wskazuje transpozycję w półtonach lub półkrokach, które należy transponować podczas odtwarzania
  • Po prawej stronie okna Przesłuchanie znajduje się kilka dodatkowych przycisków. Są to:
  • OK - Kliknięcie OK powoduje potwierdzenie wszystkich ustawień segmentu i zamykanie okna segmentu
  • Anuluj – wybranie opcji Anuluj anuluje zmiany i zamyka okno segmentu.
  • Replikuj – wyświetla okno Replikuj segment do wpisania wielu segmentów naraz. (Patrz niżej).
  • Odtwórz/zatrzymaj segment – rozpoczyna lub zatrzymuje odtwarzanie segmentu z użyciem przypisanych atrybutów.
  • Odtwórz/zatrzymaj plik MIDI – rozpoczyna lub zatrzymuje odtwarzanie pliku MIDI, do którego jest przypisany segment.
  • Wstrzymaj/Wznów – wstrzymuje lub wznawia odtwarzanie.

5.2 Okno zdarzenia

Okno zdarzenia to czas, w którym atrybuty zdarzenia w danym segmencie są przypisywane i sprawdzane, tak jak to widać na ilustracji poniżej. Aby dodać zdarzenie do segmentu, autor musi najpierw wybrać segment, który zawiera zdarzenie, a potem kliknąć przycisk Dodaj. Wyświetli się okno Zdarzenia.

Okno wydarzeń ma dwie główne sekcje. Sekcja segmentów po lewej stronie okna zdarzenia służy tylko do wyświetlania. Wyświetla ono atrybuty danego segmentu. Po prawej stronie znajduje się sekcja Zdarzenie, w której możesz przypisywać zdarzenia. Dostępne są te parametry:

Nazwa zdarzenia – przypisuje nazwę do zdarzenia,

Typ zdarzenia – określa typ zdarzenia do przypisania.

Początek M/B/T – Ustawia początkową miarę zdarzenia, rytm i taktykę

Zakończenie M/B/T – określa miarę końcową, rytm i takt zdarzenia (w odpowiednich przypadkach)

Track (ścieżka) – określa, do której ścieżki w danym segmencie będzie miało zastosowanie zdarzenie.

Channel – określa kanał MIDI, do którego będzie miało zastosowanie zdarzenie. Kanał MIDI powinien być zgodny z kanałem MIDI utworu,

Identyfikator zdarzenia – określa identyfikator zdarzenia. Do jednego segmentu można przypisać wiele zdarzeń, więc do ich identyfikacji służy identyfikator zdarzenia.

Po prawej stronie okna Przesłuchanie znajduje się kilka dodatkowych przycisków. Są to:

OK - Wybranie OK spowoduje potwierdzenie wszystkich ustawień wydarzenia i zamknięcie okna wydarzenia

Anuluj – wybranie opcji Anuluj spowoduje anulowanie zmian i zamknięcie okna wydarzenia

Replikuj – wyświetla okno Replicate Event (Replikuj zdarzenie), w którym można wpisać wiele zdarzeń naraz. Patrz poniżej.

Odtwórz/zatrzymaj – uruchamia lub zatrzymuje odtwarzanie segmentu przy użyciu przypisanych atrybutów segmentu. Podczas odtwarzania segmentu zdarzenia mogą być wywoływane i przesłuchiwane.

Aktywator – wywołuje przypisane zdarzenie. Kopiuje polecenie API, którego gra JET używa do wywołania zdarzenia, dzięki czemu autor treści może zbadać zachowanie zdarzenia.

Wycisz/wyłącz wyciszenie – wyciszenie/wyłącz wyciszenie spowoduje wyciszenie lub wyłączenie wyciszenia ścieżki, do której przypisane jest wydarzenie

Wstrzymaj/Wznów – wstrzymuje lub wznawia odtwarzanie.

Aby przesłuchać zachowanie wydarzenia, kliknij przycisk Odtwórz. Rozpocznie się odtwarzanie. Po naciśnięciu przycisk aktywatora wysyła zdarzenie aktywujące. Odpowiada to wybraniu zdarzenia aktywatora zielonego na osi czasu.

Uwaga: zdarzenia aktywujące mają na celu wyłączenie wyciszenia pojedynczej ścieżki segmentu po jej wywołaniu, a następnie wyciszenie tej ścieżki na końcu segmentu reguły. Dlatego sprawdź, czy flaga wyciszenia jest ustawiona tak, aby wyciszać ścieżkę po otrzymaniu zdarzenia aktywującego.

Więcej informacji o działaniu i zachowaniu zdarzeń aktywujących znajdziesz poniżej, w sekcji 6 Dla zaawansowanych.

5.3 Replikowanie okien

Często przy tworzeniu plików JET trzeba przygotować dziesiątki, a nawet setki wydarzeń. Może być też konieczne przeniesienie wydarzeń. Pozwalają na to okna Replikacja i Przenieś. Istnieją 2 okna Replikuj, które służą do tworzenia wielu segmentów lub zdarzeń. Wyglądają one tak:

Powiel okno segmentu

Replikowanie okna zdarzenia

Oba okna replikacji działają tak samo. Po utworzeniu początkowego segmentu lub zdarzenia możesz kliknąć przycisk Replikuj. Oto parametry:

Prefiks nazwy – ustawia prefiks nazwy każdego utworzonego segmentu lub zdarzenia

Od M/B/T – określa czas rozpoczęcia pierwszego segmentu lub zdarzenia

Przyrost M/B/T – określa czas między utworzonymi segmentami lub zdarzeniami.

Liczba – określa liczbę segmentów lub zdarzeń, które chcesz utworzyć. Jeśli liczba przekracza długość pliku MIDI (w przypadku segmentów) lub segmentu (w przypadku zdarzeń), obiekty te nie zostaną utworzone.

Podgląd – podgląd pozwala przejrzeć utworzone obiekty przed poleceniem OK, aby je wstawić.

5.4 Przenoszenie okien

Funkcja przenoszenia działa podobnie do funkcji Replikacja pod tym względem, że umożliwia edytowanie wielu segmentów lub zdarzeń naraz, w tym przypadku przenoszenie ich w czasie. Podobnie jak w przypadku funkcji Replikacja, są dwa okna przenoszenia: jedno dla segmentów i jedno dla zdarzeń. Okna wyglądają tak:

Przenieś okno wydarzenia

Aby użyć funkcji Przenieś, najpierw zaznacz segmenty lub zdarzenia, które chcesz przesunąć w czasie, a potem kliknij przycisk Przenieś. Oto parametry:

Od M/B/T – określa czas rozpoczęcia pierwszego segmentu lub zdarzenia

Przyrost M/B/T – ustawia czas w M/B/T, o jaki mają być przesuwać obiekty.

Podgląd – podgląd pozwala przejrzeć utworzone obiekty przed poleceniem „OK”, aby je przenieść.

5.5 Okno na przesłuchanie

Kliknięcie przycisku Przesłuchanie w głównym oknie aplikacji JET Creator spowoduje otwarcie okna Przesłuchanie. Na tym etapie autor treści lub programista może przeprowadzić symulację interaktywnego odtwarzania w samej aplikacji mobilnej lub grze.

Termin na przesłuchanie JET

Okno przesłuchania ma 4 główne sekcje. W pierwszej z lewej sekcji widać dostępne segmenty i ich długość w sekundach. W środkowej sekcji znajduje się bieżąca lista segmentów oczekujących w kolejce do odtworzenia i stan ich odtwarzania. W skrajnej prawej części widać flagi wyciszenia aktualnie odtwarzanego segmentu. Sekcja osi czasu na dole jest taka sama jak w oknie głównym. Zawiera on aktualnie odtwarzany segment, a także wizualne informacje o wszystkich powiązanych z nim zdarzeniach.

Okno Przesłuchania pozwala dodać dowolny segment do kolejki w dowolnej kolejności. Aby to zrobić, wybierz segment, który chcesz wskazać, i kliknij Queue. Segment pojawi się w oknie kolejki i rozpocznie się odtwarzanie (jeśli jest to pierwszy segment). Następnie możesz wybrać inne segmenty lub segmenty i wskazać je do odtworzenia. Gdy zakończy się odtwarzanie fragmentu, rozpocznie się odtwarzanie następnego segmentu w kolejce. Tak jak w pozostałych oknach narzędzia JET Creator, możesz wyciszać i wyłączać wyciszenie, uruchamiać klipy zdarzeń itp. w czasie rzeczywistym podczas odtwarzania każdego segmentu.

Przyciski działają w następujący sposób:

Kolejka – wczytuje wybrany segment do kolejki i rozpoczyna odtwarzanie.

Anuluj i kolejka – anuluje aktualnie odtwarzany segment przed umieszczeniem go w kolejce do odtwarzania

Anuluj bieżący – anuluje aktualnie odtwarzany segment w kolejce i rozpoczyna odtwarzanie następnego segmentu.

Zatrzymanie – zatrzymuje odtwarzanie wszystkich segmentów w kolejce

Wycisz wszystko – wycisza wszystkie ścieżki w bieżącym segmencie

Wycisz brak – wyłącza wyciszenie wszystkich ścieżek w bieżącym segmencie

Oryginalne wyciszenia – ustawia oryginalne flagi wyciszenia dla bieżącego segmentu

Kombinacja tych opcji odtwarzania umożliwia autorowi lub programistom aplikacji przesłuchanie dowolnego działania, jakie może napotkać aplikacja muzyczna.

5.6 Menu dla twórców JET

Menu twórcy w JET dają dostęp do wielu parametrów w oknie głównym oraz do kilku dodatkowych parametrów.

5.6.1 Menu Plik

Menu Plik zawiera następujące elementy:

Nowość – tworzy nowy plik JET Creator (.jtc)

Otwarcie: otwiera plik JET Creator,

Zapisz – Zapisuje otwarty plik JET Creator

Zapisz jako – zapisywanie otwartego pliku JET Creator w nowym pliku

Importuj projekt – importuje archiwum JET Creator (.zip)

Eksportuj projekt – eksport archiwum JET Creator (.zip)

Exit (Zakończ) – zamyka aplikację.

5.6.2 Menu edycji

Menu Edycja zawiera następujące elementy:

Cofnij – Cofnij ostatnią zmianę

Ponów – ponawia ostatnią zmianę

Wytnij – Skopiuj wybrany parametr do schowka i usuń zaznaczenie

Kopiuj – Skopiuj wybrany parametr do schowka i zachowaj zaznaczenie

Wklej – Wklej wybrany parametr

5.6.3 JET

Menu Edycja zawiera następujące elementy:

Właściwości: powoduje wyświetlenie okna priorytetów twórców JET. W tym oknie możesz ustawić następujące warunki dla danego pliku JET:

Informacje o prawach autorskich – zawiera informacje o prawach autorskich, które należy wstawić do pliku JET

Kontrolery do pościgów – opcja wyszukiwania kontrolerów (włącz/wyłącz). Ta opcja powinna być zwykle włączona.

Usuń puste ścieżki – usuwa wszystkie puste ścieżki MIDI

5.6.4 Segmenty

Menu Segmenty zawiera następujące elementy:

Dodaj segment – wyświetla okno Segment

Aktualizacja segmentu – aktualizowanie atrybutów segmentu

Usuń segment – usuwa bieżący segment z listy segmentów.

5.6.5 Pomoc

Menu Pomoc zawiera przynajmniej te elementy:

Pomoc dla twórców JET – wprowadzimy dokument pomocy w formacie PDF lub pomoc online

Informacje – Numer wersji twórcy, SONiVOX

6 Wyjaśnienie zdarzeń aktywatora

Podzielenie pliku MIDI na osobne (nielinearne) segmenty i umieszczenie ich w kolejce do odtwarzania w grze na podstawie zdarzeń w grze to jeden ze sposobów, w jaki pliki muzyczne JET są interaktywne. Zdarzenia aktywujące to dodatkowa metoda interaktywnego odtwarzania. Oba typy można stosować razem w interaktywnej grze lub aplikacji.

Zdarzenia aktywujące:

  1. Ścieżki w obrębie segmentu MIDI można włączać i wyłączać w zależności od zdarzeń w grze. Na przykład kompozytor może na przykład napisać 2 utwory perkusyjne – jedną szybką, a drugą powolną. Jeśli akcja w grze jest szybka, można skorzystać z szybkiego perkusji. Jeśli akcja jest powolna, można skorzystać z wolnego utworu perkusyjnego.
  2. Działania użytkowników można porównywać ze zdarzeniami, które są wstępnie wstawione do pliku muzycznego w miejscach dopasowanych pod względem muzycznym. W zależności od wyników może być przeprowadzana punktacja lub inne działania w grze.
  3. Przejścia muzyczne między poziomami lub sekwencjami akcji można zsynchronizować, aby muzyka była płynna.

W celu wykonania tych działań i zsynchronizowania dźwięku JET wykorzystuje standardowe zdarzenia MIDI CC. Administratorzy, których używa JET, należą do tych, których specyfikacja nie zdefiniował(a) konkretnego zastosowania. Konkretne definicje administratora są następujące:

Kontrolery 80–83 Zarezerwowane do użytku przez aplikację

Kontroler 102 JET

Kontroler 103 JET

Kontrolery 104-119 Zarezerwowane do wykorzystania w przyszłości

6.1 Znacznik zacisku JET (CC103)

Kontroler 103 jest zarezerwowany do oznaczania klipów na ścieżce MIDI, które mogą być aktywowane przez wywołanie interfejsu JET_TriggerClip API. Identyfikator klipu jest kodowany w ostatnich 6 bitach wartości kontrolera. Bit 6 ma wartość 1, co wskazuje początek klipu, a wartość 0 oznacza koniec klipu.

Aby np. zidentyfikować klip o identyfikatorze 1, autor wstawia zdarzenie kontrolera MIDI z parametrem kontroler MIDI na początku klipu=103 i wartość=65, a innym zdarzeniem z kontrolerem=103 i wartością=1 na końcu klipu. Jeśli funkcja JET_TriggerClip() zostanie wywołana z identyfikatorem klipu o wartości 1, wyciszenie ścieżki zostanie wyłączone po napotkaniu wartości 65 i wyciszeniu ponownie po napotkaniu wartości 1 kontrolera.

Rys. 5: Klip zsynchronizowany

Na ilustracji powyżej, jeśli funkcja JET_TriggerClip() zostanie wywołana przed pierwszym zdarzeniem kontrolera, ścieżka 3 zostanie wyłączona po wystąpieniu pierwszego zdarzenia kontrolera, zostanie odtworzony pierwszy klip, a ścieżka zostanie wyciszona po wystąpieniu drugiego zdarzenia kontrolera. Jeśli funkcja JET_TriggerClip() zostanie wywołana po wystąpieniu pierwszego zdarzenia kontrolera, wyciszenie ścieżki 3 zostanie wyłączone po wystąpieniu trzeciego zdarzenia kontrolera, zostanie odtworzony drugi klip, a ścieżka zostanie ponownie wyciszona po wystąpieniu czwartego zdarzenia kontrolera.

Uwaga: normalnie ścieżka z klipem jest wyciszona przez aplikację, gdy segment jest początkowo dodany do kolejki przez wywołanie JET_QueueSegment(). Jeśli klip nie jest wyciszony, klip jest zawsze odtwarzany, dopóki nie zostanie wywołany Jet_TriggerClip() z identyfikatorem klipu.

6.2 Znacznik zdarzenia JET (CC102)

Kontroler 102 jest zarezerwowany do oznaczania w strumieniach MIDI zdarzeń specyficznych dla funkcji JET. Obecnie jedyną zdefiniowaną wartością jest 0, która oznacza koniec segmentu na potrzeby synchronizacji.

Standardowo JET rozpoczyna odtwarzanie następnego segmentu (lub powtarza bieżącego), gdy wystąpi metazdarzenie końca ścieżki MIDI. Niektóre narzędzia do tworzenia MIDI utrudniają precyzyjne umieszczenie znacznika końca ścieżki, co powoduje problemy z synchronizacją przy łączeniu segmentów.

Aby uniknąć tego problemu, autor może umieścić znacznik końca segmentu JET (kontroler=102, wartość=0) w miejscu, w którym segment ma być zapętlony. Po znalezieniu znacznika końca segmentu zostanie uruchomiony następny segment, a jeśli bieżący jest zapętlony, odtwarzanie zostanie wznowione na początku segmentu.

Znacznik końca segmentu może też służyć do kończenia figury muzycznej po zakończeniu taktu, która oznacza początek następnego segmentu. Na przykład autor treści może utworzyć segment z 4 słupkami i wypełnieniem bębnów, który kończy się taktem 1. od piątego taktu, czyli słupek za jego naturalnym końcem. Umieszczenie znacznika końca fragmentu na końcu czwartego taktu spowoduje uruchomienie następnego segmentu, ale wypełnienie bębna będzie kontynuowane równolegle z kolejnym segmentem, zapewniając ciągłość muzyczną.

Rys. 6: Znacznik końca segmentu

6.3 Kontrolery aplikacji (CC80-83)

Aplikacja może używać kontrolerów z tego zakresu do własnych celów. Gdy kontroler z tego zakresu zostanie napotkany, zdarzenie zostanie wprowadzone do kolejki zdarzeń, do której aplikacja może wysyłać zapytania. Może to być np. synchronizacja zdarzeń wideo z dźwiękiem oraz oznaczenie punktu w segmencie MIDI w celu umieszczenia następnego segmentu w kolejce. Zakres kontrolerów monitorowanych przez aplikację może być modyfikowany przez aplikację podczas inicjowania.

7 Wytyczne dla twórców JET

7.1 Kolejność zadań

Tak jak w przypadku wszystkich projektów, przed rozpoczęciem kompozycji najlepiej jest przedyskutować i zaprojektować interaktywną muzykę z projektantem gry i programistą. Konspekt lub specyfikacja mogą być bardzo przydatne i uniknąć konieczności ponownego wykonywania czynności po jej uruchomieniu.

Najpierw najlepiej napisać muzykę w wybranym DAW w sposób, z którego korzystasz przy komponowaniu, a potem w razie potrzeby podzielić końcowy plik MIDI. Następnie przejdź do narzędzia JET Creator i utwórz wszystkie segmenty muzyczne w takiej kolejności, w jakiej najłatwiej je odtwarzać, gdy odtwarzasz je w określonej kolejności. Na koniec dodaj wydarzenia JET, aby kontrolować segmenty w grze na Androida i przesłuchać je w razie potrzeby w narzędziu JET Creator. Na koniec zapisz projekt w narzędziu JET Creator i przekaż plik .jet programistowi, aby mógł zintegrować go z grą. Po wyświetleniu podglądu prawdopodobnie zauważysz zmiany w plikach MIDI i atrybutach twórcy JET.

7.2 Oszczędzanie pamięci

Jeśli chcesz oszczędzić pamięć, utwórz jak najmniej plików MIDI i kilka segmentów z danego pliku MIDI. Na przykład plik MIDI o długości 12 barów z 3 sekcjami po 4 pasy (A, B, C) może stworzyć znacznie dłuższy utwór. Wystarczy utworzyć kilka segmentów, które odwołują się do jednego pliku MIDI, i uporządkować je według własnego uznania. Na przykład filmy A, A, B, A, C, A, B, A, A, tworzą piosenkę o długości 36 taktów. Użyj JET, aby dodawać powtórzenia, transponować segmenty oraz interaktywnie wyciszać i wyłączać wyciszenie ścieżek, aby zwiększyć ich atrakcyjność.

7.3 Replikowanie

Aby przyspieszyć dodawanie segmentów lub zdarzeń, użyj polecenia Replicate. Replikacja może dodawać wiele segmentów lub zdarzeń jednocześnie i korzysta z parametru przesunięcia oraz konwencji nazewnictwa prefiksów, aby utrzymać czytelność. Polecenie MOVE jest też przydatne przy przenoszeniu wielu zdarzeń o określoną liczbę taktów, bitów lub taktów.

7.4 Opcje interaktywne

W projekcie JET istnieje kilka koncepcji interaktywnych. Poniżej znajdziesz kilka przykładów, ale mamy nadzieję, że deweloperzy wpadną na pomysł innych. Są to:

7.4.1 Reguły na wielu segmentach

W tej metodzie aplikacja wyzwala określone segmenty na podstawie zdarzeń w grze. Na przykład na korytarzu, na którym często odbywają się walki, może uruchomić się segment 1, a od miejsca, w którym nie odbywają się walki, może uruchomić się segment 2. Zastosowanie JET TriggerClips w połączeniu z tą metodą pozwala uzyskać jeszcze większą różnorodność.

7.4.2 Tablice ignorowania

W tej metodzie aplikacja aktywuje zdarzenia wyciszenia i wyłączenia wyciszenia na określonych ścieżkach w pojedynczej sekwencji MIDI. Na przykład w korytarzu, w którym odbywają się liczne walki, mogą być odtwarzane ścieżki MIDI 1–16, a w korytarzu, w którym nie ma walki, można odtworzyć ten sam plik midi, ale wyciszone utwory 9–16. Zastosowanie JET TriggerClips w połączeniu z tą metodą pozwala uzyskać jeszcze większą różnorodność.

7.4.3 Rozgrywka oparta na muzyce

Gry muzyczne są podobne do tego, co zrobili Guitar Hero i JETBOY, ponieważ to od treści muzycznych zależy sposób prezentowania wydarzeń. Aplikacja wysyła zapytanie do odpowiedzi użytkownika na drastyczne zdarzenia i interaktywnie zmienia muzykę w odpowiedzi. W tej metodzie gra korzysta ze zdarzeń aplikacji JET, czyli kontrolerów MIDI, które są osadzone w pliku MIDI i odczytywane przez grę w czasie rzeczywistym. W zależności od odpowiedzi użytkownika można ustawić wywoływanie wielu segmentów lub tablice ignorowania.