Midi and Carnatic Music

A few midi files available on the web for carnatic music have straight notes without gamakams. I have seen a midi file of raag Bhup with improper gamakams. It has been presumed that proper gamakam production is not possible for carnatic midi. I have succeeded in producing midi files for Carnatic Music with natural gamakams. Listen to these two files containing phrases of Kaanada and Kalyaani. You may notice slight lack of continuity in some places. These 2 midi files can be further refined but the refined files may not play in all PC's (see later).

As everyone knows midi files (extension .mid) tend to be far smaller than .wav files because they do not contain digitised samples of sound but only data required to produce music, such as which note is to be played, how long it is to be played and which instrument is to be used. Midi existed in synthesizers long before PC's were in use. The midi driver that comes with the sound card and the card itself have the necessary information to generate the tones of different instruments and the software creates the music on the fly. (In fact this was the principle used in Rasika and Gaayaka to produce carnatic music but the instruments were defined in the software.) With a midi editing software it is possible to quickly change the instrument in a midi file and listen to the same piece of music in different instruments, in different tempos etc.

One essential problem in producing a midi file for carnatic music is that the music is phrase oriented in which a number of notes are linked together without break and often the movement from note to note is not sharp but smooth. The midi protocol has a 'portamento' message for this purpose, which however is not supported by most sound cards. The midi protocol also provides for 'pitch bend' or 'pitch wheel' enabling the pitch of a note to be changed smoothly. Thus a phrase like 'Sa ni da ni paa' can be produced by midi starting with the pitch of Sa and reducing it to the pitches of the notes required and with the required timing. Unfortunately, the standard default range of pitch variation is plus or minus two semitones i.e. you can start with sa (C) and raise it upto ri2 (white note next to C on the key board) or reduce it to nI1 (the black note below the white note below C). This gives a total range of 4 semitones and the phrase given above would not be possible,but a phrase like 'ri gaa ma ri' in raagam Kaanada would be possible. This is a severe limitation - for instance it is not possible to faithfully produce the phrase 'pa da pa Sa' in Begada. The phrase has to be broken into 2 phrases each moving within 2 semitones and this will introduce an artificial discontinuity.

The Midi protocol also provides a way to alter the pitch range available (pitch bend sensitivity). With this the range of pitch variation can be increased and phrases moveing over a large range of pitch can be reproduced faithfully. Unfortunately this does not appear to work with all sound cards or drivers. In my own PC with a Yamaha OPL3-SA card, one of the drivers (Midi for Yamaha OPL3-SA SoftSynth) supports the change of pitch bend sensitivity, while the other driver (OPL3-SA FM Synthesizer) does not.

Here are some midi files which use the pitch bend sensitivity command. They may not play correctly (in fact it will sound awful!) in some PC's or with some drivers. Atana, Varaali

The change of pitch bend range is achieved using the messages Controller numbers 100 & 101 (Registered Parameter Number, LSB & MSB), in conjunction with Controller numbers 6 & 38 (Data Entry, MSB & LSB), 96 (Data Increment). However, there seems to be no way for a program to find out whether a particular sound card or driver supports these messages. There is a general API function to find the capabilities of the midi device (MidiOutDevCaps) but this does not cover the pitch bend sensitivity. Can any one who visits this page help me with information on how to query the midi device to find out whether it supports pitch bend sensitivity change using the RPN messages?