1. Гейт
Определяет, есть ли сигнал на входе. Обычно адаптивный. Если сигнала нет, логика анализа и изменения не срабатывает, сигнал со входа просто задерживается на алгоритмическую задержку (едицицы-десятки мс) и копируется на выход.
2. Анализ
Достаточно просто. FFT, разделяются тоновые части (гармоники связок) и форманты. Анализируется частота тона гармонической части.
Вычисляется, как нужно изменить эту частоту. (Здесь может быть несколько подходов.)
3. Операции
Тоновая часть смещается. Форманты остаются. Потом всё это собирается заново
Весь алгоритм даёт некоторую задержку, размер которой связан с размером окна FFT. Делают и перекрытие окон. В общем, задержка обычно больше окна раза в два.
Режимы функционирования такие:
— Автоматическая подтяжка, когда частота заменяется на частоту ближайшего точного тона. Например, если у вас звук на 1/8 выше ноты «До» первой октавы — его опустят до точного совпадения с этой нотой
— Подтяжка «по подсказке» (guided, midi mode). В программу посылают звук и MIDI-поток нот, к которым всё и притягивается. Так можно петь даже монотонно, а программа сделает из этого мелодию.
— Можно просто добавить копию «на три полутона выше». Вокалист поёт один, а звучит как «с подпевкой».
— Можно сделать и так: вы поёте один, а на MIDI-клавиатуре держите аккорд. Все ноты аккорда посылаются в программу. При этом запускается несколько процессов операции, а результат суммируется. Получается, что вы поёте хором сам с собой этот аккорд. При должном использовании результат завораживает.
Вообще этот подход —
формантный синтез — применяется для искажения звука (вокодер), но поскольку в данном случае мы берём натуральный голос и форманты оставляем, то звук получается тоже больше похож на натуральный.
Как-то так.