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:
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:
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):
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).
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.
Write code to be able to save/load in-memory representation of music.
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.
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.
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.
Continue with previous stuff, and add save/load support for the features added to the in-memory storage.
Not available to code because I'm on vacation
Add flake tools to add/remove/edit fermata, dots, accents, dashes and possibly other markings on notes.
Add flake tools to add/remove/edit ties/slurs/(de)crescendo and possible other markings.
Hopefully re-use text-flake for text elements in music such as dynamics (ppp/pp/p/mp/mf/f/ff/fff) and tempo indications.
Extension period, finish everything that took longer than expected, or if it all took less time then expected implement some additional ideas.