Name: Roshan Vidyashankar
Email Address: roshanvid@gmail.com/ csmikdebris@gmail.com(mailing lists)
Freenode IRC Nick: c0smikdebris
IM Service and Username: gtalk: roshanvid
Location (City, Country and/or Time Zone): Bangalore, India ( +5:30 - IST)
Proposal Title: Extending Kmid for guitarists.
Motivation for Proposal / Goal:
Kmid2 is a multi-platform application that plays MIDI files to hardware MIDI devices or software synths. It supports all the standard MIDI features like tempo/volume/pitch control, synchronized lyrics, channel mapping etc. 
The goal of this project is to extend Kmid2 to include features that can help guitarists. The main idea is to implement a score viewer and a guitar tabulature viewer. In both cases, Kmid should highlight the current playing position in some way, synced to the music. 
Most guitar tabulature today, is present in the form of gutiar pro/power tab files. The ability to read these files would be immensely helpful to guitarists. The only other KDE based app that reads these files is KGuitar, which has been abandoned. I would like to implement an import function in kmid2 so that it can read and playback these files. 
Another cool feature would be to incorporate Open Collaboration Services (OCS) ( a part of get hot new stuff) to allow sharing and collaboration on midi files. 
Implementation Details:
Implementing the core music and tabulature viewers involves creating display elements for each of the note values. The score viewers should be accessible from buttons on the main screen. The guitar tabulature viewer is tougher to implement as notes in the same octave might have different positions on the fretboard. Positions will be chosen based on the fingering of the neighboring notes. The viewers should also display special symbols to indicate hammerons, pullofs, slides, legatos etc. The score viewers should also handle different chord voicings efficiently. The rest of this task is to synchronizing what is played and what is displayed on the screen. 
For implementing gpx, powertab import, we need to first convert them to a usable format like musicxml. This would then be converted to midi for playback. A parser is freely available for power tab files (ptparses: http://code.google.com/p/ptparser/). I will have to write a parser for gpx files. Some of the code from kguitar will be useful here. Once we have a midi file, its easy to play it. 
I'm still deciding on how OCS is to be implemented. I need to discuss this with the maintainer and a few others.
Tentative Timeline (in weekly intervals until 2 weeks after the end of GSoC):
(April 27th - May 24th) - Brushing up on Qt, reading about OCS and other stuff.
Week 1 & 2: Implementing the core of the score viewer by mapping note values to display elements on the screen. 
Week 3 & 4: Implementing the guitar tabulature view similar to the score view but accounting for the fact that notes in the same octave may have different positions on the fretboard.
Week 5 & 6: Low activity due to examinations. Working on improving the score/tabulature viewers to support hammer-ons, pull offs, slides and other music notation. 
Week 7: Implementing chord display for the tabulature, taking into account different voicings.
Mid Term Evaluations: (July 12th - 16th)
Week 8: Write a parser for gpx format and figure out the specifics of ptparser.
Week 9: Implement the import feature for gpx and power tab files and test it.
Week 10 & 11: Implement OCS to allow sharing and collaboration on gpx files. 
Week 12: Tying up loose ends, testing, bug fixing. 
Aug 23rd - Firm pencils down date.
Week 13: Committing and submitting code to google code. 
Week 14: Documenting anything if required. 
*I have my semester exams from 15th June to 28th June. I won't be able to put in 40 hours/week during this time. I'd like to make up for this by putting in extra hours during the other weeks.
*I might be out of station for 2 days sometime in June for a music workshop. I can make up for this easily.

About Me:
I'm a computer science student, currently in my 3rd year of Bachelors of Engineering. I was first introduced to linux about 6 years back, when i got a knoppix live cd and i haven't stopped using it since. Nowadays, i mostly use ubuntu and mac os x.
I write code mostly in C/C++, Python and JavaScript. I'm a regular at hackathons and barcamps on FOSS and web development. I won "Best Social App" at Open Hack India 2010 for a small communication tool i hacked up with a friend. I've also won numerous coding competitions in school. 
Apart from technology, I'm really passionate about music. I've been playing the guitar for about 8 years now and i play with a few local rock bands. I've also been drumming for a few years. I have a good understanding of music theory which is essential for this kind of project. 
I think i have the right amount of coding and music skills required to complete this project.