Turinys:
- 1 veiksmas: prijunkite „NunChuck“
- 2 žingsnis: Susipažinkite su Mozzi
- 3 žingsnis: sudėkite viską kartu
- 4 žingsnis: paskutiniai prisilietimai
Video: „Wii Nunchuck“sintezatorius: 4 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
„Wii“muzikos pasaulis:
Nusprendžiau pagaliau sujungti savo meilę muzikai su trupučiu programavimo patirties, kurią įgijau per pastaruosius kelerius metus. Nuo tada, kai savo mokykloje pamačiau Todo Machoverio kalbą, man buvo įdomu sukurti savo instrumentą. Jei nesate susipažinę su jo darbu, duokite jam „Google“, nes jis jau daugelį metų stumia muzikos, technologijų ir jų susikirtimo ribas (MIT žiniasklaidos laboratorijos, roko grupė, „Guitar Hero“ir kt.).).
Aš prijungiau savo „Nunchuck“prie „Arduino Uno“, veikiančio „Mozzi“garso sintezės bibliotekoje, nes abu dokumentai buvo gerai dokumentuoti. Kad būtų lengviau, naudoju „WiiChuck“duonos plokštės adapterį, kuris prijungiamas tiesiai prie „Arduino“. Šis gana paprastas projektas atkuria daugybę žingsnių, priklausomai nuo žingsnio (YZ-plokštumos), išmatuoto naudojant „Nunchuck“akselerometrą. Vairasvirtės Y reikšmė susieta su stiprinimu, kad žingsnis būtų garsesnis arba minkštesnis. Jis taip pat keičia akordus, priklausomai nuo Z mygtuko, ir įjungia fazės moduliacijos voką, kai paspaudžiamas C mygtukas. Tada voko dažnis keičiamas ritiniu, išmatuotu iš „Nunchuck“(paveikslėlis pasukamas rankenėle).
Ištekliai:
- 1 x „Arduino Uno“
- 1 x „Wii Nunchuck“
- 1 x „WiiChuck“adapteris
- 1 x su duonos lenta suderinamas 3,5 mm moteriškas stereo lizdas
- 1 x 3,5 mm garso kabelis
- 1 x tam tikras garsiakalbis (iš pradžių galite prijungti garso signalą, kad jį išbandytumėte
- 4-5 įvairių spalvų laidai
Neprivaloma, bet rekomenduojama:
- 1 x 330 omų rezistorius
- 1 x.1 uF kondensatorius
1 veiksmas: prijunkite „NunChuck“
Nukopijuokite/įklijuokite „WiiChuck“klasę iš „Arduino Playground“. Mums reikės versijos su PWR ir GND kaiščių deklaracija. Išsaugokite jį kaip „WiiChuck.h“ir laikykite tame pačiame kataloge kaip ir jūsų projektas.
Dabar nukopijuokite/įklijuokite tai į „Arduino IDE“ir įkelkite.
#įtraukti „Wire.h“//#apima „WiiChuckClass.h“// greičiausiai jo „WiiChuck.h“mums visiems. #include "WiiChuck.h" WiiChuck chuck = WiiChuck ();
void setup () {
// nunchuck_init (); Serial.begin (115200); chuck.begin (); chuck.update (); //chuck.calibrateJoy (); }
void loop () {
vėlavimas (20); chuck.update ();
Serial.print (chuck.readPitch ());
Serial.print (","); Serial.print (chuck.readRoll ()); Serial.print (",");
Serial.print (chuck.readJoyX ());
Serial.print (","); Serijinis atspaudas (chuck.readJoyY ()); Serial.print (",");
if (chuck.buttonZ) {
Serial.print („Z“); } else {Serial.print ("-"); }
Serial.print (",");
// ne funkcija // if (chuck.buttonC ()) {
if (chuck.buttonC) {Serial.print ("C"); } else {Serial.print ("-"); }
Serial.println ();
}
Atjunkite „Arduino“nuo maitinimo ir prijunkite „WiiChuck“adapterį prie „Arduino“analoginių kaiščių 2-5.
Vėl prijunkite prie maitinimo ir įsitikinkite, kad „Nunchuck“vertės siunčiamos į „Arduino“ir spausdinamos į serijinį monitorių. Jei nematote jokių skaičių pokyčių, įsitikinkite, kad ryšiai yra geri ir kad „Nunchuck“veikia. Praleidau kelias dienas bandydamas pataisyti programinę įrangą, kol supratau, kad mano „Nunchuck“viela buvo pažeista!
Toliau viską prijungsime prie Mozzi…
2 žingsnis: Susipažinkite su Mozzi
Pirmiausia turėsite atsisiųsti naujausią „Mozzi“versiją. Juos skatina aukos, todėl paaukokite, jei jaučiatės taip linkę, ir atsisiųskite biblioteką. Galite lengvai ją pridėti prie savo bibliotekų pasirinkę „Arduino IDE“eskizas> Bibliotekos> Pridėti. ZIP biblioteką….
Dabar mes prijungsime 3,5 mm ausinių lizdą prie duonos lentos ir „Arduino“, kad vėliau galėtume lengvai prisijungti prie jo (kol kas galite atjungti „Nunchuck“ir adapterį).
- Prijunkite lizdą prie apatinio dešiniojo lentos kampo, kad liktų vietos likusiems. Lizdas turi būti 5 kaiščių pločio.
- Prijunkite vidurinę eilę prie žemės su trumpikliu.
- Prijunkite viršutinę lizdo eilę prie tuščios eilės aukščiau (10 eilutė paveikslėlyje). Tai laidas, kuriuo perduodamas garso signalas.
- Skaitmeninį kaištį ~ 9 taip pat prijunkite prie 10 eilutės.
- Prijunkite „Arduino“pagrindą prie duonos lentos įžeminimo bėgelio.
- Jums dar nebūtinai reikia naudoti rezistorių ir kondensatorių, tačiau, jei to nepadarysite, galite pastebėti didelį triukšmą. Jis veikia kaip žemo dažnio filtras, pašalinantis aukštesnius nei ~ 15 kHz dažnius.
Atidarykite „Mozzi“„Sinewave“eskizą „Arduino IDE“pasirinkdami Failas> Pavyzdžiai> Mozzi> Pagrindai> „Sinewave“. Tai iš esmės yra Mozzi „Hello World“atitikmuo.
Įkelkite eskizą ir prijunkite garsiakalbį prie duonos lentos. Taip pat galite naudoti garso signalą, jei dar neprijungėte duonos lentos prie garso lizdo.
Jei iš garsiakalbio negirdite nuolatinio A4 (440 Hz), įsitikinkite, kad visi ryšiai yra geri, ir bandykite dar kartą.
Toliau mes prijungsime „Nunchuck“prie „Arduino“!
3 žingsnis: sudėkite viską kartu
Dabar mes naudosime ritinio vertę iš „Nunchuck“, kad pakeistume „Sinewave“dažnį.
Iš „Arduino IDE“pasirinkite Failas> Pavyzdžiai> Mozzi> Jutikliai> Pjezo dažnis
Prie šio kodo turėsime pridėti keletą eilučių, kad jis veiktų su „Nunchuck“. Įtraukite įtraukimą į „WiiChuck“biblioteką ir parodykite „WiiChuck“objektą, pavadintą „Chuck“. Taip pat galite pakomentuoti PIEZO_PIN deklaraciją arba tiesiog ją ištrinti, nes mes jos nenaudosime.
#įtraukti „WiiChuck. H“
„WiiChuck“griebtuvas = „WiiChuck“(); // const int PIEZO_PIN = 3; // nustatykite pjezo analoginį įvesties kaištį
Dabar sąrankos metu turėsime pridėti šiuos dalykus:
chuck.begin (); chuck.update ();
ir galiausiai turėsime pakeisti keletą dalykų atnaujinime Control: ():
void updateControl () {
chuck.update (); // gauti naujausius nunchuck duomenis // skaityti pjezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // vertė yra 0-1023 int piezo_value = map (Pakomentuokite eilutę, kuri nustato piezo_value, ir po juo pridėkite:
void updateControl () {chuck.update (); // gauti naujausius nunchuck duomenis // skaityti pjezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // vertė yra 0-1023 // Mums nereikia aukščiau esančios eilutės, bet kodėl nenurodžius ritinio į tą patį diapazoną? int piezo_value = žemėlapis (chuck.readRoll (), -180, 180, 0 1023);
Įkelkite kodą ir dažnis turi atitikti jūsų „Nunchuck's Roll“. Pabandykite susieti jį su skirtingais dažnių diapazonais. Jei nepastebėjote toliau pateikto eskizo, jutiklio vertė padauginama iš 3, todėl šiuo metu grojame tonus nuo 0 Hz iki maždaug 3000 Hz.
4 žingsnis: paskutiniai prisilietimai
Dabar esate pasiruošę įkelti galutinę kodo versiją, kurią surinkau iš ankstesnio veiksmo, ir dar keletą Mozzi pavyzdžių (tiksliau - „Phase_Mod_Envelope“ir „Control_Gain“). Kad mano gyvenimas būtų lengvesnis, aš taip pat įtraukiau failą pavadinimu pitches.h, kuriame tiesiog apibrėžiamos dažnio vertės su pažįstamais užrašų pavadinimais (t. Y. NOTE_A4).
Aš siūlau perskaityti „Mozzi“dokumentaciją, nes didžioji dalis kodo yra tiesiogiai iš pavyzdžių, išskyrus „Nunchuck“kodą.
Čia yra nuoroda į mano „Git“saugyklą. Įtraukti visi svarbūs failai, išskyrus „Mozzi“biblioteką, kurią turėtumėte gauti iš jų svetainės, kad ji būtų atnaujinta. Atsisiųskite „WiiMusic.ino“ir įkelkite jį į savo įrenginį, kad išgirstumėte, kaip tai skamba. Siūlau pažaisti su mano keičiamais parametrais (pakeisti žemėlapių diapazonus, padalyti/padauginti skaičius ir pan.), Nes taip radau konkretų ieškomą garsą.
Atspindys
Nesijaučiu visiškai baigta. Tai nereiškia, kad nesu patenkinta projektu ar jo skleidžiamu garsu, bet jaučiuosi taip, lyg ką tik įmerkiau kojų pirštus į naują pasaulį, kurį norėčiau toliau tyrinėti, todėl tęsdamas šį projektą pridėsiu naują šaką dirbti.
Vis dėlto tai buvo mano pirmoji tikra kelionė į mikrovaldiklių pasaulį, todėl esu labai dėkingas už mokymosi patirtį. Maždaug dvidešimt valandų, kurias praleidau dirbdamas, davė man kalėdinių idėjų sau ir praktiškai kiekvienam šeimos nariui. Aš šiek tiek apgailestauju, kad nedirbau prie šio projekto su kuo nors kitu, nes galėjau pasinaudoti daugybe patarimų ir patarimų. Tačiau aš asmeniškai daug išmokau per savo bandymus, įskaitant tris dienas, kai traukiau plaukus, bandydamas derinti programinės įrangos problemą, kurios niekada nebuvo (nutrūko vidinė viela „Nunchuck“).
Vis dar yra daug galimybių judėti į priekį. Pvz., Norėčiau naudoti „Arduino“kaip MIDI sąsajos tipą tarp MIDI valdiklio ir ausinių, kad pakeistumėte MIDI užrašo parametrus, nes yra tiek daug pasirinkimų (garsumas, riba, vokų dažnis, pakreipimas), moduliacija, vibrato, jūs tai vadinate). Tai suteiktų daug daugiau lankstumo, įskaitant parametrų perjungimą mygtukais ir tiesiog grojimą akordu, kuris nėra užkoduotas į C ++ masyvą.
Rekomenduojamas:
Arpeggiating sintezatorius (Mosquito I): 6 žingsniai
Arpeggiating sintezatorius (Mosquito I): Mosquito I yra mažas arpeggiating sintezatorius, kuris naudoja „Arduino Nano“ir „Mozzi“garso sintezės biblioteką. Jis gali atkurti daugiau nei dvidešimt 8 žingsnių sekų, tačiau galite pridėti tiek pasirinktinių sekų, kiek norite. Tai gana paprasta nustatyti ir nėra
Vandens sintezatorius su „MakeyMakey“ir įbrėžimais: 6 žingsniai (su nuotraukomis)
Vandens sintezatorius su „MakeyMakey“ir įbrėžimais: „MakeyMakey“naudojimas įvairioms medžiagoms paversti jungikliais ar mygtukais ir taip sukelti judesius ar garsus kompiuteryje yra žavus reikalas. Žmogus sužino, kuri medžiaga skleidžia silpną srovės impulsą, ir gali išrasti bei eksperimentuoti su
„Arduino MIDI Chiptune“sintezatorius: 7 žingsniai (su nuotraukomis)
„Arduino MIDI Chiptune“sintezatorius: atgaivinkite ankstyvųjų kompiuterinių žaidimų muzikos linksmybes su autentišku 8 bitų „chiptune“sintezatoriumi, kurį galite valdyti naudodami MIDI naudodami bet kokią šiuolaikinę DAW programinę įrangą. Ši paprasta grandinė naudoja „Arduino“, kad vairuotų AY-3- 8910 programuojamų garso genčių
SENSONIZER, „pasidaryk pats“sintezatorius: 5 žingsniai
„SENSONIZER“, „pasidaryk pats“sintezatorius: tai sensonizatorius, sintezatorius, pagrįstas jutikliais. Trumpai tariant, tai iš esmės yra sintezatoriaus klaviatūra, tačiau vietoj fortepijono klavišų ir rankenėlių, slankiklių ir mygtukų ją valdyti. Aš naudoju slėgio ir padėties jutiklius pianino klavišams pakeisti ir
Belaidis „Wii Nunchuck“valdomas „Arduino“: 7 žingsniai
Belaidis „Wii Nunchuck“valdomas „Arduino“: naudokite visiškai nemodifikuotą belaidį „Wii Nunchuck“kaip bet kurio „Arduino“projekto valdymo sistemą. Nėra pridėtų radijo siųstuvo/imtuvo porų ir pan. Ši instrukcija numato tam tikrą patirtį naudojant „Arduino“mikrovaldiklį. Radijas