Съдържание:

Synthfonio - музикален инструмент за всеки: 12 стъпки (със снимки)
Synthfonio - музикален инструмент за всеки: 12 стъпки (със снимки)

Видео: Synthfonio - музикален инструмент за всеки: 12 стъпки (със снимки)

Видео: Synthfonio - музикален инструмент за всеки: 12 стъпки (със снимки)
Видео: Дэвид Холт исполняет музыку гор 2024, Юли
Anonim
Image
Image
Електрическа схема
Електрическа схема

Харесвам синтезатори и MIDI контролери, но страшно свиря на клавиатури. Обичам да пиша музика, но за да свирите всъщност тази музика, трябва да сте се научили да свирите на инструмент. Това отнема време. Време, което много хора нямат, и което обикновено ги обезкуражава да продължат да тренират. Опитвам се да променя това. Този проект е опит да се съкрати пропастта между момента „Бих искал да се науча да играя X“и този „Искам да играя X“. Знам, че повечето от нас бяха или все още мечтаят за второто, но се забиха в първото, а също така знам, че моментът, в който успях да изпълня и се наслаждавам на първите си основни песни с четири акорда на китара, беше моментът, в който наистина започнах да уча инструмента и оттогава никога не съм се отказвал от него

Какво е това

Това е лесен за научаване инструмент, лесен за работа, ориентиран към импровизация и с безкрайна възможност за звуци (като MIDI контролер). Той разполага с 2 комплекта клавиши, един за определяне на акорди и ключови подписи, а друг за действително възпроизвеждане на нотите. Какъвто и акорд да е натиснат в клавишите на врата на инструментите, той ще определя височината на клавишите на дръжката на инструмента, подобно на китара, цигулка и други струнни инструменти; с допълнителния напредък, че това е интелигентно устройство, което може да интерпретира скалата, която се възпроизвежда от една нота или двойка ноти.

Как работи

Прост. Искате ли да свирите E акорд? просто натискате клавиша E на врата (вижте диаграмата на стъпка 11) и изстрелвате всичко, което искате, върху клавишите на дръжката. Не се притеснявайте, ще бъде в тон. Можете да използвате клавишите на дръжката, за да възпроизвеждате акорди, мелодии и арпеджио във всякакъв тон, който искате, само като натиснете съответния клавиш на врата. По същия начин, натискането на клавиш A на шията заедно с клавиша C (малка трета от A) ще активира минорен тон A за клавишите на дръжката.

Това може да позволи на всеки играч да изпълни 4-акордна мелодия (най-популярната музика е 4-акордна), акомпанимент или дори импровизация; с не повече от няколко пръста на място.

Този инструмент може да функционира като MIDI контролер и аз включих прост вграден синтезатор за игра без външно оборудване. В зависимост от платката arduino, която решите да използвате, този проект може да работи и като USB MIDI контролер или MIDI през BLE контролер.

Моите обичайни отказ от отговорност:- Аз не говоря английски, така че може да са допуснати грешки. - Освен това съм самоук по електроника, кодиране и музика, така че отново може да са допуснати грешки. - Това е „инструмент за всеки“, който да свири, не е задължително да се изгражда. Имате нужда от малко познания по електроника и кодиране, за да работите по този проект.

_

Консумативи

-An Arduino: Всеки arduino трябва да работи. Препоръчвам платка с USB възможности, като платките базирани на ATmega32U4 (leonardo, micro и т.н.), така че можете да използвате този проект като USB MIDI контролер. Използвах MKR1010, защото той също има възможности за Bluetooth и вторичен хардуерен сериен порт.

-ATmega328 на макет (по избор): Това е за интегрирания синтезатор. Можете да използвате подходяща табла UNO, но аз отидох за по -проста система.

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

-Модул за зарядно устройство за батерии: Препоръчвам нещо подобно на това на линка, защото има защита от презареждане/разреждане.

-18650 батерия

-Модул за повишаване на напрежението на асансьора: Внимавайте с това! Уверете се, че избраният от вас модул може да приема входно напрежение по -ниско от 5v. Модулите за зареждане на батерии обикновено извеждат около 4v и ако захранвате това напрежение към стъпков модул, който не е класиран за това напрежение, можете да имате проблеми. Използвах модул, който се нуждаеше от поне 5v входно напрежение, и изпържих arduino. (някакви проекти за повторно използване, повторно колоездене на пържена дъска? Моля, оставете коментар)

-1/4 женски аудио жак

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

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

-x2 превключватели: Препоръчвам тези, но всеки превключвател, който държи позицията си, ще стане.

-x14 Tact превключватели: За ключовете за врата.

-x9 Крайни превключватели: Бутони за дръжка (7) и превключватели за транспониране (2)

-1k ом резистор

-x2 220 ома резистор (ако правите 5v MIDI изход)

-33 ома и 10 ома резистори (ако правите 3.3V MIDI изход)

-Малки дъски: Колкото искате! Аз изграждам всичко на 170 точки.

-Джъмперни проводници: Не можете да имате достатъчно

Защо две отделни arduinos ?: Да, трябва да е възможно да се напише една скица, изпълняваща цифров синтезатор, с USB MIDI, MIDI през BLE и редовни MIDI функции, на една и съща платка. Би трябвало, може би е така, но не можех. Работата е; повечето библиотеки за синтезатори са направени за ATmega328, който няма USB възможности. От друга страна, малкото базирани на ATmega32U4 платки (USB възможности), които изпълняват библиотеки за синтезатори, го правят с проблеми. Забравете за MIDI през BLE, имате нужда от нещо като a MKR1010 за това (доколкото съм чел, модул hm-10 няма да работи с MIDI), но семейството MKR използва различна архитектура и дори няма компилирам скици с някоя от библиотеките на синтезатор, които съм намерил онлайн, така че това са два отделни микроконтролера за мен. Главното табло, което извършва всички сензорни, интерпретационни и midi неща; и втори за интегрирания синтезатор, който чете само midi данни от основния и произвежда звук. само една единична дъска. Например, един ATmega32U4 като USB MIDI контролер с библиотека с най -малко бъги, която можете да стартирате (без MIDI BLE), или единичен ATmega328, който изпълнява която и да е библиотека от синтезатори (без USB MIDI).

Стъпка 1: Схема на свързване

Ето пълната диаграма на проекта. Не забравяйте, че не е нужно да използвате MKR платка, повечето платки ще работят, просто трябва да сте наясно с възможностите, които всяка платка има (USB, BLE съвместима и т.н.), и да регулирате напрежението, подавано към vin pin. Нека сега разгледаме всеки раздел по -подробно:

Стъпка 2: Схема на свързване: MIDI контролер и мултиплексори

Схема на свързване: MIDI контролер и мултиплексори
Схема на свързване: MIDI контролер и мултиплексори
Схема на свързване: MIDI контролер и мултиплексори
Схема на свързване: MIDI контролер и мултиплексори

-Споделих почти всички щифтове между двата мултиплексора, за да намаля още повече броя на използваните ардуинови щифтове. Наистина, само сигналните щифтове на всеки модул на мултиплексори трябва да имат свой собствен специален щифт arduino. Тази подредба не създава проблеми или смущения между клавишите, тъй като функционирането на скицата е линейно и arduino проверява само един вход наведнъж. Каквото и да направи другият мултиплексор или другият входен щифт, получен по време на тази проверка, ще бъде игнориран.

-Двата превключвателя, обозначени като Транспониращи превключватели, са крайни превключватели, които се активират чрез плъзгане на дръжката през плъзгащия отвор на основното тяло (вижте стъпките "дръжката" и "тялото" за повече подробности) и те транспонират всички бележки на дръжката с една октава нагоре или надолу.

-За контрол на силата на звука използвах стерео потенциометър, защото трябва да контролираме два вида силата на звука: аналогов (интегриран синтезатор) и MIDI.

-В изходната верига на MIDI има резистори за 3.3V изход от моята MKR платка. Ако използвате 5V платка, трябва да смените резистора си според MIDI диаграмата на втората снимка.

Стъпка 3: Схема на свързване: синтезаторът

Схема на свързване: синтезаторът
Схема на свързване: синтезаторът

-Връзката с OSC2 на ATmega328 преминава (през кондензатор) към маса на цифров пин 5. Направих това само за удобство, така че всичко се вписва добре и се затваря на платката. Ако мислите да направите същото, просто се уверете, че винаги декларирате пин 5 като вход, а никога като изход.

-Синтетичната библиотека, която избрах, извежда звук от щифт 11, както е показано на моята диаграма. Не всички библиотеки ще използват този щифт, не забравяйте да го промените съответно. Бих препоръчал винаги да използвате резистора и капачките като филтри.

-Добавих превключвател към 5v, доставен от основната платка, за да мога да изключа ATmega и да спестя батерията, докато използвам инструмента като MIDI контролер.

Стъпка 4: Схема на свързване: Източник на захранване

Схема на свързване: източник на захранване
Схема на свързване: източник на захранване

-Знам, всички MKR платки имат интегрирана Li-Po схема за зареждане. Работата е там, че не можах да намеря никакви (достъпни) липо батерии с необходимите спецификации навсякъде в страната, в която живея (Чили, Южна Америка), а също така вече имах модула за зареждане и няколко 18650 лежащи наоколо, така че ги вдигна. На всичкото отгоре, мисля, че повечето хора ще опитат този проект, използвайки по -достъпни на пазара платки, които обикновено нямат схема за зареждане.

-Отново се уверете, че избраният от вас модул за повишаване на напрежението на батерията, е в състояние да приема входно напрежение по -ниско от 5v. Модулите за зареждане на батерии обикновено извеждат около 4v и ако захранвате това напрежение към повишаващ модул, който не е класиран за това напрежение, можете да изпържите дъската си. Направих. Два пъти, преди да разбера за това.):

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

Стъпка 5: Идеята за кода

Кодът просто изпълнява постоянна проверка на всички ключове на дръжката, докато не открие попадение. Когато го направи, той проверява натиснатите клавиши на врата и интерпретира направената поза и следователно музикалния тоналност (ако не е натиснат клавиш във врата, ще остане последният набор от тоналност). Това ще определи коя бележка натиснатият бутон ще създаде. И накрая, двата транспониращи ключа се проверяват, за да се транспонира нотата с октава нагоре, октава надолу или октава по подразбиране; давайки на инструмента диапазон от 3 октави. Въз основа на всички тези променливи, Synthfonio произвежда съответната midi команда.

Що се отнася до кода на синтезатора, направете както направих и просто безсрамно копирайте и поставете примерната скица на „midi in“на библиотеката на синтезатора, която най -добре отговаря на вашите нужди. Ето някои препоръки: -The_synth-Mozzi-poly-synth-Noodle-Synth

О, в случай, че искате да интегрирате функционалностите на MIDI и синтезатор в една и съща платка, бих предложил вида на скицата, описан на тази връзка.

Стъпка 6: Кодът

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

Също така, ако ще използвате USB платка или MKR 1010, можете да експериментирате и с тази библиотека: MIDI USB: https://github.com/tigoe/SoundExamples/blob/master… MIDI през BLE:

#включва

MIDI_CREATE_DEFAULT_INSTANCE (); #включва CD74HC4067 my_mux (4, 3, 2, 1); // създаваме нов обект CD74HC4067 с четирите му контролни щифта #define mux_handle_pin 5 // дефинираме щифт за споделяне с каналите от мултиплексора за дръжка #define mux_neck_pin 0 // дефинираме щифт за споделяне с каналите от мултиплексора на врата // дефиниране на транспониращи превключватели #дефиниране на транспониранеUp 7 #дефиниране на транспониране Надолу 6 байта neckKeysNumbers = {12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; байт fingerAmount = 0; байт вратаKeyHolded = {0, 0, 0}; байт корен = 48; байт minorThird; байт handleKeyNote = {0, 48, 50, 52, 53, 55, 57, 59}; байт handleKeyNoteSent = {0, 0, 0, 0, 0, 0, 0, 0}; int октава = 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) на HANDLE. for (байт i = 1; i <8; i ++) {my_mux.channel (i); // проверка на всеки клавиш през мултиплексора // ако е натиснат превключвател (ключ) и ако състоянието на ключа не е "натиснато" if ((digitalRead (mux_handle_pin) == LOW) && (handleKeyNoteSent == 0)) {delayMicroseconds (2400); // For-Loop за проверка на 12 клавиша (0-11) на ВРАТА. for (байт k = 0; k 0)) {MIDI.sendNoteOff (handleKeyNoteSent , 0, 1); // Спиране на дръжката на бележкатаKeyNoteSent = 0; // дефинираме го като "не изпратено" забавяне (18); }}} // Тази функция взема открития ключ на врата и въз основа на това // задава номера на основната бележка (в MIDI), // amd също така задава номера на бележката, която би била нейната второстепенна трета невалидна rootSetting () {switch (neckKeyHolded [0]) {случай 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; прекъсване; случай 10: корен = 57; minorThird = 1; прекъсване; случай 11: корен = 58; minorThird = 2; прекъсване; по подразбиране: root = 48; minorThird = 4; прекъсване; }} // Тази функция задава действителната бележка, която клавишът ще свири. // първо проверява дали превключването се превключва и транспонира октавата нагоре или надолу, ако е необходимо, // след това проверява дали размерът на пръстите в позиция съответства на голям или минорен акорд (1 или 2 пръста). // И накрая, ако 2 пръста са открити на място, той проверява дали вторият пръст се намира в // съответната незначителна трета нота. Ако не, вторият пръст ще бъде игнориран и акордът ще бъде // интерпретиран като мажорен акорд. Ако вторият пръст наистина играе второстепенна трета, функцията ще дефинира // бележките, които ще изпълняват клавишите на дръжката. void keyConstructor () {if (digitalRead (transposeUp) == LOW) {октава = 12; } иначе ако (digitalRead (transposeDown) == LOW) {октава = -12; } else {октава = 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 печат и лазерно рязане, за да създам много от частите. Просто нямаше да правя всички измервания и рязане на MDF, които направих на последната си машина. Прикачих файла, който проектирах за лазерно рязане на повечето части, и 3d модела на инструмента. Моля, имайте предвид, че всички тези файлове са предимно същите на действителното нещо, което съм построил, но има несъответствия, тъй като направих много промени след първоначалното лазерно рязане и 3D моделиране. Използвайте тези файлове като отправна точка за вашия проект, а не като окончателен шаблон.

Моля, обърнете внимание и на поясненията, които съм написал върху снимките в следващите стъпки

Стъпка 8: Инструментът: Врат

Image
Image
Инструментът: Врат
Инструментът: Врат
Инструментът: Врат
Инструментът: Врат
Инструментът: Врат
Инструментът: Врат

Това по същество са няколко дълги лазерно изрязани MDF парчета, подредени едно върху друго, за да се създаде достатъчно дебел врат, с достатъчно място вътре за тактичните превключватели (ключове за шията) и мултиплексния модул. А също и 14 парчета лазерно изрязана MDF плоча под формата на клавиши за пиано за покриване на превключвателите. Превключвателите са монтирани на перфборд и са свързани към мултиплексора.

Стъпка 9: Инструментът: Дръжка

Image
Image
Инструментът: Дръжка
Инструментът: Дръжка
Инструментът: Дръжка
Инструментът: Дръжка

Това беше най -трудната част за мен. Не знам дали напълно решавам тази част, но тя работи доста добре за поне май. Той има 7 превключвателя през мултиплексор и може да се плъзне през отвора в тялото на инструмента. Няма да се опитвам да го опиша, затова ето снимките …

Стъпка 10: Инструментът: Тяло

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

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

Стъпка 11: Как се играе

Как се играе
Как се играе
Как се играе
Как се играе

Свирене на акорди

Нека се опитаме да свирим няколко прости минорски и кметски акорди, както е обяснено в началото в раздела „Как работи“. По принцип всеки клавиш, който натиснете във врата, ще ви даде основната скала на тази бележка върху клавишите на дръжката. Също така, ако преброите 3 клавиша нагоре (движете се към дръжката) и натиснете този клавиш, като държите натиснат оригиналния, все още ще имате скала на тази оригинална бележка на клавишите на дръжката, но този път това ще бъде второстепенна скала. Музикално обучените читатели ще разберат (всъщност много по -добре от мен), че натискането на точния трети клавиш нагоре от всяка нота е същото като свиренето на втората му трета.

Също така, ако смятате, че 7 ноти не са ви достатъчни, можете просто да плъзнете нагоре или надолу цялата дръжка през плъзгащия отвор на основното тяло и ще имате същите 7 ноти с една октава нагоре или надолу.

Свирене на акорди (обяснение за начинаещи)

Акордите са две или повече ноти, свирени заедно. Помислете за пианист или китарист, който свири едновременно няколко ноти (клавири за пиано или струни на китара) и ги оставя да звучат, те пеят малка фраза над нея, а след това удрят друг набор от ноти и пеят друга фраза. Те свирят акорди и пеят мелодия. Това е същността на всяка основна песен. И така, как да направим това на Synthfonio? прост. Искате ли да свирите E акорд? просто натискаш клавиша E на врата и изстрелваш всичко, което искаш по клавишите на дръжката. Не се притеснявайте, ще бъде в тон. Ами минорните акорди? (акорди, чието име завършва на буквата "m" като Am, Em, G#m, C#m и т.н.) Нека свирим акорд минор (Am). Натискаме клавиша A (вижте приложената диаграма), но също така броим три клавиша нагоре (движейки се към дръжката) и натискаме и този клавиш (в този случай C). Това ефективно превръща A акорд в Am акорд (минор).

Пускане на песен

Сега, както някои може би вече знаят, има много и много песни с 4 акорда, обикновено изградени върху прости мажорни и минорни акорди. Перфектно. Ние търсим в Google „акордите на заглавието на песента“, намираме този, който искаме (ето няколко лесни и прости примера). Ако акордът е основен, ние просто натискаме този единствен клавиш на врата на Synthfonio и свирим всичко, в което се чувствате дръжката. Ако в песента се появи незначителен акорд, просто натискаме съответния клавиш и третия клавиш нагоре и сме готови. Това е. Можете да използвате клавишите на дръжката за свирене на акорди и пеене над тях или за възпроизвеждане на мелодии, арпеджио и т.н.

В момента съм в процес на включване и на увеличени и намалени акорди, като поставям трети пръст на място или дори само двата пръста, като вторият определя увеличения или намаления пети.

Това е незавършен проект. Междувременно просто продължете да играете, да експериментирате и да се забавлявате. Приемам предложения (:

Различни скали

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

Стъпка 12: Възможни модификации

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

-MIDI над BLE: ако имате MKR WIFI 1010 платка, това е доста лесно за включване. Тази библиотека има много прав пример за midi. Можете да добавите midi команди от тази библиотека към обикновените MIDI команди, извикани от скицата на Synthfonio. Или, за да спестите батерия, добавете превключвател, за да активирате функциите на bluetooth само когато е необходимо (като използвате прекъсванията на arduinos и система за автоматично нулиране като тази би била добра идея).

-PitchBend: Въпреки че никоя от библиотеките на синтезатора не може да управлява командите за MIDI височина, MIDI библиотеката ви позволява да ги изпращате. Въпросът е да решите как да го контролирате. Всеки потенциометър трябва да работи добре, но мисля за по -интересни алтернативи, като сензори! близост, светлина и др.

Състезание по инструменти
Състезание по инструменти
Състезание по инструменти
Състезание по инструменти

Втора награда в конкурса за инструменти

Препоръчано: