Прошлая статья об автоматическом композиторе Muzz была написана в 2013 году. С тех времен по 2022 год Muzz сочинял рандомные мелодии с рандомным аккомпанементом под барабанные ритмы рока. В некоторых случаях при необычной мелодии и ритме почти без барабанов результат был совсем не похож на рок. Чтобы сгенерировать хорошую мелодию надо было сначала сгенерировать 10-20(-30...) неудачных. И слушать их одну за одной.
Временами получались даже неплохие мелодии, но все в пределах рок-ритмов, одного стиля аккомпанемента на всю песню, единой громкости нот:
И вот осенью 2022 года накопилось несколько идей по доработке Muzz (как минимум расширить количество ритмов, аккомпанементов и добавить новые возможности рандомной генерации мелодий). Все они были реализованы в PaintCAD 4Windows версии 1.5.2. Теперь с новыми функциями Muzz сочиняет музыку гораздо более разнообразно (примеры сочиненных усовершенствованным Muzz мелодий - четыре youtube-ролика в самом конце статьи с разбивкой временной шкалы по отдельным мелодиям).
Расширение основного окна Muzz
Окно Muzz обычно не показывается пользователям (если только не запустить paintcad.exe с ключом -muzz). Пользователь сразу нажимает в основном окне Ctrl+P (или выбирает в меню паинткадовского главного окна Экстра - Генератор музыки Muzz - Играть) и Muzz начинает играть.
Поэтому это прячущееся окно Muzz не имеет "фирменного стиля" и сенсорно-клавиатурно-мышиного управления как у других окон PaintCAD 4Windows. Оно выглядит как обычное окно Windows-приложения, набитое компонентами. Но именно в нем создается и проигрывается музыка, и в этом время все эти флажки, радиокнопки, выпадающие списки, поля ввода задействованы в алгоритме генерации мелодий (некоторые - только для индикации, а другими некоторыми можно даже повлиять на процесс проигрывания мелодий).
Раньше окно Muzz было таким:
С учетом всех осенних доработок оно расширилось, растолстело и потяжелело:
Итак, что было добавлено:
1) Новые жанры
К стилям барабанов в стиле "Рок" были добавлены барабаны поп-музыки, хип-хопа и регги. Каждый набор стилей (радиокнопок) располагается на отдельной вкладке своего жанра.
В настройках Muzz, лежащих в меню Экстра - Генератор музыки Muzz - Настройки (Ctrl+Shift+P) в главном окне PaintCAD 4Windows, добавилось подменю с жанрами. Можно выбрать конкретный жанр или случайный выбор жанра для каждой следующей генерируемой мелодии.
2) Увеличение количества нот в такте (или почему хип-хопа не было раньше)
Muzz разрабатывался с упором на 8 нот в такте. В пределах этих 8 нот дорожка барабанов могла дернуть 8 раз какой-нибудь барабан (или сочетание нескольких барабанов), дорожка аккомпанемента и дорожка мелодий - соответственно, дернуть ноту или сочетание нот своих инструментов. Для рока этого вполне достаточно. Для хип-хопа - очень и очень мало. Задержки между барабанами там имеют такие дробные смещения, что иной раз и нотами 1/16 (и даже 1/32 для сложных ритмов) не отделаешься.
Поэтому количество нот в такте теперь увеличено до 16. Теперь более живые ритмы с дробными задержками могут исполняться Muzz-ом (не настолько живые, конечно, как если бы стало 32 или 64 ноты в такте, но это уже не такие короткие 8 нот как раньше).
По умолчанию в настройках теперь выбран не случайный размер (от 2/16 до 16/16, то вальс, то долбежка), а жесткие 16/16.
Любители вальсов могут выбрать размер 3/16, 6/16 или 12/16 и наслаждаться ими как раньше.
3) Временная тишина в барабанах и аккомпанементе
Раньше для некоторых мелодий выключалась галка "Активировать" слева вверху окна Muzz и барабаны не играли всю мелодию до самого конца. Теперь для поп, хип-хоп и регги стилей есть ритм "Тишина" (восьмой ритм на вкладке каждого из этих жанров, но для рока "Тишины" нет, вместо этого на 8 ритме рока тихо звенькают тарелки, что тоже почти тишина, совсем выключать барабаны в роке посреди песни - это как-то не очень). Также есть один из стилей аккомпанемента "Тишина".
Поэтому если флажок "Активировать" для барабанов текущей мелодии включен, то уже отдельно для вступлений, припевов и куплетов рандомно иногда выбирается отсутствие барабанов (если будет случайно выбран восьмой стиль барабанов "Тишина") или отсутствие аккомпанемента (если будет случайно выбран стиль аккомпанемента "Тишина")
4) Новые простые аккомпанементы
Переборы, бой, просто аккорды - это хорошо. Но иногда хочется и простой аккомпанемент на 1-2 нотах текущего аккорда с определенной ритмикой. И он гораздо лучше подходит для хип-хопа и поп-музыки. Ну и для остальных стилей временами он хорош. Поэтому был добавлен набор простых аккомпанементов в дополнение к уже существующим более сложным.
5) Новые сочетания опорной громкости барабанов, аккордов и мелодии
Раньше барабаны были самые тихие, громкость аккомпанемента - выше или равна громкости барабанов, громкость мелодии - выше или равна громкости аккомпанемента.
Теперь все громкости отвязаны друг от друга. Могут барабаны быть громче всех, может аккомпанемент, и может мелодия. Вот здесь на скриншоте барабаны самые громкие:
6) Варьируемый аккомпанемент
Раньше стиль аккомпанемента выбирался при генерации в начале на всю мелодию и не менялся. Казалось что это поможет зафиксировать стиль мелодии и не менять его. Но почему бы и не менять его посреди мелодии? Так что теперь можно включить "Варьируемый аккомпамент" в настройках Muzz и тогда вступления, куплеты и припевы смогут иметь свои персональные стили аккомпанемента. Генерируемые мелодии смогут перетекать из лирических переборов в куплетах в долбежку одной нотой в припевах (на любителя, конечно, такие песни, поэтому пункт "Варьируемый аккомпанемент" по умолчанию выключен).
7) Варьируемая громкость инструментов, аккомпанемента, барабанов
Раньше громкость выбиралась единственный раз при сочинении мелодии (теми движками на предыдущем скриншоте) и была неизменной для всех нот барабанной партии, партии аккомпанемента или партии мелодии, соответственно.
Теперь для вступления, куплета, припева случайно выбирается последовательность громкостей нот в виде шестнадцати hex-цифр от 00 до FF. В итоге в поле "Мелодии" нового раздела "Варьируемая громкость" отображается 32 символа (16 нот по 2 символа), обозначающие громкость конкретных нот мелодии (относительно опорной громкости, выбранной движками на предыдущем скриншоте, FF - это опорная громкость х 1, а 00 - опорная громкость х 0, т.е. нулевая независимо от уровня опорной громкости, ну и промежуточные значения вроде 80 - это половина опорной громкости и т.д.).
Аналогичные отдельные поля с последовательностями значений громкости теперь есть для аккомпанемента ("Аккордов") и барабанов ("Барабанов"). Для вступлений, куплетов и припевов могут быть как одинаковые последовательности громкости, так и различные (это выбирается рандомно при генерации мелодии).
Алгоритм варьирования громкости старается держать уровни громкости нот на высоких значениях (в пределах некоторого случайного диапазона), но иногда (случайным образом) специально зануляет громкости некоторых нот мелодии, аккомпанемента или барабанов:
Такое зануление громкостей как будто бы удаляет ноты из соответствующих дорожек мелодии, аккомпанемента и/или барабанов, это создает новые барабанные ритмы и стили аккомпанемента на базе существующих.
Вернуть всё взад (отключив "Варьируемую громкость") можно в настройках Muzz:
Насчет варьирования громкости барабанов были сомнения - может ли в реальности ударник на барабанной установке то тихо, то погромче, то еще погромче, то очень громко бить по барабанам? Но было решено ввести ее и для барабанов ради необычного звучания генерируемых мелодий.
8) Дублирование аккомпанемента на октаву вверх
Звучание аккордов можно сделать помассивней и пообъемней продублировав их на октаву-две выше или ниже основных. Это было добавлено в алгоритм генерации. Команда DAU с флажком включения/выключения дублирования аккордов на октаву вверх добавляется в скрипт генерации рандомно для вступления, куплетов и припевов. Это придает дополнительное разнообразие и так обширному набору аккомпанементов.
9) Выбор устройства вывода MIDI
В некоторых системах программный синтезатор MIDI - первое устройство. В таких системах Muzz проигрывал мелодии и раньше (выводил MIDI-команды в устройство номер 0). Теперь название MIDI-устройства для вывода отображается в пункте "MIDI-выход" настроек Muzz.
В других системах программный синтезатор - не первое устройство . В этом случае Muzz не проигрывал ничего. Теперь стало можно переключить вывод MIDI-команд на другое устройство.
Например, в этой Windows 98 на скриншоте ниже, запущенной в эмуляторе LBochs на Android-телефоне, два устройства. Первое - MIDI-выход. Второе - программный синтезатор. И только второе проигрывает MIDI. Указываем второе и Muzz проигрывает мелодии корректно.
10) Отображение жанра проигрываемой мелодии на панели статуса
На панели статуса главного окна PaintCAD 4Windows кроме отображения окраса мелодий (мажор, норм или минор), номера текущего проигрываемого такта и общего количества тактов в мелодии теперь отображается и жанр - Рок, Поп, Хип-хоп или Регги.
11) Изменение структуры сохраняемых MID-файлов
Оказывается, все MIDI-события, связанные с темпом, рекомендуется записывать в отдельную дорожку в MID-файле (так написано в MIDI-спецификации). Поэтому теперь при сохранении понравившейся проигрываемой мелодии в MID-файл по Alt+P (или в меню Экстра - Генератор музыки Muzz - Сохранить проигрываемую мелодию в MID/QMP) создается файл с четырьмя дорожками (а не тремя как раньше): события темпа, мелодия, аккомпанемент и барабаны.
Также было обнаружено, что если укладывать в MID-файл ноты с минимальными смещениями в одно дельта-время, то:
под Windows сгенерированные Muzz-ом MID-мелодии играются как положено,
а под Android дефолтный движок проигрывания MIDI-мелодий проигрывает их сверхбыстро (раза в 4 быстрее положенного) почему-то.
Пробовал качать на телефон MIDI-плееры: те, кто используют стандартные способы проигрывания MIDI, играют слишком быстро. А те, кто на сторонних звуковых базах - играют в нормальном темпе. Попробовал открыть и сохранить сгенерированный MID-файл в стороннем редакторе (Cakewalk) - стал проигрываться на Android нормально во всех плеерах. После разбора внутренностей исправленного пересохранением MID-файла стало ясно, что все сдвиги в дельта-временах у него умножены на 12, и в полях тайминга соответствующие изменения (ускорение в 12 раз). Поставил аналогично в Muzz при сохранении в MID увеличенную скорость (по 12 новых дельта-времен в старом одном дельта-времени), умножил все задержки на 12 - и такой файл стал нормально проигрываться под Android. Чудеса, конечно, ну да ладно.
Теперь сгенерированные на телефоне в эмуляторе ПК (например, LBochs с Windows 98/XP) MID-файлы можно выкинуть из эмулятора наружу в обычную файловую систему андроида и слушать их в нормальном темпе, выбирая хорошие.
Мелодии, сгенерированные доработанным Muzz
а) 6 мелодий жанра Рок:
б) 6 мелодий жанра Поп:
в) 6 мелодий жанра Хип-хоп:
г) 6 мелодий жанра Регги:
Попробовать самому погенерировать музыку в Muzz
Скачайте PaintCAD 4Windows по ссылке http://blackstrip.ru/pcw.zip
(если по клику не качает - скопируйте ссылку и вставьте вручную в адресную строку новой вкладки вашего браузера, т.к. многие хромиум-подобные браузеры сегодня не любят http ссылки на https сайтах и не реагируют на клики на них).Распакуйте pcw.zip в любую папку.
Запустите paintcad.exe.
При первом запуске пару раз нажмите Enter (первый раз - выбрать язык интерфейса, второй раз - закрыть окно краткого обучения).
После появления главного окна нажмите Ctrl+P чтоб Muzz начал играть или Ctrl+Shift+P чтобы настроить Muzz. Также можно нажать 0 (ноль) и вручную попасть в меню, появившемся наверху главного окна, в раздел Экстра - Генератор музыки Muzz.
Если играет мелодия, которая нравится - нажмите Alt+P и сохраните её в MID-файл.
Интересных всем мелодий.
Комментарии (7)
SADKO
03.02.2023 10:56Что-тут сказать, автор кросава, сделал шикарную иллюстрацию, того на что способен структурированный рандом с учётом основ сольфеджио...
...ирония в том, что множественные попытки скурить нейросети ноты, заканчиваются в лучшем случаем не к месту склеенным заученным паттернам, вместо ожидаемой генерализации структур, не очевидных для далёких о музыкальных практик людей
А тут вот она, на изнанку вывернута песенка, на красном блюдечке да с голубой каемочкой ;-)
И хотя это конечно-же не всё, за смысловой момент тут во многом, и даже избыточно, отвечает авось. Но представление имхо людям даст...
...и я бы только посоветовал в демках, раз уж разговор за рок, использовать хорошие ритм сеты и гитарные синтезаторы, что бы звучало вкусно так, что б зажигалки и телефоны выползали из карманов :-) ну и по другим стилям, тупость аранжировки можно срыть звуковой кашей. Типа там где дудки не легатто, им хвосты добавит ревер, а удавят барабаны...
DreamingKitten
Что у вас по лицензированию?
Допустим, мне сгенерированная композиция понравилась настолько, что я захочу её использовать в своём проекте (возможно, коммерческом). Что делать?
blackstrip Автор
Я думаю, можно брать композицию и использовать как будто сами сочинили. Т.к. Muzz просто вызвал 100 раз функцию Random, случайно выбрал аккорды, случайно из гаммы взял ноты мелодии, случайный ритм барабанов из набора ритмов и сложил все это.
DreamingKitten
Лучше уточнить у автора.
А то мало ли что.
xagoje
а по какой лицензии распространяется сама программа? и что там в условиях указано?
blackstrip Автор
распространяется без лицензии, никаких условий, поэтому все что выдает - можно брать себе без страха нарушения чьих-то прав