بنية الصوت المتقدمة لنظام لينكس


بنية الصوت المتقدمة لنظام لينكس ( ALSA ) هي إطار عمل برمجي وجزء من نواة لينكس يوفر واجهة برمجة تطبيقات (API) لبرامج تشغيل أجهزة بطاقة الصوت .
كان من بين أهداف مشروع ALSA عند انطلاقه التكوين التلقائي لأجهزة بطاقة الصوت والتعامل السلس مع أجهزة الصوت المتعددة في النظام. يُصدر ALSA بموجب ترخيص GPL-2.0 أو أحدث، وترخيص LGPL-2.1 أو أحدث . [ 5 ]
في نظام لينكس، تعمل خوادم الصوت ، مثل sndio و PulseAudio و JACK (لتحرير ومزج الصوت الاحترافي منخفض زمن الاستجابة) و PipeWire ، بالإضافة إلى واجهات برمجة التطبيقات عالية المستوى (مثل OpenAL و SDL audio وغيرها)، على أساس ALSA وبرامج تشغيل بطاقات الصوت الخاصة بها. وقد حلت ALSA محل النسخة القديمة من نظام الصوت المفتوح (OSS) لنظام لينكس.
تاريخ
قاد ياروسلاف كيسيلا مشروع تطوير ALSA، الذي استند إلى برنامج تشغيل جهاز لينكس لبطاقة الصوت Gravis Ultrasound . بدأ المشروع عام 1998، وطُوّر بشكل منفصل عن نواة لينكس حتى أُدرج في سلسلة التطوير 2.5 عام 2002 (2.5.4–2.5.5). [ 6 ]
في الإصدار 2.6، تم استبدال النظام السابق، نظام الصوت المفتوح (OSS)، افتراضيًا (على الرغم من وجود طبقة للتوافق مع الإصدارات السابقة). [ 7 ]
تتميز ALSA بواجهة برمجة تطبيقات (API) أكبر وأكثر تعقيدًا من البرمجيات مفتوحة المصدر (OSS)، مما يجعل تطوير تطبيق يعتمد على ALSA كتقنية صوتية أكثر صعوبة. ورغم إمكانية تهيئة ALSA لتوفير طبقة محاكاة للبرمجيات مفتوحة المصدر، إلا أن هذه الخاصية لم تعد متاحة أو غير مثبتة افتراضيًا في العديد من توزيعات لينكس.
سمات
تم تصميم ALSA ببعض الميزات التي لم تكن مدعومة من قبل البرمجيات مفتوحة المصدر في وقت تصميمها:
- توليف MIDI قائم على الأجهزة .
- مزج القنوات المتعددة باستخدام الأجهزة.
- تشغيل ثنائي الاتجاه .
- برامج تشغيل أجهزة متوافقة مع المعالجات المتعددة وآمنة للاستخدام المتزامن .
إلى جانب برامج تشغيل أجهزة الصوت، توفر ALSA مكتبةً لمساحة المستخدم لمطوري التطبيقات الراغبين في استخدام ميزات برامج التشغيل عبر واجهة ذات مستوى أعلى من واجهة التفاعل المباشر مع برامج تشغيل النواة. وعلى عكس واجهة برمجة تطبيقات النواة، التي تحاول عكس إمكانيات الأجهزة مباشرةً، تقدم مكتبة ALSA لمساحة المستخدم تجريدًا يظل موحدًا قدر الإمكان عبر عناصر الأجهزة الأساسية المتباينة. ويتحقق هذا الهدف جزئيًا باستخدام إضافات برمجية ؛ فعلى سبيل المثال، لا تحتوي العديد من بطاقات الصوت الحديثة أو رقائق الصوت المدمجة على عنصر تحكم رئيسي في مستوى الصوت. وبدلًا من ذلك، توفر مكتبة مساحة المستخدم لهذه الأجهزة عنصر تحكم برمجيًا في مستوى الصوت باستخدام الإضافة " softvol "، ولا تحتاج برامج التطبيقات العادية إلى الاهتمام بما إذا كان هذا التحكم مُنفذًا بواسطة الأجهزة الأساسية أو محاكاة برمجية لها.
التطبيقات
بالإضافة إلى إطار العمل البرمجي الداخلي لنواة لينكس، يوفر مشروع ALSA أيضًا أدوات سطر الأوامر [ 8 ] [ 9 ] [ 10 ] والأدوات المساعدة [ 11 ]alsactl ، [ 12 ]amixer ، [ 13 ]arecord/aplay وواجهة المستخدمalsamixer النصية القائمة على ncurses .
هناك أيضًا واجهات مستخدم رسومية مبرمجة بواسطة مطورين من جهات خارجية ، مثل GNOME-ALSAmixer [ 14 ] (باستخدام GTK )، وKmix، [ 14 ] وXFCE4-mixer، وLXpanel، وQasHctl، وQasMixer، وPavucontrol، وAconnectGUI، [ 15 ] وtapiir، [ 15 ] وpolarbear، [ 15 ] و ALSAmixerGUI [ 16 ] (باستخدام FLTK )، و ZynAddSubFX ، وYoshimi، وغيرها الكثير.
المفاهيم
يدعم نظام ALSA عادةً ما يصل إلى ثماني بطاقات ، مرقمة من 0 إلى 7؛ كل بطاقة عبارة عن جهاز نواة مادي أو منطقي قادر على الإدخال والإخراج. علاوة على ذلك، يمكن أيضًا الوصول إلى كل بطاقة من خلال معرّفها ، وهو عبارة عن سلسلة نصية توضيحية مثل " سماعة رأس " أو " ICH 9 ".
تحتوي البطاقة على أجهزة ، مرقمة بدءًا من 0؛ قد يكون الجهاز من نوع التشغيل ، مما يعني أنه يُخرج الصوت من الكمبيوتر، أو نوعًا آخر مثل الالتقاط أو التحكم أو المؤقت أو التسلسل ؛ [ 20 ] يتم استخدام رقم الجهاز 0 افتراضيًا عندما لا يتم تحديد جهاز معين.
قد يحتوي الجهاز على أجهزة فرعية ، مرقمة بدءًا من 0؛ يمثل الجهاز الفرعي نقطة نهاية صوتية ذات صلة بالجهاز، مثل زوج من السماعات. إذا لم يتم تحديد الجهاز الفرعي، أو إذا تم تحديد رقم الجهاز الفرعي -1، فسيتم استخدام أي جهاز فرعي متاح.
واجهة البطاقة هي وصف لبروتوكول ALSA للوصول إلى البطاقة؛ وتشمل الواجهات الممكنة: hw و plughw و default و plug:dmix . توفر واجهة hw وصولاً مباشراً إلى جهاز النواة، ولكنها لا تدعم مزج البرامج أو تكييف التدفق. تُمكّن واجهتا plughw و default إخراج الصوت في الحالات التي تُنتج فيها واجهة hw خطأً.
يصف التطبيق عادةً مخرجات الصوت من خلال دمج جميع المواصفات المذكورة أعلاه معًا في سلسلة الجهاز ، والتي تأخذ أحد الأشكال التالية (وهي حساسة لحالة الأحرف ):
- الواجهة: البطاقة، الجهاز، الجهاز الفرعي
- interface:CARD=1,DEV=3,SUBDEV=2 .
يُعدّ تدفق ALSA تدفق بيانات يُمثّل الصوت؛ وأكثر تنسيقات التدفق شيوعًا هو PCM الذي يجب إنتاجه بطريقة تتوافق مع خصائص أو معايير الأجهزة، بما في ذلك:
- معدل أخذ العينات : غالبًا ما يكون 44.1 كيلو هرتز في أجهزة الاستريو المنزلية، أو 48 كيلو هرتز في المسارح المنزلية، ومع ذلك يصل إلى 88.2 كيلو هرتز، أو 96 كيلو هرتز، أو حتى 192 كيلو هرتز لإنتاج أو إعادة إنتاج الصوت عالي الدقة.
- عرض العينة : يُقاس بعدد معين من البتات لكل عينة (مثل 8 أو 16 أو 24 أو 32 بت/عينة)
- ترميز العينة : مثل ترتيب البايتات
- عدد القنوات : 1 أحادي، 2 ستيريو، أو 6 لـ AC-3 / IEC958
التطبيقات
تهدف طبقة نظام ALSA على الشريحة (ASoC) إلى توفير دعم أفضل لـ ALSA على الأنظمة المدمجة التي تستخدم تصميم نظام على شريحة (SoC). [ 21 ]
يستطيع نظام الصوت المفتوح الإصدار 4 محاكاة ALSA. [ 22 ]
يستخدم نظام QNX نظام صوت مشتق من نظام ALSA، ولكنه غير متوافق معه بشكل مباشر. لا تزال أسماء ملفات الرأس والمكتبات هي "asound"، تمامًا مثل أسماء ALSA. [ 23 ] يستخدم ALSA API استدعاءات ioctl() بطريقة غير مسموح بها في نواة QNX. [ 24 ]
انظر أيضاً
مراجع
- ^ "ياروسلاف كيسيلا – بيركس سوفت" .
- ↑ فريق ألسا ، alsa-project.org، 29-09-2008 ، تم الاطلاع عليه بتاريخ 08-01-2012
- ↑ "alsa-lib,alsa-ucm-conf 1.2.16.1 release" .
- ↑ "ALSA" ، ملخص التحليل ، أوهلوه ، مؤرشف من الأصل بتاريخ 20-12-2013 ، تم استرجاعه بتاريخ 08-01-2012
- 1 2 "مقدمة" . alsa-project.org . تم الاطلاع عليه بتاريخ 2012-01-08 .
- ↑ ملاحظات إصدار لينكس 2.5.5 ، تم الاطلاع عليها بتاريخ 2012-01-08
- ↑ محاكاة البرمجيات مفتوحة المصدر ، مؤرشفة من الأصل بتاريخ 2012-06-05 ، تم استرجاعها بتاريخ 2012-07-07
- ↑ "Alsa-project/Alsa-tools" . GitHub . 3 أبريل 2022.
- ↑ "أدوات ALSA - ويكي ALSA" . alsa.opensrc.org . مؤرشف من الأصل بتاريخ 18 مارس 2008. تم الاطلاع عليه بتاريخ 12 يناير 2022 .
- ↑ "معلومات مستخدم ALSA - مشروع Alsa" .
- ↑ "Alsa-utils" . GitHub . 4 مايو 2022.
- ↑ "Category:Alsa-utils - ALSA wiki" . alsa.opensrc.org . مؤرشف من الأصل بتاريخ 18 مارس 2008. تم الاطلاع عليه بتاريخ 12 يناير 2022 .
- 1 2 "كيفية استخدام أدوات ALSA لإدارة الصوت في نظام Linux من خلال الطرفية" . 14 مايو 2018.
- 1 2 "AlsaMixers - ALSA wiki" . alsa.opensrc.org . مؤرشف من الأصل في 4 أبريل 2008. تم الاطلاع عليه في 12 يناير 2022 .
- 1 2 3 boer, maarten de. "الصفحة الرئيسية لمارتن" . iua.upf.es. مؤرشفة من الأصل بتاريخ 2006-09-04 . تم الاطلاع عليها بتاريخ 18 يوليو 2021.
ستتضمن هذه الصفحة قائمة بمشاريعي، لكنني بحاجة إلى تنظيم بعض الأمور أولاً. في الوقت الحالي، استخدم الروابط التالية، أو تصفح بروتوكول نقل الملفات (FTP): tapiir، alsamixergui، aconnectgui، polarbear
- ↑ بوير، مارتن دي. "AlsaMixerGui" . مجموعة تكنولوجيا الموسيقى . برشلونة: جامعة بومبيو فابرا. مؤرشف من الأصل في 5 فبراير 2009. تم الاطلاع عليه في 18 يوليو 2021. alsamixergui هي واجهة أمامية مبنية على FLTK لبرنامج alsamixer. كُتبت مباشرةً فوق شفرة المصدر الخاصة بـ alsamixer، مع الحفاظ على
الشفرة الأصلية سليمة، وإضافة بعض عبارات ifdef وبعض استدعاءات جزء واجهة المستخدم الرسومية فقط، لذا فهي توفر نفس الوظائف تمامًا، ولكن بواجهة مستخدم رسومية. (باحث، 1999-2010)
- ↑ ترانتر، جيف (أكتوبر 2004)، "مقدمة في برمجة الصوت باستخدام ALSA" ، مجلة لينكس ، تاريخ الاسترجاع 2012-01-08
- ↑ فيليبس، ديف (يونيو 2005)، "دليل المستخدم لـ ALSA" ، مجلة لينكس ، مؤرشف من الأصل في 9 يناير 2012 ، تم الاطلاع عليه في 8 يناير 2012
- ↑ توثيق مكتبة Alsa C لـ Doxygen ، أكتوبر 2007 ، تم الاطلاع عليه بتاريخ 2012-01-08
- ↑ "مشروع ALSA - مرجع مكتبة C: واجهة التسلسل" . www.alsa-project.org . تم الاطلاع عليه بتاريخ 30 أبريل 2019 .
- ↑ طبقة ALSA SoC ، kernel.org ، 13 يوليو 2017
- ↑ "نصائح وحيل - نظام الصوت المفتوح" . ossnext.trueinstruments.com .
- ^ "هندسة الصوت (QNX 6.4.1)" . www.qnx.com .
- ↑ "ALSA و libasound.so" . www.qnx.com .
روابط خارجية
- الموقع الرسمي
- كونستابل، مارك. " ويكي ألسا" . AlsaOpensrcOrg . مؤرشف من الأصل في 29 مارس 2002. تم الاطلاع عليه في 18 يوليو 2021.
من أسباب استمرار هذا الموقع: لم يساهم أي شخص من موقع ALSA الرسمي بأي شيء فيه (قبل وجود الموقع الرسمي، فهذا الموقع أقدم من ويكي ألسا الرسمي بسنوات عديدة)، ولم يقترح أحد رسميًا أو بشكل غير رسمي دمج الموقعين، ولم يُبدِ أي شخص آخر اهتمامًا جادًا بالمساعدة في دمجهما، والأهم من ذلك، أن هناك عددًا كبيرًا من الزيارات الخارجية ونتائج بحث جوجل التي تصل مباشرةً إلى هذا الموقع نظرًا لوجوده لفترة طويلة.
| وضع المستخدم | تطبيقات المستخدم | باش ، ليبر أوفيس ، جيمب ، بلندر ، 0 AD ، موزيلا فايرفوكس ، ... | ||||
|---|---|---|---|---|---|---|
| مكونات النظام | برنامج بدء التشغيل : OpenRC ، runit ، systemd ، ... | برامج النظام : polkitd ، smbd ، sshd ، udevd ، ... | نظام النوافذ : X11 ، Wayland ، SurfaceFlinger (أندرويد) | الرسومات : ميسا ، برمجيات AMD ، ... | مكتبات أخرى: GTK ، Qt ، EFL ، SDL ، SFML ، FLTK ، GNUstep ، ... | |
| مكتبة C القياسية | fopenexecv... ( حتى 2000 روتين فرعي ) تهدف مكتبة glibc إلى أن تكون سريعة، وتهدف مكتبة musl إلى أن تكون خفيفة الوزن، وتستهدف مكتبة uClibc الأنظمة المدمجة، وقد كُتبت مكتبة bionic لنظام Android ، إلخ . وتهدف جميعها إلى أن تكون mallocمتوافقة مع معيار POSIX / SUS .memcpylocaltimepthread_create | |||||
| وضع النواة | نواة لينكس | stat، splice، dup، ، read، open، ioctl، write، mmap، close، exitإلخ. (حوالي 380 استدعاء نظام) تهدف واجهة استدعاء النظام في نواة لينكس (SCI) إلى أن تكون متوافقة مع POSIX / SUS [ 1 ] | ||||
| نظام فرعي لجدولة العمليات | نظام IPC الفرعي | نظام فرعي لإدارة الذاكرة | نظام الملفات الافتراضية | النظام الفرعي للشبكات | ||
| مكونات أخرى: ALSA ، DRI ، evdev ، klibc ، LVM ، مُحدد الأجهزة ، مُجدول شبكة لينكس ، Netfilter . وحدات أمان لينكس : SELinux ، TOMOYO ، AppArmor ، Smack. | ||||||
| المكونات المادية ( وحدة المعالجة المركزية ، الذاكرة الرئيسية ، أجهزة تخزين البيانات ، إلخ). | ||||||
- ↑ "دليل المسؤول README" . مستودعات Kernel.org git .
- بنية الصوت المتقدمة لنظام لينكس
- برنامج عام 1998
- واجهات برمجة التطبيقات
- واجهات نواة لينكس
- برامج تشغيل لينكس
