Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add slashed numerals for figured bass #220

Closed
craigsapp opened this issue Jun 7, 2019 · 3 comments
Closed

Add slashed numerals for figured bass #220

craigsapp opened this issue Jun 7, 2019 · 3 comments

Comments

@craigsapp
Copy link
Member

In **fb encoding, add slashes of various styles for alternate encoding of raised intervals. Also use the SMUFL codepoints for regular figured bass numbers (but not the figured bass accidental codepoints -- use the plain accidental codepoints for those), and parentheses and brackets are encoded in MEI/verovio as UTF-7 versions (not SMUFL figured-bass bracket/parentheses code points).

Sampler of veorvio figured bass characters that are currently available:

Screen Shot 2019-06-07 at 4 17 31 PM

MEI data:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="http://music-encoding.org/schema/4.0.0/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://music-encoding.org/schema/4.0.0/mei-all.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<mei xmlns="http://www.music-encoding.org/ns/mei" meiversion="4.0.0">
    <meiHead>
        <fileDesc>
            <titleStmt>
                <title />
            </titleStmt>
            <pubStmt />
        </fileDesc>
        <encodingDesc>
            <appInfo>
                <application isodate="2019-06-07T15:26:30" version="2.2.0-dev-7ac2fe9">
                    <name>Verovio</name>
                    <p>Transcoded from Humdrum</p>
                </application>
            </appInfo>
        </encodingDesc>
        <workList>
            <work>
                <title />
            </work>
        </workList>
    </meiHead>
    <music>
        <body>
            <mdiv xml:id="mdiv-0000000113589351">
                <score xml:id="score-0000002130743721">
                    <scoreDef xml:id="scoredef-0000000650116641" midi.bpm="400">
                        <staffGrp xml:id="staffgrp-0000000932499986">
                            <staffDef xml:id="staffdef-0000000344198077" clef.shape="G" clef.line="2" meter.count="4" meter.unit="4" n="1" lines="5">
                                <label xml:id="label-0000001301098284" />
                            </staffDef>
                        </staffGrp>
                    </scoreDef>
                    <section xml:id="section-L1F1">
                        <measure xml:id="measure-L3">
                            <staff xml:id="staff-L3F1N1" n="1">
                                <layer xml:id="layer-L3F1N1" n="1">
                                    <note xml:id="note-L4F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                    <note xml:id="note-L5F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                    <note xml:id="note-L6F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                    <note xml:id="note-L7F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                </layer>
                            </staff>
                            <harm xml:id="harm-L4F2" place="below" staff="1" tstamp="1.000000">
                                <fb xml:id="fb-L4F2">
                                    <f xml:id="f-L11F2">ea50:&#xea50;</f>
                                </fb>
                            </harm>
                            <harm xml:id="harm-L5F2" place="below" staff="1" tstamp="2.000000">
                                <fb xml:id="fb-L5F2">
                                    <f xml:id="f-L11F2">ea51:&#xea51;</f>
                                </fb>
                            </harm>
                            <harm xml:id="harm-L6F2" place="below" staff="1" tstamp="3.000000">
                                <fb xml:id="fb-L6F2">
                                    <f xml:id="f-L11F2">ea52:&#xea52;</f>
                                    <f xml:id="f-L11F2">ea53:&#xea53;</f>
                                </fb>
                            </harm>
                            <harm xml:id="harm-L7F2" place="below" staff="1" tstamp="4.000000">
                                <fb xml:id="fb-L7F2">
                                    <f xml:id="f-L11F2">ea54:&#xea54;</f>
                                </fb>
                            </harm>
                        </measure>
                        <measure xml:id="measure-L8">
                            <staff xml:id="staff-L8F1N1" n="1">
                                <layer xml:id="layer-L8F1N1" n="1">
                                    <note xml:id="note-L9F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                    <note xml:id="note-L10F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                    <note xml:id="note-L11F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                    <note xml:id="note-L12F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                </layer>
                            </staff>
                            <harm xml:id="harm-L9F2" place="below" staff="1" tstamp="1.000000">
                                <fb xml:id="fb-L9F2">
                                    <f xml:id="f-L9F2N2">ea55:&#xea55;</f>
                                    <f xml:id="f-L9F2N3">ea56:&#xea56;</f>
                                </fb>
                            </harm>
                            <harm xml:id="harm-L10F2" place="below" staff="1" tstamp="2.000000">
                                <fb xml:id="fb-L10F2">
                                    <f xml:id="f-L10F2N2">ea57:&#xea57;</f>
                                    <f xml:id="f-L10F2N2">ea58:&#xea58;</f>
                                    <f xml:id="f-L10F2N2">ea59:&#xea59;</f>
                                    <f xml:id="f-L10F2N2">ea5a:&#xea5a;</f>
                                </fb>
                            </harm>
                            <harm xml:id="harm-L11F2" place="below" staff="1" tstamp="3.000000">
                                <fb xml:id="fb-L11F2">
                                    <f>ea5b:&#xea5b;</f>
                                    <f>ea5c:&#xea5c;</f>
                                    <f>ea6f:&#xea6f;</f>
                                </fb>
                            </harm>
                            <harm xml:id="harm-L12F2" place="below" staff="1" tstamp="4.000000">
                                <fb xml:id="fb-L12F2">
                                    <f>ea5d:&#xea5d;</f>
                                    <f>ea5e:&#xea5e;</f>
                                    <f>ea5f:&#xea5f;</f>
                                    <f>ecc0:&#xecc0;</f>
                                </fb>
                            </harm>
                        </measure>
                        <measure xml:id="measure-L13" right="end">
                            <staff xml:id="staff-L13F1N1" n="1">
                                <layer xml:id="layer-L13F1N1" n="1">
                                    <note xml:id="note-L14F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                    <note xml:id="note-L15F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                    <note xml:id="note-L16F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                    <note xml:id="note-L17F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                </layer>
                            </staff>
                            <harm xml:id="harm-L14F2" place="below" staff="1" tstamp="1.000000">
                                <fb xml:id="fb-L14F2">
                                    <f>ea60:&#xea60;</f>
                                </fb>
                            </harm>
                            <harm xml:id="harm-L15F2" place="below" staff="1" tstamp="2.000000">
                                <fb xml:id="fb-L15F2">
                                    <f>ea61:&#xea61;</f>
                                    <f>ea62:&#xea62;</f>
                                </fb>
                            </harm>
                            <harm xml:id="harm-L16F2" place="below" staff="1" tstamp="3.000000">
                                <fb xml:id="fb-L16F2">
                                    <f>e264:&#xe264;</f>
                                    <f>e260:&#xe260;</f>
                                    <f>e261:&#xe261;</f>
                                    <f>e262:&#xe262;</f>
                                    <f>e263:&#xe263;</f>
                                </fb>
                            </harm>
                            <harm xml:id="harm-L17F2" place="below" staff="1" tstamp="4.000000">
                                <fb xml:id="fb-L17F2">
                                    <f>[&#xea62;]</f>
                                    <f>(&#xe264;)</f>
                                </fb>
                            </harm>
                        </measure>
                    </section>
                </score>
            </mdiv>
        </body>
    </music>
</mei>

Probably encode in Humdrum as:

**kern	**fb
*clefG2	*
*M4/4	*
=1	=1
4e	0
4e	1
4e	2 2#|
4e	3
=2	=2
4e	4 4#|
4e	5 5#| 5#\ 5#/
4e	6 6#| 6#\
4e	7 7#| 7#\ 7#/
=3	=3
4e	8
4e	9 9#\
4e	-- - n # ##
4e	[9#\] (--)
==	==
*-	*-

The sharp sign is required when using a slash (# is for analysis, and slash is for visual).

which would render as:

Screen Shot 2019-06-07 at 4 36 13 PM

@craigsapp
Copy link
Member Author

Also convert figured bass and slash styling of figures from MusicXML import to Humdrum. Here is a sampler from MuseScore exported MusicXML:

Screen Shot 2019-06-07 at 4 39 19 PM

MusicXML data:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 3.1 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
<score-partwise version="3.1">
  <work>
    <work-title>Title</work-title>
    </work>
  <identification>
    <creator type="composer">Composer</creator>
    <encoding>
      <software>MuseScore 3.0.5</software>
      <encoding-date>2019-03-20</encoding-date>
      <supports element="accidental" type="yes"/>
      <supports element="beam" type="yes"/>
      <supports element="print" attribute="new-page" type="yes" value="yes"/>
      <supports element="print" attribute="new-system" type="yes" value="yes"/>
      <supports element="stem" type="yes"/>
      </encoding>
    </identification>
  <defaults>
    <scaling>
      <millimeters>7.05556</millimeters>
      <tenths>40</tenths>
      </scaling>
    <page-layout>
      <page-height>1683.36</page-height>
      <page-width>1190.88</page-width>
      <page-margins type="even">
        <left-margin>56.6929</left-margin>
        <right-margin>56.6929</right-margin>
        <top-margin>56.6929</top-margin>
        <bottom-margin>113.386</bottom-margin>
        </page-margins>
      <page-margins type="odd">
        <left-margin>56.6929</left-margin>
        <right-margin>56.6929</right-margin>
        <top-margin>56.6929</top-margin>
        <bottom-margin>113.386</bottom-margin>
        </page-margins>
      </page-layout>
    <word-font font-family="FreeSerif" font-size="10"/>
    <lyric-font font-family="FreeSerif" font-size="11"/>
    </defaults>
  <credit page="1">
    <credit-words default-x="595.44" default-y="1626.67" justify="center" valign="top" font-size="24">Title</credit-words>
    </credit>
  <credit page="1">
    <credit-words default-x="1134.19" default-y="1526.67" justify="right" valign="bottom" font-size="12">Composer</credit-words>
    </credit>
  <part-list>
    <score-part id="P1">
      <part-name>Piano</part-name>
      <part-abbreviation>Pno.</part-abbreviation>
      <score-instrument id="P1-I1">
        <instrument-name>Piano</instrument-name>
        </score-instrument>
      <midi-device id="P1-I1" port="1"></midi-device>
      <midi-instrument id="P1-I1">
        <midi-channel>1</midi-channel>
        <midi-program>1</midi-program>
        <volume>78.7402</volume>
        <pan>0</pan>
        </midi-instrument>
      </score-part>
    </part-list>
  <part id="P1">
    <measure number="1" width="568.88">
      <print>
        <system-layout>
          <system-margins>
            <left-margin>0.00</left-margin>
            <right-margin>0.00</right-margin>
            </system-margins>
          <top-system-distance>170.00</top-system-distance>
          </system-layout>
        </print>
      <attributes>
        <divisions>1</divisions>
        <key>
          <fifths>0</fifths>
          </key>
        <time>
          <beats>4</beats>
          <beat-type>4</beat-type>
          </time>
        <clef>
          <sign>G</sign>
          <line>2</line>
          </clef>
        </attributes>
      <figured-bass>
        <figure>
          <figure-number>0</figure-number>
          </figure>
        <figure>
          <figure-number>1</figure-number>
          </figure>
        <figure>
          <figure-number>2</figure-number>
          </figure>
        <figure>
          <figure-number>3</figure-number>
          </figure>
        <figure>
          <figure-number>4</figure-number>
          </figure>
        <figure>
          <figure-number>5</figure-number>
          </figure>
        <figure>
          <figure-number>6</figure-number>
          </figure>
        <figure>
          <figure-number>7</figure-number>
          </figure>
        <figure>
          <figure-number>8</figure-number>
          </figure>
        <figure>
          <figure-number>9</figure-number>
          </figure>
        </figured-bass>
      <note default-x="79.27" default-y="-25.00">
        <pitch>
          <step>A</step>
          <octave>4</octave>
          </pitch>
        <duration>1</duration>
        <voice>1</voice>
        <type>quarter</type>
        <stem>up</stem>
        </note>
      <figured-bass>
        <figure>
          <prefix>flat-flat</prefix>
          </figure>
        <figure>
          <prefix>flat</prefix>
          </figure>
        <figure>
          <prefix>natural</prefix>
          </figure>
        <figure>
          <prefix>sharp</prefix>
          </figure>
        <figure>
          <prefix>double-sharp</prefix>
          </figure>
        </figured-bass>
      <note default-x="201.27" default-y="-25.00">
        <pitch>
          <step>A</step>
          <octave>4</octave>
          </pitch>
        <duration>1</duration>
        <voice>1</voice>
        <type>quarter</type>
        <stem>up</stem>
        </note>
      <figured-bass>
        <figure>
          <figure-number>1</figure-number>
          <suffix>cross</suffix>
          </figure>
        <figure>
          <figure-number>2</figure-number>
          <suffix>cross</suffix>
          </figure>
        <figure>
          <figure-number>3</figure-number>
          <suffix>cross</suffix>
          </figure>
        <figure>
          <figure-number>4</figure-number>
          <suffix>cross</suffix>
          </figure>
        </figured-bass>
      <note default-x="323.27" default-y="-25.00">
        <pitch>
          <step>A</step>
          <octave>4</octave>
          </pitch>
        <duration>1</duration>
        <voice>1</voice>
        <type>quarter</type>
        <stem>up</stem>
        </note>
      <figured-bass>
        <figure>
          <figure-number>5</figure-number>
          <suffix>backslash</suffix>
          </figure>
        <figure>
          <figure-number>6</figure-number>
          <suffix>backslash</suffix>
          </figure>
        <figure>
          <figure-number>7</figure-number>
          <suffix>backslash</suffix>
          </figure>
        <figure>
          <figure-number>8</figure-number>
          <suffix>backslash</suffix>
          </figure>
        <figure>
          <figure-number>9</figure-number>
          <suffix>backslash</suffix>
          </figure>
        </figured-bass>
      <note default-x="445.28" default-y="-25.00">
        <pitch>
          <step>A</step>
          <octave>4</octave>
          </pitch>
        <duration>1</duration>
        <voice>1</voice>
        <type>quarter</type>
        <stem>up</stem>
        </note>
      </measure>
    <measure number="2" width="508.61">
      <figured-bass parentheses="yes">
        <figure>
          <figure-number>1</figure-number>
          </figure>
        <figure>
          <figure-number>1</figure-number>
          </figure>
        </figured-bass>
      <note default-x="10.00" default-y="-25.00">
        <pitch>
          <step>A</step>
          <octave>4</octave>
          </pitch>
        <duration>1</duration>
        <voice>1</voice>
        <type>quarter</type>
        <stem>up</stem>
        </note>
      <figured-bass parentheses="yes">
        <figure>
          <prefix>flat</prefix>
          </figure>
        <figure>
          <prefix>flat</prefix>
          </figure>
        </figured-bass>
      <note default-x="132.00" default-y="-25.00">
        <pitch>
          <step>A</step>
          <octave>4</octave>
          </pitch>
        <duration>1</duration>
        <voice>1</voice>
        <type>quarter</type>
        <stem>up</stem>
        </note>
      <figured-bass>
        <figure>
          <figure-number>6</figure-number>
          <extend type="start" />
          </figure>
        <figure>
          <figure-number>4</figure-number>
          <extend type="start" />
          </figure>
        </figured-bass>
      <note default-x="254.01" default-y="-25.00">
        <pitch>
          <step>A</step>
          <octave>4</octave>
          </pitch>
        <duration>1</duration>
        <voice>1</voice>
        <type>quarter</type>
        <stem>up</stem>
        </note>
      <figured-bass>
        <figure>
          <figure-number>5</figure-number>
          </figure>
        <figure>
          <figure-number>3</figure-number>
          </figure>
        </figured-bass>
      <note default-x="376.01" default-y="-25.00">
        <pitch>
          <step>A</step>
          <octave>4</octave>
          </pitch>
        <duration>1</duration>
        <voice>1</voice>
        <type>quarter</type>
        <stem>up</stem>
        </note>
      <barline location="right">
        <bar-style>light-heavy</bar-style>
        </barline>
      </measure>
    </part>
  </score-partwise>

@craigsapp
Copy link
Member Author

Conversion from Humdrum to MEI now has slashes implemented in figured bass:

Screen Shot 2019-06-08 at 4 19 00 AM

Humdrum encoding:

**kern	**fb
*M4/4	*
=	=
4e	0
4e	1 ##1i #1j n1 -1J --1I
4e	2 ##2i #2j n2 -2J --2I #2/
4e	3 ##3i #3j n3 -3J --3I
=	=
4e	4 ##4i #4j n4 -4J --4I #4/ #4/i #4/I
4e	5 ##5i #5j n5 -5J --5I -5| -5\ -5/
4e	6 ##6i #6j n6 -6J --6I #6/ #6\
4e	7 ##7i #7j n7 -7J --7I #7| #7\ #7/
=	=
2e	8 ##8i #8j n8 -8J --8I
2e	9 ##9i #9j n9 -9J --9I #9/ #9/J #9/j
==	==
*-	*-

Slash qualifiers for numbers require an accidental to accompany it to clarify the meaning of the slash (could be up or down a semi-tone depending on the figure and perhaps different meanings in different repertories).

For 5 and 7, there are three styling types of slashes: /, \\, and '|`. For 6 there are two styles '\' and '|' (styles need adjusting in verovio). For 2, 4 and 9, there is only style, so all three slash types will do the same thing. Slashes will be ignored on 0, 1, 3, and 8 when converting to MEI since verovio cannot handle them (since SMUFL does not encode slashes explicitly on these digits).

Currently figures are limited to a single digit (so no figures 10 or higher).

If a figure sub-token contains an 'i' or 'I', then draw parentheses/square brackets around the figure. This means that the figure is editorial.

If a figure sub-token contains a 'j' or 'J', then draw parentheses/square brackets around the accidental (or around the figure if it has a slash). This means that the accidental is editorial.

The i and j editorial marks can appear anywhere in the figure (except between accidental characters in the case of double sharps/flats).

Compound figures such as "4–3" are not yet considered.

Accidentals are forced in front of the number in a figure (some styles will put it after, so maybe control with a styling tandem interpretation).

In the future for stacked figures, merge editorial brackets when/if possible in verovio, but displayed individually for now.


MEI rendering (it would be useful for verovio to output numeric entities for SMUFL characters rather than the UTF-8 encodings, particularly since SMUFL is in the user space of unicode with no fixed meaning):

<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="http://music-encoding.org/schema/4.0.0/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://music-encoding.org/schema/4.0.0/mei-all.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<mei xmlns="http://www.music-encoding.org/ns/mei" meiversion="4.0.0">
    <meiHead>
        <fileDesc>
            <titleStmt>
                <title />
            </titleStmt>
            <pubStmt />
        </fileDesc>
        <encodingDesc>
            <appInfo>
                <application isodate="2019-06-08T04:38:20" version="2.2.0-dev-7ac2fe9">
                    <name>Verovio</name>
                    <p>Transcoded from Humdrum</p>
                </application>
            </appInfo>
        </encodingDesc>
        <workList>
            <work>
                <title />
            </work>
        </workList>
    </meiHead>
    <music>
        <body>
            <mdiv xml:id="mdiv-0000001770264434">
                <score xml:id="score-0000001595896700">
                    <scoreDef xml:id="scoredef-0000001654640091" midi.bpm="400">
                        <staffGrp xml:id="staffgrp-0000000851498976">
                            <staffDef xml:id="staffdef-0000000049345166" clef.shape="G" clef.line="2" meter.count="4" meter.unit="4" n="1" lines="5">
                                <label xml:id="label-0000001652413291" />
                            </staffDef>
                        </staffGrp>
                    </scoreDef>
                    <section xml:id="section-L1F1">
                        <measure xml:id="measure-L3">
                            <staff xml:id="staff-L3F1N1" n="1">
                                <layer xml:id="layer-L3F1N1" n="1">
                                    <note xml:id="note-L4F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                    <note xml:id="note-L5F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                    <note xml:id="note-L6F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                    <note xml:id="note-L7F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                </layer>
                            </staff>
                            <harm xml:id="harm-L4F2" place="below" staff="1" tstamp="1.000000">
                                <fb xml:id="fb-L4F2">
                                    <f xml:id="f-L4F2"></f>
                                </fb>
                            </harm>
                            <harm xml:id="harm-L5F2" place="below" staff="1" tstamp="2.000000">
                                <fb xml:id="fb-L5F2">
                                    <f xml:id="f-L5F2N1"></f>
                                    <f xml:id="f-L5F2N2">()</f>
                                    <f xml:id="f-L5F2N3">()</f>
                                    <f xml:id="f-L5F2N4"></f>
                                    <f xml:id="f-L5F2N5">[]</f>
                                    <f xml:id="f-L5F2N6">[]</f>
                                </fb>
                            </harm>
                            <harm xml:id="harm-L6F2" place="below" staff="1" tstamp="3.000000">
                                <fb xml:id="fb-L6F2">
                                    <f xml:id="f-L6F2N1"></f>
                                    <f xml:id="f-L6F2N2">()</f>
                                    <f xml:id="f-L6F2N3">()</f>
                                    <f xml:id="f-L6F2N4"></f>
                                    <f xml:id="f-L6F2N5">[]</f>
                                    <f xml:id="f-L6F2N6">[]</f>
                                    <f xml:id="f-L6F2N7"></f>
                                </fb>
                            </harm>
                            <harm xml:id="harm-L7F2" place="below" staff="1" tstamp="4.000000">
                                <fb xml:id="fb-L7F2">
                                    <f xml:id="f-L7F2N1"></f>
                                    <f xml:id="f-L7F2N2">()</f>
                                    <f xml:id="f-L7F2N3">()</f>
                                    <f xml:id="f-L7F2N4"></f>
                                    <f xml:id="f-L7F2N5">[]</f>
                                    <f xml:id="f-L7F2N6">[]</f>
                                </fb>
                            </harm>
                        </measure>
                        <measure xml:id="measure-L8">
                            <staff xml:id="staff-L8F1N1" n="1">
                                <layer xml:id="layer-L8F1N1" n="1">
                                    <note xml:id="note-L9F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                    <note xml:id="note-L10F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                    <note xml:id="note-L11F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                    <note xml:id="note-L12F1" dur="4" oct="4" pname="e" accid.ges="n" />
                                </layer>
                            </staff>
                            <harm xml:id="harm-L9F2" place="below" staff="1" tstamp="1.000000">
                                <fb xml:id="fb-L9F2">
                                    <f xml:id="f-L9F2N1"></f>
                                    <f xml:id="f-L9F2N2">()</f>
                                    <f xml:id="f-L9F2N3">()</f>
                                    <f xml:id="f-L9F2N4"></f>
                                    <f xml:id="f-L9F2N5">[]</f>
                                    <f xml:id="f-L9F2N6">[]</f>
                                    <f xml:id="f-L9F2N7"></f>
                                    <f xml:id="f-L9F2N8">()</f>
                                    <f xml:id="f-L9F2N9">[]</f>
                                </fb>
                            </harm>
                            <harm xml:id="harm-L10F2" place="below" staff="1" tstamp="2.000000">
                                <fb xml:id="fb-L10F2">
                                    <f xml:id="f-L10F2N1"></f>
                                    <f xml:id="f-L10F2N2">()</f>
                                    <f xml:id="f-L10F2N3">()</f>
                                    <f xml:id="f-L10F2N4"></f>
                                    <f xml:id="f-L10F2N5">[]</f>
                                    <f xml:id="f-L10F2N6">[]</f>
                                    <f xml:id="f-L10F2N7"></f>
                                    <f xml:id="f-L10F2N8"></f>
                                    <f xml:id="f-L10F2N9"></f>
                                </fb>
                            </harm>
                            <harm xml:id="harm-L11F2" place="below" staff="1" tstamp="3.000000">
                                <fb xml:id="fb-L11F2">
                                    <f xml:id="f-L11F2N1"></f>
                                    <f xml:id="f-L11F2N2">()</f>
                                    <f xml:id="f-L11F2N3">()</f>
                                    <f xml:id="f-L11F2N4"></f>
                                    <f xml:id="f-L11F2N5">[]</f>
                                    <f xml:id="f-L11F2N6">[]</f>
                                    <f xml:id="f-L11F2N7"></f>
                                    <f xml:id="f-L11F2N8"></f>
                                </fb>
                            </harm>
                            <harm xml:id="harm-L12F2" place="below" staff="1" tstamp="4.000000">
                                <fb xml:id="fb-L12F2">
                                    <f xml:id="f-L12F2N1"></f>
                                    <f xml:id="f-L12F2N2">()</f>
                                    <f xml:id="f-L12F2N3">()</f>
                                    <f xml:id="f-L12F2N4"></f>
                                    <f xml:id="f-L12F2N5">[]</f>
                                    <f xml:id="f-L12F2N6">[]</f>
                                    <f xml:id="f-L12F2N7"></f>
                                    <f xml:id="f-L12F2N8"></f>
                                    <f xml:id="f-L12F2N9"></f>
                                </fb>
                            </harm>
                        </measure>
                        <measure xml:id="measure-L13" right="end">
                            <staff xml:id="staff-L13F1N1" n="1">
                                <layer xml:id="layer-L13F1N1" n="1">
                                    <note xml:id="note-L14F1" dur="2" oct="4" pname="e" accid.ges="n" />
                                    <note xml:id="note-L15F1" dur="2" oct="4" pname="e" accid.ges="n" />
                                </layer>
                            </staff>
                            <harm xml:id="harm-L14F2" place="below" staff="1" tstamp="1.000000">
                                <fb xml:id="fb-L14F2">
                                    <f xml:id="f-L14F2N1"></f>
                                    <f xml:id="f-L14F2N2">()</f>
                                    <f xml:id="f-L14F2N3">()</f>
                                    <f xml:id="f-L14F2N4"></f>
                                    <f xml:id="f-L14F2N5">[]</f>
                                    <f xml:id="f-L14F2N6">[]</f>
                                </fb>
                            </harm>
                            <harm xml:id="harm-L15F2" place="below" staff="1" tstamp="3.000000">
                                <fb xml:id="fb-L15F2">
                                    <f xml:id="f-L15F2N1"></f>
                                    <f xml:id="f-L15F2N2">()</f>
                                    <f xml:id="f-L15F2N3">()</f>
                                    <f xml:id="f-L15F2N4"></f>
                                    <f xml:id="f-L15F2N5">[]</f>
                                    <f xml:id="f-L15F2N6">[]</f>
                                    <f xml:id="f-L15F2N7"></f>
                                    <f xml:id="f-L15F2N8">[]</f>
                                    <f xml:id="f-L15F2N9">()</f>
                                </fb>
                            </harm>
                        </measure>
                    </section>
                </score>
            </mdiv>
        </body>
    </music>
</mei>

Copy-and-paste of the above data preserves the SMUFL characters even though they are displayed as boxes on the webpage.

@craigsapp
Copy link
Member Author

See updates in documentation: http://doc.verovio.humdrum.org/humdrum/figured_bass

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant