Тюнер гитары на контроллере Arduino. Музыкальные инструменты на Arduino Подключение остальных элементов


По 5-ую версию (включительно) писано в Arduino 1.0.2

Начиная с 6-ой версии использовал IDE Arduino 1.6.12

Синхронная подача: 0.02mm - 0.20mm/об, шаг 0.01мм.

Асинхронная подача: 20мм/мин - 400мм/мин, шаг 10мм/мин.

Резьба: 43 шага, 0.25mm - 4.0mm в метрическом диапазоне, 80tpi - 6tpi в дюймовом.

Делитель шпинделя, шаг 0.1 градуса, калькулятор деления.

Программные упоры.

Ускоренная подача.

Автоматическое нарезание резьбы.

Многопроходный цикл точение/торцевание.

Перемещение в масштабе с помощью РГИ.

Изменения в версии Текущая версия 7e2

  • Digital_Feed_2e
  • 1. Добавлены датчики лимита
  • 2. Изменен алгоритм вывода на дисплей и подготовка строки для печати
  • 3. "Заморозка" значений угла при превышении ~~120-150 об/мин
  • 4. - Отказался от использования регистров для переменных
  • Digital_Feed_3b
  • 1. Добавлено управление джойстиком
  • 2. Добавлен плавный разгон-торможение на "Резьбах"
  • Digital_Feed_3b_Uno
  • Переписал ноги под Arduino Uno, Nano.
  • Все функции версии 3b (под Mega2560) сохранены.
  • Digital_Feed_4k
  • 1. Добавил электронные упоры
  • 2. Добавил ускоренную подачу
  • 3. Добавил "шпаргалку" - максимальные обороты шпинделя в зависимости от выбранного режима.
  • 4. - Внешние датчики лимита больше не обрабатываются
  • Digital_Feed_4k_lite
  • т.с. только кнопки электронных упоров на LCD_шилде,
  • активность упора выводится на LCD
  • Digital_Feed_5d
  • 1. Добавлена поперечная подача
  • 2. Добавлена поперечная резьба
  • 3. Добавлен режим "Конус"
  • 4. Добавлен "Калькулятор деления"
  • Digital_Feed_6c_auto
  • 1. Добавлено автоматическая нарезание резьбы
  • 2. Исправлена неточность заглубления на левой внутренней резьбе
  • 3. Добавлен Buzzer
  • Digital_Feed_7a_Lite
  • 1. Кнопки меню переведены с аналога на цифру
  • 2. Добавлены переключатели режим / подрежим
  • 3. Удалена 74LS86
  • 4. Добавлен переменник подач
  • 5. Добавлена задержка ENA для медленных драйверов
  • Digital_Feed_7b
  • 1. Добавлен подрежим "Автопроходы" на подачу и торцевание (6 комбинаций)
  • 2. Добавлен режим "Сфера" (пока только черновая, т.е. "ступеньками")
  • Digital_Feed_7c1
  • 1. Добавлен режим "Асинхронная Подача"
  • 2. Добавлена подача по X в режиме "Конус"
  • Digital_Feed_7e
  • 1. Добавлен РГИ (ручной энкодер)
  • 2. Исправлены и расширены возможности конусов
  • Digital_Feed_7e1
  • 1. Доработан РГИ
  • 2. Доработан разгон на конусах
  • Digital_Feed_7e2
  • 1. Улучшен шумодав потенциометра подач (мертвая зона)
  • 2. Улучшена работа переключателя осей РГИ
  • 3. Опять доработан РГИ
  • 4. Улучшена точность синхронной подачи

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



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


Теперь для Arduino Uno можно собрать специальный шилд pedalSHIELD UNO, исходники которого находятся в открытом доступе. С помощью pedalSHIELD UNO можно довольно легко сделать программируемую гитарную педель эффектов. Этот шилд собирается на основе широко доступных компонентов и не требует глубоких знаний в программировании алгоритмов цифровой обработки сигналов. Вот так внешне выглядит шилд pedalSHIELD UNO:



Схема подключения разъемов, кнопок и других компонентов к плате Arduino Uno показана на изображении ниже. Здесь входной сигнал гитары через джек заводится на аналоговый ввод A0 и впоследствии считывается с помощью АЦП. Выходной сигнал обеспечивается ШИМ-каналами 9 и 10.





Список компонентов схемы шилда pedalSHIELD UNO:

C5,C2, C7, C8, C9 конденсаторы 6.8 нФ
C3, C6, C10 конденсаторы 4.7 нФ
C1, C11 конденсаторы 100 нФ
C4 конденсатор 100 пФ

R12,R13, R10, R9, R6, R4, R3 резисторы 4.7 КОм
R5, R7, R8 резисторы 100 КОм
R1, R2 резисторы 1 МОм
R11 резистор 1.2 МОм

RV1 потенциометр 500 КОм
D1 светодиод 3 мм синий
U1 операционный усилитель TL972
pdip-8 разъем для 8-выводных DIP-корпусов
SW1 тройной переключатель-кнопка
SW2 переключатель
SW3, SW4 кнопки
J1, J2 аудиоразъемы-джеки

Для того чтобы запрограммировать Arduino для реализации определенного гитарного эффекта, нужно архив со скетчами, обеспечивающими эти эффекты. На данный момент представлено одиннадцать скетчей, и среди них есть такие популярные звучания, как дисторшн (distortion), тремоло (tremolo), задержка (delay) и ряд других.


Таким образом, собрать гитарную педаль своими руками с помощью Arduino представляет собой довольно простой процесс. Конечно, она не получится такой же качественной по звучанию, как педали именитых производителей Fender, Marshall или Boss, но благодаря этому проекту можно многое чему научиться в деле проектирования звукотехники.

Сделайте ваш собственный настройщик гитары с помощью контроллера Arduino! Я решил сделать его потому, что хотел провести эксперимент с аудио входом и частотным детектированием. Я использовал метод Аманды Гассаи (Amanda Ghassaei) для частотного детектирования Arduino, чтобы получить значения частоты с помощью Arduino. Светодиоды загораются в соответствии с частотой аудио входа, индицируя, являются ли звуки, издаваемые струной, диезными, бемольными или настроенными .

Сверление отверстий

Просверлите предварительно намеченное отверстие на боковой стороне вашего корпуса с помощью перового сверла диаметром 1/8". Рассверлите начальное отверстие с помощью долотчатого бура диаметром 13/16", чтобы сделать большее отверстие для однополюсного кулисного переключателя. Кулисный переключатель будет служить в качестве выключателя питания тюнера.

Просверлите отверстие под отверстием для выключателя с помощью бура диаметром 23/64". Это отверстие будет использоваться для аудио гнезда.

Двухпозиционный выключатель

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

Аудио гнездо

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

Разъем питания

Разберите разъем питания M-типа.

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

Усиление и смещение

Аудио сигнал, исходящий от электрической гитары, должен быть усилен приблизительно до двойной амплитуды 5В (амплитуда от пика до пика сигнала) и смещен к центру до приблизительно 2.5В в противоположную сторону от 0В. Сигнал должен находиться в диапазоне между 0 и 5В для того, чтобы он мог быть считан аналоговым входом контроллера Arduino. Он должен иметь наибольшую возможную амплитуду без среза, чтобы получить более точные значения частоты.

Выше показана принципиальная схема, которую необходимо собрать.

Я рекомендую изготавливать данную схему на макетной плате и протестировать ее с помощью осциллографа перед окончательным соединением и пайкой. Вашим аудио входом должен быть зеленый провод аудио гнезда. Подсоедините черный провод гнезда к земле. Присоедините щуп осциллографа к выводу смещения постоянной составляющей DC offset (где схема присоединяется к выводу A0 на контроллере Arduino). Постепенно увеличивайте уровень громкости на вашей гитаре и вставьте выход вашей гитары в аудио гнездо. Поиграйте на каждой струне и проверьте показания осциллографа, чтобы убедиться, что сигнал находится по центру в значении приблизительно 2.5В, и что сигнал близок, но не превышает двойную амплитуду величиной 5В.

Попробуйте запустить эту модифицированную версию кода Аманды для частотного детектирования для Arduino, чтобы протестировать вычисленное значение частоты Arduino. Единственное изменение, которое я внес в ее код, состояло в том, что я удалил индикаторный светодиод амплитудного ограничения сигнала и вместо него ввел "амплитудное ограничения сигнала" во встроенный монитор последовательного интерфейса, когда сигнал срезается.

Встроенный монитор последовательного интерфейса должен отображать частоту, издаваемую струной. Струны гитары должны иметь следующие значения частоты:

E - 82.4 Гц
A - 110 Гц
D - 146.8 Гц
G - 196 Гц
B - 246.9 Гц
E - 329.6 Гц

Зачастую трудно заставит работать частотное детектирование, поскольку более высокие по звучанию струны имеют более низкую амплитуду сигнала, чем более низкие по звучанию струны. Код Аманды имеет переменную, которая называется ampThreshold (порог амплитуды). Данная переменная представляет собой минимальную амплитуду сигнала для контроллера Arduino, которая позволяет вычислить частоту. Для тюнера гитары значение ampThreshold должно быть достаточно высоким, чтобы контроллер Arduino вычислил частоту более высоких по звучанию струн, но в то же время достаточно низким, чтобы не получить слишком много шума от более низких по звучанию струн. Я обнаружил, что значение ampThreshold = 20 работает. Вы должны играть на более высоких по звучанию струнах сильнее, чтобы контроллер Arduino выбрал их, и при этом частотное детектирование будет хорошо работать. Вы может экспериментировать с другими значениями, чтобы детектирование работало в соответствии с вашими требованиями. Значения от 10 до 30 хорошо подходят. Для получения более подробной информации о работе алгоритма Аманды обратитесь к ее инструкциям: Частотное детектирование Arduino .

Припаивание микросхемы

Припаяйте контроллер TL082 к печатной плате с нанесенной сеткой.

Припаивание усилителя и некоторых компонентов к выводу DC Offset

Припаяйте резисторы для усилителя и провод к выходу усилителя. Припаяйте конденсаторы и резисторы к выводу DC offset. Припаяйте провода к выводу DC offset, которые будут подсоединяться к выводу 5В, земля и A0 на Arduino.

Припаивание питания и входа

Припаяйте красный провод на выключателе питания к +VCC (вывод 8) на микросхеме TL082. Припаяйте черный провод к земле. Припаяйте черный провод защелкивающегося коннектора второй батареи к -VCC (вывод 4) на микросхеме TL082, а красный провод к земле. Припаяйте зеленый провод аудио гнезда к положительному входу операционного усилителя на TL082 (вывод 3), а черный провод к земле.

Припаяйте красный провод разъема питания к +VCC (вывод 8), а черный провод к земле и вставьте разъем в контроллер Arduino. Вставьте провода для 5В, земли и A0 от вывода DC Offset в контроллер Arduino.

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

Изготовление передней панели

Для изготовления передней панели тюнера гитары я использовал лазерную резку. Мне нравится вид белого акрила и возможность выгравировать буквы и символы на передней панели. Я прикрепил шаблон для передней панели тюнера гитары. Для создания шаблона я использовал программу CorelDRAW. Также файл шаблона приложен и в формате EPS.

Если у вас нет лазерной резки можно использовать обычную крышку от корпуса и просто просверлить в ней отверстия. Используйте перовое сверло диаметром 13/64" и просверлите шесть отверстий для светодиодов, соответствующих шести различным струнам, которые нужно настроить и семь отверстий для светодиодов, которые будут показывать, является ли струна диезной или минорной. Поставьте метки на наборе из шести отверстий E, A, D, G, B и E слева направо. Поставьте метку на среднем отверстии набора из семи отверстий в виде треугольника, вершиной по направлению к отверстию. Поставьте на самое правое отверстие музыкальный символ диез, а на самое левое отверстие музыкальный символ бемоль.

Светодиоды

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

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

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

Сборка

Установите переднюю панель тюнера на печатную плату с припаянными светодиодами. Подсоедините провода на печатной плате к контроллеру Arduino. Далее показан список соответствия светодиодов и выводов контроллера.

самый левый красный светодиод (самый низкий) - вывод 8
следующий красный светодиод справа - вывод 9
следующий красный светодиод справа - A5
зеленый светодиод (настроенный) - A4
первый красный светодиод справа от зеленого - A3
следующий красный светодиод справа - A2
самый правый красный светодиод (самый высокий) - A1

Самый левый светодиод с меткой "E" - вывод 2
Светодиод с меткой "A" - вывод 3
Светодиод с меткой "D" - вывод 4
Светодиод с меткой "G" - вывод 5
Светодиод с меткой "B" - вывод 6
Самый правый светодиод с меткой E" - вывод 7

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

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

Установка в корпус

Аккуратно прикрепите переднюю панель к передней крышке корпуса. Убедитесь, что все провода надежно подсоединены. Установите переднюю крышку корпуса на место и закрепите с помощью винтов.

Настройка

Подсоедините вашу гитару к тюнеру и выполните настройку!

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Операционный усилитель

TL082

1 В блокнот
Плата Arduino

Arduino Uno

1 В блокнот
Резистор

150 Ом

13 В блокнот
Резистор

100 кОм

3 В блокнот
Резистор

22 кОм

1 В блокнот
Конденсатор 100 мкФ 1 В блокнот
Конденсатор 100 нФ 1 В блокнот
Светодиод 5мм желтый 6 В блокнот
Светодиод 5мм красный 6 В блокнот
Светодиод 5мм зеленый 1

Изменение битности, снижение скорости, причудливые звуки – все это возможности самодельной гитарной педали с 10 битными эффектами на Arduino, предназначенной для Lo-Fi DSP (Digital Dignal Processing - цифровой обработки сигнала).

Видео работы:

Необходимые материалы

Инструменты:
Arduino
Паяльник
Пистолет для термоклея
Кусачки
Сверлильный станок или Dremel

Материалы:
Припой
Термоклей
Провода
Макетная плата
(x2) Аудио разъёмы (я использую 1/8")
Интерфейс ввода: например 3 потенциометра
Интерфейс вывода: например 3 светодиода и 3 резистора 150 Ом.
Резисторы: 1 кОм, 10 кОм (x2), 1.2 кОм, 1.5 кОм, 390 кОм.
Конденсаторы: 2.2 мкФ (x2)

Количество резисторов и конденсаторов удваивается при использовании стерео режима.

Подготовка корпуса

В качестве корпуса я использовал медиаконвертер. Его корпус подходит к Arduino, элементам интерфейса и двум аудио разъемам. Этот корпус сделан из довольно прочного металла, что важно для педали. Также задняя стенка корпуса закреплена на петли, что позволяет легко открывать его.

Я только просверлил в этом корпусе три отверстия для потенциометров при помощи сверлильного станка и вырезал отверстие для USB разъема.

Установка элементов

После того, корпус подготовлен:
- разместите в нем Arduino.
- установите элементы интерфейса, то есть потенциометры и светодиоды.
- установите входные и выходные разъемы.

Помните, что светодиоды необходимо подключать к Arduino через резисторы: . Я использовал резисторы на 150 Ом.

Нормализация входов и выходов

Вход

Это единственное место в этом проекте, где используется аппаратное решение. Аудио сигнал это переменный от -1В до +1В, но аналоговые входы Arduino работают с напряжением от 0В (GND) до опорного напряжения (по умолчанию +5В). Опорное напряжение можно указать в коде или использовать источник внешнего опорного напряжения.

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

Теперь мы должны преобразовать напряжение от -1В до +1В в напряжение от 0В до +1.1В. Я сделал это при помощи резистивного делителя напряжения. Гитару нельзя подключать напрямую к этой схеме, необходим предусилитель (например, другая педаль), но вы можете добавить предусилитель на транзисторе или ОУ на макетную плату, чтобы подключать гитару напрямую.

Выход

Для вывода звука мы будем использовать ШИМ. При помощи низкоуровневого хака программного обеспечения, мы можем получить 8 битный ШИМ работающий на частоте 62кГц = 16МГц/28.

Есть и другие методы вывода звука на Arduino. Хороший обзор этих методов можно найти на сайте uC hobby . Я получил хороший результат при использовании R2R ЦАП, но для 10 битного стерео выхода необходимо около 40 резисторов, поэтому я отказался от него. Вместо этого я решил использовать метод "weighted pins ", который представляет собой нечто среднее между обычным ШИМ и резисторной матрицей.

Сборка схемы

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

Если вы используете такие конденсаторы, как и я, то они будут отрезать некоторые нижние частоты. При емкости 2.2 мкФ, это незначительно и не чувствуется в диапазоне слышимости человеческого слуха. Чем больше емкость - тем лучше, однако чем больше емкость, тем конденсатор больше физически.

Подключение остальных элементов

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

После сборки схемы на макетной плате, поместите её внутрь и подключите все не подключенные до сих пор провода:
- аудио вход подключается к входу схемы, которая подключается к аналоговому входу Arduino.
- средние выводы потенциометров подключаются к аналоговым входам Arduino.
- два светодиода подключаются к ШИМ выходам, а один к цифровому.
- четыре ШИМ выхода подключаются к 8/2 битным входам ЦАП.
- выход с ЦАП подключается к аудио выходу.

Загрузите исходный код, и вы увидите две папки. В одной из них находиться основной код DSP, "ArduinoDSP", который используется при изготовлении педали. В папке "GlitchPedal" находится код который я использовал.

ArduinoDSP

Включенные в ArduinoDSP функции полезны для настройки значения предварительного деления частоты ШИМ и аналоговых входов. Контакты 3 и 11 используются в качестве выхода левого канала (8 и 2 битные соответственно), а 5 и 6 контакты в правый выход. ШИМ используется без предварительного деления частоты и работает так быстро, как это возможно. Значение предварительного деления частоты для АЦП также установлено низкое, 32, в качестве опорного напряжения используется 1.1В.

Для изменения основного кода ArduinoDSP, просто вставить свой собственный код с измененным значением переменной "input" между строками "short input = analogRead(left);" и "output(left, input);".

GlitchPedal

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

Режимы:
Bitcrush (изменение битности): немного смещает вход вправо, а потом влево, обрубая N битов.
Bitshift (сдвиг битов): смещает вход налево, что приводит к странным эффектам для нескольких первых значений и шум в конечном итоге (т. е. "дизеринг битов").
Overdrive: Умножает значение на воде на дробное значение от 1 до 20.
Двоичные бинарные операции над импульсами: делает различные бинарные операции на входе и последнем результате (XOR, NOR, XNOR, NAND...)

Улучшения и примечания

Возможные улучшения
Добавление RC фильтра нижних частот с возможностью выбора частоты среза на выходе.
Режим причудливых звуков: Переназначение битов? Ротация битов?
Повторение N последних семплов? Это ограниченно ОЗУ ATmega.
Использование 9В адаптера вместо питания от USB
Шесть 8 битных выходов для акустической системы 5.1?
Использование Arduino mini для миниатюризации педали?
Вывод интерфейса на отдельную панель?
Кнопочная регулировка входной громкости?

Примечания

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

Спасибо Andrew Armenia за помощь с нормализацией входа, Dane Kouttron за объяснение некоторых вещей о ШИМ в ATmega168, Джеймсу Miglietta за то, что он сказал, что гитарная педаль работает на обычном напряжении и Блэру Нилу за то, что он захотел уменьшение дискретизации.

Еще одну интересную методику с использованием аудио буфера и "реальными" эффектами дал Мартин Nawrath. Я думаю, что один из главных плюсов его решения в том, что он использует прерывание для АЦП. Обычно, АЦП вызывается командой analogRead() (т.е. код не может пропустить команду analogRead() и исполняться дальше). Его способ освобождает микроконтроллер от выполнения других задач на время работы АЦП.

Если вы уверены, что DIY-электроника - удел технарей, вынуждены вас в срочном порядке разочаровать: представители творческих профессий - дизайнеры и музыканты - давно успешно освоили , вооружились паяльниками и клепают одну за другой невероятно крутые и забавные штуковины:

Guitarduino

Некоторые с помощью Arduino расширяют возможности уже существующих инструментов. Эта гитара увешана тач-панелями и кнопками, как новогодняя ёлка: с их помощью музыкант может использовать огромный комплекс электронных эффектов, не прибегая к помощи гитарных педалей. На этой Гитардуине даже своя драм-машина есть! автор проекта подробно рассказывает о том, как работает его детище.

APPLECASTER

Эти ребята отбросили от электрогитары всё лишнее, оставив только гриф со струнами. Прикрутили к этому , кое-какую обвязочку, и - «Тадам!» - получили отменную 8-битную гитару .

Sonora Boards

MusicalCubes

В данном случае вообще сложно сказать это больше музыкальный инструмент или арт объект. Музыкальные Кубы способны записывать различные семплы и проигрывать их, взаимодействуя друг с другом и исполнителем.

Flexfinger

С первого взгляда на эту перчатку представляешь такие же на руках у ребят из DaftPunk. Именно так должны выглядеть инструменты кибернетических диджеев из будущего.

Snake Charmer

В этом проекте музыкальные инструменты совсем обычные. В эти флейты не встроено ни какой электроники, но только посмотрите, что эти парни с ними вытворяют. Они используют определенные ноты для управления Змейкой из знаменитой игры на телефоне Nokia 6110i! Настоящие заклинатели электронных змей)