Top Module Empty
Úvod arrow Wiki arrow Analýza problému arrow Návrh spôsobu zápisu rytmu
Návrh spôsobu zápisu rytmu PDF Tlačiť E-mail
Napísal Oto Vozár   
Monday, 13 November 2006

Zápis rytmu navrhujem reprezentovať pomocou nasledujúceho objektového modelu.

            Základnou triedou je trieda Rhythm, ktorá obsahuje počet taktov a taktové označenie. Tu sú možné dva spôsoby :

1.      Dvomi číslami (počet rytmických jednotiek na takt a hodnota rytmickej jednotky)

2.      Enumerácia možných taktových predznamenaní

Označenia, ktoré budeme podporovať budú

·         2 / 2

·         2 / 4

·         3 / 4

·         4 / 4

·         4 / 8

·         6 / 8

·         8 / 8

·         5 / 4

·         7 / 8

Tieto bohato pokryjú naše požiadavky, aj keď možných taktov je ešte oveľa viac. V prípade, že by sme to chceli absolútne uľahčiť, najdôležitejšie sú 3 / 4, a 4 / 4.

 

            Ďalej sa v triede nachádza pole nôt. Bázová trieda pre ne je RhytmNote, ktorá obsahuje údaje

·         Length - dĺžka : celá, polovica, štvrtina, osmina, šestnástina

 

Z nej dedia triedy SingleNoteNoteGroup.

 

SingleNote obsahuje

·         IsRest - true ak je pomlčka, inak false

·         Dot – či je za notou bodka (bodka predlžuje hodnotu noty o polovicu)

 

NoteGroup obsahuje

·         NoteCount – počet nôt, na ktoré sa rozdelí daná dĺžka

·         IsRest[] – pre každú notu v skupine, či je pomlčka

 

NoteGroup sa v návrhu nachádza kvôli tzv. nepravidelným rozdeleniam, kedy sa napríklad štvrťová nota rozdelí napríklad na tri alebo päť hodnôt (trioly, kvintoly) a nie je to možné zapísať pomocou klasických dĺžkových hodnôt. Táto oblasť predstavuje veľkú časť troška pokročilejšej látky a myslím, že keby sme ju nezaviedli, prišli by sme o veľa možností.

  

Obmedzenia

 

Aby zápis nebol komplikovaný, sú v ňom určité obmedzenia, teda nedajú sa v ňom zapísať všetky rytmy. Na druhej strane nie je predpoklad, že by ich niekto používal, najmä nie učiace sa deti.

            Konkrétne sa jedna o 

·         Nie je možné viazať noty – je to ale možné obísť pomlčkou (len v prípade rytmu, pri prípadnom rozšírení o zápis melódie to treba riešiť iným spôsobom)

·         Nie je možné deliť noty skupiny (napríklad prostrednú notu trioly nie je možné rozdeliť na kvintolu)

Poznámky

 

·         Pri ukladaní do súboru navrhujem binárnu serializáciu, prípadne XML serializáciu, keby bola potrebná interoperabilita

·         Nebolo možné použiť formát MIDI, ktorý má zápis len kedy nota začína a kedy končí, ťažšie by sa totiž hľadala jej hodnota. V navrhovanom formáte je explicitne zapísaná.

·         Sú dve možnosti vizualizácie

 

1.      Krížikmi

 x—x-x-|xxx-x-x               3 Tri x a pod nimi trojka predstavujú triolu.  

      2. Hodnotami dĺžok nôt (prázdne hlavičky, nožičky, pomlčky). Osobne sa mi pozdáva druhý spôsob, nakoľko sa deti zároveň učia aj zápis dĺžok nôt a aj to lepšie esteticky vyzerá.

 

·         Bude treba kontrolovať, či nie je nejaká nota rozdelená taktom (teda, nevojde sa do taktu v ktorom začala). V prípade zápisu rytmu stačí notu zapísať len do konca taktu a zvyšok realizovať v novom takte ako pomlčku. Všeobecnejšie sa však noty presahujúce takt viažu špeciálnou značkou – ligtúrou, ktorý ma tvar oblúčika spájajúceho časti noty.

·         Možno by bolo vhodné tento model rozšíriť na zápis melódie hneď na začiatku a používať ho aj na zápis rytmu.

Posledná úprava ( Wednesday, 01 January 2003 )
 
Ďalšia >
© 2010 Resharpers (Imagine cup team)
Joomla! is Free Software released under the GNU/GPL License.