От нот к музыкальному звуку

  П.И.Чайковский "Октябрь. Осенняя песнь", из цикла Времена года.
  О создании музыки на компьютере с помощью программ Пианола и Трио.
  Сразу, чтобы вас не интриговать, укажу на результат. Запись находится здесь -
  http://yadi.sk/d/5HWAg0V-33LWiw

   О НОТАХ И ТЕМПЕ

  Сначала поговорим о темпе. У А.Н.Скрябина в этюдах мы видим такие указания - 126 четвертей в минуту Alegro и 60 четвертей в минуту Andante.
  Если в музыкальной записи на одну четвертную ноту приходится 1.4*26000 семплов, а скорость раздачи составляет 32000 семплов в секунду, то какова же будет длительность звучания четвертной ноты?

  1.4*26000/32000 = 1.1375 секунды или 60/1.1375 = 53 - да, это 53 четверти в минуту, очень неторопливое Andante, как и указано для "Осенней песни" П.И.Чайковским.
  Хотя играют эту пьесу обычно ещё медленнее, но именно в таком темпе будет исполняться тот отрывок (вторая страница нот), который показан на рисунке к этой статье.
 
  Ноты, как это видно по ним, уже побывавшие в деле, и на них рукой педагога оставлены пометки - что выделить, что усилить, что постараться играть раздельно.
  Во всяком исполнении, помимо нот, нужно понимание того, как играть, или нужны указания на это. Причём просто длительности нот, и значков Forte и Piano оказывается недостаточно.
  И, конечно, такие указания нужны в партитуре того, что будет исполняться компьютером. Поскольку компьютер, в отличие от нас с вами, не очень способен на интуицию.
  И тут возникают две проблемы - как компьютеру понять ноты, и как помочь ему исполнить эти ноты выразительно.


  КАК МЫ ПОМОГАЕМ КОМПЬЮТЕРУ И КАК КОМПЬЮТЕР ПОМОГАЕТ НАМ

  Самостоятельно, без нашей помощи, прочесть ноты компьютер не сможет. От нас требуется совсем немного - прежде всего записать ноты в такой форме, чтобы их понимал и компьютер, и мы. И компьютер, и мы хорошо понимаем текстовые файлы, вот с ними мы и будем работать.
  Вместо общего нотоносца откроем два файла, один для нот правой, а другой - для нот левой руки. На рисунке показана запись нот левой руки для второй странички пьесы Чайковского. На страничке 5 нотных строк, 5 строк с нотным текстом имеется и в нашем файле. Строки пронумерованы. В первой строке читаем:
 
    \>>>G<<</DB-\A/F  \A/G\D^/

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

  Можно потрудиться и сделать нотную запись с помощью Блокнотика вручную. Но зачем? В этом скучном деле компьютер может нам помочь.
  Ввод нотного текста в синем окошечке программы Пианола позволяет не только услышать звучание нот, но и вести счёт общей длительности нот, проверяя себя по имеющемуся счётчику. Записать нотный текст для всех строк странички и прослушать его целиком. А потом, указав на поле Save_file_as название файла, нажать Enter и получить текстовый файл с нотной записью.
  Но это не всё. Компьютер помогает нам, и помогает сам себе, дальше - он делает партитуру.
   
  Партитура, это тоже текстовый файл, который можно рассматривать и легко править, только ноты записаны в нём не в одну строку, как в нотной записи, а в отдельных строках F= - путём прямого указания частот нот, длительности их звучания и длительности после нотных пауз. В строках L= указывается длительность обычных пауз. Длительности указаны в семплах. Нотные строки нумеруются и разделяются линиями.
  Партитура приходит к нам "чистенькой" - ничего, кроме того, что было сказано, в ней нет. Теперь мы, в свою очередь, должны потрудиться и, подобно педагогу, делая пометки в партитуре, указать компьютеру, на каком инструменте, и как играть. 


   НА ЧТО МЫ УКАЗЫВАЕМ В ПАРТИТУРЕ

  Начало партитуры второй странички для левой руки показано на рисунке снизу слева. Что в текст партитуры добавлено?

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

  После первого разделителя, открывающего партитуру, размещены указания -

R=8 указание на сценарий звука фортепьяно ( если мы укажем R=4, то услышим звук альта, а если R=7, то - звук аккордеона)

H=1.8 относительная громкость звука ( по умолчанию 1)

UDa=3.9975 звук будет нарастать резко - длительность атаки составит 3 семпла, но затухать будет весьма медленно ( по умолчанию этот параметр равен 3.995)
  В партитуре правой руки было указано UDa=3.996, и по слайду окошечка редактора Wave Editor (в этом окошечке дорожка левой руки - сверху, а правой - снизу) видно, что звук в правой руке затухает скорее, чем звук в левой руке. Но в правой руке и звуки идут почаще.

S=1.4 указание на темп ( по умолчанию 1), о темпе говорилось в начале статьи

exo=2 подключается ревербератор, который создаёт эхо не только во время звучания ноты, но и в паузе после неё. Параметры эха указаны в сценарии.

  И, что очень важно, в партитуре мы размещаем указания на аккорды -
G=/55 означает, что нижний звук Ре с частотой F= 146.83 Гц будет звучать не в одиночестве, а будет сопровождён звуками на 5 полутонов и ещё на пять полутонов более высокими. Буква g снимает назначение аккорда.

  В партитуре можно делать пометки русскими буквами, их компьютер пропускает, и его работе они не мешают.
  О том, какими могут быть другие партитурные и аккордные назначения, можно прочесть тут - http://www.proza.ru/2016/06/19/581 и тут - http://www.proza.ru/2016/03/28/350 а сейчас мне хотелось бы обсудить результат.


   О МУЗЫКАЛЬНОЙ ЭСТЕТИКЕ КОМПЬЮТЕРНОГО ЗВУКА

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

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

  Разумеется, хорошо, если бы появились более совершенные, и одновременно доступные программы. Недостатком Пианолы является, например, то, что звук у неё неважный. Издавала бы она хотя бы звук фортепьяно онлайн, препятствий к этому нет. Но нужна программа. В Бейсике такого звука онлайн не достичь, хотя озвучивание таким звуком он делать может.
  Кстати, о времени озвучивания. Запись "Осенней песни" длится 4 минуты. Для её озвучивания времени потребовалось в 4 раза больше - две руки и аккорды ещё, и разнос стерео по двум дорожкам, и эхо. Но, правда у меня и компьютер не самый мощный. Но что, собственно время? Включил озвучивание, и оно идёт в фоновом режиме, а ты занимаешься другими делами.
 
=======18.09.2016   


Рецензии
Очень интересно написано! Музыка - это замечательно...
Интересна связь музыки, нот, математики, физики.
А в общем - логарифмическая шкала частот... Есть 10 Гц, 1000 Гц, 1000000 Гц, 10 в 15 степени Гц, 10 в 20 степени Гц... Есть частоты - выражающие музыку, речь. Есть частоты - выражающие радиоволны, видимое излучение, инфракрасное, ультрафиолетовое, рентгеновское, гамма-излучение... А принципиальной разницы между ними нет.
Я, когда учился в институте, пробовал играть на гитаре... "Прекрасное Далёко" - это ля-минор... Жаль, что потом я перестал играть, и пропали навыки игры.

Принц Андромеды   03.09.2017 09:02     Заявить о нарушении
Александр, чем математические функции зря мусолить, присоединялись бы лучше ко мне. С помощью программ Пианола и Трио можно музицировать, даже если Вы навыки игры позабыли. Я как раз хочу звук гитары попытаться сделать, вот, небольшие намётки есть -
http://www.proza.ru/2016/05/16/1070
Или вот - http://yadi.sk/i/IsykpOuS3MZ9MU осциллограмма звука саксофона. Явно периодическая функция.
Задача - написать математическую формулу (желательно простую по вычислениям) описывающую рельеф звука внутри периода колебания. Пусть этот период будет представляться интервалом от 0 до 2-х. Тут важно передать нюансы - остроту и асимметрию пиков. И с помощью некоторых параметров их варьировать от периода к периоду. И получится вполне естественный звук!
Напишите - я тут же эту формулу опробую. Желательно что-нибудь попроще, но поизящнее. Можно даже в виде небольшого алгоритма.
Дм.

Дмитрий Маштаков   03.09.2017 11:52   Заявить о нарушении
Не удается получить доступ к сайту

Превышено время ожидания ответа от сайта yadi.sk.
Попробуйте сделать следующее:
Проверьте подключение к Интернету.
Проверьте настройки прокси-сервера и брандмауэра.
ERR_CONNECTION_TIMED_OUT

Принц Андромеды   03.09.2017 12:20   Заявить о нарушении
Разложить периодическую функцию в ряд Фурье?

Принц Андромеды   03.09.2017 12:21   Заявить о нарушении
Вы просто не зарегистрированы на Яндексе, потому туда не пускают. А я как-то плавно перетёк на Яндекс диск с сайта Народ.ру, и даже не заметил как )). Но если Вы Яндекс почту заведёте, то диск доступен будет. Диск очень удобен, это хранилище файлов. 2 Гбайта бесплатно, вполне хватает. Что до картинки со звуком саксофона, то вот здесь её показываю -
http://www.proza.ru/2012/09/03/960
Колебания, хоть и периодические, но внутри периода периодичность ловится с трудом - максимум, минимум, вновь максимум, после некие более плавные изменения (подозреваю, что даже неважно - какие). Функцию нужно построить таким образом, чтобы она при Х=0 выходила из нуля и при Х=2 заканчивалась нулём, обещая своё повторение в следующем периоде. Но только обещая - в действительности изображение звука должно быть только на интервале (0,2). По полиномам можно разложить, но может быть что-то поинтереснее найдётся.


Дмитрий Маштаков   03.09.2017 15:19   Заявить о нарушении
ошибся - 10Гб бесплатно (2.5 у меня занято)

Дмитрий Маштаков   03.09.2017 16:29   Заявить о нарушении
Вставлю свои пять коп. Мне можно, я просто тролль, меня нигде по-правде нет. Поэтому могу делать, что хочу.

Посмотрел на осцилограмму звука саксофона - аж в нижней губе засвербило... Я тогда почему свернул-то эту тему с имитацией сакса. Да просто купил сакс и нужда в имитации пропала.

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

Суммируем. Звук сакса состоит из основного тона с очень сильно присутствующей второй гармоникой. При этом, учитывая, что губы у нас живые, а не железные, в сигнал постоянно подмешиваются и составляющие других гармоник, причем, тоже с заметной амплитудой. Наверное, вплоть до 10 - 12, именно высокие гармоники создают характерный "хрип", он проявляется на 4 - 8 кГц в спектре, а нотки... Ну, там речь идет о малой октаве (нижняя нота диапазона альт-саксофона - до малой октавы, да и то, если есть соответствующий клапан, а так - до-диез), однако, хрип на спектре довольно хорошо присутствует и на самых нижних нотах.

Значит, думаю, можно, как основу, взять генератор "порченого" синуса с двумя гармониками, подобрав их соотношение. Параллельно же запустить еще один генератор, который будет с помощью "кубика" (генератора случайных чисел) менять амплитуды гармоник, начиная с 3 и заканчивая 10-й, и этот сигнал подмешивать к основному тону, как бы тоже случайным образом меняя амплитуду.

Под термином "порченый" синус я имею в виду функцию синуса, которая после вычисления еще дополнительно корректируется на небольшую величину, опять же, случайно выбираемую. Получается линия, идущая около синусоиды, но в точности ей не соответствующая.

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

Александр Якшин   17.10.2017 09:46   Заявить о нарушении
И еще одна такая шальная мыслюха после ознакомления с алгоритмами и программами от разных товарищей.

Здесь бы как-то (даже пока не знаю, как) привести все функции и алгоритмы из вида x = F(t) (где x - амплитуда, значение сэмпла, а t - текущее время или фаза) к виду x1 = x0 + F(dt), где x1 - текущая амплитуда, x0 - предыдущая, а dt - изменение фазы.

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

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

Александр Якшин   17.10.2017 10:07   Заявить о нарушении
Есть 2 вида алгоритмов
Первый вычисляет амплитуду, как функцию от частоты и времени - A=S(F,T)
он позволяет добавлять аккорды, вычисляя их звуки по той же функции, но с другими частотами. Так в настоящее время работает Трио.

Для тех инструментов, у которых аккордов нет (у сакса вроде нет?) но зато есть предрасположенность к глиссандо, звуковая функция может быть построена по другому алгоритму -
В момент появления звука (при первом обращении к звуковой функции) вычисляется шаг между семплами по времени в отношении к периоду колебания dTo=F/44100
Берётся величина dXo=2*dTo в качестве шага для вычислений и начальное Х=0.
Далее Х ползёт по интервалу (0,2) с этим шагом, символизируя фазу на отрезке от нуля до 2хПи. В соответствии с фазой делаются вычисления амплитуды.
и как только If X>2 Then X=X-2
Чтобы сделать глиссандо нужно просто поменять шаг. Звук будет перестраиваться без щелчков с какой угодно скоростью.
Так работал первоначальный вариант Трио, но я отказался от этого алгоритма в пользу аккордов. Однако ничто не мешает вернуться к нему и для саксофона сделать звуковую функцию по этому алгоритму.
И с чётными обертонами проблем не возникнет. Относительно других нужно подумать.
Не только саксофон, и другие инструменты под такой алгоритм найдутся.

Вообще, это идея - иметь не один мешок, а два мешка с инструментами.
А МУЗы, то есть музыканты, пусть будут универсалами. Каждому по два мешка! ))
Дм.

Дмитрий Маштаков   18.10.2017 00:19   Заявить о нарушении
Нет, я наврал - Трио сейчас работает по второму алгоритму и позволяет глиссандо вместе с аккордами -
Т - шкала реального времени (в секундах),
DT - шаг, расстояние между семплами в секундах:

T = T + DT: X = T / TT: NT = Int(X): X = (X - NT) * 2

ТТ - величина, обратная частоте, то есть период (в секундах)
NT - номер периода колебания (чтобы, в зависимости от этого значения как-то менять звук, например, сделать тремуло не с самого начала звука. а в его середине)
Х - фаза, та самая, на интервале (0,2)
___________
Так что двух мешков делать не надо, одним мешком обойдёмся ))
Дм.

Дмитрий Маштаков   18.10.2017 00:45   Заявить о нарушении
Мне больше по душе - например, http://www.proza.ru/2017/10/18/82 . Квантовая механика. Уравнение Шрёдингера, элементы матрицы для диагонализации, собственные функции, полиномы Эрмита. И др.

Принц Андромеды   18.10.2017 00:47   Заявить о нарушении
Втайне от дирижёра меняем DT, он думает, что мы соблюдаем расстояние между семплами, и пишет семплы ритмично в звуковой файл.
А музыкант "петуха пускает".

Дмитрий Маштаков   18.10.2017 00:52   Заявить о нарушении
Идея неплохая - берём трёхмерное электрическое поле внутри некой сложной молекулы,
запускаем туда по некой орбите микрофон, пусть вращается в этом поле с заданной звуковой частотой, и фиксирует потенциал поля.
Некие звуки мы услышим. Но будут ли они красивыми и благородными?
Как эти - http://yadi.sk/d/nJxwQB5I3Nqqpg
Вам не спится? Мне тоже - сегодня рабочие, которые делают капитальный ремонт нашего дома, так капитально отключили свет, что пришлось лечь спать с наступлением темноты. Проснулся - свет есть и интернет работает.
Но вредно это, так нарушать режим. Пойду-ка, продолжу прерванное занятие.
Как хорошо в мягкой постельке, а не в палатке на майдане.
Бедняги, мне их жалко. Вот, сколько люди ни живут, всегда сами над собой издеваются. И, казалось бы, куда? Ведь жизнь коротка.
Созерцание полиномов Эрмита, или занятия музыкой - вот самое то.

Дмитрий Маштаков   18.10.2017 01:23   Заявить о нарушении
Доброе утро. Да, Майдан и майдановцы - это просто мерзость. И вообще политика. Наука - лучше...

Принц Андромеды   18.10.2017 07:43   Заявить о нарушении