حاسبة تحويل التردد إلى رقم نغمة MIDI بالهرتز
تحوّل هذه الحاسبة التردد الموجب بالهرتز إلى أقرب رقم صحيح لنغمة MIDI. وهي تستخدم السلم المتساوي ذي الاثنتي عشرة نغمة مع تثبيت A4 عند 440 هرتز؛ لذلك يقابل A4 الرقم MIDI 69، وتغيّر كل أوكتاف النتيجة بمقدار اثنتي عشرة نغمة.
شغّل الأداة مجانًا
تعرض النتيجة، إلى جانب الرقم المدوّر، قيمة MIDI المستمرة والتردد الدقيق للنغمة المختارة والفرق بالسنت. الحساب حتمي ولا يحتاج إلى شبكة، ويرفض القيم الواقعة خارج نطاق MIDI المعتاد من 0 إلى 127.
فهم العلاقة بين التردد وMIDI
ترتّب أرقام نغمات MIDI الدرجات اللونية على مقياس بسيط من الأعداد الصحيحة. فالدو الأوسط هو MIDI 60، وA4 هو MIDI 69، وإضافة أوكتاف واحد ترفع الرقم بمقدار اثني عشر. لكن التردد لا يزداد بعدد ثابت من الهرتز بين النغمات، بل ينمو هندسيًا. يقسم السلم المتساوي كل أوكتاف إلى اثنتي عشرة نسبة تردد متساوية، بحيث تضرب كل نصف درجة التردد في الجذر الثاني عشر للعدد اثنين. تعكس هذه الحاسبة تلك العلاقة؛ فهي تقسم التردد المدخل على 440، وتحسب اللوغاريتم للأساس اثنين، ثم تضرب في اثني عشر وتضيف 69. تصف القيمة المستمرة الناتجة موضع المدخل بدقة على مقياس طبقة MIDI. ويؤدي تدويرها إلى أقرب عدد صحيح إلى رقم نغمة MIDI الأقرب. فمثلًا ينتج 440 هرتز الرقم 69 تمامًا، بينما ينتج 880 هرتز الرقم 81 لأنه أعلى بأوكتاف واحد. تحتفظ الاستجابة بالعدد الصحيح المدوّر وبقيمة مستمرة من عشر منازل عشرية، وهذا مفيد عندما تحتاجون إلى مفتاح محدد وإلى معرفة موضع القياس بين مفتاحين. ثُبّت المرجع عمدًا عند A4 مساويًا 440 هرتز، لكي يحصل جميع المستخدمين على الإجابة نفسها من دون أن يغيّر مرجع ضبط اختياري معنى النتيجة.
قراءة أقرب نغمة وفرق الطبقة
أدخلوا ترددًا موجبًا ومحدودًا بالهرتز في الحقل frequency. وتُقبل أيضًا التسميتان البديلتان frequency_hz وhz لتسهيل دمج بيانات القياس. النتيجة الأساسية midi_note_number هي عدد صحيح من 0 إلى 127. يحتوي exact_midi_note_number على القيمة قبل التدوير، بينما يمثل nearest_frequency_hz تردد السلم المتساوي الذي يطابق عدد MIDI الصحيح المختار عند مرجع 440 هرتز. يصف cents_difference المسافة المتبقية: تعني القيمة الموجبة أن تردد المدخل أحدّ من النغمة المختارة، وتعني القيمة السالبة أنه أخفض منها. يساوي 100 سنت نصف درجة في السلم المتساوي، ولذلك يقع فرق أقرب نغمة عادة بين نحو سالب خمسين وموجب خمسين سنتًا. عند نقطة منتصف دقيقة تُطبق قاعدة التدوير القياسية في JavaScript لكي يبقى التنفيذ قابلًا للتكرار. تكرر الاستجابة أيضًا reference_frequency_hz بالقيمة 440 وتحدد نوع السلم، حتى لا يخلط برنامج لاحق النتيجة بضبط تاريخي أو تنغيم خالص. تُرفض القيم المفقودة والصفر والسوالب واللانهاية والنصوص غير الرقمية، وكذلك الترددات التي ينتج تدويرها رقمًا خارج نطاق MIDI المعتاد. الرفض أفضل من الحصر الصامت، لأن تحويل تردد متطرف إلى النغمة 0 أو 127 سيشوّه القياس وقد يخفي خطأ سابقًا في وحدة الإدخال.
استخدام التحويل في مسارات الصوت والقياس
تلائم الحاسبة الحالات التي يقيس فيها نظام التردد أو يخزنه بينما يحتاج مكوّن آخر إلى أرقام نغمات MIDI. يمكن لبرنامج تحليل صوتي تحويل قمة طيفية مكتشفة إلى رقم مفتاح قبل عرضها في واجهة موالف. ويمكن لاختبار آلة توليف التأكد من أن المذبذب المضبوط على 440 هرتز يقابل النغمة 69، ثم تكرار الاختبار عبر الأوكتافات لاكتشاف أخطاء جداول الضبط. تربط تمارين المختبر والتعليم بين اللوغاريتمات ونسب التردد واتفاقية ترقيم MIDI من دون الاعتماد على جدول جاهز. كما يستطيع منظمو مكتبات العينات اشتقاق نغمة جذر متسقة من التردد الأساسي المقاس، مع الاحتفاظ بالحقل cents_difference لتقرير ما إذا كانت العينة تحتاج إلى إعادة ضبط قبل توزيعها على لوحة المفاتيح. ينبغي تطبيق الحساب على التردد الأساسي لا على أي قمة طيفية عشوائيًا، لأن التوافقيات القوية قد تقابل أرقام MIDI أخرى رغم أن الطبقة المسموعة أخفض. لا تكتشف الأداة الطبقة من ملف صوتي، ولا تسمّي النغمات، ولا تختار بين الكتابات المتعادلة؛ بل تستقبل ترددًا مقاسًا مسبقًا وتعيد رقمًا. الاستخدام التفاعلي في المتصفح مجاني، بينما تبلغ كلفة طلب API الآلي $0.002. يستخدم المساران الحساب الحتمي نفسه من دون خدمة خارجية أو عشوائية أو حالة زمنية، ولذلك تصلح النتيجة للاختبارات القابلة للتكرار والتعليم وإعداد البيانات الوصفية ومسارات التحقق.
حالات الاستخدام
مخرجات كاشف الطبقة
حوّلوا ترددًا أساسيًا مقاسًا إلى أقرب رقم MIDI لاستخدامه في موالف أو عارض أو تطبيق موسيقي.
بيانات العينات الوصفية
قدّروا نغمة الجذر MIDI لعينة وافحصوا فرق السنت قبل تعيين توزيعها على لوحة المفاتيح.
اختبار المذبذبات
أنشئوا اختبارات قابلة للتكرار للتأكد من مطابقة ترددات السلم المتساوي المعروفة لأعداد MIDI المتوقعة.
الأسئلة الشائعة
ما الصيغة التي تحوّل التردد إلى رقم نغمة MIDI؟
القيمة المستمرة هي 69 + 12 × log2(frequency / 440). ورقم MIDI الأقرب هو هذه القيمة بعد تدويرها إلى أقرب عدد صحيح.
ما رقم نغمة MIDI للتردد 440 Hz؟
يقابل 440 Hz الرقم MIDI 69 تمامًا، لأنه مرجع A4 الذي تستخدمه هذه الحاسبة.
هل يمكن استخدام مرجع غير 440 Hz؟
لا. ثُبّتت هذه القدرة عمدًا عند 440 Hz لكي تحمل نتائجها تفسيرًا واحدًا ومستقرًا.
لماذا تتضمن الاستجابة فرقًا بالسنت؟
يبين مقدار ارتفاع المدخل أو انخفاضه عن أقرب نغمة MIDI في السلم المتساوي؛ الموجب أحدّ والسالب أخفض.
ما كلفة الحساب عبر API؟
يستخدم كل طلب API السعر الأساسي المنشور $0.002. أما التنفيذ التفاعلي في المتصفح فهو مجاني.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/optics/frequency-to-midi-note \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"frequency":440}'const res = await fetch("https://api.kit.forhosting.com/optics/frequency-to-midi-note", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"frequency": 440
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/optics/frequency-to-midi-note",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"frequency": 440
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/optics/frequency-to-midi-note", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"frequency":440}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"frequency":440}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/optics/frequency-to-midi-note", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"frequency": 440
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "optics.frequency_to_midi_note",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |