В данной статье мне хочется рассказать о своем алгоритме драм-машины на базе нейронной сети.
Драм-машина предназначена для создания и редактирования повторяющихся музыкальных ударных фрагментов.
Классическим примером драм машины является драм-машины от кампании Roland (TR-808 и TR-909).
Классические драм машины основаны на принципе пошагового программирования и включают в себя секвенсор, с помощью которого можно сделать цифровую запись аранжировки, то есть запрограммировать инструментальную пьесу.
Альтернативным подходом к программированию последовательности ударов является нейросетевой подход.
В данном случае драм машина использует нейронную сеть для получения повторяющихся ударов.
Алгоритм работы нейронной драм-машины
Ритмические партии ударов получаются после настройки нейронной сети:
определения классов нейронов и расположении их в сети с принципом влияния.
Так предлагается использовать нейроны задержки и обычные нейроны.
Обычные нейроны имеют пороговые уровни. Так если пороговый уровень имеет значение 3, то после 3-х входных сигналов данный нейрон сработает и передаст сигнал далее по сети в соответствии с принципом активности.
Данный принцип определяет, что нейроны могут иметь две роли — быть как активными (влияющими — передавать сигнал), так и пассивными (принимающие сигнал).
Нейроны задержки также имеют пороговый уровень, который является интервалом времени по истечению которого после поступления входного сигнала срабатывает нейрон задержки. Интервал времени в данном случае измеряется в тактах работы нейронной драм машины.
Также вводится третий вид нейронов — нейроны пейсмейкеры. Они также имеют пороговый уровень, который измеряется в тактах работы драм-машины и определяет период их срабатывания.
Построение управляющей нейронной сети следует начинать с включения в сеть нейронов пейсмейкеров. Они являются всегда только активными. После них в сеть могут встраиваться обычные нейроны и нейроны задержки.
Выходные сигналы всех нейронов имеют единичную величину. При распространении сигналов от пейсмейкеров до конечных нейронов в моменты активации нейронов воспроизводится соответствующие нейронам сэмплы.
Программная реализация
В роли сэмплов могут выступать произвольные звуки, например гитара или барабаны.
Поэтому каждому нейрону назначается звуковой фрагмент из файла.
Также настраиваются приоритеты звучания нейронов. Это необходимо, чтобы исключить наложение сэмплов друг на друга. Также воспроизведение сэмпла нейрона можно отключать или изменить его громкость. Это актуально в том случае, если требуется создать часть управляющей нейронной сети, в то время как конечные пассивные нейроны будут воспроизводить звук.
После настройки сети определяется величина единицы времени или скорость тактов драм машины.
Программу под Windows можно скачать по адресу: тут.
В программе чтобы установить или убрать связь нужно выбрать активный узел, кликнув по нему,
и зажав клавишу Z кликнуть на пассивный узел.
Примеры работы
Нейросетевой принцип программирования последовательности ударов позволяет получать порою интересные паттерны.
Примеры использования таких паттернов после небольшой обработки можно послушать в следующих треках:
тут и тут.
Пример работы драм-машины можно понаблюдать на следующем видео:
Автор: vladshow