Драм машина на ардуино своими руками

Ударная установка на Arduino

Feb 27, 2018 · 7 min read

Для меня музыка является самым мощным триггером ностальгии, дарит возможность путешествовать во времени и переживать связанные с ней периоды жизни, снова и снова.

Знакомство с музыкой Akira Yamaoka я начал еще в начальной школе. Мой друг то ж е был фанатом серии игр Silent Hill, поэтому мы были на одной волне. Прошло много лет, универ подарил мне друга, и волею судьбы наши музыкальные вкусы оказались в одном диапазоне. Школьный друг на тот момент подружился с бас гитарой. ЕОТ, которая меня ненавидела, согласилась петь. Друг начал осваивать барабаны, а я умел играть на гитаре несколько песен по табам. Так появилась на свет наша кавер-группа.

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

Мы придумывали множество концепций, но все они остались на этапе раздумий и споров.

В какой-то момент все закончилось. Больше мы не играли вместе.

Но это было чертовски классно.

Я проснулся с четким пониманием, как сделать рабочий вариант. Хотелось минимализма и возможности в любой момент разобрать все на части и перенести в другое место.

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

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

Каркас

В качестве материала для каркаса был выбран полипропилен. Нужно было купить трубок 3 метра на 32 мм, 4 T-адаптера, 2 заглушки, пачку болтов, 6 уголков, вооружиться дрелью и каркас был готов к сборке.

Источник

Драм машина на ардуино своими руками

Лучше всего использовать 16 мм и 10 мм ДВП для подушечек барабана, а также 5 мм фанеру для тарелок.

Я настоятельно рекомендую ДВП для принятия этого проекта из-за своей простоты во время работы с ним

Тут использован Arduino Mega 2560, потому что включено 9 компонентов. В противном случае вы можете использовать Arduino UNO, что дешевле.

— USB папа-папа кабель.

Для того, чтобы подключить датчики к плате Arduino, вам потребуется либо USB или Jack кабели. Jack кабели лучше в этом случае, но вы будете экономить деньги, если вы используете USB. Помимо кабелей вы также должны подключить свои соответствующие гнездовые разъемы.

Пьезо являются датчики для мышек и тарелок. Фотоэлемент будет работать как педаль HiHat.

— Резисторы, печатная плата, электрический кабель, контактные разъемы.

— винты, гайки и бабочки

— отвертки

Шаг 2: Барабанные колодки
Базовуя фигуру из 16-мм ДВП. Это будет в нижней части нашей колодки. После этого вырезать кольцо из 16-мм ДВП такого же размера, что и дно подушечек барабана.

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

Шаг 3: Голова мембраны

1475742387 f6ojbdaitq32m6i.medium
Чтобы прикрепить головку мембраны к колодкам, вам нужно будет вырезать еще два кольца, которые будут отвечать за проведение и напряг мембраны.

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

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

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

Шаг 4: Завершение барабанных колодок

1475742739 fvseijfitq32mfs.medium

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

Шаг 6: Педаль Hi-hat

1475743441 f3uagpjitq32pj7.medium Для изготовления педали Hi-hat вам потребуется фотоэлемент и тапок на левую ногу. Удалить группу вашего триггера и положить упругую вместо этого.

Переделать тапок и сделать некоторое пространство для датчика на передней части нижней части сандала.
1475744333 f0myvauitq32trb.medium После этого, вам придется соединить кабели к фотоэлементу и к разъему (USB / Jack), что расположенный в задней части сандалия.

Шаг 7: Kick / Bass педаль барабана
1475743721 fkk3kngitq32szf.medium
Есть много вариантов.
Сделайте наклонную структуру древесины и поставить пьезо датчик на ней. Накройте тогда всю педаль каучуком, чтобы изолировать датчик.
Шаг 8: Схема
Датчики обычно должны быть подключены к Arduino плате через резисторы.

Пьезоэлектрические датчики поключаются через резистор 1MOм между аналоговым входом и контактом заземления. Фотоэлемент отлично работает без резистора, но если вы не хотите перегружать его, то вы должны использовать резистор 10кОм и подключить его между аналоговым входом и выводом 5В.
И, наконец, вам придется подключить MIDI-адаптер, который идет, подключенный к Tx0 пину, клеммам заземления и к контакту 5V. Вам придется подключить адаптер с двумя резисторами 220 кOм. Один из них будет идти к TX0 и другой к контакту 5V.

Шаг 9: Arduino код

Источник

Про Ардуино и не только

воскресенье, 6 августа 2017 г.

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

SAM 0735

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

С подключением к Ардуино все просто, кроме собственно пьезоизлучателя нужен резистор на 1МОм. Ниже приведена схема подключения одного барабана.

piezo%2B1 bb

Теперь когда мы можем отследить момент удара по барабану необходимо воспроизвести соответствующий звук. Эту задачу можно возложить на компьютер. Для этого будем передавать ему сообщения в MIDI-формате. Интересующимся рекомендую почитать статью MIDI в деталях. Часть 2 – Сообщения канала, она мне здорово помогла. Для остальных же скажу, что на Ардуино необходимо реализовать передачу MIDI-сообщений NOTE ON и NOTE OFF через Serial. Данные сообщения состоят из 3 байт:

%25D0%2591%25D0%25B5%25D0%25B7%25D1%258B%25D0%25BC%25D1%258F%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B9

Компьютер, а точнее установленная на нем музыкальная программа, при получении с MIDI-входа сообщения NOTE ON воспроизводит ноту с заданной частотой и громкостью (частота ноты определяется ее номером). Соответственно, NOTE OFF используется для снятия ноты. Здесь есть момент, имеющий отношение к нашим MIDI-барабанам: большинство звуков ударных имеют фиксированное время звучания, и управлять их длительностью с помощью команды NOTE OFF мы не можем. Тем не менее данная команда должна рано или поздно поступить, как того требует спецификация. Также отмечу, что для перкуссии в стандарте MIDI зарезервирован отдельный 10-й канал, поэтому Ардуино будет передавать в сообщениях номер канала 9 (нумерация с 0).

Как было сказано ранее, для воспроизведения звука требуется установка соответствующей программы. И такой подход применялся во всех публикациях на данную тему которые мне попадались. При этом входящие с Ардуино сообщения должны перенаправляться на MIDI-вход, например, при помощи программы Hairless MIDI Serial. Я не музыкант, ничего подобного у меня на компьютере не установлено. И захламлять систему ненужным ПО не хотелось бы. Я поступил иначе: написал свою программу, которая читает сообщения из указанного COM порта и воспроизводит соответствующие звуки. Мне для написания ПО ближе всего Delphi, но т.к. это платный продукт, то для размещения здесь готовой программы и исходников к ней я воспользовался бесплатной средой Lazarus. В своей программе можно было бы отойти от формата сообщений MIDI, я рассматривал вариант с передачей номера барабана вместо конкретной ноты. И уже в программе можно сопоставить каждому барабану свой инструмент. Но в итоге я оставил эту затею, по крайней мере для публикации. Пусть лучше это будет MIDI-совместимое решение.

Источник

MIDI DRUMS барабанныйй триггерный модуль

#1 user offA_komar

Encoder myEnc(2, 3); // объявляем, куда подключен энкодер
int n; // переменная, хранящая значение энкодера.
int nn;

#define PIN_BUTTON 4

bool button_state = false;
bool button_long_state = false;
uint32_t ms_button = 0;
long channelTime = 0;
int buttoNflag = 0;

unsigned char PadNote[] = <35,38,42,44,49,52>; // MIDI notes from 0 to 127 (Mid C = 60)

int PadCutOff[] = <600,600,600,600,600,600>; // Минимальная чувствительность

int MaxPlayTime[] = <10,10,10,10,10,10>; // Интервал между срабатываниями

int midichannel; // MIDI channel from 0 to 15 (+1 in «real world»)

boolean VelocityFlag = true; // Velocity ON (true) or OFF (false)

boolean activePad[] = <0,0,0,0,0,0>; // Array of flags of pad currently playing
int PinPlayTime[] = <0,0,0,0,0,0>; // Counter since pad started to play
uint32_t channeltime[] = <0,0,0,0,0,0>;

int pin = 0;
int hitavg = 0; // переменная для уровня удара

Все собрано из готовых модулей навесным монтажом в корпусе от старого CDрома
post 921 0 22855700 1514919899 thumb post 921 0 35422500 1514920311 thumb post 921 0 24031200 1514920356 thumb

Перезагружаем наше готовое устройство и оно сразу определяется как «arduino midi»

Обвешиваем Барабанную Установку триггерами и радуемся.

Источник

Драм-машина + MIDI-синтезатор

1616490919 1 3
1616490896 1 4

Подключите модуль VS1053 к Arduino Nano, как показано на схеме, и загрузите файл INO (в конце шага) в Arduino. Мастер использовал беспаечный макет.

Разъем модуля VS1053 представляет собой двухрядный штыревой разъем. Он сделал вывод, используя разъем ленточного кабеля от сломанного ПК.

Скетч drumsynth0.ino получает байт от ПК по последовательной линии и отправляет его в VS1053. Это очень простая программа, которая позволяет протестировать VS1053. Подключите выходное гнездо к наушникам или динамику компьютера.
Программа Windows DrumSynth0.exe отправляет команды на VS1053. Нажмите кнопку «90 note vel (90 нот)», чтобы сыграть ноту. Вы можете написать свою собственную программу для Windows, или воспользуйтесь одной из множества терминальных программ, доступных в Интернете.

После того, как Arduino отправит байт, он должен отправить фиктивный байт, чтобы переключить часы и позволить VS1053 отправить байт обратно в ответ. Функция SPItransfer () показывает, как это сделать.
DrumSynth0.ino
drumsynth0.pdf

1616490864 1 5
1616490890 1 6

Шаг второй: дисплей
Дисплей представляет собой 2,8-дюймовый цветной TFT ЖК-экран с контроллером ILI9341, 320×240 пикселей. В интернет-магазинах доступно множество экранов, например, вы можете предпочесть разработать свой прибор с сенсорным экраном большего размера. Мастер выбрал дисплей SPI 320×240, потому что он может обновляться достаточно быстро. Дисплей большего размера 480×320 был бы лучше, но мог бы быть слишком медленным.

В купленный мастер дисплей встроен регулятор 3V3. Если вы посмотрите на заднюю часть печатной платы, вы увидите, что она подключена к выводу VCC. Это чип 662K. Таким образом, он может питаться от 5 В, и можно подключить его напрямую к выводу 5 В Arduino. Вывод питания светодиода также может подключаться напрямую, к выводу 5 В. Убедитесь, что на вашем дисплее есть регулятор 3V3. Если его нет, вам понадобится отдельный регулятор.

Для логических выводов дисплея нужен сигнал 3,3 В. Нельзя подключать их напрямую к 5-вольтовым контактам ввода-вывода Arduino. Мастер использовал резисторы 2К2 и 3К3, чтобы понизить напряжение.

Есть готовые библиотеки для ILI9341, но протестировав, их мастер решил написать свою. Библиотеку SimpleILI9341 можно скачать ниже.
Также ему не понравилось, как в Arduino IDE используются «библиотеки». Это затрудняет контроль версий. Поместите все эти файлы в одну папку:
DrumSynth1.ino
SimpleILI9341.h
SimpleILI9341.cpp

SimpleILI9341 имеет стандартный набор команд рисования, очень похожий на все подобные библиотеки.
Некоторые из библиотек, которые можно загрузить, используют специальные циклы синхронизации. SimpleILI9341 написан на C, а не на ассемблере, поэтому он не так быстр, как мог бы быть, но более портативен, и делит шину SPI с другими устройствами.
Программа для Windows позволяет создавать свои собственные шрифты и иконки.
Функция ILI9341Begin () в библиотеке показывает выбранный автором набор команд инициализации. Пользователь может изменить команды, если выберет другой дисплей ILI9341 (например, с большим количеством пикселей или другой ориентацией).

Сенсорным экраном управляют две функции: BeginTouch () и GetTouch (). BeginTouch () устанавливает контакт CD устройства и позволяет настроить xy min, max положения касания так, чтобы положение совпадало с координатами пикселей. GetTouch () возвращает истинное значение, если происходит касание, а также возвращает координаты.
drumsynth1.pdf
SimpleILI9341.cpp
SimpleILI9341.h
DrumSynth1.ino

1616490865 1 7
1616490923 1 8
1616490886 1 9
1616490933 1 10

Шаг третий: пользовательский интерфейс
Есть флажок Beat для каждого из 16 ударов для каждого из 8 каналов. Нажмите на флажок такта, чтобы включить воспроизведение ноты в этом такте. Нота будет воспроизводиться голосом этого канала.

Голос для канала можно изменить, нажав кнопку Voice канала. При нажатии на голосовую кнопку появляется панель, которая позволяет выбрать один из 166 голосов и установить амплитуду канала.

MIDI имеет 128 стандартных голосов, называемых номерами «General MIDI patch» от 0 до 127, мастер использует только первые 119. Он также имеет 47 номеров «General MIDI Percussion » (от 35 до 81). Перкуссионные голоса находятся на канале 9: часть MIDI-команды с номером патча (инструмента) игнорируется, а номер ноты выбирает другой звук перкуссии.

Нажмите Voice для включения или отключения всего канала.
Светодиоды Beat показывают, какой бит в данный момент воспроизводится. Если вы нажмете на один из них, удары справа будут отключены, так что у вас может быть, например, всего 8 ударов.

Темп Slider устанавливает скорость, с которой играют удары.
Кнопка Run включает или отключает запуск шаблона.

Клавиатура нот появляется, когда текущая Нота принадлежит мелодичному голосу. Мелодичным голосом может быть, например, пианино или ксилофон. Клавиатура Note отображает ноту, которая будет воспроизведена. Можно изменить заметку, нажав на клавиатуру или на левую/правую кнопки по бокам клавиатуры.

Всякий раз, когда вы вносите изменения, шаблон сохраняется в текущей «настройке». Процессор может запомнить 6 различных настроек. Кнопка настройки позволяет загрузить новую настройку.

1616490867 1 11

Если вам нужен кодер, вы должны включить его, определив макрос HasEncoder define:

Вы найдете его (с комментариями) в верхней части эскиза.

Кодировщик позволяет установить и определить
темп
работает ли он
Голос текущего канала
громкость текущего канала
Нота текущего ритма или канала
количество ударов на бар
текущая настройка
сколько каналов включено
Если вы нажмете на один из этих элементов управления, он будет выделен красным цветом. Затем поворачивая ручку энкодера, вы регулируете это значение.
Если вы нажмете на ручку, то следующий элемент управления будет выделен.
Энкодер, который мастер использовал, имеет 24 позиции срабатывания, и для каждого «щелчка» он производит полный цикл квадратурных сигналов. Другие энкодеры могут работать по другому. Возможно, вам придется написать свою собственную функцию энкодера.
Функция CheckEncoder () получает входные данные от выводов кодировщика и преобразует их в счетчики вверх / вниз. Если ваш кодировщик другой, вам придется переписать CheckEncoder ().

1616490887 1 12
1616490895 1 13

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

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

Что не ясно из различных инструкций в интернете, так это то, как он работает и как должен быть прикреплен диск. Насколько велико напряжение? Как долго длится импульс? Это один импульс или несколько циклов?

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

Компрессия и расширение минимальные. Чтобы использовать пьезодатчик в качестве датчика ударных, его следует согнуть.
Если вы поместите пьезо между гибкой мембранной подушкой и твердой поверхностью, вы получите напряжение, когда палка ударится точно над пьезо и «раздавит» его.

Когда вы ударяете по конструкции карандашом, выходной сигнал составляет от 2 до 5 В и длится до 20 мс. Пьезо следует рассматривать как конденсатор. Чтобы предотвратить дрейф входного сигнала АЦП, датчик должен быть подключен к фиксированному напряжению (0 В или 5 В) через большой резистор. Обычно к датчику подключают резистор 1 МОм. Вместо этого он включил внутренние подтяжки Arduino на аналоговых выводах. Таким образом, показание АЦП обычно составляет 1023 и падает при ударе по конструкции.

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

Функция CheckDrumpads() эскиза Arduino считывает каждый АЦП по очереди каждые миллисекунды или около того. Если он видит скачок напряжения выше 10 мВ, то затем следит за максимальным значением АЦП примерно через 10 мс после того, как напряжение снова опустится ниже 10 мВ.

Когда функция CheckDrumpads() распознает попадание, она воспроизводит ноту. Drum-pad 0 соединен с выводом A0 и, следовательно, с каналом 0 (самая верхняя линия дисплея). Барабан-колодка 1 подключается к каналу 1 (следующая строка) и так далее.

Амплитуда воспроизведения зависит от того, насколько сильно вы ударяете по диску. В команде NoteOn() вы увидите, что амплитуда равна (i-mean[chan]). Если ваш АЦП дает большие напряжения, вы можете разделить (i-mean[chan]) на 2 или 3.

Если вы решите иметь барабанные пэды, вы можете подключить их через D-разъем или, возможно, разъем RJ45 (LAN) или разъем RJ11 (телефон).

1616490906 1 14
1616490903 1 15
1616490906 1 16

1616490910 1 17
1616490885 1 18

1616490863 1 19
1616490886 1 20
1616490900 1 21

Чтобы MIDI-синтезатор был портативным он должен включать собственные динамики и усилитель.
Мастер использует усилитель PAM8403. Они доступны и очень дешевы. PAM8403 может управлять динамиком от 4 до 8 Ом, мастер использует 8 Ом.

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

1616490876 1 22

1616490933 1 23

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

Батарейный отсек на 6 элементов АА вклеен в крышку термоклеем. Также из листового полистирола сделал пенал для стилуса.

Источник

Оцените статью
Avtoshod.ru - все самое важное о вашем авто