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

בניית בקר Arduino MIDI: 9 שלבים (עם תמונות)
בניית בקר Arduino MIDI: 9 שלבים (עם תמונות)

וִידֵאוֹ: בניית בקר Arduino MIDI: 9 שלבים (עם תמונות)

וִידֵאוֹ: בניית בקר Arduino MIDI: 9 שלבים (עם תמונות)
וִידֵאוֹ: DIY MIDI Controller🔮 2024, דֵצֶמבֶּר
Anonim

הוראה זו פורסמה במקור בבלוג שלי ב -28 ביוני 2020

אני נהנה לבנות דברים הכוללים אלקטרוניקה, ותמיד רציתי לבנות משהו באמצעות Arduino.

אחד המבנים הנפוצים ביותר למתחילים שמצאתי היה בקר MIDI. בקר MIDI הוא כל חומרה ששולחת נתוני MIDI (ממשק דיגיטלי של כלי נגינה) למכשיר כדי להפעיל צלילים ולהפיק מוזיקה.

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

הפרויקט

על ידי בניית בקר Arduino MIDI משלי, כוונתי הייתה ליצור פרויקט מהנה, תוך שמירה על הרעש במינימום. משהו שכל מתחיל יכול לעקוב אחריו. לשם כך השתמשתי ב- MIDI Fighter 3D כהשראת בסיס והסרתי כל תכונה לא חיונית.

העלות הכוללת של הפרויקט שלי הייתה מתחת ל -30 דולר, ורשימת החומרים הייתה ממש קצרה (קישורים שותפים):

  • ארדואינו לאונרדו (או שיבוט): בין 10 ל -20 דולר.
  • 16 x כפתורי Sanwa 24 מ"מ (או שיבוט): בין $ 1 ל- $ 2.50 לכפתור.
  • מלחם
  • 22 חוט חשמל AWG

לוח ארדואינו

כשהתחלתי את הפרויקט הזה גיליתי שיש חבורה של דגמי Arduino חדשים (לא כולל מאות לוחות תואמים). וכולם מציעים יכולות מעט שונות.

הייתי צריך לשלוח אותות MIDI למחשב והדרך הפשוטה ביותר היא באמצעות USB. כל לוח Arduino המבוסס על המיקרו-בקר ATmega32u4 כולל תקשורת USB מובנית.

לוחות Arduino הרשמיים עם תמיכת USB מקורית הם Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro. ללוחות אלה יש תמיכת USB משולבת מה שאומר שהם יכולים לשמש כמכשיר USB MIDI.

החלטתי ללכת עם שיבוט של הארדואינו לאונרדו. יש לו מספיק תשומות לפרויקט זה והוא כולל גם כותרות, מה שמקל על חיבור/ניתוק חוטים.

צעדים ראשונים

למרות שאסביר שלב אחר שלב כיצד יישמתי את הקוד לפרויקט זה, תוכל להוריד את הגרסה הסופית.

כדי להעלות קוד ללוח אתה צריך להשתמש ב- Arduino IDE. יש להם גם עורך אינטרנט שהוא מאוד שימושי אבל יש להם מכסה מוגבלת על פעמים ביום שתוכל לאסוף קוד.

שלב 1: מהבהב הנורית המובנית

זה מצחיק איך "שלום העולם" בעולם החומרה מהבהב LED.

זו הייתה הפתעה נעימה עבורי לגלות שלארדואינו לאונרדו יש LED מובנה שתוכל למצמץ כדי לבדוק את הקוד שלך. כך אינך צריך לבנות מעגל חיצוני על לוח לחם עם LED ונגד.

קוד:

שלב 2: מהבהב הנורית על קלט ידני

השלב ההגיוני הבא היה למצמץ את אותה נורית בכל פעם שאני שולחת אות. הסרתי את מכסה הפלסטיק של קצה אחד של 2 חוטי Dupont, וחיברתי את הקצה השני ללוח:

  • פין מספר 2: אחת הכניסות הדיגיטליות (חיוביות). זה יכול להיות כל סיכה דיגיטלית.
  • סיכה GND: כל סיכה טחונה (שלילית).

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

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

  • HIGH כאשר המעגל פתוח (לא לוחצים על הכפתור).
  • LOW כאשר המעגל סגור (לחיצה על הכפתור).

קוד:

שלב 3: התקנת ספריית MIDIUSB

ספרייה זו מאפשרת ללוח Arduino עם יכולות USB לפעול כמכשיר MIDI באמצעות USB. עיין בתיעוד הרשמי למידע נוסף.

באמצעות Arduino IDE, תוכל להתקין ספריות Arduino נוספות באמצעות מנהל הספרייה:

  1. פתח את ה- IDE ולחץ על התפריט "סקיצה" ולאחר מכן על "כלול ספרייה" ולאחר מכן על "נהל ספריות".
  2. חפש את MIDIUSB ולחץ על התקן.
  3. לאחר סיום, תג מותקן אמור להופיע ליד ספריית MIDIUSB.
  4. סגור את מנהל הספרייה.

כעת לאונרדו יכול לשלוח הודעות MIDI באמצעות USB! אך ראשית, יש צורך בתובנה כלשהי לגבי אופן הפעולה של MIDI.

כיצד פועל MIDI

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

הוא מטפל בהודעות אירוע עם נתוני המגרש ומהירות הפתק שהושמע, בין היתר הוראות

בפרויקט ספציפי זה, הקלט מתוך 16 הכפתורים שולח הודעות שונות באמצעות USB. ניתן להמיר הודעות אלו לצליל במחשב באמצעות כל תוכנה מתאימה כמו GarageBand או Ableton Live.

אנטומיה של הודעת MIDI

כדי לשלוח הודעת MIDI, השתמשתי בשיטת sendMIDI () מספריית MIDIUSB שהתקנתי בשלב 3.

שיטה זו יכולה לקבל 4 פרמטרים:

  • סוג אירוע: זה יכול להיות 0x09 עבור הערה מופעלת (פתק הפעלה) או 0x08 עבור הערה כבויה (להפסיק לשחק פתק).
  • הערה הפעלה/כיבוי: סוג האירוע בשילוב עם ערוץ MIDI (1-16). אני משתמש רק בערוץ 1 אז זה או 0x90 עבור הערה מופעלת או 0x80 עבור הערה כבויה.
  • מספר הערה: לכל תו יש גובה מספרי משויך (סולם תדרים).
  • מהירות: מ -0 (ללא מהירות) ל -127 (המהירה ביותר).

שלב 4: שליחת הודעת MIDI

כללתי את ספריית MIDIUSB ובמקום למצמץ את הנורית המובנית שלחתי פתק.

קוד:

⚠ חשוב: משלב זה ואילך הארדואינו הופך לבקר USB MIDI, והוא מפסיק לקבל קוד באמצעות USB.

כאשר אתה נתקע במצב שבו כבר לא ניתן לתכנת את הארדואינו, בצע את השלבים הבאים:

  1. החזק את לחצן האיפוס המעוגל בלוח ה- Arduino.
  2. לחץ על העלה ב- Arduino IDE.
  3. שחרר את כפתור האיפוס.
  4. הקוד המעודכן יעלה ללוח.

שלב 5: שליחת הודעת MIDI מכל לחצן

שליחת הודעת MIDI מכל לחצן
שליחת הודעת MIDI מכל לחצן

השלב האחרון היה למפות כל גובה כפתור. עבור 16 הכפתורים, הגדרתי סולם מ- C2 עד E3b, שהם המגרשים מ -36 ל -51 ברצף מלמטה למעלה ומשמאל לימין. עיין בקובץ זה מתוך Arduino Tutorials כדי לראות מה המגרש מתאים לכל פתק.

השתמשתי בסיכות דיגיטליות מ -2 עד 12 ובסיכות אנלוגיות (השתמשתי בהן כדיגיטליים) מ- A0 עד A4.

וכך נראה הקוד הסופי

שלב 6: הגדרת ערוצים או בנקים (אופציונלי)

הגדרת ערוצים או בנקים (אופציונלי)
הגדרת ערוצים או בנקים (אופציונלי)

למקרה שתרצה להוסיף לחצנים נוספים עם אפשרות להחליף ערוצים או בנקים, כמו ב- MIDI Fighter 3D (ראה תמונה), ל- Arduino Leonardo יש עוד ארבעה סיכות שתוכל להשתמש בהן. ל- Arduino Leonardo יש 20 סיכות קלט/פלט דיגיטליות, מתוכן רק 16 משמשות לניגון תווים.

אתה יכול להשתמש בלחצנים נוספים אלה כדי לעדכן משתנה בקוד ולשלוח את ערכו כפרמטר לשיטת MidiUSB.sendMIDI:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

שלב 7: התיק

המקרה
המקרה
המקרה
המקרה

כדי להשאיר את הפרויקט פשוט, הייתי מאוד בררן בבחירת התכונות הכוללות.

  • לחצנים בלבד: 16 כפתורי ארקייד דמויי סנווה, ברשת 4x4. ללא ידיות, ללא מחוונים, ללא פאדרים או כל קלט אנלוגי אחר.
  • מארז Unibody: אין להשתמש בברגים, אגוזים, ברגים או דבק למארז או לאחוז בלוח Arduino.
  • כלים יומיומיים: לדוגמה, הלחמתי את החוטים במקום לקנות קוצץ תיל ספציפי לכפתורי ארקייד.

עיצוב Unibody

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

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

הורד את המארז להדפסה בתלת מימד (322 KB). הגדרות מומלצות: PLA, שכבות 0.15 מ מ, מילוי של 20%, תמיכות אוכף לפחות עבור החור התחתון המעוגל, מחזיקי ה- Arduino והמיקרו USB.

מחזיק ארדואינו ללא ברגים

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

למצוא קל מחזיק עבור Arduino ב- Thingiverse היה קל, ולקח לי 5 איטרציות לשלב את המחזיק הזה בעיצוב היחיד. החלק הקשה ביותר היה לעשות את הרגליים כדי להימנע מהחורים לכפתורים, ולגרום למיקרו USB להיות מיושר למרכז התיק.

שלב 8: האסיפה

האסיפה
האסיפה
האסיפה
האסיפה
האסיפה
האסיפה

לאחר הכנסתי את כל הכפתורים למקומם, הלחמתי חוטים שחורים קצרים המצטרפים לכל הרגליים השליליות של הכפתורים ביניהם.

אחר כך הלחמתי חוטים אדומים וארוכים מכל רגל חיובית כדי להתחבר ישירות ללוח.

כדי לחבר את החוטים לארדואינו, חתכתי והלחמתי כמה קצוות דופונט וכיסיתי אותם בצינורות כיווץ חום.

חיברתי את החוטים ללוח לפי אותו סדר כמו ב- MIDI Fighter. מלמטה למעלה ומשמאל לימין

שלב 9: שימוש בבקר MIDI

שימוש בבקר MIDI
שימוש בבקר MIDI

ניתן להשתמש בכל תוכנת מוזיקה (או חומרה מתאימה) לקבלת MIDI ולעשות מוזיקה. המומלצים ביותר הם Garage Band, Ableton Live, ואני יודע שיש חבורה של אפליקציות להתקנה בטלפון.

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

MIDI בדפדפן האינטרנט

כדי להפוך משהו לישיר יותר עם הפרויקט הזה ופשטותו, בניתי כלי אינטרנט המתמקד לחלוטין בבקרי MIDI.

Punchy: יישום WebMIDI ו- WebAudio עבור בקרי MIDI.

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

הגדר את Ableton Live

כדי לגרום לבקר MIDI לעבוד עם Ableton Live, בצע את השלבים הפשוטים הבאים מתוך התיעוד הרשמי שלהם.

עבור אל העדפות → קישור MIDI וודא שב- "קלט" יש את "מסלול" ו"מרחק "מופעל והפלט מכיל" מרחוק "כמו כן מוזכר במדריך:

מוּמלָץ: