Experimenting with Carnatic Music Gamakas using MIDI


Welcome! This site contains a Java Applet (i.e. a Java program that will run inside your browser), which allows you to experiment with carnatic music gamakas by modeling them as pitch contours (curves) and associated volume contours. The applet then lets you immediately test your gamakas by synthesizing them using the MIDI synthesizer on your computer.

Click here to start using the program. If you prefer, you may launch it in a separate window, so that you can refer to the usage instructions below as you play with the program.

Author Information: You can find information about me, Arun Kumar, the author of this program here (my current "official" but outdated website).

Important Note/Disclaimer: This is an experimental program in many ways. I do not guarantee any robustness at this point - in other words do not be surprised if you run into bugs. Please let me know if you like the program (or if you run into bugs). If you have had good success modeling realistic gamakas, please let me know too!


The Java applet obviously requires Java (version 1.4.2). If you are running a recent enough version of your browser, it should automatically prompt you for installation of the appropriate Java runtime if necessary.

The applet also needs access to the MIDI synthesizer on your computer. If you are running on a PC, this should rarely something you need to explicitly know about - it should just work.


The program allows you to create gamakas (the program refers to them as contours), assign a name for them and group them under groups. You can also create your own groups. The left hand side of the display shows a hierarchical view of all the groups and the contours under them. By default, a group called Default is created with a contour named Contour1 is created for you. The right hand side of the display shows a graph area where you will draw the pitch contour and volume contour for your gamaka (contour).

You can start using the program by clicking on Contour1 to select it, adjusting the pitch range for the gamaka (Lo and Hi settings) if necessary, and then adding points for the pitch contour by clicking on the graph area. The program will draw the pitch curve as you add points. When you are done adding points, you can then click on the Synth button to synthesize the gamaka. You can adjust the tempo by increasing or decreasing the PPQ setting and/or the Len setting (see below for valid values for the Len setting).

Creating Gamakas (Contours)

For any gamaka/contour you create, you need to specify the following:

Advanced Settings - Prefix and Suffix

So you have created a couple of contours and you have tested them. But you want to test them in "proper contexts". For example, suppose you create a gamaka-laden "ri" for say mOhanam and want to see how it sounds if it is rendered as in "sa ri ga" as part of a standard arOhana of mOhanam. This is where the Prefix and Suffix settings comes in. They allows you to type in a sequence of swaras and/or contours to be played before and/or after your gamaka. For our example, the "sa" would go in the Prefix and the "ga" in Suffix. But you cannot type in "sa" and "ga", there is a language involved. For the Prefix and Suffix you can specify a sequence (separated by spaces) of one of the following forms:

flat swaras Examples
flat swaras with specific length Examples
R2q suddha rishabam - quarter note
D2h chatusruthi rishabam - half note
P`w mandra sthayi panchamam - whole note
contour contour name enclosed between a pair of percentage signs (%)
%Contour1%A contour named "Contour1" (use previous swara's duration or quarter note if no previous swara)
%mohanam_da%h A contour named "mohanam_da" half note long.
Continuous swara Any of the above followed by a dash. For example, S- R- %Contour1%q-

This will ask the synthesizer to play that note and the succeeding note continuously without any discrete break (as in MIDI note-off followed by a note-on), bending the pitch as appropriate to transition from the first note to the next note.

This can result in better synthesis of carnatic music where notes are almost always chained together (unlike western music where notes are mostly discrete)

Pause R stands for pause/rest. Examples
R Rest - use previous swara's duration or quarter note if no previous swara)
Rq quarter note rest

Here are some examples of the sequences you may enter in the Prefix and Suffix methods:

	S R2 %myga% %myma%h 
R2 G3- %myma% Rq- Ph

Saving the synthesis of your contour as MIDI file

You can save the synthesis of any contour as a MIDI file by clicking on the Save current contour as MIDI file button.

Advanced Settings - Saving to your computer, and importing it back

The applet also allows you to save away all your precious work to your computer and later "import" them. Click on the Save to your Computer button below and save the file anywhere on your computer. Do not worry, the data is text (although may look like gibberish) and not binary, and cannot harm your computer. Note that if you do not do it, then if you quit your browser or visit some other site and the revisit your site, your previous information will all be lost!

You can import previously saved information from your computer by clicking on Import from your computer button.