بيثون مولد غطاء الموسيقى في خلاط

في هذه المقالة سأتحدث عن الملحق الخاص بي للخلاط ، وعن الأسباب التي دفعتني إلى إنشائه وعملية التطوير و "النجاح" على YouTube.




قبل التاريخ


بدأ كل شيء بحقيقة أنه قبل عام تقريبًا (في نوفمبر 2018) رأيت في عرض YouTube مثل هذا الغطاء غير العادي على The Ultimate Canon

سجل الرجل عينات من كل ملاحظة للأغنية ، ومن خلال التحرير المضني ، قام بتجميع الأغنية كاملة منها. إلى من هو ، لكنني أعتقد أنه أمر مضحك على الأقل. وعدد مرات المشاهدة (في ذلك الوقت يزيد قليلاً عن 1،000،000) أشار إلى أن الموضوع ( 1٪ مهارة الغيتار 99٪ مهارات التحرير ) كان شائعًا.

أنا متأكد من أن الذين شاركوا على الأقل في مزج الأغاني يعرفون أنه من السهل أحيانًا قطع المسار ونقله أسهل من مطالبة عازف الجيتار المهمل بإعادة تشغيل الجزء. اعتدت أيضا على صنع أغلفة كلاسيكية ، وحتى ذلك الحين كان لدي فكرة زحف وخلق غطاء تماما كما فعل الرجل من الفيديو. والآن أرى أن "فكرتي سرقت بوقاحة" وحصلت على عادم جيد. كنت منزعجاً من أن قطاري غادر ، لكن بزغ فجرني أنني أستطيع أن أفعل نفس الشيء ، لكن على مستوى مختلف ، أضف خطوة جديدة - 1٪ جيتار 1٪ يقوم بتحرير 98٪ من مهارات البرمجة .

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

تصميم


لذلك ، كانت المهمة هي أتمتة عملية تقطيع عينات الصوت إلى تكوين موسيقي.

بادئ ذي بدء ، كان من الضروري أن ينقل بطريقة أو بأخرى إلى بيانات البرنامج في المستقبل عن التكوين والملاحظات والمسارات والأدوات. فكرت على الفور في GuitarPro وخيارات تصدير البيانات الخاصة بها: MusicXML و MIDI.

قادتني عمليات البحث إلى اختيار محلل لملفات midi على بيثون music21 . هذا ليس مجرد محلل ، لكن بصرف النظر عن هذا ، لست بحاجة إلى أي شيء من الوحدة. وكانت نظائرها إما مع وثائق رهيبة ، أو لا يمكن أن تفعل ما أحتاجه بسهولة مثل music21.

رائع ، الآن يمكنني الحصول على بيانات من ملفات midi حول المقاطع الصوتية وملاحظاتها وموقعها ومدتها. نحن نذهب أبعد من ذلك.

الآن ، بناءً على هذه البيانات ، تحتاج إلى قطع من ملفات الفيديو / الصوت. ثم اخترت بسرعة كافية. بالتأكيد خلاط ، على الرغم من قدراته المتواضعة كمحرر فيديو. لديّ تجربة مع Adobe PremierePro ، After Effects ، ولكن هناك لهجة البرمجة النصية الخاصة بي ، والتي لم تعد مفيدة في أي مكان ، وقدراتها غير معروفة بالنسبة لي. في Blender ، يمكن تنفيذ أي إجراء تقريبًا من خلال برنامج Python النصي. وهذا يطابق بالفعل لغة music21. تجدر الإشارة إلى أنه في ذلك الوقت لم أكن على دراية بيثون على الإطلاق ، لذلك اعتبرت أيضًا هذا المشروع مناسبة ممتازة للتعرف على هذه اللغة الشائعة. البنغو!

تدريجيا ، بدأت أتعمق في اللغة ، وأخرجت ملاحظات midi-file إلى وحدة التحكم من خلال music21 ، ونظرت بسرعة في كيفية جعل الإضافات إلى الخلاط ، وانتقلت إلى أول مهمة عملية: إنشاء بيانات نموذجية. قام بتسجيل كل ملاحظة فريدة على الجيتار وبدأ في القطع ، لكنه سرعان ما توقف. احتج مبرمجي الداخلي على هذا العمل المضني (ويمكن أن يكون هناك الكثير من الملاحظات لكل أداة: 30-50). وسيتعين على هذا قص الملاحظات وتقديمها بشكل فردي في ملفات منفصلة ، وللقيام بذلك ، قم بضبط كل ملاحظة مقطوعة في الطول إلى بداية الجدول الزمني ... بشكل عام ، يجب تبسيط هذه العملية.

كان الحل هو استخدام مثل هذا الشيء في Blender كعلامات. هذه نقاط أساسية تحتوي على معلومات نصية يمكن ضبطها على إطار محدد. كان المنطق هو ذلك: يقوم المستخدم بترتيب الفيديو والصوت الخاص به (إذا تم تسجيل الصوت على مسار منفصل) ، يقودهم إلى بعضهم البعض ويضع علامات مع بداية علامات كل ملاحظة في الفيديو ، ويشير نص العلامة إلى نوع الملاحظة (A # و D و C و وما إلى ذلك) ومدته القصوى في السجل. ثم يتم تسجيل المعلومات حول العلامات في ملف ويتم استخدامها بالفعل عند قطع الملاحظات الفردية.



كانت النقطة التالية هي "جوهر" الفعلي لملاحظات القطع الوظيفية ووضعها على الجدول الزمني. من سخرية القدر ، لا يوجد شيء خاص للقول: كان هناك الكثير من وثائق القراءة ، وثائق Blender كانت بعيدة كل البعد عن التفصيل التام ، لكنني تدريجياً حققت ما أردت. عندما رأيت (وسمعت) النتيجة الأولى (كانت عبارة عن مجموعة قصيرة من مجموعة Epidemic - Frodo) ، لم تكن السعادة تعرف الحدود. أعتقد أن كل شخص يعرف الشعور عندما يخرج شيء ما في النهاية.



جودة الكود رديئة. حاولت القيام بذلك على عجل ، لأنه تخيلت أنني لم أكن الشخص الوحيد الذي فكر في شيء من هذا القبيل ، ولا أريد أن أكون أمامي هنا (المفسد! كم أنا ساذج). لذلك ، لم يكن هناك وقت للالتزام بالأسلوب والتفكير في الهيكل ، حاولت الحصول على نموذج أولي للعمل بشكل أسرع.

الفروق الدقيقة


الآن لفروق التنفيذ. يحتوي Blender على حد أقصى في طبقات المحرر ، بحد أقصى 32. تُظهر الصورة أن عينات الصوت والفيديو (الأخضر والأرجواني) تشغل كل منها 14 طبقة ويتم تشكيلها بترتيب تصاعدي ، ثم مرة أخرى في بداية قطاعها. هذا يرجع إلى حقيقة أن Blender لن تسمح لك بتفرخ عينة فوق أخرى. وفي الموسيقى يحدث غالبًا أن تبدأ الملاحظة التالية حتى قبل نهاية الصوت السابق. لذلك ، لتجنب التداخل ، قررت أن أفرز الملاحظة التالية على طبقة أعلى من الطبقة السابقة ، وعندما تنتهي طبقات القطاع ، ابدأ مرة أخرى من الطبقة الأولى (من غير المرجح أن الصوت الأول سوف يبدو بقدر 14 طبقة للأمام). نعم ، يمكن القيام بذلك بشكل أكثر ذكاءً عن طريق توفير الطبقات ، لكن كما قلت ، كنت في عجلة من أمري.

قد تلاحظ الأكثر اهتمامًا أن القطاع بأكمله يتكون من طبقتين بواقع 14 طبقة ، وهو 28 ، والحد الأقصى في Blender هو 32. والحقيقة هي أنه بالنسبة لملاحظات التكاثر ، يجب عليك أن تفرز مقطوعات أصلية 2 (فيديو وصوت) من خلال برنامج نصي ثم تقطعها المذكرة. ولا يمكنك أن تفرخ في الجزء العلوي من مسار آخر ، ولذا فقد حجزت الطبقتين 31 و 32 من هذا النشاط التجاري. يتم استخدام 29 و 30 للتخزين الوسيط للمسارات التي تم إنشاؤها بالفعل: يحدث التوليد تحت مسار واحد من ملف midi ، ثم يتم تجميع الملاحظات في مسار واحد ، ونقلها إلى طبقة 29/30 ، ونحن نقوم بإنشاء المسار التالي ، إلخ.

هناك أيضًا فارق بسيط: في نتائج midi هناك خاصية مثل سرعة التشغيل. ويمكن أن تتغير عدة مرات داخل التكوين. في music21 ، لم أجد فرصة لتتبع تغييرات السرعة هذه. لذلك ، تتزامن سرعة الملاحظات التي تم إنشاؤها مع السرعة الأولى المحددة في ملف midi. هناك حلان:

  1. لكل قسم بسرعة جديدة ، قم بإنشاء ملف midi جديد فقط به ؛
  2. إنشاء ملاحظات المقطع مرة أخرى مع معدل سرعة تيمبو (عامل مضاعف للسرعة الأولية).



أفضل إضافة مساراتي الخاصة بكل سرعة في GuitarPro ، ثم في Blender ، يكفي فقط توليدها باستخدام معدِّل سرعة ، بل إنه أسرع وأكثر صعوبة في الخلط.

أدوات محرر الفيديو


الآن بعد أن أصبح لديك مسودة مجموعة من المسارات التي تم إنشاؤها ، تحتاج إلى تركيب غطاء قابل للمشاهدة. أي ضع المقطوعات في زوايا الفيديو ، وقم بالتبديل حسب الموسيقى ، إلخ. في خلاط ، وهذا أمر سيء للغاية. لتطبيق التأثير على المسار ، تحتاج إلى "لصق" مسار آخر من الأعلى ، والذي سيتم تقديمه عند تقديمه ، ووضعه في الموضع الصحيح.

من الجدير بالذكر الحبال. هذا هو عندما تسمع عدة ملاحظات في نفس الوقت ، أي عند عرض مقطع فيديو ، سيتم عرض الملاحظة العليا فقط على الدردشة الجماعية. كان الحل هو إضافة التأثير نفسه (لحسن الحظ ، لا ينكسر عند تركيبه على بعضه البعض). إذا كان بإمكاني القيام بكل شيء يدويًا أثناء التحرير العادي للمسارات التي تم إنشاؤها ، فستكون عملية تحرير كل ملاحظة بالتردد أكثر من اللازم. كما تعلم ، أنا أيضًا أتمتة هذه الفروق الدقيقة. الآن ، في لمسة زر واحدة "Chordify شرائح" ، سيتم تحويل العينات المحددة حسب الحاجة وسيتم رسم كل ملاحظة من الوتر.





ونقطة أخرى من الأتمتة: في بعض الأحيان يكون للعينات المولدة أجزاء فارغة فيما بينها. هذا يرجع إلى حقيقة أن الدرجات في هذه الأماكن هي أماكن فارغة فجأة. في GuitarPro ، يبدو هذا طبيعيًا ، نظرًا للتأثيرات المختلفة ، يتم الاحتفاظ بصوت الملاحظة بينهما. ومع ذلك ، تشكل الفراغات في الخلاط. يجب ملؤها بتمديد الملاحظة السابقة قبل التالي. بالضبط يتم تنفيذ هذه المهمة عن طريق زر "ملء الثغرات".

تمت كتابة وظيفة العمل مع وحدة التخزين أيضًا على تفاهات ، بالإضافة إلى القدرة على استبدال ملاحظة غائبة بأخرى ، ولكن بقيمة مختلفة من الملعب ، والتي تتيح لك تجاوز حدود نطاق الأداة (على الرغم من أنها في الممارسة لا تزيد عن 1 أوكتاف).

المجد على يوتيوب


لذلك ، الملحق جاهز. لقد قضى حوالي شهر ونصف من بداية الفكرة ، وكان يعمل في المساء في أوقات فراغه. حان الوقت لعمل غطاء يتغلب على غطاء يد هذا الرجل. اخترت نفس الأغنية ، ولكن بترتيب موسيقى الروك: Canon Rock. إنه لحني وأكثر تعقيدًا من الأصل ، وسيظهر بوضوح المستوى الجديد لنهجي. نعم ، وكاستجابة لمقطع فيديو مشهور بالفعل ، يمكن أن يجذب انتباه الجمهور.

في النص أعلاه ، لقد خدعت قليلاً ، لأنه لقد بدأت العمل على الغلاف أثناء عملية كتابة الوظيفة الإضافية ، بحيث ، باستخدام مثاله ، أفهم الوظيفة المطلوبة وتنفيذها.

والآن الغطاء جاهز ومصقول ! لقد أطلق المقدمة والنهاية ، وفيها كسر في اللغة الإنجليزية ، وحاول أن يفسر مدى حدة إجابتي. وتحدث بعض الكلمات عن عمد مع الأخطاء (مجاملة ، مضاعفة ذ eff) ، على أمل الحصول على المشاهدين لتعديل في التعليقات. أعدت معاينة. مع التنفس ، تحسبا للانتصار المتوقع ، تحميل ونشر الفيديو. لقد أرسلتهم في مجموعات غلاف على أغطية ، وألقت الرابط على Instagram بهذا الرجل. هو ، بالمناسبة ، لديه لقب منتصر للغاية: رالف جاي تريومفو.

مر الوقت. لم يكن هناك انتصار. في اليوم الأول ، حصلت على حوالي 100 مشاهدة ، نصفها كانت وجهة نظري وأصدقائي. ثم كان هناك هدوء. مع كل يوم جديد أصبحت خيبة أمل أكثر وأكثر في هذا المسعى بأكمله. هل حقا لا يفهم الناس مدى روعتي؟ لماذا كلمة الفم لا تعمل؟ أو ربما كانت الفكرة نفسها رائعة في رأسي فقط؟

سواء كان الأمر كذلك ، فقد أحببت النتيجة ، وبدأت تدريجياً في صنع أغلفة جديدة أكثر فأكثر.
في ذلك الوقت ، شاركت في تصوير برنامج "Brain Modeling" على التلفزيون المحلي ، وبمجرد أن ذكرت حرفي في محادثة مع المضيف. وكانت النتيجة تقريرا صغيرا عني. أمي ، أنا على شاشة التلفزيون !

فهمت تمامًا أن المتقاعدين يشاهدون التلفزيون المحلي بشكل أساسي ، لذا لم تكن هناك توقعات بهذا.

حتى مع ذلك ، أردت أن أضع الكود الإضافي في الاعتبار ، وأن أحسن من الجيل ، وأضعه في المجال العام ، لكن فشل الانتصار قلل من شغفي. بالإضافة إلى ذلك ، كان الإصدار الكامل للإصدار الجديد من Blender قيد الإعداد ، وكانت واجهة برمجة التطبيقات تتغير. كنت أرغب في انتظار إصداره في فصل الصيف ونقل الملحق إلى الإصدار الجديد ، ثم إخماده ، ولكن مرة أخرى ، لم تكن هناك رغبة معينة.

والآن ، بعد ما يقرب من عام تقريبًا ، عندما تجاوز عدد مرات مشاهدة الفيديو الأول بالكاد 600 مشاهدة ، قررت وضع ملحق على الجمهور وكتابة هذا المقال ، ربما على الأقل سيؤدي ذلك إلى تضييع وقت فراغي ، لكنني في الوقت نفسه قمت بالتوبيخ.

بالطبع ، حاولت نقل الملحق إلى الإصدار الجديد 2.80 ، لكن اتضح أن محرر الفيديو لم يتحسن فحسب ، بل ساء. الأداء أسوأ بكثير ، وأحيانًا يتعطل عند إنشاء مسارات ثقيلة. المحرر نفسه بدأ يتباطأ. عدم القدرة على غطر بعض المسارات الصوتية (آمل أن يكون هذا خطأ ، وسيتم إصلاحها في الإصدار الثانوي التالي). في غضون ذلك ، يحتاج الملحق إلى الإصدار القديم الجيد 2.79

هنا رابط إلى الملحق ، لا تنس أن تضع music21 على خلاط بيثون المترجم. وإنني أتطلع إلى المظهر الهائل للأغلفة المركبة منك.

Source: https://habr.com/ru/post/ar471086/


All Articles