Dokumentacja Zbuduj pokaz świateł
Jak działa pokaz świateł
Od pliku audio do światła dokładnie w rytm: analiza, partytura, zegar, dyrygent i środowisko.
Większość wizualizatorów muzyki reaguje: słucha dźwięku, który właśnie gra, i porusza się chwilę później. Pokaz świateł Rainy jest zamiast tego wyreżyserowany. Serwer raz słucha całego utworu, zapisuje, co się w nim dzieje i kiedy, a przeglądarka odtwarza to w rytm dźwięku. Pokaz wie o nadchodzącym dropie osiem taktów przed tym, jak on nastąpi.
Ta strona wyjaśnia każdy krok. Nie jest potrzebna, żeby korzystać z pokazu, ale przyda się, jeśli chcesz stworzyć środowisko.
Przebieg
serwer, raz na utwór
plik audio → analiza → partytura (zapisana dla utworu)
przeglądarka, w każdej klatce
zegar czas utworu, zsynchronizowany z dźwiękiem
↓
źródło partytura w tej chwili → klatka muzyczna F
↓
dyrygent intensywność, paleta, ściemniacz, ogranicznik błysków → stan S
↓
środowisko rysuje S po swojemu
Wszystko aż do dyrygenta włącznie jest wspólne. Środowisko decyduje tylko o tym, jak wygląda stan pokazu, i dlatego każde środowisko trafia w to samo uderzenie.
Analiza
Gdy utwór trafia do biblioteki, proces działający w tle na serwerze dekoduje go i mierzy:
| Co | Do czego służy |
|---|---|
| Uderzenia i początki taktów | Siatka, po której porusza się wszystko: uderzenia oraz pierwsze uderzenie każdego taktu. |
| Tempo oraz pewność, z jaką analizator je określił | Szybkość ruchu. |
| Uderzenia perkusji: stopy, werble i hi-haty, każde z siłą | Pulsy, stroboskopy, pierścienie. |
| Energia w pięciu pasmach (sub, bas, środek, góra, powietrze) oraz ogólna głośność i tonalność dźwięku | Jasność, kolor, kształt krajobrazu. Zapisywana 50 razy na sekundę. |
| Sekcje, oznaczone jako intro, zwrotka, narastanie, refren, drop, wyciszenie lub outro, z tonacją, trybem, energią i gęstością | Nowy wygląd dla każdej sekcji i jej kolory. |
| Zdarzenia: dropy, akcenty, narastania i zatrzymania (nagłe cisze) | Najważniejsze momenty. |
| Profil: rodzina gatunkowa (EDM, pop, rock, hip-hop, latino, chill, orkiestrowy) i intensywność | Jak mocno gra pokaz i w jakim stylu. |
Wszystko mierzy się względem samego utworu. Spokojny utwór akustyczny nadal wykorzystuje pełny zakres świateł, a „drop” w balladzie to jej najmocniejsze wzniesienie. To, jak głośny i perkusyjny jest utwór w wartościach bezwzględnych, trafia do intensywności profilu.
Wynikiem jest partytura: mały dokument JSON zapisywany raz dla każdego utworu. Analizator ma numer wersji, a partytura ze starszej wersji jest tworzona od nowa, gdy następnym razem będzie potrzebna. Część analizy może działać na karcie graficznej NVIDIA; zobacz Akceleracja GPU.
Zegar
Aby odtworzyć pokaz z partytury, przeglądarka nigdy nie słucha dźwięku. Odczytuje pozycję odtwarzacza, wygładza ją i dodaje Twoje Przesunięcie synchronizacji. To jest zegar pokazu.
Każda część pokazu jest wyliczana z tego czasu: „co dzieje się w 1:32.48?”, a nie „co zmieniło się od poprzedniej klatki?”. Ma to widoczne skutki:
- Przewinięcie trafia dokładnie we właściwy wygląd, do przodu i do tyłu.
- Pauza zatrzymuje pokaz, przyciemniony, a wznowienie kontynuuje go w tym samym miejscu.
- Zgubiona klatka nie może rozsynchronizować pokazu. Następna klatka zadaje to samo pytanie od nowa.
Klatka
W każdej klatce partytura jest odczytywana w czasie zegara i powstaje klatka muzyczna: energia każdego pasma w tej chwili, które bębny właśnie zabrzmiały, pozycja w uderzeniu i w takcie, bieżąca sekcja oraz to, jak daleko w niej jest utwór.
Ponieważ partytura obejmuje cały utwór, klatka patrzy też w przyszłość: ile zostało do następnej sekcji i do następnego dropu, jak zaawansowane jest narastanie, czy za chwilę nastąpi cisza. To dzięki temu światła mogą rosnąć podczas narastania i zgasnąć w przerwie tuż przed dropem.
Tryb zastępczy na żywo
Utwór, który nie został jeszcze przeanalizowany, nie ma partytury. Dopóki jej nie ma, Rainy słucha dźwięku w trakcie odtwarzania i szacuje tę samą klatkę w czasie rzeczywistym: energię pasm, uderzenia perkusji i odgadnięty rytm. Nie ma patrzenia w przyszłość, więc pokaz podąża za muzyką, zamiast ją wyprzedzać. Odtwarzacz przełącza się na partyturę, gdy tylko analiza się skończy.
Dyrygent
Dyrygent zamienia klatkę muzyczną w stan pokazu i jest ten sam dla wszystkich środowisk:
- Intensywność: jak mocno gra pokaz, na podstawie profilu utworu albo Twojego ustawienia Intensywność.
- Pulsy: stopa, werbel lub hi-hat staje się obwiednią, która gwałtownie rośnie i gaśnie w ułamku sekundy.
- Frazy: sekcje liczy się we frazach po osiem taktów, aby wygląd mógł się zmieniać w długiej sekcji, ale nie przypadkowo.
- Paleta: pięć kolorów wynikających z tonacji i trybu sekcji, gatunku utworu i Twojego koloru akcentu. Płynnie przechodzi od palety jednej sekcji do następnej, a przy dropie zmienia się natychmiast.
- Główny ściemniacz: pełna jasność podczas odtwarzania, niska podczas pauzy, czerń w czasie ciszy i krótkie przygaszenie w ostatnim uderzeniu przed dropem.
- Ogranicznik błysków: każdy błysk, którego chce środowisko, przechodzi przez dyrygenta, a ten dopuszcza najwyżej trzy pełne błyski na sekundę. Przy włączonej opcji Ogranicz błyski stają się miękkimi pulsami koloru. Ponieważ ograniczenie działa w tym miejscu, obowiązuje w każdym środowisku.
Tekst
Gdy tekst jest na scenie, wspólna oś czasu mówi, co i kiedy jest śpiewane: wersy, początek i koniec każdego słowa, chórki (słowa w nawiasach) oddzielone od głównego wersu oraz przerwy instrumentalne. Czasy słów są dokładne, gdy tekst utworu został przeanalizowany, a wcześniej są szacowane na podstawie długości wersu.
O wyglądzie słów decyduje środowisko. Klasyczne umieszcza je pod okładką z reflektorami śledzącymi; Voyage buduje je w powietrzu nad drogą. Oba podświetlają to samo słowo w tej samej chwili.
Środowisko
Środowisko w każdej klatce otrzymuje stan pokazu i go rysuje. Rainy jest jego gospodarzem:
- Daje środowisku własną warstwę nad sceną oraz płynnie ją pokazuje i ukrywa.
- Układa wokół niego odtwarzacz: bez zmian (sceniczne) albo schowany (immersyjne).
- Przekazuje mu partyturę, tytuł i okładkę utworu, gdy się zmieniają.
- Usuwa wszystko, co środowisko dodało, gdy schodzi ono ze sceny.
- Jeśli środowisko zawiedzie, Rainy zdejmuje je ze sceny i kontynuuje w Klasycznym.
Klasyczne jest wbudowane. Każde inne środowisko jest pakietem, wczytywanym dopiero wtedy, gdy ktoś je wybierze. Zobacz Środowiska pokazu świateł.
Płynność
Pokaz mierzy, ile trwają jego klatki, i dostosowuje się na bieżąco:
- Ma trzy poziomy jakości. Jeśli klatki trwają za długo, schodzi o poziom niżej (niższa rozdzielczość, mniej efektów); gdy znów jest zapas, wraca wyżej.
- Tryb niskiej wydajności ustawia na stałe najniższy poziom i rysuje 30 klatek na sekundę.
- Jeśli pokaz przez około dziesięć sekund nadal nie nadąża na najniższym poziomie, jednorazowo proponuje Tryb niskiej wydajności.
Każde środowisko samo określa, co oznacza dla niego poziom jakości: Klasyczne ogranicza mgłę i poświatę, Voyage obniża rozdzielczość i blask.