Odborný článek

Python v hudbě: ladička

18. 3. 2026
Gymnaziální vzdělávání
Autor
Pavel Konrád

Anotace

Pomocí programovacího jazyka Python prozkoumáme možnosti, jak přenášet a kódovat informace, které budeme demonstrovat na hudebních analogiích. V deváté aktivitě vytvoříme jednoduchou ladičku, která bude přehrávat tón, který uživatel zadá. Každému tónu přiřadíme frekvenci a pomocí oscilátoru ji bude počítač přehrávat. Celý program bude mít jeden uživatelský vstup, kam uživatel zadá tón a program následně tento tón přehraje.
  • Typ materiálu: cvičení 
  • Škola: gymnázium
  • Ročník: kvarta
  • Metody: cvičení
  • Vzdělávací obor: informatika
  • Tematický okruh: algoritmizace a programování
  • Očekávané výstupy: Vytvoří přehledný program pro vyřešení konkrétního problému s ohledem na jeho možné důsledky a svou odpovědnost za ně; používá opakování, větvení programu se složenými podmínkami, proměnné, seznamy, podprogramy s parametry a návratovými hodnotami; ve snaze o vyšší efektivitu navrhuje, řídí a hodnotí souběh procesů.
  • Časová dotace:
    • Výuka: 45 minut
    • Příprava: 30 minut
  • Pomůcky, hardware a software
    • Učitel: nainstalovaný Python
    • Žák: PC WIN s nainstalovaným Pythonem a IDE

Zdroje:

  • https://www.w3schools.com/python

Potřebné vstupní znalosti a dovednosti

Oborové

  • Základní orientace v programovacím jazyku Python
  • Znalost proměnných a datových typů
  • Znalost cyklů while a for
  • Znalost tvorby funkcí

Digitální dovednosti

  • Pokročilé ovládání počítače
  • Schopnost postupovat podle návodu
  • Orientace v základní terminologii algoritmizace a programování

Vzdělávací cíle:

  • Vytvořit generátor tónů, který bude schopen přehrávat frekvence.
  • Žák procvičí základní konstrukci jazyka Python.

     

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í.

Metodická poznámka

Tento materiál je samostatnou prací pro žáky. Jelikož je to pokročilá úloha, můžeme nechat studenty řešení dodělat jako domácí úkol a známkovat aktivitu studentů a jejich přístup k řešení úlohy. Počítejme s tím, že ne všichni studenti pochopí zadání. S nimi můžeme psát kód na interaktivní tabuli a postupně odkrývat kousky kódu a jejich řešení. Neodkrýváme kód ihned celý, ale vždy pouze určitou část, přičemž necháme studentům prostor pro vlastní invenci. Samozřejmě studentům povolíme pracovat s internetem a pobídneme je k vyhledávání možných řešení.

Metodický postup

Nejprve si načrtneme zadání, jak by měl program vypadat:

Vytvořte algoritmus, který bude na základě uživatelského vstupu generovat tón na předem definované frekvenci. Na základě uživatelského vstupu, kdy uživatel zvolí tón, který chce přehrát, program vygeneruje přiřazenou frekvenci k danému tónu.

  • Použijte pro přehrávání tónů modul winsound a time.
  • Ošetřete vstup uživatele tak, aby mohl zadávat pouze nadefinované tóny.

Jak postupovat:

  1. Importujte moduly pro práci s časem a Windows zvuky.
  2. Vytvořte proměnnou scale, do které uložíte nejprve názvy tónů.
  3. Poté utvořte proměnnou freq, do které uložíte jednotlivé frekvence tónů.

4. Vytvořte funkci, která bude hledat index tónu a podle toho ji přiřadí frekvenci z proměnné scale.

5. Když máme nadefinovanou funkci, která zjistí pozici indexu, můžeme tuto pozici použít pro proměnnou scale, ale i pro proměnnou freq, jelikož jsou frekvence seřazené do stejného pořadí jako tóny. Návratovou hodnotu si uložíme do proměnné a vykonáme zkoušku, zda funkce funguje správně:

6. Vytvoříme funkci, která bude přehrávat tóny na základě jejich frekvencí, a vyzkoušíme, zda nám generátor funguje.

7. Nyní je potřeba, abyste změnili proměnnou „x“ tak, aby načetla vstup uživatele, a zároveň tento vstup ošetřili podmínkou, aby v případě chybného vstupu program vypsal hlášení, že takový tón není k dispozici. Zároveň je potřeba, aby nám program znovu nabídl možnost zadat další tón na přehrání.

  • Pomocí cyklu while uzavřete algoritmus do smyčky.
  • Určíme podmínku, zda se nachází vstup uživatele v proměnné scale pomocí not in.
  • Jestliže je podmínka vyhodnocena pravdivě (to znamená, že není), vypíše se uživateli hlášení, že takové tóny nejsou k dispozici, a nabídnou se mu tóny, které může zadat. Opět se nabídne uživateli nový vstup.
  • Jinak se zavolá funkce NajdiPoziciTonu a hned poté necháme zavolat funkci ZahrajTon a novým vstupem pro uživatele.

8. Můžeme také rozšířit náš program tak, aby když uživatel zadá vstup „q“, tak program ukončí.

Řešení:

Hodnocení:

Hodnotíme studentův přístup k práci a to, v jakém rozsahu splnil všechny body zadání. Hodnotíme, zda dokázal efektivně hledat chyby, zda věděl, proč se tyto chyby zobrazovaly, a zda dokázal jednotlivé bloky kódu poskládat tak, aby algoritmus fungoval, popř. zda vymyslel své kreativní řešení problému. Můžeme hodnotit i úhlednost kódu a přidání komentářů pro lepší čitelnost celého kódu. V případě, že student nedokázal algoritmus sestavit, hodnotíme, zdali porozuměl jednotlivým částem a v jakém rozsahu se mu podařilo tyto části poskládat do jednoho celku.

Zkušenosti s použitím materiálu

Tento materiál je samostatnou prací pro žáky. Jelikož je to pokročilá úloha, můžeme nechat studenty řešení dodělat jako domácí úkol a známkovat aktivitu studentů a jejich přístup k řešení úlohy. Počítejme s tím, že ne všichni studenti pochopí zadání. S nimi můžeme psát kód na interaktivní tabuli a postupně odkrývat kousky kódu a jejich řešení. Neodkrýváme kód ihned celý, ale vždy pouze určitou část, přičemž necháme studentům prostor pro vlastní invenci. Samozřejmě studentům povolíme pracovat s internetem a pobídneme je k vyhledávání možných řešení.

Autor
Pavel Konrád

Hodnocení uživatelů

Článek nebyl prozatím komentován.

Váš komentář

Pro vložení komentáře je nutné se nejprve přihlásit.

RVP do 2024

Očekávané výstupy: