Zoltan Komives – Maryland Institute for Technology in the Humanities https://mith.umd.edu Thu, 08 Oct 2020 20:00:43 +0000 en-US hourly 1 https://wordpress.org/?v=5.5.1 Displaying Music Notation of Multiple Sources With MEI-to-VexFlow https://mith.umd.edu/displaying-music-notation-multiple-sources-mei-vexflow/ https://mith.umd.edu/displaying-music-notation-multiple-sources-mei-vexflow/#comments Tue, 19 Nov 2013 14:55:34 +0000 http://mith.umd.edu/?p=11543 Google Summer of Code (GSoC) is over, and it’s time to recap what has been done during a greatly productive summer. Not only has my project has achieved its main objectives, but as a result I was able to demonstrate the results at the École Thématique, Centre d’Étude Supérieures de la Renaissance in Tours, France [...]

The post Displaying Music Notation of Multiple Sources With MEI-to-VexFlow appeared first on Maryland Institute for Technology in the Humanities.

]]>
Google Summer of Code (GSoC) is over, and it’s time to recap what has been done during a greatly productive summer. Not only has my project has achieved its main objectives, but as a result I was able to demonstrate the results at the École Thématique, Centre d’Étude Supérieures de la Renaissance in Tours, France in late October.

For readers not familiar with the project, MEI to VexFlow is a web-based software component that allows web browsers to display music notation stored in the so-called MEI (Music Encoding Initiative) format. For more information about the project, see my initial and mid-term posts.

Historical musical pieces make their way to us through multiple documents and it often happens that multiple sources introduce differences and variants in the music. As the final task of the GSoC project, I designed a sample web application called meiView that is be able to display 15–16th century music (more precisely, the transcription of such music into common western music notation), and provide a dynamic mechanism for the user to select which variant they want to see.

To see it working, open meiView, and click on the green dots to see the differences between the sources. In the sidebar you can see the highlighted sources and variants you have selected. When you select a variant, the score automatically updates so that the selected variant is displayed.

Overview

MEI is an XML format that is able to represent differences between various sources, so I wanted to create an application that presented the textual ambiguities visually. When visualizing the ambiguities, depending on the purpose of the application, there are a number of ways to approach the problem. For example if a user is making a comprehensive textual study of the score, it may be desirable that they can look at all the variants simultaneously (just like in the Chopin Variorum Edition, where it is possible to look at a measure and see the scanned images of all the different editions at the same time). When focusing on performing practice, the preference is to keep the score as integrated and uncluttered as possible. I am very much interested in studying the latter approach, and therefore decided that the score should always display the music as it was from a single source. However thanks to its dynamic nature, the user can “customize” the score by selecting, for instance, source A at measure three and source B at measure five.

The MEI format allows editors to compile all musical information, including the differences between the sources, into a single XML file. Music editors, after thorough scholarly research, often chose to establish a “base text”, that is, a text that, according to their best judgment, is the most authentic or the most acceptable. The base text is also stored in the MEI file.

To start with, meiView renders the base text using MEI-to-VexFlow. Then it displays little green dots where different variants are available (Figure 1).

Figure 1: Base text displayed, and green dots mark the measures where some of the sources contain differences.

Figure 1: Base text displayed, and green dots mark the measures where some of the sources contain differences.

You can replace fragments of the musical text, by clicking on the green dots and selecting another variant.

Figure 2: Replacing a fragment of the musical text with a variant.

Figure 2: Replacing a fragment of the musical text with a variant.

In some cases, one source is different from all others, while all other sources agree. In other cases, some sources agree on one variant, and other sources agree on another. In the little pop-up variant selector window, you can see which source(s) a variant comes from (Figure 3-4).

Figure 3: the variant comes from source FC2439.

Figure 3: the variant comes from source FC2439.

Figure 4: four sources agree on a different rhythm.

Figure 4: four sources agree on a different rhythm.

Evaluation

With this application you can select an arbitrary combination of variants, effectively creating your own ‘edition’ or a customized ‘view’ of the piece. It is an extremely powerful feature compared to printed music.

Unfortunately, allowing an arbitrary combination of sources brings us to new challenges. When a semantically closely related set of differences is encoded by a number of differences in the MEI (e.g. a two-syllable word difference in lyrics is represented by two differences in MEI) it makes no sense to choose an arbitrary combination of sources. For this reason meiView currently doesn’t show differences in lyrics and it only displays local variants. That is, differences that don’t span across barlines, or if they do, they are split into multiple differences. You can check out an example of this at page 3 measure 3-4. Note that the ties don’t generally cause problems, because in more simple cases they can be encoded as a single element, therefore the difference only concerns the measure containing that element, see for instance page 1 measure 3. Fortunately, there are plans to overcome this problem by allowing the music editors to specify which combination of variants are possible and limit user options accordingly.

This project has demonstrated some of the potential of the MEI format to musicians and music scholars. According to the feedback from the participants at the École Thématique in Tours, there’s great interest in taking MEI-to-VexFlow and meiView even further. The application will be integrated into the Digital Du Chemin platform.

Acknowledgements

I feel lucky for having been able to participate in this project, which was made possible by the Google Summer of Code program and Maryland Institute for Technology in the Humanities at theUniversity of Maryland. Also, I would like to thank my project mentor Raffaele Viglianti who provided fantastic support, and David Lee from University of Glasgow (UK) for providing me with the musical material.

 

 

The post Displaying Music Notation of Multiple Sources With MEI-to-VexFlow appeared first on Maryland Institute for Technology in the Humanities.

]]>
https://mith.umd.edu/displaying-music-notation-multiple-sources-mei-vexflow/feed/ 2
Improving MEI to VexFlow https://mith.umd.edu/improving-mei-to-vexflow/ Wed, 07 Aug 2013 17:36:07 +0000 http://mith.umd.edu/?p=10848 MEI to VexFlow is a JavaScript library used to render music notation encoded according to the  Music Encoding Initiative (MEI) format. MEI is a community-driven effort to create a commonly-accepted, digital, symbolic representation of music notation documents, while keeping in mind the needs of textual scholars and the Digital Humanities. The three-month project supported by [...]

The post Improving MEI to VexFlow appeared first on Maryland Institute for Technology in the Humanities.

]]>
MEI to VexFlow is a JavaScript library used to render music notation encoded according to the  Music Encoding Initiative (MEI) format. MEI is a community-driven effort to create a commonly-accepted, digital, symbolic representation of music notation documents, while keeping in mind the needs of textual scholars and the Digital Humanities.

The three-month project supported by Google Summer of Code is at its mid-term milestone, and on this occasion it’s worth to have a look what has been achieved and what is coming up for the rest of the project.

During our first month and a half, I’ve been busy revising the existing code and adding new features. The main objective was extending the repertoire and the range of MEI features that MEI to VexFlow can support. In order to achieve that, I first focused on improving the handling of “lines” such as slurs, ties and hairpins. This work is very much an under-the-hood improvement, but it is important, because it paves the way for dealing with the quite common phenomenon of hairpins and slurs that do not begin and end precisely with a note on the staff.

 

Introduction and Allegro by Maurice Ravel

Figure 1: First four measures from Introduction and Allegro by Maurice Ravel, flute and clarinet parts only (scan)

 

MEI provides two ways of describing where a line begins and where it ends. The most straightforward way is to specify that a crescendo, for instance, ‘starts at note one in measure two and ends at note two in measure two’, as in the example below:

On the other hand there are instances when the line doesn’t exactly correspond to the start of notes. For these cases MEI allows the encoder to specify two points in time expressed as beats. For example the diminuendo in the second bar of the Ravel example (Figure 1) starts roughly on the third beat, hence one can describe it as a ‘diminuendo starting at beat three and ending at beat “five”—that is at the very end of the measure’. Or indeed, in the fourth measure the crescendo ‘starts at beat one and ends at beat three’.

I’ve made MEI to VexFlow capable of dealing with such encodings, in other words, it is now possible to display lines that are described with beats in the MEI file. Although, VexFlow is only capable of drawing lines that start and end with a note, so my solution was to find the closest notes of two given beats and to draw the lines as if they were attached to such notes. This is a very important step towards more advanced support for these objects. In the future it will be possible to render the lines between the correct locations by calculating offsets from the closest notes.

 

Second measure from Introduction and Allegro by Maurice Ravel

Figure 2: Second measure from Introduction and Allegro by Maurice Ravel, flute and clarinet part only (as rendered by MEI to VexFlow) MEI to VexFlow draws displays the diminuendo, even though it’s starting at the notehead of the third note in the measure.

 

Several other features have been introduced. Now it’s possible to display changing time signature, meter or clef. For instance, in the harp part of the Sonata for Flute Viola and Harp by Debussy all three occur at once:

 

Excerpt from Sonata for Flute Viola and Harp by Debussy

Figure 3: Excerpt from Sonata for Flute Viola and Harp by Debussy (as rendered by MEI to VexFlow)

 

System breaks are also now supported (Figure 4), and staff connectors are now rendered on the left of each system. Different staff connectors are supported in order to render different symbols connecting different groups of staves (for example, a brace for the piano right left hand, or a bracket for a group of instruments in an orchestral score).

 

C Major Prelude from The Well Tempered Clavier by J. S. Bach

Figure 4: First two lines of the C Major Prelude from The Well Tempered Clavier by J. S. Bach (as rendered by MEI to VexFlow)

 

Multi-staff system with instrument groups

Figure 5: Multi-staff system with instrument groups (as rendered by MEI to VexFlow)

 

These are important steps towards the usability of the scores in real-life use cases such as performance or practice.

For more information about the project, visit our project page and to see MEI to VexFlow in action (scores rendered directly in your browser) try out the demo page!

In our next milestone we are turning our attention towards variant handling. Historical musical pieces make their way to us through multiple documents and it often happens that multiple sources introduce differences and variants in the music. We are designing a sample web application that will be able to display 15–16th century music and provide a dynamic mechanism for the user to select which variant they want to see.

To achieve this, we are adding new parsing interface to MEI to VexFlow in order to expose the set of variants encoded in the input file. A web application will be able to display this information to the user and allow them to make their choices before rendering, and to see multiple variants at the same time.

The post Improving MEI to VexFlow appeared first on Maryland Institute for Technology in the Humanities.

]]>
MEI-to-VexFlow https://mith.umd.edu/mei-to-vexflow/ Fri, 07 Jun 2013 17:13:37 +0000 http://mith.umd.edu/?p=10427 I'm excited to join the MITH to pursue a project which will hopefully be the next little step towards revolutionizing scholarly music editing and digital music publishing. VexFlow is an open source JavaScript library to render Common Western Music Notation (CMN) in an HTML5 canvas. MEI to VexFlow is a JavaScript program that interfaces with [...]

The post MEI-to-VexFlow appeared first on Maryland Institute for Technology in the Humanities.

]]>
I’m excited to join the MITH to pursue a project which will hopefully be the next little step towards revolutionizing scholarly music editing and digital music publishing.

VexFlow is an open source JavaScript library to render Common Western Music Notation (CMN) in an HTML5 canvas. MEI to VexFlow is a JavaScript program that interfaces with VexFlow to render music notation expressed in the MEI format. The Music Encoding Initiative (MEI) is a community-driven effort to create a commonly-accepted, digital, symbolic representation of music notation documents. My goal is to boost the MEI to VexFlow library’s capabilities in order to support MEI variant handling. Variant handling in music editing is a substantial problem for the digital editing, musicological and performing musician community.

Being a classical musician, recently graduated (Bachelor of Music) and currently part-time student at the Royal Conservatoire of Scotland, and also a software engineer, I am now trying to combine my expertise in these two areas. My primary field of interest within the intersection of music and computing is notation and digital publishing, especially from the performing musician’s point-of-view. I have long been interested in the way we will use digital sheet music in the future with special regards to today’s trends in music editing and publication; now my aim is to make an impact on the development of the related technologies.

I feel honoured to be accepted at the Google Summer of Code (GSoC) that allows me to join the MITH for the summer months, and I am very much looking forward to work with my mentor at MITH, Raffaele Viglianti, who regularly contributes to MEI-to-VexFlow and is a respected member of the MEI community. I have big hopes for learning a lot from him and from other team members at the MITH, and also I would like to take the opportunity for paving the way for future projects and development in this area.

The post MEI-to-VexFlow appeared first on Maryland Institute for Technology in the Humanities.

]]>