1

(0 replies, posted in News)

Oct 25, 2009!  Due to an unfortunate lack of community interest in this project, I'm going to have to shelve it, and focus on other things. 

The site will remain operational, as a webapp running as a virtual server on one of my hosts, but I'm afraid I'm not planning to take this much further until and unless someone else is willing to dive into this with me.

If you, as a developer, is interested in working on this with me (or by yourself if you prefer), I think the next most exciting and challenging project is the integration of TIMIDITY, to generate MIDI files for compilation into wavs is probably the next biggest step.  Currently, we generate an input file for Jim Jackson's SIGGEN tools and create wave files using his tones program, finally exporting wavs into mp3s via sox and lame. 

I agree with his advise that TIMIDITY integration is the most appropriate next direction for this project.  I am willing to work with you on this if you are interested.  Just let me know.

You can reach me at srinivasa@carnatic-composer.com.

Cheers.

SI

Since we launched the samples page at http://carnatic-composer.com/submissions.php that serves as a more authoritative and easier to access repository of recent submissions.  It has links to the project file, the Mp3 and a link to stream it directly into a player embedded in your browser.

There continue to be a couple of songs here that have not been migrated to the list, but for the most part, the samples page ought to be the one you're probably after.

Click: http://carnatic-composer.com/submissions.php

SI

This is a major release - We've been at it for almost two whole weekends now.  Here's a list of the salient features in this release:

  1. Unified project and mp3 keys.  There is only one externally visible key to identify projects and their stitched MP3 files where necessary.

  2. NEW - A stitch queue.  When you submit a stitch job, your job is enqueued and submitted to one of our servers in the server farm.  Your command returns immediately with a link that will either tell you the current status of your job, or delivers the Mp3.

  3. Reformatted widths for columns in submissions page (Obviously, there is scope for improvement here.  But we've decided that the eye-candy can wait until later.)

  4. Ability to submit your project and mp3 for publication on our site (detects authorship before offering to publish)

- SI

This release is a minor one.  We are pleased to make a new instrument available (Horn), even as we work out the details of better harmonics/envelopes for existing and new instruments.  Meanwhile, we have also capped the top octave at 5 instead of 6 - so the total number of downloaded notes to your PC on the home page is kept more or less the same, despite the additional instrument.

We continue to work on some of the cooler features.  Watch this space!

SI

The one major feature introduced this week makes it immensely easier for users to share their projects and mp3s.  Click on the Samples link (http://carnatic-composer.com/submissions.php) on the main page, and you will be taken to a "live" list of recent project submissions.  Even better, every time you successfully stitch an mp3, you will be offered an opportunity to list your project on the recent submissions page.

Advancing in the product pipeline are these other much requested features (among many other issues that will take place quietly in the background without immediate visibility):

  • A tracking display that highlights the in-text note currently being played in audio

  • A stitch queue to better schedule stitch jobs that are being submitted with increasing frequency!  We will likely enqueue your stitch request and provide a URL to get an update on the status of your MP3.  At present we only have 2 servers to dedicate to stitching, but we will scale out if the demand exists - we're built for it.

  • Improve sound quality - remove the bacground clicks in particular.  We now know the cause of the problem, and will move towards addressing it.

  • Add new instruments

  • Improve harmonics and envelope for existing instruments.

  • Automatic send of stitched mp3 to mobile device (ringtone) on request

  • Ability to login and edit details of your project on the Projects list page

Of course, you're welcome to complain to us if you think any item on this list has been dormant for too long in your opinion.

Best wishes,

SI

Here are links to the first few pages that walk you through the very basic steps of the Carnatic Composer interface.
Note that many of the features have now advanced substantially since these tutorials were written.  However, they remain backward compatible, and these lessons still form a good starting point.

  1. Lesson One: (http://carnatic-composer.com/index.php? … 299c1c9c4c).  Simple transcription

  2. Lesson Two: (http://carnatic-composer.com/index.php? … af09a8c30f).  Pauses, note lengthening, etc.

  3. Lesson Three: (http://carnatic-composer.com/index.php? … 71a1f58ff0).  Octave control

  4. Lesson Four: (http://carnatic-composer.com/index.php? … cb28928553).  Interpreter directives

  5. Lesson Five: (http://carnatic-composer.com/index.php? … cb28928553).  Interpreter directives

  6. Lesson Six: (http://carnatic-composer.com/index.php? … 5cd8952502).  Saving your project

  7. Lesson Seven: (http://carnatic-composer.com/index.php? … a2863ada67).  Working with more than one track

  8. Lesson Eight: (http://carnatic-composer.com/index.php? … cd86ff96c9).  Making MP3s

- SI

7

(0 replies, posted in Documentation)

I will shortly move this into a page of its own, but meanwhile, better acknowledge here than nowhere I guess. 

  • Anand and Mathangi (http://pandamatak.com) - Thank you for letting me host carnatic-composer.com on your server.  Anand - Thanks especially for the idea, walking me through some of the intricacies of Carnatic Music, for the code that implements your raga selection algorithm and not the least for your cool mouse-over help icon! 

  • Smt. Bhagyalakshmi Rajagopal, our guru and the primary source of inspiration behind the revival of this project in the first place.

  • Scott Schiller (http://schillmania.com) - Scott, your soundmanager2 interface was really a lifesaver.  It's been with me since day 1 of this project and I can still see no really cross-browser way of getting sound to work other than soundmanger.  Also thanks for being so responsive in helping out with my questions as the project took initial shape (http://www.schillmania.com/projects/soundmanager2/)

  • Jim Jackson at Leeds (http://www.comp.leeds.ac.uk/jj/linux/siggen.html) Indebted to your signal generation tools, especially the tones program that too has been with us since day-1.  Thanks for answering all my potentially irrelevant questions and immensely useful advice all along.

  • Tom Hermansson Snickars (http://carpe.ambiprospect.com/) - JS slider control

  • Alessandro Fulciniti (http://pro.html.it).  Cool tooltips.

  • Mike Foster (http://cross-browser.com) - Mike, Anand pointed me at your site, probably too late for me to use any of your excellent JS library, but I was able to use your JS compressor.  Thanks!

Other than routine bug-fixes, this release provides the following much requested features:

  1. A Stop button.  Yay! 

  2. Ability to play and stitch selected portions only (not the whole project or track)

  3. Automatic intelligent typo correction in the back-end transparently

  4. Intelligent Octave Transitions.  When you are near an octave boundary, you don't have to explicitly mark movement into the next octave.  The system will automatically do it for you. 

  5. Going hand-in-hand with the previous feature is the new phrase marker ";" that automatically resets to the default octave no matter which octave you're at.

  6. JS is now compressed before being served.  Thanks Anand for pointing me at cross-browser.com

  7. Inline control of Raga, Octave and Beat Length using (Raga:XXX), (Octave:NNN) and (Length:NNN) directives.  Note the sysem is backward compatible and still accepts ?raga=XXX.

  8.   MP3s encoded with ID3 tags

Enjoy!

SI

I'll move these to a better location and form (table) shortly:

/* Mandhara Dhara Re, in Kamboji, Adi
* Ganamrudha Bodhini, Geetham 9, P. 32
* Entered by Srinivasa Aiyar
* http://carnatic-composer.com/index.php? … 47dded1ae7
* http://carnatic-composer.com/mp3.php?k= … 5f04641bde
*/

/* Ninnu kori, Mohanam, Adi
* Varnamanjari, p. 17
* Entered by Srinivasa Aiyar
* http://carnatic-composer.com/index.php? … 3d37f3b891
* http://carnatic-composer.com/mp3.php?k= … 09cf553b05
*/

/* Evari Bodhana, Abhogi, Adi
* Varnamanjari, p.13
* Entered by Srinivsa Iyer
* Project: http://carnatic-composer.com/index.php? … 1cee8f74ea
* MP3: http://carnatic-composer.com/mp3.php?k= … 27c9ecf1cf
*/

/* Title: Ninnukori yunnara in Vasantha, Adi
* Source: Varnamanjari, p.6
* Entered: Srinivasa Aiyar (There seems to be an error in transcription of this...)
* Project: http://carnatic-composer.com/index.php? … 48fd011c8c
* MP3: http://carnatic-composer.com/mp3.php?k= … 6f55f8ceb5
*/

/* Sarasuda ninne kori in Saveri, Adi - Varnamanjari, p. 4
* Entered by Srinivasa Aiyar
* Project URL: http://carnatic-composer.com/index.php? … 5d28face64
* MP3 URL: http://carnatic-composer.com/mp3.php?k= … 338a701903
*/

/* Sarasijanabha, Mayamalavagowla, Adi
* Varnamanjari, p.3
* Entered by Srinivasa Iyer.
* Project at: http://carnatic-composer.com/index.php? … f3e7cb2475
* MP3 http://carnatic-composer.com/mp3.php?k= … f5172939c0
*/

Arabhi, Thisra Jathi Triputa Thalam:

Re re Sree - http://carnatic-composer.com/index.php? … 7823e3b7a3

SI

This release (SVN version 28) comprises many more suggested features.  Highlights are:

  1. Server Side Stitching.  You can save your song as an MP3 file and have it forwarded to your phone
         to use as a ring tone.  How cool is that?

  2. An 8-step tutorial to guide you on your way to becoming a Carnatic Cat!

  3. Progress messages while the sounds are still loading so as not to confuse.

  4. Various status and progress messages updating live

  5. It's still almost completely JS driven (with a minimal amount of Flash and Php for server-side work.  Yay!

Still to come however are some high-priority things:

  1. Play a text-selection. As pointed out by one of our younger members, it makes composing a lot easier if you can simply highlight some notes and play them.  My current work around is to compose in Notepad or emacs and copy paste the relevant bits I need to test.

  2. Quick-load: There should be a facility to quick load a song, without having to sit through the note downloads.  It's absolutely possible and is next on the list of things to do.

  3. Credits - I swear I will soon get around to listing every one of the really amazing people who have helped bring this about!

- SI

Now that the save-project feature has been added, here are clickable links to each of the projects we found posted to this forum earlier.

-SI

We took advantage of the President's day long weekend to release much-awaited new features and long-desired functionalities for CC.

This release also includes various bug-fixes.

  1. You can now save carnatic composition projects and forward bookmarkable links to your friends

  2. Inline control of Octaves and Ragas (you can set them from within the composition windows)

  3. Considerably refactored and cleaned-up code

  4. Bug fix (Microsoft IE compatibility)

  5. Bug fix (Firefox cleared an existing track's contents when a new track was added)

  6. A Clean-Slate link allows you to clear an existing project and start over

  7. A much better tutorial-like opening screen

The next item on the agenda is to improve the sound quality and to start thinking about note embellishments (Gamakas)

-SI

14

(0 replies, posted in Bugs)

I just checked - it seems copying and pasting notes from the Forums into the Track window will not play the notes in IE.  It works fine in Firefox with the latest Flash plugins, but fails miserably in IE.  The problem seems to be related to invisible Carriage Returns or Line Feeds at  the end of lines that are somehow interpreted as part of a word.  So if you ever have a comment in your notes and you end it using a */ at the very end of the line, the */ is not caught and the whole song from then on ends up being tossed.

The temporary solution to this is to insert a space at the end of each line so that no valid command is ever immediately followed by a carriage return.  Unfortunately, this means that you have to manually edit the ends of lines in parts that you copy and paste from the "Cool Melodies" section in the Forum.

Will someone please fix this issue - ought to be straightforward I think.

SI

/*

Here is the Youtube link to the film song: http://www.youtube.com/watch?v=E_6j2jnVt5k

One of my favorites - Jane Kahan, performed by Raj Kapoor in Mera Nam Joker.  The musical interlude seems to be in Kharaharapriya (uses Ni), but the rest of the song is very simply structured in its Janyam Sivaranjani.   It's worth experimenting to switch the Janaka Ragam to Shankarabaranam - Sivaranjani will then be transformed into Mohanam and it is remarkable the effect of modifying this single note (ga) has on the mood of the melody!

Here are the notes as best as I could transcribe - I have no doubt it can be done better!  The notes for "Mere Kadham" in particular seem different from the ones sung by Mukesh - His sounds better, but I'll have to listen more carefully and transcribe better next time.

By the way, I find it easiest to type the notes in Notepad or some other editor and cut and paste sections into CC, until I'm satisfied with the whole thing when I paste the whole song to check it out

*/

/* Use Raga Kharaharapriya -- This is very important */

/* Jane kahan gaye woh din */
sa ri g paaaaaa .. da > saaa ri gaaaaaaa --
r r gaaaaaaa r saaa < da pa p p daaaaaaa --
p d daaa p gaaa ri paaaa p paaaaaaa

----

/* Jane kahan gaye woh din */
sa ri ga paaa da > saaa ri gaaa --
r r gaaa r saaa < da paaa pa daaa --
p d daaa p gaaa ri paaa pa paaa --

/* Chahi ... */
sa ri ga paaa  da > saaa ri gaaa --
r r gaaa r saaa < da paaa pa daaa --
p d daaa p gaaa ri paaa pa paaa ----


/* Musical interlude - Kharaharapriya */

< sa r g r s gaaaaa r s r p riiii --
> sa r g r s gaaaaa r s r p riiii --

< pa d n d p niiiii d p da > saaaa  --
  pa d n d p niiiii d p da > saaaa  --
<

--

/* Mere kadham */
pa paaa p daaaa da > saaa sa saaaaa --
r r riii r ri riii r g gaaa g gaaaa --

pa paaa p pa gaaa g ga riii r saaaa --
sa saaa < d > s < d paaa p d p gaaa r saaaaa ----

/* sa < daaa d da paaa p pa gaaa r saaaa ---- */

/* Jane kahan gaye woh din */
sa ri ga paaa da > saaa ri gaaa --
r r gaaa r saaa < da paaa pa daaa --
p d daaa p gaaa ri paaa pa paaa --

/* Chahi ... */
sa ri ga paaa  da > saaa ri gaaa --
r r gaaa r saaa < da paaa pa daaa --
p d daaa p gaaa ri paaa pa paaa ----

16

(4 replies, posted in Wish List)

We've had a chance to address some of the issues listed earlier.  Here are the ones that are still open

  1. DONE - Reskin the WebApp.  No argument here.  It's yucky.

  2. Multiple voices to choose from (not just the attenuated beep I have now)

  3. DONE BUT... - Multiple tracks that can be assembled independently (can add and subtract tracks in the app)

  4. Some way to encode Talas or write the notes in a way that depicts the tala

  5. DONE - Slider bar for adjusting the note durations dynamically, instead of the currently unsighly text-input area

  6. DONE - Adaptation to allow western solfa notation in addition to the raga schemes

  7. NEVERDONE - Some decent documentation on the grammar for specifying a song

  8. Server side assembly and delivery of a higher quality mp3 stiched together more professionally using Linux tools

  9. Adapt the WebApp for OpenSocial to release on Orkut!

  10. Of course, the hardest problem of all - How does one mark notes for embellishment? And how does one tweak audio for gamakas of various kinds?

  11. As the article in the documentation section of this forum describes all too lucidly :-), the notes in the text-area of the WebApp are currently compiled into an array of playable Sound IDs that are popped off one by one by a JS timer controlled function to play them.  However, there is no reason these notes cannot also be compiled in real time from the text at play-time.  If we made this simple change, then it would allow for the raga to also be changed while a song is being played.

The app has been reskinned (v0.1) and a number of issues addressed earlier have been fixed.  Read the follow up to the first Wishlist article to see what issues are still open.

SI

18

(0 replies, posted in Documentation)

I want to keep the joining effort fairly low.  To join, just send me email (srinivasa@carnatic-composer.com or srinivasa.aiyar at gmail), including a very brief note about yourself and why you're interested.  I'll set you up with a developer's account soon after that so you can login and start contributing.

19

(0 replies, posted in Bugs)

When playing multiple tracks, if a certain note in one track plays earlier in another track, the later note is prematurely stopped when the earlier note is attenuated and stopped.  I think this issue is because the notes are identified by unique names in notes.js, and the command to attenuate/stop notes works regardless of which track the note is in.  Perhaps the way to fix this is to somehow identify the same note in multiple tracks differently?

SA

Here is a brief high-level overview of the technical architecture.  It's really simple and so it shouldn't take too many words to describe. All code is version-controlled by SVN.  Once you register as a developing community member, you will have full access to the code repository.

The WebApp is driven almost entirely by JavaScript. The sole exception is the use of Scott Schiller's Flash plugin to play actual sounds.  If anybody has a better solution that is more cross-browser than this, I am happy to hear it.  In the meanwhile, it would be good to figure out how to incorporate multiple voices (as in different instruments), get notes to sound better, with less tacky audio.

I won't be describing 3rd party JS components here, namely, the slider bar (slider.js), mouse-over bubble help (tooltips.js), or Scott Schiller's soundmanager JS, for which there is already excellent documentation at his site.

The only remaining JS files are (control.js, carnatic.js and notes.js) and so I'll say a few words about them below.  Hopefully the programs are sufficiently self-documenting and easy enough to read that they make sense on your first perusal.  If not, I'm always here to answer questions about them.

Scale Selection:  See the paper (http://citeseerx.ist.psu.edu/viewdoc/su … .1.18.9659) cited in carnatic.js for the algorithm used to derive the notes from the Raga name.  It's implemented in a fairly straightforward way in the setScale(ragaNumber) function in carnatic.js.  The onChange() method of the raga selection drop-down is tied to the scale changing function setRaga().  The initial idea is that the scale will be global and chosen once for all of the tracks.  This will set the values of piano key notes attached to each of the 7 notes Sa through Ni. 

After much deliberation, I decided that the best way to get the notes to play was to generate sounds under Linux in the back-end using the open-source "tone" program and store them as individual mp3 files.  You can find all these tones in the directory (http://carnatic-composer.com/notes/) along with the Linux shell script (make-notes) that I used to generate them. As you can see, the JS file notes.js pre-loads all of these mp3s and assigns them soundManager identifiers that we will invoke during play-time.  A subtlety here is that the tone program simply generates raw beeps (sinusoids) for us.  When I play the notes, I decided to progressively attenuate the sound to 0 dB using a series of JS setTimeouts(), which makes the beep sound less harsh, and more like a bell.  Interestingly, this effect was a purely unintended by-product of my as yet unsuccessful attempt to fix the clicking sound when a note was stopped.  I mistakenly assumed it to be caused by the hard truncation of the sinusoid and hence attempted to attenuate the wave before trunctation.  But alas, that was not the case, the awful click remains, but the pleasant morph to bell-like quality was born :-)

When the "Play All Tracks" button is clicked, the function "ProcessAllTracks()" is called.  This will simply iterate through the div element labeled "tracks", sequentially process each of the nested divs within it that have a text-area labeled "notes".  The processing of any one such track involves the parsing of the contents, and identifying individual notes to be played from it in sequence, along with their durations.  Each such note is entered into a vector of notes, which itself is stored in a global array of vectors called NotesByTrack[].

At play time, the program iterates through all of the vectors stored in NotesByTrack[], and plays each note in each track, setting a timeout for the next note in sequence to start playing just as the current note finishes.

Before I install Bugzilla, let me make a note of a Bug right here :-)

When I add a new track, the content of existing tracks vanishes. I'm sure it's something simple.  Does somebody have any good ideas on how to fix this?

SA

/* Use Dhirashankarabharanam (which is the Janaka ragam from Bilahari */


/* Raravenu Go-o-pala */
sa,, ri ga, pa, da, > sa, < ni, da,
pa, da pa ma ga ri sa ri sa < ni da > sa,,, --

/* Raravenu Go-o-pala */
sa,, ri ga, pa, da, > sa, < ni, da,
pa, da pa ma ga ri sa ri sa < ni da > sa,,, --

sa,, ri ga, pa, ma,, ga pa, da,
> ri,, sa < ni, da, pa,, ma ga, ri,

/* Raravenu Go-o-pala */
sa,, ri ga, pa, da, > sa, < ni, da,
pa, da pa ma ga ri sa ri sa < ni da > sa,,, --

/* Charanam 1 */
sa,, ri ga, ga, ga,,,,, ri ga
pa,, pa pa, pa, pa,,,,, da pa

> sa,, sa sa, sa, ga ri sa < ni ni da pa,
pa da pa ma ga ri ri, ga pa ma ga ri sa ri ga

/* Raravenu Go-o-pala */
sa,, ri ga, pa, da, > sa, < ni, da,
pa, da pa ma ga ri sa ri sa < ni da > sa,,, --

/* Charanam 2 */
pa pa pa, ri ri ri, ga pa ma ga ga,,,
ga pa ma ga ma ga ri sa ri ga ri sa sa,,,

ri sa < ni da > sa,,, ma ga ri ga pa,,,
da pa da > ri sa,,, ri sa < ni da pa ma ga ri

/* Raravenu Go-o-pala */
sa,, ri ga, pa, da, > sa, < ni, da,
pa, da pa ma ga ri sa ri sa < ni da > sa,,, --

/* Charanam 3 */
ma,,, ma ga ri ga da,,, ma ga ri ga
pa,,, ma ga ri ga pa, pa, pa,,,

> ga,,, ri sa < ni da > ri,,, ri sa < ni da
> sa,,, ri sa < ni da > sa, sa, sa,,, <

> ga, ri sa ri, ri, ri,,, ri, sa < ni
da, da, da,,, pa, ma ga ga, ga,

ga,,, sa ri ga da pa,,, > ri sa ri ga <
> sa,,, ga ri sa < ni da pa ma ri sa ri ga

/* Raravenu Go-o-pala */
sa,, ri ga, pa, da, > sa, < ni, da,
pa, da pa ma ga ri sa ri sa < ni da > sa,,, --

/* Mandhara Dhara re */
> sa,,, < ni, pa, da, da, > sa,,, <
da, > sa, ri, ga, ma, ga, ga, ri, <

> sa, ri, sa, sa, < ni, ni, da, pa,
da, da, pa, ma, ga, ma, pa,,,

ga, pa, da, > sa, < ni, ni, da, pa,
da, da, pa, pa, ma, ga, ri, sa,


ga, pa, pa, da, da, > sa, sa, ri,
ri, pa, ma, ga, ri, ga, ri, sa, <

> sa, ri, sa, sa, < ni, ni, da, pa,
da, da, pa, ma, ga, ma, pa,,,

ga, pa, da, > sa, < ni, ni, da, pa,
da, da, pa, pa, ma, ga, ri, sa,


/* Mandhara Dhara re */
> sa,,, < ni, pa, da, da, > sa,,, <
da, > sa, ri, ga, ma, ga, ga, ri, <

> sa, ri, sa, sa, < ni, ni, da, pa,
da, da, pa, ma, ga, ma, pa,,,

ga, pa, da, > sa, < ni, ni, da, pa,
da, da, pa, pa, ma, ga, ri, sa,

The overarching goal is to keep the interface as simple as possible, so you can enter your first song with minimal coaching and listen to it in short order.  Here are the steps to enter a song and play it.

  1. Make sure you have at least one Track input window showing.  If not, click "Add a track"

  2. Enter notes using standard Carnatic notation with English transcription.  E.g. S plays the note Sa in the 4th octave. 

  3. To make a note last twice as long, simply elongate the word using any characters.  However, I recommend the convention that you repeat the letter that completes the note as many times as you need.  E.g. Saaa plays twice as long as Sa, which plays twice as long as S.

  4. A pause is denoted by one or more dashes.  Pauses can be elongated in the same way as a note can.

  5. To move to the next higher octave, use >.  To move to the  next lower octave, use <.  In either case you may likewise lengthen these words to jump multiple octaves too.  E.g. << shifts two octaves below the current one.  Ensure you have spaces around the octave control word.  For example, remember to not accidentally specify ">Sa" instead of "> Sa".

  6. You can annotate your notes by using C-style comments.  Anything between the special character sequences /* and */ will not be interpreted or played by the system.

  7. That's it.  Click "Play all Tracks" and hear your melody.  You can fiddle with the note duration using the slider dynamically, switch ragas to listen to your melody in different scales, etc.

  8. Well, that should get you up and running.  The rest is for you to experiment, discover, and if we're lucky, to implement!

  9. In the near future, I hope we can make the notes sound less clunky, and introduce embellishments and gamakas.  E.g. I'm thinking that we could augment the grammar so that ~Ga would play a version of Ga that is embellished in a particular way.

  10. Enjoy

PS.  Oh, BTW, you can denote a specific Piano note to play by transcribing it with the following grammar - :<NoteName><Octave>:<Length>.  For example, ":C3:2" denotes a C in the 3rd octave played for 2 units of time, and ":D#4:5" denotes a D# in the 4th octave played for 5 units of time.

In 1988, before I left India for grad school, I had, using Microsoft C, written a PC software package called "The Composer's Apprentice" and "The Digital Musician".  Together, the programs allowed users to write music in standard carnatic notation copied from text books such as the classics "Ganamrtha Bodhini" and "Varna Manjari" directly into a PC text file, that the software would compile and play using a series of beeps on the PC speaker. 

I gradually adapted the package to visually depict the note being played using a piano, and added various control structures to the specification grammar such as looping and calls, similar to that in a programming language.  I guess the program must have had some value, because Madras Doordarshan's Ilanthendral program picked up on it and decided to interview me on air.  I received a number of enquiries from interested users soon after my 15 minutes of fame on television.  But alas, in my total naivette, I built various copy-protection techniques into the software to the point at which it became practically unusable by anyone except myself and as a consequence it died a swift death soon thereafter.

But I had always wanted to revive some form of the software.  Although it was quite difficult to get the system to play Gamakas or embellish notes in other ways, I had hoped that it would someday become possible to do it.  But Grad school intervened, and a day-job soon after, and I had forgotten all about this program while I did exciting CS work at Stanford Research.  A few weeks ago, just before the holidays, the prospect of such a program came up in casual conversations with my friends over dinner and this brought back old memories.

I searched the net for some such program that would be available for free, but found none (I did find some packages you could buy...)   I wanted a pure WebApp, I wanted it to be free, I wanted it to be open-source so the community could contribute, both to develop the software as well as compose melodies, and most of all, I wanted it to be simple and cross-browser compatible.

None matched the specs I desired, but I did find various bits and pieces online that I could use to put together the basic framework of such an app.  In particular, I discovered Scott Schiller's free JavaScript API (http://www.schillmania.com/projects/soundmanager/) for playing notes via a browser that seemed to be the best solution for a cross-browser application, and I found a number of JS components I could readily tie into the WeApp.  And so I spent a couple of days tinkering with the shell of this application, whose basic architecture I describe in the next article.

However, I'm not a professional JavaScript programmer.  I realize that much of what I've done here can be done much more professionally, efficiently and elegantly.  Fortunately I realize this.  While I do have a vision of what might make for a good WebApp for Carnatic music composition, my vision is flexible and open to suggestions from the Community.  The software I have written is equally open.  And I offer my ready assistance to de-obfuscate anything I have done that doesn't lend itself to easy understanding.

I'm therefore making the Carnatic Composer system available in open-source to the community (with the usual disclaimers, of course) so that those of you who are better at each of the aspects of the system and the music than I, can take over and give us something useful and cool to play with.

I hope this project is as fun as it is interesting and useful.

Best regards

Srinivasa Iyer