|
|
EwolucjaPoniżej opisano zasady ewolucji fraz muzycznych jaka ma miejsce w programie MusicGen. Autorzy zakładają, że czytelnik posiada podstawowe wiadomości z dziedziny Algorytmy ewolucyjne. W przeciwnym przypadku odsyłamy do książek:
Dużo informacji związanych z tematem znajduje się również w sieci, polecamy stronę odnośników jako początek poszukiwań. Zasady ewolucji i selekcjiProces ewolucyji w programie MusicGen skład się z następujących faz:
Zastosowany model ewolucji zakłada stałą wielkość populacji w trakcie procesu ewolucji. Odstępstwo od tej zasady jest dopuszczalne w następującym przypadku- jeżeli użytkownik usunie z populacji frazy. Nowe frazy wstawiane na miejsce usuniętych zostaną dodane jedynie jako powstałe na drodze krzyżowania. Ze wzgędu na niedeterminizm tej fazy procesu ewolucji populacja może się zmniejszyć. Generowanie rozwiązań początkowychRozwiązania początkowe, występujące w procesie ewolucji, dzielimy na dwa typy:
GenotypGenotyp osobnika (fraza muzyczna) składa się z genów opisujących następujące własności:
OperatoryKrzyżowanie
Mutacja
Nowe KrzyżowanieW ogólności, omawiane krzyżowanie pomyślane zostało tak, by do uzyskanego wyniku przenieść jak najwięcej cech wspólnych osobników wejściowych, o ile takie cechy udało się znaleźć. Nowy osobnik tworzony jest na podstawie dwóch "rodziców" w 2 etapach:
Miary odległości – wybór wartości wspólnejFunkcje miary odległości używane są do ustalenia wspólnej wartości danego genu, gdy dwie różniące się melodie należy przetransformować do możliwie najbardziej podobnych reprezentacji oraz podczas mutacji, tak by prawdopodobieństwo przyjęcia pewnej nowej wartości było tym większe, im jest ona bliższa wartości oryginalnej. W ogólności, prawdopodobieństwo wylosowania danej aleli jest proporcjonalne do kwadratu odległości do odpowiedniej wartości oryginalnej frazy w przypadku mutacji, a do sumy kwadratów tych odległości – w przypadku krzyżowania. Długość melodii (w sensie liczby taktów), metrum i tempo pozwalają na bezpośrednie wzięcie ich wartości jako miary; w przypadku skali konieczne było stworzenie specjalnej funkcji odległości. Odległość skalOdległość od skali A do B jest zależna od 4 składników:
TransformacjeZmiana skaliPodczas transformacji skali frazy do z góry zadanej innej skali, tworzony jest wektor par .... Należy dodać, że wspomniany "wektor mapowania" tworzony jest wyłącznie na podstawie tonów zawarytch w rozpatrywanych skalach, nie uwzględnia się więc faktycznej zawartości frazy. Wektor budowany jest z pomocą algorytmu porównywania łańcuchów tekstowych (kolejne znaki "stringów" odpowiadają tonom tworzącym kolejne stopnie skali) tak, by możliwie jak najwięcej ich wspólnych fragmentów było mapowanych 1:1. Zmiana długości melodiiZmianę długości frazy można uzyskać w ogólności na 2 sposoby: usunięcia lub powtórzenia fragmentu melodii oraz rozciągnięcia lub ściśnięcia kilku taktów. Jeżeli melodia ma zostać skrócona lub wydłużona co najmniej dwukrotnie, stosuje się rozciągniecie lub ściśniecie całej melodii, równocześnie kompensując te modyfikacje zmiana tempa, tak by melodia brzmiała tak samo (przykład: dana jest fraza składająca się z 4 taktów, która trzeba przetransformować do 10 – w pierwszej kolejności dzieli się ją na 8 taktów, podwajając tempo i zachowując metrum, a dopiero po tej operacji wykonywane jest wydłużenie o 2 takty podstawową techniką). Usuwanie i powielanie fragmentu frazyWewnątrz melodii szuka się przedziałów o długości całkowitej liczby taktów, takich, ze:
lub
Rozpatrywane są także przedziały o długości różniącej się od pożądanej, w szczególności bierze się pod uwagę nie usuwanie żadnego fragmentu z melodii (co jest szczególnie istotne, gdy nie znaleziono przedziałów spełniających warunek (a) lub (b)). Prawdopodobieństwo wylosowania każdego z przedziałów zależne jest od zgodności sąsiedztwa: „melodycznej” - tj. bliskości (w sensie interwału muzycznego) dźwięków bezpośrednio poprzedzających i następujących po granicach przedziału oraz „czasowej” – odległość od najbliższych zdarzeń początku/końca nuty następujących po obu granicach przedziału powinny być zbliżone (podobnie zdarzenia występujące bezpośrednio przed granicami). „Zwycięzca” losowania jest usuwany z melodii (jeśli transformacja polega na skróceniu melodii) lub podwajany (w p.p.). Jeśli wylosowany fragment miał inna długość niż różnica miedzy zadana a oryginalną długością melodii, przeprowadza się ściśnięcie lub rozciągnięcie (w obu przypadkach dwukrotne) odpowiedniej liczby sąsiednich taktów. Zmiana metrumZmiana metrum odbywa sie w dwóch etapach: ustalenie nowego metrum na podtawie metrum dwóch fraz (w tym wypadku metrum fraz będących rodzicami tworzonego w procesie krzyżowania osobnika), właściwa zmiana metrum (powstającego w wyniku procesu krzyżowania osobnika). Ustalanie nowego metrumNowe metrum jest losowane z przedziału< metrum_pierwszego_rodzica, metrum_drugiego_rodzica >. Przy założeniu, że metrum_pierwszego_rodzica < metrum_drugiego_rodzica i 2*metrum_pierwszego_rodzica > metrum_drugiego_rodzica. Gdy drugi z warunków nie jest spełniony metrum_pierwszego_rodzica jest zwiększane dwukrotnie (przy jednoczesnym zmniejszaniu tempa – tak by zachować charakter melodii), aż do spełnienia tego warunku. Przy losowaniu faworyzowane są wartości metrum leżące w środku wspomnianego powyżej przedziału.
Zmiana metrumZmiana metrum na nowe powoduje, że każdy z dzwięków melodii musi zostać przemapowany tak aby mieścił się w nowej długości taktu. Takie podejście do problemu sprawia, że dostosowywanie frazy do nowego metrum będziemy rozpatrywać dzieląc melodię na takty. W każdym takcie każda nuta zostanie przeskalowana w następujący sposób:
Faktyczne krzyżowanie: tworzenie nowej melodiiW drugim etapie krzyżowania tworzony jest potomek 2 osobników o jednakowej skali, metrum, tempie oraz jednakowej liczbie taktów; inna może być jednak liczba nut i wysokości dźwięków. Początki i długości nutPrzy ustalaniu miejsc zdarzeń początku i końca nut kierowano się następującymi zasadami:
Dodatkowo przyjęliśmy, że w nowej melodii dźwięki zaczynać będą się jedynie w tych punktach, w których zaczyna się przynajmniej jedna nuta z fraz wejściowych (założenie to ma zapobiec „rozdrobnieniu” rytmu). Długości nut losowane były na podstawie długości pauz (w osobnikach rodziców) poprzedzających miejsce, w którym w tworzonym osobniku miała początek następna nuta (przy zachowaniu założenia (a)). Wysokości dźwiękówPodobnie jak w przypadku generowania rozwiązań początkowych, wysokość dźwięków ustalana jest „od końca” frazy (ostatni dźwięk ma zawsze wysokość podstawowego tonu wybranej skali). W przedziałach, które w osobnikach wejściowych odpowiadają czasowo rozpatrywanej nucie, odczytywane występujące tam nuty. Wysokość i czas trwania tych dźwięku wpływa na losowany ton wg zasady odwrotności ważonej (wg czasu trwania w ramach rozpatrywanego przedziału) sumy kwadratów odległości (tu: różnicy wysokości między tonem, którego prawdopodobieństwo wylosowania jest ustalane, a wszystkimi występującymi w rodzicach nutami). Dodatkowo obliczana jest najbardziej centralna wysokość z dopuszczalnego przedziału tonów. Różnica między tą „wartością oczekiwaną” a wybraną uwzględniana jest przy kolejnych losowaniach. Według bardzo podobnej zasady ustalana jest siła ataku (Velocity) każdej nuty. |