فاوست (لغة برمجة)
FAUST ( تدفق الصوت الوظيفي ) هي لغة برمجة مرئية نصية وظيفية بحتة ، متخصصة في مجال معين ، تُستخدم لتنفيذ خوارزميات معالجة الإشارات الصوتية على شكل مكتبات أو إضافات صوتية أو تطبيقات مستقلة. يُمثل برنامج FAUST معالج إشارات: دالة رياضية تُطبق على إشارة مُدخلة ثم تُخرج الإشارة. وهي برمجيات مجانية ومفتوحة المصدر، مُرخصة بموجب رخصة جنو العمومية (GPL).
ملخص
يجمع نموذج برمجة FAUST بين منهج البرمجة الوظيفية وبنية مخطط الكتلة :
- يوفر أسلوب البرمجة الوظيفية إطارًا طبيعيًا لمعالجة الإشارات . يتم نمذجة الإشارات الرقمية كدوال منفصلة للزمن، ومعالجات الإشارات كدوال من الدرجة الثانية تعمل عليها، وعوامل تركيب مخططات الكتل في FAUST ، المستخدمة لدمج معالجات الإشارات معًا، كدوال من الدرجة الثالثة، وما إلى ذلك.
- تُشجع المخططات الكتلية، حتى وإن كانت نصية بحتة كما في FAUST، على اتباع نهج معياري في معالجة الإشارات يتوافق مع ممارسات مهندسي الصوت ومطوري الصوت. لا يصف برنامج FAUST صوتًا أو مجموعة أصوات، بل يصف معالج إشارات . يُنظم مصدر البرنامج على شكل مجموعة من التعريفات ، تتضمن على الأقل تعريف الكلمة المفتاحية
process(المكافئة لـmainفي لغة C):
العملية = ... ؛يقوم مترجم FAUST بترجمة كود FAUST إلى كائن C++ ، والذي قد يتفاعل بعد ذلك مع كود C++ آخر لإنتاج برنامج كامل.
يمكنه أيضًا تجميع (ترجمة) مواصفات معالجة الإشارات الرقمية FAUST إلى: C و C++ و C# و Cmajor و Codebox ( Max ) و D والمترجم و Java و JSFX ( REAPER ) و LLVM IR و Julia و Rust و WebAssembly (Wast/Wasm).
يعمل الكود المُولّد على مستوى العينة، مما يجعله مناسبًا لتنفيذ وظائف معالجة الإشارات الرقمية منخفضة المستوى ، مثل المرشحات التكرارية . كما يمكن تضمين الكود في الأنظمة الأخرى. وهو مكتفٍ ذاتيًا ولا يعتمد على أي مكتبة لمعالجة الإشارات الرقمية أو نظام تشغيل . يتميز بسلوك حتمي للغاية وحجم ذاكرة ثابت.
تتميز دلالات لغة FAUST بالبساطة والوضوح، مما يسمح لمترجم FAUST بالعمل وفقًا للدلالات . فبدلاً من ترجمة البرنامج حرفيًا، يقوم المترجم بترجمة الدالة الرياضية التي يمثلها. وهذا بدوره يُعزز إعادة استخدام المكونات. علاوة على ذلك، فإن الوصول إلى الدلالات الدقيقة لبرنامج FAUST يُسهّل عملية حفظ البيانات.
فاوست هي لغة نصية ولكنها موجهة نحو مخططات الكتل. تجمع بين منهجين: البرمجة الوظيفية ومخططات الكتل الجبرية ، التي تُبنى عبر تركيب الدوال . ولذلك، تعتمد فاوست على جبر مخططات الكتل المكون من خمس عمليات تركيب.
مثال على التعليمات البرمجية
تُعرّف برامج FAUST processدالةً تعمل على البيانات الواردة. وهذا يُشابه الدالة mainفي معظم لغات البرمجة. فيما يلي مثال يُنتج صمتًا:
العملية = 0 ؛ينسخ المثال الثاني إشارة الإدخال إلى إشارة الإخراج. ويتضمن ذلك الدالة _الأساسية التي تدل على دالة التطابق للإشارات:
العملية = _ ;مثال آخر هو جمع إشارة ستيريو في إشارة أحادية باستخدام العملية +الأساسية:
العملية = + ;
معظم الدوال الأساسية في FAUST تُشابه نظيراتها في لغة C عند التعامل مع الأرقام، ولكنها مُطبقة على الإشارات. على سبيل المثال، sinتعمل الدالة الأساسية في FAUST على الإشارة X بتطبيق دالة C علىsin كل عينة X[t]. جميع الدوال العددية في C لها نظير في FAUST. بعض الدوال الأساسية لمعالجة الإشارات خاصة بـ FAUST. على سبيل المثال، @يأخذ مُعامل التأخير إشارتين مُدخلتين: X (الإشارة المراد تأخيرها) و D (التأخير المراد تطبيقه)، ويُنتج إشارة مُخرجة Y بحيث Y(t) = X(t − D(t)).
تكوين مخطط الكتلة
على عكس لغات البرمجة المرئية الشبيهة بـ Max حيث يقوم المستخدم بإجراء الاتصالات اليدوية، يتم تجميع العناصر الأولية في FAUST في مخططات كتلية باستخدام مجموعة من عمليات تكوين المخططات الكتلية عالية المستوى .

| f~g | التركيب التكراري (الأولوية 4) |
| و، ز | التركيب المتوازي (الأسبقية 3) |
| f:g | التركيب التسلسلي (الأسبقية 2) |
| f<:g | التأليف المنفصل (الأولوية 1) |
| f:>g | دمج التركيب (الأولوية 1) |
باستخدام عامل التركيب التسلسلي، يمكن توجيه :مخرجات +إلى مدخلات absلحساب القيمة المطلقة للإشارة:
العملية = + : القيمة المطلقة ;إليك مثال على التركيب المتوازي باستخدام ,المؤثر الذي يرتب تعبيراته اليسرى واليمنى بشكل متوازٍ. وهذا يشبه كابل ستيريو.
العملية = _ ، _ ؛يمكن دمج هذه العمليات بشكل عشوائي. الكود التالي يضرب إشارة الإدخال في 0.5:
process = _ , 0.5 : * ;يمكن إعادة كتابة ما سبق بصيغة الكاري :
العملية = * ( 0.5 );يمكن استخدام عامل التركيب التكراري ~لإنشاء مخططات كتلية ذات دورات (تتضمن تأخيرًا ضمنيًا لعينة واحدة). فيما يلي مثال على مُكامل يأخذ إشارة دخل X ويحسب إشارة خرج Y بحيث يكون Y(t) = X(t) + Y(t−1):
العملية = + ~ _ ;إنشاء تطبيقات كاملة
باستخدام ملفات معمارية محددة ، يمكن استخدام برنامج FAUST لإنتاج كود لمجموعة متنوعة من المنصات وتنسيقات المكونات الإضافية. تعمل هذه الملفات المعمارية كأغلفة وتصف التفاعلات مع نظام الصوت وواجهة المستخدم الرسومية المضيف. اعتبارًا من عام 2021يتم دعم أكثر من 30 بنية معمارية، ويمكن لأي شخص تنفيذ بنى معمارية جديدة.

| ملف | بنيان |
|---|---|
| alsa-gtk.cpp | تطبيق ALSA + GTK |
| alsa-qt.cpp | تطبيق ALSA + Qt 4 |
| android.cpp | تطبيقات أندرويد |
| au.cpp | مكون إضافي لوحدة الصوت |
| ca-qt.cpp | تطبيق CoreAudio + Qt 4 |
| ios-coreaudio.cpp | تطبيقات iPhone و iPad |
| jack-gtk.cpp | تطبيق JACK + GTK |
| jack-qt.cpp | تطبيق JACK + Qt 4 |
| ladspa.cpp | إضافة LADSPA |
| max-msp.cpp | إضافة Max MSP |
| pd.cpp | إضافة Pure Data |
| q.cpp | إضافة لغة Q |
| supercollider.cpp | إضافة SuperCollider |
| vst.cpp | إضافة VST |
| vsti-mono.cpp | مكون إضافي أحادي الصوت لآلة VST |
| vsti-poly.cpp | مكون إضافي متعدد الأصوات لآلة VST |
إنشاء مخططات هيكلية
يُتيح خيار مفيد إمكانية إنشاء تمثيل مخطط الكتلة للبرنامج كملف رسومي واحد أو أكثر بصيغة SVG.
من المفيد ملاحظة الفرق بين مخطط الكتلة وشفرة C++ المُولَّدة. الفكرة الأساسية ليست ترجمة مخطط الكتلة حرفيًا، بل ترجمة الدالة الرياضية التي يُمثلها. لا تُترجم مُترجمات C/C++ الحديثة البرامج حرفيًا أيضًا. ولكن نظرًا لتعقيد دلالات C/C++ (بسبب الآثار الجانبية، وتداخل المؤشرات، وما إلى ذلك)، لا يُمكنها المضي قدمًا في هذا الاتجاه. هذه ميزة واضحة للغة وظيفية بحتة: فهي تُتيح للمُترجمات إجراء تحسينات متقدمة للغاية.
دلالات شبيهة بالأسهم
تتشابه دلالات فاوست تقريبًا مع دلالات فئة أنواع الأسهم في هاسكل . ومع ذلك، فإن فئة الأسهم غير مرتبطة بمعالجات الإشارات.
f~g | loop((\(a,b)->(b,a))^>>f>>>id&&&(delay>>>g))لا تُعدّ خاصية where delayطريقةً من Arrowطرق فئة النوع، ولكنها خاصة بأسهم معالجة الإشارات. |
f,g | f***g |
f:g | f>>>g |
f<:g | f>>^h>>>gمع الوظيفة المناسبة h(أو &&&في حالات خاصة) |
f:>g | f>>^h>>>gمع الوظيفة المناسبةh |
تعتبر مُركِّبات Arrow أكثر تقييدًا من نظيراتها في FAUST، على سبيل المثال، يتم الحفاظ على تداخل التركيب المتوازي، ويجب أن تتطابق مدخلات المعاملات &&&تمامًا.
الجوائز
- جائزة العلوم المفتوحة لعام 2022 لبرمجيات البحث مفتوحة المصدر في فئة "التوثيق". [ 2 ]
مراجع
- ↑ "جرام-كنسم: فاوست" . جيثب .
- ↑ "جوائز العلوم المفتوحة لبرمجيات البحث مفتوحة المصدر" . Ouvrir la Science . 2022-02-07 . تم الاطلاع عليه بتاريخ 2025-12-04 .
- ميشون، رومان؛ سميث، يوليوس أو. الثالث (2011). "Faust-STK: مجموعة من النماذج الفيزيائية الخطية وغير الخطية للغة برمجة Faust" (ملف PDF) . وقائع المؤتمر الدولي الحادي عشر حول المؤثرات الصوتية الرقمية (DAFx-11) : 199-204 .
- فوبر، دومينيك؛ أورلاري، يان؛ ليتز، ستيفان (2011). "تصميم بنى فاوست ودعم OSC" (ملف PDF) . وقائع المؤتمر الدولي الحادي عشر حول المؤثرات الصوتية الرقمية (DAFx-11) : 213-216 .
- سميث، يوليوس أو. الثالث؛ ميشون، رومان (2011). "مرشحات السلم غير الخطية ذات التمرير الكامل في فاوست" (ملف PDF) . وقائع المؤتمر الدولي الحادي عشر حول المؤثرات الصوتية الرقمية (DAFx-11) : 361-364 .
- جوفيلو، بيير؛ أورلاري، يان (2011). "أنواع المتجهات التابعة لهيكلة البيانات في فاوست متعدد المعدلات" (ملف PDF) . لغات الحاسوب، والأنظمة، والهياكل . 37 (3): 113-131 . doi : 10.1016/j.cl.2011.03.001 .
- سميث الثالث، يوليوس أو. (2011). "معالجة الإشارات الصوتية في فاوست" (PDF) .
- أورلاري، يان؛ ليتز، ستيفان. فوبر ، دومينيك (2010). "التوازي التلقائي للتطبيقات الصوتية مع فاوست" (PDF) . وقائع Congrès Français d'Acoustique .
- ليتز، ستيفان؛ أورلاري، يان؛ فوبر، دومينيك (2010). "جدولة سرقة العمل للتوازي التلقائي في فاوست" (ملف PDF) . وقائع مؤتمر لينكس الصوتي (LAC-2010) .
- غراف، ألبرت (2010). "امتداد إعادة كتابة المصطلحات للغة برمجة فاوست" (ملف PDF) . وقائع المؤتمر الدولي الثامن لصوت لينكس (LAC-2010) : 117.
- بارتيليمي، جيروم؛ بوناردي، آلان؛ أورلاري، يان؛ ليموتون، سيرج؛ سيافاريلا، رافاييل؛ بركاتي، كريم (2010). "الخطوات الأولى نحو علم آلات الآلات الافتراضية في موسيقى الحاسوب" (ملف PDF) . وقائع المؤتمر الدولي لموسيقى الحاسوب لعام 2010 (ICMA-2010) : 369-372 .
- جوفيلو، بيير؛ أورلاري، يان (2010). "أنواع المتجهات التابعة لـ Faust متعدد المعدلات" (ملف PDF) . وقائع المؤتمر السابع للحوسبة الصوتية والموسيقية (SMC-2010) : 345-352 . مؤرشف من الأصل (ملف PDF) بتاريخ 7 أبريل 2012. تم الاطلاع عليه بتاريخ 11 أكتوبر 2011 .
- أورلاري، يان؛ ليتز، ستيفان؛ فوبر، دومينيك (2009). "إضافة التوازي التلقائي إلى فاوست" (ملف PDF) . وقائع مؤتمر لينكس الصوتي (LAC-2009) .
- جوفيلوت، بيير. أورلاري، يان (2009). “دلالات فاوست المتعددة المعدلات”. التقارير الفنية لمركز البحوث المعلوماتية للمناجم ParisTech (PDF) .
- أورلاري، يان؛ فوبر، دومينيك؛ ليتز، ستيفان (2009). موازاة تطبيقات الصوت باستخدام فاوست (ملف PDF) (تقرير). مؤرشف من الأصل (ملف PDF) بتاريخ 25 أبريل 2012. تم الاطلاع عليه بتاريخ 11 أكتوبر 2011 .
- أورلاري، يان؛ فوبر، دومينيك. ليتز، ستيفان (2009). “فاوست: نهج وظيفي فعال لبرمجة DSP”. النماذج الحاسوبية الجديدة لموسيقى الكمبيوتر (PDF) . طبعة ديلاتور. رقم ISBN 978-2-7521-0054-2.
- أورلاري، يان؛ ليتز، ستيفان؛ فوبر، دومينيك (2008). "تقنيات المعالجات المتعددة في جاك وفاوست" (ملف PDF) . وقائع المؤتمر الدولي للموسيقى الحاسوبية لعام 2010 (ICMC-2008) .
- غراف، ألبرت (2007). "ربط البيانات النقية مع فاوست" (ملف PDF) . وقائع المؤتمر الدولي الخامس لصوت لينكس (LAC2007) : 24.
- سميث الثالث، يوليوس أو. (2007). "الملحق ك. الترشيح الرقمي في فاوست وPD" . مقدمة في المرشحات الرقمية: مع تطبيقات صوتية . دار نشر W3K. الصفحات 417–؟. ISBN 978-0-9745607-1-7.
- غراف، ألبرت؛ كيرستن، ستيفان؛ أورلاري، يان (2006). "برمجة معالجة الإشارات الرقمية باستخدام فاوست، كيو، وسوبر كوليدر" (ملف PDF) . وقائع المؤتمر الدولي الرابع لصوت لينكس (LAC2006) .
- تراوسموث، روبرت؛ دوسيك، كريستيان؛ أورلاري، يان (2006). "استخدام فاوست لبرمجة FPGA" (ملف PDF) . وقائع المؤتمر الدولي التاسع حول المؤثرات الصوتية الرقمية (DAFx-09) .
- أورلاري، يان؛ فوبر، دومينيك؛ ليتز، ستيفون (2005). "عرض توضيحي للغة معالجة الإشارات فاوست" . وقائع المؤتمر الدولي للموسيقى الحاسوبية . المجلد 2005. جمعية الموسيقى الحاسوبية. ص 286.
- أورلاري، يان؛ فوبر، دومينيك؛ ليتز، ستيفان (2004). "الجوانب النحوية والدلالية لرواية فاوست". الحوسبة اللينة (ملف PDF) .
- سكارينجيلا، نيكولاس؛ أورلاري، يان؛ فوبر، دومينيك (2003). "التحويل التلقائي في فاوست" (PDF) . يوم المعلومات الموسيقية (JIM-2003) .
- أورلاري، يان؛ فوبر، دومينيك. ليتز، ستيفان (2002). “نهج جبري لإنشاءات المخططات الكتلية” (PDF) . يوم المعلومات الموسيقية (JIM-2002) .
- أورلاري، يان؛ فوبر، دومينيك؛ ليتز، ستيفان (2002). "جبر للغات مخططات الكتل" (ملف PDF) . وقائع المؤتمر الدولي للموسيقى الحاسوبية (ICMA-2002) .
روابط خارجية
- الموقع الرسمي ، والمترجم الإلكتروني، والدعم، والوثائق، والأخبار، إلخ.
- فاوست على جيت هاب
- لغات البرمجة الصوتية
- لغات البرمجة التي تم إنشاؤها في عام 2002
