Как Машинное Обучение Позволяет Создавать Музыку



Как машинное обучение позволяет создавать музыку

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

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

Мы постараемся изложить основные моменты простыми словами.

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

среда.

Разница между чувством и слухом – это внимание.

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

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



Основная идея

Цепь Маркова описывает псевдослучайный процесс перехода из одного состояния в другое без запоминания предыдущего состояния (такой переход называется «марковизмом»).

Короче говоря, переход из одного состояния в другое — это случайный процесс, носящий вероятностный характер.

Все это хорошо сочетается с алгоритмизацией музыкальных композиций.

Ноты (их 128) являются вероятностными состояниями.

Для реализации всего процесса я буду использовать цепь Маркова второго порядка, а это значит, что следующее состояние системы будет построено на основе двух предыдущих (примечания).

Все вероятности хранятся в матрице 2^14x2^7. На вход синтезатор получает два целых числа (0 <= n, m <= 127), which act as starting notes. На их основе алгоритм рассчитывает/генерирует следующую ноту и продолжает процесс расчета до бесконечности (пока вы его не остановите).

Для упрощения задачи громкость всех нот будет одинаковой (127), как и временной интервал между ними (300 мс).

Для корректной работы этого подхода необходима матрица весов, которая получается с помощью трех нот. Для каждой комбинации из трех нот первые две всегда являются «начальным» состоянием, а третья — «конечным»; результатом всегда является приращение соответствующего поля в матрице весов [первая нота*127+вторая нота][третья нота].

Далее матрица весов «нормализуется» (или преобразуется) в матрицу перехода путем замены целых чисел их процентом от суммы всех значений в строке.



Процесс изучения

Описанный в статье алгоритм использует для обучения MIDI-файлы (с расширением .

mid), он обрабатывает аудиофайл по нотам, одновременно обновляя матрицу весов с помощью Java-инструмента под названием Sequencer. Образец кода:

   

public Learn(String midiName) { try { Sequence sequence = MidiSystem.getSequence(new File(midiName)); int id[] = {0, 0, 0}; int nArr[][] = new int[2][2]; for(Track track : sequence.getTracks()) { for(int i = 0; i < track.size(); i++) { MidiEvent event = track.get(i); MidiMessage message = event.getMessage(); if(message instanceof ShortMessage) { ShortMessage sm = (ShortMessage) message; if(sm.getCommand() == NOTE_ON) { int key = sm.getData1(); for(int j = 0; j < 2; j++) { if(id[j] == 2) { id[j] = 0; Score.updateWeight(nArr[j][0], nArr[j][1], key); } else { nArr[j][id[j]++] = key; } } } } } } cnt++; } catch(InvalidMidiDataException|IOException e) { e.printStackTrace(); } }



Выбор правильной ноты

Этот процесс основан на случайных величинах: текущем состоянии (две последние ноты последовательности) и полученной ранее матрице перехода.

Вероятность генерируется случайным образом с помощью функции Java Math.random().

Затем алгоритм просматривает матрицу перехода и возвращает вероятность, которая соответствует (или наиболее близка к ней) вероятности, сгенерированной функцией Math.random().

Результат воспроизводится с помощью инструмента «Синтезатор» — результат определяется двумя стартовыми нотами, случайно сгенерированными или выбранными пользователем.



Как машинное обучение позволяет создавать музыку

Здесь
пример композиция, созданная программой Markov Composer, а на изображении выше показан интерфейс Приложения .

Теги: #Популярная наука #Звук #Алгоритмы #Сделай сам или сделай сам #музыка

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

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.