Summary

  • وصفت مسودة W3C المؤرخة 15 ديسمبر 2011 واجهة Web Audio API كرسم لتوجيه الصوت، تصل فيه عُقد AudioNode بعضها ببعض داخل AudioContext لمعالجة الصوت وتوليده.
  • وضعت توصية 17 يونيو 2021 قواعد لتغيير المعلمات بمرور الوقت، والتصيير دون تشغيل فوري، والمعالجة المخصصة عبر AudioWorklet. يرتب النص البرمجي الرسم ويتولى المتصفح العمل الصوتي الآني.

في غرفة التمرين آلة أغنيات عتيقة تعتز بزرها الأحمر. يطلب المؤلف صوتاً يبدأ هامساً، يمر عبر مرشح، ينتقل نحو اليسار ثم يتوقف تماماً حين يهبط بطل اللعبة على الأرض. تعرض الآلة تشغيل الأسطوانة من بدايتها. لا عيب فيها؛ المطلوب لم يعد مهمتها. كان تشغيل ملف صوتي في صفحة ويب خطوة مهمة، لكن الصوت الذي يستجيب لكل حركة يحتاج أدوات أكثر من زر.

شرحت مسودة W3C في 15 ديسمبر 2011 واجهة عالية المستوى لمعالجة الصوت وتوليده. فكرتها الأساسية رسم توجيه تتصل فيه كائنات AudioNode لتحدد طريق الإشارة. يمكن لمصدر أن يمر بمرشح ثم بمتحكم في المستوى، ثم بمرحلة تحدد موضعه، قبل أن يصل إلى المخرج. يبني JavaScript التوصيلات؛ وذكرت المسودة أن أغلب المعالجة الفعلية تجري في تنفيذ المتصفح الأساسي المحسّن، مع إمكان المعالجة المباشرة بالنص البرمجي أيضاً. يوزع المؤلف الكابلات؛ الآلة تجعل الهواء يهتز.

كان لهذا التقسيم سبب واضح. أتاح عنصر audio في HTML التشغيل الأساسي، لكنه لم يمنح اللعبة وحده القدرة على تغيير صوت خطوة بحسب مكان اللاعب أو تركيب مؤثر من أجزاء صغيرة. نظرت مسودة 2011 إلى الألعاب والتطبيقات التفاعلية والمزج والترشيح والتوليد. التسجيل الجاهز يؤدي دوراً ممتازاً حين نريد الاستماع إليه. أما حين يتغير المشهد كل لحظة، فيحتاج التطبيق إلى مفردات مشتركة لبناء الصوت أثناء العمل.

كانت المفردات ملموسة. يحتضن AudioContext الرسم. توفر عقد المصدر المادة الصوتية، وتغير عقدة gain المستوى، ويعمل المرشح في الترددات، ويضيف delay فرقاً زمنياً. يستطيع محلل الإشارة أن يزوّد رسماً بصرياً بالمعلومات، وتكون عقدة destination محطة الصوت الذي يُسمع. عرضت المسودة أيضاً عقداً لفصل القنوات وجمعها. قد تسير إشارة واحدة في مؤثرات متعددة أو تلتقي إشارات قبل السماعة. ما يسمعه الشخص نتيجة التوصيل بين الأجزاء، لا معجزة زر وحيد.

والوقت جزء من الآلة. إذا وصل صوت الاصطدام متأخراً عن الصورة، شعر اللاعب بأن العالم مفكك. وصفت الواجهة المبكرة ساعة AudioContext وجدولة الأحداث الصوتية وفقها. يمكن للتطبيق تحديد متى يبدأ الصوت ومتى ينتهي. عمل JavaScript أن يضع المواعيد، لا أن يقف على كل عينة صوتية مترقباً لحظة فراغ خيط الصفحة الرئيسي.

حافظت مسودة 10 أكتوبر 2013 على رسم التوجيه باعتباره النموذج الرئيسي. كانت خامس مسودة عامة، دليلاً على استمرار صقل اللغة المشتركة. تناولت صوت الألعاب المعقدة والتطبيقات التفاعلية والمزج والمرشحات. بقي عنصر التشغيل البسيط مناسباً لأغنية كاملة؛ أما الواجهة الجديدة فخدمت الصفحة التي تريد صنع سلوك صوتي من عدة أجزاء متصلة.

في توصية W3C الصادرة 17 يونيو 2021 اتسعت التفاصيل. مكّن AudioParam التطبيق من تغيير قيمة مثل مستوى الصوت على خط الزمن الصوتي، بدلاً من الاعتماد على سلسلة نداءات متعجلة من الصفحة. واستطاع OfflineAudioContext تصيير الرسم في مخزن بيانات من دون تشغيله فوراً عبر السماعات. يمكن للتطبيق أن يعد النتيجة أو يفحصها أو يعيد استخدامها. ظل المصدر والمعالجة والوقت والمخرج أعمدة الطاولة الأساسية.

أخذت المعالجة الخاصة بالتطبيق مكاناً واضحاً عبر AudioWorklet. وصفت التوصية زوجاً من AudioWorkletNode في الرسم وAudioWorkletProcessor داخل نطاق معالجة خاص. يستطيع المطور إضافة مؤثره، فيما يحافظ المتصفح على مسار مناسب لتنفيذ الصوت. وميّزت المواصفة بين خيط التحكم وخيط التصيير. صفحة مشغولة بفتح قائمة يمكنها الانتظار قليلاً؛ النغمة التي يفترض أن يسمعها اللاعب في اللحظة المناسبة لا تستطيع انتظارها.

تُظهر صفحة W3C لتاريخ النشر الطريق من مسودة ديسمبر 2011 إلى توصية يونيو 2021. تلك تواريخ وثائق، وليست إحصاء لانتشار المتصفحات أو قياساً لتأخر كل جهاز. لكنها تكشف حجم عمل المواصفة: قواعد للتوصيل والقنوات والوقت والموارد والمخرج. الطاولة ذات المقابض الكثيرة لا تنفع إذا تصرفت كل وصلة فيها على هواها.

بقي للتطبيق مجال واسع. تستطيع لعبة وضع انفجار في جهة محددة، وأداة موسيقية وصل مذبذب بمرشح، ودرس استعمال المحلل لرسم الإشارة. يوفر المتصفح الآلة المشتركة ويختار كل برنامج ترتيبه. لم تعد الصفحة تقول فقط «شغّل هذا الملف»، بل أصبحت قادرة على وصف طريقة صنع الصوت الذي تحتاجه.

لا حاجة إلى طرد آلة الأغاني القديمة. عندما نريد سماع أغنية، يكفي الزر الأحمر. لكن أوركسترا تستجيب لحركة اللاعب تحتاج طاقماً أكبر من موظف واحد. جلبت Web Audio طاولة المزج إلى المتصفح، وتركت التطبيق يضع يده على المقابض. جودة اللحن مسألة أخرى تخص المؤلف.