English Русский Polski

background-image

Математическая синхронизация изображения и звука в мультфильме

Тщательный анализ трех популярных способов на синхронизацию музыкального ритма с движенном изображением. Рассматриваемые методы основанные на математическом вычислении музыкального темпа, частоты смены кадров, а также номеров очередных кадров. Все техники поддержана математическими формулами и примерами в виде видеозаписей.

Вступление

Точная синхронизация звука с изображением является главным вопросом в создании фильмов к музыке. Много создателей синхронизирует изображение со звуком исключительно трудоемкой методой испытаний и ошибок. Результат часто наиболее успешный, но должно запомнить о существовании более эффективных метод основанных на математических вычислениях. Музыка - это область творчества очень легко представляемая через математические формулы или числа. Главной областью музыкальной деятельности которой я хочу ввести в математический анализ это ритм. Его можно легко поделить на части и определить им фрагменты фильма.

Чтобы содержание анализа было понятное - я объясню значение использованных мной музыкальных и фильмовых сокращений. Сокращения из следующей таблицы используются в программном обеспечении для редактирования звука и видео.

F
анг. Frame, единичный кадр фильма
B
анг. Beat, музыкальная доля - часть мензуры, ритмический удар
T
анг. Tick, самая маленькая единица ритма - часть доли
BPM
анг. Beats Per Minute, количество доли в одну минуту
FPS
анг. Frames Per Second, количество кадров в одну секунду
TPB
анг. Ticks Per Beat, количество самых маленьких единиц ритма в одной доли

Посмотрим указанные техники синхронизации...

Соответствие темпа музыкального произведения со стандартным FPS

Самым прямым средством, с помощью которого можно достигнуть исключительно прецизионную синхронизацию музыкального ритма с изображением, является такое соответствие темпа произведения чтобы сама маленькая единица музыкального ритма, совпадала с одним или несколькими количествами кадров фильма. Примером мультфильма, использующего эту технику синхронизации, является «Mickey's Choo-Choo» (© Disney Studios - 1929 год). В то время стандартной кадровой частотой было 24FPS. Это предполагало использование темпа 90BPM. Почему? Посмотрим на математическую формулу и ее использование:

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

Число 16 вместо TPB вытекает из разделения музыкальной доли на шестнадцать равных части. По указанному вычислению можно прийти к выводу что если у частоты 24FPS всякий кадр должен ответствовать одной шестнадцатой доли музыкального ритма, тогда темп произведения должен равняться 90BPM. На самом деле так происходится - музыка в мультфильме «Mickey's Choo-Choo» имеет постоянный темп 90BPM. Совпадение движения Микки Мауса с музыкой было основано по самой вероятности на специфической нотной записи, в которой можно легко отделить ритмичные единицы совпадающие с единичными кадрами мультфильма. С помощью такой записи можно легко определить номера кадров к отдельным звукам музыки. Кроме того мультфильм «Mickey's Choo-Choo» разделен на равные фрагменты. Каждый имеет длину равной многократности 64 кадров. Отдельные сцены мультфильма совпадают с определенным мензурам музыки. При таком разделении удобно синхронизировать со звуком повторяющиеся в мензурах музыкальные фразы.

Пример синхронизации в мультфильме «Mickey's Choo-Choo» © 1929 Disney Cartoons

Надо помнить, что такое решение натуральное, когда создатель фильма является одновременно создателем музыки или по меньшей мере имеет на нее влияние.

Соответствие FPS с темпом музыкального произведения

Трудность возникает, когда у нас существует музыка. Затем надо самостоятельно вычислить FPS, так чтобы кадры фильма соответствовали ритмическим разделениям, но прежде чем заберемся за вычисляние FPS - нам необходимо тщательно исследовать ритм данного музыкального произведения. Я предлагаю тоже разделить музыку на логические фрагменты (напр. строфы в случае песни). Это важное для отделения музыкальных тактов также в фильме. Кроме того, в музыке могут появиться смены ритма а также темпа, которые надо предпринимать в мультфильме. Все ясно, когда музыка создана с помощью компьютера, потому что тогда темп постоянный. Когда музыка создана людьми - тогда мелкие колебания темпа натуральные. Хватит только однопроцентное изменение темпа, чтобы расхождение между изображением и звуком вынесло даже секунду. Необходимым измерить время продолжения, а дальше темп произведения во всех его фрагментах. Темп произведения измеряемый в BPM следует из формулы:

BPM = B × время
B
количество доли
время
длина фрагмента измеряемая минутами

Чтобы вычисление стало легче, формулу можно выразить в более практичном виде:

BPM = мензуры × метр × время / 60
мензуры
количество мензур
метр
количество доли в одной мензуре
время
длина фрагмента измеряемая секундами

Вычисление FPS при заданном BPM можно выполнить с помощью ниже указанной формулы:

FPS = BPM × TPB / 60

Хорошо было бы проверить правильность вычислений. С этой целью принадлежит подготовить простой мультфильм. Это может быть белый кадр в начале каждого такта петельный многократно через всю музыкальное дело. Когда сияние белых кадров будет совпадать с ритмом - это значить что нам повезло.

Нотная запись

После тщательных вычислений надо нам заняться отдельными звуками. Я для этой цели изменяю музыкальное дело, чтобы темп был совсем медленный. Внимательно слушаю и делаю заметки. Благодаря тому могу сделать запись похожий следующему:

notes

Заметки из фильма «Мой Иисус»

Как мы видим на иллюстрации - все такты имеют 32 кадры. Следующий этап это самое хорошее развлечение. Фрагмент после фрагмента рисуем то что предлагает воображение для отдельных звуков и мелодий.

Монтаж - интерполяция

После сделания всех мультфильмов для каждого фрагмента музыки отдельно, появляется потребность смонтировать это в один фильм и соединить его со звуком. Очевидно, что фильм должен иметь постоянное FPS так должно унифицировать ее во всех фрагментах. Следует при том оставить существующие к этим порам продолжительности каждого из них. Изменение FPS - это мало. Конечно обязательно сделать интерполяцию кадров, чтобы продолжительность фрагментов не менялась. Очень хорошо, когда целевой FPS достаточно большой, тогда отличия в продолжительности кадров меньше. Конечно FPS должно тоже совпадать с каким-то стандартом. На пример в системе PAL используется 25FPS, что в случае около 12FPS оригинального мультфильма дает очень хорошие результаты.

Пример синхронизации в мультфильме «Wołam do Ciebie, Panie» © 2008 Jan Domański

Интерполяция однако связана с определенными неудобствами. Прежде всего выступает потеря качества фильма связанные с многократностью кадров. Кроме того не надо использовать больше FPS как стандартные, потому, что тогда некоторые из нарисованных нами кадров просто не попадут в фильм. Монтаж сцен записанных видеокамерой тоже возвысить уровень трудностей. Эта техника простая, но есть положения, когда она не найдет применения.

Вычисляние кадров

Для годной синхронизации нет необходимости, чтобы все кадры фильма точно совпадали с ритмическим разделениям в музыке. Когда разделим ритмическую долю на 16 частей, тогда только в некоторых будут выступать моменты, которые надо показать с помощью изображения. Можно в самом начале установить FPS согласные со стандартами, а впоследствии, вычислять номера кадров ссылав до музыкального ритма. Это возможно даже когда темп музыки непостоянный. Примером мультфильма который ссинхронизирован со звуком этим способом, является «Starship Groove» группы «Animusic». Темп произведения равняется 111BPM, однако частота смены кадров - 29,97FPS. Как следовательно можем определить номера кадров имея данный темп произведения как и FPS? Во первом надо вычислить время продолжения одной доли в кадрах с помощью ниже упомянутой формулы:

B[F] = FPS × 60 / BPM
B[F]
длина доли измеряемая в кадрах

Для музыки из «Starship Groove» это будет выглядеть следующим образом:

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

Как видно - одна ритмическая доля будет продолжаться точно в 16,2 кадров. Чтобы получить более озабоченную синхронизацию можно тоже разделить долю на части. Примерно на шестнадцать. Благодаря такому разделению получаем информацию, что одна шестнадцатая доли будет продолжаться в 1,0125 кадра. Эти значения можно умножать чтобы получить номер кадра для любой мензуры, доли или даже звука. Но здесь возникает только одна проблема: номера кадров имеют дробное значения. Предполагаю, чтобы округлять номера кадров до целого в меньшую сторону. Почему в меньшую сторону? Скорость движения света гораздо большая чем скорость звука из-за этого в природе всегда сперва мы видим изображение, а потом добегает до нас связанный с ним звук. Если по вычислениям важный момент в музыке будет приходиться примерно на кадр номер 372,6 значит при округлении в меньшую сторону получим кадр 372. Потому звук услышим 0,6 кадра, то есть рядом с 0,02 секунды после изображения. Если бы мы округлили номер кадра в большую сторону в этом случае мы услышали бы его 0,4 кадра, то есть около 0,01 секунды до изображения. Несмотря что расхождение между изображением и звуком меньше во втором случае - эффект выравнивания будет немножко более выразительный в первом случае.

Пример синхронизации в мультфильме «Starship Groove» © 2005 Animusic

Что касается этого фильма, гипотетически можно было тоже пользоваться нетрудным методом синхронизации, потому что мультфильм сделан в технике 3D. Как всем известно, большую часть роботы при генерировании таких фильмов делают компьютеры. Никакой проблемы в том чтобы, техникой 3D выгенерировать фильм в FPS большем чем стандартные, а потом ситеполировать FPS до целевых значений. Для темпа 111BPM и разделении доли на 32 части получим 59,2FPS. Следовательно, после интерполяции, почти половина кадров станет уничтожена, а это не обозначает, что художники будут работать в два раза длиннее. Время будет «потеряно» компьютерами.

Резюме

Методов синхронизации гораздо больше чем те, которые я сейчас доказал. Человеческая смышленость неограничена, тогда - по всякой вероятности - тоже в этой области возможно найти еще много интересных решений. Давайте выводим все же те, которые я предъявил:

BPM = FPS / TPB × 60
FPS = BPM × TPB / 60
B[F] = FPS × 60 / BPM
B[F]
длина доли измеряемая в кадрах
BPM
анг. Beats Per Minute, количество доли в одну минуту
FPS
анг. Frames Per Second, количество кадров в одну секунду
TPB
анг. Ticks Per Beat, количество самых маленьких единиц ритма в одной доли

Благодарности

  • Благодарю Wayne'а Lytle'а из студии «Animusic» (http://animusic.com) за согласие на публикацию фрагмента одного из его мультфильмов а также за ценные наблюдения касающиеся синхронизации.
  • Благодарю ансамбль «New Life`m» (http://newlifem.com) за согласие на использование музыкального произведения «Wołam do Ciebie, Panie» в мультфильме.

Библиография

Опубликовано на польском в книге: Галеевские чтения, Казань 2010

background-image
© Jan Domański - 2017