# معمارية صوت لينكس المتقدمة

معمارية صوت لينكس المتقدمة (بالإنجلزية: Advanced Linux Sound Architecture) ويتم اختصارها (ألسا - ALSA)، هو إطار عمل وجزء من نواة لينكس لتوفر واجهة برمجة التطبيقات (API) لبرامج تشغيل بطاقة الصوت. بعض أهداف مشروع ألسا في بدايته هو تكوين وتعريف تلقائي لأجهزة الصوت وللبطاقة المتعددة وتوفيرها للنظام، يتم تعديل إطار ألسا تحت رخصة جنو العمومية (GPL) ورخصة جنو العمومية الصغرى (LGPL)، بعض الأطر مثل جاك تستخدم ألسا لتحرير ومزج الصوت بمستوى احترافي ومنخفض في إستهلاك موارد النظام.

## الميزات

وقد تم تصميم ألسا مع بعض الميزات التي لم تكن متاحة ومفهومة في وقت نظام الصوت المفتوح (OSS):
* توليف MIDI الأجهزة.
* خلط الأجهزة بقنوات متعددة.
* عملية مزدوجة الاتجاه.
إطار ألسا لديه API أكبر حجما وأكثر تعقيدا من OSS ، لذلك يمكن أن يكون أكثر صعوبة لتطوير تطبيقات للمستخدم.كما يمكنه توفير طبقة تحاكي OSS ، ويستعمل هذا المحاكي للوظائف التي لم تعد متوفرة في العديد من توزيعات لينكس الجديدة.
بالإضافة إلى أدوات تشغيل الأجهزة والصوت، حزم إطار ألسا يوفر للمستخدمين ولمطوري التطبيقات ميزات عند استعماله من خلال الواجهات في مستوى مساحة المستخدم للتفاعل المباشر مع تعاريف نواة؛ على عكس API النواة، التي توفر كل قدرات الجهاز مباشرتا، يعرض إطار ALSA في مساحة المستخدم فكرة مجردة وموحدا «قدر الإمكان» عبر عناصر ضبط الأجهزة الأساسية. ويتم تحقيق هذا الهدف جزئيا باستخدام برمجيات المكونات الإضافية. على سبيل المثال، العديد من بطاقات الصوت الحديثة أو المدمج في رقائق الصوت، لا توفر لك المقدرة على ضبط «الصوت الرئيسي»؛ توفر مكتبة ألسا في مساحة المستخدم التحكم في مستوى الصوت باستخدام برنامج " softvol " المتوفر في المكونات، وبهذه الطريقة لا يهتم المطور ما إذا كان التحكم ينفذه عتاد الأجهزة أو البرمجيات المصاحبة للبطاقة.

## مفاهيم

عادة، ALSA يدعم ما يصل إلى ثماني بطاقات، مرقمة من 0 إلى 7 ؛ كل بطاقة هو جهاز فيزيائي أو محاكي قادرة على المدخلات والمخرجات، أو السيطرة على الصوت، ويستخدم بطاقة الرقم 0 بشكل افتراضي عند عدم وجود بطاقة محددة. علاوة على ذلك، كل بطاقة يمكن أيضا أن تعالج من قبل المعرف الخاص بها، والذي هو عبارة عن سلسلة تفسيرية مثل «سماعات الرأس» أو " ICH9 ".
البطاقة لديها أجهزة، مرقمة ابتداء من 0 ؛ قد يكون جهاز من نوع القراءة، وهذا يعني أنه إخراج الصوت من الكمبيوتر، أو بعض الأنواع الأخرى مثل الالتقاط، ومراقبة، وتوقيت، أو المنظم، ويستخدم الجهاز رقم 0 بشكل افتراضي عند تحديد أي جهاز معين.
قد يحتوي الجهاز على subdevices ، مرقمة ابتداء من 0 ؛ يمثل subdevice بعض النقاط الفرعية أو صلة للجهاز، مثل سماعات الحاسوب. إذا لم يتم تحديد subdevice ، أو إذا تم تحديد عدد subdevice -1، سيتم استخدام أي subdevice متاح.
واجهة بطاقة هو وصف ل بروتوكول ALSA للوصول إلى البطاقة، وتشمل الواجهات الممكنة: hw, plughw, default, and plug:dmix. توفر واجهة hw الوصول المباشر إلى الجهاز عبر النواة، ولكن يستلزم هذا عدم تفعيل برامج الخلط أو استعمال الجهاز من طرف رابط آخر. مثلا plughw تمكينه يكون افتراضيا لإخراج الصوت واجهة hw من شأنها أن تنتج خطأ عند تشغيلها في هذه الحالة.
يتم وصف عملية لإخراج الصوت عادتا من خلال جمع المواصفات المذكورة أعلاه معا في سلسلة اوامر للجهاز، وتكون واحد من الأشكال التالية (الترتيب والكتابة مهم جدا من اليسار إلى اليمين):
* interface:card,device,subdevice
* interface:CARD=1,DEV=3,SUBDEV=2.
تيار ALSA- ألسا هو تدفق البيانات التي تتمثل في الصوت، وشكل التيار الأكثر شيوعا هو PCM فيجب أن يتم إعداده بهذه الطريقة ليتناسب مع الخصائص أو مواصفات الأجهزة:
* sampling rate: 44.1 kHz on home stereos, and 48 kHz on home theaters
* sample width: measured in some number of bits per sample (such as 8, 16, 24, or 32 bits/sample)
* sample encoding: such as endianness
* number of channels: 1 for mono, 2 for stereo, or 6 for AC-3/IEC958
أيضا ألسا يحتاج إلى ضبط مساحة المخزن المؤقت الذي تستعمله وحدة المعالجة المركزية لتوفير بيانات سليمة.

## تطبيقات

إطار ألسا يوفر طبقة في (ASOC) بهدف دعم أفضل للإطار على الأنظمة المدمجة التي تستخدم تصاميم منظومة على رقاقة (SoC).

## تاريخ

تم تطوير مشروع ألسا بواسطة Jaroslav Kysela، وكان يقوم بتشغيل بطاقة الموجات الفوق صوتية من نوع غرافيز على نظام لينكس. بدأ المشروع في عام 1998 وتم تطوير منفصلا عن نواة لينكس حتى تم عرضه في سلسلة الإصدارات التجريبية في النواة 2.5 سنة 2002 وعلى امتداد (2.5.4-2.5.5).
في الإصدار 2.6، حلت محل النظام السابق، نظام الصوت المفتوحة (OSS)، وبشكل افتراضي (على الرغم من عدم تواجد طبقة توافقية مع OSS القديم لكن تم إضافته لاحقا).