Оглавление:

Synthfonio - музыкальный инструмент для всех: 12 шагов (с изображениями)
Synthfonio - музыкальный инструмент для всех: 12 шагов (с изображениями)

Видео: Synthfonio - музыкальный инструмент для всех: 12 шагов (с изображениями)

Видео: Synthfonio - музыкальный инструмент для всех: 12 шагов (с изображениями)
Видео: PMD1 Boss Battle Oscilloscope view 2024, Июль
Anonim
Image
Image
Схема подключения
Схема подключения

Мне нравятся синтезаторы и MIDI-контроллеры, но я плохо играю на клавишных. Мне нравится писать музыку, но для того, чтобы на самом деле играть эту музыку, вам нужно научиться играть на музыкальном инструменте. На это нужно время. Время, которого у многих нет, и которое обычно мешает им продолжать заниматься. Я пытаюсь это изменить. Этот проект - попытка сократить разрыв между моментом «Я хочу научиться играть X» и моментом «Мне нравится играть X». Я знаю, что большинство из нас мечтали или все еще мечтают о последнем, но застряли в первом, и я также знаю момент, когда я смог исполнить и насладиться своими первыми основными песнями из четырех аккордов на гитаре, был моментом, когда я действительно начал изучать инструмент, и я никогда не отказывался от него с тех пор, как

Что это

Это легкий в освоении инструмент, простой в использовании, ориентированный на импровизацию и с бесконечными возможностями звуков (как MIDI-контроллер). Он имеет 2 набора клавиш, один для определения аккордов и ключевых подписей, а другой для фактического воспроизведения нот. Какой бы аккорд ни был нажат в клавишах грифа инструмента, он будет определять высоту звука клавиш на ручке инструмента, как на гитаре, скрипке и других струнных инструментах; с дополнительным преимуществом, что это интеллектуальное устройство, которое может интерпретировать воспроизводимую гамму с одной ноты или пары нот.

Как это работает

Простой. Хотите сыграть аккорд ми? вы просто нажимаете клавишу E на шее (см. схему на шаге 11) и запускаете все, что хотите, на клавишах ручки. Не волнуйтесь, все будет в гармонии. Вы можете использовать клавиши ручки для воспроизведения аккордов, мелодий и арпеджио в любой желаемой тональности, просто нажав соответствующую клавишу на грифе. Таким же образом нажатие клавиши A на шее в сочетании с клавишей C (второстепенная треть A) активирует тональность A minor для клавиш ручки.

Это может позволить любому исполнителю исполнить мелодию из 4 аккордов (наиболее популярная музыка - 4 аккорда), аккомпанемент или даже импровизацию; с не более чем несколькими пальцами в нужном положении.

Этот инструмент может работать как MIDI-контроллер, и я включил простой встроенный синтезатор для игры без внешнего оборудования. В зависимости от платы Arduino, которую вы решите использовать, этот проект также может работать как USB-MIDI-контроллер или MIDI-контроллер через BLE.

Мои обычные оговорки: - Я не являюсь носителем английского языка, поэтому могли быть сделаны ошибки. - Кроме того, я самоучка электроники, кодирования и музыки, так что, опять же, могли быть сделаны ошибки. - Это «инструмент для всех», на котором можно играть, не обязательно строить. Для работы над этим проектом вам потребуется немного знаний в области электроники и программирования.

_

Запасы

-An Arduino: любая ардуино должна работать. Я рекомендую плату с возможностями USB, например платы на базе ATmega32U4 (leonardo, micro и т. Д.), Чтобы вы могли использовать этот проект в качестве контроллера USB MIDI. Я использовал MKR1010, потому что он также имеет возможности Bluetooth и вторичный последовательный порт оборудования.

-ATmega328 на макетной плате (необязательно): это для встроенного синтезатора. Вы могли бы использовать подходящую плату UNO, но я выбрал более простую систему.

-Модули мультиплексора: 2 из них, один для ключей ручки, другой для ключей шеи.

-Модуль зарядного устройства: я рекомендую что-то вроде того, что указано по ссылке, потому что у него есть защита от перезарядки / разряда.

-18650 аккумулятор

-Модуль повышающего лифта напряжения: осторожно с этим! Убедитесь, что выбранный вами модуль может принимать входное напряжение ниже 5 В. Модули зарядного устройства обычно выдают около 4 В, и если вы подадите это напряжение на повышающий модуль, который не рассчитан на это напряжение, у вас могут возникнуть проблемы. Я использовал модуль, которому требовалось входное напряжение не менее 5 В, и зажарил свой ардуино. (есть ли проекты по повторному использованию, переработке жареной доски? Оставьте комментарий)

-1/4 Женский аудиоразъем

-10k стерео потенциометр

-10k потенциометр (x2)

-x2 переключатели: я рекомендую эти, но подойдет любой переключатель, который удерживает свое положение.

-x14 Тактовые переключатели: для ключей на шее.

-x9 Концевые выключатели: Ручные ключи (7) и переключатели перемещения (2)

Резистор -1кОм

-x2 резистор 220 Ом (если вы делаете выход MIDI 5 В)

-33 Ом и 10 Ом резисторы (если вы делаете выход 3,3 В MIDI)

-Маленькие макеты: сколько угодно! Я строю все на 170-позиционных макетах.

-Перемычки: вам мало

Почему два отдельных Arduinos ?: Да, должна быть возможность написать один скетч, работающий на цифровом синтезаторе, с USB MIDI, MIDI через BLE и обычными функциями MIDI на одной плате. Должно, может быть, но я не мог. Дело в том; большинство синтезаторных библиотек сделано для ATmega328, у которого нет возможностей USB. С другой стороны, несколько плат на базе ATmega32U4 (с возможностью USB), которые запускают библиотеки синтезаторов, делают это с проблемами. Забудьте о MIDI поверх BLE, для этого вам понадобится что-то вроде MKR1010 (насколько я читал, модуль hm-10 не будет работать с MIDI), но семейство MKR использует другую архитектуру и даже не будет компилировать скетчи с любой синтезаторной библиотекой, которую я нашел в Интернете, так что для меня это два отдельных микроконтроллера. Основная плата выполняет все функции считывания, интерпретации и миди; и второй для встроенного синтезатора, который считывает данные midi только с основного и воспроизводит звук. Единственная версия arduino (необязательно): Да, если вам не нужны некоторые функции, которые мне нужны, вы можете использовать только одна единственная доска. Например, один ATmega32U4 в качестве USB-MIDI-контроллера с наименее глючной библиотекой синтезаторов, которую вы можете запустить на нем (хотя и без MIDI BLE), или один ATmega328 с любой библиотекой синтезаторов, которая вам нравится (хотя и без USB MIDI).

Шаг 1: Схема подключения

Вот полная схема проекта. Помните, что вам не обязательно использовать плату MKR, большинство плат будет работать, вам просто нужно знать о возможностях каждой платы (с поддержкой USB, с поддержкой BLE и т. Д.) И отрегулировать напряжение, подаваемое на вывод vin. Теперь рассмотрим каждый раздел более подробно:

Шаг 2: Схема подключения: MIDI-контроллер и мультиплексоры

Схема подключения: MIDI-контроллер и мультиплексоры
Схема подключения: MIDI-контроллер и мультиплексоры
Схема подключения: MIDI-контроллер и мультиплексоры
Схема подключения: MIDI-контроллер и мультиплексоры

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

-Два переключателя, обозначенные как Transposing Switches, представляют собой концевые выключатели, которые активируются при перемещении ручки через скользящее отверстие основного корпуса (см. Шаги «ручка» и «корпус» для более подробной информации), и они перемещают все ноты ручки на октаву вверх или вниз..

-Для регулировки громкости я использовал стереопотенциометр, потому что нам нужно управлять двумя видами громкости: аналоговым (встроенный синтезатор) и MIDI.

- В выходной цепи MIDI есть резисторы, рассчитанные на выход 3,3 В с моей платы MKR. Если вы используете плату на 5 В, вам необходимо заменить резистор в соответствии со схемой MIDI на втором рисунке.

Шаг 3: Схема подключения: синтезатор

Схема подключения: синтезатор
Схема подключения: синтезатор

-Подключение к OSC2 на ATmega328 идет (через конденсатор) на землю на цифровом контакте 5. Я сделал это просто для удобства, так что все хорошо и близко помещается на макетной плате. Если вы думаете о том же, просто убедитесь, что вы всегда объявляете вывод 5 как вход, а не как выход.

-Библиотека синтезатора, которую я выбрал, выводит звук с пина 11, как показано на моей схеме. Не все библиотеки будут использовать этот вывод, не забудьте изменить его соответствующим образом. Я бы рекомендовал всегда использовать резистор и колпачки в качестве фильтров.

-Я добавил переключатель на 5 В, подаваемый с основной платы, чтобы я мог выключить ATmega и сэкономить заряд батареи при использовании инструмента в качестве MIDI-контроллера.

Шаг 4: Схема подключения: источник питания

Схема подключения: источник питания
Схема подключения: источник питания

-Я знаю, все платы MKR имеют встроенную схему зарядки Li-Po. Дело в том, что я не мог найти никаких (доступных) липо-аккумуляторов с необходимыми характеристиками нигде в стране, в которой я живу (Чили, Южная Америка), а также у меня уже был зарядный модуль и пара 18650, лежащих поблизости, поэтому я поднял их. Вдобавок я думаю, что большинство людей попробуют этот проект, используя более доступные в продаже платы, которые обычно не имеют схемы зарядки.

- Еще раз убедитесь, что модуль, который вы выбираете для повышения напряжения батареи, может принимать входное напряжение ниже 5 В. Модули зарядного устройства обычно выдают около 4 В, и если вы подадите это напряжение на повышающий модуль, который не рассчитан на это напряжение, вы можете поджарить свою плату. Я сделал. Дважды, прежде чем я узнал об этом.):

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

Шаг 5: Идея кода

Код просто выполняет постоянную проверку всех ключей-дескрипторов, пока не обнаружит попадание. Когда это происходит, он затем проверяет нажатие клавиш на шее и интерпретирует принимаемую позу и, следовательно, музыкальную тональность (если на шее не нажимается никакая клавиша, сохраняется последняя установленная тональность). Это определит, какую заметку будет воспроизводить нажатая ручка-ручка. Наконец, проверяются два переключателя транспонирования, чтобы транспонировать ноту на октаву вверх, октаву вниз или октаву по умолчанию; давая инструменту диапазон в 3 октавы. На основе всех этих переменных Synthfonio создает соответствующую MIDI-команду.

Что касается кода синтезатора, сделайте то же, что и я, и просто беззастенчиво скопируйте и вставьте примерный скетч «midi in» библиотеки синтезатора, который наилучшим образом соответствует вашим потребностям. Вот несколько рекомендаций: -The_synth-Mozzi-poly-synth-Noodle-Synth

О, если вы хотите объединить функции MIDI и синтезатора на одной плате, я бы предложил вид эскиза, описанный по этой ссылке.

Шаг 6: Код

Прежде всего, вам понадобятся следующие библиотеки: Библиотека MIDI: https://github.com/FortySevenEffects/arduino_midi_… Библиотека Multiplexer:

Кроме того, если вы собираетесь использовать плату с поддержкой USB или MKR 1010, вы также можете поэкспериментировать с этими библиотеками: MIDI USB: https://github.com/tigoe/SoundExamples/blob/master… MIDI через BLE:

#включают

MIDI_CREATE_DEFAULT_INSTANCE (); #include CD74HC4067 my_mux (4, 3, 2, 1); // создаем новый объект CD74HC4067 с его четырьмя контактами управления #define mux_handle_pin 5 // определяем контакт для совместного использования с каналами мультиплексора дескрипторов #define mux_neck_pin 0 // определяем контакт для совместного использования с каналами из шейного мультиплексора // определить переключатели транспонирования #define transposeUp 7 #define transposeDown 6 байтов NeckKeysNumbers = {12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; byte fingerAmount = 0; byte NeckKeyHolded = {0, 0, 0}; байт корень = 48; byte minorThird; byte handleKeyNote = {0, 48, 50, 52, 53, 55, 57, 59}; byte handleKeyNoteSent = {0, 0, 0, 0, 0, 0, 0, 0}; int octave = 0; void setup () {pinMode (LED_BUILTIN, OUTPUT); MIDI.begin (1); // Запускаем MIDI и слушаем канал 1 pinMode (mux_handle_pin, INPUT_PULLUP); pinMode (mux_neck_pin, INPUT_PULLUP); pinMode (transposeUp, INPUT_PULLUP); pinMode (transposeDown, INPUT_PULLUP); } void loop () {// Цикл For-Loop для проверки каждой клавиши (1-7) на РУЧКЕ. для (байт я = 1; я <8; я ++) {my_mux.channel (я); // проверка каждой клавиши через мультиплексор // нажатие переключателя (клавиши) и состояние клавиши «не нажата» if ((digitalRead (mux_handle_pin) == LOW) && (handleKeyNoteSent == 0)) {delayMicroseconds (2400); // Цикл For-Loop для проверки 12 ключей (0-11) на ШЕЕ. для (байт k = 0; k 0)) {MIDI.sendNoteOff (handleKeyNoteSent , 0, 1); // Остановить дескриптор заметкиKeyNoteSent = 0; // определяем как "не отправлено" delay (18); }}} // Эта функция берет обнаруженный шейный ключ и на его основе // устанавливает номер основной ноты (в MIDI), // amd также устанавливает номер ноты, которая будет ее второстепенной третьей пустотой rootSetting () {переключатель (NeckKeyHolded [0]) {case 12: root = 47; minorThird = 3; перерыв; случай 1: корень = 48; minorThird = 4; перерыв; случай 2: корень = 49; minorThird = 5; перерыв; случай 3: корень = 50; minorThird = 6; перерыв; случай 4: корень = 51; minorThird = 7; перерыв; случай 5: корень = 52; minorThird = 8; перерыв; случай 6: корень = 53; minorThird = 9; перерыв; случай 7: корень = 54; minorThird = 10; перерыв; случай 8: корень = 55; minorThird = 11; перерыв; случай 9: корень = 56; minorThird = 12; перерыв; case 10: root = 57; minorThird = 1; перерыв; case 11: root = 58; minorThird = 2; перерыв; по умолчанию: root = 48; minorThird = 4; перерыв; }} // Эта функция устанавливает фактическую ноту, которую будет играть ручка. // сначала он проверяет, переключается ли транспонирование, и при необходимости транспонирует октаву вверх или вниз, // затем проверяет, соответствует ли количество пальцев в позиции мажорному или минорному аккорду (1 или 2 пальца). // Наконец, если в позиции были обнаружены 2 пальца, он проверяет, находятся ли вторые пальцы // на соответствующей второстепенной третьей ноте. В противном случае 2-й палец будет проигнорирован, а аккорд будет // интерпретироваться как мажорный аккорд. Если 2-й палец действительно играет второстепенную треть, функция определит // ноты, которые будут исполняться клавишами-манипуляторами. void keyConstructor () {если (digitalRead (transposeUp) == LOW) {octave = 12; } иначе, если (digitalRead (transposeDown) == LOW) {octave = -12; } еще {октава = 0; } // мажорная гамма if (NeckKeyHolded [1] == 0) {handleKeyNote [1] = корень + октава; handleKeyNote [2] = корень + октава + 2; handleKeyNote [3] = корень + октава + 4; handleKeyNote [4] = корень + октава + 5; handleKeyNote [5] = корень + октава + 7; handleKeyNote [6] = корень + октава + 9; handleKeyNote [7] = корень + октава + 11; } // минорная гамма if (NeckKeyHolded [1] == minorThird) {handleKeyNote [1] = корень + октава; handleKeyNote [2] = корень + октава + 2; handleKeyNote [3] = корень + октава + 3; handleKeyNote [4] = корень + октава + 5; handleKeyNote [5] = корень + октава + 7; handleKeyNote [6] = корень + октава + 8; handleKeyNote [7] = корень + октава + 11; }}

Шаг 7: Инструмент (приложение)

Инструмент (приложение)
Инструмент (приложение)
Инструмент (приложение)
Инструмент (приложение)

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

Тем не менее, в этом случае у меня намного больше контента и информации о процессе проектирования, чем в предыдущих проектах, потому что я использовал услуги 3D-печати и лазерной резки для создания многих деталей. Я просто не собирался выполнять все измерения и резку МДФ, которые я делал на своем последнем станке. Я приложил файл, который я разработал для лазерной резки большинства деталей, и 3D-модель инструмента. Пожалуйста, имейте в виду, что все эти файлы в основном идентичны реальной вещи, которую я построил, но есть расхождения, так как я внес много изменений после оригинальной лазерной резки и 3D-моделирования. Используйте эти файлы как отправную точку для вашего проекта, а не как окончательный шаблон.

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

Шаг 8: Инструмент: Гриф

Image
Image
Инструмент: Шея
Инструмент: Шея
Инструмент: Шея
Инструмент: Шея
Инструмент: Шея
Инструмент: Шея

По сути, это пара длинных вырезанных лазером кусков МДФ, уложенных друг на друга, чтобы создать достаточно толстую шейку с достаточным пространством внутри для тактовых переключателей (шейных клавиш) и модуля мультиплексора. А также 14 кусков вырезанной лазером плиты МДФ в форме клавиш пианино, чтобы закрыть переключатели. Переключатели установлены на монтажной плате и подключены к мультиплексору.

Шаг 9: Инструмент: ручка

Image
Image
Инструмент: ручка
Инструмент: ручка
Инструмент: ручка
Инструмент: ручка

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

Шаг 10: Инструмент: Тело

Image
Image
Инструмент: Тело
Инструмент: Тело
Инструмент: Тело
Инструмент: Тело

Это самая простая из всех частей, просто вырезанная лазером коробка по форме напоминающая музыкальный инструмент. Я даже подумал об использовании корпуса типа коробки для сигар, но если я собирался вырезать лазером, я мог бы также вырезать лазером что-нибудь красивое. Основными особенностями, которые должен иметь корпус, являются, во-первых, все отверстия для необходимых разъемов, разъемов и т. Д. (Плюс одно для подвода проводов к цепи шеи); одно отверстие большего размера наверху, в которое может проходить ручка (как показано на первом видео и изображениях), и, наконец, два переключателя транспонирования, размещенные на каждом конце скользящего отверстия для обнаружения движения ручки (см. второе видео и все аннотации на картинках).

Шаг 11: как играть

Как играть в это
Как играть в это
Как играть в это
Как играть в это

Игра аккордов

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

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

Игра на аккордах (объяснение для начинающих)

Аккорды - это две или более ноты, сыгранные вместе. Представьте себе пианиста или гитариста, играющего одновременно несколько нот (клавиш фортепиано или гитарных струн) и позволяя им звучать, они поют небольшую фразу поверх нее, а затем берут другой набор нот и поют другую фразу. Они играют аккорды и поют мелодию. В этом суть любой базовой песни. Итак, как это сделать на Synthfonio? просто. Хотите сыграть аккорд ми? вы просто нажимаете клавишу E на шее и запускаете все, что хотите, на клавишах ручки. Не волнуйтесь, это будет гармония. А как насчет минорных аккордов? (аккорды, название которых оканчивается на букву «м», например Am, Em, G # m, C # m и т. д.) Давайте сыграем аккорд ля минор (Am). Мы нажимаем клавишу A (см. Прилагаемую диаграмму), но мы также считаем три клавиши вверх (двигаясь к ручке), и мы также нажимаем эту клавишу (в данном случае C). Это эффективно превращает аккорд A в аккорд Am (ля минор).

Воспроизведение песни

Теперь, как некоторые, возможно, уже знают, есть множество песен с 4 аккордами, обычно построенных на простых мажорных и минорных аккордах. Идеально. Мы находим в Google «аккорды названия песни», находим тот, который нам нужен (вот пара простых и простых примеров). Если аккорд является мажорным, мы просто нажимаем эту единственную клавишу на шее Synthfonio и играем все, что чувствуете. ручка. Если в песне появляется минорный аккорд, мы просто нажимаем соответствующую клавишу и третью клавишу вверх, и все готово. Вот и все. Вы можете использовать клавиши ручки для воспроизведения аккордов и пения поверх них, а также для воспроизведения мелодий, арпеджио и т. Д.

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

Это незавершенный проект. А пока просто продолжайте играть, экспериментировать и веселиться. Принимаю предложения (:

Разные масштабы

В настоящее время клавиши управления генерируют ноты с 1-й по 7-ю заявленной гаммы. Я использовал эту конфигурацию в этом руководстве, чтобы облегчить понимание. Но это можно легко изменить для создания другого масштаба, изменив функцию keyConstructor (). На самом деле я использую пентатонную конфигурацию ручки, потому что это позволяет мне поднимать основную ноту на одну октаву вверх в том же положении слайда ручки. В текущей конфигурации вам нужно сдвинуть ручку вверх или вниз, чтобы получить любую ноту в другой октаве.

Шаг 12: Возможные модификации

Как я уже упоминал в начале, я старался сделать это руководство как можно более простым, сводя проект к его самой простой форме. Из-за этого я пропустил некоторые функции, которые я добавил (или планирую добавить) в свой собственный Synthfonio, вот некоторые из них:

-MIDI over BLE: если у вас есть плата MKR WIFI 1010, ее довольно легко подключить. В этой библиотеке есть очень простой пример midi. Вы можете добавить MIDI-команды из этой библиотеки к обычным MIDI-командам, вызываемым скетчем Synthfonio. Или, чтобы сэкономить заряд батареи, добавьте переключатель для активации функций Bluetooth только при необходимости (использование прерываний Arduinos и системы автоматического сброса, подобной этой, было бы хорошей идеей).

-PitchBend: Хотя ни одна из библиотек синтезаторов не может управлять командами изменения высоты тона MIDI, библиотека MIDI позволяет отправлять их. Дело в том, чтобы решить, как это контролировать. Любой потенциометр должен работать нормально, но я думаю о более интересных альтернативах, таких как датчики! близость, свет и т. д.

Инструментальный конкурс
Инструментальный конкурс
Инструментальный конкурс
Инструментальный конкурс

Второй приз в конкурсе инструментов

Рекомендуемые: