English Русский Polski

background-image

Matematyczna synchronizacja obrazu z dźwiękiem w filmie animowanym

Wstęp

Dokładna synchronizacja dźwięku i obrazu jest najważniejszym zagadnieniem w tworzeniu filmów do muzyki. Wielu twórców synchronizuje obraz z dźwiękiem wyjątkowo czasochłonną metodą prób i błędów. Rezultat często jest jak najbardziej udany, należy jednak pamiętać o istnieniu metod bardziej efektywnych opartych na obliczeniach matematycznych. Muzyka, jest dziedziną twórczości, którą bardzo łatwo jest ująć w matematyczne wzory i liczby. Głównym polem działalności muzycznej, które chciałbym poddać matematycznej analizie jest rytm. Można go łatwo podzielić na części i przyporządkować im fragmenty filmu.

Żeby treść analizy była dobrze zrozumiała wyjaśnię znaczenie używanych przeze mnie skrótów muzycznych i filmowych. Skróty zawarte w poniższej tabeli pochodzą z programów do edycji dźwięku oraz montażu wideo.

B
ang. Beat, pojedyncze uderzenie w rytmie - część taktu
T
ang. Tick, najmniejsza jednostka rytmiczna - część uderzenia
F
ang. Frame, pojedyncza klatka filmu
BPM
ang. Beats Per Minute, ilość uderzeń na minutę
FPS
ang. Frames Per Second, ilość klatek na sekundę
TPB
ang. Ticks Per Beat, ilość najmniejszych jednostek rytmicznych na jedno uderzenie

Przyjrzyjmy się zatem poszczególnym technikom synchronizacji...

Dopasowanie tempa utworu muzycznego do standardowego FPS

Najprostszym środkiem, za pomocą którego można osiągnąć wyjątkowo precyzyjną synchronizację rytmu muzycznego z obrazem jest takie dopasowanie tempa utworu, żeby najmniejsza jednostka rytmu muzycznego odpowiadała jednej, lub kilku klatkom filmu. Przykładem animacji zsynchronizowanej z dźwiękiem z użyciem tej techniki jest „Mickey's Choo-Choo” (© Disney Studios - 1929 rok). Standardową wówczas częstotliwością odtwarzania filmów była 24FPS. Sugerowało to użycie tempa 90BPM. Dlaczego? Spójrzmy na wzór matematyczny oraz jego zastosowanie:

BPM = FPS / TPB × 60
BPM = 24 / 16 × 60 = 90

Liczba 16 podstawiona do TPB wynika z podziału uderzenia rytmicznego na szesnaście równych części. Z powyższego obliczenia można łatwo wywnioskować, że jeżeli przy częstotliwości 24FPS każda klatka ma odpowiadać jednej szesnastej uderzenia rytmu muzycznego, to tempo utworu musi wynosić 90BPM. Rzeczywiście tak jest - muzyka w animacji „Mickey's Choo-Choo” ma stałe tempo równe 90BPM. Dopasowanie ruchów Myszki Miki do muzyki było najprawdopodobniej oparte na specyficznym zapisie nutowym, w którym można łatwo wyodrębnić jednostki rytmiczne odpowiadające pojedynczym klatkom animacji. Za pomocą takiego zapisu można łatwo przypisać numery klatek poszczególnym dźwiękom z muzyki. Ponadto animacja „Mickey's Choo-Choo” jest podzielona na równe fragmenty. Każdy z nich ma długość równą wielokrotności 64 klatek. Poszczególne sceny animacji odpowiadają kolejnym taktom muzyki. Przy takim podziale wygodnie jest synchronizować z obrazem powtarzające się w taktach frazy muzyczne.

Przykład synchronizacji w animacji „Mickey's Choo-Choo” © 1929 Disney Cartoons

Należy pamiętać, że takie rozwiązanie jest naturalne kiedy twórca filmu jest jednocześnie twórcą muzyki, lub przynajmniej ma na nią wpływ.

Dopasowanie FPS do tempa utworu muzycznego

Trudniejsza sytuacja występuje, kiedy mamy gotową muzykę. Wówczas należy samemu obliczyć FPS, tak aby klatki filmu odpowiadały podziałom rytmicznym, ale zanim zabierzemy się za obliczanie FPS - należy dokładnie przeanalizować rytm występujący w danym utworze muzycznym. Proponuję również podzielić muzykę na logiczne fragmenty (np. zwrotki w przypadku piosenki). Będzie to potrzebne, aby wyodrębnić takty muzyczne również w filmie. Ponadto w muzyce mogą wystąpić zmiany rytmu oraz tempa, które muszą zostać uwzględnione w animacji. Sprawa jest prosta, kiedy muzyka została wykonana za pomocą komputera, ponieważ wtedy tempo powinno być niezmienne. Kiedy muzyka jest wykonywana przez ludzi - wtedy drobne zachwiania tempa są nieuniknione. Wystarczy jednoprocentowa zmiana tempa, aby rozbieżność między obrazem a dźwiękiem wyniosła nawet sekundę. Należy więc zmierzyć czas trwania, a następnie tempo utworu w każdym z jego fragmentów. Tempo utworu wyrażone w BPM wynika z następującego wzoru:

BPM = B / czas
B
ilość uderzeń
czas
długość fragmentu mierzona w minutach

Aby łatwiej było dokonać obliczeń, można wyrazić ten wzór w bardziej praktycznej formie:

BPM = takty × metrum / (czas / 60)
takty
ilość taktów
metrum
ilość uderzeń na takt
czas
długość fragmentu mierzona w sekundach

Obliczenie FPS przy zadanym BPM można wykonać za pomocą poniższego wzoru:

FPS = BPM × TPB / 60

Dobrze byłoby zweryfikować czy obliczenia są prawidłowe. W tym celu należałoby przygotować prostą animację. Może być to jedna biała klatka na początku każdego z taktów zapętlona wielokrotnie przez całość utworu muzycznego. Kiedy mruganie białych kadrów będzie pasować do rytmu muzycznego, to znaczy, że się udało.

Zapis nutowy

Po dokonaniu szczegółowych obliczeń - czas aby zająć się pojedynczymi dźwiękami. Ja w tym celu modyfikuję utwór muzyczny tak, aby jego tempo było bardzo powolne. Słucham uważnie i notuję. Dzięki temu mogę przygotować zapis podobny do poniższego:

notes

Rozpisanie dźwięków z animacji „Jezu mój”

Jak widzimy na rysunku - na każdy z taktów będą przypadać 32 klatki. Kolejny etap to najlepsza zabawa. Fragment po fragmencie rysujemy to co podpowiada wyobraźnia dla poszczególnych dźwięków i melodii.

Montaż - interpolacja

Po wykonaniu serii filmów dla każdego fragmentu muzyki z osobna pojawia się potrzeba, aby zmontować z tego cały film i połączyć go z dźwiękiem. Oczywistym jest, że film powinien mieć stałe FPS więc należałoby ujednolicić je we wszystkich fragmentach. Należy przy tym zachować dotychczasowe czasy trwania każdego z nich. Nie wystarczy więc po prostu zmiana FPS. Konieczna jest interpolacja klatek tak aby przedziały czasowe nie uległy zmianie. Dobrze jest również, kiedy docelowe FPS jest dosyć duże wtedy ewentualne różnice w długości klatek powodowane interpolacją są mniejsze. Oczywiście - FPS powinno być również zgodne ze standardami. Przykładowo w systemie PAL stosuje się 25FPS, co w przypadku około 12FPS w oryginalnej animacji daje bardzo dobre rezultaty.

Przykład synchronizacji w animacji „Wołam do Ciebie, Panie” © 2008 Jan Domański

Interpolacja jednak niesie ze sobą pewne niedogodności. Przede wszystkim występuje utrata jakości filmu związana z powtarzaniem się klatek. Ponadto nie można stosować FPS większego niż standardowe, ponieważ wtedy niektóre z narysowanych przez nas klatek po prostu nie ukażą się w filmie. Montaż scen nakręconych kamerą w tej technice również przysporzy dużych kłopotów. Technika ta jest prosta, jednak są sytuacje, w których nie znajduje ona zastosowania.

Obliczanie klatek

Do dobrej synchronizacji nie jest konieczne, aby wszystkie klatki animacji dokładnie zgadzały się z podziałami rytmicznymi w muzyce. Kiedy podzielimy uderzenie rytmiczne na 16 części, to tylko w niektórych będą występowały momenty, które będzie trzeba odzwierciedlić za pomocą obrazu. Można na samym początku ustalić FPS zgodnie ze standardami, a następnie obliczać numery klatek nawiązując do rytmu muzycznego. Jest to możliwe nawet wtedy, kiedy tempo muzyki jest zmienne. Przykładem animacji, która została zsynchronizowana z dźwiękiem tym właśnie sposobem jest „Starship Groove” grupy „Animusic”. Tempo utworu wynosi 111BPM, natomiast częstotliwość zmiany klatek - 29,97FPS. Jak zatem możemy określić numery klatek mając zadane tempo utworu oraz FPS? Po pierwsze należy obliczyć czas trwania jednego uderzenia w klatkach za pomocą poniższego wzoru:

B[F] = FPS × 60 / BPM
B[F]
długość uderzenia mierzona w klatkach

Dla muzyki ze „Starship Groove” będzie to się przedstawiało następująco:

B = 29,97 × 60 / 111 = 16,2F

A więc jedno uderzenie rytmiczne będzie trwało dokładnie 16,2 klatki. Aby uzyskać bardziej wnikliwą synchronizację można również podzielić to uderzenie na części. Na przykład na szesnaście. Dzięki takiemu podziałowi otrzymamy informację, że jedna szesnasta uderzenia będzie trwała 1,0125 klatki. Wartości te można mnożyć aby otrzymać numer klatki dla dowolnego taktu, uderzenia czy nawet dźwięku. Pojawia się tylko jeden problem: numery klatek mają wartości ułamkowe. Proponuję, aby zaokrąglać numery klatek w dół. Dlaczego w dół? Prędkość przemieszczania się światła jest zdecydowanie większa niż prędkość dźwięku dlatego w naturze zawsze najpierw widzimy obraz a następnie dociera do nas dźwięk z nim związany. Jeżeli według obliczeń ważny moment w muzyce będzie przypadał przykładowo na klatkę numer 372,6 to przy zaokrągleniu w dół otrzymamy klatkę 372. A więc dźwięk usłyszymy 0,6 klatki, czyli około 0,02 sekundy po obrazie. Gdybyśmy zaokrąglili numer klatki w górę wtedy usłyszelibyśmy go 0,4 klatki, czyli około 0,01 sekundy przed obrazem. Mimo, że rozbieżność między obrazem a dźwiękiem jest mniejsza w drugim przypadku - efekt wyrównania będzie odrobinkę wyraźniejszy w pierwszym.

Przykład synchronizacji w animacji „Starship Groove” © 2005 Animusic

Jeżeli chodzi o ten film, to hipotetycznie można byłoby również użyć prostszej metody synchronizacji, ponieważ animacja została wykonana w technice 3D. Jak wiadomo dużą część pracy związaną z generowaniem takich animacji wykonują komputery. Nic nie stałoby na przeszkodzie, aby techniką 3D wygenerować animację w FPS większym niż standardowe, a następnie zinterpolować FPS do wartości docelowych. Dla tempa 111BPM i podziale uderzenia rytmicznego na 32 części otrzymamy 59,2FPS. A więc po interpolacji prawie połowa klatek pójdzie na straty, co nie znaczy że graficy będą pracowali dwa razy dłużej. Czas będzie „stracony” wyłącznie przez komputery.

Podsumowanie

Metod synchronizacji dźwięku z obrazem jest zdecydowanie więcej niż te, które właśnie przedstawiłem. Ludzka pomysłowość jest nieograniczona, więc z pewnością w tej dziedzinie również można byłoby znaleźć jeszcze wiele ciekawych rozwiązań. Podsumujmy jednak te, które zostały przeze mnie przedstawione.

BPM = FPS / TPB × 60
FPS = BPM × TPB / 60
B[F] = FPS × 60 / BPM
B[F]
długość uderzenia mierzona w klatkach
BPM
ang. Beats Per Minute, ilość uderzeń na minutę
FPS
ang. Frames Per Second, ilość klatek na sekundę
TPB
ang. Ticks Per Beat, ilość najmniejszych jednostek rytmicznych na jedno uderzenie

Podziękowania

  • Podziękowania dla Wayne'a Lytle'a ze studia „Animusic” (http://animusic.com) za zgodę na publikację fragmentu jednej z jego animacji oraz za cenne spostrzeżenia dotyczące synchronizacji.
  • Podziękowania dla zespołu muzycznego „New Life`m” (http://newlifem.com) za zgodę na użycie utworu muzycznego „Wołam do Ciebie, Panie” do animacji.

Bibliografia

Artykuł został opublikowany w książce: Галеевские чтения, Казань 2010

background-image
© Jan Domański - 2017