Satura rādītājs:

Wii Nunchuck sintezators: 4 soļi
Wii Nunchuck sintezators: 4 soļi

Video: Wii Nunchuck sintezators: 4 soļi

Video: Wii Nunchuck sintezators: 4 soļi
Video: DS Games on the Wii?! #shorts #nintendo #videogames #gaming #facts #fake #viral #retro #wii #ds 2024, Jūlijs
Anonim
Wii Nunchuck sintezators
Wii Nunchuck sintezators

Wii mūzikas pasaule:

Es nolēmu beidzot apvienot savu mīlestību pret mūziku ar nelielu programmēšanas pieredzi, ko esmu ieguvusi dažu pēdējo gadu laikā. Kopš es savā skolā redzēju Toda Mačovera runu, esmu ieinteresēts izveidot savu instrumentu. Ja jūs neesat pazīstams ar viņa darbu, dodiet viņam Google, jo viņš jau vairākus gadus pārceļ mūzikas, tehnoloģiju un to krustošanās robežas (MIT mediju laboratorijas, rokgrupa, ģitāras varonis utt.)).

Esmu savienojis savu Nunchuck ar Arduino Uno, kas darbojas Mozzi skaņas sintēzes bibliotēkā, jo ir labi dokumentēta abu veidu izmantošana tiešsaistē. Ērtības labad es izmantoju WiiChuck maizes dēļa adapteri, kas tiek pievienots tieši Arduino. Šis salīdzinoši vienkāršais projekts atskaņo virkni laukumu atkarībā no augstuma (YZ-Plane), ko mēra no Nunchuck akselerometra. Kursorsviras Y vērtība tiek piesaistīta pastiprinājumam, lai padarītu piķi skaļāku vai mīkstāku. Tas arī maina akordus atkarībā no Z pogas un ieslēdz fāzes modulācijas aploksni, nospiežot C pogu. Pēc tam aploksnes frekvence tiek mainīta ar rullīti, kas mērīts no Nunchuck (attēls pagriežot pogu).

Resursi:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x WiiChuck adapteris
  • 1 x ar maizes dēli saderīga 3,5 mm stereo ligzda sievietēm
  • 1 x 3,5 mm audio kabelis
  • 1 x kāda veida skaļrunis (vispirms varat pievienot skaņas signālu, lai to pārbaudītu
  • 4-5 dažādu krāsu vadi

Pēc izvēles, bet ieteicams:

  • 1 x 330 omu rezistors
  • 1 x.1 uF kondensators

1. darbība: pievienojiet NunChuck

Pievienojot savu NunChuck
Pievienojot savu NunChuck
Pievienojot savu NunChuck
Pievienojot savu NunChuck
Pievienojot savu NunChuck
Pievienojot savu NunChuck

Kopējiet/ielīmējiet WiiChuck klasi no Arduino Playground. Mums būs nepieciešama versija ar PWR un GND tapu deklarāciju. Saglabājiet to kā WiiChuck.h un saglabājiet to tajā pašā direktorijā kā jūsu projekts.

Tagad kopējiet/ielīmējiet tālāk norādīto Arduino IDE un augšupielādējiet to.

#ieskaitot "Wire.h" //#ietver "WiiChuckClass.h" // visdrīzāk tā WiiChuck.h mums visiem. #include "WiiChuck.h" WiiChuck chuck = WiiChuck ();

void setup () {

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

void loop () {

kavēšanās (20); chuck.update ();

Sērijas nospiedums (chuck.readPitch ());

Serial.print (","); Sērijas nospiedums (chuck.readRoll ()); Serial.print (",");

Sērijas nospiedums (chuck.readJoyX ());

Serial.print (","); Sērijas nospiedums (chuck.readJoyY ()); Serial.print (",");

ja (chuck.buttonZ) {

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

Serial.print (",");

// nav funkcija // if (chuck.buttonC ()) {

if (chuck.buttonC) {Sērijas nospiedums ("C"); } cits {Serial.print ("-"); }

Sērijas.println ();

}

Atvienojiet Arduino no strāvas un pievienojiet WiiChuck adapteri Arduino analogās tapas 2-5.

Pievienojiet elektrotīklam vēlreiz un pārliecinieties, ka Nunchuck vērtības tiek nosūtītas uz jūsu Arduino un tiek drukātas uz sērijas monitoru. Ja neredzat nekādas izmaiņas skaitļos, pārliecinieties, vai savienojumi ir labi un ka Nunchuck darbojas. Es pavadīju dažas dienas, mēģinot labot programmatūru, pirms sapratu, ka mana Nunchuka vads ir iekšēji salauzts!

Tālāk mēs visu savienosim ar Mozzi…

2. darbība. Iepazīšanās ar Mozzi

Iepazīšanās ar Mozzi
Iepazīšanās ar Mozzi

Pirmkārt, jums būs jālejupielādē jaunākā Mozzi versija. Viņus veicina ziedojumi, tāpēc ziedojiet, ja jūtaties tik ļoti noskaņoti, un lejupielādējiet bibliotēku. Jūs varat to viegli pievienot savām bibliotēkām, izvēloties Skice> Bibliotēkas> Pievienot. ZIP bibliotēku… no Arduino IDE.

Tagad mēs pievienosim 3,5 mm austiņu ligzdu pie maizes dēļa un Arduino, lai vēlāk varētu viegli izveidot savienojumu ar to (pagaidām varat atvienot Nunchuck un adapteri).

  1. Pievienojiet savu jack dēļa apakšējā labajā stūrī, lai atbrīvotu vietu pārējam. Domkrata platumam jābūt 5 tapām.
  2. Savienojiet vidējo rindu ar zemi ar džemperi.
  3. Savienojiet domkrata augšējo rindu ar tukšu rindu iepriekš (10. rinda attēlā). Šis ir vads, kas pārraida audio signālu.
  4. Pievienojiet digitālo tapu ~ 9 arī 10. rindai.
  5. Savienojiet Arduino Ground ar maizes dēļa zemes sliedi.
  6. Jums vēl nav obligāti jāizmanto rezistors un kondensators, bet, ja to nedarīsit, varat pamanīt spēcīgu čīkstēšanu. Tas darbojas kā zemas caurlaidības filtrs, lai novērstu frekvences virs ~ 15 kHz.

Atveriet Mozzi Sinewave skici Arduino IDE, izvēloties Fails> Piemēri> Mozzi> Pamati> Sinewave. Tas būtībā ir Mozzi ekvivalents "Hello World".

Augšupielādējiet skici un pievienojiet skaļruni maizes dēļam. Varat izmantot arī skaņas signālu, ja vēl neesat pievienojis maizes dēli pie audio ligzdas.

Ja no skaļruņa netiek dzirdēts nemainīgs A4 (440 Hz), pārliecinieties, vai visi savienojumi ir labi, un mēģiniet vēlreiz.

Tālāk mēs savienosim Nunchuck ar Arduino!

3. solis: salieciet to visu kopā

Visu saliekot kopā
Visu saliekot kopā

Tagad mēs izmantosim ruļļa vērtību no Nunchuck, lai mainītu sinusa viļņu frekvenci.

No Arduino IDE izvēlieties Fails> Piemēri> Mozzi> Sensori> Pjezo frekvence

Šim kodam mums būs jāpievieno dažas rindiņas, lai tas darbotos ar Nunchuck. Pievienojiet iekļaušanu WiiChuck bibliotēkai un izveidojiet WiiChuck objektu ar nosaukumu chuck. Varat arī komentēt PIEZO_PIN deklarāciju vai vienkārši to izdzēst, jo mēs to neizmantosim.

#ietver "WiiChuck. H"

WiiChuck patrona = WiiChuck (); // const int PIEZO_PIN = 3; // iestatiet pjezo analogo ievades tapu

Tagad iestatīšanas laikā mums būs jāpievieno sekojošais:

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

un visbeidzot, mums būs jāmaina dažas lietas vietnē updateControl ():

void updateControl () {

chuck.update (); // iegūt jaunākos nunchuck datus // lasīt pjezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // vērtība ir 0-1023 int piezo_value = map (Komentējiet rindu, kas nosaka piezo_value, un zem tā pievienojiet šādu:

void updateControl () {chuck.update (); // iegūt jaunākos nunchuck datus // lasīt pjezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // vērtība ir 0-1023 // Mums nav nepieciešama iepriekš minētā līnija, bet kāpēc neattiecināt rulli uz to pašu diapazonu? int piezo_value = karte (chuck.readRoll (), -180, 180, 0 1023);

Augšupielādējiet kodu un biežumam, kas atbilst jūsu Nunchuck Roll. Mēģiniet kartēt to dažādos frekvenču diapazonos. Ja skicē neesat ievērojis tālāk, sensora vērtība tiek reizināta ar 3, tāpēc mēs šobrīd atskaņojam signālus no 0 Hz līdz aptuveni 3000 Hz.

4. solis: pēdējie pieskārieni

Pēdējie pieskārieni
Pēdējie pieskārieni

Tagad jūs esat gatavs augšupielādēt koda galīgo versiju, kuru esmu apkopojis no iepriekšējā soļa, un vēl dažus Mozzi piemērus (precīzāk, Phase_Mod_Envelope un Control_Gain). Lai atvieglotu manu dzīvi, es iekļāvu arī failu ar nosaukumu pitches.h, kas vienkārši definē biežuma vērtības ar pazīstamiem piezīmju nosaukumiem (piemēram, NOTE_A4).

Es iesaku izlasīt Mozzi dokumentāciju, jo lielākā daļa koda ir tieši no piemēriem, izņemot Nunchuck kodu.

Šeit ir saite uz manu Git krātuvi. Ir iekļauti visi svarīgi faili, izņemot Mozzi bibliotēku, kas jums jāiegūst no viņu vietnes, lai tā būtu atjaunināta. Lejupielādējiet WiiMusic.ino un augšupielādējiet to savā ierīcē, lai uzzinātu, kā tas izklausās. Es iesaku jums spēlēties ar manis mainītajiem parametriem (mainīt karšu diapazonus, dalīt/reizināt skaitļus utt.). Tā es atradu meklēto skaņu.

Pārdomas

Es nejūtu, ka esmu gluži pabeigta. Tas nenozīmē, ka neesmu apmierināts ar projektu vai tā radīto skaņu, bet man šķiet, ka es tikko iegremdēju kāju pirkstus jaunā pasaulē, kuru vēlos turpināt pētīt, tāpēc turpinot pievienošu jaunu filiāli no šī projekta strādāt.

Tomēr tas bija mans pirmais patiesais ceļojums mikrokontrolleru pasaulē, tāpēc esmu ļoti pateicīgs par mācību pieredzi. Apmēram divdesmit stundas, ko pavadīju pie tā, man deva idejas Ziemassvētkiem sev un praktiski katram ģimenes loceklim. Es nedaudz nožēloju, ka neesmu strādājis pie šī projekta kopā ar kādu citu, jo es būtu varējis izmantot daudz padomu un norādījumu. Tomēr es personīgi izmēģinājumos daudz uzzināju, tostarp trīs dienas izvilku matus, mēģinot atkļūdot programmatūras problēmu, kuras nekad nebija (Nunchuck iekšējais vads bija salauzts).

Joprojām ir vairākas iespējas virzīties uz priekšu. Piemēram, es labprāt izmantotu Arduino kā MIDI saskarnes veidu starp MIDI kontrolieri un austiņu izeju, lai mainītu MIDI piezīmes parametrus, jo ir tik daudz, no kuriem izvēlēties (skaļums, nogriešana, aploksnes frekvence, piķa līkums), modulācija, vibrato, jūs to nosaucat). Tas ļautu daudz elastīgāk, ieskaitot parametru pārslēgšanu ar pogām, un vienkārši atskaņot akordu, kas nav cieši iekodēts C ++ masīvā.

Ieteicams: