14 авг. 2008 г.

Разработка: «MP3 vs. OGG» и музыкальный морфинг в петле

Фэйковый музыкальный морфинг и его техническая реализация в duckstazy. Реализовался он очень просто. У нас есть параметр power, плавно изменяющийся от 0 до 1 и обратно. Три коротких музыкальных трека проигрываются в петле. Для каждого трека хардкорно задана функция volume от power. Функция эта у нас задавалась четырьмя значениями уровня power. Первый и последний – для volume = 0. Средние два – для volume = 1. Чтобы узнать то, какую громкость мы должны выставить определенному треку, применяем линейную интерполяцию на участках: первый-второй и третий-четвертый. Текущая позиция всех треков должна быть одинаковой. Для этого мы ставим их в петлю и запускаем все три трека одновременно. Теперь нам осталось только регулировать их громкость.

Проблемы с MP3-петлей. И вот Alexis-Scorpio сдал мне свои три трека для морфинга в MP3, мы с ним долго слушали, и нам казалось, что петля как-то неровно стыкуется на последнем треке. Вроде бы короткая пауза. Вообще без ушей можно догадаться, что пауза была на всех треках в месте стыка. Виной этому, я считаю, был MP3-формат, чьи кодеры впиливают в начало/конец трека пустые участки для хранения какой-то своей информации (а может и просто так, чтобы было кошернее). На счастье, задолго до первых движений утки мы знали о том, что у нас будет OGG, где такого ужаса не наблюдается. Леша получил указания сохранять в WAV все треки, которые я затем жал утилитой «OGGENC2.EXE». Все, никаких проблем в duckstazy нет. Но сейчас вернемся к MP3. Солнце светило, и все были рады... Были... Но тут пошел дождь из говна и заляпал людей ненужной информацией. Пока не буду разглашать, зачем нам это нужно. Возможно, скоро будет анонс, и вы сами все узнаете. В общем, если вы хотите проигрывать MP3-петлю – вам придется вручную обрезать эти паузы в начале и конце трека. Проигрывать и отслеживать петлю также придется самим, учитывая эти паузы (gaps). И самое противное – не у всех кодеров эти паузы получаются одинаковыми, поэтому ручками можно подбирать.

2 комментария:

  1. Я могу ошибаться, но, кажется, проблема состоит в следующем. mp3 (про ogg ничего не знаю) разбивает дорожку на несколько фрагментов (возможно фиксированной длины), если трэк не заполняет последний фрагмент, он остается "пустым". Опять же точно не помню, но, вроде как, я сталкивался с проблемой ужатия в mp3, проблема заключалась в изменении, после сжатия, длины дорожки, вероятно, это происходило из-за выравнивания по фрагментам.

    ..bw

    ОтветитьУдалить
  2. Привет, bw. Я вот не понимаю: если он просто добавляет паузу, чтобы длина трека была кратной размеру фрагментов(твои слова про фрагментирование), зачем вставлять геп в начало трека? Ведь можно было бы просто добить в конец пустым куском.

    В общем я порыскал, это известная фишка, называют ее gaps. Пообщался с одним человеком - он сказал, что эта тема усиленно обсуждалась еще в 2002 году. В общем проблема известная. Я уже решил проблему и сделал нормальную MP3-петлю. Тем методом, о котором писал в самом конце: вручную.

    ОтветитьУдалить