meigarage
The MEI Garage is a "workshop" for symbolic music encoding data. It is sharing a code base with the TEI's OxGarage and offers a convenient interface to common tasks for music encoding data, both through Web and REST interfaces. It offers conversion between different formats and customization of the MEI Schema.
Science Score: 67.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 1 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.6%) to scientific vocabulary
Keywords
Repository
The MEI Garage is a "workshop" for symbolic music encoding data. It is sharing a code base with the TEI's OxGarage and offers a convenient interface to common tasks for music encoding data, both through Web and REST interfaces. It offers conversion between different formats and customization of the MEI Schema.
Basic Info
- Host: GitHub
- Owner: Edirom
- License: gpl-3.0
- Language: Java
- Default Branch: dev
- Homepage: https://meigarage.edirom.de/
- Size: 11.1 MB
Statistics
- Stars: 0
- Watchers: 10
- Forks: 0
- Open Issues: 20
- Releases: 3
Topics
Metadata Files
README.md
MEIGarage
Table of Contents
About
MEIGarage is a webservice and RESTful service to transform, convert and validate various formats, focussing on the MEI format. MEIGarage is based on the proven OxGarage.
Further information on the code structure of MEIGarage and TEIGarage can be found here. Information in form of presentation slides and posters can be found here.
A running instance of MEIGarage can be found at meigarage.edirom.de.
How to use
Open API documentation can be found at https://github.com/Edirom/MEIGarage/blob/main/src/main/webapp/openapi.json or at the running instance https://meigarage.edirom.de/ege-webservice/. A curl example call to the API to convert an existing MEI 3.0 document to an MEI 4.0 document looks like
curl -o 4.0.0.mei -F upload=@input-3.0.0.mei https://meigarage.edirom.de/ege-webservice/Conversions/mei30%3Atext%3Axml/mei40%3Atext%3Axml/
Installation
Installing with Docker
With Docker installed, a readymade image can be fetched from the GitHub Docker Registry or DockerHub. For the frontend see ViFE mMeigarage Webclient.
docker pull ghcr.io/edirom/meigarage:latest or docker pull edirom/meigarage:latest
A container can be run using:
bash
docker run --rm \
-p 8080:8080 \
--name meigarage edirom/meigarage:latest
Once it's running, you can point your browser at http://localhost:8080/ege-webservice for the webservice.
You can also get the development version from DockerHub with docker pull edirom/meigarage:dev.
available parameters
- -v Stylesheet paths : The local path to the stylesheets and sources can be mounted to /usr/share/xml/tei/ using the --volume parameter, using e.g.
-v /your/path/to/Stylesheets:/usr/share/xml/tei/stylesheet \ -v /your/path/to/TEI/P5:/usr/share/xml/tei/odd
TEI and MEI sources and stylesheets
When the docker image is build, the latest releases of the TEI and MEI Sources and Stylesheets are added to the image.
If you want to use another version of the sources or stylesheets, you can mount the local folders where your custom files are located when running the Docker image.
There are several ways to obtain these (see "Get and install a local copy" at http://www.tei-c.org/Guidelines/P5/),
one of them is to download the latest release of both
TEI and Stylesheets from GitHub.
Then, the Stylesheets' root directory (i.e. which holds the profiles directory) must be mapped to /usr/share/xml/tei/stylesheet whereas for the
P5 sources you'll need to find the subdirectory which holds the file p5subset.xml and map this to /usr/share/xml/tei/odd; (should be xml/tei/odd).
The respective git repositories:
| location in docker image | data located there | | --------------- | --------------- | | /usr/share/xml/tei/stylesheet | https://github.com/TEIC/Stylesheets/releases/latest | | /usr/share/xml/tei/odd | https://github.com/TEIC/TEI/releases/latest | | /usr/share/xml/mei/music-stylesheets/encoding-tools | https://github.com/music-encoding/encoding-tools/releases/latest | | /usr/share/xml/mei/music-stylesheets/w3c-musicxml | https://github.com/w3c/musicxml/releases/latest | | /usr/share/xml/mei/music-stylesheets/meiler | https://github.com/rettinghaus/MEILER/releases/latest | | /usr/share/xml/mei/music-encoding | https://github.com/music-encoding/music-encoding - each released version sorted into the respctive folder | | /usr/share/xml/mei/music-stylesheets/data-configuration | https://github.com/Edirom/data-configuration - the whole repository|
Using your local folders for the TEI sources and stylesheets:
bash
docker run --rm \
-p 8080:8080 \
-e WEBSERVICE_URL=http://localhost:8080/ege-webservice/ \
-v /your/path/to/tei/stylesheet:/usr/share/xml/tei/stylesheet \
-v /your/path/to/tei/odd:/usr/share/xml/tei/odd \
-v /your/path/to/mei/music-stylesheets/encoding-tools:/usr/share/xml/mei/music-stylesheets/encoding-tools \
-v /your/path/to/mei/music-stylesheets/w3c-musicxml:/usr/share/xml/mei/music-stylesheets/w3c-musicxml \
-v /your/path/to/mei/music-stylesheets/meiler:/usr/share/xml/mei/music-stylesheets/meiler \
-v /your/path/to/mei/music-encoding:/usr/share/xml/mei/music-encoding \
-v /your/path/to/mei/music-stylesheets/data-configuration:/usr/share/xml/mei/music-stylesheets/data-configuration \
--name meigarage ghcr.io/edirom/meigarage
You can also change the version that is used by supplying different version number when building the image locally running something like
bash
docker build \
--build-arg VERSION_STYLESHEET=7.52.0 \
--build-arg VERSION_ODD=4.3.0 \
--build-arg VERSION_ENCODING_TOOLS=3.0.0 \
--build-arg VERSION_W3C_MUSICXML=4.0 \
--build-arg VERSION_MEILER=2.0.0 \
.
in your local copy of the MEIGarage.
exposed ports
The Docker image exposes two ports, 8080 and 8081. If you're running MEIGarage over plain old HTTP, use the 8080 connector. For HTTPS connections behind a SSL terminating Load Balancer, please use the 8081 connector.
Installing without Docker
Getting the application packages
The latest released application package (WAR file) is available from the MEIGarage release page. The latest dev version can be downloaded via nightly.link from the GitHub Action at nightly.link/Edirom/MEIGarage/workflows/maven_docker/main/artifact.zip.
The war file could also be build locally, see Building with Maven.
Running the application packages
Using a running Tomcat (or similar container), you can install the WAR file (see above) in the usual way. In this case, you will need to do some configuration manually:
- copy the file MEIGarage/WEB-INF/lib/oxgarage.properties to
/etc/oxgarage.properties - create a directory
/var/cache/oxgarageand copy the file log4j.xml to there - make the directory owned by the Tomcat user, so that it can create files there: eg
chown -R tomcat6:tomcat6 /var/cache/oxgarage - make sure the MEI & TEI stylesheets and source are installed at
/usr/share/xml/teiusing the Debian file hierarchy standard; the distribution files mentioned in the TEI and MEI sources and stylesheets are in the correct layout.
You'll probably need to restart your servlet container to make sure these changes take effect.
Edit the file oxgarage.properties if you need to change the names of directories.
Check the working system by visiting /ege-webclient/ on your Tomcat (or similar) server, and trying an example transformation. You can check the RESTful web server using e.g. Curl. For example, to convert a MEI 3.0 file to Lilypond format, you might do
bash
curl -s -o test.ly -F upload=@test.xml http://localhost:8080//ege-webservice/Conversions/mei40%3Atext%3Axml/lilypond%3Atext%3Ax-lilypond/
Building with Maven
The MEIGarage Java project can be built with Maven using
mvn -B package --file pom.xml
Readymade .war files can be downloaded from the GitHub Action using nightly.link. For the required Java version see: https://github.com/Edirom/MEIGarage/blob/6f50fdb96300acc3a8e982cae77265d4a9c96c4a/.github/workflows/maven_docker.yml#L21.
dependencies
The dependencies needed for the Maven build that are not available at the main Maven repository are available through GitHub Packages at the TEIC and Edirom GitHub organizations. While those packages are public, GitHub authentication is needed to access those packages.
To authenticate when building locally, create a GitHub PAT with the read:packages scope. Create a maven settings file or edit an existing one and add it to your .m2 folder (e.g. at /home/name/.m2)
```xml
```
Credits
NFDI4Culture
The Consortium for Research Data on Material and Immaterial Cultural Heritage (NFDI4Culture)
The aim of NFDI4Culture is to establish a demand-oriented infrastructure for research data on material and immaterial cultural assets. This includes 2D digitised reproductions of paintings, photographs and drawings as well as 3D digital models of culturally and historically important buildings, monuments or audiovisual data of music, film and stage performances. Concept and structure of the consortium were developed over two years in an open process and in close cooperation between 11 professional societies, 9 supporting institutions and 52 partners. The consortium addresses the needs of a broad spectrum of disciplines from architecture, art, music, theatre, dance, film and media studies.
Owner
- Name: Virtueller Forschungsverbund Edirom
- Login: Edirom
- Kind: organization
- Location: Germany
- Website: https://www.edirom.de
- Repositories: 83
- Profile: https://github.com/Edirom
Citation (CITATION.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: "Parkoła" given-names: "Tomasz" - family-names: "Stanisławczyk" given-names: "Mariusz" - family-names: "Cummings" given-names: "James" - family-names: "Burnard" given-names: "Lou" - family-names: "Rahtz" given-names: "Sebastian" - family-names: "Werla" given-names: "Marcin" - family-names: "Mittelbach" given-names: "Arno" - family-names: "Cayless" given-names: "Hugh" - family-names: "Viglianti" given-names: "Raffaele" - family-names: "Röwenstrunk" given-names: "Daniel" - family-names: "Stadler" given-names: "Peter" - family-names: "Ferger" given-names: "Anne" title: "MEIGarage" version: 0.5.2 date-released: 2022-09-08 url: "https://github.com/Edirom/MEIGarage"
GitHub Events
Total
- Issues event: 1
- Delete event: 22
- Issue comment event: 12
- Push event: 10
- Pull request event: 48
- Create event: 27
Last Year
- Issues event: 1
- Delete event: 22
- Issue comment event: 12
- Push event: 10
- Pull request event: 48
- Create event: 27
Issues and Pull Requests
Last synced: 10 months ago
All Time
- Total issues: 1
- Total pull requests: 25
- Average time to close issues: N/A
- Average time to close pull requests: 19 days
- Total issue authors: 1
- Total pull request authors: 2
- Average comments per issue: 0.0
- Average comments per pull request: 0.28
- Merged pull requests: 9
- Bot issues: 0
- Bot pull requests: 24
Past Year
- Issues: 1
- Pull requests: 25
- Average time to close issues: N/A
- Average time to close pull requests: 19 days
- Issue authors: 1
- Pull request authors: 2
- Average comments per issue: 0.0
- Average comments per pull request: 0.28
- Merged pull requests: 9
- Bot issues: 0
- Bot pull requests: 24
Top Authors
Issue Authors
- anneferger (8)
- daniel-jettka (2)
Pull Request Authors
- dependabot[bot] (43)
- anneferger (3)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- commons-fileupload:commons-fileupload 1.4 compile
- de.edirom.meigarage:lilypond-converter 0.2.1 compile
- de.edirom.meigarage:mei-customization 0.6.3 compile
- de.edirom.meigarage:mei-validator 0.3.1 compile
- de.edirom.meigarage:mei-xsl-converter 0.2.2 compile
- de.edirom.meigarage:verovio-converter 0.2.1 compile
- javax.servlet:javax.servlet-api 4.0.1 compile
- pl.psnc.dl.ege:ege-framework 0.5.1 compile
- io.swagger.core.v3:swagger-jaxrs2 2.2.0
- io.swagger.core.v3:swagger-jaxrs2-servlet-initializer-v2 2.2.0
- javax.ws.rs:javax.ws.rs-api 2.1
- org.json:json 20211205