Педаль и эхо в компьютерном пианино

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

  Звук пианино в совершенно пустой комнате необычайно красив, и феномен пустой комнаты ощущается слухом. Нажатую педаль наш слух также отметит, но ощущение от нажатой педали и ощущение от игры на пианино в пустой комнаты, это разные ощущения - наш слух легко отличает одно от другого.
  И вот теперь скажите, а как быть мне? Я синтезирую звук пианино численными методами, на компьютере, и у меня физически нет ни ящика пианино с его декой, ни пустой комнаты, ни педали.

  Да, для таких вещей, то есть для педали, и для акустического эха нужны отдельные и специальные методы, воспроизводящие эти явления численным путём. Это важная проблема, и каждый, кто синтезирует музыкальный звук, обязательно столкнётся с ней. В этой статье я рассказываю о собственном опыте, о том, как нажатие на педаль и эхо реализованы в программе «Пианола».

     КАК СОЗДАЁТСЯ ЭФФЕКТ НАЖАТОЙ ПЕДАЛИ
 
  Семплы звука появляются в звуковой записи не сразу, вначале они накапливаются в буфере, заполняя его снизу вверх,  и уже потом, при определённых условиях сбрасываются в файл http://proza.ru/2024/04/08/240
  Сбрасываются семплы в противоположном порядке – буфер начинает опустошаться снизу.
  Буфер обычного размера вмещает 96000 семплов, при скорости раздачи 32000 семпл/сек в него помещается 3 четвертных ноты длительностью 0.5 сек каждая. На иллюстрации показано, как в буфере расположились ноты CEGA длительностью 1/8, сыгранные подряд.   Слева – семплы, полученные без нажатия на педаль. По окончании ноты звук её обрывается, а если бы он не обрывался, то каждая нота звучала бы довольно долго, так, как это показано в средней части иллюстрации.

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

  Как долго идёт такая запись, определяется глубиной нажатия педали – если за значком @, включающим педаль, идёт цифра 9, то нажатие самое глубокое, и семплы после окончания ноты записываются в течении 1 сек – столько, сколько длятся две  четвертные ноты. Можно было бы сделать глубину записи и побольше, но пробы показали, что такая глубина не очень желательна, звук сильно засоряется, особенно, если исполняются аккорды. По этой же причине я отказался от многоступенчатого наложения звука, показанного на иллюстрации голубыми стрелками.
  При умеренно нажатой педали схема подсоединения звука предыдущей ноты работает так, как это показано красными стрелками – к семплом звучащей ноты в течении 0.25 секунд прибавляются семплы продолжения звука предыдущей ноты.
 
  Описанный алгоритм даёт хорошие результаты. Эффект педали при умеренном и глубоком её нажатии прекрасно слышен. При минимальной глубине нажатия @0 эффект педали не ощущается, но зато исполнение легато начинает полностью имитировать реальный фортепьянный звук – без этого компьютерный звук получается отрывистым, и его сразу можно отличить от натурального. 

     АЛГОРИТМ СОЗДАНИЯ ЭХО

  Эхо, или возвратный звук, придаёт основному звуку гулкость. Гулкость может быть разной – при большой и средней задержке возвратного звука мы ощутим гулкость концертного зала, при малой задержке ощутим присутствие резонирующего пространства инструмента.

  Реализуется эхо достаточно просто – на иллюстрации показан кольцевой буфер, или вращающийся барабан, в который, в разные точки удаления, записываются семплы звучащих нот (записываются в ослабленном виде и путём сложения с теми семплами, которые уже находятся в буфере). Барабан крутится, и в нижней его точке семплы прошлого звука считываются и прибавляются к семплам текущего звука.

  В этой же точке барабан очищается. Но может быть установлен такой режим, когда прошлый звук удаляется не полностью, а только уменьшает свою амплитуду, и тогда семплы начинают смешиваться, создавая эффект хорошо резонирующей полости инструмента или пустой комнаты, гулкость которой усиливается многократным отражением от стен.
   
  Массив с семплами эхо и обслуживающая его подпрограмма называются ревербератором. Ёмкость барабана ревербератора «Пианолы» - 4800 семплов плюс ещё 200 ячеек, в которых хранятся координаты точек заброса и коэффициенты ослабления амплитуд. Указанной ёмкости хватает, чтобы имитировать отражение от стен на расстоянии до 22.5 метра, то есть, ревербератор рассчитан на небольшой концертный зал.

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

  Затем начинается рутинная работа – если ревербератор включён, то каждый раз, после вычисления амплитуды семпла, делается рабочее обращение к ревербератору с указанием этой амплитуды, ревербератор возвращает амплитуду считанного эхо, и мы добавляем эхо к основному слышимому звуку. Эта строка программы записывается вот так:

AA = A: AA = AA + FNRR(AA, -1): A = AA: 'эхо

  Амплитуда A является обычным десятичным числом, а ревербератор работает с десятичными числами AA двойной точности, поэтому и понадобились дополнительные операции AA=A и A=AA.
  Опыт показывает, что гулкость, вносимая ревербератором, заметна только на звуках с богатым тембром, поэтому в звуке упрощённого ф-но, который озвучивает ноты в основном режиме работы «Пианолы», ревербератор не участвует.
  Использование ревербератора в программе «Трио» ранее обсуждалось тут http://proza.ru/2016/03/07/1229

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

__________
30.05.2024


Рецензии