Zdroje:
Potřebné vstupní znalosti a dovednosti
Oborové
Digitální dovednosti
Vzdělávací cíle:
Přínos využití digitálních technologií
Díky algoritmu můžeme generovat frekvence jednotlivých tónů, které nám mohou posloužit jako metodická pomůcka v hudebních výchovách při porovnání různých historických ladění.
Tato aktivita navazuje na sérii Python v hudbě – 09 funkce. Tato aktivita je opakováním celé série Python v hudbě. Studenti upevňují a aplikují naučené dovednosti na reálný problém, který řeší pomocí algoritmizace.
Metodický postup
Nejprve si načrtneme zadání, jak by měl program vypadat:
Vytvořte algoritmus, který bude na základě frekvencí přehrávat dvanáctitónovou chromatickou řadu. Na základě uživatelského vstupu, kde uživatel zvolí tón, od kterého chce generovat chromatiku, se vygeneruje posloupná řada dvanácti tónů, které zároveň počítač přehraje na základě definovaných frekvencí.
Jak postupovat?
3. Poté vytvořte proměnnou frequency, do které uložíte frekvence jednotlivých tónů. Ty nebudeme složitě zjišťovat, ale pouze si je zkopírujeme ze zadání.
4. Vytvoříme funkci, která najde
index, na kterém se tón nachází.
5. Nesmíme zapomenout, že číslo, které nám funkce vrátí, se musí uložit do nějaké proměnné. Zároveň vytvoříme počítadlo tónů, které nastavíme na 0.
Jelikož pořadí hodnot na indexu z proměnné scale odpovídá údajům na indexech z proměnné frequency, nebude již těžké algoritmus rozhýbat. Když potřebujeme uložit více informací o nějakých konkrétních datech, uděláme to normálně přes vícerozměrný seznam. Ten jsme se ještě zatím neučili, tudíž použijeme dvě proměnné scale a frequency, které jsme si definovali na začátku.
6. Začneme cyklem while, který bude konat nějakou akci, dokud se počítadlo nenaplní 12 tóny.
7. Zde ovšem narazíme na problém – v případě, že vstup uživatele bude jiný než c, program dojede na konec řady, ale počítadlo ještě nebude naplněné 12 tóny. Algoritmus bude chtít generovat dál, ale program nahlásí chybu, že již nemá další data. V tom případě musíme tedy index nastavit zpět na 0, aby řada pokračovala dále od začátku stejně jako v hudební řadě.
8. Vidíme, že díky funkci, kterou jsme si vytvořili, je program mnohem snazší. Použijeme tedy další funkci, kterou již máme v modulu winsound nadefinovanou, a tou je přehrávání frekvencí. Jelikož tyto frekvence máme již nadefinované, stačí funkci říct, na jakém indexu v proměnné frequency si má údaje vyzvednout, a funkci pomocí beep zavolat. Nezapomeňme, že funkce winsound.beep má dva parametry. První je číslo, které vyjadřuje, na jaké frekvenci počítač rozezní oscilátor, druhý parametr je číslo, jež určuje, po jak dlouhou dobu bude takto činit. Nezapomeňme, že musíme upřesnit, že se jedná o číselný typ.
9. Jestliže jsme udělali všechno správně, tak nám náš program přehrává frekvence, které jsou uložené na jednotlivých indexech z proměnné frequency, a zároveň nám vypíše z proměnné scale, jak jim říkáme v hudebním světě. Gratuluji, právě jsme společně naučili počítač zahrát chromatickou stupnici. Je tam ale ještě jeden zádrhel. V případě, že se nám index vrátí do pozice 0, tak s ním kontroler přehrává opět nízkou frekvenci. Z hudební tradice ale chceme, aby tóny, které přesáhnou první oktávu, byly tónově vyšší než tóny z původní oktávy. Potřebujeme je vynásobit přesně jednou tolik, aby reprezentovaly tóny v další oktávě. Poté, co podmínka vynuluje index, musíme proměnnou frequency vynásobit dvěma.
Řešení:
Hodnocení:
aktivita v hodině, návrh vlastního řešení, sestavení vlastní funkce, funkčnost kódu, inovace a kreativní přístup, grafická úprava kódu, pasivní porozumění látce, míra porozumění zadání
Úloha 1: Vytvořte algoritmus, který bude přehrávat nadefinované frekvence, k nimž přiřadí jméno daného tónu. Postupujte následným způsobem:
Tento materiál je samostatnou prací, kde můžeme nechat větší iniciativu na studentech. Můžeme ji použít jako závěrečnou práci z oblasti programování v Pythonu, kde záleží na daných podmínkách, jak přísně se rozhodneme stanovit kritéria pro známkování. Práci můžeme pojmout jako společný projekt, kde postupně odkrýváme jednotlivé kroky a šikovnější studenty necháváme pracovat samostatně, očekáváme od nich vlastní inovativní řešení, jako je ošetření uživatelských vstupů, tvoření funkcí a celková úprava programu, která bude přispívat k intuitivní interakci mezi uživatelem a programem.
Se studenty, kteří mají problémy s abstrakcí, postupujeme pomalu a mezi jednotlivými kroky necháváme dostatečně dlouhé intervaly. Necháváme je opisovat řešení, které učitel promítá na společnou tabuli. Než učitel napíše řešení k jednotlivým bodům, nechá dostatečně dlouhý prostor pro individuální řešení studentů.
Daná úloha je celkem složitá a k jejímu vyřešení je potřeba nechat studentům dost prostoru. Ideálně tak můžeme úlohu rozdrobit do několika částí, kde si studenti ukládají svůj průběh a na dalších hodinách se k němu vracejí. Můžeme případně vytvořit i menší skupinky, které pracují na zadání společně.
Ideálně můžeme použít mechanismy gamifikace, kde nastavíme bodové hodnocení jednotlivých kroků. Jednotlivé skupinky tak mohou soutěžit v různých hodnotících kritériích, jako je rychlost, úprava, funkčnost, inovace aj. Hodnotící systém tak můžeme nastavit na zdravě soutěživé prostředí namísto klasického hodnocení, které by slabší studenty mohlo zbytečně stresovat.
Článek je publikován pod licencí Creative Commons - Uveďte původ-Neužívejte komerčně-Nezpracovávejte 4.0 .
Článek nebyl prozatím komentován.
Pro vložení komentáře je nutné se nejprve přihlásit.
Tento článek je zařazen do seriálu Python v hudbě.
Ostatní články seriálu:
Materiály s klíčovým slovem NPO 3.1 DIGI vytvořil tým metodiků v projektu Podpora škol v kontextu digitalizace (Národní plán obnovy 3.1 DIGI) pro podporu pedagogů při ICT revizích.
Další informace, metodické materiály i inspiraci do výuky jednotlivých předmětů i napříč předměty najdete na webu https://digitalizace.rvp.cz/

Národní pedagogický institut České republiky © 2025