12.07.2015 Views

Využití MIDI komunikace při výuce hudby

Využití MIDI komunikace při výuce hudby

Využití MIDI komunikace při výuce hudby

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

5.2.3 Analýza intervalůZ hudební teorie víme, že se intervaly určují pomocí znalostí durových stupnic.Nejedná se o jedinou metodu, dá se i využít vypočítání počtů půltónů mezi jednotlivými tóny(i bez znalosti stupnic).Nejdříve vyčkám na přijetí čísla noty, které si následovně uložím. Čísla dvou not jsemod sebe odečetl, podle znaménka jde poznat, zda se zahrál první nižší či vyšší tón (tutoinformaci jsem však nevyhodnocoval). Rozdíl těchto dvou not je rovný počtu půltónu mezijednotlivými tóny. Pak už jen stačilo vyhodnotit, pomocí následující tabulky, jaký byl zahranýinterval.Počet půltónu Název Počet půltónu Název0 Prima 7 Čistá kvinta1 Malá sekunda 8 Malá sexta2 Velká sekunda 9 Velká sexta3 Malá tercie 7 Čistá kvinta4 Velká tercie 10 Malá septima5 Čistá kvarta 11 Velká septima6 Zvětšená kvarta 12 Čistá oktávaTato tabulka platí pouze, zda byl interval zahrán v rámci jedné oktávy. Intervaly, kteréjsou přes oktávu, je nutné zmenšit o celou oktávu (nebo její násobek), aby tabulka odpovídalaintervalům. Zmenšování se provádí stejně jako u funkce „Stisknutá klávesa“Funkce „Intervaly“ mají dvě možnosti zahrání intervalů, a to melodicky a harmonicky. Harmonicky – jelikož čísla z klavíru přijdou bezprostředně za sebou, není problémpříjem dat, jelikož hudební analyzátor předpokládá, že přijme 4 byty a hnedvyhodnocuje. Odečte první notu od druhé a tím zjistí interval, pokud je číslo záporné,pracuje s absolutní hodnotou intervalu. Melodicky – Tentokrát hudební analyzátor nemůže čekat na 4byty a hnedvyhodnocovat, nejdříve přijme číslo jedné noty a pak čeká, na to, až zahrajeme druhounotu. Po zahrání druhé noty teprve hudební analyzátor vyhodnocuje interval (klesajícíi vzrůstající)Příjem intervalu (dvou not) harmonicky zahraného:receive = getchar();//přijme znak – zjištění první notyif(Config)//případ pro 1. konfiguraci{pom = receive & 0b10000000;//maska, která vybere nejvyšší bitif (pom == 0 && receive != 0) //rozohdne zda se jedná o stavový/datový…vybírá datový{velocity = getchar(); //vložení čísla (síla stlačení) do proměnné "velocity",toto číslo následuje okamžitě za číslem notyif(velocity)note1 = receive; // vožení čísla první noty do proměnné "note1"32

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!