Forráskód Böngészése

demo: add samples for Guitar Tablature Effects (#859)

squashed in #859

will be polished in a follow-up commit

* trying to add bends

* fixed lint errors

* made bends array, check for release

* added proper phrase text

* package.json changes

* fixed bends and added vibrato

* changes for adding a tie

* hammerons, pull offs and slides

* missing file

* calculate slide up and down

* fixed number

* adding samples
Gregg Larson 4 éve
szülő
commit
c1a235f4ed

+ 6 - 0
demo/index.js

@@ -44,6 +44,12 @@ import * as svg2pdf from '../node_modules/svg2pdf.js/dist/svg2pdf.min';
             "OSMD Function Test - Selecting Measures To Draw": "OSMD_function_test_measuresToDraw_Beethoven_AnDieFerneGeliebte.xml",
             "OSMD Function Test - System and Page Breaks": "OSMD_Function_Test_System_and_Page_Breaks_4_pages.mxl",
             "OSMD Function Test - Tabulature": "OSMD_Function_Test_Tabulature_hayden_study_1.mxl",
+            "OSMD Function Test - Tabulature Hammeron Pulloffs": "OSMD_Function_Test_Tablature_Hammeron_Pulloff.musicxml",
+            "OSMD Function Test - Tabulature Slides": "OSMD_Function_Test_Tablature_Slides.musicxml",
+            "OSMD Function Test - Tabulature Bends": "OSMD_Function_Test_Tablature_Bends.musicxml",
+            "OSMD Function Test - Tabulature MultiBends": "OSMD_Function_Test_Tablature_Multibends.musicxml",
+            "OSMD Function Test - Tabulature All Effects": "OSMD_Function_Test_Tablature_Alleffects.musicxml",
+            "OSMD Function Test - Tabulature Vibrato": "OSMD_Function_Test_Tablature_Vibrato.musicxml",
             "OSMD Function Test - Tremolo": "OSMD_Function_Test_Tremolo_2bars.musicxml",
             "OSMD Function Test - Labels": "OSMD_Function_Test_Labels.musicxml",
             "OSMD Function Test - High Slur Test": "Slurtest_highNotes.musicxml",

+ 7 - 0
src/MusicalScore/Graphical/VexFlow/VexFlowMusicSheetCalculator.ts

@@ -139,6 +139,13 @@ export class VexFlowMusicSheetCalculator extends MusicSheetCalculator {
       softmaxFactor: this.rules.SoftmaxFactorVexFlow // this setting is only applied in Vexflow 3.x. also this needs @types/vexflow ^3.0.0
     });
 
+    /*
+    {
+      // maxIterations: 2,
+      softmaxFactor: this.rules.SoftmaxFactorVexFlow // this setting is only applied in Vexflow 3.x. also this needs @types/vexflow ^3.0.0
+    }
+    */
+
     for (const measure of measures) {
       if (!measure) {
         continue;

+ 377 - 0
test/data/OSMD_Function_Test_Tablature_Alleffects.musicxml

@@ -0,0 +1,377 @@
+<?xml version="1.0"?>
+<score-partwise version="3.1">
+    <work>
+        <work-title>OSMD_Function_Test_Tablature_Alleffects</work-title>
+    </work>
+    <identification>
+        <creator type="composer">momo</creator>
+        <encoding>
+            <software>www.guitartabcreator.com</software>
+            <encoding-date>2020-07-12</encoding-date>
+            <supports attribute="new-system" element="print" type="yes" value="yes" />
+            <supports attribute="new-page" element="print" type="yes" value="yes" />
+            <supports element="accidental" type="yes" />
+            <supports element="beam" type="yes" />
+            <supports element="stem" type="yes" />
+        </encoding>
+    </identification>
+    <defaults>
+        <scaling>
+            <millimeters>6.35</millimeters>
+            <tenths>40</tenths>
+        </scaling>
+        <page-layout>
+            <page-height>1760</page-height>
+            <page-width>1360</page-width>
+            <page-margins type="both">
+                <left-margin>80</left-margin>
+                <right-margin>80</right-margin>
+                <top-margin>80</top-margin>
+                <bottom-margin>80</bottom-margin>
+            </page-margins>
+        </page-layout>
+        <system-layout>
+            <system-margins>
+                <left-margin>0</left-margin>
+                <right-margin>0</right-margin>
+            </system-margins>
+            <system-distance>173</system-distance>
+            <top-system-distance>68</top-system-distance>
+        </system-layout>
+        <staff-layout>
+            <staff-distance>67</staff-distance>
+        </staff-layout>
+        <appearance>
+            <line-width type="stem">0.8333</line-width>
+            <line-width type="beam">5</line-width>
+            <line-width type="staff">1.25</line-width>
+            <line-width type="light barline">1.4583</line-width>
+            <line-width type="heavy barline">5</line-width>
+            <line-width type="leger">1.875</line-width>
+            <line-width type="ending">1.4583</line-width>
+            <line-width type="wedge">0.9375</line-width>
+            <line-width type="enclosure">1.45843</line-width>
+            <line-width type="tuplet bracket">1.4583</line-width>
+            <note-size type="grace">50</note-size>
+            <note-size type="cue">50</note-size>
+            <distance type="hyphen">60</distance>
+            <distance type="beam">8</distance>
+        </appearance>
+        <music-font font-size="18" font-family="Maestro,engraved" />
+        <word-font font-size="9" font-family="Times New Roman" />
+    </defaults>
+    <part-list>
+        <score-part id="P1">
+            <part-name print-object="no">Guitar</part-name>
+            <part-abbreviation print-object="no">Gtr.</part-abbreviation>
+            <score-instrument id="P1-I1">
+                <instrument-name>Acoustic Guitar (steel)</instrument-name>
+                <instrument-sound>pluck.guitar</instrument-sound>
+            </score-instrument>
+            <midi-instrument id="P1-I1">
+                <midi-channel>1</midi-channel>
+                <midi-program>26</midi-program>
+                <volume>80</volume>
+                <pan>0</pan>
+            </midi-instrument>
+        </score-part>
+    </part-list>
+    <part id="P1">
+        <measure number="1">
+            <print>
+                <page-layout>
+                    <page-height>1850</page-height>
+                    <page-width>1310</page-width>
+                    <page-margins>
+                        <left-margin>80</left-margin>
+                        <right-margin>727</right-margin>
+                        <top-margin>80</top-margin>
+                        <bottom-margin>80</bottom-margin>
+                    </page-margins>
+                </page-layout>
+                <system-layout>
+                    <system-margins>
+                        <left-margin>68</left-margin>
+                        <right-margin>0</right-margin>
+                    </system-margins>
+                    <top-system-distance>187</top-system-distance>
+                </system-layout>
+                <measure-number>system</measure-number>
+            </print>
+            <attributes>
+                <divisions>2</divisions>
+                <key>
+                    <fifths>0</fifths>
+                    <mode>major</mode>
+                </key>
+                <time>
+                    <beats>4</beats>
+                    <beat-type>4</beat-type>
+                </time>
+                <staves>1</staves>
+                <clef number="1">
+                    <sign>TAB</sign>
+                    <line>5</line>
+                </clef>
+                <transpose>
+                    <diatonic>0</diatonic>
+                    <chromatic>0</chromatic>
+                    <octave-change>-1</octave-change>
+                </transpose>
+                <staff-details number="1">
+                    <staff-lines>6</staff-lines>
+                    <staff-tuning line="1">
+                        <tuning-step>E</tuning-step>
+                        <tuning-octave>2</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="2">
+                        <tuning-step>A</tuning-step>
+                        <tuning-octave>2</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="3">
+                        <tuning-step>D</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="4">
+                        <tuning-step>G</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="5">
+                        <tuning-step>B</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="6">
+                        <tuning-step>E</tuning-step>
+                        <tuning-octave>4</tuning-octave>
+                    </staff-tuning>
+                </staff-details>
+            </attributes>
+            <sound tempo="120" />
+            <note>
+                <pitch>
+                    <step>E</step>
+                    <octave>2</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>6</string>
+                        <fret>0</fret>
+                        <hammer-on number="1" type="start">H</hammer-on>
+                    </technical>
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>F</step>
+                    <octave>2</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>6</string>
+                        <fret>1</fret>
+                        <hammer-on number="1" type="stop" />
+                        <bend>
+                            <bend-alter>4</bend-alter>
+                        </bend>
+                    </technical>
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>F</step>
+                    <octave>2</octave>
+                    <alter>1</alter>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>6</string>
+                        <fret>2</fret>
+                        <pull-off number="1" type="start">P</pull-off>
+                    </technical>
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>G</step>
+                    <octave>2</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>6</string>
+                        <fret>3</fret>
+                        <pull-off number="1" type="stop" />
+                    </technical>
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>A</step>
+                    <octave>2</octave>
+                    <alter>1</alter>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>6</string>
+                        <fret>6</fret>
+                    </technical>
+                    <slide type="start" number="6" />
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>A</step>
+                    <octave>2</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>6</string>
+                        <fret>5</fret>
+                    </technical>
+                    <slide type="stop" number="6" />
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>A</step>
+                    <octave>2</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>6</string>
+                        <fret>5</fret>
+                    </technical>
+                    <slide type="start" number="6" />
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>A</step>
+                    <octave>2</octave>
+                    <alter>1</alter>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>6</string>
+                        <fret>6</fret>
+                    </technical>
+                    <slide type="stop" number="6" />
+                    <ornaments>
+                        <wavy-line type="start" />
+                    </ornaments>
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>B</step>
+                    <octave>2</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>6</string>
+                        <fret>7</fret>
+                    </technical>
+                    <ornaments>
+                        <wavy-line type="stop" />
+                    </ornaments>
+                </notations>
+            </note>
+        </measure>
+        <measure number="2">
+            <print />
+            <attributes />
+            <sound />
+            <note>
+                <pitch>
+                    <step>C</step>
+                    <octave>2</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>6</string>
+                        <fret>8</fret>
+                    </technical>
+                </notations>
+            </note>
+            <note>
+                <rest></rest>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+            </note>
+            <note>
+                <pitch>
+                    <step>C</step>
+                    <octave>3</octave>
+                    <alter>1</alter>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>6</string>
+                        <fret>9</fret>
+                    </technical>
+                </notations>
+            </note>
+            <note>
+                <rest></rest>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+            </note>
+        </measure>
+    </part>
+</score-partwise>

+ 233 - 0
test/data/OSMD_Function_Test_Tablature_Bends.musicxml

@@ -0,0 +1,233 @@
+<?xml version="1.0"?>
+<score-partwise version="3.1">
+    <work>
+        <work-title>OSMD_Function_Test_Tablature_Bends</work-title>
+    </work>
+    <identification>
+        <creator type="composer">momo</creator>
+        <encoding>
+            <software>www.guitartabcreator.com</software>
+            <encoding-date>2020-06-14</encoding-date>
+            <supports attribute="new-system" element="print" type="yes" value="yes" />
+            <supports attribute="new-page" element="print" type="yes" value="yes" />
+            <supports element="accidental" type="yes" />
+            <supports element="beam" type="yes" />
+            <supports element="stem" type="yes" />
+        </encoding>
+    </identification>
+    <defaults>
+        <scaling>
+            <millimeters>6.35</millimeters>
+            <tenths>40</tenths>
+        </scaling>
+        <page-layout>
+            <page-height>1760</page-height>
+            <page-width>1360</page-width>
+            <page-margins type="both">
+                <left-margin>80</left-margin>
+                <right-margin>80</right-margin>
+                <top-margin>80</top-margin>
+                <bottom-margin>80</bottom-margin>
+            </page-margins>
+        </page-layout>
+        <system-layout>
+            <system-margins>
+                <left-margin>0</left-margin>
+                <right-margin>0</right-margin>
+            </system-margins>
+            <system-distance>173</system-distance>
+            <top-system-distance>68</top-system-distance>
+        </system-layout>
+        <staff-layout>
+            <staff-distance>67</staff-distance>
+        </staff-layout>
+        <appearance>
+            <line-width type="stem">0.8333</line-width>
+            <line-width type="beam">5</line-width>
+            <line-width type="staff">1.25</line-width>
+            <line-width type="light barline">1.4583</line-width>
+            <line-width type="heavy barline">5</line-width>
+            <line-width type="leger">1.875</line-width>
+            <line-width type="ending">1.4583</line-width>
+            <line-width type="wedge">0.9375</line-width>
+            <line-width type="enclosure">1.45843</line-width>
+            <line-width type="tuplet bracket">1.4583</line-width>
+            <note-size type="grace">50</note-size>
+            <note-size type="cue">50</note-size>
+            <distance type="hyphen">60</distance>
+            <distance type="beam">8</distance>
+        </appearance>
+        <music-font font-size="18" font-family="Maestro,engraved" />
+        <word-font font-size="9" font-family="Times New Roman" />
+    </defaults>
+    <part-list>
+        <score-part id="P1">
+            <part-name print-object="no">Guitar</part-name>
+            <part-abbreviation print-object="no">Gtr.</part-abbreviation>
+            <score-instrument id="P1-I1">
+                <instrument-name>Acoustic Guitar (steel)</instrument-name>
+                <instrument-sound>pluck.guitar</instrument-sound>
+            </score-instrument>
+            <midi-instrument id="P1-I1">
+                <midi-channel>1</midi-channel>
+                <midi-program>26</midi-program>
+                <volume>80</volume>
+                <pan>0</pan>
+            </midi-instrument>
+        </score-part>
+    </part-list>
+    <part id="P1">
+        <measure number="1">
+            <print>
+                <page-layout>
+                    <page-height>1850</page-height>
+                    <page-width>1310</page-width>
+                    <page-margins>
+                        <left-margin>80</left-margin>
+                        <right-margin>727</right-margin>
+                        <top-margin>80</top-margin>
+                        <bottom-margin>80</bottom-margin>
+                    </page-margins>
+                </page-layout>
+                <system-layout>
+                    <system-margins>
+                        <left-margin>68</left-margin>
+                        <right-margin>0</right-margin>
+                    </system-margins>
+                    <top-system-distance>187</top-system-distance>
+                </system-layout>
+                <measure-number>system</measure-number>
+            </print>
+            <attributes>
+                <divisions>2</divisions>
+                <key>
+                    <fifths>0</fifths>
+                    <mode>major</mode>
+                </key>
+                <time>
+                    <beats>4</beats>
+                    <beat-type>4</beat-type>
+                </time>
+                <staves>1</staves>
+                <clef number="1">
+                    <sign>TAB</sign>
+                    <line>5</line>
+                </clef>
+                <transpose>
+                    <diatonic>0</diatonic>
+                    <chromatic>0</chromatic>
+                    <octave-change>-1</octave-change>
+                </transpose>
+                <staff-details number="1">
+                    <staff-lines>6</staff-lines>
+                    <staff-tuning line="1">
+                        <tuning-step>E</tuning-step>
+                        <tuning-octave>2</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="2">
+                        <tuning-step>A</tuning-step>
+                        <tuning-octave>2</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="3">
+                        <tuning-step>D</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="4">
+                        <tuning-step>G</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="5">
+                        <tuning-step>B</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="6">
+                        <tuning-step>E</tuning-step>
+                        <tuning-octave>4</tuning-octave>
+                    </staff-tuning>
+                </staff-details>
+            </attributes>
+            <sound tempo="120" />
+            <note>
+                <pitch>
+                    <step>E</step>
+                    <octave>3</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>4</string>
+                        <fret>2</fret>
+                        <bend>
+                            <bend-alter>4</bend-alter>
+                        </bend>
+                    </technical>
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>F</step>
+                    <octave>3</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>4</string>
+                        <fret>3</fret>
+                        <bend>
+                            <bend-alter>4</bend-alter>
+                        </bend>
+                    </technical>
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>F</step>
+                    <octave>3</octave>
+                    <alter>1</alter>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>4</string>
+                        <fret>4</fret>
+                        <bend>
+                            <bend-alter>4</bend-alter>
+                        </bend>
+                    </technical>
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>G</step>
+                    <octave>3</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>4</string>
+                        <fret>5</fret>
+                        <bend>
+                            <bend-alter>4</bend-alter>
+                        </bend>
+                    </technical>
+                </notations>
+            </note>
+        </measure>
+    </part>
+</score-partwise>

+ 224 - 0
test/data/OSMD_Function_Test_Tablature_Hammeron_Pulloff.musicxml

@@ -0,0 +1,224 @@
+<?xml version="1.0"?>
+<score-partwise version="3.1">
+    <work>
+        <work-title>OSMD_Function_Test_Tablature_Hammeron_Pulloff</work-title>
+    </work>
+    <identification>
+        <creator type="composer">momo</creator>
+        <encoding>
+            <software>www.guitartabcreator.com</software>
+            <encoding-date>2020-07-07</encoding-date>
+            <supports attribute="new-system" element="print" type="yes" value="yes" />
+            <supports attribute="new-page" element="print" type="yes" value="yes" />
+            <supports element="accidental" type="yes" />
+            <supports element="beam" type="yes" />
+            <supports element="stem" type="yes" />
+        </encoding>
+    </identification>
+    <defaults>
+        <scaling>
+            <millimeters>6.35</millimeters>
+            <tenths>40</tenths>
+        </scaling>
+        <page-layout>
+            <page-height>1760</page-height>
+            <page-width>1360</page-width>
+            <page-margins type="both">
+                <left-margin>80</left-margin>
+                <right-margin>80</right-margin>
+                <top-margin>80</top-margin>
+                <bottom-margin>80</bottom-margin>
+            </page-margins>
+        </page-layout>
+        <system-layout>
+            <system-margins>
+                <left-margin>0</left-margin>
+                <right-margin>0</right-margin>
+            </system-margins>
+            <system-distance>173</system-distance>
+            <top-system-distance>68</top-system-distance>
+        </system-layout>
+        <staff-layout>
+            <staff-distance>67</staff-distance>
+        </staff-layout>
+        <appearance>
+            <line-width type="stem">0.8333</line-width>
+            <line-width type="beam">5</line-width>
+            <line-width type="staff">1.25</line-width>
+            <line-width type="light barline">1.4583</line-width>
+            <line-width type="heavy barline">5</line-width>
+            <line-width type="leger">1.875</line-width>
+            <line-width type="ending">1.4583</line-width>
+            <line-width type="wedge">0.9375</line-width>
+            <line-width type="enclosure">1.45843</line-width>
+            <line-width type="tuplet bracket">1.4583</line-width>
+            <note-size type="grace">50</note-size>
+            <note-size type="cue">50</note-size>
+            <distance type="hyphen">60</distance>
+            <distance type="beam">8</distance>
+        </appearance>
+        <music-font font-size="18" font-family="Maestro,engraved" />
+        <word-font font-size="9" font-family="Times New Roman" />
+    </defaults>
+    <part-list>
+        <score-part id="P1">
+            <part-name print-object="no">Guitar</part-name>
+            <part-abbreviation print-object="no">Gtr.</part-abbreviation>
+            <score-instrument id="P1-I1">
+                <instrument-name>Acoustic Guitar (steel)</instrument-name>
+                <instrument-sound>pluck.guitar</instrument-sound>
+            </score-instrument>
+            <midi-instrument id="P1-I1">
+                <midi-channel>1</midi-channel>
+                <midi-program>26</midi-program>
+                <volume>80</volume>
+                <pan>0</pan>
+            </midi-instrument>
+        </score-part>
+    </part-list>
+    <part id="P1">
+        <measure number="1">
+            <print>
+                <page-layout>
+                    <page-height>1850</page-height>
+                    <page-width>1310</page-width>
+                    <page-margins>
+                        <left-margin>80</left-margin>
+                        <right-margin>727</right-margin>
+                        <top-margin>80</top-margin>
+                        <bottom-margin>80</bottom-margin>
+                    </page-margins>
+                </page-layout>
+                <system-layout>
+                    <system-margins>
+                        <left-margin>68</left-margin>
+                        <right-margin>0</right-margin>
+                    </system-margins>
+                    <top-system-distance>187</top-system-distance>
+                </system-layout>
+                <measure-number>system</measure-number>
+            </print>
+            <attributes>
+                <divisions>2</divisions>
+                <key>
+                    <fifths>0</fifths>
+                    <mode>major</mode>
+                </key>
+                <time>
+                    <beats>4</beats>
+                    <beat-type>4</beat-type>
+                </time>
+                <staves>1</staves>
+                <clef number="1">
+                    <sign>TAB</sign>
+                    <line>5</line>
+                </clef>
+                <transpose>
+                    <diatonic>0</diatonic>
+                    <chromatic>0</chromatic>
+                    <octave-change>-1</octave-change>
+                </transpose>
+                <staff-details number="1">
+                    <staff-lines>6</staff-lines>
+                    <staff-tuning line="1">
+                        <tuning-step>E</tuning-step>
+                        <tuning-octave>2</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="2">
+                        <tuning-step>A</tuning-step>
+                        <tuning-octave>2</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="3">
+                        <tuning-step>D</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="4">
+                        <tuning-step>G</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="5">
+                        <tuning-step>B</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="6">
+                        <tuning-step>E</tuning-step>
+                        <tuning-octave>4</tuning-octave>
+                    </staff-tuning>
+                </staff-details>
+            </attributes>
+            <sound tempo="120" />
+            <note>
+                <pitch>
+                    <step>B</step>
+                    <octave>2</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>5</string>
+                        <fret>2</fret>
+                        <hammer-on number="1" type="start">H</hammer-on>
+                    </technical>
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>C</step>
+                    <octave>2</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>5</string>
+                        <fret>3</fret>
+                        <hammer-on number="1" type="stop" />
+                    </technical>
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>D</step>
+                    <octave>3</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>5</string>
+                        <fret>5</fret>
+                        <pull-off number="1" type="start">P</pull-off>
+                    </technical>
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>A</step>
+                    <octave>2</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>5</string>
+                        <fret>0</fret>
+                        <pull-off number="1" type="stop" />
+                    </technical>
+                </notations>
+            </note>
+        </measure>
+    </part>
+</score-partwise>

+ 228 - 0
test/data/OSMD_Function_Test_Tablature_Multibends.musicxml

@@ -0,0 +1,228 @@
+<?xml version="1.0"?>
+<score-partwise version="3.1">
+    <work>
+        <work-title>OSMD_Function_Test_Tablature_Multibends</work-title>
+    </work>
+    <identification>
+        <creator type="composer">momo</creator>
+        <encoding>
+            <software>www.guitartabcreator.com</software>
+            <encoding-date>2020-07-12</encoding-date>
+            <supports attribute="new-system" element="print" type="yes" value="yes" />
+            <supports attribute="new-page" element="print" type="yes" value="yes" />
+            <supports element="accidental" type="yes" />
+            <supports element="beam" type="yes" />
+            <supports element="stem" type="yes" />
+        </encoding>
+    </identification>
+    <defaults>
+        <scaling>
+            <millimeters>6.35</millimeters>
+            <tenths>40</tenths>
+        </scaling>
+        <page-layout>
+            <page-height>1760</page-height>
+            <page-width>1360</page-width>
+            <page-margins type="both">
+                <left-margin>80</left-margin>
+                <right-margin>80</right-margin>
+                <top-margin>80</top-margin>
+                <bottom-margin>80</bottom-margin>
+            </page-margins>
+        </page-layout>
+        <system-layout>
+            <system-margins>
+                <left-margin>0</left-margin>
+                <right-margin>0</right-margin>
+            </system-margins>
+            <system-distance>173</system-distance>
+            <top-system-distance>68</top-system-distance>
+        </system-layout>
+        <staff-layout>
+            <staff-distance>67</staff-distance>
+        </staff-layout>
+        <appearance>
+            <line-width type="stem">0.8333</line-width>
+            <line-width type="beam">5</line-width>
+            <line-width type="staff">1.25</line-width>
+            <line-width type="light barline">1.4583</line-width>
+            <line-width type="heavy barline">5</line-width>
+            <line-width type="leger">1.875</line-width>
+            <line-width type="ending">1.4583</line-width>
+            <line-width type="wedge">0.9375</line-width>
+            <line-width type="enclosure">1.45843</line-width>
+            <line-width type="tuplet bracket">1.4583</line-width>
+            <note-size type="grace">50</note-size>
+            <note-size type="cue">50</note-size>
+            <distance type="hyphen">60</distance>
+            <distance type="beam">8</distance>
+        </appearance>
+        <music-font font-size="18" font-family="Maestro,engraved" />
+        <word-font font-size="9" font-family="Times New Roman" />
+    </defaults>
+    <part-list>
+        <score-part id="P1">
+            <part-name print-object="no">Guitar</part-name>
+            <part-abbreviation print-object="no">Gtr.</part-abbreviation>
+            <score-instrument id="P1-I1">
+                <instrument-name>Acoustic Guitar (steel)</instrument-name>
+                <instrument-sound>pluck.guitar</instrument-sound>
+            </score-instrument>
+            <midi-instrument id="P1-I1">
+                <midi-channel>1</midi-channel>
+                <midi-program>26</midi-program>
+                <volume>80</volume>
+                <pan>0</pan>
+            </midi-instrument>
+        </score-part>
+    </part-list>
+    <part id="P1">
+        <measure number="1">
+            <print>
+                <page-layout>
+                    <page-height>1850</page-height>
+                    <page-width>1310</page-width>
+                    <page-margins>
+                        <left-margin>80</left-margin>
+                        <right-margin>727</right-margin>
+                        <top-margin>80</top-margin>
+                        <bottom-margin>80</bottom-margin>
+                    </page-margins>
+                </page-layout>
+                <system-layout>
+                    <system-margins>
+                        <left-margin>68</left-margin>
+                        <right-margin>0</right-margin>
+                    </system-margins>
+                    <top-system-distance>187</top-system-distance>
+                </system-layout>
+                <measure-number>system</measure-number>
+            </print>
+            <attributes>
+                <divisions>2</divisions>
+                <key>
+                    <fifths>0</fifths>
+                    <mode>major</mode>
+                </key>
+                <time>
+                    <beats>4</beats>
+                    <beat-type>4</beat-type>
+                </time>
+                <staves>1</staves>
+                <clef number="1">
+                    <sign>TAB</sign>
+                    <line>5</line>
+                </clef>
+                <transpose>
+                    <diatonic>0</diatonic>
+                    <chromatic>0</chromatic>
+                    <octave-change>-1</octave-change>
+                </transpose>
+                <staff-details number="1">
+                    <staff-lines>6</staff-lines>
+                    <staff-tuning line="1">
+                        <tuning-step>E</tuning-step>
+                        <tuning-octave>2</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="2">
+                        <tuning-step>A</tuning-step>
+                        <tuning-octave>2</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="3">
+                        <tuning-step>D</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="4">
+                        <tuning-step>G</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="5">
+                        <tuning-step>B</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="6">
+                        <tuning-step>E</tuning-step>
+                        <tuning-octave>4</tuning-octave>
+                    </staff-tuning>
+                </staff-details>
+            </attributes>
+            <sound tempo="120" />
+            <note>
+                <pitch>
+                    <step>E</step>
+                    <octave>3</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>4</string>
+                        <fret>2</fret>
+                        <bend>
+                            <bend-alter>4</bend-alter>
+                        </bend>
+                        <bend>
+                            <bend-alter>2</bend-alter>
+                            <release></release>
+                        </bend>
+                    </technical>
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>F</step>
+                    <octave>3</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>4</string>
+                        <fret>3</fret>
+                    </technical>
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>F</step>
+                    <octave>3</octave>
+                    <alter>1</alter>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>4</string>
+                        <fret>4</fret>
+                    </technical>
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>G</step>
+                    <octave>3</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>4</string>
+                        <fret>5</fret>
+                    </technical>
+                </notations>
+            </note>
+        </measure>
+    </part>
+</score-partwise>

+ 189 - 0
test/data/OSMD_Function_Test_Tablature_Slides.musicxml

@@ -0,0 +1,189 @@
+<?xml version="1.0"?>
+<score-partwise version="3.1">
+    <work>
+        <work-title>OSMD_Function_Test_Tablature_Slides</work-title>
+    </work>
+    <identification>
+        <creator type="composer">momo</creator>
+        <encoding>
+            <software>www.guitartabcreator.com</software>
+            <encoding-date>2020-06-16</encoding-date>
+            <supports attribute="new-system" element="print" type="yes" value="yes" />
+            <supports attribute="new-page" element="print" type="yes" value="yes" />
+            <supports element="accidental" type="yes" />
+            <supports element="beam" type="yes" />
+            <supports element="stem" type="yes" />
+        </encoding>
+    </identification>
+    <defaults>
+        <scaling>
+            <millimeters>6.35</millimeters>
+            <tenths>40</tenths>
+        </scaling>
+        <page-layout>
+            <page-height>1760</page-height>
+            <page-width>1360</page-width>
+            <page-margins type="both">
+                <left-margin>80</left-margin>
+                <right-margin>80</right-margin>
+                <top-margin>80</top-margin>
+                <bottom-margin>80</bottom-margin>
+            </page-margins>
+        </page-layout>
+        <system-layout>
+            <system-margins>
+                <left-margin>0</left-margin>
+                <right-margin>0</right-margin>
+            </system-margins>
+            <system-distance>173</system-distance>
+            <top-system-distance>68</top-system-distance>
+        </system-layout>
+        <staff-layout>
+            <staff-distance>67</staff-distance>
+        </staff-layout>
+        <appearance>
+            <line-width type="stem">0.8333</line-width>
+            <line-width type="beam">5</line-width>
+            <line-width type="staff">1.25</line-width>
+            <line-width type="light barline">1.4583</line-width>
+            <line-width type="heavy barline">5</line-width>
+            <line-width type="leger">1.875</line-width>
+            <line-width type="ending">1.4583</line-width>
+            <line-width type="wedge">0.9375</line-width>
+            <line-width type="enclosure">1.45843</line-width>
+            <line-width type="tuplet bracket">1.4583</line-width>
+            <note-size type="grace">50</note-size>
+            <note-size type="cue">50</note-size>
+            <distance type="hyphen">60</distance>
+            <distance type="beam">8</distance>
+        </appearance>
+        <music-font font-size="18" font-family="Maestro,engraved" />
+        <word-font font-size="9" font-family="Times New Roman" />
+    </defaults>
+    <part-list>
+        <score-part id="P1">
+            <part-name print-object="no">Guitar</part-name>
+            <part-abbreviation print-object="no">Gtr.</part-abbreviation>
+            <score-instrument id="P1-I1">
+                <instrument-name>Acoustic Guitar (steel)</instrument-name>
+                <instrument-sound>pluck.guitar</instrument-sound>
+            </score-instrument>
+            <midi-instrument id="P1-I1">
+                <midi-channel>1</midi-channel>
+                <midi-program>26</midi-program>
+                <volume>80</volume>
+                <pan>0</pan>
+            </midi-instrument>
+        </score-part>
+    </part-list>
+    <part id="P1">
+        <measure number="1">
+            <print>
+                <page-layout>
+                    <page-height>1850</page-height>
+                    <page-width>1310</page-width>
+                    <page-margins>
+                        <left-margin>80</left-margin>
+                        <right-margin>727</right-margin>
+                        <top-margin>80</top-margin>
+                        <bottom-margin>80</bottom-margin>
+                    </page-margins>
+                </page-layout>
+                <system-layout>
+                    <system-margins>
+                        <left-margin>68</left-margin>
+                        <right-margin>0</right-margin>
+                    </system-margins>
+                    <top-system-distance>187</top-system-distance>
+                </system-layout>
+                <measure-number>system</measure-number>
+            </print>
+            <attributes>
+                <divisions>2</divisions>
+                <key>
+                    <fifths>0</fifths>
+                    <mode>major</mode>
+                </key>
+                <time>
+                    <beats>4</beats>
+                    <beat-type>4</beat-type>
+                </time>
+                <staves>1</staves>
+                <clef number="1">
+                    <sign>TAB</sign>
+                    <line>5</line>
+                </clef>
+                <transpose>
+                    <diatonic>0</diatonic>
+                    <chromatic>0</chromatic>
+                    <octave-change>-1</octave-change>
+                </transpose>
+                <staff-details number="1">
+                    <staff-lines>6</staff-lines>
+                    <staff-tuning line="1">
+                        <tuning-step>E</tuning-step>
+                        <tuning-octave>2</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="2">
+                        <tuning-step>A</tuning-step>
+                        <tuning-octave>2</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="3">
+                        <tuning-step>D</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="4">
+                        <tuning-step>G</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="5">
+                        <tuning-step>B</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="6">
+                        <tuning-step>E</tuning-step>
+                        <tuning-octave>4</tuning-octave>
+                    </staff-tuning>
+                </staff-details>
+            </attributes>
+            <sound tempo="120" />
+            <note>
+                <pitch>
+                    <step>E</step>
+                    <octave>4</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>1</string>
+                        <fret>0</fret>
+                    </technical>
+                    <slide type="start" number="1" />
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>F</step>
+                    <octave>4</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>1</string>
+                        <fret>1</fret>
+                    </technical>
+                    <slide type="stop" number="1" />
+                </notations>
+            </note>
+
+        </measure>
+    </part>
+</score-partwise>

+ 193 - 0
test/data/OSMD_Function_Test_Tablature_Vibrato.musicxml

@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<score-partwise version="3.1">
+    <work>
+        <work-title>OSMD_Function_Test_Tablature_Vibrato</work-title>
+    </work>
+    <identification>
+        <creator type="composer">momo</creator>
+        <encoding>
+            <software>Guitartabcreator.com</software>
+            <encoding-date>2020-05-24</encoding-date>
+            <supports type="yes" value="yes" element="print" attribute="new-system" />
+            <supports type="yes" value="yes" element="print" attribute="new-page" />
+            <supports type="yes" element="accidental" />
+            <supports type="yes" element="beam" />
+            <supports type="yes" element="stem" />
+        </encoding>
+    </identification>
+    <defaults>
+        <scaling>
+            <millimeters>6.35</millimeters>
+            <tenths>40</tenths>
+        </scaling>
+        <page-layout>
+            <page-height>1760</page-height>
+            <page-width>1360</page-width>
+            <page-margins type="both">
+                <left-margin>80</left-margin>
+                <right-margin>80</right-margin>
+                <top-margin>80</top-margin>
+                <bottom-margin>80</bottom-margin>
+            </page-margins>
+        </page-layout>
+        <system-layout>
+            <system-margins>
+                <left-margin>0</left-margin>
+                <right-margin>0</right-margin>
+            </system-margins>
+            <system-distance>173</system-distance>
+            <top-system-distance>68</top-system-distance>
+        </system-layout>
+        <staff-layout>
+            <staff-distance>67</staff-distance>
+        </staff-layout>
+        <appearance>
+            <line-width type="stem">0.8333</line-width>
+            <line-width type="beam">5</line-width>
+            <line-width type="staff">1.25</line-width>
+            <line-width type="light barline">1.4583</line-width>
+            <line-width type="heavy barline">5</line-width>
+            <line-width type="leger">1.875</line-width>
+            <line-width type="ending">1.4583</line-width>
+            <line-width type="wedge">0.9375</line-width>
+            <line-width type="enclosure">1.45843</line-width>
+            <line-width type="tuplet bracket">1.4583</line-width>
+            <note-size type="grace">50</note-size>
+            <note-size type="cue">50</note-size>
+            <distance type="hyphen">60</distance>
+            <distance type="beam">8</distance>
+        </appearance>
+        <music-font font-family="Maestro,engraved" font-size="18" />
+        <word-font font-family="Times New Roman" font-size="9" />
+    </defaults>
+    <part-list>
+        <score-part id="P1">
+            <part-name print-object="no">Guitar</part-name>
+            <part-abbreviation print-object="no">Gtr.</part-abbreviation>
+            <score-instrument id="P1-I1">
+                <instrument-name>Acoustic Guitar (steel)</instrument-name>
+                <instrument-sound>pluck.guitar</instrument-sound>
+            </score-instrument>
+            <midi-instrument id="P1-I1">
+                <midi-channel>1</midi-channel>
+                <midi-program>26</midi-program>
+                <volume>80</volume>
+                <pan>0</pan>
+            </midi-instrument>
+        </score-part>
+    </part-list>
+    <part id="P1">
+        <measure width="485" number="1">
+            <print>
+                <page-layout>
+                    <page-height>1850</page-height>
+                    <page-width>1310</page-width>
+                    <page-margins>
+                        <left-margin>80</left-margin>
+                        <right-margin>727</right-margin>
+                        <top-margin>80</top-margin>
+                        <bottom-margin>80</bottom-margin>
+                    </page-margins>
+                </page-layout>
+                <system-layout>
+                    <system-margins>
+                        <left-margin>68</left-margin>
+                        <right-margin>0</right-margin>
+                    </system-margins>
+                    <top-system-distance>187</top-system-distance>
+                </system-layout>
+                <measure-number>system</measure-number>
+            </print>
+            <attributes>
+                <divisions>2</divisions>
+                <key>
+                    <fifths>0</fifths>
+                    <mode>major</mode>
+                </key>
+                <time>
+                    <beats>4</beats>
+                    <beat-type>4</beat-type>
+                </time>
+                <staves>1</staves>
+                <clef number="1">
+                    <sign>TAB</sign>
+                    <line>5</line>
+                </clef>
+                <transpose>
+                    <diatonic>0</diatonic>
+                    <chromatic>0</chromatic>
+                    <octave-change>-1</octave-change>
+                </transpose>
+                <staff-details number="1">
+                    <staff-lines>6</staff-lines>
+                    <staff-tuning line="1">
+                        <tuning-step>E</tuning-step>
+                        <tuning-octave>2</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="2">
+                        <tuning-step>A</tuning-step>
+                        <tuning-octave>2</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="3">
+                        <tuning-step>D</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="4">
+                        <tuning-step>G</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="5">
+                        <tuning-step>B</tuning-step>
+                        <tuning-octave>3</tuning-octave>
+                    </staff-tuning>
+                    <staff-tuning line="6">
+                        <tuning-step>E</tuning-step>
+                        <tuning-octave>4</tuning-octave>
+                    </staff-tuning>
+                </staff-details>
+            </attributes>
+            <sound tempo="120" />
+            <note>
+                <pitch>
+                    <step>D</step>
+                    <octave>3</octave>
+                    <alter>1</alter>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>4</string>
+                        <fret>1</fret>
+                    </technical>
+                    <ornaments>
+                        <wavy-line type="start" />
+                    </ornaments>
+                </notations>
+            </note>
+            <note>
+                <pitch>
+                    <step>E</step>
+                    <octave>3</octave>
+                </pitch>
+                <duration>2</duration>
+                <voice>1</voice>
+                <type>quarter</type>
+                <stem>none</stem>
+                <staff>1</staff>
+                <notations>
+                    <technical>
+                        <string>4</string>
+                        <fret>2</fret>
+                    </technical>
+                    <ornaments>
+                        <wavy-line type="stop" />
+                    </ornaments>
+                </notations>
+            </note>
+        </measure>
+    </part>
+</score-partwise>