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

בקר Arduino MIDI בסיסי: 5 שלבים
בקר Arduino MIDI בסיסי: 5 שלבים

וִידֵאוֹ: בקר Arduino MIDI בסיסי: 5 שלבים

וִידֵאוֹ: בקר Arduino MIDI בסיסי: 5 שלבים
וִידֵאוֹ: DIY Arduino Midi Controller for Line6 M5 2024, נוֹבֶמבֶּר
Anonim
בקר Arduino MIDI בסיסי
בקר Arduino MIDI בסיסי

הקדמה:

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

1. בנה את לוח הלחם

2. העלה את הסקיצה לארדואינו

3. הבנת MIDI ללא שיער ולולאת MIDI פנימית (loopbe1)

4. נתב את ה- MIDI שלך ל- DAW (Ableton)

אספקה

1 x ארדואינו מגה 2560

1 x לוח לחם

1 x כבל USB

1 x פוטנציומטר

4 x לחצני טאקט

נגדי 4 x 120 אוהם

14 x כבלי מגשר ללוח לחם

שלב 1: בניית לוח הלחם

בניית לוח הלחם
בניית לוח הלחם
בניית לוח הלחם
בניית לוח הלחם

חבר את לוח הלחם כך שכל הרכיבים יתאימו לתמונה 1 למעלה. כל כפתור צריך להיראות כמו תמונה 2. כניסות הכפתורים הן 2, 3, 4 ו- 5 על הארדואינו והסיכה האמצעית של הפוטנציומטר מחוברת לכניסת ANALOG A0.

שלב 2: העלאת הסקיצה

העלאת הסקיצה
העלאת הסקיצה

העתק והדבק את הקוד למטה ב- Arduino IDE. בחר את הלוח הנכון תחת "כלים" והעלה את הסקיצה לארדואינו.

byte noteON = 144; // הערה על הערת הפקודה; // אחסון להפעלת הפתק int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int potPin = A0; boolean currentState = LOW; // stroage עבור מצב הכפתור הנוכחי boolean lastState = LOW; // אחסון להגדרת חלל מצב הכפתור האחרון () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // הפעם נקבע את הסיכה כ- INPUT Serial.begin (9600); // נתחיל חיבור סידורי} לולאת void () {int PotVal = analogRead (potPin); מהירות בתים = מפה (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); אם (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, velocity); // הפעל את הערה 60 עם עיכוב מהירות של 127 (200); // צורה גסה של התנתקות כפתורים} אחרת אם (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // לכבות הערה 60 עיכוב (2); // צורה גסה של כפתור debouncing} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// אם לחצן זה עתה נלחץ MIDImessage (noteON, 61, מהירות); // הפעל את הערה 60 עם 127 עיכוב מהירות (200); // צורה גסה של כפתור debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // לכבות הערה 60 עיכוב (2); // צורה גסה של כפתור debouncing} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// אם רק לחצו על הלחצן MIDImessage (noteON, 62, מהירות); // הפעל את הערה 60 עם 127 עיכוב מהירות (200); // צורה גסה של כפתור debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // לכבות הערה 60 עיכוב (2); // צורה גסה של כפתור debouncing} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// אם רק לחצו על הלחצן MIDImessage (noteON, 63, מהירות); // הפעל הערה 60 עם 127 עיכוב מהירות (200); // צורה גסה של כפתור debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // לכבות הערה 60 עיכוב (2); // צורה גסה של כפתור debouncing} lastState = currentState; } // שלח הודעת MIDI חלל MIDImessage (פקודת בייט, בייט נתונים 1, בייט נתונים 2) {Serial.write (פקודה); Serial.write (data1); Serial.write (data2); }

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

שלב 3: הבנת MIDI ללא שיער ולולאות MIDI פנימיות

הבנת לולאות MIDI ללא שיער ולולאות MIDI פנימיות
הבנת לולאות MIDI ללא שיער ולולאות MIDI פנימיות
הבנת לולאות MIDI ללא שיער ולולאות MIDI פנימיות
הבנת לולאות MIDI ללא שיער ולולאות MIDI פנימיות
הבנת לולאות MIDI ללא שיער ולולאות MIDI פנימיות
הבנת לולאות MIDI ללא שיער ולולאות MIDI פנימיות

ה- Arduino צריך לרוץ דרך גשר סדרתי כמו Hairless MIDI ואז דרך לולאת MIDI פנימית כגון loopbe1 (או אוטובוס IAC ל- Mac).

הערה: לא ניתן להעלות סקיצה ל- Arduino בזמן שהיא מחוברת לגשר הטורי MIDI חסר השיער.

בחר את הארדואינו שלך ביציאה הסידרית MIDI ללא שיער ובאוטובוס loopbe1 או IAC ביציאת MIDI החוצה.

הערה: ודא כי השתקה אינה מופעלת בעת שימוש ב- loopbe1.

שלב 4: התחברות ל- DAW שלך

התחברות ל- DAW שלך
התחברות ל- DAW שלך

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

שלב 5: שחק

Image
Image

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

מוּמלָץ: