תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
הקדמה:
אני חדש בעבודה עם ארדואינו אבל אני מקווה להרחיב את הידע שלי על ידי לימוד אחרים וקבלת משוב. זהו בקר 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 פנימיות
ה- Arduino צריך לרוץ דרך גשר סדרתי כמו Hairless MIDI ואז דרך לולאת MIDI פנימית כגון loopbe1 (או אוטובוס IAC ל- Mac).
הערה: לא ניתן להעלות סקיצה ל- Arduino בזמן שהיא מחוברת לגשר הטורי MIDI חסר השיער.
בחר את הארדואינו שלך ביציאה הסידרית MIDI ללא שיער ובאוטובוס loopbe1 או IAC ביציאת MIDI החוצה.
הערה: ודא כי השתקה אינה מופעלת בעת שימוש ב- loopbe1.
שלב 4: התחברות ל- DAW שלך
אם אתה מקבל אות לאפליקציית MIDI ללא שיער כאשר אתה לוחץ על כפתור בלוח הלחם (האורות יהבהבו) אתה אמור להיות מסוגל לשלוח נתוני MIDI ל- DAW. השתמשתי באבלטון אבל כל DAW אמור לעבוד. וודא כי לולאת ה- MIDI הפנימית שלך (loopbe1) מופעלת בהעדפות DAW שלך (ב- Ableton אתה רוצה ש"טראק "יופעל). לאחר מכן, בחר אחת מכניסות מסילת MIDI שלך ללולאת MIDI (loopbe1) כפי שמוצג בתמונה למעלה.
שלב 5: שחק
הלחצנים יעבדו כעת כמו כל בקר MIDI אחר! הפוטנציומטר ישנה את מהירות הפתקים הנשלחים ל- DAW. הסרטון (החשוך מאוד) למעלה מציג צליל פסנתר כנף בפעולה!