Драм-машина на нейронной сети

В данной статье мне хочется рассказать о своем алгоритме драм-машины на базе нейронной сети.
Драм-машина предназначена для создания и редактирования повторяющихся музыкальных ударных фрагментов.
Классическим примером драм машины является драм-машины от кампании Roland (TR-808 и TR-909).
dd8e5a27cec2420d8de12eeaad907dba.jpgea763e9f29f14428b815614f826b323d.jpg
Классические драм машины основаны на принципе пошагового программирования и включают в себя секвенсор, с помощью которого можно сделать цифровую запись аранжировки, то есть запрограммировать инструментальную пьесу.
Альтернативным подходом к программированию последовательности ударов является нейросетевой подход.
В данном случае драм машина использует нейронную сеть для получения повторяющихся ударов.

Алгоритм работы нейронной драм-машины


Ритмические партии ударов получаются после настройки нейронной сети:
определения классов нейронов и расположении их в сети с принципом влияния.
Так предлагается использовать нейроны задержки и обычные нейроны.
Обычные нейроны имеют пороговые уровни. Так если пороговый уровень имеет значение 3, то после 3-х входных сигналов данный нейрон сработает и передаст сигнал далее по сети в соответствии с принципом активности.
Данный принцип определяет, что нейроны могут иметь две роли — быть как активными (влияющими — передавать сигнал), так и пассивными (принимающие сигнал).
Нейроны задержки также имеют пороговый уровень, который является интервалом времени по истечению которого после поступления входного сигнала срабатывает нейрон задержки. Интервал времени в данном случае измеряется в тактах работы нейронной драм машины.
Также вводится третий вид нейронов — нейроны пейсмейкеры. Они также имеют пороговый уровень, который измеряется в тактах работы драм-машины и определяет период их срабатывания.

Построение управляющей нейронной сети следует начинать с включения в сеть нейронов пейсмейкеров. Они являются всегда только активными. После них в сеть могут встраиваться обычные нейроны и нейроны задержки.
0439f9f74d364674bae257623bfc6375.png
Выходные сигналы всех нейронов имеют единичную величину. При распространении сигналов от пейсмейкеров до конечных нейронов в моменты активации нейронов воспроизводится соответствующие нейронам сэмплы.

Программная реализация


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

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

После настройки сети определяется величина единицы времени или скорость тактов драм машины.

Программу под Windows можно скачать по адресу: тут.

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

Примеры работы


Нейросетевой принцип программирования последовательности ударов позволяет получать порою интересные паттерны.

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

Пример работы драм-машины можно понаблюдать на следующем видео:

Комментарии (2)

  • 1 июля 2016 в 10:26 (комментарий был изменён)

    +1

    http://i.kinja-img.com/gawker-media/image/upload/s--OgH68FsC--/c_fit, f_auto, fl_progressive, q_80, w_636/mi4ozyfa6nhvrdj1ackk.gif (неплохо с нейросетевой драм-машиной смотрится).
  • 1 июля 2016 в 11:29 (комментарий был изменён)

    0

    Простите, но [искусственная] нейронная сеть это устоявшееся математическое понятие, а именно: это обучаемый параметризированный ациклический граф с послойной структурой. У вас же здесь просто агнетно-ориентированный подход (агенты организованы в граф). Зайдя в статью я ожидал увидеть именно нейронную сеть, которую вы обучили и которая моделирует работу драм-машины. Но я не увидел ни нейронной сети, ни обучения, ни датасетов. И был разочарован, т.к. ожидал другого и потратил свое время. К вам абсолютно не было бы претензий, если бы вы более четко формулировали заголовок.

© Habrahabr.ru