Работа буфера в программе Пианола М
Работа в Пианоле организована по строкам и по слоям - в слоях, принадлежащих одной строке, записываются разные голоса. Это могут быть голоса одного инструмента, или голоса нескольких инструментов. Музыка каждого слоя записывается в буфер_М, а когда запись начального, нулевого слоя, будет закончена, то семплы буфера_М сбрасываются в буфер_В, и начинается запись следующего слоя.
Когда и этот слой будет записан, то его семплы тоже попадут в буфер_В, где они будут сложены с семплами нулевого слоя, а буфер_М будет очищен и подготовлен к следующей записи.
Таким образом, в буфере_В образуется слоёный пирог, составленный из звуков первой строки. За этим слоёным пирогом следует такая же слойка от второй строки, затем от третьей, и так, постепенно, большой буфер_В наполняется звуками (см.иллюстрацию).
Использование буфера даёт много преимуществ - звук в нём собирается по частям, и это удобно - можно сделать звук фортепьяно для правой руки на нулевом слое и прослушать его. Исправить, если этот звук чем-то не понравился. На следующем слое можно записать звук аккомпанемента, и тоже прослушать его отдельно. Затем перейти в режим соединения слоёв, и прослушать оба слоя вместе. Потом перейти к третьему слою.
Так, постепенно, двигаясь по слоям, мы записываем музыку первой строки, а потом переходим ко второй и третьей.
На иллюстрации показан порядок заполнения слоёв на примере исполнения первых четырёх строк прелюдии С.Рахманинова Соль мажор, опус 32 №5. Полученную музыкальную запись звучания этих строк можно прослушать тут - https://disk.yandex.ru/d/fFHoHcofNgUA0A а всё произведение целиком здесь - https://disk.yandex.ru/d/LYdTvwZujrX6Yw
Приступая к озвучиванию, прежде всего нужно определить число слоёв, которое мы будем использовать в своей работе. В прелюдии №5 мелодия ведётся правой рукой, а левая рука сопровождает её пятиолями, причём начальные ноты пятиолей удлинены - при исполнении пятиолей они удерживаются пальцем. Поэтому поместим эти удлинённые ноты в отдельный слой. Заодно и звучать они будут громче - с подходяшим акцентом: начало этих нот прозвучит громко, а дальнейший их звук будет притушен.
Итак, для озвучивания прелюдии №5 мы будем использовать три слоя.
Посмотрите на ноты первой строки, и на то, как они записаны символами на языке Пианолы, и как они распределены по слоям -
Q1H ~~ ~>^@3f(ze^d()!
Q1H1I P6@1rz5dgbgB.egbgB.zRP0 RR!
Q1H2I DEDE DEDE!
Мелодия в нулевом слое начинается после долгих пауз, и звучит она в самом конце строки, пятиоли исполняются между знаками z5 и z в стиле рубато и с использованием значков повторений r и R. Знак P6 создаёт крещендо, а знак P6 обрывает его. Педаль на пятиолях @1 в сравнении с педалью @3 первом слое менее глубокая, и, наконец, сопровождение слышится только из левого динамика (знак I задаёт его), а мелодия из обоих.
Осциллограммы звука, полученного от слоёв 0, 1 и 2 приведены на иллюстрации в масштабе, сопоставимом с большим буфером_В, и видно, в какую часть буфера этот звук записывается.
Большой буфер_В вмещает 1300000 семплов и рассчитан на 20 секунд звука (семплы следуют поочерёдно - один для левого динамика, второй для правого), он разделён чёрточками на 13 частей, по 10 тысяч семплов в каждой.
Буфер_М, в который поочерёдно записывается каждый слой, имеет длину на 32000 семплов меньшую. И это принципиально - после заполнения, буфер_В разгружается порциями по 32000 семплов в каждой (порции эти показаны на иллюстрации красными чёрточками) и когда дело доходит до 38-й части, то выясняется, что она заполнена семплами не полностью, а только на четверть, и тогда разгрузка буфера прекращается, незаполненная часть (в ней находится остаток из 8000 семплов) сдвигается в начало буфера, а всё, что находилось сверху, обнуляется.
Таким образом, буфер_В оказывается разгруженным - 37 порций семплов по 32000 в каждой, присоединились к нотной записи, а 38-я порция осталась в начале буфера. Семплы из буфера_М начнут записываться в буфер_В начиная с 8000-го семпла, а поскольку буфер_М меньше буфера_В, то для этой записи в буфере_В места заведомо хватит.
На иллюстрации видно, что слои строки 2 занимают больше места, звук от слоёв 2-й строки длится примерно так же как для строки 1, а из строки 4 записан только первый такт, и потому запись эта получилась короче. Осциллограмма нижней части иллюстрации показывает, как сложились семплы трёх слоёв от четырёх строк в буфере_В перед началом его разгрузки.
Для успешного программирования музыки в программе «Пианола_М» важно понимать, как устроены два буфера этой программы, для чего они нужны, и как они работают.
Использование буфера в работе со звуком даёт определённые преференции - не нужно спешить, в нужных местах программа может работать долго и по более сложным алгоритмам, а следовательно и конечный результат может быть более качественным. В среднем, исполнение одной строки составляет 5 секунд, а вычисление звука и заполнение буфера семплами требует времени вдвое меньшего. Задержка в две с половиной секунды между началом вычислений и появлением звука, неприемлемая онлайн, для практических исполнительских целей вполне допустима. Программа «Пианола_М» для создания музыки в форме музыкальных записей прекрасно подходит, она подойдёт и для всякого рода аранжировок, хотя композиторам, конечно, требуется звук онлайн.
__________
23.02.2026
Свидетельство о публикации №126022305316