Skip to content

Latest commit

 

History

History
82 lines (47 loc) · 7.11 KB

README.ar.md

File metadata and controls

82 lines (47 loc) · 7.11 KB

مقدمة

هذا المشروع عبارة عن تطبيق ويب web application للوحة مفاتيح موسيقية قادرة على عزف المقامات الموسيقية الشرقية (او تجاوزا، العربية).

يمكن اعتباره ايضا محاولة لاحياء المقامات الحقيقية بابعادها الرياضية الاصلية، لا الابعاد المزيفة المبنية على التون الغربي الحديث.

بدأ المشروع كمحاولة لانشاء "كيبورد" موسيقي صالح لعزف المقامات عن طريق اضافة نغمات الـ "ثلاثة ارباع تون" الى البيانو، ثم حين توسعت اكثر في القرائة عن السلالم الموسيقية اكتشفت ان النظام الحديث اللذي يقسم الاوكتيف الى 24 ربع تون هو مجرد محاولة تقريبية للوصول الى سلالم المقامات العربية، و تعرفت على النظام التركي اللذي يقسم السلم الى 53 فاصلة او كوما، فقمت بتطوير الموقع و استخدمت نظام الكوما لبناء السلم بدل النظام الغربي.

ثم توسعت أكثر في القرائة و تعرفت على الاصول الرياضية النظرية لاستخراج الابعاد الموسيقية و قياسها عن طريق النسب مثل نسبة 2:1 للديوان او الاوكتيف، و نسبة 3:2 للنغمة الخامسة، و هكذا.

فقمت ببحث مطول و خرجت بنظرية تحاول جمع الافكار المتناثرة في النظريات الموسيقية و موائمتها مع الممارسة العملية للعازفين و الموسيقيين، و خلاصة هذه النظرية هي:

تقسيم السلم الموسيقي الى جنسين، حيث الجنس هو سلم موسيقي مصغر يتكون من اربعة نغمات. بداية الجناس الثاني تبعد عن بداية الجناس الاول بنسبة 3:2 و يمكن اعتبار اول نغمة في الجنس الثاني هي بمثابة خامس نغمة في الجنس الاول. يمكن اضافة جنس ثالث لكي يتجاوز السلم حدود الديوان او الاوكتيف، و في تلك الحالة سنحافظ على المسافة بين الاجناس، فتكون اول نغمة في الجنس الثالث على بعد 3:2 من اول نغمة في الجنس الثاني.

اول نغمة في الجنس ثابتة،

ثاني نغمة في الجنس اما ان تكون "نصف تون" فتكون على نسبة 16:15 من النغمة الاولى

او ان تكون البعد الثاني الوسطي او ما يعرف بثلاثة ارباع التون، فتكون على نسبة 12:11 من النغمة الاولى

او تكون البعد الطنيني اي على نسبة 9:8 من النغمة الاولى

فهذه ثلاثة خيارات للنغمة الثانية.

النغمة الثالثة فيها الخيارات التالية:

البعد الثالث الصغير، و هو بنسبة 6:5 من النغمة الاولى البعد الثالث الكبير، و هو بنسبة 5:4 من النغمة الاولى البعد الثالث المتوسط، و هو بنسبة 11:9 من النغمة الاولى

النغمة الرابعة فيها خيارين:

البعد الرابع الناقص، و يكون باضافة نصف تون الى البعد الثالث الصغير، و نسبته 32:25 البعد الرابع العادي، و نسبته 4:3

و بهذا التقسيم يمكن استخراج جميع الاجناس المستعملة في الموسيقى العربية.

على سبيل المثال، جنس العجم: طنيني، ثالث كبير، رابع عادي و ابعاده: طنيني، شبه طنيني، نصف تون

جنس الصبا: ثاني وسطي، ثالث صغير، رابع ناقص و ابعاده: وسطي، شبه وسطي، نصف تون

جنس البياتي: ثاني وسطي، ثالث صغير، رابع عادي و ابعاده: وسطي، شبه وسطي، شبه طنيني

جنس الحجاز: نصف تون، ثالث كبير، رابع عادي و ابعاده: نصف تون، بعد لين، نصف تون

و هكذا.

بعض الاجناس لا نعتبرها اجناس رئيسية مثل جنس الرست و السيكاه، فهي مشتقة عن جنس البياتي بأن يبدأ السلم من مكان مختلف - فهذه الأجناس لم اهتم لها في نظريتي، و لكني في هذا التطبيق وضعت جنس الرست لانه مشهور و عدم وضعه قد يسبب بعض الحيرة لبقية الناس.

طريقة الاستخدام

يتم العزف من خلال الكيبورد على الكومبيوتر بحيث كل زر في لوحة مفاتيح الكومبيتر تقابل زرا في لوحة المفاتيح الموسيقية على الشاشة. لوحة المفاتيح مقسمة الى ثلاثة اسطر (لتوائم لوحة مفاتيح الكومبيوتر) كل سطر يمثل ديوان (اوكتيف) اضافة الى مفاتيح قليلة من الديوان السابق و مفاتيح من الديوان اللاحق لتسهيل عملية الانتقال بين الاوكتيفات.

تضبيط السلم الموسيقي يتم عن طريق تحديد:

  • الجنس الأول
  • الجنس الثاني
  • نغمة البداية

تحديد الاجناس يتم من خلال ازرار الاجناس فوق لوحة المفاتيح.

تحديد نغمة البداية يتم من خلال قائمة على اليمين.

هناك على اليمين ايضا قائمة بمقامات معدة مسبقا بحيث اذا ضغطت على زر المقام يقوم تلقائيا بتضبيط الجنس الاول و الثاني، و اذا ضغطت على نغمة البداية بجانب زر المقام سيقوم ايضا بتضبيط نغمة البداية.

معلومات تقنية

الكود اللذي يقوم بمحاكاة صوت اوتار العود موجود في الملف: client/synth.coffee حيث بنيت عملية المحاكاة هذه على الطريقة المعروفة بـ Karplus-Strong و هما العالمين اللذين توصلوا لهذه الطريقة في محاكاة اصوات الالات الوترية.

حساب النسبة الرياضية موجود في الملف client/ratios.js

تحديد الأجناس و السلالم بنظام الكوما موجود في الملف client/maqam.coffee

واجهة الموقع مبنية باستخدام الفريموورك Knockout.js و هو اطار عمل ممتاز و عبقري لصنع واجهات ديناميكية.

الملف templates/keyboard.html يحتوي على الكود اللذي يبني لوحة المفاتيح على الشاشة، و الملف client/keyboard.js يحتوي على الـ ViewModels اللتي تمثل لوحة المفاتيح و تحدد طريقة عمله.