wmn4j is a Java library for handling western music notation. The main purpose of wmn4j is to enable easy and efficient analysis of scores and wmn4j is intended to also provide functionality for algorithmic composition by generating scores.
The structure of scores in wmn4j is described in a separate document. The API Documentation provides the Javadoc for the latest release of wmn4j. There are a few architectural design principles in wmn4j:
- All notation classes are immutable
- Builder classes are used for creating objects
- Scores can be read using different types of iterators
See the examples directory for simple examples of how to use wmn4j.
wmn4j is developed and built with OpenJDK 17. wmn4j uses Gradle and can be built by running Gradle build. With the current configuration the build consists of compilation, unit tests, and static analysis. It is recommended to delegate the building of the project to Gradle using the provided Gradle wrapper in the IDE to ensure all dependencies etc. are handled correctly. To build locally, run
./gradlew build
Contributions to wmn4j are very welcome. If you are interested, feel free to message me (otsob) through Github. Contributing to wmn4j happens throught pull requests. For commits we try to follow basic practices (for example, see the ones by Painsi or Beams).
As wmn4j is a library, the testing happens through unit tests and it is preferred that changes come accompanied by corresponding unit tests.
The coding style of wmn4j is not very strict, but there are some basic guidelines.
Contributing to this project is supposed to be enjoyable, so behaving nicely and respectfully is appreciated. For a general guideline on code-of-conduct we follow the one outlined by Contributor Covenant.
For pull requests target the development
branch. The main
branch is reserved for releases.
If you find a bug in wmn4j or want to propose a feature, please open an issue with the corresponding template.
- Gradle
- Apache Commons Math
- SLF4J. When using wmn4j, you need to bind to a compatible logger implementation.
Wmn4j is still in the alpha phase. The released versions of wmn4j are available on Maven central.
- Otso Björklund - otsob
- Matias Wargelin
See also the list of contributors who participated in this project.
This project is licensed under the MIT License - see the LICENSE.txt file for details
If you use wmn4j for research, or need a reference to cite for other reasons, please use:
@inproceedings{wmn4j2022,
author = {Björklund, Otso},
title = {{Western Music Notation for Java: A library for music notation on the JVM}},
booktitle={Extended Abstracts for the Late-Breaking Demo Session of the 23rd International Society for Music Information Retrieval Conference},
year = {2022},
}