حاسبة انقلاب الأوتار
تستقبل حاسبة انقلاب الأوتار نغمات مرتبة مسبقاً في الوضع الأساسي، ثم تضعها بالترتيب الموافق للانقلاب المختار.
شغّل الأداة مجانًا
استخدموا الصفر للإبقاء على الترتيب الأصلي، والواحد للانقلاب الأول، والاثنين للانقلاب الثاني، وهكذا. تحافظ الأداة على كل تسمية كما أُدخلت تماماً، بما في ذلك علامات الرفع والخفض وأرقام الطبقات والكتابات المخصصة. وهي تطبق تدويراً حتمياً من دون تخمين أسماء الأوتار أو النظائر الإنهارمونية، ولذلك تناسب الدروس والتمارين ومسارات برمجيات الموسيقى.
أدخلوا نغمات الوتر بترتيب الوضع الأساسي
ابدؤوا بقائمة مرتبة للنغمات التي تكوّن الوتر. ففي ثلاثي دو الكبير تكون القائمة C وE وG، وفي وتر صول السابع المسيطر قد تكون G وB وD وF. الترتيب مهم لأن الحاسبة تعدّ العنصر الأول نغمة الجهير في الوضع الأساسي، وتنقل النغمات من بداية القائمة إلى نهايتها. لا تحلل الأداة رمز الوتر، ولا تستنتج نغمة ناقصة، ولا تزيل التكرارات، ولا تقرر ما إذا كانت كتابتان متعادلتين إنهارمونياً. تجعل هذه القاعدة المقصودة العملية قابلة للتوقع في تمارين النظرية والبرمجيات. تبقى التسميات كما قُدمت تماماً، بما فيها F# وGb وC4 أو أي ترميز خاص بتطبيقكم. يجب أن يكون كل عنصر نصاً غير فارغ، لكنه لا يحتاج إلى اتباع نظام تدوين بعينه. تحققوا قبل الإرسال من أن القائمة تمثل ترتيب الوضع الأساسي المقصود. إذا بدأتم بتوزيع مقلوب أصلاً فستظل النتيجة تدويراً صالحاً، غير أن رقم الانقلاب سيكون محسوباً نسبة إلى الترتيب المدخل، لا إلى جذر اكتشفته الأداة بصورة مستقلة.
اختاروا رقم الانقلاب ابتداءً من الصفر
يحدد رقم الانقلاب عدد النغمات التي تنتقل من بداية الوتر إلى نهايته. لا ينقل الصفر شيئاً، بل يعيد نسخة من الترتيب الأصلي. وينقل الرقم واحد النغمة الأولى خلف بقية النغمات، فتتحول C وE وG إلى E وG وC. أما الرقم اثنان فينقل أول نغمتين، فتكون النتيجة G وC وE. يتيح وتر السابعة أربعة اختيارات صالحة من الصفر إلى الثلاثة، بينما يتيح الوتر المؤلف من خمس نغمات القيم من الصفر إلى الأربعة. يجب أن يكون الرقم عدداً صحيحاً غير سالب وأصغر من عدد النغمات. لذلك يرفض الوتر الثلاثي الرقم ثلاثة، لأن نقل النغمات الثلاث كلها يعيد الوضع الأساسي ولا يصنع انقلاباً مختلفاً. يكشف هذا التحقق أيضاً أخطاء الفهرسة الشائعة. لا تغير العملية إلا الترتيب؛ فهي لا تضيف أرقام الطبقات ولا ترفع النغمات المنقولة تلقائياً بمقدار اثنتي عشرة نصف درجة. إذا كان المجال الصوتي مهماً، ففسروا كل نغمة منقولة على أنها أعلى من النغمات المتبقية، أو أدخلوا تسميات طبقات صريحة تعبر عن الاصطلاح المطلوب.
استخدموا النغمات المعاد ترتيبها في التدريب والبرمجيات
تتضمن الاستجابة النغمات المعاد ترتيبها في مصفوفة JSON، مما يسهل عرضها أو حفظها أو مقارنتها أو تمريرها إلى أداة موسيقية أخرى. يستطيع المعلمون إنشاء مفاتيح إجابة لتمارين الانقلابات من دون إعادة كتابة كل وتر يدوياً. ويستطيع الطلاب التحقق من مطابقة نغمة الجهير والتسلسل المتبقي للانقلاب الأول أو الثاني أو انقلاب لاحق. ويمكن للموزعين استكشاف ترتيب النغمات قبل اختيار توزيع قابل للعزف، كما يستطيع المطورون دمج النتيجة الحتمية في مخططات الأوتار أو خطوات إعداد MIDI أو واجهات تحليل التتابعات. تذكروا أن الانقلاب ليس وصفة كاملة للتوزيع الصوتي؛ فقد تضاعف الآلة بعض النغمات أو تحذفها، أو توزعها على طبقات متعددة، أو تغير ترتيب الأصوات الداخلية مع إبقاء فئة الجهير نفسها. تجيب الحاسبة عن السؤال الأضيق المتعلق بالترتيب الدوري، ولذلك تتجنب الافتراضات الخاصة بآلة معينة. تنتج المدخلات نفسها المخرجات ذاتها دائماً، بلا اتصال بالشبكة أو عشوائية أو قاموس أوتار. يناسب المتصفح الحسابات الفردية، وتبلغ كلفة الأتمتة عبر API مقدار $0.002 لكل طلب.
حالات الاستخدام
إنشاء تمارين في نظرية الموسيقى
أنشئوا قوائم متسقة للنغمات المعاد ترتيبها من أجل الأسئلة وأوراق العمل ومفاتيح الإجابة الخاصة بالانقلابات.
التحقق من إجابات التدريب
قارنوا الانقلاب الذي يقترحه الطالب بترتيب النغمات الحتمي للرقم المطلوب.
تغذية واجهات الأوتار
مرروا النغمات المعاد ترتيبها إلى المخططات أو معاينات التدوين أو منطق التوزيع الآلي اللاحق.
الأسئلة الشائعة
كيف تُحسب أرقام الانقلاب؟
يبدأ العد من الصفر: الصفر هو الوضع الأساسي، والواحد هو الانقلاب الأول، والاثنان هو الانقلاب الثاني، وهكذا.
ماذا يحدث للنغمات عند طلب انقلاب؟
ينتقل العدد المطلوب من النغمات من بداية المصفوفة إلى نهايتها مع الحفاظ على ترتيبها النسبي.
هل يمكن أن يساوي رقم الانقلاب عدد النغمات؟
لا. يجب أن يكون أصغر منه، لأن نقل جميع النغمات سيكرر الترتيب الأصلي فحسب.
هل تتعرف الحاسبة على رموز الأوتار أو تصحح الكتابة؟
لا. فهي تعمل فقط على النغمات المرتبة التي تقدمونها وتحافظ على كتابتها كما هي تماماً.
هل تعين الحاسبة طبقات للنغمات المنقولة؟
لا. تعيد ترتيب النغمات فقط، وتترك لكم تحديد الطبقات والتوزيع الخاص بالآلة.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/hobby/chord-inversion \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"notes":["C","E","G"],"inversion":1}'const res = await fetch("https://api.kit.forhosting.com/hobby/chord-inversion", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"notes": [
"C",
"E",
"G"
],
"inversion": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/hobby/chord-inversion",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"notes": [
"C",
"E",
"G"
],
"inversion": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/hobby/chord-inversion", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"notes":["C","E","G"],"inversion":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"notes":["C","E","G"],"inversion":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/hobby/chord-inversion", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"notes": [
"C",
"E",
"G"
],
"inversion": 1
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.chord_inversion",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |