Драм-машина предназначена для создания и редактирования повторяющихся музыкальных ударных фрагментов.
Классическим примером драм машины является драм-машины от кампании Roland (TR-808 и TR-909).
Классические драм машины основаны на принципе пошагового программирования и включают в себя секвенсор, с помощью которого можно сделать цифровую запись аранжировки, то есть запрограммировать инструментальную пьесу.
Альтернативным подходом к программированию последовательности ударов является нейросетевой подход.
В данном случае драм машина использует нейронную сеть для получения повторяющихся ударов.
Алгоритм работы нейронной драм-машины
Ритмические партии ударов получаются после настройки нейронной сети:
определения классов нейронов и расположении их в сети с принципом влияния.
Так предлагается использовать нейроны задержки и обычные нейроны.
Обычные нейроны имеют пороговые уровни. Так если пороговый уровень имеет значение 3, то после 3-х входных сигналов данный нейрон сработает и передаст сигнал далее по сети в соответствии с принципом активности.
Данный принцип определяет, что нейроны могут иметь две роли — быть как активными (влияющими — передавать сигнал), так и пассивными (принимающие сигнал).
Нейроны задержки также имеют пороговый уровень, который является интервалом времени по истечению которого после поступления входного сигнала срабатывает нейрон задержки. Интервал времени в данном случае измеряется в тактах работы нейронной драм машины.
Также вводится третий вид нейронов — нейроны пейсмейкеры. Они также имеют пороговый уровень, который измеряется в тактах работы драм-машины и определяет период их срабатывания.
Построение управляющей нейронной сети следует начинать с включения в сеть нейронов пейсмейкеров. Они являются всегда только активными. После них в сеть могут встраиваться обычные нейроны и нейроны задержки.
Выходные сигналы всех нейронов имеют единичную величину. При распространении сигналов от пейсмейкеров до конечных нейронов в моменты активации нейронов воспроизводится соответствующие нейронам сэмплы.
Программная реализация
В роли сэмплов могут выступать произвольные звуки, например гитара или барабаны.
Поэтому каждому нейрону назначается звуковой фрагмент из файла.
Также настраиваются приоритеты звучания нейронов. Это необходимо, чтобы исключить наложение сэмплов друг на друга. Также воспроизведение сэмпла нейрона можно отключать или изменить его громкость. Это актуально в том случае, если требуется создать часть управляющей нейронной сети, в то время как конечные пассивные нейроны будут воспроизводить звук.
После настройки сети определяется величина единицы времени или скорость тактов драм машины.
Программу под Windows можно скачать по адресу: тут.
В программе чтобы установить или убрать связь нужно выбрать активный узел, кликнув по нему,
и зажав клавиши Ctrl+Z кликнуть на пассивный узел.
Примеры работы
Нейросетевой принцип программирования последовательности ударов позволяет получать порою интересные паттерны.
Примеры использования таких паттернов после небольшой обработки можно послушать в следующих треках:
тут и тут.
Пример работы драм-машины можно понаблюдать на следующем видео:
Комментарии (17)
darkAlert
01.07.2016 11:29+7Простите, но [искусственная] нейронная сеть это устоявшееся математическое понятие, а именно: это обучаемый параметризированный ациклический граф с послойной структурой. У вас же здесь просто агнетно-ориентированный подход (агенты организованы в граф). Зайдя в статью я ожидал увидеть именно нейронную сеть, которую вы обучили и которая моделирует работу драм-машины. Но я не увидел ни нейронной сети, ни обучения, ни датасетов. И был разочарован, т.к. ожидал другого и потратил свое время. К вам абсолютно не было бы претензий, если бы вы более четко формулировали заголовок.
vladshow
01.07.2016 14:36Я был воодушевлен идеей создать программную модель реальной нейронной сети с различными видами нейронов, в том числе нейроны — водители ритма (пейсмейкеры) и обычные нейроны активации с пороговыми уровнями. Позже добавил нейроны задержки. Поэтому решил закрепить свою идею в названии. Как то так…
darkAlert
01.07.2016 14:49+2Можете подробней описать как функционирует каждый тип ваших нейронов:
1) как информация от других нейронов поступает на вход нейрона. Моделируются ли при этом синапсы, т.е. умножается ли на входе сигнал от другого нейрона на некоторый весовой коэффициент W?
2) что происходит в теле нейрона с входными сигналами от других нейронов? В классической модели нейрона они суммируются, например.
3) что за функции активации?
4) как происходит процесс обучения нейронов?vladshow
01.07.2016 15:18+21) Веса синапсов (связей) нейронов моделируются единичной величиной.
2) Текущий сигнал на нейроне равен просто сумме входящих сигналов.
3) В качестве функции активации используется пороговая функция, величина порога которой устанавливается вручную. Т.е. если текущий сигнал нейрона превосходит пороговый уровень, то нейрон активируется, передавая свой единичный сигнал другому нейрону. В момент активации воспроизводится закрепленный за нейроном сэмпл.
4) В данном случае используется своего рода программная модель реальной нейронной сети и ручное управление ею. У меня была идея добавить механизм обучения для произвольных сетей такого вида и выделить из всей сети два класса нейронов входящие и выходящие (как в классическом перцептроне) с настраиваемой сложной внутренней конфигурацией. Но мне показалась эта задача довольно сложной. И все таки хотелось получить ручное управление сетью, т.е. использовать ее основную функцию распространения сигнала.napa3um
01.07.2016 15:57+1https://play.google.com/store/apps/details?id=com.AffinityBlue.NodeBeat
https://play.google.com/store/apps/details?id=cc.openframeworks.SphereTonesvladshow
01.07.2016 16:25-1NodeBeat похожа, в то время как SphereTones не очень.
Идеей написания моей программы послужил VST плагин Audio Damage Axon:
youtube видеоnapa3um
01.07.2016 16:56+1Вот, Reactable я как раз и гуглил (название забыл, а по всяким ключевым словам типа «visual music composer» ищутся только «классические» «сеточные» редакторы). А NodeBeat в закладках в плэймаркете оказался.
В общем, это не нейроны, это «музыкальные агенты», соединяемые потоками событий (как уже отметили выше). Если уж вам хотелось обозвать это всё каким-нибудь околоматематическим термином.
Но если всё это воспринимать не как искусственную нейросеть (которая уже застолбила за собой название), а именно как исследовательскую модель воспроизведения ритма мозгом (т.е., поиском специализаций нейронов, достаточных для воспроизведения «музыкальных феноменов»), то, наверное, и «простительно» использование слова «нейросеть». Нужно было только в заголовке и в повествовании отметить данный факт как-то, чтобы энтузиасты машинного обучения не разочаровывались.vladshow
01.07.2016 17:07+2Вначале была классическая модель перцептрона с настройкой только количества слоев и нейронов в слое.
Вот как это выглядело:
Потом я усовершенствовал редактор сети до настройки произвольной конфигурации. Поэтому наверно потерялось восприятие, что это классическая нейронная сеть.
Наверно весь парадокс в том, что нейронная сеть есть частный случай агентно-ориентированного графа.
Shifty_Fox
10.11.2016 14:43+1Ок, здесь важно понимать вот что.
Фотон может быть промаркирован в левой или правой щели. Пусть так, но это никак не отразилось на его интерференции. Грубо говоря, это все еще фотон, который пролетел через обе щели, и 50% его помечено правым, а 50% левым. Далее фотон либо натыкается на стиратель бирки, либо нет. Если нет — он врезается в экран, обладая маркером спина, и волновая функция схлопывается, однозначно выбирая лево или право. Даже будь поверхность под углом — во время первой столкновении волны с поверхностью бросается кубик — здесь\не здесь, и по мере покрытия ее поверхностью, рано или поздно произойдет схлопывание.
Вторая ситуация, когда мы попадаем на стиратель бирки, и здесь все возвращается на начало — фотон просто интерферирует сам с собой как волна, поскольку волна при столкновении с детектором не промаркирована, ее функция не схлопывается.
Нет никакой передачи информации в будущем, есть принятие решения о схлопывании волны при ударе этой волны о что-то.
На самом деле чтобы понять, схлопывается ли вся волна мгновенно в момент первого столкновения, нужно ставить стиратель бирки только в левую или только в правую часть. Тогда, если стерли слева, а волна справа попала позже, и при том схлопнулась, несмотря на то, что сначала в детектор ударилась волна слева, без маркера — это покажет некий перенос информации выше скорости света. Но это надо поставить эксперимент.vladshow
01.07.2016 16:30Не за что.
Все остались при своем мнении.napa3um
01.07.2016 17:01Я назвал бы это в стиле «Визуальный редактор ритма Neuron: агентно-ориентированный подход к музыкальному синтезу и композиции». Т.е., слово «нейрон» в вашей концепции задаёт лишь сеттинг для агентов, но принципиально концепцию не меняет. Можно даже скины придумать, чтобы вместо нейронов были зверушки или шестерёнки.
mediareaper
01.07.2016 15:59Есть такая стародавняя программа… cema nodal… только у них сайт не открывается. А вдруг проект cema nodal здох и его душа реинкарнировалась в Вашем творческом порыве?
napa3um
http://i.kinja-img.com/gawker-media/image/upload/s--OgH68FsC--/c_fit,f_auto,fl_progressive,q_80,w_636/mi4ozyfa6nhvrdj1ackk.gif (неплохо с нейросетевой драм-машиной смотрится).
silvansky
Да это же Нейронный Шаман!