17/02/2022
Как вы понимаете, я уже не в том возрасте, чтобы начинать играть в рок группе и гастролировать с концертами. Но мне, как и всем нам, хочется наполнить свою жизнь музыкой. Оттого я решил, что лучше всего мне подойдет шарманка. Да шарманка не простая, а созданная на Arduino. Нынче поколение такое, что скорее знают что такое Arduino, чем что такое шарманка. А ведь это старинный музыкальный инструмент, своего рода механическое пианино. Это выглядит как обычное пианино, вот только без клавиш - вместо них есть большие перфорированные бумажные рулоны. Когда рулон проходит через пианино, перфорация на нем выступает в роли нот. Задевая каждое из отверстий, воспроизводится тот или иной звук, отчего и складывается мелодия. Итого: один рулон - одна мелодия, что удобно.
Но давайте переходить от слов к делу. Как нам собрать такой инструмент?
Сперва нужно определить — нажата клавиша пианино или нет.
Старинные музыкальные инструменты используют довольно сложные механизмы. Я же могу использовать Arduino и электронные датчики, чтобы определить — нажата клавиша или нет. Например, используя ИК-сенсор или датчик линии. Эти датчики широко используются в мире Arduino для гонок по линии. Они позволяют определить — белый или черный цвет поверхности под ними.
Используя несколько датчиков линии одновременно, можно создать что-то в духе электронной клавиатуры пианино, где каждый сенсор соответствует своей клавише и ноте. Поэтому берем и делаем клавиатуру, состоящую из 40 клавиш. Для этого достаточно пяти модулей Octoliner — это восьмиканальный датчик линии. Модуль управляется по шине I2C, и его легко связать с Arduino.
Для считывания сигналов со всех линейных датчиков нам понадобится Arduino. Однако датчики способны только информировать Arduino, нажата ли клавиша или отпущена. Чтобы в конце получить звук, нужно превратить Arudino в MIDI-устройство. Я выбрал плату Arduino, которая способна эмулировать USB HID-устройство. Передавая MIDI-сообщения через USB-порт, Arduino превращается в настоящую электронную клавиатуру пианино. С USB MIDI устройством, мы можем извлечь звук — используя синтезатор просто подключив Arduino к USB-порту компьютера. Выбор пал на плату Arduino MKR ZERO.
Дальше переходим к конструкции самой шарманки. Если не вдаваться в подробности, шарманка делалась с первого раза и наугад. Для нас не особенно важен ее эстетический внешний вид. Для изготовления деталей я использовал оргстекло, лазерную резку, 3D-печать, а также материалы и механику, которые у меня были дома.
Условно я разделил конструкцию на две основные части и назвал их "выпрямитель" и "съемник". Обе части крепятся к опорной плите. Выпрямитель крепится к основанию с помощью стоек M3 длиной 65мм, а съемник — с помощью напечатанных на принтере уголков.
Выпрямитель выравнивает бумажный музыкальный лист с нотами перед чтением, и на нем установлены датчики линии. Лист для сорока датчиков вышел широким. Такой лист может гнуться и рваться во время движения. Каждая нотная дорожка на листе должна находиться прямо под соответствующим оптроном. Поэтому нотный лист должен быть выровнен перед считыванием.
Выпрямитель собран из нескольких пластин. Бумажный лист зажат между основанием и крышкой. Между крышкой и листом сделан небольшой зазор в 1-2 мм, чтобы лист не закусывало при движении. По бокам установлены две направляющие пластины. Пять модулей датчиков линии установлены на пластине на определенной высоте над листом и крепятся к основанию четырьмя стойками 6мм.
Дальше собираем съемник. Эта часть предназначена для подачи листа. Она тянет лист из выпрямителя.
На валах установлены четыре колеса с резиновыми кольцами. Они плотно зажимают нотный лист. Вращаясь, эти колеса вытягивают считанный лист из выпрямителя. Съемник фиксируется на опорной плите уголками. Съемник состоит из трех пластин оргстекла и трех 6мм валов между ними. Валы закреплены в пластинах фланцевыми подшипниками F626ZZ. Подшипники зафиксированы с помощью напечатанных крышек.
Валы вращаются маховиком через ременную передачу. Я использовал 2GT ремень без натяжения. Замкнутый ремень шириной 6мм с 250 зубьями. Такие ремни и шкивы для них распространены в хобби-станках с ЧПУ и 3D-принтерах, поэтому их легко найти и купить. Малый шкив — купленный GT2 20 6 B6.
Больший шкив самодельный, изготовлен лазерной резкой из оргстекла. Он состоит из 4 пластин толщиной 2 и 4 мм и алюминиевого фланца на вал 6мм.
Маховик состоит из пластины оргстекла, подшипника F625ZZ, фланца на вал 6мм и напечатанной рукоятки. Подшипник запрессован на рукоятке и зафиксирован в пластине напечатанной крышкой.
Колеса, тянущие лист, тоже сборные. Каждое колесо состоит из 4 пластин, толщиной 3 и 2мм, и фланца на вал 6мм. На пластины натянуто резиновое уплотнительное кольцо. Я использовал обычное уплотнительное кольцо ГОСТ 9833 050-060-58.
Двигаемся дальше. В шарманке много оптопар, и они расположены очень близко друг к другу. При одновременной работе множества сенсоров их сигналы могут многократно отражаться и пересекаться друг с другом, что приведет к значительным погрешностям в полученных данных.
Я решил максимально избавиться от помех, и экранировал каждую оптопару колпачком.
Подготовка нотного листа — это, пожалуй, самое утомительное занятие, особенно в моем возрасте.
Итак, один датчик линии имеет 8 каналов, отвечающих за считывание 8 нот. Длина датчика составляет 80мм. Поместив 5 модулей рядом, я получаю общую длину в 400мм. Добавлю еще 5мм свободного места по краям. Таким образом, общая ширина нотного листа равна 410 мм.
Ширина одной нотной дорожки равна ширине одной оптопары и составляет 5,8мм. Расстояние между оптронами на датчике — 4,2 мм. Такое же расстояние между нотными дорожками на листе.
Ноты делятся по длительности, где длительность — это доля такта. Нота может быть целой, половиной, четвертой, восьмой, шестнадцатой итд. За основу я беру длительность шестнадцатой ноты, и назначаю ей высоту 10мм на листе. Теперь весь лист может быть разлинован горизонтальными линиями с интервалом 10мм, так как это минимальный шаг. Черный прямоугольник размером 10х5,8мм на дорожке даст звук длительностью шестнадцатой ноты. Прямоугольник высотой 20мм — это восьмая, 40мм — четвертая, 80мм — половина, 160мм — целая.
В формате MIDI каждая нота фортепианной клавиатуры имеет свой уникальный номер. Эти номера будет присвоены каналам датчиков линии.
1. Смотрим на все ноты, которые используются в музыкальном произведении, и записываем их MIDI номера в порядке возрастания.
2. Присваиваем MIDI-номера каналам датчика линии.
3. Переводим произведение. Закрашиваем прямоугольные черные области на листе в соответствии с длительностью нот.
4. Правим нотный лист и удаляем помарки.
Вся нотная запись получилась слишком длинной, чтобы физически поместиться на одном бумажном листе. Чтобы уместить все ноты, я распечатал их частями на нескольких листах А1. Затем обрезал края листов до нужной ширины и последовательно склеивал их в один большой рулон. Всего я попробовал перевести три музыкальных отрывка. «Ноты» каждого из них я прикреплю в комментарии.
Вот и все. Теперь шарманку можно подключить к любому синтезатору с USB. Например, можно подключить её к компьютеру c ОС Windows и использовать Synthesia. Или подключите её к малине и использовать QjackCtl & Qsynth.
#ЦМИТ #ЦМИТСуперлаб #Суперлаб #ИонПротонов #Ион #Протонов #проект #шарманка