Aplikacja ZasvpiewajMiTo
Transkrypt
Aplikacja ZasvpiewajMiTo
Aplikacja ZasvpiewajMiTo Mieczysław A. Kłopotek, Stowarzyszenie Wesele Wesel 18 marca 2012 1 Przeznaczenie Program ZasvpiewajMiTo służy do odtwarzania plików słowno-muzycznych w notacji SMSM (ala ”karaoke”). 2 Forma Program ZasvpiewajMiTo napisany jest w języku Java. Do kompilacji wykorzystuje niestandardową bibliotekę JFugue, dostępną na stronie www.jfugue.org, w wersji 4. Z następującym zastrzeżeniem: plik org.jfugue.TimeFactor.java wymaga podmiany na zmodyfikowaną w jednym wierszu wersję z uwagi na błąd w wersji oryginalnej. 3 Licencja Program jest udostępniany na licencji SMSM. 4 Notacja SMSM Notacja SMSM jest uzupełnieniem notoacji MusicString JFugue o elementy zapisu tekstu piosenek. Przykład: 1 ![::plik upowszechiany na licencji SMSM::] ![::wykonawca:Mieczysl‘aw Kl‘opotek http://ii3.uph.edu.pl/\~klopotek (400)::] ![melodia: powszechnie znana] =[Wlazl‘ kotek na pl‘otek i mruga] GEEFDDCEGR =[l‘adna to piosneczka niedl‘uga] GEEFDDCECR =[:nowazwrotka] =[nie dl‘uga nie kro‘tka lecz w sam raz] =[A ty ja‘ zas‘piewaj jeszcze raz] W stosunku do MusicString mamy tu następujące rozszerzenia: • = [...] zawiera słowa piosenki • ![...] zawiera komentarze • reszta to muzyka MusicString JFugue Plik w formacie SMSM może zawierać następujące specjalne ciągi znaków: • = [: nowazwrotka] - znak nowej zwrotki • ![: sylabyre‘czne] - rezygnacja z sylabizacji automatycznej • ——: mel. powtarzana —:— pierwsze zak. :—— - do zaznaczania fragmentów do powtórzenia 5 Interpretacja notacji SMSM komentarze są w procesie interpretacji ignorowane, z wyjątkiem znaku rezygnacji z ręcznej sylabizacji Zapis SMSM przed znakiem nowej zwrotki jest przetwarzany następująco: Od miejsca, w którym wstawiono =[tekst] w reakcji na nuty w głosie V0 będą się pojawiać przy odtwarzaniu kolejne sylaby do wyczerpania lub do następnego =[tekst]. Ponadto w momencie natrafienia na =[tekst] w głosie V 0 na ekranie pojawi się cały werset tekst. Po znaku nowej zwrotki nie piszemy już nut, tylko same wersety kolejnej zwrotki. 2 Rysunek 1: Jeszcze jeden mazur dzisiaj 6 Notacja MusicString Spójrzmy na fragment zapisu nutowego znanej piosenki ”Jeszcze jeden mazur dzisiaj” (rys.1). Zapis w formacie SMSM będzie wyglądał następująco: ![::plik upowszechiany na licencji SMSM::..... ] KFmaj T[120] tonacja F dur, prędkość 120 ćwierćnut na min. =[Jeszcze jeden mazur dzisiaj] słowa do lin. mel. nizej V0 D5q. E5i F5i G5i | A5i. F5s D5q F5q | linia melodyczna (V0) V1 D4q F4q+A4q F4q+A4q | D4i. Rs F4q+A4q F4q+A4q | akompaniament, V1-V15 W powyższym przykładzie widzimy podstawowe elementy zapisu nutowego na pięciolinii jak i w notacji MusicString. Są to: tonacja, tempo, głosy i nuty. 6.1 Tempo Tempo oznacza częstotliwość uderzania w klawisze instrumentu. T[120] oznacza 120 uderzeń na minutę, gdyby muzyka składała się z samych ćwierćnut. Wolniejsze kawałki charakteryzują się mniejszą liczbą podaną w nawiasach kwadratowych. Zamiast prędkości liczbowej można podawać pewne nazwy zwyczajowe tempa, podane w dokumentacji JFugue. przykłady to Largo (wolno i dostojnie), Adagio (dość wolno), Allegro (zwykłe tempo), Vivace (dość szybko) Presto (bardzo szybko). 3 6.2 Tonacja Tonacje dzielimy na tzw. durowe, zwane majorowymi („wesołe”) oraz molowe zwane minorowymi („smutne”). To rozróżnienie nie jest bezpośrednio widoczne na pięciolinii, natomiast widoczne jest rozróżnienie inne – podział na tzw. gamy. Po lewej stronie linii na rysunku obok klucza wiolinowego i basowego widzimy „wolno stojący” krzyżyk. Ponieważ jest on tylko jeden, więc mamy do czynienia z tonacją G-dur, w MusicString KGmaj lub też tonacją e-mol – w MusicString Kemin. Czy jest to tonacja dur czy mol, można poznać albo po ostatniej nucie utworu albo na słuch – czy wesoło jest czy smutno. Dla odtwarzania melodii nie ma to znaczenia. W ogólności mogą tu znajdować się bemole (b) lub krzyżyki (#) w ilości 0-7. Odróżniamy na ich podstawie Tonacje: • C-dur lub a-mul – bez krzyżyków czy bemoli • 7 krzyżyków: C# - dur lub A# mol • 6 krzyżyków: F# - dur lub D# mol • 5 krzyżyków: Bmaj lub • 4 krzyżyki: E - dur lub • 3 krzyżyki: A - dur lub • 2 krzyżyki: D - dur lub Bmin • 1 krzyżyk : G - dur lub e-mol • 1 bemol : F - dur lub d-mol • 2 bemole : Bbmaj lub • 3 bemole : Eb - dur lub • 4 bemole : Ab - dur lub • 5 bemoli : Db - dur lub • 6 bemoli : Gb - dur lub • 7 bemoli : Cb - dur lub W zapisie MusicString będziemy stosować konwencję KCmaj lub KAmin itd. Powyżej zwróćmy uwagę na tonacje B i Bb – w języku polskim nazywa się je odpowiednio H i B – ale pozostaniemy w konwencji Musicstring. 4 6.3 Głosy Głosy, oznaczane w MusicString symbolami V0, V1,...V15, a w zapisie nutowym na partyturach jako kolejne pięciolinie połączone pionowymi kreskami (w naszym przykładzie mamy dwa takie głosy: V0 i V1), to w zamyśle równolegle ze sobą odtwarzane melodie, coś w rodzaju chóru. W szczególności każdy z głosów może być odtwarzany innym instrumentem. Głos V0 to zawsze podstawowa linia melodyczna, pozostałe to poniekąd akompaniament. W muzyce klawiszowej (fortepian, pianino, organy, keyboard) będą zwykle występować dwa głosy, chyba że mamy do czynienia z muzyką na cztery ręce – wtedy mamy cztery głosy. W zapisie Musicstring możemy nuty przypisane poszczególnym instrumentom przeplatać tak, jak nam wygodnie (najlepiej tzw. taktami), ale i tak będą one odtwarzane jednocześnie. 6.4 Instrumenty Dla (prawie) każdego głosu możemy dobrać instrument z listy 120 instrumentów. Instrument podajemy jako I[liczba] lub I[nazwa]. Domyślnie gra się na pianinie I[ACOU ST IC GRAN D], ale opcji jest wiele (proszę stosować nazwy z dokumentacji Jfugue): organy I[CHU RCH ORGAN ], gitara I[GU IT AR], skrzypce I[V IOLIN ], „orkiestra smyczkowa”, trąbka, róg, flet, harfa itd. 6.5 Nuty Z każdą nutą związane są następujące wielkości: wysokość dźwięku oraz czas trwania dźwięku. W zapisie występują także tzw. pauzy, czyli chwile, w których się nie gra. Pauza charakteryzuje się czasem trwania. Wysokość dźwięku określa się jako parę nazwa i oktawa dźwięku. 6.5.1 Oktawy Na instrumentach klawiszowych występują klawisze białe i czarne. Czarne układają się w grupy naprzemian par i trójek. Grupa klawiszy złożona z czarnej pary z lewej i czarnej trójki z prawej wraz ze stykającymi się z nimi klawiszami białymi tworzy tzw. oktawę (bo klawiszy białych jest 8). Centralna oktawa oznaczana jest numerem 5, zaś po lewej numerami niższymi, po prawej numerami wyższymi. Im wyższy numer oktawy, tym mówimy, że wyższy jest dźwięk. 5 6.5.2 Nazwy W noacji Musicstring kolejne klawisze białe od lewej do prawej (czyli od nioższych dźwięków do wyższych) oznacza się literami C D E F G A B. Klawisze czarne mają podwójne oznakowanie: od lewego sąsiada białego (oznaczenie krzyżykiem) lub od prawego (oznaczenie bemolem). Np. czarny klawisz położony między C i D oznaczymy albo przez C# albo Db. Dla ujednolicenia na klawiszach białych E# to to samo co F, Fb to samo co E, B# to C, a Cb to B. Uwaga: R oznacza pauzę. Po R nie podaje się oktawy (jest obojętne, na której oktawie milczymy). 6.5.3 Czas trwania Czas trwania dzieli się na tzw. całe nuty (oznaczenie w), półnuty (h), ćwierćnuty (q), ósemki (i), szesnastki (s). Jak sama nazwa wskazuje, ćwierćnuta trwa jedną czwartą całej nuty itd. Istnieją tzw. nuty wydłużone, (oznaczenie przez .), czas trwania nuty z kropką jest o połowę dłuższy niż bez kropki. 6.5.4 Kompleksowy przykład W powyższym sensie C5q to ćwierćnuta C w piątej oktawie. F#4h. to półnuta wydłużono o połowę F# w czwartej oktawie. Gb6w to cała nuta Gb w szóstej oktawie. Ri to pauza o czasie trwania jednej ósemki. UWAGA: F#4h. można zapisać w nieco zawiły, ale przydatny czasami sposób F#4h- F#4-q co oznacza, że klawisz F# trzymamy pół nuty, a potem jeszcze przez ćwierć nuty. 6.5.5 Akord Akordy to miejsca, gdzie uderzamy jednocześnie kilka klawiszy. C4q+G5q oznacza jednoczesne uderzenie klawiszy C5 i G5 i trzymanie ich przez ćwierć nuty. 6.5.6 Jak odczytujemy to na pięciolinii Pięciolinia jest tak skonstruowana, że dźwięki niższe są optycznie niżej niż dźwięki wyższe. Sposób odtwarzania nuty zależy od jej kształtu i położenia na pięciolinii. Kształt muwi o trwaniu, a położenie o wysokości dźwięku. Nuty mogą leżeć na liniach, międzyliniami otraz na lub nad lub pod dodatkowymi liniami. 6 O interpretacji każdej z linii pięciolinii decyduje tzw. klucz – wiolinowy lub basowy (w przykładzie odpowiednio przy wyższej i niższej pięciolinii). W wypadku klucza wiolinowego najniższa linia to E5, kolejne to G5, B5, D6, F6. Między liniami mamy nuty F5,A5,C6,E6, pod pierwszą od dołu D5, nad najwyższą G6. Pierwsza dodatkowa linia poniżej pięciolinii to C5. W wypadku klucza basowego najniższa linia to G3, kolejne to B3, D4, F4, A4. Między liniami mamy nuty A3,C4,E4,G4, pod pierwszą od dołu F3, nad najwyższą B4. Pierwsza dodatkowa linia POWYŻEJ pięciolinii to C5. Krzyżyki i bemole łatwo poznać po znaczkach obok nuty. Czas trwania nuty rozpoznajemy po kształcie. • Cała nuta to puste kółko. Półnuta to puste kółko z pionową pałką. ćwierćłnuta to pełne kółko z pionową pałką. Ósemka to pełne kółko z pionową pałką i flagą. Szesnastka to pełne kółko z pionową pałką i dwoma flagami. Przedłużenie symbolizuje kropka. Czas trwania pauzy to: • belka pod linią - okres całej nuty • belka na linii - okres półnuty • jakby błyskawica - okres ćwierćnuty • jakby siódemka - okres ósemki • jakby podwójna siódemka - okres szesnastki 6.5.7 Takty takty to podział utworu na części o stałewzgldnej długości odtwarzania. W naszym przykładzie zauważamy, że jeden takt jest długości 3 ćwierćnut, co potwierdza znaczek 3over4 między pięcioliniami. Takty ułatwiają zorientowanie się, gdzie jesteśmy w tekście utworu (w niektórych partyturach takty numeruje się). W MusicString takty oddziela się kreską |. W notacji muzycznej (ignorowanej przez MusicString) postawienie krzyżyka lub bemola przy danej nucie oznacza, że inne nuty w tym takcie o tej samej nazwie winny być również grane z krzyżykiem czy bemolem. Stąd jeśli chcemy od tej reguły odstąpić, stosuje się tzw. kasownik (”połamany” podwójny krzyżyk). W notacji MusicString kasownik oznacza się obejść krzyżyki i bemole narzucane przez tonację. 7 Rysunek 2: interfejs aplikacji 7 Interfejs Interfejs aplikacji przedstawiono na rysunku 2. Składają się nań 4 pola: • pole poprzednich wersów • bieżący wers • bieżący wers sylabizowana • nazwa pliku muzycznego - jest to jedyne pole, gdzie użytkownik coś wprowadza. Po kliknięciu ENTER będąc w tym polu uruchamiane jest odtwarzanie pliku słowno-muzycznego Po najechaniu na poszczególne pola pojawia się napis opisujący znaczenie pola. 8 Struktura aplikacji Aplikacja zasadniczo składa się z trzech aktywnych ścieżek: • interfejs graficzny, przedstawiony w poprzednim punkcie • przewidywacz zdarzeń muzycznych • odtwarzacz MIDI Te trzy ścieżki to oddzielne wątki, które wiąże wspólna przestrzeń danych. Oddzielenie wątków jest konieczne z uwagi na szczególną własność interfejsu Swing, który nie pozwala na to, aby odświeżyła się zawartość interfejsu, póki nie zakończy pracy nasłuchiwacz. Wobec tego komenda startowania odtwarzania startuje odrębny wątek, który z kolei ureuchamia przewidywacz i odtwarzacz. 8 Odtwarzacz deleguje wykonanie utworu do systemu midi komputera, a w tle przewidywacz próbuje przewidzieć, kiedy dany dźwięk się pojawi na konsolecie MIDI i generuje zdarzenia muzyczne dla aplikacji, która wykorzystuje je, aby pokazywać wersety i sylaby. Ponieważ ten mechanizm nie jest perfekcyjny w Javie, więc i pokazywanie sylab niekoniecznie jest zawsze na czas. Może w następnych wersjach JFugue lub Javy (8 lub 9)? Zalecam w tym miejscu ostrożność z użyciem szesnastek czy trzydziestek dwójek, bo ewidentnie MIDI sobie z nimi nie radzi (złe dzielenie z liczbami całkowitymi). Może w następnych wersjach będzie lepiej. 9