Двухголосие в программе Пианола

Дмитрий Маштаков
   «Пианола» в своём принципе одноголосая программа. Её основная задача выверить мелодию нотной записи по счёту и затем создать партитуру. И уже программа «Трио», работая с партитурами, соединяет отдельные партии в многоголосие и дополняет мелодию аккордами.
   Тем не менее, и программа «Пианола» имеет неплохой фортепьянный звук и вполне годится как игрушка для создания не только одноголосий, но и простеньких мелодий с поддержкой вторым голосом.

   Тут идея очень простая – программа создаёт стереозапись с семплами, одинаково звучащими в правом и левом динамиках, но вовсе не обязательно записывать левые и правые семплы одновременно. Их можно записать поочерёдно – сначала для правого канала одни, а потом для левого канала другие. Вот и получилось двухголосие.
   Однако, как это сделать практически?

   Вычисленные семплы программа помещает в звуковой файл не по одиночке - дело в том, что прежде чем записать что-то в файл, параметры этой записи нужно настроить, поэтому запись семплов по одиночке, с настройкой для каждого, занимает много времени. Всегда делают по-другому - семплы для записи накапливаются в буфере, и когда буфер оказывается полным, то тогда его содержимое добавляется в звуковой файл.
   Буфер, предназначенный для этого, в программе «Пианола» имеет размер 96000. Столько чисел может быть записано в него. Амплитуды звука для левого и правого динамиков в буфер записываются парами.

   При принятой скорости раздачи 32000 семплов в секунду, содержимое буфера проигрывается за 1.5 сек, что по длительности соответствует трём четвертым нотам. Именно такими порциями в программе записываются звуки для создания двухголосия – сначала записывается 48000 семплов для правого динамика (они сохраняются в нечётных номерах буфера), а затем к ним дописываются семплы нот, предназначенных для левого динамика. Эти семплы записываются только в чётные номера массива.

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

   Помимо получения звуков, годящихся для простеньких мелодий или для звонка телефона, режим двоеголосия хорошо подходит для исследования сочетания звуков, воспроизводимых аккордами в различных системах настройки «Пианолы» - см. http://proza.ru/2024/03/21/1805
   Делается это так. Кликая нарисованную на экране клавишу, мы проигрываем её звуком фортепьяно. Затем кликаем правой кнопкой мыши по кнопке с надписью 1 /4. Программа переходит в режим двухголосия и кнопка окрашивается в зеленоватый цвет. Теперь начинаем кликать по клавишам других нот, и слышим не одиночный звук, а аккорды.
   Вы понимаете, как это сделано?
   После первого раза в буфере осталась запись звука нажатой ноты. А в дальнейшем, когда мы записывали туда новые звуки, то они записывались только на чётные позиции буфера. Поэтому, когда буфер сбрасывался в звуковой файл, мы слушаем двухголосие, совмещающее оба звука – в левом динамике новый звук, а в правом динамике старый звук.

   Как видите, вводить некоторые новшества в уже готовую программу можно достаточно легко. И нет предела творческому совершенству.

__________
29.03.2024