abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 23:22 | Bezpečnostní upozornění

    Výzkumníci ukazují, jak mohou otevřené tunely a IPv6 Extension Headers synchronizovat pakety do krátkých provozních špiček. V kontrolovaném experimentu naměřili přes 180násobnou koncentraci paketového toku vůči průměrné rychlosti odesílání — nikoli 180násobné zvětšení objemu dat. Článek obsahuje metodiku, limity měření i mitigace pro GRE, IPIP a další tunely.

    vencour | Komentářů: 1
    včera 12:44 | Pozvánky

    Po velkém úspěchu prvního MobileLinux Hackdaye se vracíme do Českých Budějovic s druhým ročníkem. V pátek 30. října 2026 od 10:00 se v prostorách Jihočeské univerzity uskuteční Embedded & MobileLinux Hackday #2. Těšit se můžete na témata jako Immutable Linux na telefonech (BengalOS), U-Boot a upstream vývoj, AI optimalizace pro embedded systémy nebo otevřený hardware. Nebude chybět praktické hackování, sdílení zkušeností a možnost … více »

    lkocman | Komentářů: 0
    včera 00:44 | Bezpečnostní upozornění

    Dne 21. října 2026 vydal projekt Node.js bezpečnostní aktualizace opravující deset zranitelností, včetně jedné umožňující potenciální vzdálené spuštění kódu (RCE). Nejzajímavější je CVE-2026-111497, chyba dekodéru Brotli, kterou objevili výzkumníci využívající OpenAI Codex Security. Chyba je v nativním dekodéru Brotli, nikoli v samotném JavaScriptu. Speciálně vytvořený komprimovaný vstup způsobí, že dekodér zamění

    … více »
    vencour | Komentářů: 14
    23.10. 17:44 | IT novinky

    Francouzský výrobce kabelů Nexans upozornil na napjaté dodávky elektrických kabelů. Výstavba nové výrobní linky pro některé typy kabelů může trvat přibližně tři roky. Datacentra potřebují rozsáhlé nízkonapěťové a středněnapěťové rozvody. Poptávka roste současně s modernizací elektrických sítí. Někteří odběratelé proto uzavírají výrazně delší dodavatelské smlouvy [Reuters].

    vencour | Komentářů: 14
    23.10. 14:44 | Zajímavý projekt

    Představena byla (𝕏) virtuální platforma FLYBENCH FPV, která nováčky provede zapojením a konstrukcí dronů.

    Ladislav Hagara | Komentářů: 5
    23.10. 04:11 | Nová verze

    Google Chrome 156 byl prohlášen za stabilní. Přehled novinek v poznámkách k vydání. Opraveno bylo 353 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    22.10. 20:22 | IT novinky

    Indická společnost eMudhra po bezpečnostním incidentu, tj. kompromitaci soukromých klíčů osmi mezilehlých certifikátů své certifikační autority, opouští globální byznys s SSL/TLS certifikáty.

    Ladislav Hagara | Komentářů: 4
    22.10. 15:44 | Bezpečnostní upozornění

    Dle Phoronixu zveřejnila společnost Trend Micro prostřednictvím programu Zero Day Initiative (ZDI) několik hlášení bezpečnostních zranitelností přímo na veřejném mailing listu LKML, přestože některé chyby dosud nemají opravu začleněnou do hlavní větve jádra. Mezi hlášenými problémy jsou dvě zranitelnosti s hodnocením CVSS 9.0, týkající se SMB Direct a KSMBD, které mohou umožnit vzdálené spuštění kódu. Další hlášení se týkají … více »

    vencour | Komentářů: 0
    22.10. 15:33 | Nová verze

    Správce hesel KeePassXC byl vydán ve verzi 2.8.0. Přechází na Qt 6, podporuje vkládání hesel s Waylandem, rychlé odemykání pomocí Polkitu nebo možnost nastavení klávesových zkratek (seznam změn).

    ʚĭɞ 🍉 | Komentářů: 0
    22.10. 15:22 | Nová verze

    Databáze DuckDB (Wikipedie) byla vydána ve verzi 2.0.0 LTS. S kódovým názvem Cinnamon Teal (čírka skořicová). S vyladěným protokolem Quack.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2909 hlasů
     Komentářů: 33, poslední 20.10. 23:44
    Rozcestník
    Štítky: není přiřazen žádný štítek

    GNU Lilypond - II

    26. 11. 2002 | Tomáš Kopeček | Multimédia | 8844×

    Praktický příklad.

    Logo Vítám vás u druhého pokračování seriálu o programu na sázení notových partů GNU Lilypond. Pokud vás minulý díl zaujal, tak teď přijde křest ohněm. Ze začátku to bude celkem nevinné a pak se ponoříme do hlubin překladače, abychom se na závěr vynořili i s nějakými těmi znalostmi.

    A vzhůru do příkladu!

    Minule se vám (doufám) podařilo nainstalovat Lilypond a ukázali jsme si velmi, velmi jednoduchý příklad. Jenže jedna nota asi hudbu nedělá, takže zkusíme napsat kousek skladby pro klavír:

    \version "1.6.3"
    \include "paper16.ly"
    \include "deutsch.ly"

    % \header {
    %    title = "Imagine"
    %    composer = "J. Lennon"
    %    tagline = ""
    % }

    right = \notes {
      \property Staff.TimeSignature \override #'style = #'C
      \time 4/4
      \clef bass
      <e4 g> <e g> <e g> <e g h> |
      <f a c'> <f a c'> <f a c'> <f16 a> ais h8
    }

    left = \notes {
      \clef bass
      a,8 a a, a a, a a, a | d a d a d a4.
    }

    \score {
      \simultaneous {
        \context Staff = upper \right
        \context Staff = lower \left
      }
    \paper {}
    \midi {}
    }

    [picture of music]

    Uf, tady je toho najednou nějak moc. Nebojte se, zde si ukážeme základy práce a zbytek už je jen omáčka kolem. První tag je \version. Je celkem intuitivně zřejmé, k čemu se používá. Během vývoje se přece jen občas změní syntaxe jazyka a aby skript convert-ly mohl vše správně převést do nejnovější verze, tak je třeba udržovat tuto informaci.

    \include opravdu dělá to, co by od něj člověk očekával. Vkládá tedy soubor nalezený v cestě. První soubor, tedy paper16.ly nastavuje všechny potřebné hodnoty podle velikosti použitého fontu - 16 bodů. Druhý soubor slouží k načtení německých názvů not. Přece jen jsme asi zvyklejší na h, než na anglické b.

    Dalším tagem je \header. Zde vidíme poprvé to, co bude následovat téměř všude a to jsou složené závorky. Podobně jako třeba v TeXu označují nějakou uzavřenou skupinu. Uvnitř \header je možno nastavit vše, co se bude objevovat kolem notového partu, tedy nadpisy, autory, nástroje, apod. Jak vidíte, je zapoznámkován. to jen abyste viděli, že jednořádkové poznámky jsou stejné jako v TeXu. Víceřádková poznámka vypadá takto %{ ... %}

    A teď se blížíme k hudbě, ovšem pozvolna a to přes makra. Makra v pojetí Lilypondu nejsou zdaleka tak mocná jako TeXová. Nemají žádné parametry, takže slouží spíše k ukládání opakujícího se kódu a především k rozumnému členění zdrojového textu. Nadefinujeme tedy makro \right, které bude obsahovat noty hrané pravou rukou (Ve zdrojovém textu to lomítko opravdu nechybí, pokud by tam bylo, tak by se Lilypond domníval, že již bylo definováno, pokusili by se jej rozvinout a už by vám spílal, jak jste ho asi zapomněli nadefinovat.) \notes říká, že vše co bude následovat se má interpretovat jako notový záznam (jiné možnosti jsou \chords a \lyrics, které budeme probírat později).

    Nejdříve přeskočíme jeden řádek a nastavíme celý takt pomocí \time 4/4. Tento zlomek může být libovolný. Pokud pro danou kombinaci existuje nějaká značka (čtyřčtvrťový, dvoupůlový takt apod.) bude vykreslena. V opačném případě se zobrazí zlomek. Toto chování ovlivňuje vlastnost style. A tímto se vracíme k předchozímu řádku. Mocným nástrojem Lilypondu jsou právě vlastnosti jednotlivých objektů.

    Střeva Lilypondu

    Nyní od příkladu lehce odbočíme a osvětlíme si způsob, jak vlastně Lilypond pracuje. Vypíšeme si jednotlivé fáze a poté si je popíšeme:

    • Inicializace
    • Syntaktická analýza
    • Interpretace
    • Prebreaking - předlomení
    • Preprocessing - příprava tiskových objektů
    • Break calculation - definitivní výpočet zlomů
    • Breaking - vlastní lámání
    • Outputting - převod výstupu z interního formátu do požadovaného výstupního formátu

    Nejdříve se načtou všechny inicializační soubory a aktivuje se scheme (derivát LISPu). Pak proběhne fáze syntaktické analýzy. Kdo neví, co taková slova znamenají? Někdo se hlásí? No dobře. Pro naše účely povíme velmi zjednodušeně, že (v případě Lilypondu) jde především o kontrolu, zda je vstupní soubor zapsán správně a neobsahuje kupříkladu neuzavřené závorky, překlepy v příkazech a podobně. Pokud jsou všechna vstupní data zadána správně, dojde následně k interpretaci těchto dat. V této fázi se vytváří logický popis hudebního partu v pořadí v jakém by noty byly hrány živými hráči. Z takto získaného popisu lze již stanovit pravidla pro sazbu.

    Během syntaktické analýzy se již shromažďují základní údaje, jako například délky a výšky not (nebudeme přece soubor zbytečně číst dvakrát). Vytvoří se jakési základní objekty. Hlavními takto vzniklými objekty jsou Score a Music. První z nich popisuje celistvý úsek skladby a odpovídá obsahu příkazu \score. Druhý je pak seznamem všech hudebních událostí v dané části.

    Interpretační fáze pak pracuje s jedním objektem Score a postupně předává hudební události patřičným interpretačním kontextům. Ty slouží k tomu, aby z hudebních událostí sestavily odpovídající grafické objekty (GROB). V programu je to zařízeno kolekcí objektů Music_iterators. Ty procházejí seznam Music a předávají získaná data objektům Translator. Výsledkem této části je vlastně hierarchická síť GROBů. Tyto objekty jsou navzájem propojeny a každý z nich má definovány elastické vazby na své okolí.

    To zní hrozně, takže jednodušeji. Třeba osminová nota je definována hlavičkou. K hlavičce se připojí nožička (vazba musí být pevná) a k nožičce praporek opět pevnou vazbou. Tato nota je umístěna v osnově a osnova je navázána na účaří. Celá nota pak má vlastnosti určující, kolik místa minimálně potřebuje a naopak jak nejdál od ní může být nějaký další objekt, třeba pomlka. Technicky je to vlastně soustava rovnic s mnoha neznámými. Podaří-li se tuto soustavu vypočítat máme vyhráno.

    A to už se dostáváme k fázi Prebreaking (něco jako předlámání). V místech, kde by mělo dojít ke zlomu, se doplní klíče a svislé čáry a pokračuje se svižně dál. Během Preprocessingu se dopočítají všechny údaje potřebné k přesnému stanovení jednotlivých zlomů. Nyní je možno vypočítat všechny pozice sloupců na které se později umístí jednotlivé GROBy. Tato fáze se nazývá Break calculation (výpočet zlomů). Následuje Breaking (lámání). Nalámání na řádky přineslo nové změny do vztahů mezi jednotlivými GROBy. Tyto vztahy se tedy znovu upraví. Typickým případem takové změny je přerušení ligatury zlomem. Musí se tedy vytvořit místo jedné ligatury dva nové objekty, každý na jiném řádku. A už jsme na konci. Máme vše vypočítáno a můžeme se pustit do tisku. Tuto fázi pro pořádek nazýváme Outputting (výstup).

    Snad jste se v tom všem neztratili a všimli jste si interpretačních kontextů. Tyto kontexty nejsou nic ukrytého hluboko v Lilypondu a dají se přímo ovlivňovat a vytvářet. Základním kontextem je Score. Ten obsahuje v našem krátkém příkladu dva kontexty Staff (notová osnova). Jiným podobným typem kontexte je třeba Staffgroup, který může obsahovat více Staffů. I uvnitř kontextu Staff existují kontexty a to Voice a Thread. První označuje hlas a druhý konkrétní linku not. Nebudeme se jimi zde zabývat, ale je dobré vědět, že existují. Používají se třeba pro změnu tvaru hlaviček not pro rozeznání hlasů ve stejné osnově. Základní kontexty se vytvářejí automaticky, takže když napíšete jen několik not, automaticky se vytvoří kontext Score obsahující Staff, který zpracuje vámi zadané noty. Uměle vytvořit kontext však není problém a v příkladu je tento postup také použit za pomoci příkazu \context = ... .

    Zpět k příkladu

    A konečně se můžeme vrátit k příkladu. Radši zopakuji řádek, kde se nyní nacházíme:

    \property Staff.TimeSignature \override #'style = #'C

    Řekli jsme si, že každý kontext má mnoho vlastností. Tyto vlastnosti se dají měnit pomocí příkazu \property. K vlastnosti se dostaneme podobně jako leckde jinde. kontext.vlastnost. Následuje metoda, jakou chceme tuto vlastnost změnit. Na výběr jsou tyto čtyři: =, \override, \set a \revert. První se používá pro nastavení vlastností celého kontextu. Zbylé tři nastavují vlastnosti GROBů uvnitř kontextu a mají tedy navíc další parametr - jméno vlastnosti GROBu. Rozdíly mezi \set a \override ponecháme pokročilejším a spokojíme se s tím, že si většinou vystačíme právě s \override. \revert podle očekávání mění booleovská nastavení do opačné polohy (např. směr nožiček).

    Poslední upozornění se týká znaku #. Ten slouží k přepnutí ze syntaxe Lilypondu do syntaxe Scheme. Všechny objekty jsou totiž popsány ve Scheme a musíme k nim tak přistupovat. Apostrof v Scheme značí, že bude následovat textový řetězec, tedy název vlastnosti. A co to tedy celé dělá? Říkáme, že se má vykreslit znak 'C', nikoliv zlomek 4/4. Tolik textu kvůli takové prkotině? No to jsem vám jen chtěl osvětlit, jak to všechno pracuje.

    Pak následuje celý blok not. Zápis not je opravdu jednoduchý. První část je název noty (norma pro názvy not, lze načíst třeba takto \include "deutsch.ly"), nebo r jako pomlka (rest) dále řekneme, ve které oktávě nota leží. Apostrofy a čárky odpovídají patřičným oktávám. Za tím vším se může objevit případné prodloužení noty pomocí teček. Mezi notami jsem ukázal několik základních značek. Kulaté závorky označují začátek a konec ligatury. Hranaté přikazují zalomení trámců na daném místě.

    Následuje \paper. Tag obsahuje všechna technická nastavení. Většinou stačí jeho uvedení s prázdným tělem. Pokud by tu totiž nebyl vůbec Lilypond by nevytvořil žádný tiskový výstup. Na co je dobré netisknout? Třeba si chceme jen poslechnout hudbu. Kromě tisku vytváří Lilypond i zvukový výstup ve formě MIDI souboru. Nečekejte nic světoborného, je to dobré především na akustickou kontrolu. Druhý důvod proč netisknout může být syntaktická kontrola zapsaného textu. Zpracování souboru bez tisku je totiž výrazně rychlejší (nepočítají se žádné pozice).

    Další je \midi. Ten nám říká, že se má generovat i zvukový soubor. Je to podobné jako s \paper. Uvnitř se dá nastavit například tempo, nebo výchozí hudební nástroj.

    Na závěr tohoto dílu si dovolím upozornit na rozsáhlou a dle mého názoru opravdu výtečnou dokumentaci (včetně desítek příkladů) k projektu. Jen na okraj, co bude příště: Ukážeme si zápis akordových značek a textů. Oba postupy jsou vhodné zejména pro zápis běžných popových písniček.

           

    Hodnocení: 37 %

            špatné • dobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    26.11.2002 08:42 Viktor
    Rozbalit Rozbalit vše Pekný serial
    Dekuji autorovi za tento serial. Konecne vim, ze neco takoveho existuje. BTW: Nemel by byt pro levou ruku houslovy klic? Pokud je to tedy C-dur. I kdyz notovy zapis jsem uz dlouho nevidel :-) Vitula
    26.11.2002 08:46 Viktor
    Rozbalit Rozbalit vše RE: Pekny serial
    Samo, ze pro pravou ruku :-) Vitula
    26.11.2002 09:42 Tomáš Kopeček | skóre: 19
    Rozbalit Rozbalit vše RE: Pekny serial
    Jojo, ta napozornost...
    27.11.2002 09:20 Tomáš Kopeček | skóre: 19
    Rozbalit Rozbalit vše RE: Pekny serial
    A jeste jednou nepozornost. Ten basovy klic tam je dobre. Ono je to prece jen trochu hluboko a s houslovym nepekne.
    26.11.2002 18:14 Wanthalf
    Rozbalit Rozbalit vše Dobry
    No, uznavam, ze to vypada lip, nez MusiXTeX :-)! Je fakt, ze MT chce doinstalovat nejaky nadstavby a doplnky, pokud clovek chce rozumne psat vicehlasy a nebo treba slova. Jestli si Lilypond lip hlida jeste kolize a pod. tak to je asi fakt lepsi. Jinak MT se taky vyviji, ale netusim, jestli se tempo da nejak srovnavat. Ostatne, nevim kolik toho je, co MT jeste neumi ... Diky za poucny serial! Wanthalf
    26.11.2002 19:09 Martin Volf | skóre: 21
    Rozbalit Rozbalit vše zajimavá adresa
    V Mutopii mají spoustu lilypondích zdrojáků.

    Založit nové vlákno • Nahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.