Aplikace B13 hudba

V lekcích A13 a A14 jsme nahlédli do světa programování hudby. Obsah této lekce volně navazuje na tyto lekce a ukazuje, jak v jazyce MicroPython psát program na hudbu a jaké nám  jazyk přináší další možnosti.

název: B13 Hudba
kategorie: B mírně pokročilí
ref.číslo: B13
projekt: kurz micro:bit
verze: 01, 2017-06-28
autor: Ivo Obr, Lanškroun


 

Než začneme psát melodii, podíváme se některé funkce, které budeme k programování hudby potřebovat.

Začátek našeho programu bude vypadat takto :

from microbit import *
import music

/tady začínáme psát program/…..

Za řádkem “import music” máme jeden prázdný řádek. Další nastavení parametrů provedeme funkcí :

music.set_tempo(ticks=4, bpm=120)

kde parametr “ticks=4” určuje, na kolik dob je jeden takt. Standardně je nastaveno na čtyři doby v jednom taktu. Další parametr “bmp=120” je nastavení počtu taktů za jednu minutu. Je to také standardně nastavená hodnota. Parametry nejsou povinné, viz příklady :

music.set_tempo(bpm=80) – nastaví jen jiný počet taktů za minutu
music.set_tempo(ticks=3) – nastaví jen jiný počet dob v taktu
music.set_tempo() – nastaví standardní hodnoty (ticks=4, bpm=120)

No a nyní už si ukážeme, jak zapsat jednu notu. Zápis se skládá z označení noty písmenem, a je jedno, zda-li píšeme malá nebo velká písmena. Pozor, naší notu “H” musíte psát jako notu “B”. Jestliže je nota snížená, píšeme hned za notou další písmeno a to malé “b”. Jestliže je nota zvýšená, píšeme hned za notou znak “#”.

Příklad: nota “Des” (snížené “D”) napíšeme jako “Db”. Snížené “H” píšeme “Bb”.
nota “Dis” (zvýšené “D”) napíšeme jako “D#”.

Za názvem noty mohou být ještě parametry :

označení noty[číslo oktávy][:délka trvání znění noty]

kde :         číslo oktávy  4 je střední, menší číslo jde k basům, vyšší číslo k vyšším tónům

                 :délka trvání  4 – čtvrťová nota, 2 – půlová nota, 1 – celá nota

Uvedením  čísla oktávy a délku trvání nastavíme nové hodnoty, další noty, pokud jsou ve stejné oktávě již psát nemusíme s číslem oktávy, stejné platí i pro délku trvání noty. Oktáva vždy začíná notou C a končí notou B (u nás H).

Pokud chceme místo noty zapsat pomlku, tak pro označení pomlky použijeme písmeno “R”, tam číslo oktávy psát nemusíme, ale můžeme zapsat délku trvání. (Půlová pomlka je R:2).

Tím jsme vyčerpali informace o zápisu not a můžeme se pustit do hraní. Příkaz pro zahrání melodie je :

music.play(music, pin=microbit.pin0, wait=True, loop=False)

Vysvětlíme si jednotlivé parametry :

music  – jde o označení našeho notového zápisu (viz příklad – dále), nebo jméno přednastavené melodie – viz lekce A13.
pin=microbit.pin0  – není povinné uvádět. Standardně nastavená hodnota je “pin0”, můžeme ale použít i jiný pin na micro:bitu viz číslování (doporučuji max. 1 nebo 2)
wait=True  – pokud je nastaveno “True”, pak se čeká až se melodie dohraje a pak následuje teprve další příkaz. Pokud je nastaveno “False”, provádí se další příkazy a melodie se hraje na “pozadí”. Není povinné uvádět, standardní hodnota je “True”.
loop=False  – pokud je nastaveno “False”, melodie se příkazem zahraje jen jednou. Pokud je nastaveno “True”, melodie se stále opakuje dokola. Není povinné uvádět, standardní hodnota je “False”.

Příklady :

music.play(music.ENTERTAINER) – hrajeme přednastavenou melodii

music.play(notes, pin=microbit.pin1) – hrajeme vlastní skladbu, která má název “notes” a výstup signálu je na PINU číslo jedna.

A nyní již poslední funkce, která nám umožňuje předčasně zastavit hraní hudby, respektive zastavit opakování, když jsme si pustili hudbu s parametrem “loop=True”:

music.stop(pin=microbit.pin0)

Pochopitelně musíme zastavovat na pinu, na kterém jsme hudbu spustili.  A nyní již jen jednoduchý příklad, kdy tlačítkem “A” spouštíme přednastavenou melodii ENTERTAINER a tlačítkem “B” námi napsanou melodii. Je to část preludia od J.S.Bacha.

Na začátku si vytvoříme seznam not (pomlk), tento seznam si pojmenujeme například “notes”. Seznam je obsažen v hranatých závorkách.  Všimněte si, že první zápis noty nastaví číslo oktávy a délku noty. Pokud oktávu neměníme, její číslo nemusíme psát. Pokud neměníme délku noty, nemusíme ji psát u další noty.

Text programu si můžete okopírovat přímo do editoru MicroPython.


from microbit import *
import music

notes = [
    'c4:1', 'e', 'g', 'c5', 'e5', 'g4', 'c5', 'e5',
    'c4', 'e', 'g', 'c5', 'e5', 'g4', 'c5', 'e5',
    'c4', 'd', 'g', 'd5', 'f5', 'g4', 'd5', 'f5',
    'c4', 'd', 'g', 'd5', 'f5', 'g4', 'd5', 'f5',
    'b3', 'd4', 'g', 'd5', 'f5', 'g4', 'd5', 'f5',
    'b3', 'd4', 'g', 'd5', 'f5', 'g4', 'd5', 'f5',
    'c4', 'e', 'g', 'c5', 'e5', 'g4', 'c5', 'e5',
    'c4', 'e', 'g', 'c5', 'e5', 'g4', 'c5', 'e5',
    'c4', 'e', 'a', 'e5', 'a5', 'a4', 'e5', 'a5',
    'c4', 'e', 'a', 'e5', 'a5', 'a4', 'e5', 'a5',
    'c4', 'd', 'f#', 'a', 'd5', 'f#4', 'a', 'd5',
    'c4', 'd', 'f#', 'a', 'd5', 'f#4', 'a', 'd5',
    'b3', 'd4', 'g', 'd5', 'g5', 'g4', 'd5', 'g5',
    'b3', 'd4', 'g', 'd5', 'g5', 'g4', 'd5', 'g5',
    'b3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5',
    'b3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5',
    'b3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5',
    'b3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5',
    'a3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5',
    'a3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5',
    'd3', 'a', 'd4', 'f#', 'c5', 'd4', 'f#', 'c5',
    'd3', 'a', 'd4', 'f#', 'c5', 'd4', 'f#', 'c5',
    'g3', 'b', 'd4', 'g', 'b', 'd', 'g', 'b',
    'g3', 'b3', 'd4', 'g', 'b', 'd', 'g', 'b', 'g3:4'
]
while True:
    if button_a.was_pressed():
        music.set_tempo(bpm=90)
        music.play(music.ENTERTAINER)
    if button_b.was_pressed():
        music.set_tempo(bpm=60)
        music.play(notes)

 

Samozřejmě, že můžete program dále vylepšovat a vyzkoušet si hraní také na jiném pinu.

Přeji Vám pěknou zábavu s hudbou na micro:bitu!

Posted in aplikace, kat B - mírně pokročilí.