I want to create a program that will write Indian classical music notation from Midi, but not able decide which representation method is best. One I know is Bhatkhande notation. I want one which is widely used and understand by people.
There is really no answer to this. It's a choice. What notation would be "widely used and understand by people"? If you're thinking SMN, this is western and Indian music may not map properly to this notation. You have an opportunity to educate people on the Bhatkhande.
For reference here is some comments on Standard Music Notation (SMN).
In western music we have a 7 note scale (without octave) that is written on staves with 5 lines and 4 spaces. We have three clefs G, C and F for difference pitch ranges. Notes are placed on the line or space to indicate what note to play. The note is a dot or circle. Other decorations on the note, stick, flag, dots etc, indicate how long to play a note (i.e. time).
This is a very common notation across the globe but it is Western European. I cannot say how many Indian musicians have inquired on how to map their music in SMN. This may or may not work. I believe that Indian music sometimes uses quarter steps, a smaller change in pitch than encountered in Western music, and there is no standard way to indicate this.
I have written software to create synthetic sounds and musical scores, and mapped them to vectors or arrays in computer language so I can kind of understand what you want to do. Western SMN is very "discrete" on the surface, very regimented. Perhaps this relates to Western European culture. So it is fairly easy to map a score in SMN into computer language and commands. We express "feeling" in the score in a number of ways. One is with commands to speed up, slow down, play at different volumes, etc. We also use emotional words to tell the player what feeling we want expressed.
One reason for this is that Western Music tends to be orchestrated with many players performing in sync and with harmonization (multiple voices at the same time). My understanding of most of Indian music is that it is mostly improvisational. I've attended many concerts, Usted Alla Rakha, Zakir Hussain, Ravi Shenkar, etc, etc. There is usually a solo melodic instrument like Sitar or Sarod, and a solo percussion. The rest are just drones to create some resonance tones. With this in mind it may not be easy to create a program that replicates a complete solo (if that is a desire of yours). However, if all you want to is get the basic Raga structure and generate documents based on that you should be able to do this.
I would try not to squeeze your music into the Major scale. Rather, figure our the basic templates used in your music, the scales, number of independent tones in each, rhythmic rudiments, etc. And map each to an index or some other data. Your Indian scale vector may have more or less entries than the Western scale vector and that's okay.
SwaraNotebook is a web based Hindustani music notation editor that is backed by open source libraries.
Sargam-spec is an open specification for notating a classical composition, and it support ornamental note forms such as meends and Kan swaras. Notations can be encoded in edn or JSON.
The Bhatkhande notation project in a music engraving engine that can display compositions encoded in Sargam-spec format. This is a single page app written in ClojureScript.