Projects/Summer of Code/2007/Projects/Music Notation support for KOffice

    From KDE TechBase

    Abstract

    In this project I will add music notation support to KOffice. This will be accomplished by writing a new flake shape, which will make it possible to use this new feature in all KOffice applications. The goals of my project will consist roughly of 3 parts:

    • a way to show and print music in all koffice apps.
    • a way to edit this music notation
    • a way to load/save this in ODF files, either using a KOffice-specific file-format, or the 'standard' MusicXML format.

    What will I do

    In this project I will add music notation support to KOffice. This will be accomplished by writing a new flake shape, which will make it possible to use this new feature in all KOffice applications. Adding full fledged music notation support will probably be too much for the timeframe of GSoC, so my focus would be on the following 3 parts:

    • a way to show and print simple music in all koffice apps.
    • a way to edit this music notation
    • a way to load/save this in ODF files, either using a KOffice-specific file-format, or the 'standard' MusicXML format.

    Several things which I probably will not be doing during GSoC (but of course after SoC I'd love to continue working on this project to implement as many of these additional features as well):

    • advanced music notation stuff like chords/drums
    • import/export of other file-formats (midi/lilypond/...)
    • playback support

    Roadmap

    April 11: Accepted students are made public

    April 12 - April 29:

    Get everything set-up, get to know the mentor, and start on a reasonably detailed design on how to store the music information in memory, using the best ideas from Canorus, NoteEdit and Rosegarden. Als gather ideas on how to store the music in ODF files (probably using MusicXML).

    April 30 - May 28:

    Implement in-memory representation of music information, and start working on flake shape to be able to view/print the music. Refine design when necessary. At this point the shape will just support notes and rests displayed on one or more staffs, with fixed time-signatures, clefs and key signatures, 'custom' measure-lines (not sure how they are called) such as double-lines or repeats. Drawing will probably use one of the freely available GPL-ed music fonts.

    May 28: Official coding begins date

    May 28 - June 3:

    Write code to be able to save/load in-memory representation of music.

    June 4 - June 10:

    Write flake tool to add/remove/edit staffs. Allow to change at least the cleff, name and order of the staffs. Also allow editing of the time and key signatures (not per staff, but 'globally'). Also allow changing measure-lines.

    June 11 - June 24:

    Write flake tool to allow adding/removing of notes and rests by clicking on/near the staffs. Also allow adding/removing accidentals for these notes.

    June 25 - July 8:

    Refine in-memory storage and viewing/printing code to allow markings on notes and rests such as fermata, dots, accents, dashes (don't know the exact english terms), and markings stretching several notes/bars such as (de)crescendo and ties/slurs.

    July 9: Mid-term evaluation.

    July 9 - July 12:

    Continue with previous stuff, and add save/load support for the features added to the in-memory storage.

    July 13 - July 21:

    Not available to code because I'm on vacation

    July 22 - July 29:

    Add flake tools to add/remove/edit fermata, dots, accents, dashes and possibly other markings on notes.

    July 30 - August 5:

    Add flake tools to add/remove/edit ties/slurs/(de)crescendo and possible other markings.

    August 6 - August 12:

    Hopefully re-use text-flake for text elements in music such as dynamics (ppp/pp/p/mp/mf/f/ff/fff) and tempo indications.

    August 13 - August 19:

    Extension period, finish everything that took longer than expected, or if it all took less time then expected implement some additional ideas.

    August 20: Final evaluation