Friday, September 2, 2011
Expose your databases as a service in two steps!!!
Wednesday, January 26, 2011
ChordATune and HMM (Interactive AI Systems)

- Q – States
- O – Observation
- A – the state-transition probability matrix
- B – Observation probability distribution Matrix:
- p - Initial state distribution probability
- λ – the entire model
Tuesday, January 25, 2011
ChordATune Awards & Publications
- The Asia Pacific ICT Alliance Award Merit award – APICTA 2009 (Melbourn)
- National Best Quality Software Awards (Project – ChordATune) bronze award – NBQSA 2009 British Computer Society
- Academic Excellence Award (Project – ChordATune) Third Place - Cutting Edge Exhibition Informatics Institute of Technology (June 2009)
Publications
- Interactive Machine Learning for Incorporating User Emotions in Automatic Music Harmonization. Proceeding of the 5th International Conference on Information and Automation for Sustainability (ICIAfS'10).
- ChordATune - An Emotion based Melody Harmonizer for Piano Music. Proceedings of the The Second International Conference on Technology for Education (T4E'10) IIT Bombay, Mumbai.

ChordATune Technical Introduction
Wednesday, November 24, 2010
Create Your Own Music Using ChordATune
In this section I will give you a step by step guide on how you can create music using ChordATune .
1. Creating a song.
There are several ways to create melodies in ChordATune.
- Using an existing midi file (if you have an already exsisting melody and don't know how to get the base chords) ..
- Using a manuscript Editor - ChordATune provides a well known tools to create manuscript notations (if you know your music theory)
- Using a virtual Piano.
In the main frame of ChordATune, under creation mode select piano from the drop down list and click on create a song.
Then you will get a virtual piano as shown below ..
Here you can click on the key board and create your melody once you create the melody you can click on play to listen to your creation. If you don't like the sound of it you can click on edit and delete the unnecessary notes. If you don't like the entire melody you can click on clear and start over. To view your melody in a manuscript notation click on view. Once you are done click on save to save your creation. :)
2. Generating the harmony
Now that you have a melody you need to generate the harmony (base chords) to accompany you melody. In order to harmonize you need to follow the following steps
- Select the time signature (in simple terms its the beat of your melody)
- Input the midi file (the melody you just created) - you can listen to the melody once u input the melody
- Giving the emotional factor (harmony depends on user emotions therefore its important to specify what kind of song you want ie a happy song, sad song ect (if you don't like a particular harmony generated by ChordATune you can always change the emotional factor and get a complete different harmony.
- Generate Harmony
3 . Display Harmony
Once you generate the harmony there are several options to display the harmony.
- Selecting the genre - You can select the genre(style) of your choice while displaying the harmony. There are several styles allowed in ChordATune. (ie Rhumba, Swing, Disco, Rock, March)
- Selecting the drum beat - According to the genre users can select different drum beats)
- Changing the tempo - if you want to change your tempo of your song you can change the tempo using this functionality
- Display the harmony
Now you know how to create a simple song using ChordATune. It is advice to give different variations and experiment with your creation by choosing different emotional factors/ changing the genre/drum beat and tempo to get the best result of your choice. This way you can add your own creativity to your song.
ChordATune also allows you to generate the guitar tabs (fingering positions of guitar chords) for you melody for the guitar players :) by selecting the display style as guitar.
ChordATune also allows you to print your music as sheet music by clicking display printable version.
Now you can go to your piano/guiatar and play your music !!!
Tuesday, August 3, 2010
How to create a MYSQL data service using WSO2 data services Server
Before we begin since I am going to create a data service for MYSQL data store you need to install and have mysql server(this can be any database server) .
Lets create a database call MyDSDB and create a table call Person.
Create database MyDSDB;
use MyDSDB;
CREATE TABLE Persons
(
P_Id int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
show tables;
Once you create the query add save and go to operation section.
Step 3 - Creating Operations
Creation operations is easy, once you create a query you need to create an operation mapping to the Queries you just created.
Click on add new operations, and it will display an operation wizard. Give an operation Name and map that operation to the queries you created.
Operation Name - GetPeople
Query ID - SelectPersonsQ
Once you have added the two queries click on finish to save the data service. It will deploy the created data service as an axis2 service. If you go to Web services list you can see your newly created data service as shown below.
If you click on the data service you can see list of Quality of service operations given for that data service. You can add throttling security and catching for that data service. And also you can view the dbs (XML) of the created service by clicking on Data Service XML Editor.
<data name="MyFirstDSS">
<config id="MyDS">
<property name="org.wso2.ws.dataservice.driver">com.mysql.jdbc.Driver</property>
<property name="org.wso2.ws.dataservice.protocol">jdbc:mysql://localhost:3306/MyDSDB</property>
<property name="org.wso2.ws.dataservice.user">root</property>
<property name="org.wso2.ws.dataservice.password">root</property>
</config>
<query id="InsertPersonQ" useConfig="MyDS">
<sql>INSERT INTO Persons(P_Id, LastName, FirstName, Address,City) VALUES(?,?,?,?,?)</sql>
<param name="P_Id" sqlType="STRING" ordinal="1" />
<param name="LastName" sqlType="STRING" ordinal="2" />
<param name="FirstName" sqlType="STRING" ordinal="3" />
<param name="Address" sqlType="STRING" ordinal="4" />
<param name="City" sqlType="STRING" ordinal="5" />
</query>
<query id="SelectPersonsQ" useConfig="MyDS">
<sql>Select P_Id, LastName, FirstName, Address,City From Persons</sql>
<result element="Keys" rowName="Key">
<element name="P_Id" column="P_Id" />
<element name="LastName" column="LastName" />
<element name="FirstName" column="FirstName" />
<element name="Address" column="Address" />
<element name="City" column="City" />
</result>
</query>
<operation name="GetPeople">
<call-query href="SelectPersonsQ" />
</operation>
<operation name="InsertPerson">
<call-query href="InsertPersonQ">
<with-param name="P_Id" query-param="P_Id" />
<with-param name="LastName" query-param="LastName" />
<with-param name="FirstName" query-param="FirstName" />
<with-param name="Address" query-param="Address" />
<with-param name="City" query-param="City" />
</call-query>
</operation>
You can invoke your service by the try-it feature by clicking on the try it link in the service dashboard.
Monday, July 26, 2010
Music Technology & ChordATune
The aim of the ChordATune system is to give a clear understanding of harmonization to novice pianists, and to create accompaniments that are musically correct. Since there can be more than one accompaniment for a given melody, ChordATune allows variations of accompaniments according to the emotional factor of the composer and the genre of music.
ChordATune has the functionality of creating new melodies using a manuscript notation or using a virtual piano, and also to browse melodies in MIDI format to be inserted into the system as input. The ability to set the emotional factor to any level of happiness or sadness lets the user generate different types of harmonies to the same melody based on different emotions ranging from happy to sad. Furthermore users can change the harmony by changing the genre, drum beat and its tempo. Once the harmony is generated it can be displayed in different genres and styles according to the manuscript notation. Furthermore, ChordATune possesses the capability to provide guitar chords in fret sheets for a given melody; this helps novice guitarists to learn chords and fingerings for new melodies. Once the accompaniments are generated they can be played as audio files. The generated accompaniments can be saved as MIDI files or manuscript notation.
ChordATune better explained according to Kolb’s (Ref) experiential learning theory model.
ChordATune, An e-learning tool for kids (and their grown-ups) ....
ChordATune is a cool interesting tool introduced to ease the task of harmonization for novice piano players and song writers. However, it further provides functionalities to learn western music theories and concepts and also gives users a chance to experiment music.
Kolb’s (Ref) experiential learning theory model that is based on a four-stage learning cycle as: Concrete Experience (CE), Reflective Observation (RO), Abstract Conceptualization (AC) and Active Experimentation (AE), and the four type definition of learning styles: Diverging (CE/RO), Assimilating (AC/RO), Converging (AC/AE) and Accommodating (CE/AE) have been considered when developing the learning tool ChordATune. Further, cognitive constructivism emphasizes two key principles for teaching and learning: namely that learning is an interactive process, and that learning should be whole, authentic and real was taken into consideration to facilitate the best solution for learners. One of the main aims of this project is to make learning harmonization an interactive process where the learner is presented with the tool to experience varieties of harmonization for the same melody through changing the emotional factor, key and time signature. The direct experience of changing the harmonization and the ability to check out a variety of solutions allows better learning; it is made interactive and entertaining rather than an isolated learning activity.
These theories also assists educators to understand that meaning is constructed as learners interact in meaningful ways with the world around them. In concatenating this factor with the ChordATune proposed solution, the isolated skill and drill process through exercises are converted to a learner interactive process where the learner is engaged in meaningful activities in setting required parameters for the harmonization process. It also allows the learner to be authentic in the activity that makes the process interesting and meaningful, making the end result learner centered and encouraging.

One of the main goals of this research is to involve the user with the emotional factor when creating harmony, thereby letting the user experiment with different styles and varieties of chord progression when displaying the harmonized melody. This helps novice pianists to develop their creativity in song writing and music creation.
| Learning Functionalities | CE | AE | AC | RO |
|---|---|---|---|---|
| Creating Songs | ||||
| Virtual Piano | X | X | X | |
| Manuscript Editor | X | X | ||
| Generating Harmony | ||||
| Major/Minor Clustering (Effect of emotions) | X | X | ||
| Effect of genre | X | X | ||
| Effect of tempo | X | X | ||
| Effect of drum beats | X | X | ||
| Use of manuscript notation | X | X | ||
| Use of guitar tabular format | X | X | ||
Another goal of this project is for music learners to understand the notational format of music writing. ChordATune provides a virtual piano enabling the users to create their melodies using a piano, and it provides the manuscript notation for that newly created melody. Furthermore, ChordATune demonstrates how chord progressions are arranged and how it can be displayed in guitar tabular format enabling music learners to concentrate on music theoretically as well as practically.
Saturday, June 12, 2010
Why Harmonization ? - Importance of harmonizing a melody
One of the biggest problem in song writing or piano playing (o creating your own music) is the problem of harmonization. In this blog I discuss why harmonization is crucial (getting the right chords to the right notes) and how we can overcome this problem using and interactive tool called ChordATune.
Power of harmonization
Play Melody
Play Harmonized Melody
Music is made out of melody and harmony. Melody is the basic tune of a song (which we can easily hum o we can just guess the notes using a keyboard). Harmony on the other hand is the accompaniments to a melody (base chords, drumbeats ect) which makes your song complete. Harmonization is a crucial part in song writing o piano playing because only by harmonization you can make your melody rich and power and also add emotions and color to your song. However, many people face the problem of harmonizing because you need extensive knowledge in music, years of training and practice and also some musicality in you to harmonize a song accurately.
This is where the ChordATune comes in handy... ChordATune is a powerful harmonization tool. Not only just harmonization, you can also create your own melodies the way you want (using a virtual piano or manuscript editor) and make it complete by harmonization. ChordATune let user have variety of harmonies according users emotions and styles and also provide drum beats to make your song have a rocking beat!!.ChordATune output the harmonize melody in manuscript and midi formats. ChordATune also provides a feature of guitar players where they can get guitar chords in guitar tabular format for an any given tune.
Now you can create your own music the way you want and also ChordATune provides a mechanism to save your creations in MIDI format so that you can use ur music for many other activities in your digital life.
Thursday, May 20, 2010
ChordATune - A Solution for Song writing and piano music harmonization
ChordATune is an emotion based melody/tune harmonizer focusing on piano music. One of the biggest problem in song writing or piano playing is the problem of harmonization. Most people know how to write beautiful songs o play creative tunes but they find its hard to accompany their tune with the adequate chords. This problem is addressed by ChordATune which gives you the chance to accompany your melody with chords according to your emotions, styles drum beats and tempo.
ChordATune features
- Create your own melodies using a virtual piano/ a manuscript editor.
- Generate harmony according to emotions interactively (If you don't like the harmony u can always change the emotional factor o the genre and get a complete different set of chords).
- Add Drum beats to your melody
- Arrange harmony according to the genre (user preferred style ie Disco, Rhumba, Swing, March, Rock).
- Change the tempo.
- Display guitar tabular format (guitar chords ) for a tune.
- Generate manuscript notation to your harmony/melody
- Save MIDI files/Manuscript files in PDF format
- Play Stop Print functionality
http://www.youtube.com/watch?v=I3ZeizWDnOc
In case if you are interested in the technical background ...
ChordATune uses machine learning technology to generate the most suitable chords for a given melody... it can be called as an interactive AI system where the AI properties are created dynamically at run time according to the user input. This uses Hidden Markov Model which is a statistical mathematical model to generate the chord progression. Further, ChordATune is based of Music Technology, MIDI processing, Dynamic Programming, Multi Processing and Automatic Music Composition. Around 300 lead sheets are used to train ChordATune using heuristic and data driven approaches.






















