Как поддерживать постоянную громкость сэмпла в течение заданного времени после отпускания клавиши
Чтобы сэмпл продолжал звучать с постоянным уровнем в течение заданного времени после отпускания клавиши, задержите MIDI-сообщение Note Off и удерживайте огибающую амплитуды сэмплера на уровне сустейна. Пусть огибающая начинает спад только по истечении этой задержки. Увеличение обычного параметра Release вызывает затухание, а не ровный участок постоянного уровня. В некоторых инструментах есть отдельная функция удержания после отпускания клавиши, но значение параметра «Hold» зависит от инструмента. FabFilter One: генератор огибающей.
Это руководство предназначено для клавишника или продюсера, которому, например, нужно, чтобы сэмпл звучал с постоянным уровнем ещё две секунды после отпускания клавиши. Здесь объясняется, как найти нужный параметр, а также приводится полная реализация на Logic Pro Scripter для сэмплера без такой функции.
Что именно должно происходить после отпускания клавиши?
Прежде чем менять параметры, определите нужное поведение. Сэмпл должен звучать, пока клавиша нажата, сохранять достигнутый уровень в течение заданного времени после отпускания клавиши, а затем остановиться или начать коротко затухать. Отсчёт этого интервала должен начинаться при отпускании клавиши независимо от того, как долго вы до этого удерживали ноту.
Для примера с интервалом в две секунды, если отпустить клавишу на отметке 0,35 секунды, завершение должно начаться на отметке 2,35 секунды. Если отпустить её через три секунды, завершение должно начаться через пять секунд. Это примеры расчёта времени, а не результаты измерений. Параметр, при котором воспроизведение всегда заканчивается через две секунды после первоначального нажатия клавиши, решает другую задачу.
Также различайте постоянное усиление огибающей и постоянную воспринимаемую громкость. Ровная огибающая амплитуды сохраняет собственную динамику сэмпла. Если запись затухает, содержит тишину или заканчивается, удержание открытой огибающей не обеспечит непрерывное ровное звучание. Начните с записи с устойчивым уровнем или подходящего зацикливаемого фрагмента.
Почему параметры Release и Hold часто дают не тот результат?
В Logic Pro Sampler параметр Sustain задаёт уровень, который сохраняется, пока клавиша нажата. Release задаёт переход от этого уровня к нулю. Этап Hold огибающей AHDSR идёт после Attack и перед Decay; это не таймер, который запускается, когда вы отпускаете клавишу. ENV 1 управляет амплитудой. Эти определения объясняют, почему увеличение Release или начального этапа Hold не создаёт нужный ровный участок напрямую. Apple: использование огибающих Sampler.
Функция удержания после отпускания клавиши работает иначе. В документации FabFilter One сказано, что параметр Hold задаёт дополнительное время, в течение которого огибающая считает отпущенную клавишу всё ещё нажатой; затем начинается Release. Именно такое поведение нужно искать в руководстве. FabFilter One иллюстрирует смысл параметров, но приведённая ниже реализация воспроизведения сэмпла его не использует. FabFilter One: генератор огибающей.
Документация Ableton для Drum Sampler показывает, почему нужно проверять значения параметров. В режиме Trigger параметр Hold отсчитывается от пика атаки, при этом также описано продолжение воспроизведения после отпускания ноты. В режиме Gate после отпускания происходит затухание, а Hold отключён. Перед тем как считать значение Hold в режиме Trigger интервалом от момента отпускания клавиши, проверьте его работу. Ableton Live 12: Drum Sampler.
Какой способ выбрать?
| Доступное поведение | Практический выбор |
|---|---|
| В руководстве прямо указано, что интервал удержания начинается при отпускании клавиши | Используйте эту функцию и задайте постоянный уровень сустейна. |
| Hold начинается после Attack или воспроизведение длится фиксированное время с момента запуска | Задержите Note Off на интервал, отсчитываемый от момента отпускания клавиши. |
| Вы редактируете уже существующую MIDI-партию | Продлите каждую ноту на нужный интервал, затем задайте короткий релиз. |
| Исходная запись затухает или заканчивается слишком рано | Подготовьте запись с устойчивым уровнем или зацикливаемый фрагмент, прежде чем менять длительность ноты. |
Выбор основан на разделении двух функций: сэмплер формирует амплитуду, а время MIDI-ноты определяет, когда сэмплеру поступит команда начать релиз. Задержка только Note Off сохраняет исходный момент Note On. Если задержать оба сообщения, вся нота просто сдвинется на более позднее время.
Как подготовить сэмпл и огибающую в Logic Pro?
Создайте дорожку программного инструмента с Sampler и загрузите сэмпл. В документации Apple описано, как перетаскивать аудио в панель навигации Sampler, чтобы создавать назначенные зоны. На панели Zone можно настроить границы воспроизведения, точки зацикливания и перекрёстные переходы между циклами. Выберите достаточно стабильный фрагмент для продолжительного воспроизведения и послушайте несколько повторов. Apple: создание инструментов сэмплера в Sampler.
Для первого теста используйте один сэмпл с устойчивым уровнем в исходной тональности. Если он не зациклен, убедитесь, что его длительность превышает всё время теста: время удержания клавиши, дополнительный интервал удержания и завершение. Короткая запись не сможет поддерживать произвольно долгое нажатие клавиши.
В разделе Modulators выберите ENV 1 и тип AHDSR. Установите для Delay и Hold нулевые значения, задайте короткий Attack, максимальный Sustain и короткий Release. При максимальном Sustain параметр Decay не влияет на уровень. Эти настройки подходят для первичной диагностики; позднее можно увеличить Attack, если этого требует звучание. Apple: использование огибающих Sampler.
Как задержать Note Off на две секунды с помощью Scripter?
Добавьте Scripter в раздел MIDI FX дорожки перед сэмплером. Откройте редактор скриптов, замените существующий код полной программой ниже и нажмите Run Script. В документации Apple описан этот процесс редактирования и запуска. Apple: использование редактора скриптов Scripter.
Для работы программы нужна среда Logic Pro Scripter, в которой доступны классы MIDI-событий и методы планирования. Импорты и пути к аудиофайлам не нужны. На вход поступает обычная клавиатурная нота: сначала Note On, затем Note Off; также в качестве альтернативного представления Note Off обрабатывается Note On с нулевой velocity. Apple описывает эти типы событий и sendAfterMilliseconds(). Apple: использование объекта JavaScript Event.
// Complete Logic Pro Scripter program.
// Additional hold after physical key release, in milliseconds.
var HOLD_MS = 2000;
function HandleMIDI(event) {
if (event instanceof NoteOff) {
event.sendAfterMilliseconds(HOLD_MS);
} else if (event instanceof NoteOn && event.velocity === 0) {
var off = new NoteOff(event);
off.sendAfterMilliseconds(HOLD_MS);
} else {
event.send();
}
}
Замените HOLD_MS на другое неотрицательное значение, например 750 для трёх четвертей секунды. Скрипт отправляет Note On немедленно, а Note Off планирует на более позднее время. Остальные входящие сообщения проходят без изменений. Немедленная копия исходного Note Off не отправляется, поскольку она слишком рано дала бы сэмплеру команду начать релиз.
Ветви обработки событий проверены с помощью небольшого макета на JavaScript: Note On и события контроллера проходили немедленно, а оба варианта Note Off планировались на 2 000 миллисекунд позже. Это подтверждает логику маршрутизации, но не измеряет время аудио в Logic Pro и не проверяет звучание сэмплера на слух.
Как убедиться, что интервал начинается при отпускании клавиши?
Проведите этот тест при выключенном входе от педали сустейна и обходе аудиоэффектов. Проверяйте по одной ноте за раз, каждый раз дожидаясь завершения звучания, прежде чем повторять ту же высоту.
- Установите
HOLD_MSв значение2000и запустите скрипт. - Коротко нажмите клавишу. Убедитесь на слух, что звук сохраняет ровный уровень перед завершением.
- Удерживайте ту же клавишу около трёх секунд, затем отпустите её.
- Проверьте, что после отпускания звук продолжает звучать ещё примерно две секунды.
- Измените
HOLD_MSна500, снова запустите скрипт и повторите оба действия.
Для более точной проверки запишите выход сэмплера и сравните момент завершения с исходным концом MIDI-ноты. Если удерживать клавишу три секунды и добавить две секунды, релиз должен начаться примерно через пять секунд после Note On. Если вы добавите короткий релиз огибающей, звук окончательно стихнет позже, чем закончится ровный участок.
Например, при двухсекундном ровном участке и условном релизе длительностью 10 миллисекунд номинальная длительность завершения после отпускания клавиши составит 2,01 секунды. Решите, означает ли заданная длительность «время до начала затухания» или «время до полной тишины», и скорректируйте настройку соответственно.
Что проверить, если сэмпл затухает, останавливается раньше времени или некорректно запускается заново?
Если звук затухает во время заданного интервала, временно проверьте стабильный источник без дополнительной модуляции амплитуды и эффектов. Сравните звучание при нажатой клавише и после её отпускания. Если в обоих случаях звук затухает одинаково, проверьте запись или зацикливание, а не увеличивайте задержку MIDI.
Если воспроизведение заканчивается слишком рано, проверьте конечную точку сэмпла и настройки зацикливания. Если оно длится дольше ожидаемого, уменьшите Release сэмплера и проведите тест без хвостов эффектов. Меняйте по одному параметру за раз, чтобы отличать запланированное окончание ноты от звука, который продолжается после него.
Повторное проигрывание нот нужно проверять отдельно. Этот простой скрипт не отменяет запланированные Note Off и не присваивает каждому голосу уникальный идентификатор. Поэтому повторный запуск той же высоты на том же канале до прихода отложенного Note Off может вызвать нежелательное обрывание звука — в зависимости от обработки голосов инструментом. При использовании этой реализации дождитесь завершения ноты, прежде чем повторно проигрывать её; для быстрого повторения нот нужен процессор, умеющий управлять перекрытиями.
Когда тесты с коротким нажатием и длительным удержанием показывают одинаковый интервал после отпускания клавиши, сохраните настройку Scripter вместе с патчем инструмента. Используйте сэмпл с устойчивым уровнем, постоянный уровень огибающей и достаточно короткое завершение для нужного звучания. Благодаря этим трём условиям задержка Note Off обеспечивает удобное и предсказуемое удержание.
Источники
- Справочник Live Instrument — руководство Ableton Live версии 12
- Справка FabFilter One — генератор огибающей
- Использование огибающих Sampler в Logic Pro для Mac — служба поддержки Apple
- Создание инструментов сэмплера в Sampler в Logic Pro для Mac — служба поддержки Apple
- Использование редактора скриптов Scripter в Logic Pro для Mac — служба поддержки Apple
- Использование объекта JavaScript Event в Logic Pro для Mac — служба поддержки Apple
