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

ממיר אודיו בזמן אמת ל- MIDI .: 7 שלבים
ממיר אודיו בזמן אמת ל- MIDI .: 7 שלבים

וִידֵאוֹ: ממיר אודיו בזמן אמת ל- MIDI .: 7 שלבים

וִידֵאוֹ: ממיר אודיו בזמן אמת ל- MIDI .: 7 שלבים
וִידֵאוֹ: Part 3 - Triplanetary Audiobook by E. E. Smith (Chs 9-12) 2024, יולי
Anonim
ממיר אודיו בזמן אמת ל- MIDI
ממיר אודיו בזמן אמת ל- MIDI

אנשים Namaste! זהו פרויקט שעבדתי עליו באחד הקורסים שלי (עיבוד אותות דיגיטליים בזמן אמת) בתכנית הרווקים שלי. הפרויקט נועד ליצור מערכת DSP ש"מאזינה "לנתוני שמע ומפיקה הודעות MIDI של הערות מתאימות באמצעות UART. Arduino Nano שימש למטרה זו. סיפור ארוך קצר הבקר המיקרו עושה FFT על נתוני שמע נכנסים ועושה ניתוח של הפסגות ושולח הודעת MIDI מתאימה. אל תטרח לגבי ה- MOSFET כיוון שהם מיועדים לפרוייקט אחר (שיעלה גם בהמשך להוראות) ואינם נדרשים לפרויקט זה. אז בואו נתחיל כבר !!

שלב 1: דרושים רכיבים

חובה רכיבים
חובה רכיבים

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

כמות רכיבים

1. מיקרופון אלקטרט. 1

2. נגד של 30 קילו אוהם. 1

3. נגד של 150 קילו אוהם. 1

4. נגד 100 אוהם. 1

5. נגדי 2.2 קילו אוהם. 3

6. סיר 10 קילו אוהם מוגדר מראש. 1

7. סיר גוזם 10 קילו אוהם. 1

8. סיר סטריאו של 47 קילו אוהם. 1

9. נגדים של 470 אוהם. 2

10. קבלים 0.01uF. 2

11. קבלים 2.2uF. 3

12. קבלים 47uF. 2

13. קבל 1000uF. 1

14. קבל 470uF. 1

15. ווסת מתח 7805. 1

16. רצועת כותרת נקבה וגברית. 1 כל אחד

17. מחבר חבית חבית. 1

18. מתאם DC 12 V 1 אמפר. 1

19. מתג SPST. (אופציונלי) 1

20. פרבורד. 1

שלב 2: מפרט טכני

מפרט טכני
מפרט טכני

תדירות הדגימה: 3840 דגימות/שניות

מספר דגימות לכל FFT: 256

רזולוציית תדר: 15 הרץ

קצב רענון: בסביבות 15 הרץ

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

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

שלב 3: תרשימי מעגלים

תרשימי מעגלים
תרשימי מעגלים
תרשימי מעגלים
תרשימי מעגלים
תרשימי מעגלים
תרשימי מעגלים
תרשימי מעגלים
תרשימי מעגלים

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

1) שני נגדי 470 אוהם משלבים את אות שמע הסטריאו לאות שמע מונו. ודא כי קרקע האות נכנסת לקרקע וירטואלית (vg בתרשים המעגלים) ולא לקרקע המעגל.

2) הבלוק הבא הוא מסנן מס 'מעבר נמוך למדרגה שנייה, אשר אחראי על הגבלת הלהקה של אות הכניסה כדי להימנע מכינוי. מכיוון שאנו עובדים עם אספקת +12 וולט בלבד, אנו משפיעים על מגבר ה- op על ידי יצירת מחלק מתח RC. שמטמטם את המגבר לחשוב כי ההיצע הוא 6 0 -6 וולט אספקה (רכבת כפולה) כאשר vg הוא ההתייחסות הקרקעית למגבר האופ.

3) ואז הפלט מסונן במעבר נמוך לחסום קיזוז DC של 6 וולט יחד עם DC של סביב 0.55 וולט מכיוון שה- ADC יוגדר לשימוש ב- 1.1 v הפנימי כ- Vref.

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

הערה: בעת חיבור ה- Nano ל- P. C. שמור את מתג SPST פתוח אחרת סגור. הקפידו להקפיד על התייחסות מיוחדת לכך אם אי עשייה זו עלולה לפגוע במעגל/במחשב/בווסת המתח או בכל שילוב של האמור לעיל

שלב 4: יישומים ו IDE הכרחיים

יישומים ו IDE הכרחיים
יישומים ו IDE הכרחיים
יישומים ו IDE הכרחיים
יישומים ו IDE הכרחיים
יישומים ו IDE הכרחיים
יישומים ו IDE הכרחיים
יישומים ו IDE הכרחיים
יישומים ו IDE הכרחיים
  1. לקידוד ה- Arduino Nano הלכתי עם אולפן AVR הפרימיטיבי כי נראה שזה עובד בשבילי. תוכל למצוא את ההתקנה כאן.
  2. לתכנות ה- Arduino Nano השתמשתי ב- Xloader. הכלי ממש קל לשימוש בו כדי לצרוב קבצי Hex ל- Arduinos. אתה יכול להשיג את זה כאן.
  3. לפרויקט מיני בונוס קטן וכוונון המעגל שהשתמשתי בו בעיבוד. אתה יכול לקבל את זה מכאן, למרות שבכל גרסה יש שינויים משמעותיים, כך שתצטרך להתעסק בפונקציות שהוצאו משימוש כדי לגרום לסקיצה לעבוד.
  4. אולפן FL או כל תוכנת עיבוד MIDI אחרת. אתה יכול לקבל גרסת גישה מוגבלת של FL studio בחינם מכאן.
  5. Loop MIDI יוצר יציאת MIDI וירטואלית ומזהה אותו על ידי FL studio כאילו היה מכשיר MIDI. קבל עותק של אותו מכאן.
  6. MIDI ללא שיער משמש לקריאת הודעות MIDI מיציאת COM ולשלוח אותו ליציאת MIDI לולאה. הוא גם מבצע איתור באגים של הודעות MIDI בזמן אמת מה שהופך ניפוי באגים נוח. קבל מכאן MIDI ללא שיער.

שלב 5: קודים רלוונטיים לכל דבר

ברצוני להודות ל- MFG Electronic Lifes (אתר כאן !!) על ספריית ה- FFT הנקודה הקבועה בה השתמשתי בפרויקט זה. הספרייה מותאמת למשפחת מגה -AVR. זהו הקישור לקבצי הספרייה ולקודים בהם השתמש. אני מצרף את הקוד שלי למטה. הוא כולל גם את סקיצת העיבוד ואת קוד ה- AVR C. שים לב שזו התצורה שעבד בשבילי ואני לא לוקח שום אחריות בכל מקרה אם אתה פוגע בדברים בגלל הקודים האלה. כמו כן, היו לי הרבה בעיות בניסיון לגרום לקוד לעבוד. לדוגמה, ל- DDRD (Register Direction Data) יש DDDx (x = 0-7) כמסיכות סיביות במקום ה- DDRDx המקובל (x = 0-7). היזהר משגיאות אלה בעת הידור. גם שינוי בקר הבקרה משפיע על הגדרות אלה, לכן עקוב אחר זה גם בעת התמודדות עם שגיאות הידור. ואם אתם תוהים מדוע תיקיית הפרוייקט נקראת DDT_Arduino_328p.rar, טוב בואו נגיד שהיה מאוד חשוך בערב כשהתחלתי והייתי עצלן מספיק כדי לא להדליק את האורות.: פ

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

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

שלב 6: הגדרת אותו

  1. פתח את הקוד וערך את הקוד עם #define pcvisual ללא תגובה ו #define midi_out הגיב.
  2. פתח את xloader וגלוש לספרייה עם הקוד, עיין בקובץ.hex ושרוף אותו ל- nano על ידי בחירת לוח מתאים ויציאת COM.
  3. פתח את סקיצת העיבוד והפעל אותה עם אינדקס יציאות COM המתאים. אם הכל הולך טוב אתה אמור להיות מסוגל לראות ספקטרום של האות על סיכה A0.
  4. קבל מברג והפוך את סיר הגוזם עד שהספקטרום שטוח (רכיב DC צריך להיות קרוב לאפס). אין להזין אז שום אות ללוח. (אל תצרף את מודול המיקרופון).
  5. כעת השתמש בכל כלי מחולל טאטאות כזה כדי לתת קלט ללוח מהמיקרופון ולהתבונן בספקטרום.
  6. אם אינך רואה סריקה של תדרים, הפחת את תדירות הניתוק על ידי שינוי ההתנגדות של 47 קילו אוהם. כמו כן, הגדל את הרווח באמצעות הסיר המוגדר מראש של 10 קילו אוהם. נסה להשיג פלט סחיפה שטוח ובולט על ידי שינוי פרמטרים אלה. זהו החלק המהנה (הבונוס הקטן!), נגן את השירים האהובים עליך ותהנה מהספקטרום שלהם בזמן אמת. (צפו בסרטון)
  7. כעת הרכיב שוב את קוד ה- C המוטבע הפעם עם #define pcvisual commented ו- #define midi_out ללא תגובה.
  8. טען מחדש את הקוד הידור החדש על arduino Nano.
  9. פתח את LoopMidi וצור פורט חדש.
  10. פתח את אולפן FL או תוכנות אחרות של ממשק MIDI וודא שיציאת midi הלולאה גלויה בהגדרות יציאת MIDI.
  11. MIDI ללא שיער פתוח עם ארדואינו מחובר. בחר ביציאת פלט להיות יציאת LoopMidi. עבור אל ההגדרות והגדר את קצב הבוד ל- 115200. כעת בחר ביציאת ה- COM המתאימה ל- Arduino Nano ופתחי את היציאה.
  12. נגן כמה צלילים "טהורים" ליד המיקרופון וכדאי שתשמע גם את הלהיט המתאים בתוכנת MIDI. אם אין תגובה נסה להוריד למעלה_גבול המוגדר בקוד C. אם ההערות מופעלות באופן אקראי אז הגדל את הגובה_גבול.
  13. קח את הפסנתר שלך ובדוק כמה המערכת שלך מהירה !! הדבר הטוב ביותר הוא שבאזור נעילת הזהב של פתקים הוא יכול לזהות בנוחות מספר מקשי סימולטני בו זמנית בקלות.

הערה: כאשר יישום אחד ניגש ליציאת ה- COM לא ניתן לקרוא אותו על ידי אחר. למשל אם MIDI ללא שיער קורא יציאת COM, Xloader לא תוכל להבהב את הלוח

שלב 7: תוצאות/סרטונים

זהו לבינתיים חבר'ה! מקווה שאתה אוהב את זה. אם יש לך הצעות או שיפורים בפרויקט הודע לי בפרק ההערות. שָׁלוֹם!

מוּמלָץ: