Съдържание:

Wii Nunchuck Synthesizer: 4 стъпки
Wii Nunchuck Synthesizer: 4 стъпки

Видео: Wii Nunchuck Synthesizer: 4 стъпки

Видео: Wii Nunchuck Synthesizer: 4 стъпки
Видео: [ $9 ] DIY modular synth Wii nunchuck controller and Multi LFO / Joystic , Acceleration sensor 2024, Юли
Anonim
Wii Nunchuck синтезатор
Wii Nunchuck синтезатор

Светът на музиката на Wii:

Реших най -накрая да съчета любовта си към музиката с малкото опит в програмирането, което натрупах през последните няколко години. Интересувам се от създаването на собствен инструмент, откакто видях реч на Тод Мачовер в моето училище. Ако не сте запознати с работата му, дайте му Google, тъй като той отминава границите на музиката, технологиите, както и тяхното пресичане от няколко години (медийни лаборатории на MIT, Rock Band, Guitar Hero и др.).

Свързах моя Nunchuck с Arduino Uno, работещ в библиотеката за синтез на звук Mozzi поради добре документираната употреба на двете онлайн. За улеснение използвам адаптер за WiiChuck, който се включва директно в Arduino. Този сравнително прост проект възпроизвежда серия от височини в зависимост от височината (YZ-равнина), измерена от акселерометъра на Nunchuck. Стойността Y на джойстика се съпоставя с печалбата, за да се направи терена по -силен или по -мек. Той също така променя акорди в зависимост от Z-бутона и включва фазово-модулираща обвивка при натискане на C-бутона. След това честотата на плика се променя с Roll, измерен от Nunchuck (картината завърта копче).

Ресурси:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x WiiChuck адаптер
  • 1 х съвместим 3,5 мм женски стерео жак
  • 1 x 3,5 мм аудио кабел
  • 1 x някакъв високоговорител (Първо можете да включите зумер, за да го тествате
  • 4-5 проводника в различни цветове

По избор, но препоръчително:

  • 1 x 330 Ohm резистор
  • 1 x.1 uF кондензатор

Стъпка 1: Включете вашия NunChuck

Включете вашия NunChuck
Включете вашия NunChuck
Включете вашия NunChuck
Включете вашия NunChuck
Включете вашия NunChuck
Включете вашия NunChuck

Копирайте/поставете класа WiiChuck от Arduino Playground. Ще ни трябва версията с декларацията за PWR и GND щифтове. Запазете го като WiiChuck.h и го съхранявайте в същата директория като вашия проект.

Сега копирайте/поставете следното в Arduino IDE и го качете.

#include "Wire.h" //#include "WiiChuckClass.h" // най -вероятно неговият WiiChuck.h за останалите от нас. #include "WiiChuck.h" WiiChuck chuck = WiiChuck ();

void setup () {

// nunchuck_init (); Serial.begin (115200); chuck.begin (); chuck.update (); //chuck.calibrateJoy (); }

void loop () {

забавяне (20); chuck.update ();

Serial.print (chuck.readPitch ());

Serial.print (","); Serial.print (chuck.readRoll ()); Serial.print (",");

Serial.print (chuck.readJoyX ());

Serial.print (","); Serial.print (chuck.readJoyY ()); Serial.print (",");

if (chuck.buttonZ) {

Serial.print ("Z"); } else {Serial.print ("-"); }

Serial.print (",");

// не е функция // if (chuck.buttonC ()) {

if (chuck.buttonC) {Serial.print ("C"); } else {Serial.print ("-"); }

Serial.println ();

}

Изключете вашия Arduino от захранването и свържете вашия WiiChuck адаптер към аналогови щифтове 2-5 на вашия Arduino.

Свържете се отново към захранването и се уверете, че стойностите на Nunchuck се изпращат на вашия Arduino и се отпечатват на серийния монитор. Ако не виждате промяна в числата, уверете се, че връзките са добри и че Nunchuck функционира. Прекарах няколко дни, опитвайки се да поправя софтуера, преди да осъзная, че проводникът на моя Nunchuck е вътрешно прекъснат!

След това ще свържем всичко с Mozzi…

Стъпка 2: Запознаване с Mozzi

Запознаване с Mozzi
Запознаване с Mozzi

Първо ще трябва да изтеглите най -новата версия на Mozzi. Те се зареждат с дарения, така че дарете, ако се чувствате толкова склонни и изтеглете библиотеката. Можете лесно да го добавите към библиотеките си, като изберете Sketch> Библиотеки> Добавяне на. ZIP библиотека … от Arduino IDE.

Сега ще свържем 3,5 -милиметровия жак за слушалки към платката и Arduino, за да можем лесно да се свържем с него по -късно (можете да изключите Nunchuck и адаптера засега).

  1. Включете вашия жак в долния десен ъгъл на дъската, за да освободите място за останалите. Жакът трябва да е широк 5 пина.
  2. Свържете средния ред към земята с джъмпер.
  3. Свържете най -горния ред на жака към празен ред отгоре (ред 10 на снимката). Това е проводникът, носещ аудио сигнала.
  4. Свържете също цифров пин ~ 9 към ред 10.
  5. Свържете Ground на вашия Arduino към заземяващата шина на макета.
  6. Не е задължително да използвате резистора и кондензатора, но може да забележите силен писък, ако не го направите. Той действа като нискочестотен филтър за елиминиране на честоти над ~ 15 kHz.

Отворете скицата на Mozzi Sinewave в Arduino IDE, като изберете Файл> Примери> Mozzi> Основи> Sinewave. Това по същество е еквивалентът на Mozzi на „Hello World“.

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

Ако не чувате постоянен A4 (440Hz), идващ от високоговорителя, уверете се, че всички връзки са добри и опитайте отново.

След това ще свържем Nunchuck към Arduino!

Стъпка 3: Съберете всичко заедно

Събирайки всичко заедно
Събирайки всичко заедно

Сега ще използваме стойността на ролката от Nunchuck, за да променим честотата на Sinewave.

От IDE на Arduino изберете Файл> Примери> Mozzi> Сензори> Пиезо честота

Ще трябва да добавим няколко реда към този код, за да го накараме да работи с Nunchuck. Добавете включване към библиотеката на WiiChuck и създайте екземпляр от обект WiiChuck, наречен chuck. Можете също така да коментирате декларацията на PIEZO_PIN или просто да я изтриете, тъй като няма да я използваме.

#include "WiiChuck. H"

WiiChuck патронник = WiiChuck (); // const int PIEZO_PIN = 3; // задаваме щифт за аналогов вход за пиезо

Сега в настройката ще трябва да добавим следното:

chuck.begin (); chuck.update ();

и накрая ще трябва да променим няколко неща в updateControl ():

void updateControl () {

chuck.update (); // получаваме най -новите данни за nunchuck // четем пиезото // int piezo_value = mozziAnalogRead (PIEZO_PIN); // стойността е 0-1023 int piezo_value = map (Коментирайте реда, който задава piezo_value, и добавете следното:

void updateControl () {chuck.update (); // получаваме най -новите данни за nunchuck // четем пиезо // int piezo_value = mozziAnalogRead (PIEZO_PIN); // стойността е 0-1023 // Не се нуждаем от горния ред, но защо да не картографираме ролката до същия диапазон? int piezo_value = map (chuck.readRoll (), -180, 180, 0 1023);

Качете кода и честотата трябва да съответства на вашия Nunchuck's Roll. Опитайте да го свържете към различни честотни диапазони. Ако не сте забелязали по -долу в скицата, стойността от сензора се умножава по 3, така че в момента възпроизвеждаме тонове от 0 Hz до около 3000 Hz.

Стъпка 4: Последни щрихи

Последни щрихи
Последни щрихи

Сега сте готови да качите окончателната версия на кода, който събрах от предишната стъпка и още няколко примера на Mozzi (Phase_Mod_Envelope и Control_Gain, за да бъдем точни). За да улесня живота си, включих и файл, наречен pitches.h, който просто дефинира честотни стойности с познати имена на бележки (т.е. NOTE_A4).

Предлагам да прочетете документацията на Mozzi, тъй като голяма част от кода е направо от примерите, с изключение на кода за Nunchuck.

Ето линк към моето хранилище на Git. Всички важни файлове са включени, с изключение на библиотеката Mozzi, която трябва да получите от уебсайта им, така че да е актуална. Изтеглете WiiMusic.ino и го качете на устройството си, за да чуете как звучи. Предлагам ви да си поиграете с параметрите, които променям (промяна на обхвата на картата, разделяне/умножаване на числа и т.н..), Тъй като по този начин намерих конкретния звук, който търсех.

Отражение

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

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

Все още има редица възможности за напред. Например, бих искал да използвам Arduino като вид MIDI интерфейс между MIDI контролер и слушалките, за да променя параметрите на MIDI бележката, тъй като има толкова много за избор (сила на звука, прекъсване, честота на плика, височина на тона, модулация, вибрато, вие го наричате). Това би позволило много по -голяма гъвкавост, включително превключване на параметрите с бутоните и просто свирене на акорд, който не е твърдо кодиран в C ++ масив.

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