Делаем барабанную установку на Arduino

Rustamm
Offline
Зарегистрирован: 11.03.2020

Есть необходимость в сборе барабанной установки на арудино. В ютубе нашел ролики на эту тему, но там в итоге получался барабанный МИДИ модуль, сигнал которого уходил в FL Studio. Этот вариант меня не устроил и я начал думать, как реализовать барабанную установку. В голову пришли две идеи.

 

Первая идея: 

Использовать пьезодатчики, для "регистрации" удара. Далее, при срабатывании датчика/датчиков ардуино обращается к micro sd, либо sd карточке и берет оттуда один из аудио файлов. Либо несколько файлов, если сработали несколько датчиков. Далее эти аудио файлы подаются на выход mini jack 3.5. К выходу уже по желанию подключаются наушники/колонки.

В данной идее не ясно, будет ли ардуино одновременно воспроизводить аудио файлы. Да, я понимаю, что одновременно два датчика не сработают, будет разница в миллисекундах, но аудио файлы должны наложиться друг на друга и звучать одновременно. Опасаюсь того, что ардуино не будет так воспроизводить аудио, а начнет воспроизводить их последовательно, либо еще каким-то образом, но абсолютно не так, как нужно.

Вторая идея:

Сделать по сути МИДИ модуль, данные из ардуино передаются на смартфон. Смарфон либо из своей памяти подтягивает необходимые аудиофайлы и воспроизводит их. Либо отправляет их в FL Studio mobile, а там уже открывается необходимый плагин и звук воспроизводится с него.

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

Хотелось бы услышать какой вариант лучше по реализации, и как можно решить вопрос с "неясностями" 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Более перспективным, на мой взгляд, является вариант с MIDI, т.к. в нем:

1. Четко разделяются две достаточно сложные независимые друг от друга задачи - обработка сигнала с датчика и формирование звука.

2. Известно (в том числе и из многолетней практики), что способ описания музыкального звука, реализованный в MIDI, адекватно описывает способы игры на ударных инструментах.

 

Это, так сказать, ответ на вопрос в конце темы.

Но в этой связи у меня также появились вопросы:

1. Чем не устраивают существующие способы имитации ударной установки?

2. Чем предполагаемый проект будет отличаться от множества существующих и реально работающих аналогов?

3. Что именно Вы подразумеваете под словами "Ардуино воспроизводит файлы"? Как технически Вы это себе представляете?

Rustamm
Offline
Зарегистрирован: 11.03.2020

Про вариант с MIDI я вас услышал, приму к дальнейшим размышлениям по этой теме.

По вопросам: 

1)В интернете нашел только способ имитации с  MIDI. Этот вариант я не хочу использовать, так как постоянно будет необходим ПК для игры на барабанах (для меня это минус, хотелось бы сделать более мобильный проект. Можно, конечно, использовать ноутбук, но его тоже нужно переносить и тд.)

2) Про аналоги, данный проект как минимум обойдется дешевле любого готового аналога. Во-вторых можно использовать разные звуки барабанов (к примеру вытащить необходимые "звуки" из EZDrummer 2). То есть не будет никаких ограничений по настройке.  

3) Технически представляю, что при срабатывании датчика ардуино обращается к microsd карточке, и "вытаскивает" оттуда определенный аудио файл, который подается на выход - jack 3.5.  Если же вы говорили про вариант со смартфоном, то написать приложение, которое по сути будет выполнять тоже самое.

sadman41
Offline
Зарегистрирован: 19.10.2016

Вы видели у Arduino jack 3.5"?

Rustamm
Offline
Зарегистрирован: 11.03.2020
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Rustamm пишет:

1)В интернете нашел только способ имитации с  MIDI. Этот вариант я не хочу использовать, так как постоянно будет необходим ПК для игры на барабанах (для меня это минус, хотелось бы сделать более мобильный проект. Можно, конечно, использовать ноутбук, но его тоже нужно переносить и тд.)

А как вообще связаны MIDI и ПК?

MIDI - это, вообще-то цифровой интерфейс музыкальных инструментов. Т.е. служить для связи музыкальных инструментов между собой. Откуда взялся ПК?

Цитата:

2) Про аналоги, данный проект как минимум обойдется дешевле любого готового аналога.

Вы заблуждаетесь: handmade в принципе не может стоить дешевле изделия с конвейера.

А для высокотехнологичных устройств разница может достигать нескольких порядков (т.е. тысяч и миллионов раз) за счет того, что дорогая разработка "размазывается" на тысячи и миллионы изделий.

Цитата:

Во-вторых можно использовать разные звуки барабанов (к примеру вытащить необходимые "звуки" из EZDrummer 2). То есть не будет никаких ограничений по настройке.  

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

Цитата:

3) Технически представляю, что при срабатывании датчика ардуино обращается к microsd карточке, и "вытаскивает" оттуда определенный аудио файл, который подается на выход - jack 3.5.  Если же вы говорили про вариант со смартфоном, то написать приложение, которое по сути будет выполнять тоже самое.

Что Вы подразумеваете под "вытаскивает"?

И еще любопытно, какие форматы аудио файлов Вы видите в своем проекте?

Ну и заодно - какая именно модель Ардуино будет использоваться?

sadman41
Offline
Зарегистрирован: 19.10.2016

Rustamm пишет:

К примеру "https://www.chipdip.ru/product/troyka-line-out-mini-jack"

Это не "у Arduino", а "у Iskra JS".

sadman41
Offline
Зарегистрирован: 19.10.2016

andriano пишет:
И еще любопытно, какие форматы аудио файлов Вы видите в своем проекте?

Судя по размаху - может быть даже FLAC.

Rustamm
Offline
Зарегистрирован: 11.03.2020

Да, я понимаю, что это для Iskra JS, но судя по технической документации(3 страница в документе, можете найти по ссылке, которую отправлял ранее), должно работать и с ардуино

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

каждому барабану надо дать по отдельной ардуине

sadman41
Offline
Зарегистрирован: 19.10.2016

Rustamm пишет:

Да, я понимаю, что это для Iskra JS, но судя по технической документации(3 страница в документе, можете найти по ссылке, которую отправлял ранее), должно работать и с ардуино

Да нет, мне всё равно конечно. Просто имейте в виду, что "пищать" (стр. 3 в документе) и "воспроизводить аудиофайл" - это две большие разницы.

Rustamm
Offline
Зарегистрирован: 11.03.2020

Про связь ПК и MIDI

Данные передаются с ардуино в пк, далее используется программа hairless MIDI, чтобы перенаправить данные с serial port на MIDI. MIDI направляется в FL Studio. 

 

Про дешевизну

Хорошо, но к примеру, если рассматривать самый бюджетные варианты "https://www.muztorg.ru/product/A095043", https://pop-music.ru/products/elektronnaya-udarnaya-ustanovka-soundking-skd120-888880021442/ . Цена более 20 тысяч. Если же я соберу свой handmade, его цена будет как минимум в 2 раза меньше. Я понимаю, что качество и возможности готового продукта будут выше, но и качества handmade мне должно хватить.

 

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

 

По модели, у меня без дела лежит UNO, думаю использовать ее, но если понадобится, готов купить Mega

Под вытаскивает понимаю так, что при срабатывании одного из датчиков ардуино обращается к определенному файлу на sd карточке и воспроизводит его. 

С форматом еще не определился, так как первый раз взялся за подобный проект. До этого был опыт с ардуино, но не колоссальный. Прошу подсказать, что и как лучше сделать, для реализации данного проекта. Если можете также подсказать необходимый формат, то буду весьма благодарен.

 

 

Rustamm
Offline
Зарегистрирован: 11.03.2020

Да, сразу не заметил. Полагаете аудио файл воспроизвести не удастся? 

Rustamm
Offline
Зарегистрирован: 11.03.2020

ua6em пишет:

каждому барабану надо дать по отдельной ардуине

Это, конечно, будет работать. Но я бы хотел собрать на 1 микроконтроллере, максимум на 2

sadman41
Offline
Зарегистрирован: 19.10.2016

Rustamm пишет:

Да, сразу не заметил. Полагаете аудио файл воспроизвести не удастся? 


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

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Rustamm пишет:

Про связь ПК и MIDI

Данные передаются с ардуино в пк, далее используется программа hairless MIDI, чтобы перенаправить данные с serial port на MIDI. MIDI направляется в FL Studio. 

Нет, ну это Вы пишете, как у Вас организовано сейчас. Но это же не единственный возможный вариант. У меня, например, работает связка: MIDI-keyboard - MIDI-box - MIDI-synthesyzer. Как видите, никакого ПК.

Цитата:

Про дешевизну

Хорошо, но к примеру, если рассматривать самый бюджетные варианты "https://www.muztorg.ru/product/A095043", https://pop-music.ru/products/elektronnaya-udarnaya-ustanovka-soundking-skd120-888880021442/ . Цена более 20 тысяч. Если же я соберу свой handmade, его цена будет как минимум в 2 раза меньше. Я понимаю, что качество и возможности готового продукта будут выше, но и качества handmade мне должно хватить.

Видите ли, дело может обстоять следующим образом:

- приходите Вы в магазин и видите устройство за $500. Что-то слишком дорого - думаете Вы, - я соберу такой за $100. 

- покупаете деталей на $100 и действительно собираете полный аналог. Но вот беда - ему нужна прошивка, которой у Вас нет. 

- и тут выясняется, что разработка прошивки стоит $2000000, а те "лишние" $400, которые Вы думали сэкономить - просто цена прошивки, разделенная на тираж в 5000 экземпляров. Если у Вас только 1 экземпляр вместо 5000, то сэкономить, мягко говоря, не получится.

Цитата:

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

Записанный звук - это еще далеко не сэмпл пригодный для воспроизведения. Это - лишь заготовка для него.

Цитата:

По модели, у меня без дела лежит UNO, думаю использовать ее, но если понадобится, готов купить Mega

Под вытаскивает понимаю так, что при срабатывании одного из датчиков ардуино обращается к определенному файлу на sd карточке и воспроизводит его. 

Ни Уно, ни Мега не способны воспроизводить звук. Можно, конечно, к ним добавить аппаратное устройство звуковоспроизведения типа dfplayer или vS1053b, но есть большая вероятность, что между ударом по датчику и началом звука будет непозволительно большая задержка.

Есть и другой аспект.

Я ведь с самого начала рекомендовал разделить задачи взаимодействия с датчиком и воспроизведения звука. Теперь оказывается, что со второй задачей без дополнительного "железа" контроллеры типа Уно/Нано/Мини/Мега справиться принципиально не могут.

Но и с первой задачей не все гладко. Я тут попытался оценить, что нужно для того, чтобы качественно снять сигнал с датчика, и у меня получилось, что Уно/Нано/Мини/Мега могут на пределе обработать только 4 датчика. Если же мы хотим иметь от 8 датчиков и больше (на один инструмент желательно иметь не менее 2 датчиков) то самый подходящий контроллер из широко применяемых в Ардуино - Blue Pill (stm32f103).

Ну и вдогонку уж упомяну: единственный контроллер способный работать со звуком - это Ардуино Дуе.

Цитата:

С форматом еще не определился, так как первый раз взялся за подобный проект. До этого был опыт с ардуино, но не колоссальный. Прошу подсказать, что и как лучше сделать, для реализации данного проекта. Если можете также подсказать необходимый формат, то буду весьма благодарен.

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Rustamm пишет:

ua6em пишет:

каждому барабану надо дать по отдельной ардуине

Это, конечно, будет работать. Но я бы хотел собрать на 1 микроконтроллере, максимум на 2

тогда только миди

Rustamm
Offline
Зарегистрирован: 11.03.2020

 

andriano пишет:

Нет, ну это Вы пишете, как у Вас организовано сейчас. Но это же не единственный возможный вариант. У меня, например, работает связка: MIDI-keyboard - MIDI-box - MIDI-synthesyzer. Как видите, никакого ПК.

Хм, о таком варианте я и не думал. Могли бы вы подробнее рассказать о данной связке?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Частично проект описан здесь:

 
Ну а полного описания до настоящего времени не существует.
Sonologist
Sonologist аватар
Offline
Зарегистрирован: 08.06.2018

Друзья, поправьте меня, если не прав. На мой взгляд, ТС предложил слишком уж простой подход к решению задачи. В лучшем случае проектируемая установка будет работать с чисто фиксированными сэмплами (пусть даже выдранными и Эзетдраммера). В худшем - придется как-то использовать алгоритм синтеза (это ардуино не осилит). Вижу несколько капканов:

1. ТС утверждает, что ему влом таскать с собой ноутбук. Но остальное-то, как то блины с пьезодатчиками, педали чапа и бочки, сиденье (это по-минимуму) таскать придется. Так что, хороший ноут (да с теми же сэмлерами) без всяких ардуин решит задачу на порядки качественнее, а груз особо и не увеличит..

2. Латенция при воспроизведении звуков по сигналам МИДИ - проблема, над которой народ бьется очень давно и не всегда успешно: задержка даже с лучшими драйверами (зачастую - специально заточенныеми под определенное железо) становится все меньше, но полностью не исчезает.

3. Игра на ударных - это не просто долбежка по мембране барабана или по тарелкам. Тембр, атака, громкость и прочее зависят от силы удара, его вектора, инструмента (палочки, помпоны, щетки...),  от  места удара на мембране или меди. Да куча тонкостей. Кстати, МИДИ-протокол многое из этого не умеет передавать, поэтому и используются банки сэмплов гигантских (от слова гигабайты :)) размеров. Без учета всего этого предлагаемый ТС аппарат будет абсолютно бездушным, а, значит, не применимым.

Вообще, хорошая установка - весьма непростое устройство, которое, к тому же, в карман не положить.