CLJS-KAARAOKE-CLIENT
تم تنفيذ مشغل ويب في الكاريوكي في ClojureScript
العرض التوضيحي
رولينج ستونز - في كل مكان الآن
وصف
تجربتي في صنع لاعب كاريوكي لائق. لقد حاولت لسنوات أن أحصل على حل كاريوكي في برنامج جيد مع القليل من النجاح ، والبدائل الرئيسية هناك إما ألعاب مثل Ultrastar أو Frets on Fire ، وما إلى ذلك أو تجميع قائمة تشغيل لمقاطع فيديو YouTube Karaoke.
يقدم كلا البديلين كتالوجًا واسعًا للأغاني التي يمكنك الوصول إليها بحرية عبر الإنترنت ولكن مع بعض العيوب:
- الأغاني المتاحة على الإنترنت للألعاب مثل Ultrastar في كثير من الأحيان لا تستخدم مسار الأغاني الأصلي مع غناء ، والذي في رأيي يقتل "تجربة الكاريوكي"
- يختلف مزامنة كلمات الأغاني بشكل كبير (بعضها يعرض آيات كاملة في وقت واحد بينما يتم مزامنة كلمات أخرى على مستوى المقطع) عند استخدام مقاطع فيديو youtube karaoke.
كانت الصعوبة الرئيسية هي الحصول على كلمات مع معلومات المزامنة ، وجدت الكثير من ملفات MIDI على الويب ، ويبدو أنها تستخدم لآلات الكاريوكي. هذه الملفات ، تحتوي على كلمات مزامنة على طول الطريق إلى مستوى مقطع لفظي. نظرًا لعدم وجود معيار في كيفية تخزين كلمات MIDI لآلات الكاريوكي ، فإن الكثير منهم لديهم اختلافات دقيقة في الطريقة التي يتم تخزينها ، لذلك عند تحليل هذه الملفات ، قمت بإنشاء مجموعة من الافتراضات الإجمالية واستخراج الكلمات لفصل الملفات إلى جانب بيانات التوقيت. معظمهم على ما يرام ، ولكن العديد منهم في وضع متغير قليلاً من خلال إزاحة متغيرة
محلل MIDI في مشروع منفصل: CLJ-KAARAOKE.
وكانت الصعوبة الأخرى هي الحصول على مسار صوتي للأغنية ، حيث تتم مزامنت كلمات الأغنية مع مسار الصوت MIDI ، وكان الشيء الذي يجب القيام به هو استخدام ذلك. في البداية كنت أنوي استخدام ملفات MIDI مباشرة للمسارات الصوتية ، ولكن عند تشغيل الصوت ، كانت الجودة تعتمد بشكل كبير على خطوط الصوت التي قمت بتثبيتها وإعداد ENV جيدًا لنتائج لائقة ليست مهمة تافهة. أيضًا إذا أردت تشغيل هذه الملفات على عميل ويب ، فإن أخذ كل هذا في الاعتبار جعل الأمور أكثر تعقيدًا. لذلك استقرت مع استخراج كلمات لفصل الملفات وتقديم ملفات MP3 إلى MP3 باستخدام TMICIDE وهو رائع للغاية وتمكنت من تجربة مجموعات الخطوط الصوتية المختلفة.
سمات
- طن من الأغاني
- يتم جلب صور الخلفية للأغاني ديناميكيًا من الويب بعد بحث Google أثناء تحميل الأغنية (إذا لم يتم تخزين أي منها)
- يقوم كل مستخدم بتخزين خلفياته المحلية ويدفع عناوين URL بشكل دوري إلى Mongo DB ، فإن Google Custom Search لديه حد يومي لذلك أحاول تقليل استخدامه.
- تتحسن بيانات التهيئة (إزاحة كلمات ، صور BG) أثناء الإنشاء عن طريق توحيد البيانات من المستخدمين
- القدرة على مزامنة الأغاني من خلال إزاحة في الميلي ثانية (إما من لوحة التحكم أو عن طريق إلحاق سلسلة استعلام إلى عنوان URL)
- قائمة تشغيل تلقائية تم تصميمها من الأغاني المزامنة مسبقًا
- تصدير معلومات مزامنة الأغنية المحلية بحيث يمكن دمجها على بيانات مزامنة من جانب الخادم
- إدخال الصوت التجريبي لسطح المكتب Firefox و Chrome مع صدى الصدى/الصدى FX (استخدم ميكروفون خارجي لأفضل النتائج)
- تسجيل كاميرا الويب التجريبية وتصدير الفيديو إلى ملف الويب. القناة الصوتية في الفيديو المصدر هي نتيجة لخلط إدخال الميكروفون مع التأثيرات ومسار الأغنية.
- التحكم عن بعد. قم بتشغيل التطبيق على شاشة كبيرة وتحكم في تشغيل مثيل تطبيق مختلف (على سبيل المثال ، من جهازك المحمول!)
- قم ببناء صفحات الأغاني قبل المقالات مع علامات SEO حتى تتمكن من مشاركة الروابط في الشبكات الاجتماعية كبطاقات جميلة المظهر مع اسم الأغنية وصورة إذا كانت متوفرة.
- محرر كلمات لمزامنة مسارات جديدة مع كلمات.
- حدد ملف صوتي
- أضف نصًا ، وقسمه إلى مقاطع (أو فقط قطع عشوائية)
- قم بتشغيل المسار الخاص بك وانقر فوق الزر "Sync" لكل قطعة
- إذا كنت تريد المزيد من الدقة ، فقد تبطئ المسار مما يقلل من معدل التشغيل
العمل على
- أحجام الخطوط الديناميكية ، أحجام الخطوط المحسنة بالفعل لعناوين الأغاني ، لكنني أبحث عن طريقة لتحسين عرض كلمات الأغاني أيضًا.
- طريقة لالتقاط إزاحة كلمات مخصصة من جميع المستخدمين ، ودمجها كإعدادات افتراضية في الإصدارات اللاحقة
- نفس الشيء مع خلفيات الأغاني ، يتم استخدام بحث Google Custom حاليًا للعثور على الصور المتعلقة بعنوان الأغنية ، وهناك حصة لهذه الخدمة وهي منخفضة جدًا ، كلما كنا بحاجة إلى البحث بشكل أفضل.
الجري محليا
المتطلبات الأساسية:
$ npm i -g shadow-cljs
$ npm install
$ shadow-cljs watch app
إذا كنت ترغب في تجميع بناء إصدار ، فيمكنك تشغيل ما يلي:
$ shadow-cljs release app
سيكون البناء موجودًا في /public .
روابط رئيسية
- "ESC": توقف عن التشغيل
- "LR": تحميل أغنية
- "alt-o": تمكين البوسات في وضع التشغيل
- "Alt-H": تمكين وضع لوحة التحكم
- "اليسار": الصوت تبحث للخلف
- الصوت "الصحيح" تسعى إلى الأمام
- "Meta-Shift-L": وضع الحلقة (يعمل الآن حاليًا)
- "Alt-Shift-P": Play
- "Shift-Right": الأغنية التالية في قائمة التشغيل
- "TT": Toasty!
- "H": Show Cheatsheet
العمل المستقبلي
- توت العليق بي صورة
- كلمات محرر المزامنة