This is an old revision of the document!
Table of Contents
EECS 2311 Project
EECS 2311 Project
<!--
====== New requirements added on March 3! ======
- The system must allow the user to improve the MusicXML output **by editing the input text tab**. For example, if the output for measure 42 is not what the user was hoping for when they load your output onto a viewer, your system must present this measure (or a range of measures) so that the user can edit accordingly. This includes metadata such as setting a different time signature for some of the measures.
- The system must allow the user to save any edits made to the input text tab by the user, including any metadata edits, e.g. song title, time signature etc.
- The system must support [[https://www.musicxml.com/tutorial/the-midi-compatible-part/repeats/|repeated measures]]. The drum example below contains many instances of repeats. See an example in the Useful Resources section below.
- The system must also support [[https://usermanuals.musicxml.com/MusicXML/Content/EL-MusicXML-grace.htm|grace notes]]. For guitar, any sequence of hammer-ons, pull-offs, or slides that is preceded by the character "g" should be treated as grace notes. For drums, flams (designated by the character "f" in the tab) must be implemented as grace notes. See an example in the Useful Resources section below.
- The system must deal with errors in the input in a user-friendly way. Minor errors should be treated as warnings but should not stop the conversion process. Major errors in particular measures must be presented to the user to fix them.
- The system must of course support all three instruments and as many as possible of the features shown in the two examples below.
To be posted.
-->
<!--
<hr/>
-->
Anyone interested in learning how to play a particular piece of music can usually find help on doing that on the internet in a variety forms, such as videos or tutorials. A common way to convey the way to play a given song for instruments such guitar, bass, or drums is through the use of tablature or tab. These are often created in text as it is the easiest format to do that in.
The starter code that you were provided with is a system that accepts text-based tablature and converts it to a format called MusicXML. MusicXML can be visualized or printed as sheet music, or played by a virtual instrument. Our project this term will be to add this visualization / printing / playing functionality to the system you were provided.
If you cannot read music, do not worry. There are existing programs/websites that implement this functionality, so you will know what the expected output is (see the Useful Resources below). However, no Java library exists for this purpose, hence our project.
Look up some of the tabs for your favourite songs to get a feel for what these look like. Run the system with the starter examples provided below to see what the output looks like. You can find more examples under /src/test/resources/system
in the code. capricho.txt
and parabola.txt
are large examples that you should aim to be able to visualize by the midterm submission.
Study the MusicXML documentation, so you can start understanding the format.
Detailed requirements for our project will be developed during the term.