Generator penutup musik Python di Blender

Pada artikel ini saya akan berbicara tentang addon saya ke blender, alasan yang mendorong saya untuk membuatnya, proses pengembangan dan "kesuksesan" di YouTube.




Latar belakang


Semuanya dimulai dengan fakta bahwa sekitar setahun yang lalu (pada November 2018) saya melihat di YouTube menawarkan sampul yang tidak biasa pada The Ultimate Canon

Lelaki itu merekam sampel masing-masing not lagu dan, melalui pengeditan yang susah payah, mengumpulkan seluruh lagu dari mereka. Kepada siapa itu, tapi saya pikir itu setidaknya lucu. Dan jumlah pandangan (pada saat itu sedikit lebih dari 1.000.000) menunjukkan bahwa topik ( 1% keterampilan gitar, 99% keterampilan mengedit ) sangat populer.

Saya yakin bahwa mereka yang setidaknya sedikit terlibat dalam pencampuran lagu tahu bahwa kadang-kadang lebih mudah untuk sedikit memotong dan memindahkan lagu daripada meminta gitaris yang ceroboh untuk memutar ulang bagian itu. Saya juga biasa membuat sampul klasik, dan bahkan kemudian saya punya ide untuk merangkak masuk dan membuat sampul persis seperti yang dilakukan pria dari video itu. Dan sekarang saya melihat bahwa "ide saya dicuri dengan berani" dan mendapatkan knalpot yang bagus. Saya kesal karena kereta saya pergi, tetapi tiba-tiba saya sadar bahwa saya bisa melakukan hal yang sama, tetapi pada tingkat yang berbeda, menambahkan langkah baru - gitar 1% 1% mengedit keterampilan pemrograman 98% .

Selain itu, ini akan memungkinkan Anda untuk membuat komposisi yang jauh lebih kompleks, yang, ketika diedit secara manual, beberapa orang memiliki kesabaran.

Pengembangan


Jadi, tugasnya adalah mengotomatisasi proses mengiris sampel suara menjadi komposisi musik.

Pertama-tama, itu perlu untuk entah bagaimana menyampaikan data program masa depan tentang komposisi, catatan, trek, instrumen. Saya langsung memikirkan GuitarPro dan opsi ekspor datanya: MusicXML dan MIDI.

Pencarian membuat saya memilih parser untuk file midi di Python music21 . Ini bukan hanya pengurai, tetapi selain itu, saya tidak perlu apa-apa dari modul. Dan analognya dengan dokumentasi yang mengerikan, atau tidak bisa melakukan apa yang saya butuhkan semudah musik21.

Hebat, sekarang saya bisa mendapatkan data dari file midi tentang trek, catatan mereka, posisi dan durasi mereka. Kita melangkah lebih jauh.

Sekarang, berdasarkan data ini, Anda perlu memotong dari file video / audio. Kemudian saya memilih cukup cepat. Jelas Blender, meskipun kemampuannya sederhana sebagai editor video. Saya memiliki pengalaman bekerja dengan Adobe PremierePro, After Effects, tetapi ada dialek skrip saya sendiri, yang tidak berguna di tempat lain, dan kemampuannya tidak saya ketahui. Di Blender, hampir semua tindakan dapat dilakukan melalui skrip Python. Dan itu sudah cocok dengan bahasa music21. Perlu dijelaskan bahwa pada waktu itu saya tidak terbiasa dengan Python sama sekali, oleh karena itu saya juga menganggap proyek ini sebagai kesempatan yang baik untuk berkenalan dengan bahasa populer ini. Bingo!

Berangsur-angsur, saya mulai mempelajari bahasa, mengeluarkan catatan file midi ke konsol melalui musik21, dengan cepat melihat bagaimana membuat add-on untuk blender dan melanjutkan ke tugas praktis pertama: menghasilkan data sampel. Dia mencatat setiap nada unik pada gitar dan mulai memotong, tetapi segera berhenti. Programmer internal saya memprotes kerja keras ini (dan mungkin ada banyak catatan untuk setiap instrumen: 30-50). Dan ini harus memotong catatan dan membuatnya secara individual dalam file yang terpisah, dan untuk melakukan ini, sesuaikan setiap panjang catatan lagu dengan awal garis waktu ... Secara umum, proses ini harus disederhanakan.

Solusinya adalah menggunakan hal seperti itu di Blender sebagai spidol. Ini pada dasarnya adalah poin dengan informasi tekstual yang dapat diatur pada kerangka tertentu. Logikanya adalah ini: pengguna mengatur video dan audionya (jika audio direkam pada trek yang terpisah), mendorong mereka satu sama lain dan menandai dengan penanda awal setiap catatan dalam video, dan dalam teks penanda menunjukkan jenis nada apa (A #, D, C dan dll.) dan durasi maksimum pada catatan. Kemudian informasi tentang penanda dicatat dalam file dan sudah digunakan saat memotong catatan individu.



Poin berikutnya adalah "inti" aktual dari fungsional - memotong catatan dan posisi mereka di timeline. Ironisnya, tidak ada yang istimewa untuk dikatakan: ada banyak dokumentasi bacaan, dokumentasi Blender jauh dari selalu cukup detail, tetapi secara bertahap saya mencapai apa yang saya inginkan. Ketika saya melihat (dan mendengar) hasil pertama (itu adalah komposisi singkat dari kelompok Epidemi - Frodo), kebahagiaan tidak mengenal batas. Saya pikir semua orang tahu perasaan ketika sesuatu akhirnya keluar.



Kualitas kodenya buruk. Saya mencoba melakukannya dengan tergesa-gesa, karena Saya membayangkan bahwa saya bukan satu-satunya yang memikirkan hal seperti itu, dan tidak ingin menjadi yang terdepan di sini (spoiler! Betapa naifnya saya). Karena itu, tidak ada waktu untuk mematuhi gaya dan merenungkan struktur, saya mencoba untuk mendapatkan prototipe yang bekerja lebih cepat.

Nuansa


Sekarang untuk nuansa implementasinya. Blender memiliki batas di lapisan editor, maksimum 32. Gambar menunjukkan bahwa sampel audio dan video (hijau dan ungu) masing-masing menempati 14 lapisan dan dibentuk dalam urutan menaik, kemudian kembali pada awal sektor mereka. Ini karena fakta bahwa Blender tidak akan mengizinkan Anda untuk menelurkan sampel di atas yang lain. Dan dalam musik sering terjadi bahwa not berikutnya dimulai bahkan sebelum akhir dari bunyi sebelumnya. Oleh karena itu, untuk menghindari tumpang tindih, saya memutuskan untuk menelurkan not berikutnya pada layer yang lebih tinggi dari sebelumnya, dan ketika layer-layer sektor berakhir, mulai lagi dari layer pertama (kecil kemungkinan not pertama akan terdengar sebanyak 14 layer ke depan). Ya, ini bisa dilakukan dengan lebih pintar dengan menyimpan layer, tetapi seperti yang saya katakan, saya sedang terburu-buru.

Yang paling penuh perhatian dapat memperhatikan bahwa seluruh sektor adalah 2 kali 14 lapisan, ini 28, dan maksimum di Blender adalah 32. Faktanya adalah bahwa untuk menelurkan catatan, Anda harus menelurkan 2 trek asli (video dan audio) melalui skrip dan kemudian hentikan mereka. perhatikan. Dan Anda tidak dapat menelurkan di atas trek lain, jadi saya memesan lapisan 31 dan 32 untuk bisnis ini. 29 dan 30 digunakan untuk penyimpanan menengah dari trek yang sudah dibuat: pembangkitan terjadi di bawah satu trek dari file midi, kemudian catatan dikelompokkan ke dalam satu trek, ditransfer ke lapisan 29/30, kami membuat trek berikutnya, dll.

Ada juga nuansa: dalam skor midi ada properti seperti kecepatan pemutaran. Dan itu dapat berubah berkali-kali di dalam komposisi. Di music21, saya tidak pernah menemukan kesempatan untuk melacak perubahan kecepatan ini. Oleh karena itu, kecepatan catatan yang dihasilkan akan bertepatan dengan kecepatan pertama yang ditentukan dalam file midi. Ada 2 solusi:

  1. untuk setiap bagian dengan kecepatan baru, buat file midi baru hanya dengan itu;
  2. menghasilkan catatan bagian lagi dengan pengubah kecepatan Tempo (faktor multiplikasi ke kecepatan awal).



Saya lebih suka menambahkan trek saya sendiri untuk setiap kecepatan di GuitarPro, kemudian di Blender, cukup untuk membuatnya hanya dengan pengubah kecepatan, lebih cepat dan lebih sulit untuk bingung.

Utilitas Editor Video


Sekarang setelah Anda memiliki set konsep trek yang dihasilkan, Anda harus memasang cover yang dapat ditonton. Yaitu posisikan trek di sudut-sudut video, beralih tergantung pada musik, dll. Dalam blender, ini sangat buruk. Untuk menerapkan efek ke trek, Anda perlu "merekatkan" trek lain dari atas, yang akan dirender saat rendering, dan meletakkannya di posisi yang tepat.

Dari catatan khusus adalah akord. Ini adalah saat beberapa catatan berbunyi pada saat yang sama, yaitu saat merender video, hanya nada atas akor yang akan ditampilkan. Solusinya adalah menambahkan efek yang sama (untungnya, mereka tidak pecah ketika ditumpangkan satu sama lain). Jika selama pengeditan normal trek yang dihasilkan saya bisa melakukan semuanya secara manual, maka mengedit setiap not akor terlalu banyak. Seperti yang Anda tahu, saya juga mengotomatiskan nuansa ini. Sekarang, dengan satu sentuhan tombol "Chordify strips", sampel yang dipilih akan ditransformasikan sesuai kebutuhan dan setiap not akor akan ditarik.





Dan satu lagi poin otomatisasi: kadang-kadang sampel yang dihasilkan memiliki bagian kosong di antara mereka. Ini disebabkan oleh fakta bahwa skor di tempat-tempat ini tiba-tiba kosong. Di GuitarPro, ini terdengar normal, karena berbagai efek, suara not disimpan di antaranya. Namun, rongga terbentuk di blender. Mereka harus diisi dengan meregangkan catatan sebelumnya sebelum yang berikutnya. Tepat tugas ini dilakukan oleh tombol "Fill gaps".

Fungsi untuk bekerja dengan volume, serta kemampuan untuk mengganti not yang tidak ada dengan yang berbeda, tetapi dengan nilai nada yang berbeda, juga ditulis untuk hal-hal kecil, yang memungkinkan Anda melampaui batas rentang instrumen (meskipun dalam praktiknya tidak lebih dari 1 oktaf).

Kemuliaan di youtube


Jadi, addon sudah siap. Sekitar satu setengah bulan dihabiskan sejak awal ide, ia bekerja di malam hari, di waktu luangnya. Saatnya membuat penutup yang akan mengalahkan penutup tangan pria itu. Saya memilih lagu yang sama, tetapi dalam aransemen rock: Canon Rock. Ini jauh lebih melodik dan lebih rumit daripada yang asli, dan jelas akan menunjukkan tingkat baru pendekatan saya. Ya, dan sebagai tanggapan terhadap video yang sudah populer, itu dapat menarik perhatian audiens.

Dalam teks di atas, saya tertipu sedikit, karena Saya mulai mengerjakan sampul dalam proses penulisan add-on, sehingga, dengan menggunakan contohnya, saya memahami fungsionalitas apa yang diperlukan dan mengimplementasikannya.

Dan sekarang sampulnya sudah siap dan dipoles ! Dia merekam kata pengantar dan akhir, di mana, dalam bahasa Inggris yang rusak, dia mencoba menjelaskan kecuraman jawaban saya. Dia berbicara beberapa kata dengan sengaja dengan kesalahan (dipuji, dua kali lipat), berharap agar pemirsa mengubah komentar. Mempersiapkan pratinjau. Dengan napas tertahan, untuk mengantisipasi kemenangan yang diharapkan, unggah dan publikasikan videonya. Saya mengirim mereka dalam kelompok sampul di sampul, dan melemparkan tautan di Instagram ke orang itu. Ngomong-ngomong, ia memiliki nama panggilan yang sangat berjaya: Ralph Jay Triumfo.

Waktu berlalu. Tidak ada kemenangan. Pada hari pertama saya mendapat sekitar 100 tampilan, setengahnya adalah milik saya dan teman-teman saya. Lalu ada jeda. Dengan setiap hari baru saya menjadi semakin kecewa dengan seluruh usaha ini. Apakah orang benar-benar tidak mengerti betapa kerennya saya melakukannya? Mengapa dari mulut ke mulut tidak berfungsi? Atau mungkin idenya sendiri keren hanya di kepala saya?

Meskipun demikian, saya menyukai hasilnya, dan saya secara bertahap mulai membuat lebih banyak dan lebih banyak cover baru.
Pada saat itu, saya berpartisipasi dalam pembuatan film program "Pemodelan Otak" di TV lokal, dan suatu kali saya menyebutkan kerajinan saya dalam percakapan dengan pembawa acara. Hasilnya adalah laporan kecil tentang saya. Bu, aku ada di TV !

Saya sangat mengerti bahwa para pensiunan terutama menonton TV lokal, jadi tidak ada harapan dari ini.

Bahkan saat itu saya ingin membawa kode add-on ke pikiran, mengoptimalkan generasi dan menempatkan add-on di domain publik, tetapi kegagalan kemenangan mengurangi semangat saya. Selain itu, kemudian rilis lengkap versi baru Blender sedang dipersiapkan, dan API berubah. Saya ingin menunggu rilis di musim panas dan mentransfer addon ke versi baru, dan kemudian mengeluarkannya, tetapi sekali lagi, tidak ada keinginan khusus.

Dan sekarang, setelah hampir setahun, ketika penayangan video pertama hampir tidak melebihi 600, saya memutuskan untuk menambahkan addon pada publik dan menulis artikel ini, mungkin setidaknya itu akan mencerahkan waktu senggang saya, tetapi pada saat yang sama saya menegur.

Tentu saja, saya mencoba untuk mentransfer addon ke versi baru 2,80, tetapi ternyata editor video tidak hanya tidak diperbaiki, tetapi bahkan semakin buruk. Performanya jauh lebih buruk, terkadang macet saat menghasilkan trek yang berat. Editor sendiri mulai melambat. Ketidakmampuan untuk meredam trek audio tertentu (saya harap ini adalah bug, dan akan diperbaiki pada rilis minor berikutnya). Sementara itu, addon membutuhkan versi lama yang baik 2.79

Berikut ini adalah tautan ke addon , jangan lupa untuk menempatkan music21 pada blender interpreter python. Saya menantikan penampilan masif dari sampul yang disintesis dari Anda.

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


All Articles