User Tools

Site Tools


proj

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
proj [2021/03/30 16:39] bilproj [2022/03/07 22:19] (current) bil
Line 3: Line 3:
 ====== 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 exampleif the output for measure 42 is not what the user was hoping for when they load your output onto a vieweryour system must present this measure (or a range of measures) so that the user can edit accordinglyThis 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+====== New requirements added on March 7! ====== 
-  - 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 tabmust be implemented as grace notes. See an example in the Useful Resources section below+  - The system must allow the user to customize the visual output to improve it aesthetically and functionally. This definitely includes adjusting the spacing between notes in order to have both the left and right ends of the output align (similar to text justification in a word processor)It can also include customizing fonts, the spacing between the lines of the staffthe size of the notes etc. 
-  - 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+  - Repeats must be supported as well. Try {{:repeat.txt|this example}} input on MuseScore to see the expected output
-  The system must of course support all three instruments and as many as possible of the features shown in the two examples below.+  - The previewer should allow the user to see what measure number they are looking at, as well as support a Go To Measure function as in the text input
 +  - The play function must allow the user to change the tempo of the music, i.ehow fast or slow it is played back. This must be expressed in beats per minute (bpm). 60 bpm means that there are 60 quarter notes in a minute, i.e. each quarter note lasts one second
 +  - There must be a connection between the play function and the visual output as follows: The user must be able to select a measure (or a note) and start playback from that point. Also, when the music is playing, the visual output must highlight the note that is currently being played (similar to MuseScore)
 + 
 +<html><!-
 + 
 +  To be posted. 
 + 
 +--></html>
  
 <html><!--  <html><!-- 
Line 16: Line 23:
 --></html> --></html>
  
-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. See two examples here:+====== Original project description ======
  
-[[https://tabs.ultimate-guitar.com/tab/86734|Guitar tab]]+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 tutorialsA 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.
  
-[[https://www.911tabs.com/link/?3703734|Drums tab]]+The starter code that you were provided with is a system that accepts text-based tablature and converts it to a format called MusicXMLMusicXML can be visualized or printed as sheet music, or played by a virtual instrumentOur project this term will be to add this visualization printing playing functionality to the system you were provided.
  
-Look up some of the tabs for your favourite songs to get a feel for what these look likeYou will see that they often have different styles which will be one of the challenges for our project.+If you cannot read music, do not worryThere 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.
  
-Now, while text tabs are great in terms of helping you figure out song, they are rather hard to read, cannot be easily adjusted, e.to play the song in a different key, and cannot easily be turned into audioThere are many other formats out there that do not have these issues, but the fact is that the majority of the songs are more easily found in text tab form.+Look up some of the tabs for your favourite songs to get feel for what these look likeRun 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.
  
-The music research community has developed a free format, called MusicXML, that can be used to precisely denote a piece of music. You can find everything about it [[https://www.musicxml.com/|here]]. This format is supported by many music apps, such as [[https://musescore.com/|MuseScore]], that can do all the things listed above, such as display the song in an easy to read fashion, transpose to another key, play the song etc.  +Study the MusicXML documentationso you can start understanding the format.
- +
-However, no easy way to transform a text tab to a MusicXML one exists. +
- +
-Our project will be to develop a software system that allows the user to input a text file containing the guitarbass, or drums tablature for a song, and produces a MusicXML file that can be used for the purposes listed above.+
  
 Detailed requirements for our project will be developed during the term. Detailed requirements for our project will be developed during the term.
Line 36: Line 39:
 ==== Useful Resources ==== ==== Useful Resources ====
  
 +  * [[https://en.wikipedia.org/wiki/ASCII_tab|Guitar tablature explanation]]
  
-  * [[https://en.wikipedia.org/wiki/ASCII_tab|Guitar tab explanation]]+  * [[https://en.wikipedia.org/wiki/Drum_tablatureDrum tablature explanation]]
  
-  * [[https://cdn.musiciantuts.com/wp-content/uploads/2016/05/guitar-fretboard-notes-with-sharps.png|Guitar/bass notes on the fretboard in standard tuning]]. Lower string is at the bottom. The note on fret 5 is the same as the note at the next higher string at fret 0, i.e. open (except for the G string where that happens at fret 4). The lower note in guitar is E2i.e. E in octave 2, while on a bass it is E1.+  * [[https://www.musicxml.com/|MusicXML Documentation]]. Click on Tutorial for an introductionWhen looking for information on particular MusicXML element, it's usually best to google "musicxml element-name".
  
-  * An example of a {{:exampleemajor.txt|guitar text tab}}, and the corresponding {{:exampleemajor.musicxml.txt|MusicXML file}}. Please note that the MusicXML may have a lot more info, e.g. regarding layout. This is the bare minimum MusicXML file that represents the input.+  * A starter example of a {{:exampleemajor.txt|guitar text tab}}.
  
-  * An example of a {{:drumexample.txt|drum text tab}}, and the corresponding {{:drumexample.musicxml.txt|MusicXML file}}. Note that this example uses two voices (drums are often notated in two voices, one for the feet - bass drum and pedal hi-hat - and one for the hands). Once one voice has been specified in a measure, the <backup> tag is used to go back to the beginning and start notating the second voice. More on this [[https://usermanuals.musicxml.com/MusicXML/Content/EL-MusicXML-backup.htm|here]].+  * A starter example of a {{:drumexample.txt|drum text tab}}.
  
-  * You can preview any MusicXML file by dragging and dropping it onto [[https://opensheetmusicdisplay.github.io/demo/|this page]].+  * Existing MusicXML previewers: 
 +    - Desktop app: [[https://musescore.com/|MuseScore]] 
 +    - You can preview any MusicXML file by dragging and dropping it onto [[https://opensheetmusicdisplay.github.io/demo/|this page]]. 
 +    - [[https://www.soundslice.com/musicxml-viewer/|An online previewer with playing functionality]]
  
-  * An example of a {{:examplerepeat.txt|guitar text tab with a repeated section}}, and the {{:examplerepeat.musicxml.txt|corresponding MusicXML}} file. Note the number 4 on top of the last bar that designates the section is to be repeated 4 times. Your system must support repeats as shown in this example, as well as in the drum tab example posted since the beginning of the term (War Pigs by Black Sabbath). 
  
-  * An example of a {{:graceexample.txt|guitar text tab with a grace note}}, and the {{:graceexample.musicxml.txt|corresponding MusicXML file}}. Unfortunately, the online viewer posted above does not show grace notes in tablature, so you should use MuseScore to test grace note functionality. 
  
-<html><!-- 
  
-  To be posted. 
- 
---></html> 
  
proj.1617122391.txt.gz · Last modified: 2021/03/30 16:39 by bil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki