Автосочинитель Мелодий Muzz

Как сочинять музыку? Где его взять готовым к использованию, например, для озвучивания видео на YouTube (и чтобы там не появлялся ярлык о нарушении авторских прав)? Как написать эту самую музыку самому, когда в голову не приходят никакие мотивы? Откуда вы черпаете идеи для новой мелодии или хотя бы ее фрагменты? Я поклоняюсь великому беспристрастному рандому.

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

Он просто берет и делает музыку всех стилей, всех направлений, всех размеров (в пределах возможностей, заложенных в алгоритм).



Автосочинитель мелодий Muzz

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

Его назвали Мазз.

Изначально была идея создать генератор мелодий для графического редактора.

PaintCAD 4Windows .

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

Но в результате нескольких попыток создания мелодий отдельных стилей алгоритм Muzz был приведен в универсальный вид, генерирующий совершенно случайную (в пределах своих возможностей) музыку различных стилей.



Примеры полученной музыки ( MIDI-файлы )

Грустный цирковой вальс Таинственный вальс Какой-то газовый сектор без хоров Камень Флейта и музыкальная шкатулка Колокола Трагический хор И еще один легкий рок

Как «сочинять» музыку программно

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

рожденный.

Но даже в самой простой цветной черно-белой картинке один пиксель равен 1 биту, и вам придется сгенерировать изрядное количество пикселей, например для картинки 100х100 это 10 000 пикселей или 2^10 000 вариантов картинки.

.

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

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

Например, в MIDI каждая нота представляет собой число от 0 до 127. Генерируя случайную последовательность нот одинаковой длительности, мы получаем музыкальный мусор.

Чтобы получить что-то более красивое, нужно подумать: «что такое музыкаЭ»

Что это такое?

В алгоритме Muzz я подумал и разделил музыку на три части: Барабанный ритм — будем сочинять поп, рок, что-нибудь с четким ритмом.

Иногда ритм может не быть включен в конечный результат. Сопровождение — каждый такт воспроизводит определенный стиль аккомпанемента в соответствии с текущим аккордом.

Для этого алгоритм сначала создает очередь аккордов.

Аккомпанемент исполняется на определенном инструменте.

Мелодия — одновременно активна одна нота, ноты могут иметь разную длительность.

Также могут быть паузы различной продолжительности.

Ноты соответствуют текущему аккорду аккомпанемента.

Инструмент может быть тот же, что и в аккомпанементе, или другой.



Входные параметры алгоритма

Чтобы получить что-то подальше от «какофонии» и приблизиться к «шедевру», нужно задать определенные начальные условия.

И формировать музыку в соответствии с ними.

Следующие параметры (начальные условия) были выбраны пользователем и входными для алгоритма: 1) Цвет: грустный, нормальный, веселый.

2) Размер: от 2/8 до 8/8. Например, 3/8 – это вальс, 6/8 (т.е.

3/4) – тоже вальс, но длинный, а 2/8, 4/8 или 8/8 – это обычный поп, рок и т. д. 3) Набор инструментов: В MIDI имеется 16 наборов инструментов (по 8 в каждом, например, клавишные или духовые).

При создании музыки можно брать инструменты для мелодии и сопровождения из одного набора (как если бы играли скрипач и бас-скрипач, или два пианиста).

Но можно брать из разных.

4) Наличие или отсутствие барабанов 5) Наличие введения 6) Количество стихов (от минимального до максимального значения, выбираемого алгоритмом случайным образом между минимальным и максимальным) 7) Наличие хоров 8) Наличие заключения .

Вот как они выбираются и редактируются в окне:

Автосочинитель мелодий Muzz



Порядок генерации

Это служебное окно с «дружественным» интерфейсом не показывается никому, кроме тех, кто запускает PaintCAD 4Windows с ключом -muzz в командной строке.

Предполагается, что пользователь просто начинает играть в композиторе Muzz и слушает музыку, не видя ни одного его интерфейса (см.

раздел «Управление композитором» в конце статьи).

Но алгоритм генерации использует в своей работе как раз все эти флаги, поля, ползунки и прочие компоненты:

Автосочинитель мелодий Muzz

В середине этого окна расположены три поля: «Источник», «Подготовлено» и «Мелодия».

Скрипт №1 прописывается в поле «Источник».

Содержит как аккорды, так и сервисные команды («переключить ритм барабанов», «сменить инструмент», «изменить ритмический рисунок мелодии» и т. д.).

Затем, очищенный от служебных команд, он попадает в список «Подготовлено» — это оказывается Скрипт №2. Там лежит чистая аккордовая последовательность.

Один аккорд на долю музыки.

Кроме того, при записи чистых аккордов в поле «Подготовлено» генерируется сама мелодия и помещается в поле «Мелодия» по «N=размеру» нот на такт как скрипт №3. Если размер созданного мелодия 8/8, то в каждом аккорде будет создано 8 нот, если 3/8, то в каждом аккорде будет создано 3 ноты.



Выбор ритма ударных

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

Несколько ритмов были заложены в тактовые размеры, кратные двум.

Алгоритм просто выбирает один из них, пытаясь сделать вступления и куплеты менее/равными по силе ритма, чем припевы.

Возможные стили показаны в рамке «Стиль барабана» (команда SDS): Рок 1, Рок 2, Спокойный ритм, энергичный ритм .

Еще есть галка "Выход" с полем, отмеченным A, является пятым стилем, который смешивается с любым из четырех вышеперечисленных, подчеркивая удар по тарелке в конце такта (A = 0) или даже удар по тарелке и несколько ударов по барабану (A = 1).

Конкретный «выходной» стиль (A=0 или 1) выбирается случайным образом при генерации каждой последующей мелодии.

А еще номер «патча» — если туда поставить 16, то малые барабаны будут мощные (из силового набора).

В зависимости от громкости и агрессивности инструментов аккомпанемента и мелодии алгоритм иногда подбирает мощные барабаны.

При размере мелодии 8/8 ритм воспроизводится целиком, остальные размеры разбивают ритм, начиная со следующего такта с первой ноты.

При этом ритмы довольно легко адаптируются «под вальс» или под экзотические размеры 5/8 или 7/8, и на слух вроде бы всё в порядке.



Выбор набора аккордов по цвету

Т.

к.

есть три цвета мелодий «Грустный», «Нормальный», «Веселый», то для каждого из них имеется свой набор аккордов, из которых алгоритм выбирает и добавляет последовательности аккордов.

Грустный: Ам, Е, Дм - поддерживающий, используемый как для мелодии, так и для вступительных и заключительных аккордов куплета/припева/вступлений/заключений.

E7, F, G, C, A7, A#7, B7 - обычный, используется вместе с поддерживающими аккордами для создания промежуточных аккордов в куплетах/припевах/вступлениях/завершениях.

Е6, Дм6 - очень грустные аккорды, используются редко, но метко.

Кроме того, они поставляются с таблица ссылок .

Это было сделано для устранения диссонирующих аккордов в песне.

Таблица соединений грустных аккордов рекомендует: после А7 – следующим аккордом возьмите Dm, после A#7, B7, E6 и Dm6 — возьмите следующий аккорд E. Алгоритм выполняет эти рекомендации для любого цвета мелодии только в 50% случаев, так что в остальных 50% случаев есть «выход» для генерации чего-то необычного и неординарного.

Нормальный: Смесь мажорных и минорных аккордов в укусе с септами.

Am, E, Dm, G, C, F - поддерживающие и они же являются основными.

A7, D7, E7, C7, G7, F7, A#7, B7 - редко используемый.

Таблица ссылок: после А7 – следующим аккордом возьмите Dm, после D7 – возьмите E следующим аккордом, после E7 – следующим аккордом возьмите Am, после A#7, B7 – следующим аккордом возьмите E. Забавный: Майоры, как они есть.

С,Ф,Г - поддержка С7, F7, G7 - базовый Д - редко используемый Таблица ссылок: нет рекомендаций

повторы

Для создания одинаковых куплетов и припевов на протяжении всей песни была введена скриптовая команда Lx, которая позволяет копировать номер аккорда x и соответствующие ноты мелодии в заданное место.

Например, если аккордов 4, то их легко повторить так: 1 час ночи 2G 3 С 4Е 5 L1 (Ам идет сюда) 6 L2 (Здесь идет G) 7 L3 (Сюда пойдет C) 8 L4 (Сюда идет я) При генерации аккордов каждый новый аккорд можно брать вместе с мелодией из другого аккорда, причем в любой последовательности, например: 1 час ночи 2G 3 С 4Е 5 L3 (Сюда пойдет C) 6 дм 7 L1 (Сюда идет я) 8 L5 (Здесь появится C, ранее скопированная в пятую строку) Таким образом, формируется одинаковая схема вступления, куплета и припева.

Второе вступление/куплет/припев ссылается на первый сэмпл и при генерации «сценария №2» они превращаются из Lx в обычные аккорды (а мелодия перетаскивается из первого семпла путем копирования).



Выбор инструментов

Для аккомпанемента и мелодии нужно подобрать инструменты.

В MIDI, на мой взгляд, есть тихие инструменты, громкие инструменты и кривые инструменты.

Таблица составлена на слух, где 0 – тихий, 1 – громкий, 2 – кривой инструмент. Мы слушали чистые звуки из базы данных GM.dls, поставляемой в комплекте с Windows. Может быть, на других базах «кривые» звуки не такие кривые, но мы рассчитываем на массового потребителя, слушающего миди с этой стандартной базой.

Это таблица инструментов Instvol:массив [0.127] целых чисел=( 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 1, 1, 0, 2, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 2, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 2, 1, 2, 0, 0, 1, 0, 0, 2, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 2, 2, 0, 0, 1, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 1, 0, 2, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ); Алгоритм пытается выбрать для припева более громкие инструменты, чем для куплета.

Также он старается избегать кривых инструментов (хотя и не на 100%, чтобы иногда создать мелодию с необычным звучанием).

Последние два фрагмента таблицы 8 инструментов – это барабаны (Ударные) и звуковые эффекты (Звуковые эффекты, свистки, аплодисменты, крики, стрельба и т. д.), они вообще не используются для аккомпанемента и мелодии.

Но на всякий случай их тоже добавили в таблицу.

Инструменты подбираются отдельно для вступления, куплетов и припевов с повышенной вероятностью быть одинаковыми для всех этих частей нашей мелодии.

Выбранные значения задаются сервисными командами SAN (SetAccompNumber) и SMN (SetMelodyNumber) в скрипте №1 в начале каждой части мелодии (например, «Am:SMN30:SAN40»).



Выбор стиля аккомпанемента

На данный момент в Muzz существует 6 стилей аккомпанемента, и алгоритм случайным образом выбирает их для вступления, куплета и припева с повышенной вероятностью не менять их между вступлениями, куплетами и припевами.

Эти стили расположены в рамке «Стиль аккордов (SAS)».

С помощью этих стилей можно сгенерировать как гитарную песню «стой, паровоз, не стучи колеса» (если повезет, то в качестве инструмента будет выбрана акустическая гитара, а барабаны пропущены).

, а также более тяжелые ритмичные мелодии или, наоборот, расслабляющие тропические ритмы.



Генерация мелодии

Как уже говорилось выше, при добавлении чистого аккорда в сценарий №2 «Подготовлено» параллельно с ним в сценарии №3 «Мелодия» записывается N нот или пауз, где N – музыкальный размер из 2 (это 2/ 8) до 8 (это 8/8).

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

Ноты могут выбираться случайным образом из гаммы текущего аккорда аккомпанемента; если включить флаг «Сохранить 1,3,5,7 нот гаммы», то можно будет выбрать только эти четыре ноты (первую, третью, пятую, седьмую) гаммы, также можно начинать все такты с основного первая нота аккорда (флажок «Начать все такты с аккорда»).

Также для частей мелодии (вступление, куплеты, припевы) выбирается случайное расположение нот или расположение по шаблону из 8 цифр вида «00100101».

Где 1 – это место, куда нужно вставить заметку, где 0 – пробел.

Таким образом, иногда алгоритм создает вступительные мелодии, куплеты и припевы с определенным ритмом.

За это отвечает флажок «По образцу (П):» и поле рядом с ним, а в скрипте №1 — сервисная команда «Пхххххххх» (или просто «Р», если нужно отключить мелодию шаблона) .

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

Если образец не указан, то выбор «вставить ноту или паузу» осуществляется алгоритмом с учетом ползунка «Заполнение, % (SFC)», расположенного внизу окна.

Содержание также задается случайным образом для каждой новой мелодии (от 20 до 40%).



Темп мелодии и транспонирование

Чтобы мелодии не звучали монотонно на одних и тех же частотах, случайный фактор влияет на темп (время одного тика, проигрывания одной ноты), заданный в поле «Пауза, мс (ST)» в миллисекундах, а также транспонирование всю мелодию вместе с аккомпанементом на количество полутонов, указанное в поле «+полутона» (оно выбирается случайным образом от 0 до 5, чтобы звуки не убегали далеко вверх).



Музз-окно после завершения генерации

Вот он — сгенерирован первый сценарий, и на его основе — сценарий №2 (аккорды) и №3 (мелодия):

Автосочинитель мелодий Muzz



Управление композитором

Интерфейс управления представляет собой простой подраздел меню «Эxtra» в PaintCAD. Горизонтальное меню в PaintCAD по умолчанию скрыто (чтобы не мешалось) — нажмите «ноль» на клавиатуре, чтобы его отобразить (или мышкой нажмите кнопку «меню» в левом верхнем углу окна) под значком кисти).



Автосочинитель мелодий Muzz

Чтобы начать сочинять и играть, нажмите на меню "Играть" или Ctrl+П .

Во время воспроизведения на статусной панели главного окна Paintcad отображается выбранный цвет песни, текущий бит и количество битов:

Автосочинитель мелодий Muzz

Чтобы остановить воспроизведение, нажмите тот же элемент (или ту же комбинацию клавиш).

Следующий старт воспроизведения – это новая сгенерированная мелодия.

Если вам понравилась играющая мелодия и вы хотите сохранить ее на память, выберите во время воспроизведения «Сохранить воспроизводимую мелодию в MID» (или просто нажмите Альт+П ).

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

Если вы хотите указать, какие мелодии генерировать и воспроизводить, их цвет, размер и другие параметры, выберите пункт в меню "Настройки" или нажмите «Ctrl+Shift+P» .

Настройки сохраняются после выхода из Paintcad и будут загружены при следующем запуске Paintcad. Если прослушивание мелодий в Paintcad вас не устраивает, у вас нет времени - вы можете быстро сгенерировать от 1 до 100 мелодий и сохранить их в виде MID-файлов в выбранной папке, а затем вручную кликнуть по файлам, прослушать и удалите те, которые вам не нравятся.

Этот пункт поможет вам в этом «МИДИ-бластер» (или сочетание клавиш Shift+П ):

Автосочинитель мелодий Muzz



Куда идут все эти MIDI-песни?

Из MIDI-песен можно с помощью любого музыкального редактора (например, FruityLoops с плагином LSD) сгенерировать MP3-файлы, а уже потом использовать их для озвучивания видеороликов на YouTube, либо в собственных играх в качестве музыкального сопровождения.

Вы также можете использовать их как основу для создания собственных композиций — все полученные MIDI-файлы можно открыть любым MIDI-редактором, например, Cakewalk Sonar. Внутри MID-файла каждая партия «ударные», «мелодия», «аккомпанемент» лежит в отдельной дорожке.

Смена инструментов внутри трека определяется событиями («события», см.

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



Я хочу слушать/создавать мелодии

1) Скачайте последнюю версию бесплатного графического редактора PaintCAD 4Windows 1.2.2 по ссылке.

blackstrip.ru/pcw.rar (10 Мегабайт).

Распаковать в пустую папку.

2) Запускаем Paintcad.exe. 3) Нажмите Ctrl+П чтобы запустить/остановить композитор Muzz, пока он не даст вам нормальную мелодию.

Или другие сочетания клавиш, упомянутые выше.

Или нажать «0», а затем в меню выбрать «Эxtra» — «Muzz Music Generator» и соответствующий там пункт.

Автосочинитель мелодий Muzz



Перспективы

В настоящее время в качестве барабанных ритмов используются простые ритмы по 8 тактов на такт. Поэтому есть идеи запустить параллельную тактацию по 32 такта за такт. И использовать случайно сгенерированные ритм-последовательности, где есть четкое ядро (например, 1 доля каждые 8 тактов), а остальное случайным образом разложено сверху.

Тогда у вас должны получиться ритмы хип-хопа и другие необычные ритмы с плавающими акцентами.

И приведенные выше схемы связей между аккордами не идеальны.

Было бы неплохо иметь для каждого предыдущего аккорда набор вероятностей установки следующего.

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

группы, и вывести общую формулу, что «после Am у них есть Dm в 40% случаев, а G в 10% случаев» и так для всех аккордов из набора.

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

И тогда, наверное, можно будет выбрать: «Я хотел бы создать пару песен «Арии», пару песен Агаты Кристи и одну от Prodigy».

Теги: #Звук #музыка #paintcad #paintcad #muzz #алгоритм создания музыки

Вместе с данным постом часто просматривают: