Բովանդակություն:

Wii Nunchuck սինթեզատոր `4 քայլ
Wii Nunchuck սինթեզատոր `4 քայլ

Video: Wii Nunchuck սինթեզատոր `4 քայլ

Video: Wii Nunchuck սինթեզատոր `4 քայլ
Video: Nunchuk module prototype 2024, Նոյեմբեր
Anonim
Wii Nunchuck սինթեզատոր
Wii Nunchuck սինթեզատոր

Wii երաժշտության աշխարհը

Ես որոշեցի վերջապես համատեղել իմ սերը դեպի երաժշտությունը վերջին մի քանի տարիների ընթացքում ձեռք բերած ծրագրավորման մի փոքր փորձի հետ: Ինձ հետաքրքրում էր իմ սեփական գործիքը ստեղծել այն ժամանակվանից, երբ տեսա Թոդ Մաչովերի ելույթը իմ դպրոցում: Եթե դուք անծանոթ եք նրա աշխատանքին, տվեք նրան Google, քանի որ նա արդեն մի քանի տարի է, ինչ մղում է երաժշտության, տեխնոլոգիայի, ինչպես նաև դրանց հատման սահմանները (MIT մեդիա լաբորատորիաներ, ռոք խումբ, կիթառի հերոս և այլն):):

Ես իմ Nunchuck- ը միացրել եմ Arduino Uno- ին, որն աշխատում է Mozzi ձայնային սինթեզի գրադարանում `երկուսի առցանց լավ փաստաթղթավորված օգտագործման շնորհիվ: Հեշտության համար ես օգտագործում եմ WiiChuck տախտակի ադապտեր, որը միանում է անմիջապես Arduino- ին: Այս համեմատաբար պարզ նախագիծը խաղում է մի շարք խաղադաշտեր ՝ կախված Նունչուկի արագացուցիչից չափված Չափից (YZ-Plane): Joyոյսթիկի Y արժեքը քարտեզագրվում է շահույթին `բարձրությունը դարձնելու համար ավելի բարձր կամ մեղմ: Այն նաև փոխում է ակորդները ՝ կախված Z- կոճակից և միացնում փուլային մոդուլյացիայի ծրարը, երբ C- կոճակը սեղմվում է: Theրարի հաճախականությունը այնուհետև փոփոխվում է Նունչուկից չափվող գլանափաթեթով (նկարը պտտվում է բռնակով):

Պաշարներ:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x WiiChuck ադապտեր
  • 1 x breadboard- ի հետ համատեղելի 3.5 մմ կանացի ստերեո խցիկ
  • 1 x 3.5 մմ աուդիո մալուխ
  • 1 x ինչ -որ տեսակի բարձրախոս (ստուգելու համար սկզբում կարող եք միացնել ազդանշանային ազդանշանը)
  • 4-5 տարբեր գույնի լարեր

Լրացուցիչ, բայց խորհուրդ է տրվում

  • 1 x 330 Օմ դիմադրություն
  • 1 x.1 uF կոնդենսատոր

Քայլ 1. Միացնելով ձեր NunChuck- ին

Միացնելով ձեր NunChuck- ին
Միացնելով ձեր NunChuck- ին
Միացնելով ձեր NunChuck- ին
Միացնելով ձեր NunChuck- ին
Միացնելով ձեր NunChuck- ին
Միացնելով ձեր NunChuck- ին

Պատճենեք/տեղադրեք WiiChuck դասը Arduino խաղահրապարակից: Մեզ պետք կգա PWR և GND կապերի հայտարարագրմամբ տարբերակը: Պահեք այն որպես WiiChuck.h և պահեք այն նույն գրացուցակում, ինչ ձեր նախագիծը:

Այժմ պատճենեք/տեղադրեք հետևյալը Arduino IDE- ում և վերբեռնեք:

#ներառել «Wire.h» //#ներառել «WiiChuckClass.h» // ամենայն հավանականությամբ, դրա WiiChuck.h մնացածներիս համար: #ներառել «WiiChuck.h» WiiChuck chuck = WiiChuck ();

void setup () {

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

դատարկ շրջան () {

ուշացում (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 (",");

եթե (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 ադապտերը ձեր Arduino- ի անալոգային 2-5 կապերին:

Կրկին միացեք հոսանքին և համոզվեք, որ Nunchuck- ի արժեքները ուղարկվում են ձեր Arduino- ին և տպվում են Serial Monitor- ին: Եթե թվերի մեջ որևէ փոփոխություն չեք տեսնում, համոզվեք, որ կապերը լավ են, և դուք Նունչուկը գործում եք: Ես մի քանի օր փորձեցի ծրագրակազմը շտկել ՝ նախքան հասկանալը, որ իմ Nunchuck- ի մետաղալարը ներքին կոտրված է:

Հաջորդը, մենք ամեն ինչ կպցնենք Mozzi- ին:..

Քայլ 2: ozանոթանալ Mozzi- ին

Ozանոթացում Mozzi- ին
Ozանոթացում Mozzi- ին

Նախ, դուք պետք է ներբեռնեք Mozzi- ի վերջին տարբերակը: Դրանք սնվում են նվիրատվություններով, ուստի նվիրաբերեք, եթե այդքան տրամադրված եք և ներբեռնեք գրադարանը: Դուք կարող եք այն հեշտությամբ ավելացնել ձեր գրադարաններին ՝ ընտրելով Էսքիզ> Գրադարաններ> Ավելացնել. ZIP գրադարան… Arduino IDE- ից:

Այժմ մենք 3.5 մմ ականջակալների միակցիչը կմիացնենք տախտակին և Arduino- ին, որպեսզի հետագայում հեշտությամբ միանանք դրան (այժմ կարող եք անջատել Nunchuck- ը և ադապտերը):

  1. Միացրեք ձեր Jack- ը տախտակի ներքևի աջ անկյունում `մնացածի համար տեղ ազատելու համար: Theեկը պետք է լինի 5 կապում լայնությամբ:
  2. Միջին շարանը միացրեք ցատկող մետաղալարով գետնին:
  3. Միացրեք վարդակի ամենավերևի շարքը վերևի դատարկ տողի հետ (նկարի 10 -րդ տողը): Սա ձայնային ազդանշան կրող մետաղալարն է:
  4. Միացրեք թվային Pin ~ 9 -ը նաև 10 -րդ տողին:
  5. Միացրեք Ground- ը ձեր Arduino- ի վրա հացահատիկի գրունտային երկաթուղու հետ:
  6. Պարտադիր չէ, որ դեռ օգտագործեք ռեզիստորն ու կոնդենսատորը, բայց չօգտագործելու դեպքում կարող եք նկատել բարձր ճիչ: Այն գործում է որպես ցածր փոխանցման ֆիլտր ՝ eliminate 15 կՀց -ից բարձր հաճախականությունները վերացնելու համար:

Բացեք Mozzi's Sinewave ուրվագիծը Arduino IDE- ում ՝ ընտրելով Ֆայլ> Օրինակներ> Mozzi> Հիմունքներ> Sinewave: Սա ըստ էության Mozzi- ի համարժեքն է «Բարև աշխարհ»:

Վերբեռնեք ուրվագիծը և բարձրախոսը միացրեք սեղանի սեղանին: Կարող եք նաև ազդանշան օգտագործել, եթե դեռ հացահատիկը միացված չեք եղել աուդիո խցիկին:

Եթե բարձրախոսից չեք լսում մշտական A4 (440 Հց), համոզվեք, որ ձեր բոլոր կապերը լավ են և նորից փորձեք:

Հաջորդը, մենք Nunchuck- ը կկապենք Arduino- ին:

Քայլ 3: Ամեն ինչ միասին դնել

Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը

Այժմ մենք մտադիր ենք օգտագործել Nunchuck- ի գլորման արժեքը ՝ Sinewave- ի հաճախականությունը փոխելու համար:

Arduino IDE- ից ընտրեք Ֆայլ> Օրինակներ> Mozzi> Սենսորներ> Պիեզո հաճախականություն

Մենք պետք է մի քանի տող ավելացնենք այս ծածկագրին, որպեսզի այն աշխատի Nunchuck- ի հետ: WiiChuck գրադարանին ավելացրեք հավելում և ստեղծեք WiiChuck օբյեկտ, որը կոչվում է chuck: Կարող եք նաև մեկնաբանել PIEZO_PIN- ի հայտարարագիրը կամ պարզապես ջնջել այն, քանի որ մենք չենք օգտագործի այն:

#ներառել «WiiChuck. H»

WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // տեղադրել պիեզոյի համար անալոգային մուտքի քորոց

Այժմ տեղադրման ընթացքում մենք պետք է ավելացնենք հետևյալը.

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

և վերջապես, մենք պետք է մի քանի բան փոխենք updateControl- ում ():

void updateControl () {

chuck.update (); // ստանալ վերջին nunchuck տվյալները // կարդալ piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // արժեքը 0-1023 int piezo_value = քարտեզ (Մեկնաբանեք piezo_value սահմանող տողը և ներքևում ավելացրեք հետևյալը.

void updateControl () {chuck.update (); // ստանալ վերջին nunchuck տվյալները // կարդալ piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // արժեքը 0-1023 // Մեզ վերևի տողը պետք չէ, բայց ինչու՞ չպետք է քարտեզը քարտեզագրենք նույն տիրույթում: int piezo_value = քարտեզ (chuck.readRoll (), -180, 180, 0 1023);

Վերբեռնեք կոդը և հաճախականությունը պետք է համապատասխանի ձեր Nunchuck's Roll- ին: Փորձեք քարտեզագրել այն տարբեր հաճախականությունների տիրույթներում: Եթե էսքիզի ներքևում այլևս չեք նկատել, սենսորից ստացված արժեքը բազմապատկվում է 3 -ով, այնպես որ մենք այժմ նվագում ենք 0 Հց -ից մինչև 3000 Հց հնչերանգներ:

Քայլ 4: Վերջնական հպումներ

Վերջնական հպումներ
Վերջնական հպումներ

Այժմ դուք պատրաստ եք վերբեռնել ծածկագրի վերջին տարբերակը, որը ես կազմել եմ նախորդ քայլից և Mozzi- ի ևս մի քանի օրինակներ (ճշգրիտ Phase_Mod_Envelope և Control_Gain): Իմ կյանքն ավելի հեշտ դարձնելու համար ես ներառեցի նաև մի ֆայլ, որը կոչվում է pitches.h, որը պարզապես սահմանում է հաճախության արժեքները ծանոթ նշումների անուններով (այսինքն ՝ NOTE_A4):

Ես առաջարկում եմ կարդալ Mozzi- ի փաստաթղթերը, քանի որ ծածկագրի մեծ մասը ուղիղ է օրինակներից, բացառությամբ Nunchuck- ի ծածկագրի:

Ահա իմ Git շտեմարանի հղումը: Բոլոր կարևոր ֆայլերը ներառված են, բացառությամբ Mozzi գրադարանի, որը դուք պետք է ստանաք նրանց կայքից, որպեսզի այն արդիական լինի: Ներբեռնեք WiiMusic.ino- ն և վերբեռնեք այն ձեր սարքին ՝ լսելու, թե ինչ է հնչում: Ես առաջարկում եմ խաղալ պարամետրերի հետ, որոնք ես փոխում եմ (փոխել քարտեզի տիրույթները, բաժանել/բազմապատկել թվերը և այլն …

Արտացոլում

Չեմ զգում, որ բավականին ավարտված եմ: Դա չի նշանակում, որ ես գոհ չեմ նախագծից կամ դրա հնչողությունից, բայց զգում եմ, որ պարզապես մատներս թաթախեցի մի նոր աշխարհի մեջ, որը ցանկանում եմ շարունակել ուսումնասիրել, ուստի շարունակելու դեպքում այս նախագծից կավելացնեմ նոր ճյուղ: աշխատել.

Այնուամենայնիվ, ասելով, որ սա իմ առաջին իսկական ճանապարհորդությունն էր միկրոկոնտրոլերների աշխարհ, այնպես որ ես շատ շնորհակալ եմ ուսուցման փորձի համար: Դրա վրա աշխատած մոտ քսան ժամը տվեց ինձ ամանորյա գաղափարներ իմ և գործնականում իմ ընտանիքի յուրաքանչյուր անդամի համար: Ես որոշ չափով ափսոսում եմ, որ այս նախագծի վրա ուրիշի հետ չեմ աշխատել, քանի որ կարող էի բազմաթիվ խորհուրդներ և ուղեցույցներ օգտագործել այդ ճանապարհին: Այնուամենայնիվ, ես անձամբ շատ բան իմացա իմ փորձությունների միջոցով, ներառյալ երեք օր մազերս քաշել ՝ փորձելով կարգաբերել ծրագրային ապահովման խնդիրը, որը երբեք չկար (Նունչուկի ներքին մետաղալարը կոտրվել էր):

Դեռ մի շարք հնարավորություններ կան առաջ շարժվելու: Օրինակ, ես կցանկանայի օգտագործել Arduino- ն որպես MIDI ինտերֆեյսի մի տեսակ MIDI վերահսկիչի և ականջակալների միջև ՝ MIDI նշման պարամետրերը փոխելու համար, քանի որ ընտրելու շատ բան կա (ձայն, անջատում, ծրարի հաճախականություն, սկիպիդար թեքում), մոդուլյացիա, վիբրատո, դու այն անվանիր): Սա թույլ կտա շատ ավելի ճկունություն ապահովել, ներառյալ կոճակներով պարամետրերի փոխարկումը և պարզապես նվագելը, որը կոդավորված չէ C ++ զանգվածի մեջ:

Խորհուրդ ենք տալիս: