קונבולוציה
כפי שכבר הזכרנו,
קונבולוציה היא טכניקה שבה ממש מקליטים את התהודה בחדר ולאחר מכן כופים
אותה על הצליל. ניתן לבצע קונבולוציה בשתי דרכים מקבילות, בממלכת
הזמן או בממלכת התדר.
קונבולוציה בממלכת
הזמן
קונבולוציה היא כמו ממוצע רץ. ניקח את הפונקציה המקורית
שמייצגת את המוסיקה, נקרא לה (m(n, כאשר
(m(n היא האמפליטודה של פונקציית
המוסיקה בזמן n, וניצור פונקצייה חדשה ומוחלקת באופן הבא: בזמן n,
ניצור את האמפליטודה (a) של הפונקציה החדשה שלנו בעזרת הנוסחא:
[(a = (1/3)[m(n-2) + m(n-1) + m(n
נקרא לפונקציה החדשה הזו
(r(n ונתבונן בה יותר מקרוב:
ניתן ל-(r(n ערכים התחלתיים: r(0) = 0, r(1) =
0
ואז: [(r(2) = 1/3[m(0) + m(1) + m(2
וגם [(r(3)
= 1/3[m(1) + m(2) + m(3
וכך הלאה. התהליך נקרא
"ממוצע רץ" מכיוון שאנו רצים קדימה וכל פעם עושים ממוצע של שלושה ערכים
של m. דרך נוספת להסתכל על זה היא לקחת את המוסיקה (m(n ולעשות לה
קונבולוציה כנגד הפילטר (a(n, כאשר (a(n היא פונקציה נוספת המוגדרת
ע"י: a(0) = 1/3, a(1) = 1/3, a(2) = 1/3 וכל שאר ערכי (a(n הם אפס.
מה הכוונה ב"עשיית
קונבולוציה כנגד..."? ובכן, ראשית נכתוב את זה בתור: (m*a(n
כעת:
(m*a(n) = m(n)a(0) + m(n-1)a(1) + m(n-2)a(2) +....+ m(0)a(n
ולבסוף, לאחר שמצמצמים: (m*a(n) = m(n)(1/3) + m(n-1)(1/3) +
m(n-2)(1/3
אין שום דבר מיוחד
בפילטר (a(n, למעשה, הוא יכול להיות כל סוג של פונקציה. זו יכולה להיות
פונקציה שמחזירה את האקוסטיקה בחדר שלך, ואז מה שאנו עושים – התבוננו
שוב בנוסחא – אנו מעצבים את פונקציית הקלט (m(n בהתאם לפונקציית הפילטר
(a(n. מושג אחרון לסיום, מספר הערכים השונים מאפס ש-(a(n מקבלת נקרא
מספר "ההקשות" של (a(n. כלומר, הממוצע הרץ שלנו הוא הוא פילטר
שלוש-הקשות.
קונבולוציה בממלכת התדר
עד כה דיברנו בעיקר על המתימטיקה של הקונבולוציה ולמה קונבולוציה
על סיגנל היא למעשה סוג של פילטר.
כעת אנו הולכים לראות איך זה
נעשה בפועל. התהליך הוא יחסית ישיר:
1. מאתרים חלל שאנו מעוניינים
במאפייני התהודה שלו.
2. מתקינים בו מיקרופון ומדיה דיגיטלית
להקלטות.
3. יוצרים צליל קצר ורם בחדר, לדוגמא, פיצוץ בלון.
4.
מקליטים את הצליל שנקרא האימפולס.
5. מנתחים את הצליל שאספנו, האימפולס בחדר. ניתוח
זה נותן לנו את תגובת האימפולס של החדר, מאפייני
תגובת
החדר לצליל.
6.
משתמשים בטכניקת הקונבולוציה כדי לשלב את תגובת האימפולס עם מקורות
צליל אחרים, ופחות או יותר
מביאים את החדר אל
הצליל.
קונבולוציה יכולה להיות
רבת עוצמה, אך זהו תהליך תוכנה מורכב למדי. התהליך לוקח כל דגימה בקובץ
תגובת האימפולס וכופל אותה בכל דגימה בקובץ הצליל שאנו רוצים "לשים"
בחדר. מדובר בהרבה מאוד הכפלות!!! זו הסיבה שקונבולוציה, שהיא יקרה
מאוד מבחינה חישובית, לא היתה פופולרית לפני שהמחשב הממוצע הפך מהיר
מספיק כדי לבצעה.
אולם כיום, אנו יכולים
לבצעה והסיבה לכך היא חברנו הישן, ה-FFT. מסתבר שעבור פילטרים עם הרבה
הקשות (הרבה ערכים שונים מאפס) קל יותר לחשב את הקונבולוציה בממלכת
הספקטרום.
זה הולך כך: נניח שאנו רוצים לעשות קונבולוציה לפונקצייה
(m(n כנגד פונקציית הפילטר (a(n. אנו יכולים לומר לכם מייד
שלקונבולוציה שלהם יש ספקטרום ששווה לכפולת הנקודות של הספקטרום של
פונקציית המוסיקה ופונקציית הפילטר. דרך נוספת לומר זאת היא שמקדמי
פורייה של הקונבולוציה ניתנים לחישוב ע"י הכפלת כל אחד ממקדמי פורייה
של (m(n ו-(a(n בהתאמה.
ובכן, להלן אלגוריתם
לביצוע הקונבולוציה:
1. חשב את מקדמי פורייה של (m(n ו-(a(n.
2. חשב את כפולת הנקודות של מקדמי פורייה של שתי הפונקציות.
3.
חשב את טרנספורמציית פורייה ההפוכה (IFFT) של התוצאות משלב 1.
וסיימנו! זו הייתה אחת התכונות הנהדרות של FFT, הוא הפך את
הקונבולוציה לפשוטה כמו כפל.
דו
דו
במסדרון
חדר גדל לאורך זמן
לסיכום, אם יש ברשותנו
ספריה גדולה של תגובות אימפולס, כגון אולפני הקלטה, אולמות קונצרטים,
המקלחת שלך וכו', אנו יכולים ליצור סימולציה של כל חלל עבור כל צליל.
ואכן, זה האופן בו עובדים הרבה מעבדים של אפקטים דיגיטליים ותוספים של
אפקט הד לתוכניות
מחשב.