إنشاء مسار نقرات مترونوم من BPM والمازورات
أنشئ مواصفات حتمية لمسار نقرات المترونوم من دون تصيير الصوت أو تحليله. أدخل الإيقاع بعدد الضربات في الدقيقة، وميزانًا مثل 4/4 أو 6/8، والمدة المطلوبة بوحدة المازورات الكاملة.
شغّل الأداة مجانًا
تسرد النتيجة كل نقرة ابتداءً من الزمن صفر، وتحدد مازورتها وضربتها، وتعلّم الضربة الأولى في كل مازورة بأنها مشددة. يمكنك استخدام المخرجات المنظمة لجدولة الأصوات، أو تشغيل الرسوم المتحركة، أو إعداد أدوات التدريب، أو اختبار البرامج التي تتعامل مع الإيقاع اعتمادًا على بيانات زمنية قابلة للتكرار.
صِف الشبكة الموسيقية
أدخل قيمة BPM موجبة، وميزانًا بصيغة البسط/المقام، وعددًا صحيحًا موجبًا من المازورات. يقيس BPM وحدة الضربة التي يحددها المقام؛ لذلك يعني 120 BPM في ميزان 4/4 أن نقرات السوداء تأتي كل نصف ثانية، بينما يعني 120 BPM في ميزان 6/8 أن نقرات ذات السن تأتي كل نصف ثانية. يحدد البسط عدد النقرات التابعة لكل مازورة. يضع المولد النقرة الأولى عند الطابع الزمني صفر لأن أنظمة التشغيل تجدول عادةً الضربة القوية الافتتاحية في بداية خطها الزمني. ثم يتقدم لكل نقرة لاحقة بمقدار ستين مقسومة على BPM بالثواني تمامًا. يستبعد هذا التعريف العد التمهيدي الخفي والتأرجح والتقسيمات الفرعية وزمن تأخر الصوت. إذا كانت جلستك تتطلب هذه الخصائص، فيمكنك تحويل الجدول الناتج أو إزاحته صراحةً. كما تجعل المدخلات الموسيقية الموجزة النتيجة مناسبة لصوت المتصفح ومحركات الصوت الأصلية والخطوط الزمنية للفيديو وبيانات الاختبار وتطبيقات التدوين الموسيقي، من دون ربطها بمعدل أخذ عينات أو ملف صوتي بعينه.
اقرأ الطوابع الزمنية والتشديدات
يحتوي سجل كل نقرة على فهرس عام ورقم مازورة ورقم ضربة تبدأ جميعها من واحد، إضافةً إلى طابع زمني بالثواني وعلامة للتشديد. تكون قيمة accented مساوية لـ true في الضربة الأولى من كل مازورة، وتساوي false في جميع الضربات الأخرى. وبذلك يستطيع نظام التصيير اختيار عينة نقرة أقوى للضربات الأولى وعينة عادية لما سواها. تُقرب الطوابع الزمنية إلى تسع منازل عشرية كي تظل مخرجات JSON مستقرة مع الاحتفاظ بدقة أدنى من الميكروثانية في الإيقاعات الموسيقية المعتادة. يعرض الملخص أيضًا الفاصل بين النقرات والمدة الكلية وعدد النقرات والضربات في كل مازورة ووحدة الضربة. تصف المدة الكلية النطاق المطلوب كاملًا حتى نهاية فاصل الضربة الأخيرة، لا مجرد طابع النقرة الأخيرة. فمثلًا، تحتوي مازورة واحدة بميزان 4/4 عند 120 BPM على نقرات في 0 و0.5 و1 و1.5 ثانية، بينما تبلغ مدتها الكاملة 2 ثانية. يمنع هذا الفرق قطع الضربة الأخيرة عند تخصيص خط زمني للصوت أو الرسوم المتحركة.
جدوِل المواصفات بأمان
تعامل مع النتيجة بوصفها مواصفات للتوقيت لا صوتًا مصيرًا. يستطيع تطبيق Web Audio إضافة وقت بدء التشغيل إلى كل طابع زمني، ثم جدولة مخزن مؤقت مشدد أو عادي وفقًا للعلامة. ويمكن لبرنامج نصي في محطة عمل صوتية رقمية تحويل الثواني إلى وحدات خطه الزمني، كما تستطيع حزمة الاختبارات مقارنة أحداث النقل المتوقعة من دون الاعتماد على مكبرات الصوت أو مرمازات الوسائط. الدالة حتمية؛ فالمدخلات المتطابقة تنتج دائمًا JSON متطابقًا، ولا تستخدم الشبكة أو الساعة الحالية أو القيم العشوائية. تُرفض الإيقاعات غير الصالحة، بما فيها الصفر والقيم السالبة أو المفقودة أو اللانهائية والنص غير الرقمي. يجب أن يتضمن الميزان بسطًا من 1 إلى 32 ومقامًا تقليديًا يكون قوة للعدد اثنين من 1 إلى 32. ويجب أن يكون عدد المازورات صحيحًا موجبًا، مع حد أقصى قدره 10,000 نقرة للجدول الكامل. ولأن الطوابع الزمنية نسبية إلى الصفر، تظل معالجة تأخر التطبيق وتعويض الجهاز مسؤولية الجهة المستدعية؛ أضف هذه الإزاحات فقط بعد معرفة بيئة التشغيل النهائية.
حالات الاستخدام
شغّل مترونومًا في المتصفح
جدوِل عينات نقر عادية ومشددة على خط Web Audio الزمني انطلاقًا من وصف موسيقي موجز.
أنشئ رسومًا متحركة متزامنة
حاذِ الإشارات المرئية أو تعليمات التمرين أو أحداث الإضاءة مع طوابع المازورات والضربات الدقيقة.
اختبر منطق النقل
أنشئ أحداثًا متوقعة قابلة للتكرار للمسلسلات الموسيقية وتطبيقات التدريب ومحركات التشغيل من دون تصيير الصوت.
الأسئلة الشائعة
ما التكلفة؟
سعر API هو $0.002 لكل طلب، ويمكنك تشغيل الحساب الحتمي نفسه مجانًا في متصفحك.
هل تقع النقرة الأولى عند الزمن صفر؟
نعم. يمثل الطابع الزمني صفر الضربة القوية المشددة في الضربة الأولى من المازورة الأولى.
كيف تُعلّم الضربات الأولى؟
تكون accented مساوية لـ true في الضربة الأولى من كل مازورة، وتساوي false في سائر النقرات.
هل تُنشئ هذه الأداة ملفًا صوتيًا؟
لا. إنها تعيد جدول نقرات منظمًا يستطيع نظام صوت أو رسوم متحركة أو اختبارات تصييره أو استخدامه.
ماذا يعني BPM في ميزان 6/8؟
يُطبق BPM على وحدة الضربة التي يحددها المقام. في 6/8 تتلقى كل ضربة من الضربات الست لذات السن نقرة.
لماذا تتجاوز المدة الكلية طابع النقرة الأخيرة؟
تبدأ النقرة الأخيرة الضربة النهائية. تشمل المدة الكلية فاصل تلك الضربة كاملًا كي تكتمل المازورات المطلوبة.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/audio/metronome-click-track \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bpm":120,"time_signature":"4/4","bars":2}'const res = await fetch("https://api.kit.forhosting.com/audio/metronome-click-track", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bpm": 120,
"time_signature": "4/4",
"bars": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/audio/metronome-click-track",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bpm": 120,
"time_signature": "4/4",
"bars": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/audio/metronome-click-track", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bpm":120,"time_signature":"4/4","bars":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bpm":120,"time_signature":"4/4","bars":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/audio/metronome-click-track", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"bpm": 120,
"time_signature": "4/4",
"bars": 2
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "audio.metronome_click_track",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_items | 10000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |