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
Comments
Also convert figured bass and slash styling of figures from MusicXML import to Humdrum. Here is a sampler from MuseScore exported MusicXML: 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> |
Conversion from Humdrum to MEI now has slashes implemented in figured bass: Humdrum encoding:
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: 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. |
See updates in documentation: http://doc.verovio.humdrum.org/humdrum/figured_bass |
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:
MEI data:
Probably encode in Humdrum as:
The sharp sign is required when using a slash (
#
is for analysis, and slash is for visual).which would render as:
The text was updated successfully, but these errors were encountered: