Სარჩევი:
- ნაბიჯი 1: ჩართეთ თქვენი NunChuck
- ნაბიჯი 2: მოზის გაცნობა
- ნაბიჯი 3: ყველაფერი ერთად ააწყვეთ
- ნაბიჯი 4: საბოლოო შეხება
ვიდეო: Wii Nunchuck სინთეზატორი: 4 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:16
Wii მუსიკის სამყარო:
მე გადავწყვიტე, რომ საბოლოოდ გავაერთიანო ჩემი სიყვარული მუსიკისადმი იმ მცირე პროგრამულ გამოცდილებასთან, რომელიც მე მივიღე ბოლო რამდენიმე წლის განმავლობაში. მას შემდეგ, რაც ჩემს სკოლაში ვნახე თოდ მაჩოვერის გამოსვლა, დაინტერესებული ვარ საკუთარი ინსტრუმენტის შექმნით. თუ თქვენ არ იცნობთ მის მუშაობას, მიეცით მას Google, რადგან ის უკვე რამდენიმე წელია იჭერს მუსიკის, ტექნოლოგიის საზღვრებს და მათ კვეთს (MIT მედია ლაბორატორიები, როკ ბენდი, გიტარის გმირი და ა.).
მე ჩემი ნუნჩუკი დავუკავშირე Arduino Uno– ს, რომელიც მუშაობს Mozzi ხმის სინთეზის ბიბლიოთეკაში, რადგან ორივე კარგად არის დოკუმენტირებული. სიმარტივისთვის, მე ვიყენებ WiiChuck პურის დაფის ადაპტერს, რომელიც პირდაპირ ჩართულია არდუინოში. ეს შედარებით მარტივი პროექტი ასრულებს რიგ მოედნებს, რომლებიც დამოკიდებულია ნუნჩუკის ამაჩქარებელიდან გაზომილ სიმაღლეზე (YZ-Plane). ჯოისტიკის Y მნიშვნელობა აისახება მოგებაზე, რათა მოედანი ხმამაღალი ან რბილი გახდეს. ის ასევე ცვლის აკორდებს Z- ღილაკის მიხედვით და ჩართავს ფაზის მოდულაციის კონვერტს C- ღილაკზე დაჭერისას. კონვერტის სიხშირე შემდეგ შეიცვლება რულეტით, რომელიც იზომება ნუნჩუკიდან (სურათი გადადის ღილაკზე).
რესურსები:
- 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 Ohm რეზისტორი
- 1 x.1 uF კონდენსატორი
ნაბიჯი 1: ჩართეთ თქვენი NunChuck
დააკოპირეთ/ჩასვით WiiChuck კლასი Arduino Playground– დან. ჩვენ დაგვჭირდება ვერსია 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.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 ადაპტერი ანალოგიურ ქინძისთავებთან 2-5 თქვენს Arduino– ზე.
ისევ დაუკავშირდით დენს და დარწმუნდით, რომ ნუნჩუკის ღირებულებები იგზავნება თქვენს არდუინოში და იბეჭდება სერიულ მონიტორზე. თუ თქვენ ვერ ხედავთ რაიმე ცვლილებას ნომრებში, დარწმუნდით, რომ თქვენი კავშირები კარგია და თქვენ Nunchuck ფუნქციონირებს. მე რამდენიმე დღე ვცდილობდი პროგრამული უზრუნველყოფის დაფიქსირებას, სანამ მივხვდებოდი, რომ ჩემი ნუნჩუკის მავთული შინაგანად იყო გატეხილი!
შემდეგი, ჩვენ ყველაფერს ვუერთებთ Mozzi– ს. რა რა
ნაბიჯი 2: მოზის გაცნობა
პირველ რიგში, თქვენ უნდა ჩამოტვირთოთ Mozzi– ს უახლესი ვერსია. ისინი იკვებება შემოწირულობებით, ასე რომ გააკეთეთ შემოწირულობა, თუკი ასე ფიქრობთ და გადმოწერეთ ბიბლიოთეკა. თქვენ შეგიძლიათ მარტივად დაამატოთ ის თქვენს ბიბლიოთეკებში Sketch> Libraries> Add. ZIP Library… Arduino IDE– დან.
ახლა ჩვენ დავაკავშირებთ 3.5 მმ ყურსასმენის ჯეკს პურის დაფაზე და არდუინოზე, რათა მოგვიანებით ადვილად შევუერთდეთ მას (შეგიძლიათ გათიშოთ Nunchuck და ადაპტერი ახლავე).
- შეაერთეთ თქვენი ჯეკი დაფის ქვედა მარჯვენა კუთხეში, რათა დარჩეს ადგილი დანარჩენებისთვის. ჯეკი უნდა იყოს 5 ქინძისთავის სიგანე.
- შეაერთეთ შუა რიგი მიწასთან ჯუმბერის მავთულით.
- შეაერთეთ ბუდის ზედა მწკრივი ცარიელ მწკრივზე ზემოთ (სურათი 10 რიგი). ეს არის მავთული, რომელიც ატარებს აუდიო სიგნალს.
- შეაერთეთ ციფრული პინი ~ 9 ასევე მწკრივზე 10.
- შეაერთეთ გრუნტი თქვენს არდუინოზე რკინიგზაზე პურის დაფაზე.
- თქვენ ჯერ კიდევ არ გჭირდებათ რეზისტორის და კონდენსატორის გამოყენება, მაგრამ შეიძლება არ შეამჩნიოთ მაღალი ხმაური. ის მოქმედებს როგორც დაბალი გამავლობის ფილტრი, რომ აღმოფხვრას სიხშირეები ~ 15 კჰც -ზე ზემოთ.
გახსენით Mozzi's Sinewave ესკიზი Arduino IDE– ში ფაილი> მაგალითები> Mozzi> საფუძვლები> Sinewave არჩევით. ეს არსებითად Mozzi- ს ექვივალენტია "Hello World".
ატვირთეთ ესკიზი და შეაერთეთ სპიკერი პურის დაფაზე. თქვენ ასევე შეგიძლიათ გამოიყენოთ ზუზუნი, თუ ჯერ არ გაქვთ მიერთებული პურის დაფა აუდიო ჯეკზე.
თუ თქვენი დინამიკიდან არ ისმის მუდმივი A4 (440Hz), დარწმუნდით, რომ თქვენი ყველა კავშირი კარგია და სცადეთ ხელახლა.
შემდეგი, ჩვენ დავაკავშირებთ ნუნჩუკს არდუინოსთან!
ნაბიჯი 3: ყველაფერი ერთად ააწყვეთ
ახლა ჩვენ გამოვიყენებთ Nunchuck– ის როლის მნიშვნელობას Sinewave– ის სიხშირის შესაცვლელად.
Arduino IDE– დან აირჩიეთ ფაილი> მაგალითები> Mozzi> სენსორები> პიეზო სიხშირე
ჩვენ დაგვჭირდება რამოდენიმე სტრიქონის დამატება ამ კოდში, რათა ის ნუნჩუკთან იმუშაოს. დაამატეთ ჩართვა 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 Hz– დან 3000 Hz– მდე.
ნაბიჯი 4: საბოლოო შეხება
ახლა თქვენ მზად ხართ ატვირთოთ კოდის საბოლოო ვერსია, რომელიც მე შევაჯამეთ წინა საფეხურიდან და მოზის კიდევ რამდენიმე მაგალითი (Phase_Mod_Envelope და Control_Gain უფრო ზუსტად). ჩემი ცხოვრების გასაადვილებლად მე ასევე ჩავრთე ფაილი სახელწოდებით pitches.h რომელიც უბრალოდ განსაზღვრავს სიხშირის მნიშვნელობებს ნაცნობი სახელების სახელებით (მაგ. NOTE_A4).
მე გირჩევთ წაიკითხოთ Mozzi– ს დოკუმენტაცია, რადგან კოდის უმეტესობა პირდაპირ არის მაგალითებიდან, გარდა Nunchuck– ის კოდისა.
აქ არის ბმული ჩემი Git საცავისთვის. ყველა მნიშვნელოვანი ფაილი შედის Mozzi ბიბლიოთეკის გარდა, რომელიც უნდა მიიღოთ მათი ვებგვერდიდან ასე რომ ის განახლდეს. ჩამოტვირთეთ WiiMusic.ino და ატვირთეთ იგი თქვენს მოწყობილობაზე, რომ გაიგოთ როგორ ჟღერს. მე გირჩევთ ვითამაშო იმ პარამეტრებით, რომელსაც მე ვცვლი (შეცვალე რუქის დიაპაზონი, გაყავი/გაამრავლე რიცხვები და ა.
ასახვა
არ ვგრძნობ, რომ საკმაოდ დასრულებული ვარ. ეს არ ნიშნავს იმას, რომ მე არ ვარ კმაყოფილი პროექტით და მისი ხმით, მაგრამ ვგრძნობ, რომ მე უბრალოდ თითები ჩავრგე ახალ სამყაროში, რომლის შესწავლაც მსურს, ასე რომ მე გავაგრძელებ ამ პროექტის ახალ ფილიალს, როგორც გავაგრძელებ მუშაობა.
მიუხედავად ამისა, როგორც ითქვა, ეს იყო ჩემი პირველი ნამდვილი მოგზაურობა მიკროკონტროლერების სამყაროში, ამიტომ ძალიან მადლობელი ვარ სწავლის გამოცდილებისთვის. ოცდაათმა საათმა, რაც მასზე გავატარე, საშობაო იდეები მომცა ჩემთვის და პრაქტიკულად ჩემი ოჯახის ყველა წევრისთვის. მე გარკვეულწილად ვნანობ, რომ არ ვიმუშავე ამ პროექტზე სხვასთან ერთად, რადგან შემეძლო ბევრი რჩევა და მითითება გამომეყენებინა გზაზე. თუმცა, მე პირადად ბევრი რამ ვისწავლე ჩემი გამოცდების ჩათვლით, მათ შორის სამდღიანი თმის მოშორებით, პროგრამული პრობლემის გამოსწორების მცდელობისას, რომელიც არასოდეს ყოფილა (ნუნჩუკში შიდა მავთული გატეხილი იყო).
ჯერ კიდევ არსებობს მრავალი შესაძლებლობა წინსვლისთვის. მაგალითად, მე სიამოვნებით გამოვიყენებ Arduino– ს, როგორც MIDI ინტერფეისის ტიპს MIDI კონტროლერსა და ყურსასმენს შორის MIDI შენიშვნის პარამეტრების შესაცვლელად, რადგან ამდენი არჩევანის გაკეთებაა შესაძლებელი (მოცულობა, გათიშვა, კონვერტის სიხშირე, მოედანზე მოხრა), მოდულაცია, ვიბრატო, თქვენ დაასახელეთ). ეს საშუალებას მისცემს უფრო მეტ მოქნილობას, მათ შორის პარამეტრების ღილაკებით გადართვას და უბრალოდ აკორდის დაკვრას, რომელიც არ არის მყარად კოდირებული C ++ მასივში.
გირჩევთ:
წყლის სინთეზატორი MakeyMakey და Scratch: 6 ნაბიჯი (სურათებით)
წყლის სინთეზატორი MakeyMakey– სთან და Scratch– თან ერთად: MakeyMakey– ს გამოყენება სხვადასხვა მასალის გადასაყვანად ან ღილაკებად გადაქცევისთვის და ამით კომპიუტერში მოძრაობების ან ხმების გამოწვევა არის მომხიბლავი საქმე. ადამიანი გაიგებს რომელი მასალა ატარებს სუსტ მიმდინარე იმპულსს და შეუძლია გამოიგონოს და ექსპერიმენტი გაუკეთოს
გასაოცარი ანალოგური სინთეზატორი/ორგანო მხოლოდ დისკრეტული კომპონენტების გამოყენებით: 10 ნაბიჯი (სურათებით)
გასაოცარია ანალოგური სინთეზატორი/ორგანო მხოლოდ დისკრეტული კომპონენტების გამოყენებით: ანალოგური სინთეზატორი ძალიან მაგარია, მაგრამ ასევე საკმაოდ ძნელი გასაკეთებელი. ამიტომ მინდოდა გამეკეთებინა ერთი რაც შეიძლება მარტივი, ასე რომ მისი ფუნქციონირება ადვილად გასაგები ყოფილიყო. ამისთვის თქვენ გვჭირდება რამდენიმე ძირითადი ქვე სქემა: მარტივი ოსცილატორი რეზისტენტებით
მოდულური სინთეზატორი კვების წყარო: 10 ნაბიჯი (სურათებით)
მოდულური სინთეზატორი კვების წყარო: თუ თქვენ აშენებთ მოდულურ სინთეზატორს, ერთი რაც თქვენ აუცილებლად დაგჭირდებათ არის კვების ბლოკი. მოდულური სინთეზატორების უმეტესობას ორმაგი სარკინიგზო სისტემა სჭირდება (0V, +12V და -12V ტიპიურია), ასევე შეიძლება მოსახერხებელი იყოს 5V სარკინიგზო გზის არსებობაც, თუ თქვენ გეგმავთ
Keytar Hero (Wii გიტარის კონტროლერის გამოყენება როგორც სინთეზატორი): 7 ნაბიჯი (სურათებით)
Keytar Hero (Wii გიტარის კონტროლერის გამოყენება როგორც სინთეზატორი): გიტარა გმირის თამაშები ათი წლის წინ მძვინვარებდა, ასე რომ ბევრი ძველი გიტარის მაკონტროლებელი იწვა მტვრის შეგროვების გარშემო. მათ აქვთ ბევრი ღილაკი, სახელური და ბერკეტი, მაშ რატომ არ გამოვიყენოთ ისინი კარგად? გიტარის კონტროლი
უკაბელო Wii Nunchuck კონტროლირებადი Arduino: 7 ნაბიჯი
უკაბელო Wii Nunchuck კონტროლირებადი Arduino: გამოიყენეთ სრულიად უცვლელი უკაბელო Wii Nunchuck როგორც კონტროლის სისტემა Arduino– ზე დაფუძნებული ნებისმიერი პროექტისათვის. არ არის დამატებული რადიო გადამცემი/მიმღები წყვილი და ა.შ. რადიო