Grać jak z nut – cz. 1

Muzycy w czasie swojej edukacji muszą posiąść umiejętność gry a vista – grania nowego dla nich utworu muzycznego, bez wcześniejszego dokładnego zapoznania się z nim. Dzięki temu wirtuozi nie tylko mogą grać bez przygotowania większość utworów, ale też potrzebują dużo mniej czasu na zapoznanie się z bardziej wymagającymi kompozycjami. Do ćwiczeń gry a vista potrzebne jest jednak sporo utworów. Powinny być to raczej mało znane utwory i dopasowane do umiejętności danego muzyka poziomie trudności. Przyszły wirtuoz musi więc poświęcić sporo swojego (i nauczyciela) czasu na przygotowanie takiej playlisty, co dodatkowo demotywuje do nauki. Co gorsza, raz wykorzystana playlista nie jest już do niczego potrzebna.

Tranzystorowy kompozytor

A co gdyby było coś, co samo przygotowuje te utwory, w pełni zautomatyzowany sposób? Nie tylko samo je tworzy, ale też dopasowuje poziom trudności do umiejętności muzyka. Tak powstał pomysł na stworzenie automatycznego kompozytora – programu komputerowego komponującego utwory muzyczne za pomocą sztucznej inteligencji, która w ostatnim czasie nabiera dużego rozgłosu.

Słowo „komponowanie” może jest tu użyte trochę na wyrost, bardziej pasuje „generowanie”. Choć w sumie, kompozytorzy też tworzą kompozycje w oparciu o swoje własne algorytmy. Semantyka na bok, ważne, że stworzenie takiego (prostego póki co) programu się udało i początkujący muzycy mogliby z niego skorzystać.

Zanim jednak przejdziemy do tego, jak generować utwory muzyczne musimy najpierw poznać podstawy, dowiedzieć się jak zbudowane są utwory, a także od czego zależy ich trudność.

Muzyczne ABC

Interwał, półton, akord, takt, metrum, skala muzyczna, tonacje utworu to podstawowe pojęcia w muzycznym ABC. Interwał to wielkość opisująca odległość pomiędzy dwoma kolejnymi dźwiękami melodii. Chociaż jej jednostką jest półton, to zazwyczaj używa się nazw konkretnych interwałów. Z kolei półton to najmniejsza przyjęta różnica pomiędzy wysokościami dźwięków (ok. 5%). Oczywiście różnice te mogą być nieskończenie małe, po prostu taki podział interwałów przyjął się jako standard. Akord to trzy lub więcej dźwięków granych jednocześnie. Następnym pojęciem jest takt, czyli to co znajduje się pomiędzy pionowymi kreskami na pięciolinii. Czasami utwór zaczyna się niepełnym taktem (przedtaktem).

Wizualizacja przedtaktu
Rys. 1 Wizualizacja przedtaktu

Metrum – określenie to odnosi się do tego, ile wartości rytmicznych znajduje się w jednym takcie. W metrum 4/4 w jednym takcie powinny się znaleźć cztery ćwierćnuty. W metrum 3/4 – trzy ćwierćnuty, w metrum 6/8 sześć ósemek. Chociaż 3/4 oraz 6/8 oznaczają taką samą liczbę wartości rytmicznych, to metra te są inne, akcenty w nich przypadają na inne miejsca w takcie. W metrum 3/4 akcent przypada na pierwszą ćwierćnutę (poprawnie mówi się „na pierwszą miarę taktu”). Natomiast w metrum 6/8 akcent przypada na pierwszą i czwartą miarę taktu.

Skala muzyczna to zbiór dźwięków, które określają materiał dźwiękowy, z jakiego utwory muzyczne korzystają. Skale są uporządkowane, zazwyczaj przedstawia się je zgodnie z rosnącą wysokością dźwięków. Najbardziej popularnymi skalami są durowa i molowa. Skal muzycznych jest o wiele więcej, jednak w zachodnim kręgu kulturowym te dwie skale są dominujące. Wykorzystywane były w większości starszych oraz obecnie popularnych utworach. Kolejne pojęcie to tonacja utworu, czyli określenie z jakich dźwięków utwory korzystają. Skala vs. tonacja – skala jest bardziej szerokim określeniem, jest wiele tonacji o danej skali, ale dana tonacja posiada swoją skalę. Tonacja określa od jakiego dźwięku zaczyna się skala.

Budowa utworu muzycznego

W muzyce klasycznej najbardziej popularną zasadą kształtowania utworu muzycznego jest budowa okresowa. Kompozycje budowane są z pewnych elementów – okresów, stanowiących odrębną całość. By jednak zrozumieć, czym one są należy wprowadzić kilka innych pojęć.

Motyw jest to ciąg kilku nut, powtarzających się w tej samej lub nieco odmienionej postaci (wariacja) w innych miejscach utworu. Zazwyczaj czas trwania motywu jest równy długości jednego taktu.

Wariacją motywu nazywamy zmienioną w jakiś sposób formę motywu, zachowującą jednak większość jego właściwości, jak np. rytm bądź charakterystyczny interwał. W utworach muzycznych nie ma bardzo dużej liczby motywów. Większość utworu stanowią wariacje motywów. Dzięki temu utwór ma tak jakby swój charakter i nie zaskakuje słuchacza co raz to nowym materiałem muzycznym.

Muzyczny temat jest to zazwyczaj ciąg 2-3 motywów, które powtarzają się (ewentualnie w nieco zmienionych wersjach) przez cały utwór. Nie każdy utwór musi posiadać swój temat.

Zdanie muzyczne jest to dwie lub więcej fraz.

Okresem muzycznym określamy połączenie dwóch zdań muzycznych. Poniżej przedstawiono prosty okres mały z zaznaczonymi podstawowymi elementami.

Schemat budowy okresowej utworu muzycznego
Rys. 2 Schemat budowy okresowej utworu muzycznego

Tak w uproszczeniu wygląda budowa okresowa. Kilka nut tworzy motywy, kilka motywów frazę, kilka fraz zdanie, kilka zdań okres i w końcu – jeden lub kilka okresów cały utwór muzyczny. Istnieją również alternatywne metody tworzenia utworów muzycznych. Jednakże budowa okresowa jest najbardziej rozpowszechniona, a co ważne w tym przypadku – łatwiejsza do zaprogramowania.

Komponowanie w harmonii

Zazwyczaj kompozycje oparte są na przebiegach harmonicznych – akordach, które mają swoją własną „melodię” i swój własny rytm. Kolejne akordy w przebiegach harmonicznych nie są zupełnie przypadkowe. Na przykład, po akordach F-dur i G-dur bardzo prawdopodobne jest, że następnym akordem będzie C-dur. Mniej prawdopodobne będzie natomiast to, że będzie to e-moll, a zupełnie nieprawdopodobne, by był to Dis-dur. Istnieją pewne reguły rządzące tymi zależnościami między akordami. Nie musimy się jednak w nie bardziej zagłębiać, gdyż będziemy stosować modele statystyczne do generowania harmonii utworów.

Musimy za to zrozumieć, co to są stopnie harmoniczne. Tonacje posiadają kilka ważnych akordów, trójdźwięków. Ich podstawowy dźwięk, prymą są kolejne dźwięki danej tonacji. Pozostałe dźwięki należą do tej tonacji, np. pierwszym stopniem tonacji C-dur jest akord C-dur, drugim stopniem akord d-moll, trzecim e-moll, itd. Stopnie harmoniczne oznaczane są rzymskimi literami, akordy durowe oznaczane są zazwyczaj dużymi literami, a molowe małymi (podstawowe stopnie skali durowej: I, ii, iii, IV, V, vi,VII).

Stopnie harmoniczne są takimi „uniwersalnymi” akordami, niezależnie od jakiego dźwięku zaczyna się tonacja, prawdopodobieństwa kolejnych stopni harmonicznych są takie same. W tonacji C-dur ciąg akordów: C – F – G – C jest tak samo prawdopodobny jak w tonacji G-dur przebieg: G – C – D – G. W tym przykładzie został przedstawiony jeden z najczęściej stosowanych w muzyce przebiegów harmonicznych, wyrażony w stopniach: I – IV – V – I.

Dźwięki melodii nie są zupełnie dowolne, jest wiele reguł i wyjątków, które nimi rządzą. Przykład reguły i wyjątku w tworzeniu harmonii:

  • reguła: na każdą miarę taktu powinien wystąpić dźwięk należący do danego akordu,
  • wyjątek: czasami na daną miarę taktu używa się innych dźwięków, nienależących do tego akordu, lecz po których stosunkowo szybko występuje nuta tego akordu.

Te reguły i wyjątki w harmonii nie muszą być ściśle przestrzegane. Jeśli jednak będziemy się do nich stosować, to istnieje dużo większa szansa, że komponowana przez nas muzyka będzie dobrze, naturalnie brzmieć.

Od czego zależy trudność utworu muzycznego

Jest kilka czynników, które wpływają na trudność utworu:

  • szybkość- generalnie, niezależnie od instrumentu im szybciej, tym trudniej (szczególnie w kontekście gry a vista)
  • dynamika melodii – melodia składająca się z dwóch dźwięków będzie prostsza do zagrania niż taka, która wykorzystuje wiele różnych dźwięków
  • trudność rytmiczna – im bardziej złożony rytm, tym trudniej. Im więcej synkop, trioli, legowanych nut itp. „urozmaiceń” rytmicznych, tym trudniej
  • powtarzalność – nieważne jak trudna melodia, jeśli jej fragmenty się powtarzają, to gra się ją dużo łatwiej, niż taką, która cały czas się zmienia. Jeszcze gorzej jeśli się powtarza, ale w nieco zmieniony, można by rzec „podchwytliwy” sposób (gdy zmiana melodii jest łatwa do przeoczenia)
  • trudności związane z zapisem nutowym – im więcej dodatkowych znaków chromatycznych (bemoli, krzyżyków, kasowników) tym trudniej
  • trudności związane z danym instrumentem – niektóre przebiegi melodyczne mogą mieć diametralnie różne poziomy trudności na różnych instrumentach np. dwudźwięki na pianinie lub gitarze są znacznie prostsze do zagrania niż dwudźwięki na skrzypcach

Niektóre tonacje są trudniejsze od innych, bo posiadają więcej znaków przykluczowych, o których trzeba pamiętać.

Techniczne strony zagadnienia

Muzyczną stronę staraliśmy się nakreślić w poprzednich akapitach natomiast teraz skupimy się na stronie technicznej. Aby dobrze w nią wejść potrzebne jest zagłębienie się w zagadnienie „prawdopodobieństwa warunkowego”. Na początek przykład.

Załóżmy, że nie wiemy gdzie jesteśmy ani nie znamy dzisiejszej daty. Jakie jest prawdopodobieństwo, że jutro zacznie padać śnieg? Zapewne dosyć małe (w większości miejsc na ziemi śnieg nigdy lub prawie nigdy nie pada) więc oszacujemy je na jakieś 2%. Dowiedzieliśmy się jednak, że znajdujemy się w Laponii. Jest to kraina tuż za północnym kołem podbiegunowym. Jak teraz określimy prawdopodobieństwo tego, że jutro spadnie śnieg? Otóż będzie ono dużo wyższe niż przed chwilą. Niestety, dalej taka informacja nie rozwiązuje naszej zagadki, ponieważ nie znamy pory roku jaka obecnie panuje. W związku z tym określimy nasze prawdopodobieństwo na 10%. Kolejną informacją jaką otrzymaliśmy jest to, że jest środek lipca, lato w pełni. Biorąc pod uwagę najnowsze informacje możemy określić prawdopodobieństwo tego, że jutro spadnie śnieg określimy na 0,1%.

Prawdopodobieństwo warunkowe

Z historii powyżej bardzo prosto wysnuć jeden wniosek. Prawdopodobieństwo zależało od stanu naszej wiedzy i zmieniało się na jej podstawie w różne strony. W ten sposób działają prawdopodobieństwa warunkowe, oznaczane w następujący sposób:

P(A|B)

Informują nas o tym, jakie jest prawdopodobieństwo wystąpienia zdarzenia (tutaj A), jeśli wystąpiły jakieś inne zdarzenia (tutaj B). „Zdarzenie” nie musi oznaczać jakiegoś wydarzenia, incydentu – może to być jak w naszym przykładzie dowolny warunek, informacja.

Aby obliczyć prawdopodobieństwo warunkowe musimy wiedzieć, jak często występuje zdarzenie B i jak często występują oba zdarzenia – A i B jednocześnie. Lepiej to zrozumiemy wracając do naszego przykładu. Zakładając, że A to padający śnieg, a B to znajdowanie się w Laponii, to prawdopodobieństwo, że śnieg padać będzie w Laponii jest równe:

wzór na prawdopodobieństwo, że śnieg będzie padać w Laponii

To samo równanie, wyrażone bardziej formalnie i zgodnie z przyjętymi symbolami A i B, będzie wyglądało następująco:

To nie jest to samo, co prawdopodobieństwo tego, że będzie padało w Laponii. Może częściej jeździmy do Laponii zimą i jak już jesteśmy w Laponii, to bardzo prawdopodobne, że będzie padał śnieg?

Aby teraz policzyć dokładnie, ile wynosi to prawdopodobieństwo, potrzebne nam są dwie statystyki:

  • NA∩B ile razy, gdy byliśmy w Laponii, padało,
  • NB ile razy byliśmy w Laponii,

oraz to ile dni do tej pory przeżyliśmy (albo ile dni upłynęło od kiedy zaczęliśmy prowadzić powyższe statystyki):

  • NTOTAL.

Te dane posłużą nam do policzenia odpowiednio P(A∩B) i P(B):

W końcu mamy to, czego oczekiwaliśmy:

Czyli prawdopodobieństwo, że będzie padało, jeżeli znajdujemy się w Laponii jest równe stosunkowi tego ile razy, gdy byliśmy w Laponii padało, do tego jak wiele razy byliśmy w Laponii. Warto też dodać, że im częściej bywaliśmy w Laponii, tym to prawdopodobieństwo będzie dokładniejsze (jeżeli byliśmy 1000 dni w Laponii to będziemy mieli lepsze rozeznanie, niż jeżeli byliśmy tam 3 razy).

N-gramy

Kolejną rzeczą, jaką musimy poznać przed przystąpieniem do algorytmicznego komponowania są N-gramy, jak je stworzyć i jak z nich korzystać do generowania prawdopodobnych sekwencji danych. N-gramy są to modele statystyczne. Jeden N-gram to ciąg elementów o długości równej N. Występują 1-gramy, 2-gramy, 3-gramy, itd. Modele te są często wykorzystywane przy modelowaniu języka. Pozwalają określić, jakie jest prawdopodobieństwo wystąpienia ciągu słów. Bierze się korpus języka (mnóstwo książek, gazet, stron internetowych, forum, itp.) i na podstawie niego zlicza, ile razy wystąpił dany ciąg słów. Na przykład jeśli w zbiorze wystąpił 1000 razy ciąg „zamek królewski”, a tylko 10 razy ciąg „zamek błyskawiczny”, to oznacza, że pierwszy ciąg jest 100 razy bardziej prawdopodobny od drugiego. Takie informacje mogą nam się przydać. Dzięki nim możemy określić, jak prawdopodobne jest każde zdanie.