mei-friend

mei-friend: An Interactive Web-based Editor for Digital Music Encodings - Published in JOSS (2024)

https://github.com/mei-friend/mei-friend

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 17 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    3 of 14 committers (21.4%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

digital-humanities edition editor mei mei-friend music-encoding music-notation verovio

Keywords from Contributors

mesh

Scientific Fields

Computer Science Computer Science - 34% confidence
Last synced: 4 months ago · JSON representation ·

Repository

The mei-friend Web Application: Editing MEI in the Browser

Basic Info
  • Host: GitHub
  • Owner: mei-friend
  • License: agpl-3.0
  • Language: JavaScript
  • Default Branch: main
  • Homepage: https://mei-friend.mdw.ac.at
  • Size: 57.1 MB
Statistics
  • Stars: 41
  • Watchers: 6
  • Forks: 23
  • Open Issues: 29
  • Releases: 10
Topics
digital-humanities edition editor mei mei-friend music-encoding music-notation verovio
Created about 4 years ago · Last pushed 5 months ago
Metadata Files
Readme Changelog Contributing License Citation

README.md

DOI

The mei-friend Web Application: Editing MEI in the Browser

mei-friend is a ‘last mile’ editor for MEI music encodings intended to alleviate the common task of cleaning up encodings generated via optical music recognition, or via conversion from other formats, originally implemented as a plugin package for the Atom text editor. The mei-friend Web Application is a reworking of the tool as a full-featured, cross-browser compatible Web application, with optimised performance and an extended set of features. The application is available online at https://mei-friend.mdw.ac.at.

Fundamental functionalities

mei-friend fundamental functionalities

Github workflow

mei-friend github workflow

Components

We use CodeMirror 5 as our text editor, and Verovio as our music engraving engine. GitHub integration is provided using isomorphic-git and the GitHub REST API. XML-DOM manipulations are performed using tXml by Tobias Nickel. The MEI validation and RNG loading code is adapted from the implementation in the Verovio editor, kindly contributed by Laurent Pugin. It makes use of libxml2. Lute tablature formats are converted to MEI using luteconv by Paul Overell, via the luteconv-webui wrapper service developed by Stefan Szepe and hosted at mdw. PDF functionalities are provided by PDFKit by Devon Govett, using SVG-to-PDFKit. MIDI playback is implemented using html-midi-player. This is itself powered by Magenta.js, which also provides the SGM_Plus sound font used to sonify your encoding. Icons are taken from GitHub's Octicons repository.

Features

Editor. The CodeMirror editor implements important coding conveniences including code folding, line numbering, tag- and bracket matching and auto-closing; as well as alternate key mappings (e.g., ‘vim’, ‘emacs’). MEI-schema-informed autocomplete is also available.

File input and output. Files may be opened from the local file system (via a menu option or using drag’n’drop); from the Web via URL; or from GitHub, by specifying a user/organisation and selecting from the available repositories. GitHub integration allows users to log in, fork repositories, view logs, and commit changes; to automatically branch the codebase and open a Pull Request where changes would otherwise lead to merge conflicts (e.g., where multiple users are concurrently editing the same file); and to trigger GitHub Actions where these are available. All Verovio-supported encoding formats are supported (MEI, uncompressed and compressed MusicXML, Humdrum, ABC, PAE). Additional lute-specific encoding formats are supported via the integrated luteconv Web-service. The current encoding can be downloaded as MEI, MIDI, and SVG. All interactions occur locally in the browser; nothing is uploaded anywhere, excepting GitHub commits. Editor content is persisted in local storage through page refreshes and browser restarts; support for persisting multiple files simultaneously is envisioned for future development.

Public repertoire. Our codebase includes a CSV file recording publicly licensed music encodings, which are offered through the ‘fork repository’ and ‘open URL’ interfaces, alongside a dedicated ‘public repertoire’ access point. Proposed additions to this repertoire meeting our requirements (publicly licensed files; available via GitHub or hosted on a CORS-enabled Web server) are gladly accepted via Github Issue or Pull Request.

Configurable display. Many aspects of the tool’s interface are user-configurable, including the orientation and size of the notation and editor panes; their scale factor / font-size; and colouring, via a selection of preconfigured themes, with the option of having the notation match the editor theme (or remain black on white); and, optionally setting the interface to follow the local system’s bright / dark mode settings. Crucially, Eulise’s circadian rhythm adjusts accordingly. These configurations are done via a dedicated ‘settings’ menu, which also exposes a large collection of tool-specific options for CodeMirror and Verovio.

Navigation. The interface supports musically meaningful navigation according to encoded sections, pages (first, prev, next, last, specified page number), and within displayed notes/rests. Due to the tightly coupled interaction between encoding (MEI text) and engraving (SVG image), selection and navigation occurs seamlessly across both modalities.

Pedagogy. To smooth the learning curve of users new to MEI, the MEI Guidelines are linked to from the ‘Help’ menu; further, users are able to directly look up documentation for the currently selected element through a keyboard shortcut / help menu item.

Editor functions. In addition to all features of the Atom plugin package, we now offer commands to insert and delete clefs, beam-spans, and spiccato articulation; to insert the vertical group (vgrp) attribute for selected elements supporting this attribute (such as dynam, dir, hairpin), with dynamic number attribution; and, to insert the supplied element around a selection and show all supplied elements in a configurable colour.

Validation against MEI schema. Based on the code of the Verovio editor kindly provided by Laurent Pugin, mei-friend automatically loads the RNG schema specified in the MEI file to validate the encoding. It makes use of Gnome’s libxml2. Validation behaviour is configurable (automatic or on-demand) through the mei-friend settings.

Facsimile support. mei-friend makes the content of the facsimile element accessible by displaying zone elements ontop of the surface images in a dedicated facsimile panel, providing interactive zone editing functionality (resizing, panning, inserting & deleting zones) as well as an automated workflow for ingesting external facsimile content into MEI encodings.

Annotation support. The annotation panel provides tooling for generating in-line elements, as well as for listing, navigating between, and visualising annotations. Support for stand-off Web Annotations and for musical objects as specified by the Music Annotation Ontology is also provided.

Installation

To try out mei-friend, simply navigate to the production instance on https://mei-friend.mdw.ac.at. To run your own instance locally on your system, please follow the installation instructions.

Publications

Goebl, W., & Weigl, D. M. (2024). mei-friend: An Interactive Web-based Editor for Digital Music Encodings. Journal of Open Source Software, 9(97), 6002. doi:10.21105/joss.06002

Plaksin, A. (2023). Understanding the needs of music editors in a digital world. Adding support for editorial markup to the mei-friend editor. In Proc. International Conference on Digital Libraries for Musicology, Milan, Italy. doi: 10.1145/3625135.3625149.

Goebl, W., & Weigl, D. M. (2023). mei-friend v1.0: Music Encoding in the Browser. Encoding Cultures. Joint MEC and TEI Conference 2023, Paderborn, Germany. https://teimec2023.uni-paderborn.de/contributions/159.html.

Goebl, W. & Weigl, D. M. (2023). The mei-friend Web Application: Editing MEI in the Browser. Music Encoding Conference Proceedings 2022 [Late-breaking Reports]. doi:10.17613/dnj6-yy29.

Goebl, W. & Weigl, D. M. (2022). Alleviating the Last Mile of Encoding: The mei-friend Package for the Atom Text Editor. In S. Münnich & D. Rizo (Eds.), Music Encoding Conference Proceedings 2021 (pp. 31–39). University of Alicante. doi:10.17613/fc1c-mx52 (Best Paper Award MEC'21).

Acknowledgements

The mei-friend Web application is developed by Werner Goebl (@wergo) and David M. Weigl (@musicog), Department of Music Acoustics – Wiener Klangstil (IWK), mdw – University of Music and Performing Arts Vienna. Development is undertaken as part of the Signature Sound Vienna Project. This research was funded by the Austrian Science Fund (FWF) P 34664-G. The mei-friend Atom plugin package was developed as part of TROMPA (Towards Richer Online Music Public-domain Archives), with funding from the European Union's Horizon 2020 research and innovation programme H2020-EU.3.6.3.1. under grant agreement No 770376. Additional support for annotations and editorial markup, implemented by Anna Plaksin, is funded by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) under the National Research Data Infrastructure – 441958017.

License

The mei-friend Web application is published under the GNU AGPL 3.0 license.

Owner

  • Name: mei-friend
  • Login: mei-friend
  • Kind: organization

JOSS Publication

mei-friend: An Interactive Web-based Editor for Digital Music Encodings
Published
June 11, 2024
Volume 9, Issue 98, Page 6002
Authors
Werner Goebl ORCID
Department of Music Acoustics – Wiener Klangstil (IWK), mdw – University of Music and Performing Arts Vienna, Austria
David M. Weigl ORCID
Department of Music Acoustics – Wiener Klangstil (IWK), mdw – University of Music and Performing Arts Vienna, Austria
Editor
Fabian-Robert Stöter ORCID
Tags
MEI Music Encoding Initiative Linked Data

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite our article in the Journal of Open Source Software."
authors:
- family-names: "Goebl"
  given-names: "Werner"
  orcid: "https://orcid.org/0000-0002-1722-0718"
- family-names: "Weigl"
  given-names: "David M."
  orcid: "https://orcid.org/0000-0003-1502-1528"
contact:
- family-names: Goebl
  given-names: Werner
  orcid: "https://orcid.org/0000-0002-1722-0718"
doi: 10.5281/zenodo.11262560
date-released: 2024-05-23
url: "https://github.com/mei-friend/mei-friend"
preferred-citation:
  authors:
  - family-names: Goebl
    given-names: Werner
    orcid: "https://orcid.org/0000-0002-1722-0718"
  - family-names: Weigl
    given-names: David M.
    orcid: "https://orcid.org/0000-0003-1502-1528"
  date-published: 2024-06-11
  doi: 10.21105/joss.06002
  issn: 2475-9066
  issue: 98
  journal: Journal of Open Source Software
  publisher:
    name: Open Journals
  start: 6002
  title: "mei-friend: An Interactive Web-based Editor for Digital Music Encodings"
  type: article
  url: "https://joss.theoj.org/papers/10.21105/joss.06002"
  volume: 9
  year: 2024
title: "mei-friend: An Interactive Web-based Editor for Digital Music Encodings"

GitHub Events

Total
  • Create event: 10
  • Release event: 1
  • Issues event: 48
  • Watch event: 7
  • Delete event: 1
  • Issue comment event: 63
  • Push event: 243
  • Pull request review event: 3
  • Pull request event: 30
  • Fork event: 6
Last Year
  • Create event: 10
  • Release event: 1
  • Issues event: 48
  • Watch event: 7
  • Delete event: 1
  • Issue comment event: 63
  • Push event: 243
  • Pull request review event: 3
  • Pull request event: 30
  • Fork event: 6

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 2,841
  • Total Committers: 14
  • Avg Commits per committer: 202.929
  • Development Distribution Score (DDS): 0.359
Past Year
  • Commits: 381
  • Committers: 6
  • Avg Commits per committer: 63.5
  • Development Distribution Score (DDS): 0.459
Top Committers
Name Email Commits
Werner Goebl g****l@m****t 1,822
David M. Weigl w****l@m****t 816
Anna Plaksin a****n@g****t 161
Alessio Lampis 5****s 10
Thomas Weber t****r@n****m 9
Montserrat Pàmies-Vilà 1****m 5
Stefan Szepe s****n@g****m 4
aaaaalbert a****t 4
Max Rothman m****n@g****m 3
Prohl p****l@g****e 2
Shintaro 7****t 2
Anna Kijas a****1@g****m 1
dependabot[bot] 4****] 1
yangjian8 y****j@m****t 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 79
  • Total pull requests: 46
  • Average time to close issues: 3 months
  • Average time to close pull requests: 7 days
  • Total issue authors: 21
  • Total pull request authors: 11
  • Average comments per issue: 1.37
  • Average comments per pull request: 0.67
  • Merged pull requests: 36
  • Bot issues: 0
  • Bot pull requests: 2
Past Year
  • Issues: 35
  • Pull requests: 26
  • Average time to close issues: 11 days
  • Average time to close pull requests: 5 days
  • Issue authors: 12
  • Pull request authors: 5
  • Average comments per issue: 0.83
  • Average comments per pull request: 0.73
  • Merged pull requests: 19
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • musicog (28)
  • maxrothman (7)
  • stefan-balke (5)
  • wergo (5)
  • annplaksin (4)
  • Brathenning (4)
  • rlskoeser (4)
  • janjusolja (4)
  • aaaaalbert (3)
  • Joshua-Neumann (3)
  • ikyriazi (3)
  • martha-thomae (1)
  • AndreasK4 (1)
  • ahankinson (1)
  • aseipelt (1)
Pull Request Authors
  • annplaksin (31)
  • aaaaalbert (10)
  • maxrothman (4)
  • sseki27skt (3)
  • dependabot[bot] (3)
  • wergo (2)
  • Prohl (2)
  • rlskoeser (2)
  • faroit (2)
  • montspampam (1)
  • yangjian8 (1)
Top Labels
Issue Labels
bug (11) feature request (7) enhancement (4)
Pull Request Labels
dependencies (3)

Dependencies

requirements.txt pypi
  • Authlib ==1.0.0
  • Flask ==2.0.2
  • Jinja2 ==3.0.3
  • MarkupSafe ==2.0.1
  • Werkzeug ==2.0.2
  • certifi ==2021.10.8
  • cffi ==1.15.0
  • charset-normalizer ==2.0.8
  • click ==8.0.3
  • cryptography ==36.0.0
  • gunicorn ==20.1.0
  • idna ==3.3
  • itsdangerous ==2.0.1
  • pycparser ==2.21
  • python-dotenv ==0.19.2
  • requests ==2.26.0
  • urllib3 ==1.26.7
app/static/npm/package.json npm
  • @inrupt/solid-client ^1.25.2
  • @inrupt/solid-client-authn-browser ^1.13.0