Języki

You are here

Generator muzyki

Ten program służy do generowania fraz muzycznych. Program jest zdolny do generowania melodii oraz progresji akordów. Program zakłada aktywne uczestnictwo użytkownika w generowaniu kolejnych pokoleń fraz. Użytkownik ocenia, które frazy mu się podobają, co decyduje o cechach kolejnych pokoleń fraz. Użytkownik może ewoluować frazy, aż nie uzyska rezultatów, które go satysfakcjonują.

Aby skorzystać z aplikacji, wybierz język klikając jeden z poniższych przycisków:

Interfejs użytkownika

Panel użytkownika składa się z dwóch sekcji. Pierwsza sekcja zawiera parametry ewolucji oraz parametry generowanych fraz muzycznych. Druga sekcja składa się z wygenerowanych fraz, które można oceniać, odtwarzać oraz pobrać w formacie midi.

Parametry

Rozmiar populacji – reguluje ilość osobników w populacji

Szansa mutacji – szansa na wystąpienie losowej mutacji osobnika w kolejnej generacji

Tempo – reguluje tempo fraz (w efekcie prędkość odtwarzania)

Złożoność akordów – ten parametr steruje poziomem skomplikowania harmonii wewnątrz akordu

Min. długość nuty – minimalna długość nut występujących w ramach frazy

Max. długość nuty – maksymalna długość nut występujących w ramach frazy

Liczba nut w akordzie – ilość nut, z których budowane są akordy – ustawienie tego parametru na wartość 1 spowoduje, że generator będzie działał jako generator melodii

Długość frazy – reguluje ogólną długość tworzonych progresji

Dodatkowo użytkownik ma dostęp do dwóch guzików: ZACZNIJ OD NOWA oraz KOLEJNE POKOLENIE:

ZACZNIJ OD NOWA – resetuje frazy i wraca do generacji zerowej

KOLEJNE POKOLENIE – powoduje przejście do kolejnej generacji

Frazy

Frazy przedstawione są za pomocą zapisu midi. Kliknięcie na frazę spowoduje jej odtworzenie. W górnym lewym rogu każdego graficznego przedstawienia frazy widnieje ikonka, której kliknięcie powoduje pobranie frazy w formacie midi.

Jak używać programu

Najpierw należy dobrać parametry ewolucji oraz parametry generowanie fraz. Wartości domyślne zapewnią całkiem ciekawe akordy, ale możesz na początek zmniejszyć liczbę nut w akordzie. Następnie należy ocenić frazy słuchając ich, a następnie ustawiając im ocenę za pomocą guzików ze strzałkami umieszczonych po prawej stronie każdej frazy. Po ocenieniu należy kliknąć KOLEJNE POKOLENIE. Proces ten należy powtarzać aż uzyskamy frazę, która nas zainteresuje, zainspiruje albo będzie satysfakcjonująca.

Część techniczna

Pierwsze pokolenie

Pierwsze pokolenie fraz jest generowana w sposób zupełnie losowy. Najpierw generowany jest rytm frazy. Generowanie odbywa się poprzez losowe wybieranie długości nut z predefiniowanej tablicy. Wybór ten jest ograniczony przez parametry Min. długość nuty oraz Max. długość nuty. W wyniku tego procesu powstaje tablica długości, których suma jest równa parametrowi Długość frazy. Następnie dobierana jest skala. Obecnie wspierane są jedynie 12 skal durowych/molowych. Następnie dla każdej długości z tablicy długości wybierana jest bazowa nuta i z niej budowany jest akord. Budowa akordu polega na dobieraniu harmonii według predefiniowanej tabeli wszystkich harmonii durowych oraz molowych. Liczba nut w akordzie jest zależna od parametru Number of Notes, a skomplikowanie harmonii zależna jest od parametru Złożoność akordów.

Kolejne generacje

Ocena

Tworzenie kolejnej generacji rozpoczyna się od oceny fraz przez użytkownika. Ocena to wartość z przedziału od 0 do 10. Każda fraza zaczyna z oceną 1. Ustawienie oceny 0 spowoduje, że fraza nie będzie brała udziału w tworzeniu kolejnego pokolenia.

Selekcja

Populacja nowej generacji jest generowana poprzez krzyżowanie wybranych osobników oraz mutacje. Selekcja osobników do krzyżowania wybierana jest metodą ruletkową.

Krzyżowanie

Krzyżowanie zaczyna się od uzgodnienia skali. Skala obu rodziców jest sprowadzana do skali pomiędzy oryginalnymi skalami rodziców. Następnie następuje tworzenie rytmu potomka. Rytm potomka jest tworzony z początków oraz końców nut/akordów rodziców. Dla każdej długości z nowo powstałego rytmu określana jest pula bazowych nut, które występują w danym przedziale czasowym u rodziców. Z tej puli wybierana jest nuta bazowa dla danej długości z rytmu potomka. Dla tej noty bazowej budowana jest reszta akordów na podobnych zasadach co podczas budowy akordów w pierwszej generacji. Główna różnica polega na tym, że zamiast wybierać nuty z tabeli harmonii, nuty akordu są dobierane ze zbioru nut akordu, które występują w danym przedziale czasowym u rodzica i również bazuje na parametrze Złożoność akordów.

Mutacje

Prawdopodobieństwo mutacji zależy od parametru Szansa mutacji. W programie istnieją 3 rodzaje mutacji:

Mutacja skali – transpozycja całej progresji w górę lub w dół o jeden półton.

Mutacja rytmu – skracanie akordu i tworzenie nowego w powstałe puste miejsce lub łącznie akordów z dwóch istniejących.

Mutacja melodii – zastępowanie istniejącego akordu nowo wygenerowanym.

Program i tekst: Łukasz Grygier
Prowadzący: Maciej Komosiński


Alternatywna, starsza implementacja tego pomysłu w javie jest tutaj.