Craig Sapp (Stanford University/CCARH/PHI)
Jacek Iwaszko (The Fryderyk Chopin Institute)
Marcin Konik (The Fryderyk Chopin Institute)
IAML
Kraków, 18 lipca 2019 r
http://bit.ly/iaml-2019
Verovio Humdrum Viewer
Agenda
VHV interface
Verovio Humdrum Viewer
http://verovio.humdrum.org
VHV interface
Play button
Page navigator
Application
Menus
Digital music
(text editor)
Rendered graphical
music
Moveable dividing line
http://verovio.humdrum.org
Primary VHV components
http://www.verovio.org
http://humlib.humdrum.org
C++ library & toolkits converting MEI data into SVG images.
C++ parser and analysis tools for Humdrum data.
Compiled into javascript
with emscripten for use in web browsers.
In-browser notation rendering
Ace text editor
Verovio toolkit
Humlib
(filtering & conversion to MEI)
graphic
notation
SVG
MEI
Humdrum
VHV documentation
http://doc.verovio.humdrum.org
Humdrum encoding tutorial: http://doc.verovio.humdrum.org/humdrum/getting_started
Humdrum data
4C
4c
4cc
=3
T
4 = quarter note
C = C below middle C
cc = C above middle C
= = barline
T = trill (major second)
Start of data (“exclusive interpretations)
End of data (“spine terminators”) star-dash (not underscore)
**kern = “core” of music
**text = lyric text
Start of data (“exclusive interpretations)
End of data (“spine terminators”) star-dash (not underscore)
**kern = “core” of music
**text = lyric text
“Tandem interpretations”
*clefF4 = bass clef
*clefG2 = treble clef
*M2/4 = 2/4 time signature
Data modifiers
Data rows indicate simultaneities in score
Data columns indicate parts (or streams of other data) in score
http://bit.ly/twinkle-humdrum
Data Entry
SharpEye
(MRO)
Optical music recognition
SharpEye2 by VISIV (http://www.visiv.co.uk)
Input: 8 bit monochrome TIFF file w/ LZW compression
Output: MRO (SharpEye format), NIFF, MIDI, musicXML
Historical edition
high resolution scan
(TIFF)
Monochrome
(TIFF)
Modern score
vector graphics
(PDF)
Monochrome
(TIFF)
SharpEye
(MRO)
OMR of historical editions
Scan
of music
Recognized
music
Scan
of music
Recognized
music
OMR of modern editions
Old vs. new print recognition with OMR
Historical score
Modern score
Data-entry paths into VHV
Optical Music Recognition
(SharpEye)
MusicXML
Conversion to Humdrum
(Verovio Humdrum Viewer)
Correction of MusicXML file
(MuseScore)
MusicXML
MusicXML
Conversion to Humdrum
(Verovio Humdrum Viewer)
Data-entry paths into VHV
Optical Music Recognition
(SharpEye)
MusicXML
Conversion to Humdrum
(Verovio Humdrum Viewer)
Correction of MusicXML file
(MuseScore)
MusicXML
MusicXML
Conversion to Humdrum
(Verovio Humdrum Viewer)
Conversion to Humdrum
(Verovio Humdrum Viewer)
Generation of
MusicXML file
(MuseScore)
MusicXML
From manuscript
sources
Drag-and-Drop MusicXML files
Loading MusicXML files into VHV
initial processing
chord -d = !!!filter: chord -d
Alt
s
Command-line Humdrum tools
complex tuplets
**kern
4C
8.CL
32C
32CJ
12CL
12C
12CJ
4C
*-
**kern
17cL
17c
17c
17c
17c
17c
17c
17c
17c
17c
17c
17c
17c
17c
17c
17c
17cJ
*-
file1.krn
file2.krn
partjoin
combines humdrum files of similar structure
~ $ partjoin file2.krn file1.krn
**kern **kern
4C 17cL
. 17c
. 17c
. 17c
. 17c
8.CL .
. 17c
. 17c
. 17c
32C .
32CJ .
. 17c
12CL .
. 17c
12C .
. 17c
. 17c
12CJ .
. 17c
4C .
. 17c
. 17c
. 17c
. 17cJ
*- *-
Filters and Humdrum tools
final validation
Mark unopened or unclosed slurs
!!!filter: slurcheck
Editing Music in VHV
Copy and Paste
bit.ly/twinkle-humdrum
http://verovio.humdrum.org
Copy column B
And paste into
VHV text editor
Manual addition of staccatos
' = staccato in **kern data
Graphical addition of staccatos
Shortcut:
N.B.: Type command-z or control-z to undo changes
Contextual edit menu
Note > Articulations > Toggle staccato
Adding lyrics
Edit > Text > Add lyric verse to top staff
What is the pink background?
Add another part
Edit > System > Add staff
below system
Metric analysis
Metric levels:
Analysis>Rhythm>Composite
metric levels
Filters vs. Menu
Metric-level analysis using filter
!!!filter: metlev -ce cdata
Adding the line:
will cause the metric analysis to be displayed in notation (but not in text)
Options:
-c = composite rhythm
(all parts)
-a = append data (display
above top staff)
-e cdata = display data above
staff (chord-like data)
Filters vs. Menu (2)
!!!filter: extract -s 1,3,2,3
Means reorder and copy spines from original sequence 1,3, 2, 3.
This copies the **text spine to the bottom staff.
Filtering allows more control than menu items.
Eventually maybe a form will be available for filters to set parameters and run from GUI.
Displaying MEI conversion
File > Display MEI data
Keyboard shortcut: alt-m
Clicking on note will bring
MEI element into view
Online scores
Online scores
List of Mozart piano sonatas
List of Mozart piano sonatas
Work/
movement
navigator
Page
navigator
left/right
arrow keys
are shortcuts
shift+
left/right
arrow keys
are shortcuts
Shift-up
returns to
worklist
View source scan
View > Show source scan
Keyboard shortcut: alt-p
Where score data comes from
Humdrum Notation Plugin
Humdrum Notation Plugin
Embedding data directly into webpage
Source code for webpage
<html>
<head>
<title>An example</title>
<script src="https://verovio-script.humdrum.org/scripts/verovio-toolkit.js"></script>
<script src="https://plugin.humdrum.org/scripts/humdrum-notation-plugin.js"></script>
<script>var vrvToolkit = new verovio.toolkit()</script>
</head>
<body>
<p>A musical example:</p>
<script>displayHumdrum({source: "example"})</script>
<script type="text/x-humdrum" id="example">
**kern
*clefG2
*M4/4
=1
1c;
==
*-
</script>
</body>
</html>
embedded Humdrum
data
Find Humdrum data script labeled “example” and create notation (inserted at location of Humdrum script element).
Humdrum Notation Plugin script
Try it online
Web worker version of plugin
Alternate plugin setup using verovio in a web worker interface (useful for larger-scale use).
Loading data from URL
Source code for webpage
<html>
<head>
<title>An example</title>
<script src="https://verovio-script.humdrum.org/scripts/verovio-toolkit.js"></script>
<script src="https://plugin.humdrum.org/scripts/humdrum-notation-plugin.js"></script>
<script>var vrvToolkit = new verovio.toolkit()</script>
</head>
<body>
<p>Another musical example:</p>
<script>
displayHumdrum({
source: "example2",
scale: 25,
url: "https://raw.githubusercontent.com/craigsapp/mozart-piano-sonatas/master/kern/sonata06-3b.krn"
});
</script>
<script type="text/x-humdrum" id="example2"></script>
</body>
</html>
Find Humdrum data script labeled “example” and create notation (inserted at location of Humdrum script element). Data loaded from “url” parameter.
“scale” is a verovio parameter.
Try it online
URI shortcuts for Github data
<html>
<head>
<title>An example</title>
<script src="https://verovio-script.humdrum.org/scripts/verovio-toolkit.js"></script>
<script src="https://plugin.humdrum.org/scripts/humdrum-notation-plugin.js"></script>
<script>var vrvToolkit = new verovio.toolkit()</script>
</head>
<body>
<p>Another musical example:</p>
<script>
displayHumdrum({
source: "example2",
scale: 25,
uri: "github://craigsapp/mozart-piano-sonatas/kern/sonata06-3b.krn"
});
</script>
<script type="text/x-humdrum" id="example2"></script>
</body>
</html>
Try it online
Passing filter parameters
<script>
displayHumdrum({
source: "example3",
scale: 25,
uri: "github://craigsapp/bach-370-chorales/kern/chor001.krn",
filter: "extract -k4 | transpose -kc | msearch -q gfedc"
});
</script>
Try it online
Bach Chorale Website
Example use of Humdrum Notation Plugin
On-demand notation rendering
Chorale #2
displays
after
clicking
on its title:
notation generated on demand
Chorale typesetting page
Create musical examples for your own webpages
Notice filter to extract parts
Try it online
Humdrum data file for website
Tasso in Music Project
Tasso in Music Project
Tasso digital scores
Work pages
Notation toolbar
Notation rendered dynamically with verovio
Notation toolbar
Search help
Search musical text (lyrics)
Search notes (pitch, interval rhythm)
Display single part only (C=canto, T=tenore, B=basso)
Play MP3 rendering of musical data
Expand/contract music to entire piece or first system only
Show/hide text (lyrics)
Show original clef/mensuration
Webpage source code:
Notation toolbar actions: Humlib filters and Verovio options
!!!filter: extract -I **text
(appended to Humdrum data before sending to verovio to render)
vrvOptions.appXPathQuery = ["./rdg[contains(@label, 'original-clef')]"];
!!!filter: extract -k voice-number
vrvOptions.pageHeight = 60000; (expand)
vrvOptions.pageHeight = 1000; (contract)
vrvOptions.adjustPageHeight = 1;
vrvOptions.humType = 1; (and javascript)
!!!filter: msearch -q pitch-search
!!!filter: msearch -t text-search
Josquin Research Project
Josquin Research Project
http://josquin.stanford.edu
Work pages
PDFs & MP3 playback
Incipit
Vocal ranges
Data downloads
Online analyses
Music searching
Dissonance analysis
Analysis > Renaissance dissonance labels > Color dissonant notes by metric position
Other Resources
VHV Github issues page
**HUG
Humdrum Users Group
Humdrum Tools repository
Humdrum documentation website
NIFC Digital Edition Projects
The Fryderyk Chopin Institute (Warsaw, Poland)
The activities of the Fryderyk Chopin Institute, which was established in 2001 on the basis of an act of the Polish Parliament, cover the following areas:
Research and digitization projects (EU funds)
Chopin Heritage in Open Access
Heritage of Polish Music in Open Access
Demo website for Chopin Early Editions