Skip to content

Structure of BNML

Trevor Bullock edited this page Feb 28, 2021 · 3 revisions

Identification

Information that will appear in the PDF metadata.

Defaults

Default page and style information

Music

Everything after the initial header information.

Score

Replaces "troparion". Used for any text that will include neumes and may want to be justified.

Syllable

A syllable of music, which includes a group of neumes and one syllable of lyrics.

Neume Group

A chunk of neumes which includes one base (primary) neume, secondary neumes, and possibly linking neumes, accidentals, etc.

Neume

A single musical pitch or melodic gesture. Can take "type" attribute to designate type of neume. Types arguments are "primary", "secondary", "linking", "chronos", "martyria". If no types are specified, the first neume in a group that is not a bareia is assumed to be "primary", and all others are assumed to be "secondary".

Lyric

Individual lyric syllable (could be hyphen). Can take "con" attribute to designate a connector between lyrics. Ex:

<syllable>
    <lyric con="u">Lord</lyric>
    <neume-group>
        <neume>bare</neume>
        <neume type="primary">olig</neume>
        <neume type="linking">homaDR</neume>
    </neume-group>
</syllable>
<syllable>
    <lyric con="u" />
    <neume-group>
        <neume>ison</neume>
    </neume-group>
</syllable>
<syllable>
    <lyric>I</lyric>
    <neume-group>
        <neume>apos</neume>
    </neume-group>
</syllable>

Example

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<bnml version="0.1">
    <identification>
        <title>Title in PDF metadata</title>
        <author>Author in PDF metadata</author>
        <subject>Subject in PDF metadata</subject>
        <!-- Add more information that won't be included in PDF metadata? Composer? Copyright? -->
    </identification>
    <defaults>
        <page-layout>
            <paper-size>letter</paper-size>
            <page-margins top_margin="50" bottom_margin="50" left_margin="60" right_margin="60" />
        </page-layout>
        <styles>
            <para-style name="title" font_family="Alegreya SC-Bold" font_size="30" color="#0000e6" align="center" space_after="16" />
            <!--para-style name="h1" font_family="Alegreya-Medium" font_size="16" color="#0000e6" align="center" />
            <para-style name="h2" font_family="Alegreya-Medium" font_size="14" color="#cf232b" align="center" />
            <para-style name="h3" font_family="Alegreya-Medium" font_size="14" color="#cf232b" align="right" />
            <para-style name="h4" font_family="Alegreya-Medium" font_size="14" color="#0000e6" align="right" /-->
            <para-style name="verse" font_family="Alegreya-Medium" font_size="14" color="#000000" align="left" first_line_indent="20" space_after="15" leading="17" />
            <para-style name="header" font_family="Alegreya-Italic" font_size="8" color="#0000e6" align="center" border_width="1.0" border_color="#0000e6" border_padding="10" />
            <para-style name="footer" font_family="Alegreya-Italic" font_size="8" color="#0000e6" align="center" border_width="1.0" border_color="#0000e6" border_padding="10" />
            <para-style name="centered-martyria" font_family="Alegreya-Medium" font_size="14" color="#cf232b" align="center" />
            <para-style name="tempo-marking" font_family="Alegreya-Medium" font_size="14" color="#cf232b" align="right" />
            <para-style name="hymn-name" font_family="Alegreya-Medium" font_size="14" color="#0000e6" align="right" />
            <score-style align="justify" word_spacing="4" leading="60" />
            <neume-style type="base" font_family="KA New Stathis Main" font_size="30" color="#000000" />
            <neume-style type="secondary" font_family="KA New Stathis Main" font_size="30" color="#000000" />
            <neume-style type="martyria" font_family="KA New Stathis Martyria" font_size="30" color="#cf232b" />
            <neume-style type="chronos" font_family="KA New Stathis Chronos" font_size="30" color="#cf232b" />
            <lyric-style font_family="Alegreya-Medium" font_size="14" color="#000000" space_before="26" />
            <dropcap-style font_family="Alegreya-Bold" font_size="45" color="#cf232b" />
        </styles>
    </defaults>
    <music>
        <header-odd>
            First Mode – Lord, I Have Cried
            <page-number align="right" />
        </header-odd>
        <header-even>
            <page-number align="left" />
            First Mode – Lord, I Have Cried
        </header-even>

        <footer>
            https://github.com/t-bullock/kassia
        </footer>

        <para style="title">
            First Mode
        </para>

        <para style="h1">
            Lord, I Have Cried
        </para>

        <para style="centered-martyria">
            Mode
            <font font_family="KA New Stathis Martyria" font_size="30">i</font>
            Πα
            <font font_family="KA New Stathis Fthora" font_size="30">œ</font>
        </para>

        <para style="tempo-marking">
            <font font_family="KA New Stathis Martyria" font_size="30">v</font>
            84
        </para>

        <linebreak space="5" />

        <para style="hymn-name">
            Κύριε ἐκέκραξα
        </para>

        <score>
            <syllable>
                <neume-group> <!-- type = ordinary, martyria, or chronagogic -->
                    <neume>vare</neume> <!-- type = base/primary, linking, chronos, or martyria -->
                    <neume>olig</neume>
                    <neume type="linking">homaDR</neume>
                </neume-group>
                <lyric>Lord</lyric>
            </syllable>
            <syllable>
                <neume-group>
                    <neume>ison</neume>
                </neume-group>
                <lyric>_</lyric>
            </syllable>
            <syllable>
                <neume-group>
                    <neume>apos</neume>
                </neume-group>
                <lyric>I</lyric>
            </syllable>
            <syllable>
                <neume-group>
                    <neume>olig</neume>
                </neume-group>
                <lyric>have</lyric>
            </syllable>
            <syllable>
                <neume-group>
                    <neume>olig</neume>
                    <neume>ken2U</neume>
                    <neume>psefD</neume>
                </neume-group>
                <lyric>cried</lyric>
            </syllable>
            <syllable>
                <neume-group>
                    <neume>apos</neume>
                </neume-group>
                <lyric>_</lyric>
            </syllable>
            <syllable>
                <neume-group>
                    <neume>apos</neume>
                </neume-group>
                <lyric>_</lyric>
            </syllable>
            <syllable>
                <neume-group>
                    <neume>apos</neume>
                    <neume type="linking">antiD</neume>
                    <neumes>haplD</neumes>
            	</neume-group>
                <lyric>un-</lyric>
            </syllable>
            <syllable>
                <neume-group>
                    <neume>apos</neume>
                    <neume type="chronos">gorgUR</neume>
                </neume-group>
                <lyric>_</lyric>
            </syllable>
            <syllable>
                <neume-group>
                    <neume>vare</neume>
                    <neume>ison</neume>
                    <neume>apos</neume>
                    <neume type="chronos">gorgUR</neume>
                </neume-group>
                <lyric>to</lyric>
            </syllable>
            <syllable>
                <neume-group>
                    <neume>olig</neume>
                </neume-group>
                <lyric>_</lyric>
            </syllable>
            <syllable>
                <neume-group>
                    <neume>peta</neume>
                    <neume>oligU</neume>
                </neume-group>
                <lyric>Thee</lyric>
            </syllable>
            <syllable>
                <neume-group>
                    <neume>apos</neume>
                    <neume>klasU</neume>
                </neume-group>
                <lyric>_</lyric>
            </syllable>
            <syllable>
                <neume-group>
                    <neume>res1</neume>
                </neume-group>
            </syllable>
            <syllable>
                <neume-group>
                    <neume type="martyria">malfa</neume>
                    <neume type="martyria">mpaU</neume>
                </neume-group>
            </syllable>
        </score>
    </music>
</bnml>