Project: Phase 3

Now time for the final, biggest push of this project. Gather the best of the ideas that all of you have developed and integrate them together into a complete product.

In this document I have listed specifications and guidelines for different aspects of the final phase. But first, some general principles:

1. The internal representation

You will need to pick a way to represent the musical information internally in the program (ie, a model). I recommend the model used by Neile/Suzanne in phase 1. It seems straightforward, clean, complete, and conceptually right. Moreover, it is well-documented so it should be easy to work with.

2. The musical rendering

The final product is specified to have its appearance based on the phase 1 submission of Kendall/Lily/MichaelToy. It should be noted, however, that there were a handful of mistakes or weaknesses in that submission (no grace note support, the bass clef was off by 1 note...), so the other two teams' work should also be consulted. I considered the submission of JohnCharles/Daniel to be the champion of completeness and accuracy.

3. The input files

From my experience in evaluating phase 1, I found the Neile/Suzanne submission easiest to use and understand. (The JohnCharles/Daniel submission was similar, but a little less human-readable.) So, using that format is my recommendation. However, there might be factors that I'm overlooking that would bear on what input format you use. For example, it might be that the format used in the Kendall/Lily/MichaelToy submission is based on some more standard notation, or is easiest to use with LilyPond.

4. The user interface

This is the hardest for me to specify. There are things I like in each submission. The UI that is most visually appealing is that of the Lily/Daniel team. However, some parts of that UI need to be reworked for space efficiency. The Neile/MichaelToy submission achieved sharp space efficiency by using drop-down menus and a separate dialog box; the JohnCharles/Kendall/Suzanne submission had a button to hide or restore the controls. Both approaches have their advantages and liabilities. You must decide how to integrate these ideas or to look for a third approach. You should do further usability tests to help you decide.

Several features from the submission of JohnCharles/Kendall/Suzanne are now going to be specified for the final product:

Two out of three submissions used check boxes to select stanzas. That seemed to work to me. I highly recommend the check box approach, unless a new approach can be found.

See the section on "Features" below for a few more specifications for the UI.

5. Back end and storage

Two out of three groups in phase 2 used a database for storing text and tune data. That seems like the "right" approach to me in principle, although the teams that did this also ran into difficulties with the interaction between Derby and SVN.

Neile has suggested to me that sqlite be used instead. I recommend that you use a database and that someone at least looks into switching from Derby to sqlite.

6. Features

Everything in the following list is a specification

7. General expectations.

Use Java packages to organize your classes. I don't think any group has used packages yet, but you will need to do so to keep your directories from becoming overly cluttered.

This phase needs to have an extra level of professionalism, polish, and robustness. It should be error-tolerant and carefully documented. I would like this piece of software to have a life beyond this semester, so make it maintainable. See the Neile/Suzanne submission for a model of professionalism.

DUE: (Tentatively) Wednesday, April 28.


Thomas VanDrunen
Last modified: Wed Mar 31 08:35:41 CDT 2010