May 29, 2008

Final Report

Below is a link to the final report, which I was required to submit by the 24th April for the Third Year Project module. It is approximately 17-18 thousand words in length and details the research, design and implementation of the Notate system alongside evaluations of the progress.

Final Report

Most of all, it explains why not all of the original objectives of the project have been completed. The current implementation of the system is still available online at

March 10, 2008

Project Presentation

10/03/2008 - Term 2, Week 10 (Start of)

In about twenty minutes I'll be giving a presentation about the Notate project, what it set out to do and where it has got to so far. My slides are available here

Current State of the Project

At this stage, I have partially implemented both sides of the system and the JavaScript system in particular has been prepared to demonstrate what it is currently capable of. It is capable of positioning note-heads, accidentals, stems,  dots in chords, and chords in measures. It also spaces chords in relation with each other regarding number of beats contributed to the bar and restricts chords being displayed that are over the no. beats available in the bar. A demonstration version of the system is available, as always, at

Future Plan

Due to the several unforeseen challenges that have emerged over the course of the implementation of this project, progress is rather behind what was specified even in the progress report timetable (timetable_02.pdf). Time is running out and I have to start to focus my work on completing the testing, documentation and the report due in for the start of next term.

I will continue to code the JavaScript system - in an attempt to make it usable (add the ability to save/load MusiXML and a better user-interface) but I will not continue coding beyond a week today. So coding will cease on Monday 17th March. I will then work on the report for the remainder of the Easter vacation.

February 19, 2008

Progress Report

19/02/2008 - Term 2, Week 7 (start of)


For the last few weeks I have been coding up the JavaScript for the client-side system, a small demonstration of its current capabilities can now be found online at: The main things that have been implemented so far are as follows:

  • The Staff object, allowing any five-line staff (with associated clef, time signature and key signature) to be drawn to the browser in accordance with MusicXML attributes.
  • The Note object, which takes MusicXML attributes and positions and draws any single note to a given staff.
  • The Chord object, which takes an array of notes and positions them around each other so as to form a valid chord on a given part. This is the area which took longer than expected as keeping to the musical notation standards (cf. this previous entry) was complex. The current implementation simplifies chord layout slightly by viewing each chord as two distinct sub-chords by the stem direction of the composite notes (i.e. 'up' or 'down'), and placing them side by side This approach should be sufficient for the purposes of the editor as it should still be clear what is going on to the user.

Also, last week I contacted the creators of the Virginia Tech Online Music Dictionary who have since granted me permission to use symbols found on that website in the first version of the system. The codes of the symbols I have used so far from this website are: 08-10,12-15,23-28,43-48,50-51,57-58 (see Supported Symbols for explaination of symbol codes).

It has been necessary, due to oversights in the original design, to add a further 19 symbols to the system for: time signatures, vertically flipped versions of the stem flags (for down-stems) and ledger-lines. Out of a new total of 87 required symbols, I have now acquired 65 of them.

Some work has also been done on the client-side system, however this is incomplete and yet to be integrated with the JavaScript system.

User Interface Design

The design of the user interface for the editor system, which until now has been sketchy in some places, has been further developed. The current aim is for the webpage to have three main columns: left-sidebar, main and right-sidebar. The main section will display the score, and the left-sidebar will display the general options and links around the rest of the site (e.g. 'Save work'). The right-side bar will be the score editing tool bar and will contain a panel for editting the attributes of the selected symbol (e.g. change the no. accidentals associated with the selected note) and a 'playground' stave where the user can mess around with new notes/chords before dragging them onto the score or drag existing notes/chords back onto to significantly re-shuffle things. The user will also be able to change the attributes of selected notes as they sit within the score and will be able to drag notes around to change their pitch / location in the score.

This design will evolve as I move closer to its implementation. 

Work to do

Following is the coding work required to bring me to where I originally specified the first version of this project should get to:

  1. Implement the Part, Measure and Score objects in the client-side system, allowing full pieces of music to be displayed in the browser.
  2. Implement a MusicXML parser function that will process a MusicXML file and generate the data required to display it.
  3. Implement the user interface for interactively modifying the score in the browser
  4. Implement a function that will save the data back to MusicXML format (and back to the server)
  5. Complete implementation of the simple server-side system that will allow users an account where they may access their saved scores and edit a few details
  6. Implement the auto-saving feature, so that each change in the browser is sent to the server asynchronously (Ajax), as and when the user makes them.

In week eight or nine I will be required to give a presentation to my assessors summarising what I have achieved with this project and demonstrating its current capabilities. It is my hope that I will be able to get everything listed above done in time. However, if I am not able to do so, note that the above tasks are listed in order of priority. A natural cut-off point would be after point 4, not completing the aspects of the server-side system in time for the demonstration.

Whatever I get done in the next fortnight, it is my intention that I finish implementing the originally specified version of the system over the next few months.

Watch This Space

There will be regular updates on this blog marking out my progress for the next few weeks

January 22, 2008

Domain name up

The Notate system now has a registered, working domain name:

which, for the moment, just contains a placeholder webpage. Most of my time this last week was familiarising myself with the dreamhost server (on which the system is being hosted) and setting it up to run a Ruby on Rails application.

January 15, 2008

Back to work!

15/01/2008 - Term 2, Week 2 (start of)

(Merry Christmas, Happy new year)

Current Progress State

As intended, no formal progress has been made over the Christmas break, so there is little to add to the previous entry.  The system has essentially been designed, and now needs to be implemented.


From here on in, I do not think I will find it helpful to split the work that needs to be done into weekly tasks, as I just need to code and test the system. Work over the next term will focus on first coding the server-side Ruby on Rails system, and then coding the javascript editor system, and then testing both. I intend for the coding work to be completed by approximately week 8, around when the system will be demonstrated as part of a presentation.

The overall timeline for the remainder of the project (as in the progress report) may be found here:


Future reports

These weekly progress reports will continue, and will summarise how far the implementation has come as the term continues. As part of this process, if I find that I need to clarify or redesign a portion of the system, details will be given in full at the time.

December 06, 2007

Approaching Christmas

06/12/2007 - Term 1, Week 10 (end of)


See the Progress Report document (published in the entry previous) for details of term 1 progress.

Over Christmas

I do not have much time available over the Christmas vacation to spend developing Notate , as I have other commitments through this time (and some unrelated course deadlines at the start of Term 2). As such, nothing has been formally scheduled until the beginning of the next university term.

However, I do intend to continue informally with progress, in the following areas:

  • RoR system design
  • Obtain musical symbols
Further updates 

This is the last report of the first term of development. Regular progress updates will recommence at the start of Term 2 (Monday 7th January). However, as I intend to get some design work completed over Christmas, the blog may be updated a couple of times.

Progress Report

This document details the progress made over the course of the last term, evaluates the progress and project management and revises the development schedule for the next two terms:

Progress Report

Following is the new project timetable, as extracted from the progress report:


November 30, 2007

Progress Report Submission

Earlier this week I submitted a progress report (as required by the module) which included details of what has been achieved over the last term along with an evaluation of the project management to date. Also included is a revision of the original development timetable, which has changed for a variety of reasons.

The progress report itself will be uploaded to this blog in the near future (when sufficient time has passed since the deadline) but the new development schedule may be found below:


It starts from the Christmas vacation until the final deadline for the module. For the last week of term I will be officially in a Design phase, although due to other deadlines and responsibilties I shall not have time to do much work on the project.

November 23, 2007

Musical Notation Standards

While considering exactly how Notate would display its sheet music, I found the following article on JSTOR:

Title:               Standard Music Engraving Practice
Author(s):           Arnold Broido
Source:              Music Educators Journal, Vol. 52, No. 4. (Feb. - Mar.,
                    1966), pp. 52-56+213.
Stable URL:

This article details what is considered to be the standard in engraving practice.

It would be good for the system to follow these standards.

Version 1 Supported Symbols – Official List

Although it has been implicit in my mind what symbols will be supported by Notate 1.0, it has become necessary to produce an explicit list of symbols that the system will use. Graphics for these symbols will need to be obtained. It is looking increasingly likely that I will need to draw these symbols myself.

Supported Symbols

It is useful to view this document alongside the UNICODE 5 chart of musical symbols, available here.

October 2023

Mo Tu We Th Fr Sa Su
Sep |  Today  |
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31               

Blog archive


Search this blog

Not signed in
Sign in

Powered by BlogBuilder