Բովանդակություն:
- Քայլ 1. Միացնելով ձեր NunChuck- ին
- Քայլ 2: ozանոթանալ Mozzi- ին
- Քայլ 3: Ամեն ինչ միասին դնել
- Քայլ 4: Վերջնական հպումներ
Video: Wii Nunchuck սինթեզատոր `4 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
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- ին
Պատճենեք/տեղադրեք 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- ին
Նախ, դուք պետք է ներբեռնեք Mozzi- ի վերջին տարբերակը: Դրանք սնվում են նվիրատվություններով, ուստի նվիրաբերեք, եթե այդքան տրամադրված եք և ներբեռնեք գրադարանը: Դուք կարող եք այն հեշտությամբ ավելացնել ձեր գրադարաններին ՝ ընտրելով Էսքիզ> Գրադարաններ> Ավելացնել. ZIP գրադարան… Arduino IDE- ից:
Այժմ մենք 3.5 մմ ականջակալների միակցիչը կմիացնենք տախտակին և Arduino- ին, որպեսզի հետագայում հեշտությամբ միանանք դրան (այժմ կարող եք անջատել Nunchuck- ը և ադապտերը):
- Միացրեք ձեր Jack- ը տախտակի ներքևի աջ անկյունում `մնացածի համար տեղ ազատելու համար: Theեկը պետք է լինի 5 կապում լայնությամբ:
- Միջին շարանը միացրեք ցատկող մետաղալարով գետնին:
- Միացրեք վարդակի ամենավերևի շարքը վերևի դատարկ տողի հետ (նկարի 10 -րդ տողը): Սա ձայնային ազդանշան կրող մետաղալարն է:
- Միացրեք թվային Pin ~ 9 -ը նաև 10 -րդ տողին:
- Միացրեք Ground- ը ձեր Arduino- ի վրա հացահատիկի գրունտային երկաթուղու հետ:
- Պարտադիր չէ, որ դեռ օգտագործեք ռեզիստորն ու կոնդենսատորը, բայց չօգտագործելու դեպքում կարող եք նկատել բարձր ճիչ: Այն գործում է որպես ցածր փոխանցման ֆիլտր ՝ 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 ++ զանգվածի մեջ:
Խորհուրդ ենք տալիս:
Syրի սինթեզատոր MakeyMakey- ի և Scratch- ի հետ. 6 քայլ (նկարներով)
Syրի սինթեզատոր MakeyMakey- ի և Scratch- ի միջոցով. MakeyMakey- ի օգտագործումը տարբեր նյութեր անջատիչների կամ կոճակների վերածելու և համակարգչում շարժումներ կամ ձայներ առաջացնելու համար հետաքրքրաշարժ գործ է: Մարդը սովորում է, թե որ նյութն է տանում ընթացիկ թույլ իմպուլսը և կարող է հորինել և փորձարկել
Հիանալի անալոգային սինթեզատոր/օրգան `օգտագործելով միայն առանձին բաղադրիչներ. 10 քայլ (նկարներով)
Esomeարմանալի անալոգային սինթեզատոր/օրգան, որն օգտագործում է միայն առանձին բաղադրիչներ. անհրաժեշտ է մի քանի հիմնական ենթաշղթա. Պարզ տատանումով ՝ ռեզիստորով
Մոդուլային սինթեզատոր էներգիայի մատակարարում `10 քայլ (նկարներով)
Մոդուլային սինթեզատոր էլեկտրամատակարարում. Եթե դուք կառուցում եք մոդուլային սինթեզատոր, ապա մի բան, որ ձեզ անպայման անհրաժեշտ կլինի, էներգիայի մատակարարումն է: Մոդուլային սինթեզող սարքերի մեծ մասը պահանջում է երկակի երկաթուղային համակարգ (0V, +12V և -12V բնորոշ են), և կարող է նաև հարմար լինել ունենալ 5V երկաթուղի, եթե դուք պլանավորող եք
Keytar Hero (Wii Guitar Controller- ի օգտագործումը որպես սինթեզատոր). 7 քայլ (նկարներով)
Keytar Hero (Wii Guitar Controller- ի օգտագործումը որպես սինթեզատոր). Guitar Hero- ի խաղերը տասը տարի առաջ մոլեգնում էին, ուստի փոշի հավաքելու շուրջը պետք է շատ հին կիթառի վերահսկիչներ լինեն: Նրանք ունեն բազմաթիվ կոճակներ, բռնակներ և լծակներ, ուստի ինչու՞ դրանք նորից չօգտագործել: Կիթառի հսկիչ
Անլար Wii Nunchuck վերահսկվող Arduino: 7 քայլ
Անլար Wii Nunchuck վերահսկվող Arduino. Օգտագործեք ամբողջովին չփոփոխված անլար Wii Nunchuck- ը որպես կառավարման համակարգ Arduino- ի վրա հիմնված ցանկացած ծրագրի համար: Չկա ավելացված ռադիոհաղորդիչ/ընդունիչ զույգ և այլն: Այս հրահանգը ենթադրում է որոշակի փորձ Arduino միկրոկառավարիչի հետ: Ռադիո