Proceduralne techniki generowania muzyki [zamknięte]


89

Przez jakiś czas dużo myślałem o proceduralnym generowaniu treści i nigdy nie widziałem zbyt wiele eksperymentów z muzyką proceduralną. Mamy fantastyczne techniki generowania modeli, animacji, tekstur, ale muzyka jest nadal albo całkowicie statyczna, albo po prostu warstwowymi pętlami (np. Spore).

Z tego powodu wymyślałem optymalne techniki generowania muzyki i jestem ciekawy, co myślą inni ludzie. Nawet jeśli wcześniej tego nie rozważałeś, co myślisz, że będzie dobrze działać? Proszę o jedną technikę na odpowiedź i jeśli to możliwe, podaj przykłady. Technika może wykorzystywać istniejące dane lub generować muzykę całkowicie od zera, być może na podstawie jakiegoś rodzaju danych wejściowych (nastrój, prędkość, cokolwiek).


19
Wreszcie pytanie muzyczne o programowanie / tworzenie / generowanie muzyki! : D
Oddmund

Odpowiedzi:


28

Cellular Automata - przeczytaj .

Możesz też spróbować tutaj .

Edytować:

rakkarage dostarczył inny zasób: http://www.ibm.com/developerworks/java/library/j-camusic/


1
Wolfram jest taki mądry! Świetna robota, sprawienie, że tego rodzaju rzeczy też są tak dostępne ...
defmeta,

Nie mogłem go uruchomić na moim pudełku Ubuntu. :(
Calmarius


Problem w tym, że jest uwięziony w systemie 12-tonowym. Prawdziwy algorytm generowania muzyki będzie lepszy od normalnego instrumentarium i będzie miał swobodną kontrolę tonów harmonicznych. Fortepian został zaprojektowany z określonym systemem brzmień, który został przyjęty jako standard w tamtych czasach. Mimo to 12-tonowy system był genialny jak na swoje czasy.
Timothy Swan

42

Najbardziej skuteczny system będzie prawdopodobnie łączył kilka technik. Wątpię, czy znajdziesz jedną technikę, która dobrze sprawdza się przy generowaniu melodii, harmonii, rytmu i basu we wszystkich gatunkach muzycznych.

Na przykład łańcuchy Markowa dobrze nadają się do generowania sekwencji melodycznych i harmonicznych. Ta metoda wymaga analizy istniejących utworów w celu zbudowania prawdopodobieństwa przejścia łańcuchowego. Prawdziwe piękno łańcuchów Markowa polega na tym, że stany mogą być, czym chcesz.

  • Aby wygenerować melodię, wypróbuj numery nut względem klawiszy (np. Jeśli tonacja jest c-moll, C będzie równe 0, D będzie równe 1, D # będzie równe 2 i tak dalej)
  • Aby wygenerować harmonię, wypróbuj kombinację numerów nut zależnych od klucza dla prymy akordu, rodzaju akordu (dur, moll, zmniejszony, wzmocniony itp.) I odwrócenia akordu (pryma, pierwszy lub drugi)

Sieci neuronowe są dobrze przystosowane do przewidywania (prognozowania) szeregów czasowych , co oznacza, że ​​są równie dobrze przystosowane do „przewidywania” sekwencji muzycznej, gdy są trenowane w odniesieniu do istniejących popularnych melodii / harmonii. Końcowy rezultat będzie podobny do tego z łańcucha Markowa. Nie przychodzi mi do głowy żadna korzyść w porównaniu z podejściem opartym na łańcuchu Markowa, poza zmniejszeniem śladu pamięci.

Oprócz wysokości dźwięku będziesz potrzebował czasu, aby określić rytm generowanych nut lub akordów. Możesz zdecydować się na włączenie tej informacji do stanów łańcucha Markowa lub wyjść sieci neuronowej, lub możesz wygenerować je oddzielnie i połączyć niezależne sekwencje wysokości tonu i czasu trwania.

Algorytmy genetyczne mogą służyć do ewolucji sekcji rytmicznych. Prosty model mógłby wykorzystywać binarny chromosom, w którym pierwsze 32 bity reprezentują wzór bębna basowego, drugie 32 bity to werbel, trzecie 32 bity to zamknięty hi hat i tak dalej. Wadą tego przypadku jest to, że wymagają one ciągłej ludzkiej informacji zwrotnej, aby ocenić przydatność nowo wyewoluowanych wzorców.

Do weryfikacji sekwencji generowanych innymi technikami można wykorzystać system ekspertowy . Bazę wiedzy dla takiego systemu walidacji można prawdopodobnie pobrać z dowolnej dobrej książki z teorii muzyki lub strony internetowej. Wypróbuj musictheory.net Ricci Adamsa .


10

Istnieje ponad 50 lat badań nad tymi technikami, często pomijanymi przez programistów niezaznajomionych z historią muzyki komputerowej i algorytmiczną kompozycją. Liczne przykłady systemów i badań, które rozwiązują te problemy, można znaleźć tutaj:

http://www.algorithmic.net


7

Prostym i dość skutecznym algorytmem jest użycie szumu 1 / f, czyli „szumu różowego”, do wybierania czasu trwania i nut ze skali. To brzmi trochę jak muzyka i może być dobrym punktem wyjścia.

Lepszym algorytmem jest użycie „łańcuchów markowa” .. zeskanowanie przykładowej muzyki i zbudowanie tabeli prawdopodobieństw. W najprostszym przypadku byłoby 20%, że C będzie następowało po A. Aby to poprawić, spójrz na sekwencję kilku ostatnich nut, na przykład po „CA B” 15% prawdopodobnie nastąpi po B, i 4%, po których prawdopodobnie nastąpi Bb itd. Następnie po prostu wybierz notatki, korzystając z prawdopodobieństw poprzednio wybranych nut. Ten niezwykle prosty algorytm generuje całkiem niezłe wyniki.

Łańcuchy Markowa dla generacji muzyki



4

Moje oprogramowanie wykorzystuje zastosowaną teorię ewolucji do „uprawy” muzyki. Proces jest podobny do programu The Blind Watchmaker Richarda Dawkinsa - MusiGenesis losowo dodaje elementy muzyczne, a następnie użytkownik decyduje, czy zachować każdy dodany element. Chodzi o to, aby po prostu zachować to, co lubisz i porzucić to, co nie brzmi dobrze, i nie musisz mieć żadnego szkolenia muzycznego, aby to wykorzystać.

Interfejs wieje, ale jest stary - pozwól mi.


4

Zawsze podobały mi się stare gry Lucasarts, które wykorzystywały system iMuse, który tworzył niekończącą się, reaktywną ścieżkę dźwiękową do gry i był bardzo muzyczny (ponieważ większość z nich nadal była tworzona przez kompozytora). Specyfikacje (w tym patent) można znaleźć tutaj: http://en.wikipedia.org/wiki/IMUSE

Wydaje się, że Nintendo jest jedyną firmą, która nadal stosuje podejście podobne do iMuse do tworzenia lub wpływania na muzykę w locie.

O ile twój projekt nie jest bardzo eksperymentalny, nie zrezygnowałbym z wykorzystania kompozytora - prawdziwy ludzki kompozytor przyniesie znacznie bardziej muzyczne i słuchalne rezultaty niż algorytm.

Porównaj to z pisaniem wiersza: można łatwo tworzyć wiersze niesene, które brzmią bardzo awangardowo, ale powielanie Szekspira za pomocą algorytmu jest trudne, delikatnie mówiąc.


To prawda, ale myślę, że użytkownicy byliby znacznie bardziej zainteresowani muzyką „ok” lub „przyzwoitą”, która reaguje na rozgrywkę, niż tymi samymi 5 „świetnymi” utworami w kółko…
RCIX

@RCIX: Czy kiedykolwiek grałeś w grę z systemem iMuse? Reaguje na wiele rzeczy, jest bardzo subtelny lub oczywisty, zgodnie z wymaganiami, ale wykorzystuje muzykę napisaną przez ludzkiego kompozytora. Nie generuje zupełnie nowej, nigdy wcześniej nie słyszanej muzyki, ale robi świetne przejścia między wskazówkami, może zmieniać aranżacje (wprowadzać nowe instrumenty, mieszać inne), może przyspieszać lub zwalniać, a wszystko to bez utraty rytmu . To jest bardzo dalekie od „powtarzania tych samych 5 wspaniałych utworów”. Nazwałbym to „jednym ciągłym strumieniem muzyki dostosowanym do obecnego nastroju gry”.
Galghamon

3

Czy spojrzałeś na SoundHelix (http://www.soundhelix.com)? Jest to platforma Java typu Open Source do algorytmicznego tworzenia losowej muzyki, która tworzy całkiem zgrabną muzykę. Możesz używać SoundHelix jako samodzielnej aplikacji, jako apletu osadzonego na stronie internetowej, jako aplet oparty na JNLP lub możesz dołączyć go do własnego programu Java.

Przykłady wygenerowane za pomocą SoundHelix można znaleźć tutaj: http://www.soundhelix.com/audio-examples


3

Badania nad niezbyt nudnym procesowym generowaniem muzyki sięgają wstecz. Przejrzyj stare i nowe wydania Computer Music Journal http://www.mitpressjournals.org/cmj (nie ma prawdziwej nazwy domeny?). Zawiera on poważne artykuły techniczne, które są rzeczywiście przydatne dla majsterkowiczów syntezy muzyki, dżokejów lutowniczych, pasterzy i badaczy akademickich. Nie jest to puszysta szmata z recenzjami i wywiadami, jak niektóre z magazynów, które można znaleźć w głównych księgarniach.


Powinienem wspomnieć, że moja wiedza na temat tego magazynu opiera się na subskrypcji, którą miałem, ale wygasła kilka lat temu. zakładam, że nadal jest tak dobry!
DarenW

2

Taki duży temat. Możesz rzucić okiem na moją aplikację na iPada, Thicket lub moje oprogramowanie Ripple na morganpackard.com. Z mojego doświadczenia wynika, że ​​większość akademickich podejść do dynamicznego generowania muzyki wymyśla rzeczy, które brzmią akademicko. Myślę, że bardziej udane kawałki można znaleźć na obrzeżach świata klubowego / elektronicznego. Monolake jest pod tym względem moim bohaterem. Bardzo słuchalne rzeczy, bardzo generowane komputerowo. Moja własna muzyka też nie jest zła. „Alphabet Book” Paula Lansky'ego jest dobrym przykładem niezwykle łatwej do słuchania muzyki algorytmicznej, zwłaszcza biorąc pod uwagę, że jest on akademikiem.


1
Sprawdź także społeczności wokół narzędzi, których muzycy używają do tworzenia rzeczy - Pure Data, SuperCollider, Max. Zacząłbym od znalezienia muzyka, którego twórczość ci się podoba, i cofając się od niej, zamiast szukać koncepcyjnie interesujących technik.
morgancodes

1

Technika, którą rozważałem, polega na tworzeniu małych wzorów muzycznych, do mniej więcej taktu. Oznacz te wzorce identyfikatorami uczuć, takimi jak „podekscytowanie”, „intensywność” itp. Jeśli chcesz wygenerować muzykę dla danej sytuacji, wybierz kilka wzorów opartych na tych znacznikach i wybierz instrument, na którym chcesz na nim grać. Opierając się na instrumencie, wymyśl, jak łączyć wzory (np. Na fortepianie możesz grać wszystko razem, w zależności od rozpiętości dłoni, na gitarze możesz grać nuty w krótkich odstępach czasu), a następnie wyrenderuj to na PCM . Ponadto możesz zmienić klucz, zmienić prędkość, dodać efekty itp.


1

Specyficzna technika, którą opisujesz, jest czymś, nad czym Thomas Dolby pracował dziesięć lub piętnaście lat temu, chociaż nie pamiętam teraz, jak ją nazwał, więc nie mogę podać dobrego wyszukiwanego hasła.

Ale zobacz ten artykuł w Wikipedii i stronę Metafilter.


1
Myślisz o „muzyce generatywnej” i programie o nazwie „Koan”.
MusiGenesis

1

Książka Algorithmic Composition to dobry przewodnik po kilku zastosowanych metodach:

„Omówione tematy to: modele Markowa, gramatyki generatywne, sieci przejściowe, chaos i samopodobieństwo, algorytmy genetyczne, automaty komórkowe, sieci neuronowe i sztuczna inteligencja”.

Jest to dobry punkt wyjścia do tego szerokiego tematu, jednak nigdy nie opisuje szczegółowo, jak działa każda metoda. Zapewnia dobry przegląd każdego z nich, ale nie wystarczy, jeśli nie masz jeszcze o nich wiedzy.


0

Pod koniec lat 90-tych firma Microsoft stworzyła formant ActiveX o nazwie „Interactive Music Control”, który spełniał dokładnie to, czego szukał. Niestety wydaje się, że porzucili projekt.


Dzieje się tak dlatego, że muzyka, którą stworzył, całkowicie wybuchła, co jest dość powszechną cechą muzyki skomponowanej algorytmicznie.
MusiGenesis

Projekt Wolfram Tones, do którego odwołuje się @thekidder powyżej, jest niezwykle skuteczny w nie dmuchaniu. Spodziewałem się zwykłego rnd
kluski



0

Sprawdzałem propozycję projektu - „8.1 ” z grupy badawczej „Teoria i praktyka w języku programowania” z Uniwersytetu Kopenhaskiego - wydział CS:

8.1 Automatyczne zbieranie i analiza statystyczna korpusów muzycznych

Tradycyjna analiza nut polega na tym, że jedna lub więcej osób analizuje rytm, sekwencje akordów i inne cechy pojedynczego utworu, osadzone w kontekście często mglistego porównania innych utworów tego samego kompozytora lub innych kompozytorów z tego samego okresu.

Tradycyjna automatyczna analiza muzyki ledwie traktowała zapis nutowy, ale skupiała się na analizie sygnałów i wykorzystaniu technik uczenia maszynowego do wydobywania i klasyfikowania, powiedzmy, nastroju lub gatunku. Z kolei początkowe badania w DIKU mają na celu zautomatyzowanie części analizy nut. Wartością dodaną jest możliwość wydobywania informacji z dużych ilości zapisów nutowych, których nie można łatwo wykonać ręcznie i których nie można w znaczący sposób przeanalizować za pomocą technik uczenia maszynowego.

To - jak to widzę - jest odwrotnym kierunkiem twojego pytania, które wygenerowane dane - wyobrażam sobie - mogłyby zostać wykorzystane w niektórych przypadkach proceduralnego generowania muzyki.


0

Uważam, że muzyka generatywna działa tylko wtedy, gdy przechodzi rygorystyczny proces selekcji. David Cope, pionier muzyki algorytmicznej, przeszedł przez godziny pracy muzycznej z wykorzystaniem swoich algorytmów (które, jak sądzę, opierały się głównie na Markov Chain), aby wybrać kilka, które faktycznie okazały się dobre.

Myślę, że ten proces selekcji można zautomatyzować, modelując cechy konkretnego stylu muzycznego. Na przykład styl „disco” dawałby wiele punktów za linię basową, która zawiera niecodzienne rytmy i partie perkusyjne z werblami na backbeatach, ale odejmuje punkty za mocno dysonansowe harmonie.

Faktem jest, że proces komponowania muzyki jest wypełniony tak wieloma idiomatycznymi praktykami, że bardzo trudno je modelować bez konkretnej wiedzy w tej dziedzinie.


0

Pracowałem nad modułem Pythona do obsługi muzyki proceduralnej. Właśnie zaprogramowałem to, co wiem o nutach, skalach i konstrukcji akordów, a następnie mogłem pozwolić mu na losowe generowanie treści z tych ograniczeń. Jestem pewien, że jest więcej teorii i wzorców, których takiego systemu można by nauczyć, zwłaszcza przez kogoś, kto lepiej rozumie przedmiot. Następnie możesz użyć tych systemów jako ograniczeń dla algorytmów genetycznych lub losowego generowania treści.

Można przejść nad moją implementację tutaj , zwłaszcza generowane losowo ołów przykładem może być przydatna. Ktoś, kto ma solidną wiedzę na temat progresji akordów, mógłby stworzyć strukturę utworu z takich technik i zastosować do niej ograniczone, przypadkowe melodie, takie jak ta. Moja znajomość teorii muzyki nie rozciąga się tak daleko.

Ale w zasadzie musisz zakodować teorię rodzaju muzyki, którą chcesz wygenerować, a następnie użyć jej jako ograniczenia dla jakiegoś algorytmu do proceduralnego badania zakresu tej teorii.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.