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

Podobne dokumenty