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).
procedural
generative
Serafina Brocious
źródło
źródło
Odpowiedzi:
Cellular Automata - przeczytaj .
Możesz też spróbować tutaj .
Edytować:
rakkarage dostarczył inny zasób: http://www.ibm.com/developerworks/java/library/j-camusic/
źródło
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.
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 .
źródło
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
źródło
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
źródło
Dmitri Tymoczko ma tutaj kilka ciekawych pomysłów i przykładów:
http://music.princeton.edu/~dmitri/whatmakesmusicsoundgood.html
źródło
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.
źródło
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.
źródło
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
źródło
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.
źródło
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.
źródło
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.
źródło
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 tę stronę Metafilter.
źródło
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.
źródło
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.
źródło
Nie do końca to, czego szukasz, ale znałem kogoś, kto patrzył na automatyczne generowanie zestawów DJ-skich o nazwie Content Based Music Podobieństwo .
źródło
Jeśli interesują Cię głębsze teorie na temat tego, jak muzyka łączy się ze sobą, witryna Billa Setharesa zawiera kilka interesujących zwrotów akcji.
źródło
Sprawdzałem propozycję projektu - „8.1 ” z grupy badawczej „Teoria i praktyka w języku programowania” z Uniwersytetu Kopenhaskiego - wydział CS:
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.
źródło
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.
źródło
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.
źródło