Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Генерация музыки в настоящем времени

Anna | 5.06.2014 | нет комментариев

«Как автоматизировать сочинение музыки?» — данный вопрос беспокоит умы музыкантов еще со времен средневековья. Кеплер превращал траектории движения планет в музыку; Моцарт и его современники изобрели игру в «музыкальные кости» — они броском кубиков выбирали из огромный таблицы такты и составляли из них менуэты. Но только с возникновением компьютеров алгоритмическая генерация музыки получила реальное становление. Теория вероятности, марковские цепи, неестественные нейронные сети — все это стало инструментами создания музыки.

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

Будем считать, что со введением покончено и перейдем сразу к моей работе. Я начал увлекаться генерацией музыки пару лет назад и предпочел эту тему в качестве своей магистерской работы на мехмате ЮФУ.
Тема моей диссертации звучит жутко: «Инкрементная генерация музыкальных произведений на основе динамических паттернов.» В переводе на русский: генерация музыки в настоящем времени с применением изменяющихся паттернов.

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

Постановка задачи

Я поставил перед собой задачу написать генератор музыки, тот, что бы мог делать следующее:

  • Генерировать благозвучные мелодии;
  • Гармонизировать мелодию, согласно правилам гармоники;
  • Генерировать сопровождение по имеющимся аккордам;
  • Все вышеперечисленное делать в настоящем времени (т.е. на лету, такт за тактом);
  • И при этом разрешать встревать в процесс генерации (менять инструменты, тональность, высоты нот и т.д.);
  • Ну и опционально: выводить все это в виде нот, сберегать в midi и mp3.

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

Используемые инструменты

Разрабатывал я все на языке Java, для которого есть восхитительная музыкальная библиотека jMusic, теснее содержащая музыкальные примитивы, как бы ноты, фразы либо партии, а также имеющая инструменты работы с MIDI. Для воспроизведения звука применялся синтезатор Gervill, входящий в состав JDK 1.7 и разрешающий воспроизводить музыку с применением внешних звуковых банок в формате .sf2. Также была использована библиотечка JAVE (Java Audio Video Encoder) — которая пережимает захваченное wav-аудио в суперкомпактный mp3.

Конструкция генератора

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB