AUDIO·DSP
الصوت · العقدة 03
↩ البوابة

جذر كل فلترالمبادئ الأولى

الأنظمة الخطّية والالتفاف

الفلتر، الصدى، صوت الغرفة، مكبّر الجهير — كلّها "أنظمة" تأخذ صوتاً وتُخرج آخر. المدهش: فئة ضخمة منها (الأنظمة الخطّية الثابتة، LTI) تُوصَف بالكامل برقمٍ واحد: استجابتها النبضية. ومن هذه الفكرة وحدها يُشتقّ كل شيء في الفلاتر.

لديك "صندوق أسود" يعالج الصوت (ربما صدى قاعة، ربما فلتر). تريد أن تتنبّأ بمخرجه لـأي إشارة دخل ممكنة، دون أن تفتحه.

كم تجربة تحتاج؟ التجربة الساذجة: جرّب كل إشارة ممكنة (لانهائية!). لكن لو كان الصندوق يحقّق خاصّيتين فقط — الخطّية (مخرج مجموع = مجموع المخرجات) والثبات الزمني (نفس الدخل لاحقاً يعطي نفس المخرج لاحقاً) — كم تجربة واحدة تكفي لتعرف كل شيء عنه؟ وما هي تلك التجربة؟ فكّر: ما "أبسط دخل ممكن" تبني منه كل المدخلات الأخرى؟

النبضة: اللبنة التي تبني كل إشارة

أبسط إشارة هي النبضة δ[n]: واحد عند n=0 وصفر في كل مكان آخر. لماذا هي خاصّة؟ لأن أي إشارة = مجموع نبضات مزاحة وموزونة: العيّنة x[k] هي ببساطة نبضة عند k سعتها x[k]. الإشارة "مرصوفة" من نبضات.

ليش — هنا تنبثق الإجابة

إن عرفنا كيف يردّ النظام على نبضة واحدة (نسمّي ردّه الاستجابة النبضية h[n])، فبالخطّية والثبات نعرف ردّه على كل نبضة في الإشارة (مزاحة وموزونة)، ومجموعها = المخرج كاملاً. تجربة واحدة (نبضة) تكشف النظام بالكامل. هذا حلّ اللغز.

الالتفاف (Convolution) — معادلة كل فلتر

جمع النبضات الموزونة المزاحة يُكتب عمليةً واحدة اسمها الالتفاف:

convolution
y[n] = Σₖ x[k] · h[n−k] = (x ∗ h)[n] # لكل لحظة خرج: اقلب h، أزِحها، اضربها في x، اجمع
FIG 1 نبضة → نظام → استجابة نبضية · ثم x ∗ h = y
نبضة δ النظام استجابة h[n] «بصمة» النظام كاملةً y = x ∗ h أي دخل × النظام = التفاف
الاستجابة النبضية h[n] هي "بصمة" النظام. مخرج أي دخل = التفاف الدخل مع البصمة. صدى قاعة = h طويلة بأصداء؛ فلتر جهير = h بشكل معيّن.
الجسر الذهبي — نظرية الالتفاف

الالتفاف في الزمن ثقيل (O(N·M)). لكن النظرية الأجمل في DSP: الالتفاف في الزمن = الضرب البسيط في التردد. FFT(x∗h) = FFT(x)·FFT(h). أي أن "تطبيق فلتر" يصبح: حوّل لتردد، اضرب في الاستجابة الترددية، عُد. هذا يربط هذه العقدة بفورييه (٠١) ويجعل الفلاتر أوضح وأسرع — وهو موضوع العقدة التالية.

  1. نفّذ الالتفاف من المعادلة مباشرة (حلقتان). طبّقه: h = متوسّط متحرّك بسيط [1/4,1/4,1/4,1/4] على إشارة فيها ضجيج. اسمع/ارسم كيف "نعّمها" (لاحظ: هذا فلتر تمرير-منخفض بدائي!).
  2. سجّل (أو ولّد) "استجابة نبضية" لصدى بسيط: h[0]=1, h[4000]=0.5, h[8000]=0.25. لُفّ صوتاً معها واسمع الصدى. أنت طبّقت reverb بالالتفاف.
  3. تحقّق من النظرية: احسب x∗h بالزمن، وبـIFFT(FFT(x)·FFT(h))، وتأكّد من تطابقهما. قِس الزمن — أيّهما أسرع لإشارة كبيرة؟
الخلاصة

الأنظمة LTI تُوصَف بالكامل باستجابتها النبضية h، ومخرجها = التفاف الدخل مع h. والالتفاف الزمني = ضرب ترددي (الجسر لفورييه). الآن نملك الإطار النظري الكامل للفلاتر — بقي أن نصمّمها عملياً: كيف نختار h (أو معاملات) لتمرير ترددات ومنع أخرى بالضبط؟