stránky radioamatérské stanice
OK2PPK » Texty » Programy » Akordy | ---
offline program
v2.4 (2013/12), aplikace pro DOS
autor OK2PPK
Program Akordy je interaktivní analyzátor a syntezátor hmatů na kytaře. V režimu analyzátoru se mu na zobrazené klávesnici zadá, kde jsou stisknuté hrající struny, a které struny nehrají, program vypíše seznam tónů hrajících strun a zkusí na jednotlivých tónech postavit z ostatních tónů akordy a vypíše jejich odpovídající akordové značky nebo informaci, že se pro daný základní tón nejedná o akord. Aby bylo možné analyzovat i potenciální sedmizvuk, u kterého je některý tón na šesti strunách vypuštěný, je možné programu povolit, aby zkusil sám při stavbě akordů vhodné - možná vynechané - tóny doplňovat a vypsal i značky takto sestavených akordů.
V režimu syntezátoru se programu zadá akordová značka a program na hmatníku kytary ukáže, na které struny se má hrát, a které se popř. mají vynechat. Po zadání značky program vypíše tóny, ze kterých se akord skládá, potom se mu musí zadat rozpětí hmatu, tj. zde program respektuje fyzické možnosti hráče rozložit prsty ruky jen přes omezený počet polí, a dále lze upřesnit poloha, ve které se bude akord hrát (tj. počáteční pole). Následně program ukazuje na hmatníku všechny hmaty, které odpovídají různým obratům daného akordu, mezi nimi lze krokovat (jen směrem dopředu). Pokud byla zvolena poloha 0, tak program postupně ukazuje různé obraty v jednotlivých polohách, krokováním lze přeskočit zbylé obraty a posunout se rovnou do další polohy. Program při testování použitelnosti prstokladu bere v úvahu i možnost hrát malé či velké barré, ale na hmatníku je zvlášť nějakým symbolem nevypisuje, ukazuje pouze obecně, kde se mají struny stisknout, a které se mají vynechat. U sedmizvuků program dopočítává taktéž vynechání některého tónu. Upozorňuji na detail, který je sice v nápovědě u syntézy uveden, ale mohl by vám uniknout - ze syntézy se dá odejít zpět do základní obrazovky jenom tak, že zadáte akord X.
Program vznikl původně pro C64, jeho interaktivní část jsem napsal v basicu, který byl nedílnou součástí tohoto mikropočítače, a časově náročné části jako např. analýza, byly kvůli rychlosti naprogramovány v assembleru pro CPU 6510, kterým byl C64 osazen. Při přepisu do DOS a do pascalu jsem pak narazil na nutnost buď znovu po letech zjišťovat, jak ty šílené rutiny pro analýzu a syntézu vlastně pracovaly, a napsat to celé znovu, nebo nějak kód z C64 včetně pochopitelných tun příkazů GOTO a různých podmíněných a nepodmíněných skoků v assemblerovské části převést tak, jak je. Použil jsem tuto druhou alternativu a nechtějte vidět, jak přepis programu, používajícího registrovou výstroj CPU 6510 včetně nepřímé adresace paměti přes indexregistry, vypadá - jedno návěstí za druhým a proměnné nahrazující registry a paměť.
Program mi funguje i na PC s WIN XP. Původně byl napsán s použitím znakové sady bří Kamenických, pokud se zobrazil ve woknech v emulovaném grafickém okně, kde bylo kódování CP852, tak část znaků byla zobrazena špatně. Nakonec jsem ho tedy po letech znovu zkompiloval s tím, že jsem z textů českou diakritiku úplně vyházel a znaky použité pro zobrazení hmatníku jsem upravil podle možností sady CP852. Známou chybu, kdy na rychlejších strojích nad cca 200MHz programy překládané ve starém TP po spuštění ihned zhavarují, protože v runtime modulu, který je k nim při sestavování vždy připojen, dojde při kalibraci časovače k dělení nulou, jsem opatchoval.
Program nemá žádné parametry příkazové řádky, spouští se pouze přímo do interaktivního režimu a nikam si nic nezapisuje.
AKORDY ... spustí interaktivní režim do hlavní obrazovky
Stažení: akordy.exe - program v2.4 (21kB)
v2.1 1991 - výchozí verse napsaná pro Commodore 64II v basicu + assembleru. Starší verse 1.x programu stejného jména sice existují také, ale tento má zcela jinou funkci.
v2.2 1995/7 - první verse pro DOS, program převeden na PC a přepsán do turbo pascalu.
v2.3 1997/9 - opravena chyba v rutině analýzy hmatů, kvůli které se u tónů vypisovaných u strun neodmazávaly značky # a b a zkreslovalo to údaje na obrazovce
v2.4 2013/12 - převedeno z KEYBCS2 do CP852, z textů odstraněna diakritika, kvůli problémům s kompilací změněny deklarace některých řetězcových proměnných