Prosedürel müzik oluşturma teknikleri [kapalı]


89

Bir süredir prosedürel içerik üretimi üzerine çok düşündüm ve prosedürel müzikle ilgili çok fazla deney görmedim. Modeller, animasyonlar, dokular oluşturmak için harika tekniklere sahibiz, ancak müzik hala ya tamamen durağan ya da basitçe katmanlı döngüler (örn. Spor).

Bu nedenle, optimum müzik oluşturma tekniklerini düşünüyordum ve diğer insanların aklında ne olduğunu merak ediyorum. Daha önce düşünmemiş olsanız bile, neyin işe yarayacağını düşünüyorsunuz? Cevap başına bir teknik lütfen ve mümkünse örnekler ekleyin. Teknik, mevcut verileri kullanabilir veya müziği tamamen sıfırdan oluşturabilir, belki bir tür girdiyle (ruh hali, hız, her neyse).


19
Nihayet müzik programlamak / yapmak / üretmekle ilgili bir müzik sorusu! : D
Oddmund

Yanıtlar:


28

Hücresel Otomata - okuyun .

Ayrıca buradan deneyebilirsiniz .

Düzenle:

rakkarage başka bir kaynak sağladı: http://www.ibm.com/developerworks/java/library/j-camusic/


1
Wolfram çok akıllı! Bu tür şeyleri bu kadar erişilebilir kılmak da harika bir işti ...
defmeta

Ubuntu kutumda çalışmasını sağlayamadım. :(
Calmarius


Bununla ilgili sorun, 12 tonlu sistemde sıkışıp kalmasıdır. Gerçek bir müzik üretme algoritması, normal enstrümantasyondan daha üstün olacak ve serbest bir harmonik ton kontrolüne sahip olacaktır. Piyano, günümüzde standart olarak kabul edilen özel bir ton sistemi ile tasarlanmıştır. Yine de, 12 tonlu sistem, zamanı için mükemmeldi.
Timothy Swan

42

En başarılı sistem muhtemelen birkaç tekniği birleştirecektir. Tüm müzik türlerinde melodi, armoni, ritim ve bas dizisi üretimi için iyi çalışan bir teknik bulacağınızdan şüpheliyim.

Örneğin Markov zincirleri , melodik ve harmonik dizi üretimi için çok uygundur. Bu yöntem, zincir geçiş olasılıklarını oluşturmak için mevcut şarkıların analizini gerektirir. Markov zincirlerinin gerçek güzelliği, devletlerin istediğiniz gibi olabilmesidir.

  • Melodi üretimi için, anahtara göre nota numaralarını deneyin (örneğin, anahtar C minör ise, C 0, D 1, D # 2 vb.)
  • Armoni üretimi için, akorun kökü, akor türü (büyük, küçük, azaltılmış, artırılmış vb.) Ve akorun ters çevrilmesi (kök, birinci veya ikinci) için anahtara göre nota numaralarının bir kombinasyonunu deneyin.

Sinir ağları , zaman serisi tahmini için çok uygundur (tahmin) ; bu, mevcut popüler melodilere / armonilere göre eğitildiklerinde bir müzik dizisini 'tahmin etmek' için eşit derecede uygun oldukları anlamına gelir. Nihai sonuç, Markov zinciri yaklaşımına benzer olacaktır. Bellek ayak izini azaltmak dışında Markov zinciri yaklaşımına göre herhangi bir fayda düşünemiyorum.

Perdeye ek olarak, oluşturulan notaların veya akorların ritmini belirlemek için süreye ihtiyacınız olacaktır. Bu bilgileri Markov zincir durumlarına veya sinir ağı çıktılarına dahil etmeyi seçebilir veya ayrı ayrı oluşturabilir ve bağımsız adım ve süre dizilerini birleştirebilirsiniz.

Genetik algoritmalar ritim bölümlerini geliştirmek için kullanılabilir. Basit bir model ikili bir kromozom kullanabilir , ilk 32 bitin bir vuruş davulunun modelini temsil ettiği, ikinci 32 bitin bir trampet, üçüncü 32 bitin kapalı bir hi-hat vb. Olduğu . Bu durumda dezavantajı, yeni gelişen modellerin uygunluğunu değerlendirmek için sürekli insan geri bildirimine ihtiyaç duymalarıdır.

Bir uzman sistem başka tekniklerle üretilen dizileri doğrulamak için kullanılabilir. Böyle bir onaylama sistemi için bilgi tabanı, muhtemelen herhangi bir iyi müzik teorisi kitabından veya web sitesinden kaldırılabilir. Ricci Adams'ın musictheory.net'ini deneyin .


10

Bilgisayar müziği ve algoritmik kompozisyon tarihine aşina olmayan geliştiriciler tarafından genellikle gözden kaçırılan bu tekniklerle ilgili 50 yıldan fazla araştırma yapılmıştır. Bu sorunları ele alan çok sayıda sistem ve araştırma örneği burada bulunabilir:

http://www.algorithmic.net


7

Kolay ve biraz etkili bir algoritma, bir ölçekten süreleri ve notaları seçmek için 1 / f gürültüsü, yani "pembe gürültü" kullanmaktır. Bu kulağa müzik gibi geliyor ve iyi bir başlangıç ​​noktası olabilir.

Daha iyi bir algoritma "markov zincirleri" kullanmaktır .. bazı örnek müzikleri taramak ve olasılıklar tablosu oluşturmaktır. En basit durumda, C gibi bir şeyin A'yı takip etme olasılığı% 20 olacaktır. Bunu daha iyi hale getirmek için, son birkaç notanın sırasına bakın, örneğin "CA B"% 15 olasılıkla B tarafından takip edilir, ve% 4'ünün ardından bir Bb vb. gelme olasılığı yüksektir. Ardından, önceden seçilen notların olasılıklarını kullanarak notları seçin. Bu oldukça basit algoritma oldukça iyi sonuçlar verir.

Müzik üretimi için Markov zincirleri



4

Yazılımım müziği "büyütmek" için uygulamalı evrim teorisini kullanıyor. Süreç, Richard Dawkins'in Kör Saatçi programına benzer - MusiGenesis müzikal öğeleri rastgele ekler ve ardından kullanıcı eklenen her bir öğeyi tutup tutmayacağına karar verir. Buradaki fikir, sevdiğin şeyi saklamak ve kulağa doğru gelmeyen şeyleri atmak ve onu kullanmak için herhangi bir müzik eğitimi almana gerek yok.

Arayüz esiyor, ama eski - beni dava et.


4

Oyun için hiç bitmeyen, reaktif bir film müziği üreten ve çok müzikal olan iMuse sistemini kullanan eski Lucasarts oyunlarını her zaman sevmişimdir (çünkü çoğu hala bir besteci tarafından yaratılmıştır). Teknik özellikleri (patent dahil) burada bulabilirsiniz: http://en.wikipedia.org/wiki/IMUSE

Nintendo, müziği anında yaratmak veya etkilemek için iMuse'a benzer bir yaklaşımı hala kullanan tek şirket gibi görünüyor.

Projeniz çok deneysel olmadıkça, bir besteciyi kullanmaktan vazgeçmem - gerçek bir insan besteci, bir algoritmadan çok daha müzikal ve dinlenebilir sonuçlar üretecektir.

Bunu bir şiir yazmakla karşılaştırın: Kulağa çok avangart gelen, anlamsız şiirler kolayca üretebilirsiniz, ancak shakespeare'i bir algoritma ile kopyalamak, kibarca söylemek zordur.


Çok doğru, ancak kullanıcıların tekrar tekrar aynı 5 "harika" parçadan ziyade oyuna tepki veren "iyi" veya "düzgün" müzikle çok daha fazla ilgileneceğini düşünüyorum ...
RCIX

@RCIX: iMuse sistemiyle hiç oyun oynadınız mı? Pek çok şeye tepki verir, gerektiği gibi çok ince veya açıktır, ancak bir insan bestecinin yazdığı müziği kullanır. Tamamen yeni, daha önce hiç duyulmamış müzik üretmez, ancak işaretler arasında harika geçişler yapar, düzenlemeleri değiştirebilir (yeni enstrümanlar getirebilir, diğerlerini harmanlayabilir), hızlanabilir veya yavaşlayabilir, hepsi bir ritmi bile kaçırmadan . Bu, "tekrar tekrar aynı 5 harika parça" dan çok uzaktır. Ben buna "oyunun şu andaki havasına uyacak şekilde şekillendirilmiş kesintisiz bir müzik akışı" derdim.
Galghamon

3

SoundHelix'e (http://www.soundhelix.com) bir göz attınız mı? Oldukça düzgün müzik üreten algoritmik rastgele müzik yaratımı için bir Açık Kaynak Java çerçevesi. SoundHelix'i bağımsız bir uygulama olarak, bir web sayfasına gömülü bir uygulama olarak, JNLP tabanlı bir uygulama olarak kullanabilir veya kendi Java programınıza dahil edebilirsiniz.

SoundHelix ile oluşturulan örnekler burada bulunabilir: http://www.soundhelix.com/audio-examples


3

Sıkıcı olmayan prosedürel müzik üretimi üzerine yapılan araştırmalar çok eskilere dayanıyor. Computer Music Journal'ın eski ve yeni sayılarına göz atın http://www.mitpressjournals.org/cmj (gerçek alan adı yok mu?) Bu, müzik sentezi tamircileri, lehim demir jokeyleri, ısırgan çobanları ve akademik araştırmacılar için gerçek kullanımda ciddi teknik makalelere sahiptir. Büyük kitapçılarda bulabileceğiniz birkaç dergi gibi kabarık bir eleştiri ve röportaj paçavrası değil.


Bu dergi hakkındaki bilgilerimin birkaç yıl önce sahip olduğum aboneliğe dayandığını belirtmeliyim. hala iyi olduğunu varsayıyorum!
DarenW

2

Ne kadar büyük bir konu. Morganpackard.com adresinden iPad uygulamama, Thicket'e veya Ripple yazılımıma bakabilirsiniz. Deneyimlerime göre, dinamik müzik üretimine yönelik akademik yaklaşımların çoğu kulağa akademik kulağa hoş gelen şeylerle geliyor. Bence daha başarılı şeyler kulüp / elektronik dünyasının sınırlarında bulunuyor. Monolake bu açıdan benim kahramanım. Çok dinlenebilir şeyler, çok bilgisayar tarafından üretilmiş. Benim müziğim de fena değil. Paul Lansky'nin "Alfabe Kitabı", özellikle akademik bir adam olduğu düşünüldüğünde, son derece dinlenebilir algoritmik müziğin güzel bir örneğidir.


1
Ayrıca, müzisyenlerin bir şeyler oluşturmak için kullandıkları araçların etrafındaki topluluklara da göz atın - Pure Data, SuperCollider, Max. Kavramsal olarak ilginç teknikler aramaktansa, çalışmasını beğendiğiniz ve ondan geriye doğru çalışan bir müzisyen bulmakla başlayacağım.
morgancodes

1

Düşündüğüm teknik, bir bara kadar küçük müzikal kalıplar yaratmaktır. Bu kalıpları "heyecan", "yoğun" gibi duygu tanımlayıcılarla etiketleyin. Bir durum için müzik oluşturmak istediğinizde, bu etiketlere göre birkaç kalıp seçin ve birlikte çalmak istediğiniz bir enstrüman seçin. Enstrümana bağlı olarak, kalıpları nasıl birleştireceğinizi bulun (örneğin, bir piyanoda hepsini birlikte çalabilirsiniz, el aralığına bağlı olarak, notaları hızlı bir şekilde art arda çalabilirsiniz) . Ek olarak, anahtarı değiştirebilir, hızı değiştirebilir, efektler ekleyebilirsiniz vb.


1

Tanımladığınız spesifik teknik, Thomas Dolby'nin on ya da on beş yıl önce üzerinde çalıştığı bir şey, ancak şimdi ona ne dediğini hatırlayamadığım için size iyi bir arama terimi veremem.

Ancak bu Wikipedia makalesine ve bu Metafilter sayfasına bakın.


1
"Üretken müzik" ve "Koan" adlı programı düşünüyorsunuz.
MusiGenesis

1

Algorithmic Composition kitabı , kullanılan çeşitli yöntemlerin iyi bir turudur:

"İşlenen konular şunlardır: markov modelleri, üretken gramerler, geçiş ağları, kaos ve öz-benzerlik, genetik algoritmalar, hücresel otomata, sinir ağları ve yapay zeka."

Bu geniş konu hakkında iyi bir başlangıç ​​noktasıdır, ancak her yöntemin nasıl çalıştığını asla derinlemesine açıklamaz. Her biri hakkında iyi bir genel bakış sağlar, ancak bunlar hakkında henüz bilginiz yoksa yeterli olmayacaktır.


0

90'ların sonlarında Microsoft, aradığınız şeyi tam olarak yapan "Etkileşimli Müzik Kontrolü" adlı bir ActiveX denetimi yarattı. Ne yazık ki projeyi terk etmiş görünüyorlar.


Bunun nedeni, algoritmik olarak bestelenmiş müzik için oldukça yaygın bir özellik olan yarattığı müziğin tamamen patlamasıdır.
MusiGenesis

Yukarıda @thekidder tarafından atıfta bulunulan Wolfram Tones projesi, üflememe konusunda oldukça başarılı. Her zamanki RND noodling bekliyordum ...
defmeta



0

Bu proje önerisini yapmaya çalışıyordum - Kopenhag Üniversitesi Bilgisayar Bilimleri bölümünden "Programlama dilinde teori ve praksis" araştırma grubundan "8.1 ":

8.1 Otomatik Toplama ve Müzik Kuruluşunun İstatistiksel Analizi

Nota müziğinin geleneksel analizi, aynı besteci veya aynı dönemden diğer besteciler tarafından diğer parçaların genellikle belirsiz bir karşılaştırması bağlamında belirlenen tek bir parçanın ritmini, akor dizilerini ve diğer özelliklerini analiz eden bir veya daha fazla kişiden oluşur.

Geleneksel otomatik müzik analizi, notalar üzerinde neredeyse hiç işlem görmedi, ancak sinyal analizine ve örneğin ruh hali veya tür içinde ayıklamak ve sınıflandırmak için makine öğrenimi tekniklerinin kullanımına odaklandı. Buna karşılık, DIKU'da yeni başlayan araştırma, notalar analizinin bölümlerini otomatikleştirmeyi amaçlamaktadır. Katma değer, elle kolayca yapılamayan ve makine öğrenimi teknikleriyle anlamlı bir şekilde analiz edilemeyen büyük hacimli nota notalarından bilgi çıkarma potansiyelidir.

Bu - gördüğüm kadarıyla - oluşturulan verilerin - sanırım - sorunun tersi yönü, bazı prosedürel müzik üretimi örneklerinde kullanılabilir.


0

Bence üretken müzik ancak titiz bir seçim sürecinden geçtiğinde işe yarıyor. Algoritmik müziğin öncüsü olan David Cope, aslında iyi sonuç veren birkaçını seçmek için algoritmalarından (sanırım çoğunlukla Markov Chain temelliydi) saatlerce müzik çıktısından geçecekti.

Sanırım bu seçim süreci, belirli bir müzik tarzının özelliklerini modelleyerek otomatik hale getirilebilir. Örneğin, bir "disko" tarzı, sıradışı ritimler ve davul kısımları arka vuruşlarda trampet içeren ancak aşırı derecede uyumsuz armoniler için puanlar çıkaran bir bas hattı için çok sayıda puan verir.

Gerçek şu ki, müzik besteleme süreci o kadar çok deyimsel pratikle dolu ki, alan hakkında özel bilgi olmadan modellenmeleri çok zor.


0

Prosedürel müzik için bir Python modülü üzerinde çalışıyorum. Notalar, ölçekler ve akor yapısı hakkında bildiklerimi henüz programladım, ardından bu kısıtlamalardan rastgele içerik oluşturmasına izin verebildim. Eminim ki böyle bir sistemin öğretilebileceği daha çok teori ve kalıp vardır, özellikle de konuyu daha iyi anlayan biri tarafından. Daha sonra bu sistemleri genetik algoritmalar veya rastgele içerik üretimi için kısıtlamalar olarak kullanabilirsiniz.

Burada benim uygulamamın üzerinden geçebilirsiniz , özellikle rastgele oluşturulmuş olası satış örneği sizin için yararlı olabilir. Akor ilerlemelerini sağlam bir şekilde anlayan biri, bunun gibi tekniklerden bir şarkı yapısı oluşturabilir ve bunun üzerine bunun gibi kısıtlı rastgele melodiler uygulayabilir. Müzik teorisi hakkındaki bilgim o kadar uzağa gitmiyor.

Ancak temelde, üretmek istediğiniz müzik türünün teorisini kodlamanız ve ardından bunu, bu teorinin kapsamını prosedürel olarak keşfetmek için bir algoritma için bir kısıtlama olarak kullanmanız gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.