← كل الأدوات

كاشف BPM

أفلت مقطوعة. احصل على إيقاعها والزمن الدقيق لكل نبضة — محسوبًا على جهازك أنت، دون رفع أي شيء.

متصفحك هو الذي يقرأ الملف ويعيد ترميزه. لا يُرسَل في أي طلب إلى أي مكان — فهذه الصفحة لا تملك خادمًا يُرفع إليه.

أسئلة

هل يُرفع الصوت إلى أي مكان؟

لا. يجري التحليل داخل متصفحك بصيغة WebAssembly. يُقرأ الملف من القرص إلى الذاكرة ولا يخرج عبر الشبكة قط: يمكنك التحقق بفتح تبويب الشبكة، أو بقطع الاتصال بعد تحميل الصفحة.

ما مدى دقته؟

يستخدم تحليل قوة البدايات مع تتبّع النبض بالبرمجة الديناميكية — المقاربة نفسها في أدوات استرجاع معلومات الموسيقى الراسخة، والشيفرة نفسها التي تحرّك محرّك المونتاج في Life2Film. مع موسيقى ذات نبض ثابت يصيب ضمن نبضة واحدة. أما مع الروباتو والتسجيلات الحية بلا مِترونوم والمادة المتقطّعة بشدة، فاعتبر الرقم نقطة انطلاق.

ما معنى «نصف الإيقاع أو ضعفه»؟

الإيقاع ملتبس بطبيعته: مقطوعة عند 140 نبضة في الدقيقة هي أيضًا، وبصواب، 70 إن عُدّت بنصف الزمن. والكواشف تختار الأقوى في الإشارة. فإن بدا الرقم ضعف ما تتوقع أو نصفه بالضبط، فهذا ما جرى، وتُعرض القراءتان لتأخذ ما تحتاج.

هل أستطيع استخدام النبضات في برنامج المونتاج؟

لهذا وُجد التصدير. EDL هو الخيار لدافينشي ريزولف أو بريمير: تصل كل نبضة علامةً مسمّاة على الخط الزمني. وفاينل كت يقبل FCPXML. وOTIO يعمل في ريزولف وأفيد وبريمير، وهو المناسب إن كانت النبضات ذاهبة إلى مسار إنتاج لا إلى خط زمني مباشرة. وأوداسيتي يقرأ تصدير العلامات، وCSV وJSON يغطيان الجداول والبرامج النصية.

لماذا يهمّ معدّل الإطارات؟

النبضات تقع على أجزاء من الثانية، والخطوط الزمنية تعدّ إطارات كاملة. تُقرَّب كل علامة إلى أقرب إطار في المشروع الذاهبة إليه، فشبكة مصدّرة عند 25 إطارًا/ث تقع بفارق يصل إلى 20 مللي ثانية داخل تسلسل عند 30. اضبط المعدّل على معدّل مشروعك تستقر العلامات تمامًا حيث النبضة. ولا يؤثر ذلك في CSV وJSON، إذ يحملان الثواني الخام أيضًا.

الأدوات الأخرى

أضف هذا إلى مشروعك

Finding the tempo and beat grid of a track — the same way this page does it, on the user's machine, with no server. Take the code, or hand the prompt to a coding agent.

const engine = await import('https://life2film.com/wasm/va_wasm.js');
await engine.default({ module_or_path: 'https://life2film.com/wasm/va_wasm_bg.wasm' });

const ctx = new AudioContext();
const buffer = await ctx.decodeAudioData(await file.arrayBuffer());

// Down-mix to mono at 22050 Hz first (OfflineAudioContext), then:
const { bpm, beats } = JSON.parse(engine.detect_beats(mono, 22050, null));

The engine is documented for agents, and every tool page is available as markdown by adding .md to its address.