Взаимодействие блоков в программе Пианола М

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

  Уголочек окна программы показывает, что будут исполняться два слоя музыки, нулевой и первый (на это указывает цифра 1), и звуки с обоих слоёв будут накладываться друг на друга (на это указывает серая кнопка с надписью ===). Кнопка «play» запускает этот процесс.
  Блок <play> организует чередование строк и слоёв, вызывая строки из памяти в рабочую строку (эта строка видна в окне программы), и передавая действия интерпретатору нотной строки.

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

  В свою очередь, блок озвучивания, получая ноты, читает флаги, указывающие на арпеджиато, и не воспроизводит звуки нот последовательно, а накладывает их друг на друга. Аналогично он поступает и с нотами аккордов - если такие встречаются в нотном тексте, то тогда интерпретатор тоже вывешивает особые флаги.

  Чтобы сделать паузу, особого флага блоку озвучивания не нужно, по тому признаку, что ему передаётся параметр F=0 он поймёт, что ему передаётся не нота, а пауза, а вот если F это частота, то тогда изготовление звука идёт по цепочке дальше – блок озвучивания обращается с этим параметром к блоку <звук ф-но> и получает обратно ноль. Однако блок озвучивания настойчив, он обращается туда же ещё много раз (уже не с параметром F, а с параметром ноль), столько раз, сколько семплов длится звук (скорость раздачи семплов 32000 в секунду, поэтому обращений будет много) и получает в ответ уже не ноль, а амплитуду вычисленного звука фортепьяно.

  Если же в нотной строке появляется знак Q7, назначающий музыканта с инструментом №7, то интерпретатор выставляет особый флаг с номером, равным номеру этого инструмента, и тогда блок <звук ф-но>, прочтя этот флаг, не будет делать звук самостоятельно, а передаст получаемые параметры и право на создание звука блоку под названием <сценарии>.

  В блоке сценариев, в зависимости от флага назначенного инструмента, выполняется тот или иной сценарий создания звука. Выполняется точно так же – при получении параметра F>0 в сценарии выполняется верхняя, подготовительная его часть, и при выполнении этой части учитывается состояние многих флагов, управляющих звуком. Например, флаг о2 может сделать звук струны более коротким, а флаг о3=1 удлинит его. Флаг о1=1 введёт обертоны с характерны звуком гитарной струны.
  Как исполнение со сценарием №7 звучит, можно прослушать по этой ссылке https://disk.yandex.ru/d/3puHbsVtQgxIFg
  После того как выполнена верхняя часть сценария, и во все следующие разы, выполняется нижняя часть сценария, имеющая отрицательный номер. В этой части выполняется девиация параметров – параметры звука от периода к периоду меняются, и потому звук получается не монотонным, а естественным.   

  Сценарий №1 создаёт звук фортепьяно, но этот звук отличен по своему тембру от штатного звука блока <звук ф-но>. В свою очередь, флаг о1=1 для сценария №1 организует фортепьяно с тембром, похожим на тембр клавесина. У блока сценариев есть масса возможностей, для управления звуком с помощью флагов.
  Аналогичные возможности есть и у блока <озвучивание>. В нём, например, можно менять профиль звука, делая его более ярким и звонким, или укорачивать и притуплять его. Или включать и отключать педаль и менять глубину педалирования. И это – помимо и в добавление к тем возможностям, которые предоставляются сценариями.

  Таким образом, мы видим, что программа «Пианола_М», благодаря разветвлённой схеме блоков, имеет уникальные возможности для создания звуковых записей выразительных и вполне конкурентно способных.
  Блоки, используемые Пианолой, неравноценны по своему размеру и по своей структуре. Размер интерпретатора строки по числу слов превосходит текст этой статьи в 10 раз, а размер исполняемой части в блоке сценариев небольшой – по количеству слов он соответствует этому абзацу. Однако львиная доля времени приходится на исполнение сценария, поскольку каждая нота интерпретатором читается один раз, и этот каждый один раз сопровождается восемью тысячными обращениями к сценарию для вычисления семплов этой ноты.

  Создаваемые Пианолой_М звуки накапливаются в большом буфере, который автоматически опустошается при его заполнении. Начальный старт всему процессу даёт блок <play>, обращаясь к блоку озвучивания с параметром F=-1. Он же и оканчивает процесс, аналогичным обращением с F=-2.
  В программе имеется возможность не только проигрывать музыкальное произведение целиком, но и проигрывать одну выбранную строку, или сначала предыдущую, а потом – выбранную, или от начала до выбранной, или от указанной специально, и до выбранной. Такие вариации позволяют легко править музыку, тут же прослушивая результат сделанных изменений.
  Скачать программу Пианола_М можно здесь https://disk.yandex.ru/d/5v4Bd5b3et_u5g
  Файл с нотной записью Сарабанды находится тут https://disk.yandex.ru/d/pzibmS3D1bPo4Q

__________
12.08.2024


Рецензии