Extending Jokosher to Include a Musical Notation Editor
The goal of this project is to create a musical notation editor for Jokosher using the new GStreamer MusicXML2Midi element that converts Music XML into Midi. The notation editor itself will use Cairo and GTK to integrate into Jokoshers current UI with a focused editing view and quick edit functionality.
The reason I think that this is important is that not many of the current FOSS Audio Editing projects include Midi functionality and a lot of those that do have very complicated interfaces and a great deal of knowledge is assumed by the developers. I want to create something that is easy to use and extensible so that future midi editing options can be added (like a guitar tab editor or a drum roll editor). This would in turn make Jokosher much more feature rich and hopefully would appeal to the majority of musicians as it will have a low entry barrier for use.
You can find the proposal I submitted here: http://redache.wordpress.com/2010/05/03/my-summer-of-code/
State of project at the end of GSoC 2010
The project hasn't quite gone as planned due to me struggling a lot more than expected with certain aspects of the design and implementation of the score editor. Currently you can add notes, measures will auto-generate and there is limited drag and drop support. The MusicXML will generate correctly but currently the audio does not function. This is due to an error that I haven't managed to resolve in time which is to do with how the data is passed through the GStreamer pipeline.
Here's a few key features that I have completed from my original project outline:
- Notes can be added and moved around by the user.
- The Measures are created when the measure before it is filled.
- The source element will take MusicXML and pass it through a buffer.
- All of the drawing is done through Cairo and is completely dynamic.
- The note addition dialog can be extend with more/less notes and can be easily changed to accommodate different musical notation (for example Drums, guitar tabs etc)
- The score instruments are extensions of the events/instruments that are currently in place within Jokosher.
- The notes/measures scale accordingly when the view scale is changed.
Essentially I have most of the back-end required ready and it wouldn't be a huge task to add an in-depth score editor , as all the elements already exist.
Below are some screenshots outlining the UI:
and here's the first UI I created to test my music xml generator.
Thankfully he UI change was a positive one!.
I do plan to continue working on the score editor to refine a great many things and to rewrite parts that I did not have time to rewrite. So I'll keep this page updated(if I'm allowed) with my progress in the coming months.
Planned Future Additions:
- Make drag and drop better. I think it needs a rewrite to make it work much better.
- Get audio working.
- Add a Score Editor
- Add Guitar tabs/Drum editors/anything else that sounds cool.
- General polish/bug fixing.
Launchpad branch: https://code.launchpad.net/~redache/jokosher/MusicXMLEditor
You can run the code by navigating to /Jokosher inside the branch and running python JokosherApp.py.