Making GCompris sound more Musical
Karthik Subramanian
Short description: Creating activities for music learning by adding a music oriented API for GCompris . Activities like Sing-along where the musical notes are translated to a position of a ball on the screen, makes learning fun and easy. Rhythmiks consists of pressing the keys according to rhythm. Rhymey an activity for kids to learn rhymes, Virtual Piano with three octaves mapped to the keys in the computer keyboard serves as a recreational and learning activity.MuSynth-to translate the textual notes to songs.
- What is the ultimate goal of your proposal?
The ultimate goal of this project is to add Music oriented activities and games by building a music oriented API to GCompris.
- What components/modules will it touch/change or create?
Deliverables
- Add a Music Oriented API for use in various activities and games.
- Rhymey, an activity that assists kids to listen to, learn and thereby, recite Rhymes from memory.
- Sing-along/alone, an activity to teach kids songs in pentatonic scale by mapping the notes to co-ordinates on the screen according to the frequency as it is easy for a kid to remember by mapping sound to position than notes as script.
- Amadeus - The virtual Piano, afreeplay application with tutor mode that teaches users to use and learn to play the virtual piano, i.e. the keyboard.
- Rhythmiks , an addictive game for the kids to follow the rhythm of a song played.
- MuSynth - A Music Synthesiser, a music composer application that takes as input text the notes of a song and plays it.
Music Oriented API
- To be able to read notes and convert them to the corresponding WAV format with each note fixed to a particular frequency taking time delay of each note into consideration.
- Implement csound API to have more control over synthesis, output and define modules implementing this library.
- This will be highly used in the Sing Along/Alone, Virtual Piano and Music Synthesiser which are going to be built.
- Use the already existing src->gcompris->soundutil.c to play sounds created (module : gcompris.sound).
Rhyme Along- Users will be allowed to choose from a list of kindergarten rhymes to listen to/read.
- They can listen to the rhyme by clicking the play button which plays the recorded version of the Rhyme.
- Users can even read the rhyme with the chosen font and size.
Sing Along/Alone- In the sing along mode, the musical notes of the song being played are mapped to the position of a ball on the screen according to the frequency of the note being played. This means that a higher frequency note will be plotted towards the right of the screen and a lower one towards the left.
- While practising in this mode the user can then choose the sing alone mode where only the plotting on the screen takes place without the music. The user is expected to remember the notes according to the position of the ball plotted on the screen.
- Prompt mode, a combination of the previous two modes, consists of plotting and prompting (playing the music) for selected notes in a song.
- Pre-recorded songs will be provided, and user-made packages of songs can also be added. They’ll be stored as WAV along with the notes in a text file.
Amadeus - Virtual Piano- It consists of building a UI for the virtual piano using the goocanvas framework & Gcompris Board which looks exactly like a grand piano with 3 octaves.
- Each key of the piano is mapped to a key on the computer keyboard which when pressed produces the corresponding note.
- The sustenance of the note is also tracked by sensing how long the key is pressed.
Rhythmiks
- “Pressing the right key at the right time according to the Rhythm”
- Music is played in the background and players must press the buttons that are shown at a precise time corresponding to the sequence dictated on the screen which will sync with the music played in the background.
Music Synthesiser- After practising music for sometime and learning the notes, the kids can try the notes in the piano and write their own songs in pentatonic scale.
- The notes of the songs are given as input. E.g. (C,4) (D,4) (E,1) (G,3) (A,2); which means the pentatonic scale is played with the duration of each note specified next to it.
- The input file is parsed and the song is produced in WAV format.
- Features to play the notes Sharp or Flat are provided and the same can be specified in the input itself by post-fixing the note with # or 'b' respectively.
- Beats per minute can also be specified which sets the rhythm of the song created.
- What benefits does it have for GNOME and its community?
Being passionate about GNOME, music and open source, I have noted that while GNOME has made strides in developing most form of liberal art, it’s exploration of music-based learning has sadly been lacking. I think GCompris will be a small step in the right direction to bridge this inadequacy. This gives users more things they can show off to their little cousins, nephews and nieces, and even their own kids, and helps win the family over to GNOME :D
- Why you'd like to complete this particular project?
MotivationI have always loved both Music and Code. This project would let me combine both and help kids as well. I also enjoy playing GCompris activities myself :-) - and these would only add to that. Thinking of a time period when one of my little cousins could learn musical skills using software I wrote is a mindbogglingly attractive concept. My high school project was also along similar lines, albeit much more primitive (Don’t judge!). I also don’t intend on stopping with just this GSoC - and plan on continuing to contribute to GNOME, both in
An educational suite like GCompris should cover almost every aspect of what is to be taught to children aged 2 - 10, specially in liberal arts and music. Music education concentrates on listening and practising, furthermore the applications to be built follow the 'Orff' based approach to music which has been proven to work very well with children. The power of the pentatonic scale and how well humans can grasp it is perfectly demonstrated in the video featuring Mr. Bobby McFerrin at the World Science festival 2009.
music/multimedia related areas and otherwise.
- How do you plan to achieve completion of your project?
- It really helps to see a schedule with dates and important milestones/deliveries (preferably in two weeks increments).
Timeline- Upto May 24th :
- Get familiar with Goocanvas framwork, learn how the UI is built.
- Write simple applications using the current GCompris APIs.
- Sketch out the UI for the various applications to be built, Collect sample music in pentatonic scales with the exact notes and rhythm to be tested.
- Collect Rhymes (having cc license) to be included.
- Target 1 (1 week) : Write the music oriented API implementing csound and related libraries and test it with the collected music samples.
- Target 2 (2 weeks) : Design the UI and build the Rhymey activity using the collected rhymes.
- Target 3 (2 weeks) : Implement the core conceptual part of Sing-Along/Alone and Virtual Piano activity using the previously built library.
- Target 4 (1 week) : Design the UI for Sing-Along/Alone and Virtual Piano using Goocanvas to make a full fletched application
- Code Refactoring and Documentation (1 week)
- Target 5 (2 weeks) : Implement the core conceptual module of Rhythm Game and Music Synthesiser.
- Target 6 (2 weeks) : Implement the UI for Rhythm Game and Music Synthesiser.
- Refactor, Test Functionality, Cleanup and Document (1 week) : Test the functionality of all the code written and refactor wherever possible.
- Upto May 24th :
- It really helps to see a schedule with dates and important milestones/deliveries (preferably in two weeks increments).
- What will showable at mid-term [1]?
Music oriented API for use in music-oriented modules, Rhymey and the Virtual Piano activities. - Why do you think you are be the best person to work on this project?
- There are usually several proposals for the most popular ideas and we want to know what makes you stand out from the crowd.
About Me :
I am Karthik Subramanian , 20 years old with the primary goal to give something back to the society and ergo, pursuing my third year Engineering (Information Technology) Under-Grad at SSN, Chennai, India. Technology has always been my passion and living in a country like India where many cannot afford to buy software packages, FOSS plays a pivotal role and this is exactly what I’m trying to promote to the best of my ability.Being a social coder, I’m well versed in Python and C/C++. I learnt Java and turned into a web application developer with a good hand in scripting languages such as javascript, PHP, perl. I gained experience by taking up and successfully completing several freelance projects. I have worked with MySQL, Oracle, Postgresql databases and am really familiar with them. Most of my contributions can be found at my git account. Being a music lover I play the piano and am also trained in Carnatic and Western Classical music. This coupled with my coding skills, I believe it gives me a very solid foundation to finish this project.On the other side I have been the representative of my class, Leader at my college's Entrepreneurship cell and the curator, licensee of TEDxSSN - an independently organised TED like conference which turned out to be a huge success.
Github : https://github.com/yeskarthik
IRC : yeskarthik at freenode and gimpnet
Email : itskarthik.s@gmail.comTwitter : @yeskarthikBlog : http://boocci.com
- There are usually several proposals for the most popular ideas and we want to know what makes you stand out from the crowd.
- What are your past experiences (if any) with the open source world?
Being an open source enthusiast I have promoted FOSS as much as I can. I have formed FOSS club at my college with monthly activities, talks, and discussions on development. In addition, the club under my leadership conducts Annual FOSS summits to showcase our projects.
Interned at “RailsFactory” where I developed an SMS Box desktop application / Android application to send and receive SMS through computer, integrated it with Email, Twitter APIs to provide mobile alerts using Python, Ruby.
Presented a Hack - Flumble, at Open Hack India Bengaluru, 2010 conducted by Yahoo using YQL, Python and Flickr API to make a Jumble puzzle out of a selected Photo from flickr.
Developed a Facebook application for a company website Krea which allows people to sign in/register using one’s Facebook id and extracts information from Facebook which is stored in a database using php and mysql. - Why are you interested in improving GNOME?
Being an everyday GNOME user and a promoter I find this to be the best desktop environment I’ve ever worked in. The framework it is built on is absolutely stable. The GNOME community has been very kind and helpful and I have been able to find solutions for the problems that I rarely face. Apart from reporting bugs in various products I have also made a small bug fix for GCompris. As mentioned already GNOME lacks in the music learning quotient and I would love to fill that gap by contributing this small project.
- Please attach a link to a bug (bugzilla.gnome.org or other Free Software tracker) containing a patch you've written.
Bug 640157 - Resolved the ambiguity that existed with the word “meter” at different places in the code with this Patch.
[1] All students are invited to attend GUADEC and present their project there, which is right after the midterm evaluation deadline.
