תוכן עניינים:

סינטיסייזר Wii Nunchuck: 4 שלבים
סינטיסייזר Wii Nunchuck: 4 שלבים

וִידֵאוֹ: סינטיסייזר Wii Nunchuck: 4 שלבים

וִידֵאוֹ: סינטיסייזר Wii Nunchuck: 4 שלבים
וִידֵאוֹ: Dual AY-3-8910 MIDI synthesizer with envelope modes, part 4 2024, נוֹבֶמבֶּר
Anonim
סינטיסייזר Wii Nunchuck
סינטיסייזר Wii Nunchuck

עולם מוזיקת ה- Wii:

החלטתי לשלב סוף סוף את האהבה שלי למוזיקה עם מעט ניסיון התכנות שצברתי בשנים האחרונות. אני מעוניין ליצור כלי משלי מאז שראיתי הרצאה של טוד מאצ'ובר בבית הספר שלי. אם אינך מכיר את עבודותיו תן לו גוגל, כיוון שהוא דוחף את גבולות המוזיקה, הטכנולוגיה, כמו גם את הצטלבותם כבר מספר שנים (מעבדות מדיה של MIT, להקת רוק, גיבור גיטרה וכו '…).

חיברתי את ה- Nunchuck שלי ל- Arduino Uno הפועל בספריית סינתזת הצלילים של Mozzi בגלל השימוש המתועד היטב בשניהם באינטרנט. לשם הקלה, אני משתמש במתאם לוח לחם WiiChuck המתחבר ישירות לארדואינו. פרויקט פשוט יחסית זה משחק סדרה של מגרשים בהתאם למגרש (YZ-Plane) הנמדד ממד התאוצה של ה- Nunchuck. ערך Y של הג'ויסטיק ממופה לרווח כדי להפוך את המגרש חזק יותר או רך יותר. הוא גם משנה אקורדים בהתאם ללחצן ה- Z ומפעיל מעטפת אפנון פאזה כאשר לוחצים על כפתור C. תדירות המעטפה משתנה לאחר מכן בעזרת הגליל הנמדד מהנאנצ'וק (התמונה מסובבת כפתור).

אֶמְצָעִי:

  • 1 x ארדואינו אונו
  • 1 x Wii Nunchuck
  • 1 x מתאם WiiChuck
  • 1 x שקע סטריאו נקבה תואם 3.5 מ"מ
  • 1 x 3.5 מ"מ אודיו כבל
  • 1 רמקול כלשהו (אפשר לחבר זמזם בהתחלה כדי לבדוק אותו
  • 4-5 חוטים בצבעים שונים

אופציונלי אך מומלץ:

  • נגד 330 אוהם
  • 1 x.1 קבל uF

שלב 1: חיבור ל- NunChuck שלך

חיבור NunChuck שלך
חיבור NunChuck שלך
חיבור NunChuck שלך
חיבור NunChuck שלך
חיבור NunChuck שלך
חיבור NunChuck שלך

העתק/הדבק את שיעור WiiChuck מבית המשחקים Arduino. נזדקק לגרסה עם הצהרת סיכות PWR ו- GND. שמור אותו בתור WiiChuck.h ושמור אותו באותה ספרייה כמו הפרויקט שלך.

כעת העתק/הדבק את הדברים הבאים ב- Arduino IDE והעלה אותו.

#כלול "Wire.h" //#כולל "WiiChuckClass.h" // סביר להניח WiiChuck.h שלו עבור כולנו. #include "WiiChuck.h" צ'אק WiiChuck = WiiChuck ();

הגדרת בטל () {

// 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 (",");

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 ();

}

נתק את Arduino מהחשמל וחבר את מתאם ה- WiiChuck שלך ל- Analog Pins 2-5 ב- Arduino שלך.

התחבר שוב לחשמל וודא כי ערכי ה- Nunchuck נשלחים לארדואינו שלך ומודפסים למסך הסידורי. אם אינך רואה שינוי במספרים וודא שהחיבורים שלך טובים ואתה נונצ'וק מתפקד. ביליתי כמה ימים בניסיון לתקן תוכנות לפני שהבנתי שהחוט של הנאנצ'וק שלי נשבר מבפנים!

לאחר מכן, נחבר הכל למוזי…

שלב 2: היכרות עם מוזי

היכרות עם מוזי
היכרות עם מוזי

ראשית, יהיה עליך להוריד את הגרסה האחרונה של Mozzi. הם ניזונים מתרומות אז תרמו אם אתם מרגישים כל כך נוטים והורידו את הספרייה. אתה יכול להוסיף אותו לספריות שלך בקלות על ידי בחירה בסקיצה> ספריות> הוסף ספריית ZIP … מתוך Arduino IDE.

כעת נחבר את שקע האוזניות 3.5 מ מ ללוח הלחם ולארדואינו כדי שנוכל להתחבר אליו מאוחר יותר (תוכל לנתק את ה- Nunchuck והמתאם לעת עתה).

  1. חבר את הג'ק שלך לפינה הימנית התחתונה של הלוח כדי לפנות מקום לשאר. רוחב השקע צריך להיות ברוחב 5 סיכות.
  2. חבר את השורה האמצעית לקרקע בעזרת חוט מגשר.
  3. חבר את השורה העליונה של השקע לשורה ריקה מעל (שורה 10 בתמונה). זהו החוט הנושא את אות השמע.
  4. חבר גם פין דיגיטלי ~ 9 לשורה 10.

  5. חבר את Ground על הארדואינו שלך למעקה הקרקע בלוח הלחם.
  6. אינך בהכרח עדיין צריך להשתמש בנגד ובקבל, אך ייתכן שתבחין ברעש גבוה אם לא תעשה זאת. הוא פועל כמסנן מעבר נמוך לביטול תדרים מעל ~ 15 קילוהרץ.

פתח את סקיצת Sinewave של Mozzi ב- Arduino IDE על ידי בחירה בקובץ> דוגמאות> Mozzi> יסודות> Sinewave. זה בעצם המקבילה של מוזי ל"העולם העולמי ".

העלה את הסקיצה וחבר רמקול ללוח הלחם. אתה יכול להשתמש גם בזמזם אם עדיין לא חיברת את לוח הלחם לשקע השמע.

אם אינך שומע רמקול A4 (440Hz) קבוע, ודא שכל החיבורים שלך טובים ונסה שוב.

לאחר מכן, נחבר את ה- Nunchuck ל- Arduino!

שלב 3: חיבור הכל ביחד

לשים את הכל ביחד
לשים את הכל ביחד

עכשיו אנחנו הולכים להשתמש בערך הגליל מה- Nunchuck כדי לשנות את התדירות של סינוול.

מתוך Arduino IDE בחר קובץ> דוגמאות> מוזי> חיישנים> תדירות פיזו

נצטרך להוסיף כמה שורות לקוד הזה כדי לגרום לו לעבוד עם ה- Nunchuck. הוסף כלול לספריית WiiChuck והזמן אובייקט WiiChuck בשם צ'אק. תוכל גם להגיב על ההצהרה של PIEZO_PIN או פשוט למחוק אותה מכיוון שלא נשתמש בה.

#כלול "WiiChuck. H"

צ'אק WiiChuck = WiiChuck (); // const int PIEZO_PIN = 3; // הגדר את סיכת הכניסה האנלוגית לפייזו

כעת בהתקנה, נצטרך להוסיף את הדברים הבאים:

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

ולבסוף נצטרך לשנות כמה דברים ב- updateControl ():

void updateControl () {

chuck.update (); // קבלו את נתוני ה- nunchuck האחרונים // קראו את הפיצו // int piezo_value = mozziAnalogRead (PIEZO_PIN); // ערך הוא 0-1023 int piezo_value = map (הגיבו על השורה שמגדירה את piezo_value והוסיפו להלן את הדברים הבאים:

void updateControl () {chuck.update (); // קבלו את נתוני ה- nunchuck האחרונים // קראו את הפיצו // int piezo_value = mozziAnalogRead (PIEZO_PIN); // ערך הוא 0-1023 // איננו זקוקים לשורה למעלה אך מדוע לא למפות את הגליל לאותו טווח? int piezo_value = map (chuck.readRoll (), -180, 180, 0 1023);

העלה את הקוד והתדירות צריכה להתאים לגליל ה- Nunchuck שלך. נסה למפות אותו לטווחי תדרים שונים. אם לא שמת לב להלן בסקירה הערך מהחיישן מוכפל ב -3 כך שאנו מנגנים כרגע טונים מ 0 הרץ לכ 3000 הרץ.

שלב 4: נגיעות אחרונות

נגיעות אחרונות
נגיעות אחרונות

כעת אתה מוכן להעלות את הגרסה הסופית של הקוד שחיברתי מהשלב הקודם ועוד כמה דוגמאות של מוזי (Phase_Mod_Envelope ו- Control_Gain ליתר דיוק). כדי להקל על חיי כללתי גם קובץ בשם pitches.h שפשוט מגדיר ערכי תדרים עם שמות פתקים מוכרים (כלומר NOTE_A4).

אני מציע לקרוא את התיעוד של Mozzi שכן חלק גדול מהקוד הוא ישר מהדוגמאות למעט הקוד של ה- Nunchuck.

הנה קישור למאגר Git שלי. כל הקבצים החשובים כלולים למעט ספריית Mozzi שאמורה לקבל מאתר האינטרנט שלהם כך שהיא מעודכנת. הורד את WiiMusic.ino והעלה אותו למכשיר שלך כדי לשמוע איך הוא נשמע. אני מציע לך לשחק עם הפרמטרים שאני משנה (שנה את טווחי המפות, חלק/הכפל מספרים וכו '…) כיוון שכך מצאתי את הצליל המסוים שחיפשתי.

הִשׁתַקְפוּת

אני לא מרגיש שאני לגמרי גמור. זה לא אומר שאני לא שבע רצון מהפרויקט או מהצליל שהוא משמיע, אבל אני מרגיש שרק טבלתי את אצבעותיי לעולם חדש שאני רוצה להמשיך ולחקור אז אוסיף ענף חדש מהפרויקט הזה בהמשך לעבוד.

ובכל זאת, זה נאמר שזהו המסע האמיתי הראשון שלי לעולם המיקרו -בקרים אז אני אסיר תודה על חווית הלמידה. עשרים השעות שבהן ביליתי לעבוד עליו נתנו לי רעיונות לחג המולד לעצמי ולמעשה לכל אחד מבני משפחתי. אני קצת מצטער על כך שלא עבדתי על פרויקט זה עם מישהו אחר מכיוון שיכולתי להשתמש בהרבה עצות והנחיות לאורך כל הדרך. עם זאת, אני אישית למדתי הרבה בניסיונות שלי, כולל שלושה ימים של הוצאת השיער שלי בניסיון לאתר באגיית תוכנה שמעולם לא הייתה קיימת (חוט פנימי ב- Nunchuck נשבר).

עדיין ישנן מספר אפשרויות להתקדם. למשל, אשמח להשתמש בארדואינו כסוג של ממשק MIDI בין בקר MIDI לאוזניות החוצה כדי לשנות פרמטרים של פתק ה- MIDI מכיוון שיש כל כך הרבה לבחירה (עוצמת הקול, הפסק, תדר המעטפה, עיקול המגרש, אפנון, vibrato, תן שם). זה יאפשר הרבה יותר גמישות כולל החלפת פרמטרים באמצעות הלחצנים ופשוט נגינת אקורד שאינו מקודד במערך C ++.

מוּמלָץ: