سوبر كوليدر

SuperCollider هي لغة برمجة بيئية وصوتية تم إصدارها في الأصل عام 1996 بواسطة جيمس مكارتني لتوليف الصوت في الوقت الحقيقي والتأليف الخوارزمي . [ 4 ] [ 5 ]

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

تم إصدار SuperCollider في الأصل بموجب شروط GPL-2.0-or-later في عام 2002، ومن الإصدار 3.4 بموجب GPL-3.0-or-later ، وهو برنامج مجاني ومفتوح المصدر .

بنيان

ابتداءً من الإصدار 3، تم تقسيم بيئة SuperCollider إلى مكونين: خادم ، scsynth ؛ وعميل ، sclang . يتواصل هذان المكونان باستخدام بروتوكول OSC ( التحكم الصوتي المفتوح ). [ 6 ]

تجمع لغة SC بين بنية Smalltalk الموجهة للكائنات وميزات لغات البرمجة الوظيفية مع بناء جملة من عائلة C. [ 6 ]

يدعم تطبيق خادم SC واجهات برمجة تطبيقات بسيطة للغتين C وC++ ، مما يُسهّل كتابة خوارزميات صوتية فعّالة ( مولدات الوحدات )، والتي يمكن دمجها لاحقًا في رسوم بيانية للحسابات. ولأن جميع عمليات التحكم الخارجية في الخادم تتم عبر بروتوكول OSC، فمن الممكن استخدامه مع لغات أو تطبيقات أخرى. [ 6 ]

خادم توليف SuperCollider ( scsynth )

يتم تجميع نظام توليد الصوت في SuperCollider ضمن ملف تنفيذي مُحسَّن يعمل عبر سطر الأوامر (يُسمى scsynth ). في معظم الحالات، يتم التحكم به من داخل لغة برمجة SuperCollider، ولكن يمكن استخدامه بشكل مستقل. يتميز خادم الصوت بالميزات التالية: [ 6 ]

  • الوصول إلى نظام التحكم بالصوت المفتوح
  • واجهات برمجة تطبيقات بسيطة لـ ANSI C و C++11
  • يدعم أي عدد من قنوات الإدخال والإخراج، بما في ذلك الإعدادات متعددة القنوات بشكل كبير [ 7 ]
  • يُتيح الوصول إلى بنية شجرية مُرتبة لعُقد التركيب التي تُحدد ترتيب التنفيذ
  • نظام ناقل يسمح بإعادة هيكلة تدفق الإشارة ديناميكيًا
  • مخازن مؤقتة للكتابة والقراءة
  • يتم الحساب بمعدلات مختلفة حسب الاحتياجات: معدل الصوت، معدل التحكم، معدل الطلب

Supernova، وهو تطبيق مستقل لبنية الخادم، [ 8 ] يضيف دعمًا متعدد المعالجات من خلال التجميع المتوازي الصريح لعقد التركيب.

لغة برمجة SuperCollider ( sclang )

لغة البرمجة SuperCollider هي لغة وظيفية كائنية التوجه، ذات كتابة ديناميكية ، وذاكرة مُجمّعة ، ووراثة أحادية ، تشبه لغة Smalltalk ، [ 5 ] ولها بنية مشابهة للغتي Lisp أو C. تُحقق بنيتها توازنًا بين متطلبات الحوسبة الآنية ومرونة وبساطة اللغة المجردة. وكما هو الحال في العديد من اللغات الوظيفية، تُنفذ SuperCollider الدوال ككائنات من الدرجة الأولى، والتي يمكن تركيبها . يمكن أن تحتوي الدوال والأساليب على قيم وسيطات افتراضية وقوائم وسيطات متغيرة الطول، ويمكن استدعاؤها بأي ترتيب لوسائط الكلمات المفتاحية. الإغلاقات معجمية، والنطاق معجمي وديناميكي. تدعم SuperCollider ميزات أخرى نموذجية للغات الوظيفية، بما في ذلك إنشاء الإغلاقات عبر التطبيق الجزئي ( التطبيق الجزئي الصريح )، وتحسين استدعاء الذيل ، وفهم القوائم ، والروتينات الفرعية . تشمل الخصائص المميزة التوسيع الضمني للصفوف ونظام الأنماط عديم الحالة. يُتيح البحث عن الرسائل في الوقت الثابت وجمع البيانات المهملة في الوقت الحقيقي للأنظمة الكبيرة أن تكون فعالة وأن تتعامل مع معالجة الإشارات بمرونة. [ 6 ]

بفضل دعمه لأساليب البرمجة التأملية والحوارية والكتابية ، يُسهّل SuperCollider إيجاد خوارزميات صوتية جديدة [ 9 ] وتطوير برامج وأطر عمل مخصصة. أما فيما يتعلق بالمعرفة الخاصة بالمجال، فهي عامة (على سبيل المثال، تسمح بتمثيل خصائص مثل الزمن ودرجة الصوت بدرجات متفاوتة من التجريد) وتحتوي على العديد من الأمثلة التطبيقية لأغراض محددة. [ 6 ]

نظام واجهة المستخدم الرسومية

لقطة شاشة لبرنامج SuperCollider أثناء تشغيل أدوات واجهة المستخدم الرسومية ixiQuarks.

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

الربط ودعم النظام

العملاء

نظرًا لأن الخادم يُتحكم به باستخدام بروتوكول التحكم الصوتي المفتوح (OSC)، يمكن استخدام مجموعة متنوعة من التطبيقات للتحكم فيه. تُستخدم عادةً بيئات لغة SuperCollider (انظر أدناه)، ولكن يمكن استخدام أنظمة أخرى تدعم بروتوكول OSC مثل Pure Data . [ 6 ]

توجد برامج عميل خارجية لخادم SuperCollider، منها rsc3 ( برنامج عميل Scheme ) ، وhsc3 ( برنامج عميل مبني على Haskell) ، وScalaCollider ( برنامج عميل مبني على Scala) ، وOvertone (برنامج عميل مبني على Clojure) ، و Sonic Pi . [ 12 ] وتختلف هذه البرامج عن بيئات التطوير المذكورة أدناه لأنها لا توفر واجهة للغة برمجة SuperCollider، بل تتواصل مباشرةً مع خادم الصوت، وتوفر أساليبها الخاصة لتسهيل تفاعل المستخدم. [ 6 ]

أنظمة التشغيل المدعومة

لقطة شاشة لبرنامج SuperCollider على نظام التشغيل Mac OS X مع عناصر واجهة المستخدم الرسومية المختلفة التي أنشأها المستخدمون.

يعمل برنامج SuperCollider على أنظمة macOS و Linux و Windows و FreeBSD . ولكل نظام من هذه الأنظمة، توجد بيئات تحرير لغات متعددة وبرامج عميل يمكن استخدامها مع SuperCollider (انظر أدناه). [ 6 ]

وقد ثبت أيضاً أن SuperCollider يمكن تشغيله على نظامي Android [ 13 ] و iOS [ 14 ] .

بيئات التحرير

لقطة شاشة لبرنامج SuperCollider Vim على نظام التشغيل Puredyne Linux .

يتم تحرير واستخدام كود SuperCollider في أغلب الأحيان من داخل بيئة التطوير المتكاملة الخاصة به متعددة المنصات، والتي تعتمد على Qt وتدعم أنظمة Linux وMac وWindows.

تشمل بيئات التطوير الأخرى التي تدعم SuperCollider ما يلي:

أمثلة على التعليمات البرمجية

// تشغيل مزيج من الضوضاء الوردية ونغمة جيبية بتردد 800 هرتز { SinOsc.ar ( 800 , 0 , 0.1 ) + PinkNoise.ar ( 0.01 ) } .play ;// تعديل تردد النغمة الجيبية وسعة إشارة الضوضاء بإشارة جيبية أخرى، // يعتمد ترددها على الموضع الأفقي لمؤشر الفأرة ( { var x = SinOsc . ar ( MouseX . kr ( 1 , 100 )); SinOsc . ar ( 300 * x + 800 , 0 , 0.1 ) + PinkNoise . ar ( 0.1 * x + 0.1 ) }. play ; )
// تكرار القائمة: ضرب عناصر المجموعة بمؤشراتها [ 1 ، 2 ، 5 ، 10 ، -3 ] .collect { | elem , idx | elem * idx };
// دالة المضروب f = { | x | إذا كان ( x == 0 ) { 1 } { f .( x - 1 ) * x } };
// «محاكاة Pan Sonic - Katodivaihe - lahetys» - Miguel Negrão ( { var a , b , c , d , n , e , f , out ;a = Impulse . ar ( 8 ) * 1.5 ;b = WhiteNoise.ar * Env ( [ 1.0 , 1.0 , 0.0 ] , [ 0.01 , 0.01 ] , \ step ) .ar ( 0 , Impulse.ar ( 1 ) ) ; b = FreeVerb.ar ( b , 0.5 , 0.4 ) * 2.5 ;c = SinOsc.ar ( 40 ) * Env.perc ( 0.01 , 0.2 ) .ar ( 0 , TDuty.ar ( Dseq ( [ 1/4 , 1/2 , 1/8 , 1/8 ] , inf ) ) ) ; 5.do { c = ( c.distort + c ) * 0.75 } ; c = c * 1.5 ;د = LPF . ar ( Saw . ar ([ 20 , 47 ]). sum , XLine . ar ( 4000 , 200 , 0.5 )) * Env . الايثيلين . ع ( 0 , دفعة . ع ( 1 / 16 )) * 0.5 ; d = ( GVerb .ar ( d , حجم الغرفة : 10 , وقت المراجعة : 6 ) * 200 ) . مقطع ( - 1.0 , 1.0 ) * 0.3 ;ن = 12 ؛ e = ( Saw .ar ( 40 * ( 1 .. n ) * ({ LFNoise1 .ar ( 0.1 ). range ( 1 , 1.01 ) } ! n ) ) * ({ LFNoise1 .ar ( 0.1 ) . range ( 0.0 , 1.0 ) } ! n ) ) . المبلغ * 10 ; ه = كومبك . ع ( ه , 0.1 , 0.1 , 4 ) + ه ; ه = ه . تانه * 0.3 * سين أوسك . ع ( 0.05 ). النطاق ( 0.5 ، 1.0 ه = ه . خدعة ; e = e * SinOsc . ع ( 0.03 ). النطاق ( 0.2 ، 1.0 ) * 0.5 ؛f = Blip.ar ( 100 ) * Blip.ar ( 100 ) * Env ( [ 0.0 , 0.0 , 1.0 ], [ 8 , 8 ] , [ \ step , \ linear , \ step ] ) . ar ( 0 , Impulse.ar ( 1/16 ) ) * 2 ;الناتج = (( أ + ب + ج + و ) ! 2 ) + د + هـ ؛ الناتج = الناتج * 0.2}. يلعب )

البرمجة المباشرة

باعتبارها لغة برمجة ديناميكية متعددة الاستخدامات ، يمكن استخدام SuperCollider للبرمجة المباشرة ، أي العروض التي يقوم فيها المؤدي بتعديل وتنفيذ التعليمات البرمجية أثناء التشغيل. [ 18 ] تعمل أنواع محددة من الوكلاء كعناصر نائبة عالية المستوى لكائنات التوليف، والتي يمكن استبدالها أو تعديلها أثناء التشغيل. تسمح البيئات بمشاركة وتعديل الكائنات وتصريحات العمليات عبر الشبكات. [ 19 ] تدعم مكتبات الامتداد المختلفة تجريدًا مختلفًا ووصولًا إلى كائنات الصوت، على سبيل المثال، مكتبة dewdrop_lib [ 20 ] التي تسمح بإنشاء وتعديل الفئات والكائنات الزائفة أثناء التشغيل.

انظر أيضاً

مراجع

  1. "الإصدارات" . جيت هاب . تم الاطلاع عليه بتاريخ 26 يوليو 2025 .
  2. asynth. "SuperCollider" . تم الاطلاع عليه بتاريخ 20 يونيو 2015 .
  3. "ترخيص SuperCollider" . مؤرشف من الأصل بتاريخ 2020-08-07.
  4. J. McCartney, SuperCollider: A new real time synthesis language , in Proc. International Computer Music Conference (ICMC'96), 1996, pp. 257–258.
  5. 1 2 ج. مكارتني، إعادة التفكير في لغة موسيقى الكمبيوتر: سوبر كوليدر ، مجلة موسيقى الكمبيوتر، 26 (2002)، ص 61-68.
  6. 1 2 3 4 5 6 7 8 9 سكوت ويلسون؛ ديفيد كوتل؛ نيك كولينز (2011). كتاب المصادم الفائق . مطبعة معهد ماساتشوستس للتكنولوجيا. ISBN 978-0-262-23269-2أُرشف من المصدر الأصلي بتاريخ 1 مايو 2011. تم الاطلاع عليه بتاريخ 26 مايو 2011 .
  7. "قوائم بريدية خاصة بمشروع سوبر كوليدر" . مؤرشف من الأصل بتاريخ 6 نوفمبر 2009. تم الاطلاع عليه بتاريخ 20 يونيو 2015 .
  8. T. Blechmann, supernova, a multiprocessor-aware synthesis server for SuperCollider , Proceedings of the Linux Audio Conference, Utrecht 2010.
  9. ج. روهروبير، أ. دي كامبو، وريناته ويزر. خوارزميات اليوم. ملاحظات حول تصميم اللغة لبرمجة الوقت المناسب. مؤرشف في 28 يوليو 2011 على موقع Wayback Machine . في وقائع المؤتمر الدولي للموسيقى الحاسوبية ، برشلونة، 2005.
  10. توفر فئة Pen واجهة الرسومات المتجهة. يمكن الاطلاع على أمثلة متنوعة في قسم " الوسائط السمعية والبصرية مع SC" ( مؤرشف بتاريخ 9 يونيو 2020 على موقع Wayback Machine) ، مدونة فريدريك أولوفسون، 2 مايو 2009 (تم تحديثها في 11 مايو 2012).
  11. روتز، إتش إتش (2010). "إعادة التفكير في عميل سوبر كوليدر...". وقائع ندوة سوبر كوليدر . برلين. CiteSeerX 10.1.1.186.9817 . 
  12. "الأنظمة المتصلة بـ SC" . مؤرشف من الأصل في 23 أكتوبر 2013. تم الاطلاع عليه في 20 يونيو 2015 .
  13. مشروع SuperCollider لنظام Android على GitHub
  14. نظام موسيقي صغير - مدونة سايلوب، 04.11.2009
  15. "SuperCollider مع emacs: scel" . مؤرشف من الأصل في 5 يونيو 2012. تم الاطلاع عليه في 20 يونيو 2015 .
  16. "المصادم الفائق" . أتوم . تم الاسترجاع في 20 يونيو 2015 .
  17. "jleben/Scate" . GitHub . 13 نوفمبر 2013. تم الاطلاع عليه في 20 يونيو 2015 .
  18. كولينز، ن.، ماكلين، أ.، روهروبير، ج.، وورد، أ. (2003)، تقنيات البرمجة الحية لأداء الحاسوب المحمول، الصوت المنظم 8(3): ص 321-330. doi : 10.1017/S135577180300030X
  19. ج. روهروبير وأ. دي كامبو. الانتظار وعدم اليقين في شبكات الموسيقى الحاسوبية. مؤرشف بتاريخ 14 مارس 2006 في أرشيف الإنترنت . في وقائع المؤتمر الدولي للموسيقى الحاسوبية ، ميامي، 2004.
  20. إحدى المكتبات العديدة التي ساهم بها المستخدمون والمعروفة باسم "Quarks"، والمنشورة في مستودع SuperCollider Quarks .