Мазмуну:
- 1 -кадам: Сиздин NunChuckту туташтыруу
- 2 -кадам: Mozzi менен таанышуу
- 3 -кадам: Бардыгын бириктирүү
- 4 -кадам: Акыркы Тийиштер
Video: Wii Nunchuck синтезатору: 4 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:38
World of Wii Music:
Мен акыры музыкага болгон сүйүүмдү акыркы бир нече жылда топтогон кичинекей программалоо тажрыйбасы менен айкалыштырууну чечтим. Мен мектепте Тод Мачовердин баяндамасын көргөндөн бери өзүмдүн инструментимди жасоого кызыгам. Эгерде сиз анын иши менен тааныш эмес болсоңуз, анда ага Google бериңиз, анткени ал музыканын, технологиянын, ошондой эле алардын кесилишинин чек арасын бир нече жылдан бери (MIT медиа лабораториялары, Рок тобу, Гитар баатыры ж.).
Мен Нунчукту Mozzi үн синтезинин китепканасында иштеген Arduino Uno менен байланыштырдым, анткени экөө тең интернетте жакшы документтештирилген. Жеңилдик үчүн мен WiiChuck нан адаптерин колдонуп жатам, ал Arduinoго туура келет. Бул салыштырмалуу жөнөкөй долбоор Нунчуктун акселерометринен өлчөнгөн чайырга (YZ-Plane) жараша бир катар оюндарды ойнойт. Джойстиктин Y мааниси чайырды катуураак же жумшак кылуу үчүн пайдага картага түшүрүлөт. Ошондой эле Z-Buttonго жараша аккорддорду өзгөртөт жана C-Button басылганда фазалык модуляция конвертин күйгүзөт. Конверттин жыштыгы Нунчуктан өлчөнгөн Роллдун жардамы менен өзгөртүлөт (сүрөт баскычты бурат).
Ресурстар:
- 1 x Arduino Uno
- 1 x Wii Nunchuck
- 1 x WiiChuck адаптери
- 1 х нанга ылайыктуу 3,5 мм аял стерео уячасы
- 1 х 3,5 мм аудио кабель
- 1 х кандайдыр бир спикер (Сиз сыноо үчүн алгач ызылдакты туташтырсаңыз болот
- Ар кандай түстөгү 4-5 зым
Милдеттүү эмес, бирок сунушталат:
- 1 x 330 Ом каршылыгы
- 1 x.1 uF конденсатор
1 -кадам: Сиздин NunChuckту туташтыруу
Ардуино аянтчасынан WiiChuck классын көчүрүү/чаптоо. Бизге PWR жана GND пиндеринин декларациясы бар версия керек болот. Аны WiiChuck.h катары сактап, долбооруңуз менен бир каталогдо сактаңыз.
Эми төмөнкүлөрдү Arduino IDEге көчүрүп/чаптаңыз жана жүктөңүз.
#clude "Wire.h" //#"WiiChuckClass.h" кирет // балким анын калган WiiChuck.h биз үчүн. #include "WiiChuck.h" WiiChuck chuck = WiiChuck ();
жараксыз орнотуу () {
// 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 ();
}
Ардуинону кубаттан ажыратыңыз жана WiiChuck адаптериңизди Arduinoңуздагы Analog Pins 2-5ке туташтырыңыз.
Кайра бийликке туташыңыз жана Nunchuckтин баалуулуктары сиздин Arduino'го жөнөтүлүп, Serial Monitorго басылып чыгарылышын камсыздаңыз. Эгерде сиз сандарда эч кандай өзгөрүүнү көрбөсөңүз, анда туташууларыңыз жакшы экенине жана Nunchuck иштеп жатканына ишениңиз. Мен программалык камсыздоону оңдоого аракет кылып, Нунчуктун зымы ички үзүлгөнүн түшүнгөнгө чейин бир нече күн өткөрдүм!
Андан кийин, биз бардыгын Mozziге байланыштырабыз…
2 -кадам: Mozzi менен таанышуу
Биринчиден, сиз Mozzinin акыркы версиясын жүктөп алышыңыз керек. Алар кайрымдуулуктун эсебинен иштешет, андыктан эгер сиз каалооңузду билдирсеңиз жана китепкананы жүктөп алыңыз. Сиз аны китепканаларыңызга Sketch> Китепканалар> Arduino IDEден. ZIP Китепкана кошуу … тандап оңой эле кошо аласыз.
Эми биз 3.5 мм гарнитура уячасын нан тактасына жана Arduino -го туташтырабыз, андыктан кийинчерээк оңой туташа алабыз (азыр Nunchuck менен адаптерин ажыратып койсоңуз болот).
- Калганына орун бошотуу үчүн джекти тактанын төмөнкү оң бурчуна сайыңыз. Уячанын туурасы 5 казык болушу керек.
- Ортоңку катарды жерге секирүүчү зым менен туташтырыңыз.
- Уячанын эң үстүңкү катарын жогорудагы бош сапка туташтырыңыз (сүрөттөгү 10 -катар). Бул аудио сигналды алып жүргөн зым.
- Digital Pin ~ 9ду 10 -катарга туташтырыңыз.
- Arduino түзмөгүңүздөгү Groundду панелдеги жер темир жолуна туташтырыңыз.
- Сиз резисторду жана конденсаторду колдонуунун кажети жок, бирок андай кылбасаңыз, катуу чыңырууну байкайсыз. ~ 15 кГцтен жогору жыштыктарды жок кылуу үчүн төмөн өтмө чыпка катары иштейт.
Arduino IDEде Mozzi Sinewave эскизин Файл> Мисалдар> Mozzi> Негиздери> Sinewave тандап ачыңыз. Бул негизинен Моцзинин эквиваленти "Hello World".
Эскизди жүктөп, спикерди нан тактасына сайыңыз. Эгерде сиз нан дискин аудио уячасына туташтыра элек болсоңуз, анда коңгуроону колдоно аласыз.
Эгерде сиз динамиктен туруктуу A4 (440 Гц) үнүн укпасаңыз, бардык туташууларыңыз жакшы экенин текшерип, кайра аракет кылыңыз.
Андан кийин, биз Нундукту Arduino менен туташтырабыз!
3 -кадам: Бардыгын бириктирүү
Эми биз синчек толкундарынын жыштыгын өзгөртүү үчүн Нунчуктун ролунун маанисин колдонобуз.
Arduino IDEден File> Examples> Mozzi> Sensors> Piezo Frequency тандаңыз
Биз Nunchuck менен иштөө үчүн бул кодго бир нече саптарды кошушубуз керек болот. WiiChuck китепканасына киргизүүнү кошуңуз жана чак деп аталган WiiChuck объектин түзүңүз. Сиз ошондой эле PIEZO_PIN декларациясына комментарий бере аласыз же биз аны колдонбой тургандыктан аны жок кылсаңыз болот.
#"WiiChuck. H" кошуу
WiiChuck чак = WiiChuck (); // const int PIEZO_PIN = 3; // пьезо үчүн аналогдук кирүү пин орнотуу
Эми орнотууда, биз төмөнкүлөрдү кошуубуз керек:
chuck.begin (); chuck.update ();
жана акырында updateControl () ичинде бир нече нерсени өзгөртүүбүз керек болот:
жараксыз updateControl () {
chuck.update (); // акыркы nunchuck маалыматтарын алуу // пьезону окуу // int piezo_value = mozziAnalogRead (PIEZO_PIN); // мааниси 0-1023 int piezo_value = карта (Piezo_value орнотуучу сапты комментарийлеп, астына төмөнкүлөрдү кошуңуз:
жараксыз updateControl () {chuck.update (); // акыркы nunchuck маалыматтарын алуу // пьезону окуу // 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 жүктөп алып, аны кандай угуу үчүн аны түзмөгүңүзгө жүктөңүз. Мен сизге өзгөртүп жаткан параметрлер менен ойноону сунуштайм (картанын диапазонун өзгөртүү, сандарды бөлүү/көбөйтүү ж. Б.).
Reflection
Мен аягына чыккандай сезилбейм. Мен бул долбоорго же анын үнүнө канааттанган жокмун дегенди билдирбейт, бирок мен өзүмдүн бармактарымды жаңы дүйнөгө чукуп койгондой сезип жатам, ошондуктан мен бул долбоордон жаңы бутакты кошом. иштөө.
Ошентсе да, бул менин микроконтроллер дүйнөсүнө жасаган биринчи чыныгы саякатым, ошондуктан мен үйрөнүү тажрыйбасы үчүн абдан ыраазымын. Анын үстүндө иштеген жыйырмага жакын саат мага өзүм үчүн жана үй -бүлөмдүн ар бир мүчөсү үчүн жаңы жылдык идеяларды берди. Мен бул долбоордо башка бирөө менен иштебегениме өкүнөм, анткени жолдо көптөгөн кеңештерди жана көрсөтмөлөрдү колдоно алмакмын. Бирок, мен жеке өзүмдүн сыноолорум аркылуу көп нерсени үйрөндүм, анын ичинде эч качан болбогон программалык камсыздоонун көйгөйүн чечүү үчүн чачымды жулуп алуу (Нунчуктун ички зымы үзүлгөн).
Алдыга жылуу үчүн дагы көптөгөн мүмкүнчүлүктөр бар. Мисалы, мен Arduino -ны MIDI интерфейсинин бир түрү катары MIDI контроллери менен гарнитуранын ортосунда MIDI нотасынын параметрлерин өзгөртүү үчүн колдонгум келет, анткени тандоо үчүн көп нерсе бар (көлөмү, кесүү, конверт жыштыгы, кадамдын ийилүүсү), модуляция, вибрато, сиз аны атаңыз). Бул дагы ийкемдүүлүккө мүмкүнчүлүк берет, анын ичинде баскычтар менен параметрлерди алмаштыруу жана C ++ массивине коддолгон эмес аккорд ойноо.
Сунушталууда:
Суу синтезатору MakeyMakey жана Scratch менен: 6 кадам (Сүрөттөр менен)
Суу синтезатору MakeyMakey жана Scratch менен: МакейМакейди колдонуу менен ар кандай материалдарды которгучтарга же баскычтарга айландыруу жана ошону менен компьютердеги кыймылдарды же үндөрдү иштетүү - бул кызыктуу иш. Ким кайсы материал алсыз ток импульсун өткөрөрүн билип, мен ойлоп таап, эксперимент жасай алат
Arduino MIDI Chiptune синтезатору: 7 кадам (сүрөттөр менен)
Arduino MIDI Chiptune Synthesizer: Оригиналдуу 8-бит чиптун синтезатору менен компьютердик музыканын алгачкы ырахатын жандандырыңыз, сиз MIDIди заманбап DAW программасынан ыңгайлуу түрдө башкара аласыз. Бул жөнөкөй схема Arduino менен AY-3 8910 программалуу үн генерациясы
SENSONIZER, DIY синтезатору: 5 кадам
SENSONIZER, DIY синтезатору: Бул сенсонизатор, сенсорлорго негизделген синтезатор. Кыскача айтканда, бул негизинен синтезатор клавиатурасы, бирок анын ордуна фортепиано баскычтары жана баскычтары, слайддар жана баскычтар. Мен пианино баскычтарын алмаштыруу үчүн басым жана позиция сенсорлорун колдондум жана
Шмитт триггер синтезатору: 8 кадам
Schmitt Trigger Synthesizer: Schmitt триггерин колдонгон жөнөкөй синтезатор Бул схема үчүн аудио джекти гитара күчөткүчкө туташтыруу керек болушу мүмкүн. Кадимки стерео сигналды угуу үчүн жетиштүү пайдага ээ болбошу мүмкүн. Шмитт триггери - бул оң акы төлөнүүчү босоголук схеманын бир түрү
Зымсыз Wii Nunchuck башкарылган Arduino: 7 кадам
Wireless Wii Nunchuck Controlled Arduino: Ардуиного негизделген ар кандай долбоорду башкаруу тутуму катары толугу менен өзгөртүлбөгөн зымсыз Wii Nunchuck колдонуңуз. Кошулган радио өткөргүч/алуучу жуптар ж.б.у.с. Бул көрсөтмө Arduino микроконтроллери менен бир аз тажрыйбага ээ. Радио