Skip to main content.

rPraat a mPraat: Propojení Praat, Matlab a R

rPraat and mPraat Nástroje rPraat a mPraat propojují software Praat pro akustické analýzy řečového signálu (nejpopulárnější program pro fonetické analýzy) s možnostmi obecněji zaměřených jazyků a prostředí R a Matlab.
Načítejte, ukládejte, vytvářejte, upravujte a prohlížejte praatovské soubory typu Sound, TextGrid, PitchTier, IntensityTier, Pitch a Collection v R nebo Matlabu.

rPraat and mPraat (project home page)

  ^ 

Fourier Series 3D - demonstrace principu Fourierových řad

Fourierovy řady 3d obdélník Fourierova transformace 3d obdélník Demonstrace principu Fourierových řad ve 3D (ve skutečnosti se jedná o diskrétní Fourierovu transformaci ve 3D, FFT). Krásně pochopitelné propojení časové a frekvenční oblasti. V jednom obrázku je časová osa, frekvenční osa, amplitudy a fáze. Vše je navíc interaktivní a je možné zapnout i zvuk. Aplikace obsahuje celou řadu zajímavých a detailně komentovaných automatických demonstrací (zatím jen v Java verzi).
Předdefinované signály: sinus, kosinus, obdélník (čvercový průběh), trojúhelník, pila, rázy, sinusový impuls.
Výukové komentované experimenty: Gibbsův jev, harmonické a ostrost, nespojitosti a ostrost, f0 (základní frekvence), barva tónu, stejnosměrná složka (DC), vzorkovací teorém, rozsah sluchu, vnímání fáze (percepce), rázy, vytvořte si vlastní hudební nástroj, sinusový impuls (úvod k Fourierově transformaci), vokály - samohlásky (syntetický hlas), Shepardova stupnice (nekonečná řada hudebních tónů).

Fourier Series 3D demonstration (hlavní stránka projektu)

  ^ 

TB Strobe Tuner (Softwareová stroboskopická ladička pro PC s Windows)

Zvětšit Co je stroboskopická ladička? Ladění hudebních nástrojů pomocí stroboskopického efektu je nepřesnějším způsobem ladění, dosahuje přesnosti 0,1 centu! Na rozdíl od běžných ručičkových či digitálních chromatických ladiček probíhá stroboskopický jev v časové oblasti, tudíž odezva ladičky je okamžitá a přesnost ladění je více než 10x větší!

Potřebuji přesnost 0,1 centu? Většina lidí s hudebním sluchem zavrhuje běžné chromatické ladičky. Sluchem naladí přesněji, nástroj zní příjemněji. Pokud máte nástroj s větším množstvím strun (například kytaru), je pro sladění potřeba vysoká přesnost, se stroboskopickou ladičkou zní akordy krásněji.

Hlavní vlastnosti

Pro více informací a stažení plné verze navštivte hlavní stránku TB Strobe Tuner:
https://www.tomasboril.cz/tbstrobetuner/

  ^ 

Výuka not - Noty 2013

Zvětšit Naučte se číst noty! Efektivní výuka not v houslovém a basovém klíči pro kytaru, klavír a další nástroje.

Program ukazuje náhodné noty zvoleného rozsahu v notové osnově, časový interval si můžete zvolit. Vaším úkolem je zjistit, o kterou notu se jedná a na nástroji ji zahrát. Po chvilce se nota přehraje a ukáže se její jméno. Tak máte kontrolu, zda jste se trefili. Program Vám nenadává, nepočítá chyby a je nekonečně trpělivý. Nejen že se učíte znát noty, ale zároveň si i fixujete, jak znějí a kde je na nástroji zahrát. Dobrý pocit z úspěchu je nejlepší motivací zvyšovat vyučovaný rozsah.

Výhodou oproti běžnému hraní z učebnic je zcela náhodný výběr not. Pokud se totiž učíte hrát jednoduchou melodii, dříve či později si ji zapamatujete a místo z not ji pak podvědomě hrajete zpaměti. Toto u programu nepřichází v úvahu. Noty 2013 nabízejí široké možnosti nastavení časových prodlev, rozsahu not a výběr ze dvou klíčů. Můžete se tak zaměřit na to, s čím máte aktuálně největší problém. Při zvládnutí prvních not se dostaví radost, že to přeci snad jen půjde, a po malých dávkách sami dle svého zvážení přidáváte další a další noty. Pokud se z Vás po pár dnech začnou stávat profíci, asi si odeberete noty, které Vám připadají příliš triviální.

Stáhnout Noty 2013 - instalační .exe soubor.

  ^ 

PhonoDash - fonetická hra pro 1 či 2 hráče

PhonoDash Fonetická hra pro jednoho či dva hráče, předělávka známé hry BoulderDash. Hru vytvořil team v rámci kurzu Úvod do programování II 2013/2014.

Přejít na stránku PhonoDash (Fonetický ústav).

Zahrát si PhonoDash.

  ^ 

Výuka - poznávačky a slovíčka

Zvětšit Efektivní výuka poznávaček, slovíček a podobných druhů znalostí. Program dávkuje nové položky v náhodném pořadí po malých skupinách (tzv. skupina 'Neumí') a teprve po jejich dobrém zažití je přesune do skupiny 'Umí', přičemž do výuky zařadí další věci z celé velké lekce ze skupiny 'Zbývá zařadit'. Náhodné pořadí je pro výuku velice důležité, zároveň je však rozumné, že je použito toto automatické dávkování lekcí po malých skupinách, které jsou po částech důkladně procvičeny, aby nebyl člověk hned na začátku zahlcen desítkami či stovkami nových neznámých pojmů.

Velikost skupiny 'Neumí' lze nastavit, stejně tak pravděpodobnost namátkového ověření už naučených věcí ze skupiny 'Umí'.

Program lze kdykoliv ukončit a později pokračovat tam, kde jsme skončili, jelikož si pamatuje stav věcí naučených i ještě nezařazených. Pro případ práce více lidí na stejném počítači nenastává žádný problém, jelikož si program nastavení a stavy ukládá pro jednotlivé uživatele rozlišené zadaným jménem.

Nastavení směru zkoušení je samozřejmostí. Na příkladu poznávačky rostlin uveďme možnosti v rámci otázky ukázat buď české pojmenování nebo latinský název nebo fotku. Zbylé věci včetně čeledi jsou pak úkolem uhádnutí. Pro každý směr zkoušení se ukládají samostatné stavy skupin 'Umí', 'Neumí' a 'Zbývá zařadit', protože ta samá položka může být v jednom směru naprosto bezproblémová a v opačném směru se může v hlavě plést třeba hodně dlouho.

Nové lekce lze snadno vytvářet a přizpůsobovat, řídicí soubor se vytváří v obyčejném poznámkovém bloku. Případné obrázky nebo zvuky se uloží do adresáře a v řídicím souboru se na ně odkáže přes název souboru.

Unikátní je též způsob vyhodnocení odpovědí. Ty nikam nezadáváme. Pouze se zobrazí otázka a po stisku tlačítka se odkryje správná odpověď. Výhod tohoto přístupu (ověřeného již dříve v populárním programu Výuka not - Noty 2013) je hned několik. Pokud odpověď známe, můžeme otázku prolétnout skutečně bleskurychle. Jestliže známe jinou správnou odpověď (jsme tedy chytřejší než počítač), nikdo nám nenadává. To by bylo obzvláště frustrující u zkoušení slovíček, kde se často nabízí množství synonym nebo variant pravopisu. Ale i v případě překlepů by se člověk plácl do čela - vždyť to vím, proč mě penalizovat, když jsem se jen v rychlosti uklepl. Zkrátka, celý program je postaven na motivujícím pozitivním přístupu počítajícím se sebehodnocením, což je pro kvalitní výuku nejdůležitější. Když se člověk chce něco naučit, pak toto funguje výborně. Jakékoliv "přísnější" postupy by ho od nadšení z nabývání nových vědomostí spíše odrazovaly.

Odkaz na stranky programu Vyuka na fonetice.

  ^ 

RDSync 2007 (Synchronizace vzdálených adresářů)

Zvětšit Často se přesunuji mezi dvěma počítači, pracovním a domácím. Protože chci mít na obou počítačích k dispozici celý adresář přesně v tom stejném stavu, v jakém jsem jej opustil na druhém místě, je nutné oba počítače synchronizovat. Jsou však od sebe vzdálené přes 100 km, a navíc nejsou oba stále on-line. Řešením by bylo buď vzpomínat, co všechno jsem změnil, a ručně zkopírovat, nebo nezatěžovat tolik hlavu a redukovat riziko chyby tím, že přenesu vždy celý adresář. To ovšem není reálné, protože za ta léta narostl do obřích rozměrů, navíc proč se neustále zdržovat kopírováním nezměněných souborů tam a zpět?

Proto jsem vytvořil RDSync. Požadavkem byla automatická synchronizace 1:1 (tedy nadbytečné soubory budou smazány, existující přepsány novějšími verzemi, nové doplněny) bez nutnosti mít oba počítače v okamžiku synchronizace online. Pomocí tohoto programu si vždy při opouštění počítače vyrobím rozdílový adresář, který obsahuje jen nové a změněné soubory, a ten pak uložím na usb flash disk. Jakmile dorazím k druhému počítači, jako první krok z rozdílového adresáře synchronizuji. Aby to celé mělo smysl, je zřejmé, že od té chvíle se v původním počítači nesmí žádné soubory měnit. Nejdříve zase vyrobím rozdíl z aktuálního na ten druhý, pak synchronizuji, a opět můžu pracovat na tom původním. Přestože pracuji na dvou počítačích, mám tak stále pocit, že jsem na "svém", protože mám před sebou adresář přesně v té formě, v jakém jsem jej opustil. Jako druhotný jev se tím neustále provádí záloha, kdyby jeden počítač např. shořel, stále mám většinu souborů v tom druhém, maximálně příjdu o poslední týden práce, což sice není příjemné, ale dá se...

Jak vůbec RDSync pozná, co se změnilo, když druhý počítač v tu chvíli není k dispozici? K tomu slouží funkce 'Ulož strukturu', která si do malého souboru uloží "otisk adresáře", tedy vše potřebné, co potřebuje o adresáři vědět. Funkce 'Ulož rozdíl struktur' pak porovná aktuální adresář na disku s tímto "otiskem" a vyrobí rozdílový adresář a řídicí soubory. Toto je součástí rozdílového adresáře, dorazím na druhý počítač a spustím funkci 'Synchronizuj offline' a adresář se plně automaticky doplní o nové a změněné soubory, naopak smaže ty, co již nemají dále existovat. Výsledkem je přesná 1:1 kopie původního adresáře.

RDSync dále obsahuje doplňkovou funkci 'Synchronizuj online', která synchronizuje dva adresáře ve stejném počítači (vhodné například pro zálohu disku). Opět se přenášejí jen rozdíly. Protože jsou oba adresáře přístupné, není potřeba používat funkci 'Ulož strukturu'. Poslední funkcí je 'Seznam úkolů', umožňující dávkové zpracování více úkolů. Vhodné pro často opakované složitější synchronizace, například více adresářů.

  ^ 

H&T Recorder (nahrávání řeči s Lombardovým efektem v umělém hluku)

Zvětšit H&T Recorder jsem vytvářel na zakázku pro mého bratra Hynka Bořila, doktoranda z Katedry teorie obvodů, oddělení zpracování řeči. V rámci tohoto projektu jsem byl veden jako Studentská odborná síla.

Základním požadavkem bylo jednoduché a přehledné ovládání a vysoká spolehlivost programu. Program je určen pro nahrávání databáze řeči s Lombardovým efektem, tedy řeči v hluku či stresu. Jak asi tušíte, v hluku má lidská řeč jiné parametry. Nejen že mluvíme víc nahlas, ale také poloha hlasu se posune do vyšších frekvencí, změní se intonace a struktura formulovaných vět se zjednodušší. Zkrátka náš mozek dělá podvědomě vše pro to, aby byla důležitá informace v hluku co nejspolehlivěji druhé straně předána. Problém je v tom, že rozpoznávače řeči na tento styl mluvy většinou nejsou trénovány a rozpoznávací skore se rapidně zhoršuje.

Aby mohl bratr toto vědecky prozkoumat, potřeboval zaznamenat hlas zkreslený hlukem, ale záznam chtěl mít čistý - bez hluku. Proto H&T Recorder pouští do sluchátek pokusné osobě hluk, zatímco osoba řve do mikrofonu promluvy, které vidí na obrazovce. K nahrávání byly použity dva různé mikrofony a nahrávací operátor chtěl mít do sluchátek puštěn odposlech s jinýmy parametry hluku. Proto jsme použili dvě zvukové karty. Program musel zvládat v reálném čase s minimálním zpožděním posílat do druhé zvukovky na výstup to, co nahrává první. Použil jsem proto platformu .Net a knihovnu DirectSound z DirectX. Ihned po zaznamenání promluvy se na obrazovce objeví grafický průběh záznamu a také signalize hlasitosti. V případě, že by byla hlasitost příliš velká (došlo by k přebuzení), operátor je výstražnou barvou informován a promluvu nahraje znovu.

  ^ 

Analytická geometrie

Screenshot Ve druhém ročníku na střední škole jsme se v matematice učili analytickou geometrii a já jsem si ji naprogramoval do kalkulačky TI-89. Program je to rozsáhlý, ovládání je intuitivní. Zadáváte body, vektory, přímky a roviny a můžete s nimi počítat odchylky, průsečíky a mnoho dalších záležitostí.

Stáhnout Anageom 2.2 Pro. Ke spuštění na PC je potřeba emulátor, který je v archivu přibalen.
Stáhnout návod k Anageom 2.2 Pro. Podrobný návod. Na příkladech krok po kroku ukazuje použití programu.

  ^ 

Spirograph v R, export do .pdf, svg a .gcode

Zoom in Legendární spirograph, hračka mého mládí, nyní v R včetně návodu na export do vektorových formátů .pdf a .svg, případně i do .gcode pro plottery a CNC gravírování.

Spirograph v .R, zdrojový kód a galerie.

  ^ 

Editor schémat

Zvětšit V prvním ročníku ČVUT-FEL jsem v rámci předmětu Programování v jazyku Java vyrobil editor elektrických schémat. Program umožňuje vkládat základní součástky, nastavovat jejich parametry, ukládat, tisknout. Dále je možné více součástek označit do bloku a ten pak najednou přesunovat nebo nastavovat společné vlastnosti.

Do programu jsem zakomponoval tzv. "myší zkratky", jedná se o můj vlastní vynález. Aneb, jak se píše v nápovědě:

MASTER mód - určen pro profíky - návrháře, kteří od programu očekávají maximální časovou účinnost a pohotovost. Tento způsob editace, který hned vysvětlíme, dokáže ušetřit mnoho práce a není těžké se jej naučit. S hrdostí můžeme prohlásit, že jsme jej vymysleli sami. Systém používá tzv. myších zkratek. Funguje to takto: řekněte si v duchu, co chcete vložit. Rozložte si daný výraz na slabiky a vyťukejte ho myší tak, že krátké slabiky se ťukají levým tlačítkem a dlouhé naopak pravým. Výraz ukončíte prostředním tlačítkem. Správné názvy prvků se dozvíte například tak, že najedete na lištu se součástkami a chvilku počkáte s kurzorem nad zvolenou součástkou. Objeví se tzv. bublinová nápověda s textem přesně odpovídajícím našemu výrazu. Pro větší srozumitelnost si uveďme příklad. Chceme vložit kondenzátor. Najedeme myší přibližně na místo, kam ho chceme vložit, a slovo si rozdělíme na slabiky (kon-den-zá-tor). Vyťukáme levé-levé-pravé-levé-prostřední. A je to. Když tohle pochopíte, máte vyhráno. A jestli vám to připadá šílené, používejte si klidně nástrojovou lištu, mně to rozhodně vadit nebude.

Stáhnout Schemedit.
Mám ovšem vážný problém s kompatibilitou. Program jsem vyráběl v prostředí JBuilder 9 Personal, který má v sobě integrovanou Javu jdk1.4. Ve vyšších verzích se v programu špatně zobrazují menu - jsou schovaná pod kreslicím plátnem. To použití programu velice degraduje. Jediné řešení, které mě zatím napadlo, je distribuovat editor včetně jdk1.4, takový soubor má ale pak přes 30 MB a není vhodný pro umístění na tyto stránky. Pokud vás napadne, v čem by mohla být chyba, dejte mi prosím vědět! Děkuji.

  ^ 

m3uCopy

Zvětšit Vlastním mp3 přehrávač, který neumí přehrávat m3u playlisty. Mám několik alb, kde z názvů mp3 souborů nelze určit pořadí. To je uloženo pouze v m3u. M3uCopy umožňuje zkopírování souborů podle m3u playlistu do předem zvolené složky, přičemž před názvy souborů přidává číslování, takže není pak problém v mp3 přehrávači přehrát album ve správném pořadí. Program si pamatuje poslední nastavenou cílovou složku, takže tam mám nastaven odkaz přímo na USB flash disk mého přehrávače. Jedním stisknutím tlačítka tak započne kopírování souborů přímo do přehrávače.

Stáhnout m3uCopy. Pro spuštění musíte mít nainstalován .Net Framework.

  ^ 

Zimní hra

V prvním ročníku ČVUT-FEL jsem v rámci předmětu Algoritmizace vyrobil jako semestrální práci textovou Zimní hru. Ovládání je jednoduché - vždy pouze vybíráte možnosti z menu a téměř není možné prohrát.

Stáhnout Zimní hru. Po rozbalení budete mít dvě verze na výběr. Pokud máte nainstalovánu Javu, doporučuji vám spustit soubor 'Spusť v Javě.bat'. Pokud nemáte, nezbývá vám nic jiného než spustit soubor 'Zimní hra.exe', který je přeložen v dosovém Borland C++. Problém je, že jsem v této verzi příliš neošetřoval vstup, takže pokud zadáte klávesu, kterou nemáte, program se zacyklí a budete muset hrát znovu od začátku.

  ^ 

Tisk knihy

Zvětšit Program k usnadnění tisku knihy.

Pokud si chcete vytisknout a slepit knihu, tento program vám pomůže. Princip spočívá v tom, že knížka se skládá z malých brožur, které jsou přilepeny na jeden společný hřbet. Každá brožura má maximálně 10 listů A4, přehnutých v polovině a sešitých ve středu (například obyčejnou sešívačkou).

Jak ale správně vytisknout jednotlivé listy A4? Je nutné tisknout dvě stránky na šířku A4 a oboustranně, takže na jednom listu budou celkem 4 stránky. Aby pořadí stránek ve slepené knížce bylo v pořádku, musejí se stránky tisknout přeházeně. Pokud máte tiskárnu, která neumí oboustranný tisk, musíte tisknout nejdříve líce, a pak teprve ruby. Pořadí stránek pro tisk dané brožury vám zjistí tento program. Pak již jen stačí přes schránku vygenerovanou posloupnost zkopírovat do programu, který umí tisknout stránky v zadaném pořadí (například MS Word), a nastavit počet stránek na list: 2. Po vytištění líců vložíte papíry opět do tiskárny, ale tak, aby se tisklo z druhé strany. Pozor, některé tiskárny tisknou papíry v obráceném pořadí, tak si to zkontrolujte, ať je pořadí v pořádku. Pak dejte tisknout ruby. Výsledek ve středu přeložte a sešijte. Až budete mít hotové všechny brožury, přilepte je k silnějšímu papíru, který tak vytvoří hřbet a obálku knihy. K lepení doporučuji disperzní lepidlo (bílé na papír). Zateče do všech mezírek a po zatuhnutí je stále pružné.

Stáhnout Tisk knihy. Pro spuštění musíte mít nainstalován .Net Framework.

  ^ 

Master Mind

Screenshot Analyzátor slavné logické hry.

Pravidla jsou jednoduchá. Program si vymyslí čtyřmístné číslo, na každé pozici je cifra od jedné do osmi. A vy se snažíte toto číslo uhádnout. Tipnete si nějaké číslo a program vám naznačí, jak přesně jste jej odhadli. První cifra hodnocení říká, kolik cifer jste uhádli přesně i včetně pozice. Druhá cifra hodnocení udává ostatní správně uhodnuté cifry, které ovšem jsou na jiném místě, než jste hádali. Vtip hry spočívá v tom, že vám program nikdy neřekne, kterých cifer se toto hodnocení týká. Musíte proto správně a logicky vymýšlet odhady a na základě hodnocení vylučovat postupně možnosti, které nepřipadají v úvahu, až vám nakonec zbyde jen jediná reálná možnost. Pokud si chcete ověřit přesně pozici a hodnotu nějaké cifry, nemusíte vyplňovat všechny cifry. Místo těch, co vás nezajímají, dejte nulu. Aby měla hra smysl, bývá občas počet pokusů omezen, například na osm. V tomto programu je ovšem počet pokusů neomezený.

S programem Master Mind si můžete tuto hru vyzkoušet, navíc vám program může pomáhat s vyřazováním variant, které nepřicházejí v úvahu. Pokud ovšem nechcete takto podvádět, tak nemusíte, je to jen volitelná možnost.

Jak hrát? Zapněte program, do políčka Počáteční RAN# uveďte libovolné číslo. To se použije jako počáteční hodnota pro generátor náhodných čísel. Je to výhodné, pokud si budete chtít někdy v budoucnu znovu přehrát tu samou partii. Pokud vás nic nenapadá, napište tam například aktuální čas (formát hhmmss bez oddělujících znaků). Stiskněte tlačítko Nová hra. A už můžete začít hádat. Do políčka odhad napiště odhad a stiskněte tlačítko Hodnocení. Pod ním se vám zobrazí hodnocení. Pokračujte dalším odhadem. Až číslo uhádnete, zobrazí se vám hodnocení 40, což znamená čtyři správné cifry na správných místech.

Pokud chcete používat analyzátor zbylých možností, tak vždy po stisku tlačítka Nová hra stiskněte také Znovu. A vždy po tlačítku Hodnocení stiskněte i Vyhodnoť. V seznamu vlevo se vám budou zobrazovat zbylé možnosti. Přeji vám příjemnou zábavu!

Stáhnout Master Mind. Pro spuštění musíte mít nainstalován .Net Framework.

  ^ 

Zálohovací systém

V roce 2004 jsem pro Škoda auto, Mladá Boleslav, vytvořil zálohovací systém, který umožňuje vytváření rozdílových záloh. Slouží k ukládání méně citlivých dat a realizace je cenově mnohem výhodnější než páskový zálohovací systém.

Programové prostředí jsem vytvářel v MS Visual C++ a hlavním požadavkem byla naprostá spolehlivost systému. Nepřicházelo v úvahu, aby program provedl neplatnou operaci nebo aby správně nezareagoval na stav, který není bežný. Vše muselo být ošetřeno, každá výjimka zanalyzována a nahlášena. Kdyby toto nefungovalo, mohlo by dojít ke ztrátě dat, což je naprosto nepřijatelné. Samozřejmostí je podpora dlouhých názvů souborů a kódování Unicode, proto nedělají problémy české znaky, ale ani azbuka či japonská písma.

Systém sestává z několika utilit, které mají přesně definované parametry příkazové řádky. Tyto utility jsou pak v předepsaný čas volány z dávkových souborů podle požadavků administrátora. Jakákoliv nesrovnalost je ihned hlášena a dávkové soubory se mohou na základě návratových kódů utilit rozhodovat, jakou další činností mají pokračovat.

Hlavní utilitou je program MovDiff 2.0, který porovná dvě struktury a zkopíruje nové a změněné soubory do specifických adresářů. Vznikají tak každý den rozdílové zálohy. Jiným programem je pak provedena přesná kopie 1:1 zálohovaného serveru. Tímto způsobem je pak možné téměř okamžitě zprovoznit náhradu serveru, který havaroval. Navíc není problém z rozdílových záloh obnovit stav kdykoliv z minulosti. Často se stává, že si někdo ze zaměstnanců smaže či přepíše soubor. Pro administrátora je pak jednoduché danou verzi souboru z minulosti dohledat a obnovit.

Pokud byste projevili zájem o tento zálohovací systém, ozvěte se mi na kontaktní údaje a domluvíme se na podrobnější prezentaci možností programu.

  ^ 

Syntezátor pro Linux

Na přelomu let 2002 a 2003 pracoval můj bratr Hynek Bořil v rámci diplomové práce na ČVUT-FEL na unikátním algoritmu, který v reálném čase snímal hru na elektrickou kytaru, rozpoznával hrané tóny a ty převáděl s minimálním zpožděním na zvuk syntetických varhan. S minimálními náklady tak vznikla syntetická MIDI kytara. Název diplomové práce je Kytarový MIDI převodník, s bratrovým svolením jsem ji zde vystavil, abyste si ji mohli prohlédnout.

Celý algoritmus byl odladěn v Matlabu. Aby bylo možné program prakticky demonstrovat, bylo ho nutné přepsat do jazyka vhodného pro real-time zpracování. Rozhodli jsme se algoritmus implementovat do C++ v prostředí Linux. Co se týče hardware části, na kytaře byl umístěn speciální snímač, ze kterého vedl výstup pro každou strunu zvlášť. To bylo pro algoritmus nutné. Těchto šest kanálů jsme přivedli do stereo Line-In vstupů tří zvukových karet.

Bratrův algoritmus jsem pak z Matlabu kompletně přepsal do C++ a zprovoznil jsem pod Linuxem práci se zvukovými kartami v reálném čase. Po asi dvou týdnech práce se nám celý projekt povedlo zprovoznit. Program v reálném čase zpracovával hrané tóny z kytary a s minimálním milisekundovým zpožděním, které lidské ucho není schopno zachytit, vycházel z výstupu zvukové karty syntetizovaný zvuk varhan. Paralelně k tomu probíhal i zápis not do MIDI souboru. Místo varhan samozřejmě není problém použít zvuk libovolného jiného nástroje, varhany se nám však pro demonstraci zdály nejefektivnější.

  ^ 

Visual Baltazar 5.0

Zvětšit V roce 2001, kdy mi bylo 17 let, jsem v rámci programovací soutěže vytvořil vizuální nadstavbu dětského programovacího jazyka Baltazar 5.0. Je to programovací prostředí, které běží pod systémem MS-DOS, umožňuje programovat v jazyku blízkém jazyku C, nepodporuje ovšem objektové programování. Přestože je v něm možné kreslit v grafickém režimu, nebyla k dispozici možnost tvořit jednoduchým způsobem grafické uživatelské prostředí (GUI).

Rozhodl jsem se tuto mezeru vyplnit, a tak jsem začal tvořit nadstavbu, která by toto vyřešila. Vytvořil jsem jádro (kernel), které spravovalo programátorem definované objekty, jako jsou formuláře, tlačítka, posuvníky, obrázky, zaškrtávací tlačítka a textová pole včetně označování do bloků a textové schránky. Toto jádro pak v pravidelných intervalech objekty překreslovalo a vyhodnocovalo události, které nad nimi vznikaly. V takovém případě volalo příslušné nadefinované funkce (metody). Tímto způsobem jsem povýšil dosový programovací jazyk Baltazar na úroveň událostmi řízených aplikací, jako známe z Vizuálních programovacích jazyků, jako je například MS Visual Basic.

Veškeré vykreslování objektů jsem musel řešit úplně od začátku - od bodů, linek, vyplňovaných obdélníků atd. Vytvořil jsem tak vlastně jednoduché "Windows", které spravovaly jednotlivé formuláře včetně objektů v nich umístěných. Samozřejmostí bylo přesunování formulářů, změna jejich velikosti, přepínání mezi jednotlivými hladinami (kliknutím se formulář vespod přesunul dopředu). Došlo také k transformaci uvažování při programování. Zatímco v běžných dosových programech program neustále provádí nějakou činnost a občas vyzve uživatele k zadání hodnot, v tomto případě program jakoby čeká, až ho uživatel nějakou událostí (klik myší, stisk klávesy, pohyb myši přes objekt) vyzve k tomu, aby na ni nějak reagoval (zobrazení jiného okna, uložení dat, spuštění výpočtu a pod.). Tento událostmi řízený styl programování již v dnešní době běžně známe a používáme pod okénkovými operačními systémy.

Přestože v době vzniku Visual Baltazara 5.0 již běžně normální programátoři (včetně mě) využívali vizuální programovací jazyky pod Windows, Linuxem či jinými operačními systémy, mezi dětmi v České republice byl dosový Baltazar velice populární a stále v něm programovaly velké množství programů. Visual Baltazara jsem vytvářel tedy i pro ně, abych jim při programování ušetřil práci. Nápad vytvořit takovéto prostředí pod MS-DOS jsem bral jako velikou výzvu, jestli bych zvládl takto komplexní problém naprogramovat. V dnešní době je již tento program samozřejmě nepotřebný, avšak jsem rád, že jsem jej tenkrát vyrobil. Tím, že jsem si vyzkoušel návrh takovýchto "malých Windows", jsem se mnohému naučil a naplňuje mne radostí, že jsem dokázal něco takového vytvořit.

Stáhnout učebnici k Visual Baltazar 5.0. V ní se dočtete více o možnostech programu.
Stáhnout VBalt včetně ukázkových programů, fungují i pod Windows XP. Zvláště doporučuji příklad 'hodinky s vodotryskem', je to sice nesmysl, ale jak už to na tomto světě chodí, nesmysly mají vždy největší úspěch.

  ^ 

Teploměr

Zvětšit Teploměr jsem naprogramoval v době mých studií na střední škole a je to můj první program, ve kterém jsem použil objektově orientované programování v C++.

Teploměr sice pracuje pod MS-DOS, ale přesto má velmi příjemné uživatelské prostředí. Program jsem vytvořil pro mého bratra, který v rámci semestrální práce na vysoké škole stavěl digitální teploměr, který komunikoval s počítačem pomocí paralelního rozhraní LPT. Jádrem teploměru byl A/D převodník a teplotní senzor.

Já jsem k tomu vytvořil program, který umožňoval dlouhodobý záznam teplot a jejich grafické zobrazení v čase. Program si již během záznamu automaticky nastavoval měřítka na osách tak, aby byl naměřený průběh co nejlépe vidět. Po ukončení měření bylo možné naměřená data uložit do souboru a pomocí kurzorů bylo možné hledat minimální, maximální a průměrné teploty, nebo vybranou část záznamu zvětšit funkcí ZOOM.

Na screenshotu vidíte pokus, kdy jsme s bratrem nejdříve teplotní čidlo hodili do právě uvařené vody. Poté jsme jej vyhodili ven z okna, kde bylo hluboce pod nulou. Toto nám teploměr umožňoval, protože k čidlu vedly dlouhé přívodní kabely. Vidíme, že oba přechodné jevy probíhaly po exponenciále.

Stáhnout dokumentaci k HW části teploměru.

  ^ 

Monitoring

Zvětšit O prázdninách před nástupem na střední školu a během prvního ročníku na střední škole jsem pro jednu firmu v C++ pod MS-DOS programoval monitorovací program, který přijímal impulsy asi z třiceti zařízení, z každého zařízení byly přiváděny čtyři signály. Na základě těchto impulsů se rozhodovalo o provozním stavu zařízení, který se i barevně na obrazovce zobrazoval.

K dispozici byl i tabulkový editor, v kterém bylo možné nastavit některé důležité prahové hodnoty. Po jejich překročení program spouštěl další akce a do tabulky zaznamenával vypočtené hodnoty.

Pod heslem byl zabezpečen vstup do nastavení počátečních a rozhodovacích hodnot pro jednotlivá zařízení. Prostředí bylo uživatelsky velmi příjemné a všechny zadané hodnoty byly ihned kontrolovány, jestli neobsahují chybu.

Program si po časových úsecích ukládal data na disk, systém byl tedy zabezpečen proti výpadku napájení. V takovém případě pak stačilo program znovu spustit a ten pokračoval od posledních uložených hodnot.

Toto byl můj první profesionální program na zakázku a jsem rád, že se mi povedlo v předepsaném čase úkol splnit. Během jeho tvorby jsem se také mnohému přiučil, především tvorbě příjemného uživatelského prostředí.

V době tvorby tohoto programu jsem ještě neuměl objektově programovat, veškerá data byla proto uložena přímo v polích. Když se zpětně na program podívám, uvědomuji si, kolik bych si ušetřil práce, kdybych v té době již objektově programovat uměl.

  ^ 

ZOO editor

Zvětšit ZOO editor, znám však spíše pod názvem Pustr.

Na základní škole jsme pracovali na projektu tvorby www stránek pro libereckou ZOO. Projekt byl nakonec předčasně ukončen, avšak moje část úkolu byla v pořádku splněna. Měl jsem se spolužákem Lukášem Bajerem vyrobit program, určený pro sběr dat o jednotlivých zvířatech. Program jsme vyrobili, ale obsahoval několik méně závažných nedostatků. Proto jsem později již jen já sám vytvořil program úplně znovu od základů.

Program je naprogramován v dnes již historickém Visual Basic 3, byl však plně funkční a obsluha byla intuitivní. Kromě vygenerování základní kostry informací o daném zvířeti umožňoval uživateli přidávat další položky (dalo by se tu mluvit o analogii s formátem xml). V případě, že položky byly zadány v přeházeném pořadí, program umožňoval jejich automatické formátování.

Velmi zajímavou funkcí byla možnost provedení kontroly zadaných dat, kdy program postupně procházel jednotlivé položky a podle jejich formátu, který byl uložen v externím textovém souboru, kontroloval, zda splňují dané náležitosti. Pakliže nesplňovaly, uživatel byl upozorněn na nedostatky a bylo mu vysvětleno, v čem je chyba a jak ji napravit. Na obrázku vidíte stav právě probíhající kontroly, kdy program upozorňuje uživatele, že v desetinných číslech má psát desetinnou čárku místo tečky.

  ^ 

Hra Had 99

Zvětšit Na základní škole jsme měli zakázáno hrát jakékoliv hry kromě vlastní tvorby. Tak jsem si jednu hru vyrobil :-) Jedná se o legendárního hada, ovšem v mém provedení můžete projíždět skrz krajní stěny, dostanete se tak na druhou stranu obrazovky. Hra je tím zábavnější a člověk může vymýšlet více kombinací, jak se k prodlužující potravě co nejkratší cestou dostat.

Při každém spolknutí potravy se prodlužujete, takže je hra těžší. Když sesbíráte všech deset kusů, dostanete se do dalšího a těžšího levelu, celkem je jich dvacet.

Celé je to naprogramované v assembleru, instrukční soubor jsem použil 8086 a využívám některé služby MS-DOS. Uplatnil jsem zde znalosti, které jsem se naučil ve škole v povinně volitelném předmětu, zaměřeném právě na assembler. Některé věci jsem se musel přiučit sám z nejrůznějších nápověd.

Na rychlých počítačích může pod určitými systémy Windows špatně fungovat časování, hra se pak stává prakticky neovladatelnou. Tento problém se týká například Windows XP. Proto je možné stáhnout si přiložený .iso soubor a vypálit ho. Vznikne tak bootovací CD nebo DVD, to záleží na vašem výběru. V takto nabootovaném systému by hra Had měla běžet v pořádku normální rychlostí.

Stáhnout bootovací CD (DVD) se hrou HAD. Funguje všude a je nezávislé na použitém operačním systému. Soubor má jen 1,5 MB.
Stáhnout původní verzi hry HAD. Ovšem nefunguje pod Windows XP.

  ^ 

Vyjmenovaná slova (BLMPSVZ)

Zvětšit Můj soutěžní program v dětském programovacím jazyku Baltazar.

Program vás zkouší z vyjmenovaných slov. V zásobě má přes tisíc výrazů a sám kontroluje, aby se často neopakovaly výrazy, které vám nečiní žádné potíže. Samozřejmostí je také možnost nastavení jen určitých písmen pro procvičování. Pokud například dítě umí jen vyjmenovaná slova po 'b', ostatní písmenka se v nastavení dají vypnout. Není ani problém zkoušet zároveň a pouze z písmenek 'm' a 'z' či jiných. Zkrátka program je univerzální a svůj účel i po letech plní bezchybně.

Po odpovězení předem daného počtu výrazů se objeví vyhodnocení, ve kterém se dozvíte svoji úspěšnost. Nakreslí se vám také usmívající se či mračící se sluníčko - podle toho, jak dobří jste byli. Je to takový malý pokus o školu hrou :-) Můžete si taky souhrnně zobrazit všechny výrazy, ve kterých jste udělali chybu, pochopitelně i včetně správných odpovědí.

Stáhnout BLMPSVZ. Přestože je program pro MS-DOS, funguje perfektně i pod Windows XP.

  ^ 

Hra Bombák

Screenshot Zábavná akční hra, kterou náš team ze základní školy vytvořil během pouhého týdne.

Cílem je včas vybombardovat celé město a v pořádku přistát. Pokaždé, kdy proletíte obrazovkou, se vaše pozice o něco sníží. Není proto úplně snadné úkol splnit a vše záleží na vašem postřehu a odhadu. Pokud kolo splníte, dostanete se do dalšího levelu, ve kterém je vše stíženo nejen větší rychlostí, ale k tomu vám začne helikoptéra ještě trochu poskakovat.

Celé je to naprogramováno ve Visual Basic 3. Já a Lukáš Bajer jsme byli hlavní programátoři, při tvorbě nám však pomáhala celá řada spolužáků z kroužku předmětu zaměřeného na Visual Basic. Jednalo se především o grafické práce, jako například kresba domečků, mráčků, helikoptéry, animace ptáčka atd. Do závěrečné tabulky hodnocení jsme si vypůjčili obrázek Earla ze známých kreslených vtipů Red Meat. Doufám, že to nikomu nebude po těch letech vadit. Kdyby však jo, program bez odmlouvání ze svých stránech odstraním, není problém.

Stáhnout Bombák. Pro správnou funkčnost je potřeba mít ve Windows zaplou normální velikost fontů.
Varování! V programu jsou použity zvuky, a to jako dost nahlas. Tak si v rámci zachování zdraví ztlumte reproduktory.

Poznámka: v současné době je na rychlých počítačích trochu problém s časováním. Hra je sice hratelná, ale je obtížnější, než dřív bývala :-)

  ^ 

Hra Čtverce

Zvětšit Tato logická hra představuje historický přelom v mém programování. Jedná se totiž o můj první větší program v jazyku C a na počítači PC. Předtím byla moje tvorba totiž téměř výhradně zaměřena na osmibitový počítač Sinclair ZX Spectrum a programovací jazyk Basic. Jako poznámku bych měl uvést, že hra Čtverce je v podstatě předělávkou stejné hry, kterou jsem naprogramoval na ZX Spectrum, ovšem tato verze se již bohužel nezachovala.

Princip hry je jednoduchý, cílem je vymazat všechny vyplněné čtverečky. Kam ťuknete myší, vyplnění se invertuje (obrátí). Situace je ovšem zkomplikována tím, že se invertují i bezprostředně sousedící čtverce. Chcete se tedy zbavit jednoho čverečku, místo toho si ale třeba zase vyplníte nějaké, které jste nechtěli.

I když se to někdy nezdá, úkol by měl být vždy řešitelný. Hrací plocha je totiž generována tak, že program nejdříve automaticky ťukne na daný počet náhodně vybraných čtverečků, čímž dochází k invertování. Kdyby tedy hráč na ty samé pozice ťuknul, úkol má ihned vyřešen. Problém je v tom, že počet počátečních ťuknutí je velký, tudíž není ve výsledné situaci jednoduché původní místa rozpoznat. Nic se však neděje, pokud ťuknete někam, kam jste neměli, kdykoliv to novým ťuknutím vrátíte zpátky.

Stáhnout Čtverce. Přestože to je program pro MS-DOS, pod Windows XP bezproblémů funguje.

  ^ 

Hra Formule

Zvětšit Hra Formule je jediným programem, který se zachoval z doby mé tvorby na osmibitovém počítači Sinclair ZX Spectrum.

Je to doba, kdy jsem chodil na první stupeň základní školy a začínal jsem se učit programovat v jazyku Basic. Vytvořil jsem tenkrát mnoho užitečných či zábavných programů.

Hra Formule však představuje vrchol mé tehdejší tvorby. Dokončil jsem ji 1. září 1995, tedy v den, kdy mi končily letní prázdniny, opouštěl jsem první stupeň základní školy a nastupoval jsem do páté třídy základní školy s počítačovým zaměřením.

Hra je určena pro dva hráče. Na počítači ZX Spectrum jeden hráč ovládal autíčko z klávesnice, druhý hráč z joysticku Kempston, což bylo základní vybavení počítače. Úkolem bylo dojet v co nejkratším čase do cíle na ještě neobsazený znak mřížky (#). Za každý náraz do stěny byly hráči účtovány trestné body. K bodům se nakonec přičetly sekundy, které hráči trvaly, než dojel do cíle. Zvítězil hráč s menším počtem bodů.

Díky skvělému volně šiřitelnému emulátoru ZX Spectrum, použitelnému přímo v prohlížeči, si můžete i vy tuto hru zahrát, přestože počítač ZX Spectrum nevlastníte. Musíte mít ovšem nainstalovánu Javu.
Varování: emulátor občas vydává divné hlasité zvuky, doporučuji vám proto ztlumit hlasitost.
Zahrát si Formule. Pro úspěšné zobrazení této stránky je nutné mít nainstalován Java plugin pro váš prohlížeč.