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

כפפת ריקוד: 9 שלבים
כפפת ריקוד: 9 שלבים

וִידֵאוֹ: כפפת ריקוד: 9 שלבים

וִידֵאוֹ: כפפת ריקוד: 9 שלבים
וִידֵאוֹ: תפסתי אותה על חםםםם!!!!!! 2024, יולי
Anonim
כפפת ריקוד
כפפת ריקוד

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

אספקה

  • Ableton (או ניסיון חינם)
  • ארדואינו
  • כבלי מגשר
  • מלחם
  • קַרטוֹן
  • אקדח דבק חם
  • הרבה דמיון

שלב 1: קונספט

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

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

להלן התנועות בהן השתמשתי:

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

השתמש באלה או עשה בעצמך!

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

שלב 2: הכינו את מד התאוצה

הכינו את מד התאוצה
הכינו את מד התאוצה

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

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

שלב 3: בנה את הכפפה

בנה את הכפפה
בנה את הכפפה

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

שלב 4: חיבור ב- Ableton

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

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

להלן קישור להרכב שלי התואם Arduino, למקרה שאתה לא רוצה לכתוב אחד משלך:

(למרבה הצער, לימודך Ableton אינו בגדר ההדרכה. עם זאת, יש הרבה סרטוני הדרכה טובים, ולאבלטון יש ניסיון חינם של 90 יום! אני ממליץ על הסרטון הזה.)

שלב 5: התחל להשתמש ב- Firmata

התחל להשתמש ב- Firmata
התחל להשתמש ב- Firmata

על מנת לאפשר ל- Arduino שלך לתקשר עם Ableton, יהיה עליך להשתמש בספרייה בשם Firmata. יהיה עליך גם להוריד את ערכת החיבורים לאבלטון.

באבלטון, לחץ על חבילות> ערכת חיבורים> מכשירים בתפריט שבפינה השמאלית העליונה ולאחר מכן לחץ פעמיים על המכשיר הראשון (Arduino) כדי להוסיף אותו. הקפד לזכור לאיזה מסלול Ableton הוספת את המכשיר!

שלב 6: בדוק את Firmata

בדוק Firmata
בדוק Firmata

ראשית, נבדוק ונוודא שהארדואינו שלך מתקשר עם Ableton. העלה את קטע הקוד הזה ל- Arduino שלך והפעל אותו:

#include void analogWriteCallback (pin byte, int int) {if (IS_PIN_PWM (pin)) {pinMode (PIN_TO_DIGITAL (pin), OUTPUT); analogWrite (PIN_TO_PWM (סיכה), ערך); }} הגדרת void () {Firmata.setFirmwareVersion (FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION); Firmata.attach (ANALOG_MESSAGE, analogWriteCallback); Firmata.begin (57600);} לולאת void () {Firmata.sendAnalog (0, 800);}

זהו המינימום הדרוש כדי לתקשר עם Firmata. הוא שולח באופן רציף פלט של 800 (מתוך 1024) ליציאה 0 של התקן Firmata באבלטון. אם אתה מעלה את הקוד הזה ל- Arduino שלך בזמן שיש לך מכשיר Firmata פתוח ב- Ableton, הוא אמור להיראות כמו התמונה למעלה. (מפה את יציאת 0 לכל דבר באבלטון בכדי שתוכל לראות את הערכים.)

תוכל ללחוץ על הלחצן מפה ולאחר מכן על כל התקן תואם Firmata ב- Ableton כדי להוסיף מיפוי בין הקלט המתקבל ליציאה ההיא לבין הערך של אותו מכשיר Ableton. דוגמאות קלות כוללות את עוצמת הקול של כל רצועה או כל חיוג בתוך אפקט שמע. חקור וראה מה אתה יכול למצוא כדי למפות!

שלב 7: השפיע על מוזיקה עם תנועות הידיים שלך

להשפיע על מוסיקה עם תנועות הידיים שלך!
להשפיע על מוסיקה עם תנועות הידיים שלך!

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

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

Firmata.sendAnalog (יציאה, volumeLevel);

השתמש בקוד כזה עבור כל יציאת Firmata.

אם אתה רוצה לעשות משהו פשוט, אתה יכול לשלוח את ערכי מד התאוצה שלא מעובדים ליציאות Ableton ולמפות אותם משם. לחוויה מתוחכמת יותר אתה יכול להחליט: אילו ערכי מד תאוצה צריכים להפעיל צלילים, כיצד ומתי?

לאחר מכן, שחק את כל לולאות Ableton שלך, הפעל את קוד ה- Arduino שלך ורקוד!

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

שלב 8: שיעור המסלול (בונוס!)

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

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

מסלול בכיתה {public: int volume; int volumeGoal; int updateSpeed; Track () {volume = 0; volumeGoal = 0; updateSpeed = 0; } void setVolumeGoal (int goal) {volumeGoal = goal; } int getVolumeGoal () {return volumeGoal; } void setUpdateSpeed (int fastness) {updateSpeed = מהירות; } int getVolume () {נפח החזרה; } void updateVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } אחרת אם ((volume = updateSpeed)) {volume += updateSpeed; }} השתקת חלל (מהירות int) {volumeGoal = 50; updateSpeed = מהירות; } חלל מלא (מהירות int) {volumeGoal = 950; updateSpeed = מהירות; }};

לכל מסלול יש נפח נוכחי, נפח מטרה ומהירות שבה הוא מתקדם לעבר נפח המטרה הזה. אם ברצונך לשנות את עוצמת הקול של רצועה, התקשר ל- setVolumeGoal (). בכל פעם שאתה מפעיל את פונקציית הלול () בארדואינו שלך, התקשר ל- updateVolume () בכל רצועה ולאחר מכן שלח את המידע הזה ל- Firmata באמצעות getVolume (). שנה את מהירות העדכון לדהייה מהירה או הדרגתית יותר! כמו כן, הימנע מהגדרת עוצמת הקול ל -0 אם אתה יכול; במקום זאת, הגדר אותו לערך נמוך מאוד (ברירת המחדל ב- mute () היא 100).

שלב 9: אורך מסלול, פעימות ועוד (בונוס!)

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

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

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

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

if (millis () - lastLoop> = 4000) {לולאות += 1; lastLoop = millis (); עבור (int j = 0; j <8; j ++) {beatNow [j] = false; }} beat = (millis () - lastLoop) / 250; if (beat! = lastBeat) {lastBeat = beat; beatsLeft -= 1; }

הקפד לעדכן כרכים בהתאם לערכים של beatNow [beat] ו/או beatsLeft. קוד דוגמה המשלב כמעט הכל במדריך זה, ועוד כמה, מצורף למקרה שתרצה לראות אותו בפועל.

מוּמלָץ: