Найти в Дзене
Дмитрий Маштаков

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

программы проекта
программы проекта

Проект, о котором я буду рассказывать, связан с синтезом звука музыкальных инструментов.
  Он развивался на протяжении 3-х лет, и практически с нуля. До его начала, то есть в конце 2014-го года, я о синтезе музыкального звука совершенно ничего не знал. И задачи у меня вначале были очень скромными - имея навыки программирования в Бейсике, я хотел сделать на клавишах компьютера что-то вроде пианино.
  Чтобы нажатие на клавишу вызывало звук, а последовательность нажатий на разные клавиши каким-то образом записывалась - так, чтобы полученные звуки можно было бы затем проиграть. И исправить ноты, если в них окажется что не так. То есть, задача скромная - сделать игрушку. Много таких есть в интернете, но я хотел сделать свою.

  И вот, год назад проект закончен. Сделаны четыре оригинальные программы. С их помощью любой человек, имеющий даже маломальское музыкальное образование, может сделать хорошие записи, музыкальных произведений любой сложности по своим нотам, или по нотам, найденным в интернете. Естественно, процесс этот творческий, Вы можете интерпретировать музыку, создавая нюансы исполнения по своему усмотрению.
  Все четыре готовые программы проекта можно скачать отсюда - http://yadi.sk/d/VEN-Ok3B3NiUqj

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

-2

http://yadi.sk/d/E_2uL65n3HaAQS

Кроме того, не нужны ни МИДИ клавиатура, ни секвенсоры. Всё делается на компьютере с его собственной клавиатурой. Программа Трио позволяет озвучивать три партитуры, например, партии фортепиано ( для правой и левой руки отдельно) и партию альта. Эти партитуры – текстовые файлы TFP, TFL и TFA создаются другой программой – Пианола. Окно этой программы показано на след. рисунке -

окно программы Пианола
окно программы Пианола

Как мы видим, в строку программы заносятся ноты для правой руки, и после того, как нотная запись проверена на слух и по счёту, нажатием кнопки make создаётся файл партитуры TFP.

Работа по вводу мнемонических нотных обозначений удобна. Ноты набираются на верхних рядах клавиатуры компьютера и сопровождаются звуком. Проиграть набранную строку звуком фортепиано можно, нажав клавишу Caps look. Эта же клавиша, нажатая одновременно с клавишей верхнего регистра проиграет строку от её начала и до курсора. Во время проигрывания подсчитывается число четвертей в проигранных нотах, и счётчик показывает это число.

проверка счёта и запись
проверка счёта и запись

Когда строки мелодии будут готовы, мы нажимаем тут, и наша мелодия запоминается в файле mp.txt. В следующий раз эту мелодию мы сможем вновь загрузить в Пианолу, кликнув Load music file.Нотная запись трёх строк мелодии в файле выглядит так:

нотная запись
нотная запись

В конце вторых строк этих записей мы замечаем знаки замедления темпа – 7/6=1.1666, то есть вместо 7-ми нот за то же время исполняется 6 нот. Это только один из примеров хорошо продуманной мнемоники нотной записи. Триоли, пятиоли, трели, мелизмы, или форшлаги - во всех случаях запись может быть сделана точно по счёту.

Программа имеет обширный раздел Help, перейти в который можно, кликнув по правому нижнему уголку окна программы.

партитура
партитура

Мы видим здесь частоты звучания нот, долготу звучания нот и долготу посленотных пауз ( указано количество семплов ), но мы не видим того, на каком инструменте следует играть, нет указаний на громкость звука, нет указаний на аккорды. Эти указания нужно внести в партитуру.

указания в партитуре
указания в партитуре

Теперь партитура правой руки готова к озвучиванию. Действуя аналогично, делаем партитуру для левой руки и запускаем программу Трио –

запускаем Трио
запускаем Трио

Выбираем конфигурацию записи (она же - схема распределения звука по динамикам ), и запускаем программу на счёт. Результат получаем в файле PROBA.wav. Его можно просто прослушать, но лучше его прослушать и просмотреть в окне редактора Wave Editor.

просмотр записи
просмотр записи

Видно, что громкость звука неодинакова, это потому, что мы уже сделали в партитурах пометки < и > усиливающие и ослабляющие звук. Кроме этих, в партитурах ставятся и иные пометки, делающие исполнение музыки выразительным.

эта нота звучит дольше
эта нота звучит дольше

это изменение автоматически передаётся и в партитуру левой руки, поэтому затяжка времени звучания ноты, или время паузы в левой руке ( если этот момент приходится на паузу), синхронизируется с действиями правой руки. Тоже самое может быть проделано и в отношении партитуры TFA, если в ней вывесить флаг FlagT=1 вместо флага FlagT=0, принятого по умолчанию.

расширенное окно Трио
расширенное окно Трио

Кнопочка Просмотр перелистывает страницы нижнего окна, стрелка внизу выводит содержимое окна в текстовый файл. Маленькая кнопочка Т верху открывает тестовое расширение программы, в котором можно просматривать форму звука, создаваемого различными сценариями и обертонами. Это удобно, если мы работаем не с уже откомпилированной программой, а работаем с её исходниками в среде программирования Визуал Бейсик 6 Целью подобной работы может быть совершенствование программы Трио, изучение звука, и создание новых сценариев его развития, как в рамках существующих алгоритмов, так и по пути создания новых.

Примером такого новшества является функция, интерпретирующая строку ADSR$, содержащую мнемоническую запись огибающей звука, а также указания на его изменения в ходе развития. Этот алгоритм применён в новом сценарии для звука скрипки - http://youtu.be/ubNmvFydjtk

Он с успехом может быть применён также и для совершенствования звука аккордеона.

Возможность такой работы является важной чертой музыкального проекта Пианола – Трио, чертой не менее важной, чем практические результаты этого проекта.

Скачать пианолу можно здесь - http://yadi.sk/d/yWSZf7a43Y4XBM

Трио в откомпилированном виде - http://yadi.sk/d/s-6bamlL3Y4XJQ

Трио с исходниками - http://yadi.sk/d/4YB1q5Hj3NLAn4

В проекте имеется группа программ, позволяющих расширить его возможности. Это –

Конвертор партитур в МИДИ формат - http://yadi.sk/d/Ul0YSNtp3YPQP7

Манипулятор WAV файлами - http://yadi.sk/d/kyG5RSRD3YPUzY

Расшифровка нот онлайн пианино - http://yadi.sk/d/0qZbAYGfUChBKA

Конвертор партитур в МИДИ формат создаёт миди-файл с одним треком. Каналы инструментов С1, С2 и С3 в этом треке распределяются в соответствии с порядком следования партитур в этом окне, то есть – сверху вниз:

Конвертор в МИДИ
Конвертор в МИДИ

Здесь указываются партитуры, которые принимают участие в процессе конверсии. Поскольку громкость сценариев Трио и громкость по каналам секвенсора могут различаться, то в Конверторе предусмотрена регулировка громкости каналов при сведении их в миди-запись. Если громкость канала выставлена на ноль, то соответствующие этому каналу ноты вообще не появляются в миди записи. Между тем, каналы взаимодействуют между собой так, как это предусмотрено в Трио - увеличения или уменьшения длительностей звучания нот передаются в канал TFL от канала правой руки даже если громкость этого канала выставлена в ноль. Таким образом можно делать отдельные треки миди-записи для каждого канала. Кнопочка temp в зависимости от своего цвета делает общий темп миди-записи более медленным, или более быстрым.

Получаемые от конвертора записи получают одно и то же название MUZ, поэтому записи предыдущих треков нужно переименовывать. Насобирав миди-записи с номерами от MUZ1 и далее ( но не более 16-ти), можно объединить эти записи в одну, использовав для этого расширение программы Конвертор –

объединение МИДИ
объединение МИДИ

Если кнопка опции не активирована, то объединение миди файлов делается встык – за звуками первого файла сразу же следуют звуки второго, затем – третьего и т.д. без промежутков между ними. Если же кнопка опции имеет изображение чёрточки - | то тогда между звуками треков при их объединении вставляется пауза и делается текстовое сообщение об этом. Третья опция ( кнопка опции окрашена в зелёный цвет) позволяет создать файл с несколькими треками в нём.

Левее чеков с выбором партитур имеются кнопки, которыми можно переназначить номера используемых каналов МИДИ. В частности, если выбран канал С9, то его ноты ( начиная с №27 -Ре# контр.окт. и по №87 - Ре# 3-й октавы ), в соответствии с принятыми в МИДИ правилами, интерпретируются как звуки ударных, или как некие звуковые эффекты. Кнопка Т Т16 в техническом расширении выводит в текстовые файлы T.txt и T16.txt содержимое файла MUZ.mid, причём во втором файле даётся расшифровка содержащихся в миди-файле нот –

расшифровка МИДИ файла
расшифровка МИДИ файла

Внеся в этот файл изменения, и переименовав его в файл Tm, с помощью кнопки Tm можно конвертировать этот файл обратно, то есть, в МИДИ формат. Три нижние левые кнопки технического расширения позволяют вручную создавать коротенький миди-файл, с тем, чтобы освоить работу с байтами миди формата и разобраться с особенностями миди-протокола. Это, как говорится, для особо любопытных.

просмотр МИДИ в форме нот
просмотр МИДИ в форме нот

Следующая программа, которая может пригодиться, это Манипулятор WAV файлами. Она перекраивает файлы – переводит их из стерео формата в моно, соединяет два файла в один и проч. Хоть она и работает медленно, но бывает полезна.

Манипулятор
Манипулятор

В методе «рельеф» программы Трио используется сплайн-интерполяция, которая позволяет по сокращённой мнемонической записи (реплика) воспроизводить рельеф звука в периоде колебания. Реплики можно снимать с реального звука, и как раз для этого программа утилита. Процесс снятия реплики подробно описан тут - http://www.proza.ru/2017/10/20/1279 В результате получается как бы копия периода колебания реального звука, правда, без мелких подробностей –

отмечаем начало и конец периода
отмечаем начало и конец периода

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

В обоих случаях, однако, были использованы не реплики реального звука, а рельефы, построенные исходя из неких теоретических соображений. Вот ссылки на клипы, связанные с этой темой –

http://youtu.be/RF_JHuuOqck http://youtu.be/CxyDkKNKpGs

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

Программу эту, вместе с исходниками, можно скачать тут - http://yadi.sk/d/OKJP7AbjRJazoQ

расшифровка нот Виртуального пианино
расшифровка нот Виртуального пианино

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

«Онлайн пианино» - http://online-pianino.ru/

«Онлайн конвертор из mp3 в MIDI формат» http://www.ofoct.com/category/audio-converter по этому же адресу находим конвертор, осуществляющий обратное преобразование. А попутно, в промежутке между этими двумя преобразованиями, можно зайти в он-лайн редактор MIDI - http://solmire.com/midieditor/ В этом редакторе можно поменять звуки фортепьяно на звуки другого инструмента, например, на звуки гитары. Можно изменить темп записи и изменить высоту звучания нот.

Пригодится и «Онлайн секвенсор» - https://onlinesequencer.net/import файл от него, сохранённый с опцией Save_local_file, легко читается и поддаётся расшифровке .

***

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

Музыкальные записи, сделанные по проекту, слушаем тут https://disk.yandex.ru/d/poMxlrBuxendv

Статьи с подробным описанием всех аспектов музыкального проекта находятся на моей страничке http://proza.ru/avtor/dimamasht на сайте проза.ру. Спасибо за внимание.

___________________________