[K] Gades MIDI i basso continuo

Jeszcze parę miesięcy temu miałem spory kłopot z plikami MIDI (głównie renesansowymi i barokowymi), gdzie zapisywano wprawdzie partie smyczków, ale brakowało towarzyszącej partii klawesynu. Oczywiście, w prawdziwych nutach najniższa linia (obecnie najczęściej przypisywana wiolonczeli albo fagotowi) reprezentowała tzw. bas cyfrowany, czyli basso continuo. Rzecz polegała na tym, że rozpisywano tylko linię basu, a nad nutami basowymi dopisywano cyframi oczekiwane rozwinięcie akordowe, resztę zostawiając wyobraźni i wykształceniu muzyka, realizującego partię. I taki oto klawesynista siadał i na podstawie owej linii potrafił zagrać akompaniament.

Nie jestem wykształconym muzykiem ani tym bardziej wieloletnim praktykiem-klawesynistą. Jestem za to programistą i skoro tych trzysta lat temu można było nauczyć się reguł konstruowania akompaniamentu, to (pomijając wirtuozerię i wyczucie prawdziwych muzyków) w dużym stopniu da się to odtworzyć algorytmicznie. Pierwsza implementacja, na podstawie między innymi Regola dell'Ottava, pojawiła się już w MIDI Tools Hubie:

Tak to drzewiej bywało...

Jakoś tam sobie działała, nie można powiedzieć, ale skoro obecnie mam już wysoce zaawansowany dodatek do Fender Studio Pro, to oczywiście przeniosłem i ten element. A że łatwiej z niego obecnie korzystać, to i korzystać zacząłem częściej i wyszły na jaw rozmaite niedogodności, niedoróbki i wręcz błędy.

Walka z wiatrakami

Część problemów - na przykład błąd w wykrywaniu tonacji czy przypadkowe zmiany tonacji wynikające ze sprawdzania jej co cztery takty (na wypadek, gdyby się zmieniła w trakcie) - wynikała albo z niewiedzy, albo z uproszczeń, albo z naiwności. I te rzeczy dało się najłatwiej naprawić.

Gorsza sprawa z tym, że mając tylko plik MIDI (zamiast partytury) zwyczajnie tracimy część danych zawartych w zapisie nutowym - a mianowicie kluczowe cyfry nad nutami basowymi. Tego w sposób stuprocentowo zgodny z oryginałem przeskoczyć się nie da, bo po prostu nie wiadomo, co kompozytor napisał - w pliku MIDI tego nie ma. Posłużyłem się zatem pewnym wybiegiem. O ile w minimalnej konfiguracji potrzeba przynajmniej dwóch ścieżek (basso continuo i którejś ze ścieżek "melodycznych"), to można zaznaczyć cały kwartet czy kwintet i wówczas otrzymuje się partię klawesynu nieco bardziej urozmaiconą:

Ścieżki smyczkowe


Partia klawesynu wygenerowana na bazie basso continuo i partii skrzypiec


Partia klawesynu wygenerowana na bazie całego składu smyczkowego

Żeby klawesyn nie grał zbyt jednostajnie, ciągle akordami, dodałem funkcję, która bada aktualne ustawienie siatki projektu i jeśli trafi w partii basso continuo na nuty krótsze niż tam ustawione, to nie tworzy dla nich akordów, tylko przenosi wprost jako melodię. Znacznie ożywia to akompaniament, który nie tłucze non stop akordu za akordem.

Rzecz jasna, jak to zwykle w rozwiązaniach informatycznych bywa, muzycy pewnie będą rwać włosy z głowy na schematyzm czy błędy (których na pewno nie uniknąłem). Jednak ten algorytm tak naprawdę nie ma na celu "tworzyć muzyki", tylko umożliwić proste wzbogacenie aranżacji w celu testowania bibliotek orkiestrowych i takie jest jego podstawowe zastosowanie. Najnowszą wersję wtyczki z omawianą funkcją można tradycyjnie pobrać ze strony projektu Gades MIDI Toolbar.

Komentarze