По-периодный метод синтеза музыкального звука

  Метод основан на представлении о звуке, как о колебании, имеющем определённую тональность, или частоту Fs, и соответственно, достаточно чёткую периодическую структуру с периодом повторения TT=1/Fs.
  Уже само это представление создаёт некие разграничения и неопределённости.
  Прежде всего, звуки разделяются на те, которым периодичность может быть приписана, и те, которые явно наблюдаемой периодичности лишены. Назовём, имеющие периодичность звуки, - простыми звуками. А все другие - сложными.
  Сложные звуки могут быть составлены (сложены) из простых. Например, сложный звук - аккорд, складывается из нескольких простых звуков. И тут же мы замечаем, что это высказывание не вполне определённо. И в самом деле, звук отдельной ноты в аккорде, взятом на рояле, является сложным - особенно в начальной фазе своего развития, поскольку обертоны уводят звук от чёткой периодичности.
  Но тем не менее.

  Тем не менее, наш метод будет основываться на строгой периодичности звука. Более того, мы потребуем, чтобы в начале и в конце каждого периода амплитуда звука была близка к нулю. Именно такой звук мы будем синтезировать.

  Колебания формы синус или косинус являются простыми* звуками. Любой звук, и простой и сложный, можно представить суммой синусов с подходящими фазами.
  Однако просто синусы мы будем добавлять в звук только в качестве обертонов. А простой звук будем синтезировать по другим формулам, сразу делая его похожим на звук того или иного музыкального инструмента.
  Что даёт такой подход?
  Такой подход даёт колоссальную экономию вычислительных ресурсов - нам не нужно складывать множество синусоид для создания звукового колебания нужной формы. Подходящую форму мы получаем сразу.
  Нам не нужно изменять амплитуду синусоид непонятно каким образом, для того, чтобы получить нужную нам вариацию формы звука. Мы закладываем в наши формулы такие параметры, изменение которых непосредственно приводит к нужному изменению формы звукового колебания. Точно таким образом можно предусмотреть и желаемые тембровые изменения звука.
__________
*) В процессе развития описываемого метода появились некоторые термины, значения этих терминов объясняются вот здесь - http://www.proza.ru/2017/02/14/108

  Скажу, что для меня является большой загадкой то, что никто не синтезирует музыкальный звук таким, казалось бы самым естественным образом **. Нет, все предпочитают возиться со множеством синусоид, сочетая их аддитивным, субтрактивным или частотно-модуляционным методом. Вы можете почитать об этих и других методах здесь -
http://dialog-nn.narod.ru/24r.html
  Мне кажется, что эти методы, описываемые в интернете, ориентированы на старый способ создания звука с помощью электронных аналоговых устройств. И в самом деле, что может быть проще генератора синусоидальных колебаний, или мультивибратора, генерирующего пилу или меандр. Но ведь цифра ушла далеко вперёд, и зачем с помощью цифры воспроизводить простейший аналоговый сигнал, когда можно создать сигнал сразу нужной формы? И взять в качестве этой формы форму естественного звука музыкального инструмента.
____
**) Как я недавно узнал, фирма Roland, выпускающая цифровые пианино, по-видимому, использует тот подход, о котором здесь говорится. Они называют это "технология SuperNATURAL". Но подробного описания метода в интернете я не нашёл.

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


   СИНТЕЗ ЗВУКА ФОРТЕПЬЯНО

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

  Итак, звук фортепьяно. Изобразим его внутри периода в форме синусоиды (аппроксимировав её параболами) - горбик вверх, горбик вниз. Возведём полученное в куб, и часть результата прибавим к нашим горбикам - тем самым мы немного обостряем форму колебания. Насколько обостряем? Ну, для этого введём параметр EA, который можно изменять. Для частот второй октавы и выше обострять синусоиду не обязательно, она и так звучит звонко. Кроме того, к концу звука острота колебаний уменьшается. А вот для частот более низких, как оказалось, вершинку синусоиды можно не обострять, а проминать, и проминать значительно. Звук фортепьяно становится от этого сочным.
  Но особую звонкость придаёт звуку периодическое смещение вправо-влево точки перехода от плюса к минусу в середине периода. В формулах такое смещение легко делается, и для него мы тоже вводим соответствующий параметр. С такой же лёгкостью вводим ещё пару параметров - делая асимметричными положительный и отрицательный горбики нашего колебания.
  И всё готово. Задаём наши параметры так, чтобы форма получаемого звука соответствовала реальной, а в промежутках между периодами придаём нашим параметрам некие колебательные движения, и синтезированный звук начинает звучать очень натурально.
  Все эти действия изображаются в некой алгоритмической записи. На языке Турбо Бейсик эта запись, называемая сценарием развития звука, выглядит так -

  CASE 8 'f-no 2  tembr => UDa=0  UDc=0  Ar=0  UEA=0 -2
    MU1=0 : AU1=1.5 : IF UD3a>0 THEN DU1=UD3a ELSE DU1=3.995
    V=INT(DU1) : DU1=DU1-V : IF UEA3=0 THEN UEA3=.3
    DU1=1-(1-DU1)*260/FS : DU3=1-(1-DU1)*2 : DU1=V+DU1
    MU3=0 : AU3=5 : IF UD3c>0 THEN DU3=UD3c
  IF FS>260 THEN AU3=AU3*260/FS
    IF ARE3=1 THEN AU1=AU1*2
    IF ARE3=0 THEN A33r$="7550604565304035"
    IF ARE3=0 THEN A32r$="6560505555403045"
    IF ARE3=0 THEN A31r$="5560605545404045"
  Apm$="505050707050505560657035504744433857" : Dpm=.98
     R(0)=0 : V=FNR1(0,1006.4) : V=FNR1(0,2006.4) : V=FNR1(30,-9)

  CASE -8 : E0=1.25*(1+.2*FNTIM(4,T)) : EA=UEA3*(1+.2*FNTIM(8,T))
       E1=1.3*(1+.2*FNTIM(10,T)) : E2=1.3*(1+.2*FNTIM(7,T))
    V=(FNTIM(9,T)+FNTIM(13,T))/3 : Arr$=FNRE$(AU3/2-1+V,3)

кроме сказанного, в сценарии есть ещё масса всего, но основное - это параметры с начальной буквой E, в нижней части сценария - те самые, о которых мы говорили. Функция FNTIM(,) - периодическая функция от заданной частоты и времени T (форма функции - треугольник). Как мы видим, все эти параметры изменяются с разными частотами - не синхронно, и это придаёт звуку естественность звучания.
_______
клип о синтезе звука ф-но смотрим тут - http://youtu.be/RF_JHuuOqck
 

   О СЦЕНАРИЯХ И ОБ ИЗМЕНЕНИИ ПАРАМЕТРОВ МЕЖДУ ПЕРИОДАМИ

  Сценарий развития звука фортепьяно состоит из двух частей - CASE 8 и CASE -8.
  При первом обращении к звуковой функции, содержащей этот сценарий, выполняются начальные установки, например, запоминается частота, определяется период звукового колебания, время устанавливается в ноль, а все параметры всех сценариев устанавливаются в значения, принимаемые по умолчанию ( в частности, устанавливаются в ноль все амплитуды - AU1, AU2, AU3, AU5, AU6, AU7 и AU8).
 
  Потом выполняются обе части сценария, сначала CASE 8, а затем CASE -8.
  Как можно видеть, после выполнения CASE 8 появляются ненулевые значения амплитуд - AU1=1.5 и AU3=5. Эти амплитуды будут достигаться не сразу, а за несколько периодов звукового колебания, а затем они будут постепенно уменьшаться - в соответствии с диссипативными факторами DU1 и DU3.
  Никаких амплитудных вибрато звука не будет, поскольку модуляционные параметры MU1 и MU3 задаются в сценарии равными нулю. Этого, кстати, можно было бы и не делать, поскольку равными нулю они задаются по умолчанию.
 
  Нас, однако, более интересуют параметры AU1 и DU1 - именно они ведут характерный и сравнительно долго звучащий звук фортепьяно, тогда как группа параметров AU3 и DU3 создаёт обертонное дополнение к этому звуку, звучащее только в начале развития звука. Но зато амплитуда этих обертонов, посмотрите, равна 5.
  Поэтому вначале обертоны звучат на фоне звука фортепьяно, а затем - фортепьяно, на фоне звука затухающих обертонов. Подобные метаморфозы характерны для реального звука ф-но.

  При повторных обращениях к звуковой функции программа в сценарии не заходит, а только быстро выполняет вычисления. Но каждый раз, когда текущий период по времени заканчивается, программа заглядывает в раздел CASE -8 и выполняет действия заданные в нём.
  А что за действия там указаны? Там задаются параметры E0, E1 и E2, обеспечивающие некоторую среднюю асимметрию форме колебания с медленно протекающей, и разнопериодической девиацией вокруг средних значений. В результате девиации слышимый звук воспринимается, как "живой".
  Подобная естественность живого звучания очень легко достигается в описываемом методе. Но вы попробуйте достичь подобного в аддитивном, субтрактивном или частотно-модуляционном методах – замучаетесь. Звуки, получаемые этими методами изначально являются мертворождёнными, и как их оживить? Думаю, что никак. Вот аналоговый синтез – совсем другое дело, он имеет дело с физически воспроизводимыми периодами звукового колебания, и девиация формы колебания внутри периода совершенно для него естественна.

  В разделе CASE -8 интересна последняя строка. По мере того, как звук развивается, эта строка обеспечивает постепенное изменение его обертонного состава. Как это делается - об этом мы сейчас поговорим.

  Хочу немного сказать о так называемом "стиле программирования". Как видите, сценарий записан очень плотно и компактно. Он напоминает собой некую таблицу, задающую все параметры звука того или иного инструмента. Он также устанавливает динамическую связь между некоторыми параметрами, если такая связь нужна.
  И, казалось бы естественно использовать специальную форму, или таблицу для этой цели. Но зачем огород городить? Конструкции языка Бейсик прекрасно этого для подходят.
  Хотя понятно, что программисты привыкли к другому стилю записи текста программы. Им более нравится разреженная запись, с "лесенкой", как у Маяковского. Однако для сценария специфически плотная запись более уместна. 


   РАЗДЕЛЕНИЕ ПАРАМЕТРОВ НА ГРУППЫ

  Мы познакомились с первой группой параметров, называемых группой фортепьяно, - это модуляционный параметр MU1, амплитудный параметр AU1 и диссипативный параметр DU1. А также со вспомогательными параметрами, обслуживающими эту группу, - EA, E0, E1 и E2. Еще в группе может быть использован параметр Eo. Он создаёт резкую асимметрию колебания, разрезая его косой чертой - эта форма очень хороша для создания красивого рояльного баса. В этом плане сценарий, приведённый выше, может быть дополнен.

  Сценарии, хотя они и обдумываются хорошо, не являются чем-то законченным, они могут быть усовершенствованы или преобразованы, иногда очень неожиданным образом.
  Так, мы говорили о небольшом обострении синусоиды с помощью параметра EA, немного превышающего для этого значение 1. Но возьмём вместо EA=1.2 значение EA=-2, и тогда получим на месте обострения вершины глубокий спад, пересекающий нулевую линию. В результате вместо звука фортепьяно мы (не догадаетесь) услышим звук горна! Очень естественный и живой звук, он будет звенеть в такт изменяющимся E0, E1 и E2. Его можно ещё и украсить, добавив амплитудное вибрато.

  Так что группа параметров, основанная на деформации синусоиды и названная нами группой фортепьяно, на самом деле весьма обща. При соответствующем подборе параметров она годится и для имитации звука гитарной струны, и для имитации звука певческого голоса.
  Однако обычно группа параметров в синтезе не работает в одиночестве. Обычно она поддерживается ещё одной, или несколькими группами.
  Всего таких групп в настоящее время три плюс одна. Первая - группа фортепьяно, вторая - группа Виолы, третья - группа рельефа. Четвёртой группы пока нет, она в резерве. Отдельной, дополнительной группой является группа из 4-х обертонов (с номерами параметров 5,6,7 и 8). Каждая из перечисленных групп использует свой собственный оригинальный метод создания звука, и, соответственно, опирается на свои собственные формулы и алгоритмы вычисления.
  Охарактеризуем эти методы так -
1. метод деформации синусоиды
2. метод пичковой структуры
3. метод заданной формы
4. метод добавления колебаний
  Ко всему можно добавить и ревербератор, могущий создавать как эхо, так и пичковую структуру, и одновременно, и в зависимости от своей настройки.

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


   ГРУППА РЕЛЬЕФА

  В том сценарии, который мы рассмотрели, группа Виолы и группа обертонов не задействованы, но активно используется группа рельефа.
 
  Группа рельефа представлена в программе теми же однотипными параметрами - MU3, AU3 и DU3, а также строкой Arr$, задающей рельеф. В строке Arr$ рельеф звука задан в сжатом мнемоническом виде, по ходу прохождения периода амплитуды извлекаются из этой строки сплайн интерполяцией.
  Разумеется, рельеф внутри строки должен меняться. И в нашем сценарии в промежутках между периодами мы используем особую технику, обновляя содержимое строки Arr$. Технику для этого можно придумать какую угодно, главное, чтобы рельеф, содержащийся в строке, изменялся не резко, а плавно. Линейная интерполяция между двумя строками вполне подойдёт - пусть рельеф одной строки плавно перетекает в рельеф другой. И пусть это движение не будет прямолинейным, пусть в движении будут ускорения, замедления и даже возвраты обратно. Звук от этого становится более естественным.

  В нашем сценарии для изменения рельефа используются три строки - A33r$, A32$ и A31r$, а сам процесс изменения рельефа при плавном переходе от одной строки к другой называется методом ротации строк.
  Посмотрим, как ротируются строки в нижней части сценария звука фортепьяно -
 
    V=(FNTIM(9,T)+FNTIM(13,T))/3 : Arr$=FNRE$(AU3/2-1+V,3)

  Первый оператор задаёт некую сложную периодическую функцию от времени с максимальной амплитудой 2/3, которая будет обеспечивать девиацию. Сложность, а не просто периодичность этой функции нужна, чтобы исключить потенциальную возможность услышать девиацию как вибрато.
  Второй оператор обращается к ротирующей функции FNRE$, которая, в соответствии с первым своим параметром AU3/2-1+V создаёт строку из двух ближайших строк из совокупности A33r$, A32$ и A31r$. Что это значит?

  В момент начала звука (T=0, V=0, AU3=5) первый параметр ротирующей функции равен 5/2-1+0=1.5. Затем, поскольку амплитуда AU3 всё время уменьшается, этот параметр сползёт к среднему значению -1 с девиацией 2/3 вокруг этого значения.
  Функция ротации FNRE$ устроена таким образом, что при первом параметре равным 1 она создаёт строку по образцу первой строки (A33r$), если параметр равен 0, то за образец берётся вторая строка, если параметр равен -1, то за образец для построения рельефа берётся последняя строка. Для промежуточных значений параметра путём линейной интерполяции берутся промежуточные значения рельефа этих строк.
 Осталось сказать, что рельеф первой строки представляет собой обертоны 2, 3, и 4, рельеф второй - 2 и 3, а рельеф последней - только второй обертон. Таким образом, по мере развития звука меняется его обертонный состав. Для обертонного наполнения строк может быть использована специальная техника, она описана здесь - http://www.proza.ru/2016/04/25/1646
И строки могут быть использованы не только те, которые заданы в сценарии. Строки рельефа могут быть заданы извне. Но принцип, установленный сценарием при этом сохраняется - по мере угасания амплитуды AU3, описывающей громкость обертонов, постепенно будет изменяться и обертонный состав звука.

  Как видите, техники очень простые. Но эффективные и приближенные к реальности, ими нетрудно управлять.
  Не только для обертонов, годится группа рельефа.
  С помощью группы рельефа может быть организован мощный   метод, напоминающей семплирование. Только мы будем использовать не семплы, а реплики - сжатые копии одного периода реального звука, снятые, например, в начале, середине и в конце его развития. Техника снятия реплик описана тут - http://www.proza.ru/2016/07/12/1182

  Ничто не мешает несколько переделать программу ТРИО и использовать в ротации не 3 строки рельефа, а, скажем, 7. И соответствующие сценарии можно написать. И звуки многих инструментов могут быть в этих сценариях представлены во всех подробностях своего развития.
 Но мне не хотелось бы развивать проект столь односторонне. Я считаю, что все его части должны быть гармонично согласованы.
  Группа Виолы, например, опять же - при поддержке группы рельефа, прекрасно справляется со звуками смычковых инструментов. Об алгоритмах и сценариях группы Виолы подробно написано тут - http://www.proza.ru/2016/11/10/1515
   

   ОСОБЫЕ ТЕХНИКИ
 
  Кроме использования трёх основных групп и группы обертонов, в синтезе звука могут использоваться некоторые общие техники, включённые своими алгоритмами в текст программы.
  Это
техника создания аккордов - http://www.proza.ru/2016/03/28/350
техника работы с ревербератором - http://www.proza.ru/2016/03/07/1229
  а также мелкие и просто реализуемые
фильтр для компенсации постоянной составляющей сигнала, преобразующий амплитуду по следующему алгоритму - A=A+AK : AK=AK-(1-DK1)*A

и метод "тяни в плюс, толкай в минус" - тянущий вверх положительные части колебания в одних периодах, и толкающий вниз отрицательные части колебания в других периодах, в соответствии с содержимом строки Apm$. Эту строку, создающую призвук удара молоточка о струну, можно видеть в сценарии звука фортепьяно.
      

   ОСОБЕННОСТИ ОБЕРТОНОВ В ПО-ПЕРИОДНОМ СИНТЕЗЕ

  По-периодный подход к синтезу музыкального звука, как оказалось, приводит к несколько расширенному взгляду на те звуковые образования, которые называются обертонами - http://www.proza.ru/2015/11/22/1341

  Наряду с обычными обертонами, не меняющими своей фазы с момента появления звука, обертонная группа может создавать "обновляемые" обертоны - обертоны, обновляющие свою фазу в начале каждого периода, и начинающие в каждом новом периоде звучать как бы заново.
  Возникает и класс звуковых образований, которые можно называть "неполными" обертонами - обертоны, имеющие в каждом периоде регулярные пропуски в своих колебаниях. Вплоть до того, что один обертон может быть представлен единственным пичком в одном полупериоде звука, а другой обертон - парой колебаний в другом полупериоде звука. Оказалось, что на такой структуре может быть успешно построен звук аккордеона - http://www.proza.ru/2015/05/13/876

  Некоторые из обновляемых обертонов входят в класс звуков, которые можно назвать "квазиобертонами". Что это такое?
  Представьте, что в начале периода "задудел" вполне гармоничный и имеющий определённую частоту обертон. В конце периода звук обертона сошёл на нет, а с началом нового периода точно такой же звук возобновился.
  Возобновился-то он возобновился, но оказался точно в противофазе тому звуку, который звучал в предыдущем периоде. Что мы услышим? И услышим ли? Ведь член Фурье разложения на частоте нашего обертона, как легко догадаться, отсутствует.
  Оказалось, что с помощью этих высокочастотных квазиобертонов, прекрасно воспроизводятся звуки низкой частоты - http://www.proza.ru/2016/06/25/394
Тот факт, что низкий звук слышен благодаря обертонам, - известен. Но квазиобертоны демонстрируют его с очевидностью.
  Также очевидно и то, что квазиобертоны могут успешно применяться в синтезе низкого музыкального звука.
               

   НЕКОТОРЫЕ ВЫВОДЫ

  Всё сказанное, а также результаты, которые можно прослушать по этой ссылке -
     http://yadi.sk/d/poMxlrBuxendv
убеждают в том, что по-периодный метод синтеза музыкального звука является весьма перспективным.

  Перспективен метод не только в практическом, но и в исследовательском плане, поскольку он позволяет исследовать звук, не только наблюдая за ним, но и экспериментируя с ним.

  По-периодный подход к синтезу музыкального звука обнаруживает новый класс, не исследованных обертонных образований - возобновляемые обертоны, неполные обертоны и квазиобертоны.
  Эти звуковые образования, по видимому, имеют существенное значение и присутствуют в реальном звуке. И в самом деле - реальный звук духовых, скрипки или аккордеона не имеет совершенной непрерывности, а возобновляется в каждом периоде. Для духовых, например, возобновление звука подстёгивается отрывом воздушной струи от трости, а для смычковых - отрывом струны от смычка. Звук аккордеона распадается на полупериоды, поскольку движения язычка происходят в асимметричных условиях - попеременно, по струе, идущей из щели, и навстречу этой струе - http://www.proza.ru/2015/05/13/876

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

  Метод позволяет, используя ограниченный круг простых алгоритмов, достичь большого разнообразия в получаемом звуке. Чтобы перейти от звука одного музыкального инструмента к звуку другого, достаточно поменять сценарий.

  Девиация параметров в ходе по-периодного синтеза музыкального звука позволяет достичь естественного "живого" звучания.

  Вместе с тем метод исключительно прост в своей реализации. Уже тот факт, что все алгоритмы успешно реализованы в простейшей среде программирования - Турбо Бейсик, говорит об этом.

  Можно сказать и о том, что метод реализован с помощью хорошо продуманной мнемоники, использующей, в частности, общепринятые нотные обозначения. А нотные записи и партитуры находятся в обычных текстовых файлах, которые легко читать и править, используя Блокнотик.
  На рисунке к этой статье Вы можете видеть ноты пьесы Шумана для альта и фортепьяно, в синем окне программы Пианола - строка нот фортепьяно (правая рука), а в окне программы Блокнотик видна часть партитуры - текстовый файл, по которому программа ТРИО делает озвучивание музыкального произведения.
  В этом файле указываются частоты F, длительности звучания нот T1, длительности посленотных пауз T2 и длительности обычных пауз L=. Также можно видеть назначения аккордов G=/ c указанием на интервалы между звуками аккорда.


   ВЫ МОЖЕТЕ ПОПРОБОВАТЬ ДЕЛАТЬ ЭТО САМИ

  В папке по этому адресу - http://yadi.sk/d/zv-WYZdC328cGV ***
находится программа ПИАНОЛА и её описание, а для любопытных там же находится её исходник (два файла). И ещё там находится программа озвучивания партитур ТРИО, представленная коротенькими файлами с расширением bas, для случая создания моно записи. стерео записи, или стерео-микс. В файлах с расширением ink находятся подключаемые блоки - тело и функции программы Трио.

  В этой же папке находятся нотные записи и партитуры первого фрагмента ноктюрна №20 Шопена, левая и правая рука фортепьяно. Вы можете использовать эти записи, если будете пробовать работать с Пианолой. Вы можете также попробовать озвучить партитуры с помощью программы T_lp.bas
  Все эти файлы содержат обычный текст, и их можно рассмотреть с помощью программы Блокнотик. В этой же папке находится и Турбо Бейсик.
Остальные подробности можно найти в статьях на этой страничке. Статьи находятся также по этому адресу - http://yadi.sk/d/MxeUfs3XtKA8p
и Вы можете их оттуда скачать.
__________
***  В настоящее время все программы переведены в более современную среду. С ними Вы можете познакомиться в разделе "Синтез музыкального звука в Визуал Бейсике" на этой страничке.
Исходники программы Пианола здесь - http://yadi.sk/d/O99BeORs3NG4z5
Исходники программы ТРИО тут - http://yadi.sk/d/4YB1q5Hj3NLAn4

  Как ноты выглядят в нотной записи в окне программы Пианола, и как выглядит этот же фрагмент в партитуре для правой руки фортепьяно - можно рассмотреть на рисунке к этой статье.
========


Рецензии
Тихий ужас!Нет,я не говорю, что написанное вами - чушь...
Прежде всего, такая хвалёная вами реалистичность синтезируемого звука в реальности не наблюдается. Более того, она сильно проигрывает практически всем традиционным методам синтеза, начиная с субтрактивного и заканчивая FM.
При этом, на слух звук не подобрать у вас. Надо, простите, "долбаться" и как-то исследовать оригинал. Какие параметры и как из него вычленять - не очень понятно.
Но самая "песня" - подача вашего материала. Я понимаю, "Проза" не позволяет иллюстрировать тексты, а свидетельство о публикации вам нужно. Ну сделайте параллельный текст с иллюстрациями в pdf и дайте тут на него ссылку, как вы активно ссылаетесь на Яндекс диск. Нарисуйте графики, обозначьте на них параметры.

Стиль программирования - ещё одна "песня". Обозначения переменных и комментарии в программе - дилетантизм первостатейный. В ваших простых в общем-то исходниках копаться - себе дороже.
Вы и вправду решили явить свой метод синтеза миру?
Комментировать партитуры и пр. просто лениво. В самом таком подходе нет ничего худого. Я сам активно пишу консольные программы и скрипты с параметрами в виде текстовых файлов. Но это научные программы - решить задачку и побыстрей. Никто другой моими программами пользоваться не будет.

Вообще, складывается впечатление о том, что вынырнул автор из тайги, где был заперт лет 5 наедине с древним компьютером и теперь жаждет явить миру плоды своих довольно дилетантских изысканий.
И ведь есть у него понимание и знания каких-то фундаментальных основ, но нет представлений о колоссальном мировом опыте в синтезе звука. Опыте, прежде всего, практическом.
Нет понимания о том, что в остальном мире отнюдь не дураки занимаются синтезом звука. Что те же инженеры и программисты Yamaha, занимаясь FM-синтезом, помимо науки имеют богатый опыт работы с теми, кто музыку создаёт. Реально. Каждый день.

P.S. Вы хоть бы в Интернете поинтересовались как пишется название инструмента ФортепИано.

Инженер Филиппов   31.07.2018 14:43     Заявить о нарушении
Я делаю то, что умею, и так, как мне проще. И это естественно.
Если Вы знаете о мировом опыте синтеза скрипичного звука, то расскажите мне что-нибудь о нём. Не говорите общие слова. Дайте конкретную ссылку.
То же касается и звука аккордеона.

Есть программные проигрыватели МИДИ файлов. Звук, получаемый с их помощью Вас удовлетворяет? Меня - нет. Следовательно, проблема существует.
Кроме того сам подход меня не радует. У меня нет синтезатора, и я не собираюсь его покупать. Но вот я нашёл ноты, написанные когда-то и кем-то, и совершенно спокойно озвучил их на компьютере.

Также меня не радует подбор звука на слух, практикуемый в аддитивном синтезе. Звук конкретного музыкального инструмента нужно действительно самым подробным образом изучать, а не двигать рычажки с надеждой на то, что вдруг что-то получится. В интернете полно видео, на которых показывается, как синтезированный звук получают. И если Вы скажите, что этот звук нормальный, то я в ответ скажу, что Вам, простите, медведь на ухо наступил.
Хотя для попсы или рока подобные звуки годятся.

Дмитрий Маштаков   31.07.2018 16:44   Заявить о нарушении
Поинтересовался в интернете, как пишется слово "фортепьяно" и вот что обнаружил -
//Правильно пишется: фортепьяно
Однако вариант «фортепиано» писать предпочтительнее. «Фортепиано» это слово, заимствованное из итальянского языка, от «fortepiano», что дословно переводится как forte — «громко» и piano — «тихо».//

Следовательно, Вы можете писать "как предпочтительно", а я буду писать "как правильно". И мы оба будем правы. ))

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

Да, программу можно существенно подсократить, но работать над её развитием будет в этом случае значительно труднее. А если программа уже откомпилирована, то какая разница, что собой представляет её текст. Главное, чтобы в итоге с программами работать было удобно.

Дмитрий Маштаков   31.07.2018 18:11   Заявить о нарушении
Сделаю ещё одно замечание.
Выражение //Надо, простите, "долбаться" и как-то исследовать оригинал. // наводит на мысль о школьнике, открывшем учебник высшей математике, и удивляющемся тому, что там вовсе не те простые формулы, и несколько другая логика, чем та, к которой он привык.
Да, чтобы понять высшую математику нужно действительно "долбаться". А как же ещё?
И почему нужно думать, что музыкальный звук прост. Он действительно реально сложен. И изучать его нужно с таким же вниманием, с каким мы относимся ко всякому новому знанию.

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

Дмитрий Маштаков   31.07.2018 20:28   Заявить о нарушении
И, наконец, о "подаче материала". Исследование с одновременной публикацией статей, по мере появления новых результатов - обычная практика научной работы. По мере продвижения исследования, некоторые статьи устаревают, результаты, о которых в них сообщается, уточняются, обобщаются, и пишутся новые статьи обзорного плана. И это тоже самая обычная практика.
Где публиковать? Ясно где - там, куда люди ходят по поисковикам. Читатели на эти статьи по поисковикам успешно попадают и находят то, что ищут.
А вот Яндекс диск поисковиками не просматривается, и попасть на него могут отнюдь не все, а только те, кто на Яндексе зарегистрировался. Тем не менее, все статьи по музыкальному проекту можно найти по ссылке - http://yadi.sk/d/MxeUfs3XtKA8p о чём и сообщается в резюме на страничке.
Последняя обзорная статья вот - http://www.proza.ru/2018/06/26/656 с неё и следовало бы начать знакомство с проектом. А не лезть в старые статьи, где использовалось действительно "древняя" среда программирования.

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

Дмитрий Маштаков   01.08.2018 07:39   Заявить о нарушении
Дмитрий, я мало чего понял, но чувствую печёнкой своей, измученной "нарзаном", что Вы правы!

Николай Крупин   02.08.2018 20:18   Заявить о нарушении
На это произведение написаны 2 рецензии, здесь отображается последняя, остальные - в полном списке.