Pokročílí 17: Zvuk a hudba v Pygame¶
Na tomto cvičení pokračujete v práci na polročnom projekte. Okrem toho si ukážeme v Pygame prácu so zvukmi a hudbou.
Pygame podporuje prehrávanie zvukov vo formátoch .wav, .ogg a mp3
Zvuky¶
Pygame nám umožňuje prehrávať zvuk a hudbu. Na prehrávanie zvuku nám slúži modul pygame.mixer.Sound. Vlastnosti:
- Vhodné pre krátke zvukové efekty (výstrel, náraz, skok, výbuch, ...)
- Pygame načíta celý zvuk do pamäti programu
- Vieme prehrávať viacero zvukov súčasne, resp. zvuky sa môžu prelínať
Inicializácia prehrávania zvuku pozostáva z nasledovných častí:
- Nastavenie počtu kanálov (koľko zvukov sa môže prehrať súčasne) pomocou
pygame.mixer.set_num_channels(32) - Načítanie zvuku zo súboru pomocou
jump_sound = pygame.mixer.Sound("jump.wav") - Nastaviť hlasitosť zvuku pomocou
jump_sound.set_volume(0.7)(defaulne je 1.0)
Samotné prehrávanie zvuku počas hry sa vykoná nasledovne:
jump_sound.play()- prehrá ihneď daný zvukjump_sound.play(loops=2)- prehrá zvuk 2xjump_sound.play(0, 1200)- prehrá iba prvých 1200ms zvuku
Hudba¶
Okrem zvukov Pygame umožňuje aj prehrávanie hudby. Slúži na to modul pygame.mixer.music. Vlastnosti:
- Dlhá hudba ako pozadie do hry
- Nenačíta celý súbor naraz, ale postupne "streamuje" dáta
- Vie naraz prehrať iba 1 hudbu
- Podporuje nekonečné prehrávanie (looping)
Prehrávanie hudby funguje nasledovne:
- Otvorenie súboru s hudbou pomocou
pygame.mixer.music.load("hudba.mp3") - Nastavenie hlasitosti pomocou
pygame.mixer.music.set_volume(0.5)(odporúča sa hudbu púšťať tichšie ako zvuky) - Spustenie hudby pomocou
pygame.mixer.music.play(-1)- prehrá hudbu s nekonečnou slučkou
Okrem týchto funkcií pygame podporuje aj nasledovné:
pygame.mixer.music.pause()- Pauzapygame.mixer.music.unpause()- Odpauzovaniepygame.mixer.music.stop()- Zastavenie prehrávaniapygame.mixer.music.fadeout(2000)- Pomalé postupné zastaveniepygame.mixer.music.queue("next_track.ogg")- Nastavenie ďalšej skladby
Pong s hudbou¶
Ako príklad použitia zvukov a hudby si môžete vyskúšať upravenú verziu hry Pong z minulých cvičení. Na adrese https://github.com/wagjo/pong má te repozitár shrou Pong, do ktorej boli pridané zvuky a hudba.
Databáza zvukov¶
Ak do vášho projektu potrebujete nejaké zvuky alebo hudbu, existuje veľké množstvo voľne dostupných zdrojov.
| Zdroj | Popis | Licencia / použitie | Formáty / množstvo obsahu | Odkaz |
|---|---|---|---|---|
| Freesound | Komunitou spravovaný repozitár zvukov. | Rozličné Creative Commons licence (CC0 aj s atribúciou) | 500 000+ zvukov | https://freesound.org |
| Zapsplat | Veľká knižnica profesionálnych SFX + hudby pre rôzne žánre. | Royalty-free (komerčné aj nekomerčné), atribúcia pri free účte | ~160 000+ SFX a 800+ hudobných stôp | https://www.zapsplat.com |
| Mixkit (Envato) | Kvalitné zvuky bez registrácie vhodné pre hry, videá a UI. | Royalty-free, bez atribúcie | Stovky základných SFX | https://mixkit.co/free-sound-effects/ |
| sfxr.me (generátor zvukov) | Webový nástroj na generovanie retro SFX zvukov | Neobmedzené komerčné použitie | WAV | https://sfxr.me/ |
Podobne existuje aj databáza hudby, ktorú môžete použiť ako pozadie do vašej hry. Niektore z vyššie uvedených stránok ponúkajú aj hudbu. Okrem toho sú aj ďalšie zdroje:
| Zdroj | Popis + čo ponúka | Licencia / použitie | Odkaz |
|---|---|---|---|
| Pixabay – hudba | Veľká knižnica royalty-free hudby pre komerčné aj nekomerčné použitie. Zahŕňa aj hry-orientované skladby (napr. „games“, chiptune, ambient). | Royalty-free, bez atribúcie pre komerčné a nekomerčné projekty (podmienky Pixabay Content License). | https://pixabay.com/sk/music/ |
| Uppbeat – free game music | Kategória hudby špeciálne pre hry – epické, retro, akčné, chill hudba a ďalšie. | Royalty-free pre komerčné a nekomerčné použitie podľa podmienok služby. | https://uppbeat.io/music/category/game |
| No Copyright Music (Liborio Conti) | Kompozície bez autorských poplatkov, ktoré môžeš použiť komerčne aj nekomerčne. | Royalty-free | https://www.no-copyright-music.com/ |
| Bensound | Vysoko kvalitná hudba od jedného zdroja, jednoduché licenčné podmienky, vhodné pre herné soundtracky a BGM. | Free skladby často pod Creative Commons s atribúciou (uvedenie autora), Pro licencia bez atribúcie a s rozšírenými právami (platená) | https://www.bensound.com/ |
| OpenGameArt | Veľmi široká zbierka hudby priamo pre herné projekty. Každá skladba má vlastnú licenciu, treba ju skontrolovať pri stiahnutí. | Rôzne slobodne licencované hudobné súbory: CC0 (public domain), CC-BY 3.0 / CC-BY-SA, GPL/LGPL; komerčné použitie je možné podľa licencie každej skladby | https://opengameart.org/ |
| Soundimage.org | Veľká zbierka originálnych hudobných tém a skladieb rozdelených do žánrov (fantasy, sci-fi, ambient atď.). Atraktívne pre indie a herné projekty. | Royalty-free povolené komerčné použitie s povinnou atribúciou autora (Eric Matyas) – pozri atribučné info na webe | https://soundimage.org/ |