Растяжение звука во времени
Time Stretch — полезная функция, с помощью которой можно изменить длину и «темп» выбранного фрагмента аудиоданных, при этом не затрагивая высоту тона. Рассмотрим в этой статье особенности применения этой функции и покажем несколько примеров.
Time Stretch (растяжка по времени)
Функция растяжения аудиофайла по времени имеется практически во всех программах цифровой обработки музыки. Конечно, в каждой из них функция Time Stretch может называться немного по другому, например: Cubase, Nuendo (Time Stretch); Reaper (time stretch); FL Studio (Time Stretch); Samplitude (Time Stretching); Audition (Stretch) и т. д., но в целом найти её не составит проблем.
Что из себя представляет функция Time Stretch?
Данная функция Stretch (растяжение) построена на предварительном разбиении звукового фрагмента на элементы (выборки). Впоследствии каждая из выборок при необходимости обрабатывается отдельно, а затем опять собирается в результирующий сигнал. Длительность воспроизведения волновой формы при этом увеличивается (уменьшается), а высота тона не изменяется.
Варианты применения функции Time Stretch
Обычно возможно два варианта применения этой функции: быстрый и точный.
Быстрый вариант реализуется так:
- В быстром меню инструментов выбирается функция Time Stretch (ниже примеры из программы Samplitude, Cubase, Nuendo)
- Затем нужно навести курсор мыши на окончание одного из аудиофайлов. Вид курсора при этом может изменится на изображении руки, часов и т. п.
- Захватите конец файла и перетащите мышь влево (чтобы увеличить скорость воспроизведения) или вправо (чтобы замедлить его).
Этот вариант действительно быстрый и может применяться когда файл не нуждается в точной подстройки под темп проекта (например, эффект, шум и т. п.)
Для точной настройки и «подгона» под нужный темп имеется второй вариант.
Точный вариант
Для этого нужно:
- Выберите нужный аудиофайл.
- Вызвать в меню функцию Time Stretch .
- Откроется диалоговое окно с различными параметрами: продолжительность файла, темп, алгоритм преобразования и т. д.
- Внесите изменения и нажмите OK.
Теперь перейдём к конкретным примерам.
Time Stretch в Cubase, Nuendo
Меню Time Stretch открывается командой Audio > Process > Time Stretch
Доступны следующие параметры:
Секция Define Bars (определения тактов)
Если вы используете настройки темпа, вы можете задать длину выбранного аудио и размер в этой секции.
- Bars (Такты) — Устанавливает длину выбранного аудио в тактах.
- Beats (Доли) — Устанавливает длину выбранного аудио в долях.
- Sign. (Размер) — Задаёт размер.
Секция Original Length (Исходная длительность)
Эта секция содержит информацию и настройки, касающиеся выбранного для обработки аудио.
- Length in Samples (Длина в семплах) — Длина выбранного аудио в семплах.
- Length in Seconds (Длина в секундах) — Длина выбранного аудио в секундах.
- Tempo in BPM (Темп в BPM (уд/мин) — Позволяет вам ввести действительный темп аудио в ударах в минуту. Эта опция позволяет вам производить пересчёт аудио в другой темп, без расчёта необходимых коэффициентов растяжения или сжатия.
Секция Resulting Length (Результирующая длительность)
Это значение изменяется автоматически при регулировке Коэффициента Time Stretch для растяжения (сжатия) аудио, чтобы оно было привязано к определённому временному интервалу или темпу.
- Samples (Семплы) — Результирующая длина в семплах.
- Seconds (Секунды) — Результирующая длительность в секундах.
- BPM — Результирующий темп в ударах в минуту. Для этого необходима установка параметра Исходная длительность.
Секция Seconds Range (Диапазон в секундах)
Позволяет вам задать диапазон для растяжения по времени.
- Первая строчка — Произвольное время вступления. Позволяет вам задать начальную позицию диапазона.
- Вторая строчка — Позволяет вам задать конечную позицию диапазона.
- Use Locators (Использовать локаторы) — Позволяет вам установить значения Диапазона для левого и правого локаторов соответственно.
Секция Time Stretch Ratio (Коэффициент Time Stretch)
Определяет степень растяжения или сжатия в процентах от оригинальной длины. Если вы используете настройки в секции Результирующая длительность для установки степени растяжения, это значение изменяется автоматически.
Секция Algorithm (алгоритм)
Позволяет вам выбрать алгоритм растяжения по времени. Алгоритм MPEX — обрабатывает материал менее быстро, но с более высоким качеством. Realtime — наоборот, более быстро, но с худшим качеством.
Time Stretch в Reaper
Секции Take properties и Take pitch shift/time stretch mode окна Item Properties (F2) могут использоваться для растяжения клипа по времени.
Для этого необходимо отредактировать параметр Playback Rate. На рисунке ниже, скорость воспроизведения увеличена на 2%, и отмечена опция Preserve Pitch. В качестве алгоритма выбран Elastique 3 Pro.
Чтобы открыть окно Item Properties любого клипа, выберите клип и нажмите клавишу F2. Чтобы сделать это для нескольких клипов:
- Выберите нужные клипы.
- Нажмите клавишу F2.
- Диалоговое окно Item Properties включает параметры, изменения которых затронут несколько клипов сразу, включая параметры изменения высоты тона, и настройка скорости воспроизведения.
- Внесите изменения и нажмите OK.
Когда окно Item Properties открывается для нескольких клипов, некоторые опции будут затенены и, следовательно, не доступны. (например, опции Take envelopes и Rename file). Однако большинство опций доступно.
Time Stretch в Samplitude
В этой программе имеется плагин Resampling / Time Stretching. Он преобразует частоту дискретизации, растягивает/сжимает звук во времени, изменяет высоту тона. Открывается командой Effects > Time /Pitch > Resampling / Time Stretching главного меню программы.
Плагин не применяется в реальном времени. Однако кнопкой Play / Stop можно включить режим предварительного прослушивания обработанного материала, а кнопкой Play Original — материала исходного.
Интерфейс плагина предельно прост. Окно разделено на три секции. В секции Factor находятся два регулятора, управляющие параметрами преобразования:
- Time factor — относительный коэффициент сжатия/растяжения аудиоматериала во времени;
- Pitch (Half steps) — интервал транспонирования в полутонах.
В секции Time Factor Calculation расположены взаимосвязанные поля калькулятора, позволяющего пересчитать изменение длительности аудиоматериала в обрабатываемом объекте в изменение темпа и наоборот. Кнопка Reset приводит регуляторы и содержимое полей ввода в нейтральное положение, а обрабатываемый материал — в исходное.
Секция Algorithm
В раскрывающемся списке нужно выбрать алгоритм преобразования (один из восьми), в наибольшей степени соответствующий характеру обрабатываемого материала. Для удобства пользователя, если выделить в этом списке любую строку, автоматически откроется связанное с этой строкой окно, где в виде таблицы представлены сведения о том, в какой степени данный алгоритм пригоден для обработки того или иного аудиоматериала (барабанных партий, партий полифонических и одноголосных инструментов, вокала и т. д.).
Если установлен флажок Anti Aliasing Filter (High Quality Resampling), то преобразования будут выполнены с применением фильтра, предотвращающего искажения, вызванные наложением спектра дискретизированного сигнала на спектр сигнала исходного (эффект алиасинга).
Time Stretch FL Studio
Чтобы открыть инструмент Time Stretch / Pitch Shift нужно щелкнуть левой кнопкой мыши на кнопке Time Tool, нажать (Alt + T) внутри Редактора, либо использовать Tools > Time > Time stretch / Pitch. Чтобы открыть диалоговое окно «Вставить-растянуть», нажмите (Ctrl + Shift + T) или используйте Tools > Edit > Paste.
Секция Amount
- Pitch coarse — Грубая высота тона. Изменение основного тона в полутонах.
- fine — базовый шаг в центах
- mui — множитель диапазона высоты звука (в%)
- Time mul — изменить продолжительность выборки в%
- length — измените длительность выборки, указав длину в миллисекундах (мс)
- Method — выберите один из следующих методов смещения / сохранения высоты тона
- Insert — если этот переключатель выключен образец будет смешиваться с оригиналом.
Следующая секция Formant preservation изменяет параметры pitch высоты тона, поэтому мы их рассмотрим в другой статье.
Time Stretch в Adobe Audition
Для запуска выберите команду Effects > Time and Pitch > Strech
Имеется две основные вкладки: Constant Stretch и Gliding Stretch
- Constant Stretch (постоянное), то есть растяжение аудиофайла выполняется целиком без изменения стечением времени с одним и тем же коэффициентом.
- Gliding Stretch (изменяющееся) можно выбрать величину растяжения для исходной и конечной волн по отдельности.
Рассмотрим подробнее каждую из вкладок.
Constant Stretch
Ползунок Stretch % — предназначен для задания величины, на которую изменится время воспроизведения волновой формы (волна может быть расширена или сжата). Перемещение этого ползунка влияет на изменения параметров Ratio и Length. При сжатие (менее 100%) или растяжении (более 100%) волны отображается — Compress Wave и Stretch Wave. В положении 100% ширина волны не изменится (Unchancged).
Поле Ratio — отношение времени воспроизведения к высоте тона волновой формы (в процентах)
Поле Length — конечное время изменения ширины волны
При изменение любого из трёх параметров изменяются все остальные.
В окне Transpose выбирается количество полутонов для понижения или повышения аудиофрагмента.
Группа Pitch and Time settings
Флажок Solo Instrument or Voice позволяет более аккуратно выполнить настройку сольной партии. Флажок Preserve Speech Characteristics позволяет сохраеить реалистичность звуков речи. Поле Formant Shift Semitones касаются формантной настройки сдвига тона.
Gliding Stretch
В этой вкладке появляется два ползунка Initial %, Final % (первоначальный %, финальный %). Остальные параметры (Ratio, Length,Transpose) такие же как и в Constant Stretch.
Группа Pitch and Time settings
В этом режиме в данной группе появляются следующие параметры:
Поле Splicing Freguency. В этом поле указывается частота сращивания (5-500 Гц), определяющая количество выборок, на которые делится звуковой фрагмент. Значение этого параметра должно быть в целое число раз меньше частоты синусоидального колебания (частоты тонального заполнения), из которого состоит преобразуемая волновая форма.
Поле Overlapping. Предназначено для задания значения (0-50%) степени перекрытия звуковых выборок. При растяжении или сжатии выборки перекрываются друг другом.
Общие параметры для вкладок Constant Stretch и Gliding Stretch
Группа Precision имеет три варианта:
- Low Precision (низкая точность);
- Medium Precision (средняя точность);
- High Precision (высокая точность).
Группа Stretching Mode также имеет три переключателя:
- Time Stretch (Preserves Pitch) — позволяет уменьшать и увеличивать темп без изменения высоты тона;
- Pitch Shift (Preserves Tempo) — позволяет уменьшать и увеличивать высоту тона (питч) без изменения темпа;
- Resample (Preserves Neither) — позволяет изменять как высоту, так и темп.
В группе Presets содержится несколько готовых вариантов настроек:
- Culting Power. Постепенное растяжение выделенного фрагмента. Если обрабатывать однотонный звук, то получается эффект звука выстрела и полёта снаряда.
- Double Speed. Двухкратное сжатие во времени с одновременным повышением тона.
- Fast Talker и Speed up. Увеличение темпа или сжатие фрагмента волновой формы с сохранением высоты тона.
- Helium и Raisw Pitch. Повышение высоты звучания выделенной волновой формы при её неизменной длительности.
- Slow Down. Растяжение фрагмента волновой формы во времени в полтора раза с сохранением прежней высоты тона.
Всем спасибо и удачи в творчестве!
Подписывайтесь на RSS блога и следите за новыми статьями.
Источник
Ни для кого не секрет, что если воспроизводить звук ускоренно, то изменится и тон его звучания и, разумеется, уменьшится длительность.
Это одно из самых простых преобразований, которые можно сотворить со звуком. Но что делать, если нужно изменить темп воспроизведения звука, но тон оставить прежним? Или наоборот, изменить тон, не трогая длительность?
Поскольку можно изменять одновременно тон и длительность, регулируя темп воспроизведения, обе задачи можно свести к одной: если, например, получится произвольно изменить темп, сохранив тон, то обратно пропорциональное изменение скорости воспроизведения соответствующим образом изменит тон, вернув темп в начальное состояние.
Чтобы было понятнее о чём пойдёт речь далее, небольшая видеозарисовка:
Ясно дело, без хитростей тут не обойдётся. На помощь нам приходит штука, известная как «Быстрое преобразование Фурье» (БПФ, или по-буржуйски FFT: Fast Fourier Transform).
О том как реализовать БПФ, я тут расписывать не буду, благо весь интернет кишит статьями с исходниками. Важно лишь то, что БПФ работает над массивом комплексных чисел и позволяет получить спектр сигнала.
Вот тут я накидал поясняющую картинку:
Я думаю по картинке всё и так понятно, но на всякий случай напишу пояснения:
1. Исходный сигнал разбивается на фрагменты, причём фрагменты перекрываются большей своей частью. Важно подойти к выбору длины каждого фрагмента: если фрагмент будет слишком коротким, то преобразование не затронет низкие частоты звука, не попавшие во фрагмент, если слишком длинным, то появится неприятный трубный звук, из-за того что ухо будет успевать различать изменения внутри фрагментов. Идеальная длительность фрагмента — около 50 мс. Но применение БПФ сильно ограничивает нас выбором длительности фрагментов кратным степени двойки. По моему опыту, для частоты воспроизведения 44100 семплов в секунду наилучший результат получается с фрагментами длиной 2048 сэмплов.
Как говорилось, фрагменты перекрывают друг друга, это значит что каждый последующий цикл преобразования захватывает большую часть исходных данных, уже участвовавших в предыдущих итерациях. Степень перекрытия фрагментов сильно влияет на качество звучания. По моему опыту, хороший результат получается при 16-кратном перекрытии (такое используется в демонстрационном видео), это означает что начала фрагмента для очередного цикла преобразования отстоит на 1/16 длины фрагмента от начала фрагмента прошлого цикла. При длине фрагмента 2048 сэмплов этот шаг составляет 128 сэмплов.
Нетрудно посчитать, что для обработки звука в реальном времени, при таких параметрах потребуется выполнить в районе 345 полных циклов обработки звука ежесекундно.
2. Итак, выбран один из фрагментов исходного звука, с него и начинается цикл преобразований.
3. Поскольку наибольшие ошибки БПФ накапливаются по краям окна, сигнал нужно отфильтровать, уменьшив его амплитуду на краях путём умножения на функцию оконного фильтра.
Перед восстановлением звука, в пункте 10, также будет применён оконный фильтр, поэтому выбирать функции входного и выходного фильтра следует так, чтобы сумма их произведений в каждой точке с учётом степени перекрытия всегда равнялась единице.
Не вдаваясь в подробности, скажу что хороший результат получается с использованием функции
f(i) = sin((Π / 2) * sin(Π * (i / N))²)
где Π — это пи (3,14159…); N — длина окна, i — номер сэмпла в окне (от 0 до N — 1)
4. БПФ работает над комплексными числами, а исходный сигнал у нас вещественный. Для подготовки массива для преобразования исходный сэмпл просто копируется в вещественную часть комплексного числа, а мнимая часть остаётся нулевой.
Теперь можно выполнять преобразование.
5. Поскольку все мнимые части у нас были нулевыми, полученный спектр получился симметричным. Только мнимая часть в правой половине имеет противоположный знак. Поэтому правую часть спектра можно смело отбросить.
В общем и целом, вещественная часть i-го элемента массива (гармоники) означает амплитуду косинуса частоты 2 * Π * i / N, а мнимая — синуса.
Нетрудно заметить, что для нулевой гармоники на всём протяжении этот самый косинус будет равен единице, а синус — нулю. Иначе говоря — мнимая часть нулевой гармоники всегда равна нулю, а вещественная представляет собой среднее арифметическое исходного сигнала на всём окне, т.е. показывает его смещение.
6. Для каждой гармоники спектра комплексное число необходимо преобразовать в полярные координаты. Теперь получилась l — амплитуда соответствующей частотной составляющей, и α — смещение фазы, т.е. насколько верхняя точка синусоиды отстоит от начала окна.
7. Представим такую ситуацию: у нас есть длинный протяжный звук, к примеру синусоида. Если частота синусоиды совпадает с частотой одной из гармоник, то на спектре будет присутствовать только эта гармоника, а вот фаза α будет меняться на каждой итерации, в зависимости от того на какую часть синусоиды пришлось начало окна. Не трудно догадаться что разница между фазами в двух соседних итерациях будет постоянной.
Если мы хотим растянуть наш этот монотонный гул во времени, то картина не должна измениться, он по прежнему останется таким же гулом и скорость изменения фаз будет ровно та же самая.
Представим теперь, что амплитуда гудящей синусоиды нарастает со временем. Теперь растягивание её во времени будет означать интерполяцию значений амплитуд (l), но разница между фазами в двух соседних итерациях опять таки будет изменяться с прежней скоростью.
Собственно эта идея и лежит в основе алгоритма:
1) для каждой гармоники на каждой итерации смотрим скорость изменения фазы — т.е. разницу с фазой из предыдущей итерации.
2) полученное значение скорости прибавляется к значению фазы такой же гармоники из предыдущей итерации выходного спектра, вне зависимости от того ускоряем мы, или замедляем воспроизведение.
3) значение амплитуды гармоники в выходном спектре получается путём интерполяции.
В пункте 2 возможны вариации — например, получать значение скорости фаз также при помощи интерполяции, но суть остаётся неизменной: важную роль играет не фаза, а скорость её изменения, которая воспроизводится в выходном спектре.
8. Получив выходной спектр, зеркально восстанавливаем его правую часть. При этом мнимая часть берётся с противоположным знаком.
9. После этого можно выполнить обратное быстрое преобразование Фурье над полученным спектром, благодаря тому что спектр зеркален, мнимые части результата будут равны нулю, а выходной сигнал будет вещественным.
10. Затем выходной сигнал нужно домножить на оконный фильтр. Здесь я использую ту же формулу, что и в п.3, с последующим делением на половину степени перекрытия.
11. Полученный сигнал складывается с учётом степени перекрытия, с результатами предыдущих и последующих итераций
12. Выходной сигнал готов, можно его выводить на аудиоустройство, или сохранять в файл — кому что ближе.
Изменение тона
Для изменения тона в N раз выполняется растяжение (т.е. замедление) звука в эти же N раз, а затем ускорение воспроизведения в N раз, что приводит к изменению тона при сохранении исходного темпа воспроизведения.
Источник
Данная статья является частью цикла статей «Adobe Audition»
Эффект позволяет изменять тональнсть звукового сигнала, темп, или то и другое. Например, вы можете использовать эффект для переноса песни на более высокий ключ, не меняя темпа, или вы можете использовать его, чтобы замедлить диктора без изменения тональности.
Примечание: Этот эффект требует автономной обработки. В то время как до открытия, вы не можете редактировать сигнал, настроить выделение, или переместить индикатор текущего времени.
- Algorithm (алгоритм) — выберите Izotope Radius для одновременного растяжения и сдвига тональности звука, или Audition для изменения настроек растяжения или тональности с течением времени. Алгоритм Izotope Radius требует больше обработки, но добавляет меньше артефактов.
- Precision (точность) — более высокие значения производят лучшее качество, но требует больше времени на обработку.
- New Duration (новая продолжительность) — указывает насколько этот звук будет растянут во времени. Вы можете настроить значение New Duration прямо или косвенно, путём изменения процента Stretch.
- Примечание: Если вы обычно растягивается файлы определенной длительности, нажмите значок Favorite, чтобы сохранить эту настройку для использования в будущем. Чтобы применить Favorite для нескольких файлов, посмотрите Batch обработку файлов.
- Lock Stretch (блокировка растяжения) — значение New Duration переопределяет обычные или предустановленные значения Stretch, вместо расчета корректировки их продолжительности.
- Примечание: Выберите опцию выше, чтобы быстро сделать радио радио рекламу длительностью 30 или 60 секунд.
- Stretch (растягивать) — сокращает или растягивает обрабатываемый звук по сравнению с существующими. Например, чтобы сократить звук до половины текущей длительности, укажите значение Stretch в 50%.
- Pitch Shift (сдвиг тональности) — сдвигает тональность звука вверх или вниз. Каждый полутон соответствует одной половине шага на клавиатуре.
- Final Stretch или Pitch Shift (Audition algorithm) (финальное растяжения или сдвиг тональности (алгоритм Audition)) — изменение начальных Stretch или Pitch Shift установок с течением времени, достигая в последний окончательного значения выбранного звукового сэмпла.
- В зависимости от алгоритма:
- Lock Stretch and Pitch Shift (IZotope algorithm) (блокировка растяжения и смещения тональности (алгоритм IZotope)) — растяжение звука с учетом изменения тональности, или наоборот.
- Lock Initial Strech and Pitch Shift (Audition algorithm) (блокировка начального растяжения и смещения тональности (алгоритм Audition)) — растяжение звука с учетом изменения тональности, или наоборот. Финальные параметры Stretch или Pitch Shift не изменяются.
Продвинутые настройки[править]
Нажмите треугольник доступа к этим опциям.
Алгоритм Izotope Radius[править]
- Solo Instrument Or Voice (солирующего инструмента или голоса) — более быстро обрабатывает сольное исполнение.
- Preserve Speech Characteristics (сохранить характеристики речи) — поддерживает реализма в речи.
- Formant Shift (сдвиг формант) — определяет как формантам приспособиться при сдвиге тональности. По умолчанию нулевое значение регулирует форманты вместе со сдвигом тональности, сохраняя тембр и реализм. Значения выше нуля производить повышение тембров (например создавая из звука мужского голоса женский). Значения ниже нуля делают наоборот.
- Pitch Coherence (согласованность тональности) — поддерживает тембр солирующих инструментов или вокала. Более высокие значения уменьшают артефакты, но постепенно вводят больше модуляции тональности.
Алгоритм Audition[править]
- Splicing Frequency (сращивание частоты) — определяет размер каждого куска звуковых данных при сохранении тональности или темпа при растяжении сигнала. Чем выше значение, тем более точно размещение растянутого во времени звука. Однако, будут более заметны артефакты, при увеличении значений; звук может стать жестяным или приобрести туннельные качества. При более высоких значениях Precision, более низкие сращиваемые частоты могут добавлять заикания или эхо.
- Overlapping (перекрытие) — определяет количество перекрывания каждого куска звуковых данных, предыдущего и следующего. Если растяжение производит эффект хоруса, снизьте процент Overlapping, но не так низко, чтобы не произвести прерывистый звук. Overlapping может достигать 400%, но вы должны использовать это значение, только при очень высоком увеличнии скорости (на 200% и более).
- Choose Appropriate Defaults (выбрать соответствующие значения по умолчанию) — применяет хорошие значения по умолчанию для Splicing Frequency и Overlapping. Этот вариант хорош для сохранения тональности или темпа.
- Constant Vowels (постоянные гласные) — сохраняет звуки гласных в растянутом вокале. Эта опция требует существенной обработки, попробуйте её на небольшом участке перед её применением на один длинный.
Источник