Teknik pembuatan musik prosedural [tertutup]

89

Saya telah banyak memikirkan pembuatan konten prosedural untuk sementara waktu dan saya belum pernah melihat banyak eksperimen dengan musik prosedural. Kami memiliki teknik yang fantastis untuk menghasilkan model, animasi, tekstur, tetapi musik tetap statis atau hanya loop berlapis (misalnya Spora).

Karena itu, saya telah memikirkan teknik pembuatan musik yang optimal, dan saya ingin tahu apa yang ada di pikiran orang lain. Meskipun Anda belum pernah mempertimbangkannya, apa yang menurut Anda akan berhasil? Tolong satu teknik per jawaban, dan sertakan contoh jika memungkinkan. Teknik ini dapat menggunakan data yang ada atau menghasilkan musik seluruhnya dari awal, mungkin pada beberapa jenis masukan (suasana hati, kecepatan, apa pun).

Serafina Brocious
sumber
19
Akhirnya pertanyaan musik tentang benar-benar memprogram / membuat / menghasilkan musik! : D
Oddmund

Jawaban:

28

Cellular Automata - baca .

Anda juga bisa mencobanya di sini .

Edit:

rakkarage telah menyediakan sumber daya lain: http://www.ibm.com/developerworks/java/library/j-camusic/

bidadari
sumber
1
Wolfram sangat pintar! Kerja bagus membuat hal semacam ini juga mudah diakses ...
defmeta
Saya tidak bisa membuatnya berfungsi di kotak Ubuntu saya. :(
Calmarius
Masalahnya adalah karena terjebak dalam sistem 12 nada. Algoritme pembuatan musik sejati akan lebih unggul dari instrumentasi normal dan memiliki kontrol nada harmonik gratis. Piano dirancang dengan sistem nada tertentu yang disepakati sebagai standar pada masanya. Namun, sistem 12 nada itu brilian pada masanya.
Timothy Swan
42

Sistem yang paling sukses kemungkinan besar akan menggabungkan beberapa teknik. Saya ragu Anda akan menemukan satu teknik yang bekerja dengan baik untuk melodi, harmoni, ritme dan generasi urutan bass di semua genre musik.

Rantai Markov , misalnya, sangat cocok untuk pembuatan urutan melodi dan harmonis. Metode ini membutuhkan analisis lagu-lagu yang ada untuk membangun probabilitas transisi rantai. Keindahan nyata rantai Markov adalah bahwa negara bagian dapat menjadi apa pun yang Anda inginkan.

  • Untuk menghasilkan melodi, coba nomor not relatif-kunci (misalnya jika kunci adalah C minor, C akan menjadi 0, D akan menjadi 1, D # akan menjadi 2 dan seterusnya)
  • Untuk menghasilkan harmoni, cobalah kombinasi angka not kunci-relatif untuk akar akor, jenis akor (mayor, minor, berkurang, ditambah, dll.) Dan inversi akor (root, pertama atau kedua)

Jaringan neural sangat cocok untuk prediksi deret waktu (perkiraan), yang berarti keduanya sama-sama cocok untuk 'memprediksi' urutan musik saat dilatih dengan melodi / harmoni populer yang ada. Hasil akhirnya akan serupa dengan pendekatan rantai Markov. Saya tidak bisa memikirkan manfaat apa pun atas pendekatan rantai Markov selain mengurangi jejak memori.

Selain nada, Anda memerlukan durasi untuk menentukan ritme nada atau akor yang dihasilkan. Anda dapat memilih untuk memasukkan informasi ini ke dalam status rantai Markov atau keluaran jaringan neural, atau Anda dapat membuatnya secara terpisah dan menggabungkan urutan nada dan durasi independen.

Algoritme genetik dapat digunakan untuk mengembangkan bagian ritme. Model sederhana bisa menggunakan kromosom biner di mana 32 bit pertama mewakili pola kick drum, 32 bit kedua sebagai snare, 32 bit ketiga adalah hi hat tertutup, dan seterusnya. Sisi negatifnya dalam kasus ini adalah bahwa mereka membutuhkan umpan balik manusia yang berkelanjutan untuk menilai kesesuaian pola yang baru berevolusi.

Sistem pakar dapat digunakan untuk memverifikasi urutan yang dihasilkan oleh teknik lain. Basis pengetahuan untuk sistem validasi semacam itu mungkin dapat diambil dari buku atau situs teori musik yang bagus. Coba musictheory.net Ricci Adams .

Richard Poole
sumber
10

Ada lebih dari 50 tahun penelitian tentang teknik ini, yang sering diabaikan oleh pengembang yang tidak terbiasa dengan sejarah musik komputer dan komposisi algoritmik. Banyak contoh sistem dan penelitian yang menangani masalah ini dapat ditemukan di sini:

http://www.algorithmic.net

flexatone
sumber
7

Algoritme yang mudah dan efektif adalah dengan menggunakan 1 / f noise alias "noise pink" untuk memilih durasi dan not dari suatu skala. Ini terdengar seperti musik dan bisa menjadi titik awal yang baik.

Algoritme yang lebih baik adalah dengan menggunakan "rantai markov" .. memindai beberapa contoh musik dan membuat tabel probabilitas. Dalam kasus yang paling sederhana, itu akan menjadi sesuatu seperti C 20% cenderung mengikuti A. Untuk membuatnya lebih baik, lihat urutan beberapa nada terakhir, misalnya "CA B" adalah 15% kemungkinan akan diikuti oleh B, dan 4% kemungkinan akan diikuti oleh Bb, dll. Kemudian, pilih saja nada menggunakan probabilitas dari nada yang dipilih sebelumnya. Algoritma yang sangat sederhana ini memberikan hasil yang cukup bagus.

Rantai Markov untuk generasi musik

joeld
sumber
4

Perangkat lunak saya menggunakan teori evolusi terapan untuk "menumbuhkan" musik. Prosesnya mirip dengan The Blind Watchmaker karya Richard Dawkins - MusiGenesis menambahkan elemen musik secara acak, dan kemudian pengguna memutuskan apakah akan menyimpan setiap elemen tambahan atau tidak. Idenya adalah untuk menyimpan apa yang Anda suka dan membuang apa pun yang terdengar tidak benar, dan Anda tidak perlu memiliki pelatihan musik untuk menggunakannya.

Antarmuka berhembus, tapi sudah lama - tuntut saya.

MusiGenesis
sumber
4

Saya selalu menyukai game Lucasarts lama yang menggunakan sistem iMuse, yang menghasilkan soundtrack yang tidak pernah berakhir dan reaktif untuk game tersebut dan sangat musikal (karena sebagian besar masih dibuat oleh seorang komposer). Anda dapat menemukan spesifikasinya (termasuk patennya) di sini: http://en.wikipedia.org/wiki/IMUSE

Nintendo tampaknya menjadi satu-satunya perusahaan yang masih menggunakan pendekatan yang mirip dengan iMuse untuk membuat atau memengaruhi musik dengan cepat.

Kecuali jika proyek Anda sangat eksperimental, saya tidak akan mengabaikan penggunaan komposer - komposer manusia sejati akan menghasilkan lebih banyak hasil musik dan dapat didengar daripada algorythm.

Bandingkan dengan menulis puisi: Anda dapat dengan mudah menghasilkan puisi yang tidak masuk akal yang terdengar sangat avant-garde, tetapi mereplikasi shakespeare dengan algorythm itu sulit, secara halus.

Galghamon
sumber
Benar sekali, tetapi saya pikir pengguna akan jauh lebih tertarik pada musik "ok" atau "layak" yang bereaksi terhadap alur game daripada 5 lagu "hebat" yang sama berulang kali ...
RCIX
@RCIX: Apakah Anda pernah memainkan game dengan sistem iMuse? Ini bereaksi terhadap banyak hal, sangat halus atau jelas, sesuai kebutuhan, tetapi menggunakan musik yang ditulis oleh komposer manusia. Itu tidak menghasilkan musik yang benar-benar baru, belum pernah terdengar sebelumnya, tetapi ia melakukan transisi yang hebat di antara isyarat, dapat mengubah aransemen (membawa instrumen baru, memadukan yang lain), dapat mempercepat atau memperlambat, semua tanpa pernah melewatkan satu ketukan pun. . Ini sangat jauh dari "5 lagu hebat yang sama terus menerus". Saya akan menyebutnya "satu aliran musik terus menerus yang dibentuk agar sesuai dengan mood permainan saat ini".
Galghamon
3

Sudahkah Anda melihat SoundHelix (http://www.soundhelix.com)? Ini adalah kerangka kerja Java Sumber Terbuka untuk pembuatan musik acak algoritmik yang menghasilkan musik yang cukup rapi. Anda dapat menggunakan SoundHelix sebagai aplikasi mandiri, sebagai applet yang tertanam di halaman web, sebagai applet berbasis JNLP atau Anda dapat memasukkannya ke dalam program Java Anda sendiri.

Contoh yang dihasilkan dengan SoundHelix dapat ditemukan di sini: http://www.soundhelix.com/audio-examples

TranceTip
sumber
3

Penelitian tentang generasi musik prosedural yang tidak membosankan sudah ada sejak dulu. Jelajahi edisi lama dan baru Jurnal Musik Komputer http://www.mitpressjournals.org/cmj (tidak ada nama domain sebenarnya?) Ini memiliki artikel teknis yang serius tentang penggunaan aktual untuk pengotak-atik sintesis musik, joki besi solder, penggembala bit, dan peneliti akademis. Ini adalah ulasan halus dan kain wawancara seperti beberapa majalah yang dapat Anda temukan di toko buku besar.

DarenW
sumber
Saya harus menyebutkan bahwa pengetahuan saya tentang majalah ini didasarkan pada langganan yang saya miliki tetapi sudah habis beberapa tahun yang lalu. Saya berasumsi itu masih bagus!
DarenW
2

Topik yang besar. Anda dapat melihat aplikasi iPad saya, Belukar, atau perangkat lunak Ripple saya di morganpackard.com. Menurut pengalaman saya, sebagian besar pendekatan akademis terhadap generasi musik dinamis menghasilkan hal-hal yang terdengar, yah, akademis. Saya pikir hal-hal yang lebih sukses ditemukan di pinggiran klub / dunia elektronika. Monolake adalah pahlawan saya dalam hal ini. Hal yang sangat bisa didengar, sangat banyak dihasilkan oleh komputer. Musik saya sendiri juga tidak buruk. "Alphabet Book" karya Paul Lansky adalah contoh bagus dari musik algoritmik yang sangat bisa didengar, terutama mengingat dia seorang akademisi.

kamar mayat
sumber
1
Juga, lihat komunitas di sekitar alat yang digunakan musisi untuk membuat hal-hal - Data Murni, SuperCollider, Max. Saya akan mulai dengan mencari musisi yang karyanya Anda sukai dan bekerja mundur dari situ, daripada memulai dengan mencari teknik yang menarik secara konseptual.
morgancodes
1

Teknik yang saya pertimbangkan adalah membuat pola musik kecil, hingga bar atau lebih. Tandai pola-pola ini dengan pengenal perasaan seperti 'kegembiraan', 'intens', dll. Saat Anda ingin menghasilkan musik untuk suatu situasi, pilih beberapa pola berdasarkan tag ini dan pilih instrumen yang ingin Anda mainkan. Berdasarkan instrumen, cari tahu cara menggabungkan pola (misalnya pada piano Anda mungkin dapat memainkan semuanya bersama-sama, tergantung pada rentang tangan, pada gitar Anda dapat memainkan not secara berurutan) dan kemudian merendernya ke PCM . Selain itu, Anda dapat mengubah kunci, mengubah kecepatan, menambahkan efek, dll.

Serafina Brocious
sumber
1

Teknik spesifik yang Anda gambarkan adalah sesuatu yang dikerjakan Thomas Dolby sepuluh atau lima belas tahun yang lalu, meskipun sekarang saya tidak dapat mengingat apa yang dia sebut itu sehingga saya tidak dapat memberikan istilah pencarian yang baik.

Tapi lihat ini artikel Wikipedia dan ini halaman Metafilter.

Robert Rossney
sumber
1
Anda sedang memikirkan "musik generatif", dan program bernama "Koan".
MusiGenesis
1

Buku Algorithmic Composition adalah tur yang baik dari beberapa metode yang digunakan:

"Topik yang dibahas adalah: model markov, tata bahasa generatif, jaringan transisi, kekacauan dan kemiripan diri, algoritme genetika, automata seluler, jaringan saraf, dan kecerdasan buatan."

Ini adalah titik awal yang baik untuk topik yang luas ini, namun tidak pernah menjelaskan secara mendalam cara kerja setiap metode. Ini memberikan gambaran umum yang baik tentang masing-masing, tetapi tidak akan cukup jika Anda belum memiliki pengetahuan tentang mereka.

jeremy-george
sumber
0

Kembali ke akhir 90-an, Microsoft menciptakan kontrol ActiveX yang disebut "Kontrol Musik Interaktif" yang melakukan apa yang Anda cari. Sayangnya, mereka sepertinya telah meninggalkan proyek tersebut.

James Curran
sumber
Itu karena musik yang dibuatnya benar-benar meledak, yang merupakan karakteristik umum untuk musik yang dibuat secara algoritmik.
MusiGenesis
Proyek Wolfram Tones yang direferensikan oleh @thekidder di atas sangat sukses karena tidak berhasil. Saya mengharapkan noodling rnd biasa ...
defmeta
0

Jika Anda tertarik pada teori yang lebih dalam tentang bagaimana musik saling berhubungan, situs Bill Sethares memiliki beberapa hal menarik.

Peter K.
sumber
0

Saya telah mempelajari proposal proyek ini - "8.1 " dari kelompok penelitian "Teori dan praksis dalam bahasa pemrograman" dari Universitas Kopenhagen - departemen Ilmu Komputer:

8.1 Pemanenan Otomatis dan Analisis Statistik Korpora Musik

Analisis tradisional partitur terdiri dari satu atau lebih orang yang menganalisis ritme, urutan akor, dan karakteristik lain dari satu karya, yang diatur dalam konteks perbandingan yang sering tidak jelas dari karya-karya lain oleh komposer yang sama atau komposer lain dari periode yang sama.

Analisis otomatis musik tradisional hampir tidak memperlakukan partitur musik, tetapi berfokus pada analisis sinyal dan penggunaan teknik pembelajaran mesin untuk mengekstrak dan mengklasifikasikan di dalam, katakanlah, suasana hati atau genre. Sebaliknya, penelitian awal di DIKU bertujuan untuk mengotomatiskan bagian dari analisis partitur. Nilai tambahnya adalah potensi untuk mengekstraksi informasi dari partitur volume besar yang tidak dapat dengan mudah dilakukan dengan tangan dan tidak dapat dianalisis secara bermakna dengan teknik pembelajaran mesin.

Ini - seperti yang saya lihat - adalah arah yang berlawanan dari pertanyaan Anda, data yang dihasilkan - saya kira - dapat digunakan dalam beberapa contoh generasi prosedural musik.

svrist
sumber
0

Pendapat saya, musik generatif hanya berfungsi jika melalui proses seleksi yang ketat. David Cope, pionir musik algoritmik, akan menghabiskan berjam-jam keluaran musik dari algoritmanya (yang menurut saya sebagian besar berbasis Markov Chain) untuk memilih beberapa yang benar-benar berhasil.

Saya rasa proses seleksi ini dapat diotomatiskan dengan memodelkan karakteristik gaya musik tertentu. Misalnya, gaya "disko" akan memberikan banyak poin untuk bassline yang menampilkan bagian offbeats dan drum dengan jerat di backbeat tetapi mengurangi poin untuk harmoni yang sangat disonan.

Faktanya adalah bahwa proses komposisi musik dipenuhi dengan begitu banyak praktik idiomatik sehingga sangat sulit untuk dimodelkan tanpa pengetahuan khusus di bidangnya.

gregsabo
sumber
0

Saya telah mengerjakan modul Python untuk musik prosedural. Saya baru saja memprogram apa yang saya ketahui tentang not, tangga nada, dan konstruksi akor, lalu dapat membuatnya secara acak menghasilkan konten dari batasan tersebut. Saya yakin ada lebih banyak teori dan pola sistem seperti itu yang bisa diajarkan, terutama oleh seseorang yang lebih memahami subjek. Kemudian Anda dapat menggunakan sistem tersebut sebagai batasan untuk algoritme genetika atau pembuatan konten acak.

Anda dapat membahas penerapan saya di sini , terutama contoh prospek yang dibuat secara acak mungkin berguna bagi Anda. Seseorang dengan pemahaman yang kuat tentang progresi akor dapat membuat struktur lagu dari teknik seperti itu dan menerapkan melodi acak terbatas seperti ini di atasnya. Pengetahuan saya tentang teori musik tidak sejauh itu.

Tetapi pada dasarnya, Anda harus menyandikan teori jenis musik yang ingin Anda hasilkan, dan kemudian menggunakannya sebagai batasan untuk beberapa algoritme untuk mengeksplorasi cakupan teori tersebut secara prosedural.


sumber