Joren: Thanks for checking back in. Please do so often and participate.
I have been using Tarsos for the past week off and on to get familiar. I think it is going to be useful to me and others.
I very much like your no-frills style of writing the documentation!!
You asked for some feedback on whether it is useful for CM and any feature additions we can use. Let me write about that below.
Here is my first cut list of where it is starting to be useful to me personally.
1) One objective I have is for it to help me convert a piece of indian classical ( or film ) music to notes. It does not have to do it perfectly but just give me the approximate idea. I can pick it up from there. In addition to serving that purpose, I hope it will also increase my ability to convert a melody to notes myself,over time.
2) Gamakas are a tough and complex thing in CM. (Duh!) I will have to see how well the contour that Tarsos draws maps to the standard technique we use to produce the gamakas. The more I look into it, the more complex it becomes. I was exploring a 10 second violin piece by MSG ( Bagyasree raga I wrote about earlier ). The distance between just playing the notes and the actual effect of MSG's music is miles apart even in that 10 seconds of music. I need to add in little subtle things here and there to make it even come close to bringing his Bagyasree motif to life. I think Tarsos's annotation graph is going to help eventually. I first need to notate what effect a particular curvature produces. It is going to be an ongoing process.
3) As a third goal, I think it helps people check their note purity ( sruthi suddham ). Holding 'Sa' (C) or Ga ('E') constantly is itself a big task for amateurs. Mine was quite wavy, embarrassingly so. But at least I know now why my attempts at singing is so bad and what I need to do to improve. With some conscious practice I can bring the karvai notes more steady. I then checked some professionals and Tarsos annotation graph was quite straight and horizontal for them. So Tarsos can help in establishing the target goal from a sample of a professional/teacher and then folks can practice live until their graph matches the target. Believe me, it is not easy to keep Tarsos happy!!. Even if I can somehow get it to match for 5 seconds, it can deviate significantly unless one has good voice technique. For example, it is not just enough to have accurate note production at good lung air volume but one needs to keep it equally accurate as the amount of air in the lungs keeps getting less and less ( at the low end of the breathing cycle ). Tarsos catches and shows all those mistakes quite glaringly.
In terms of features, first some CM specific ones and then some general 'wouldn't be nice' requests. I am hitting you with a lot. Don't feel obligated. This is just for your consideration if and when you have time to add some enhancements.
CM specific wish list:
1) Label the Y axis with CM solfa syllables. You can do it by a simple rule. For example, if the user specifies S is '700 cents', then you label 800 as R1, 900 as R2, 1000 G2, 1100 etc. Here is the full mapping for this example.
( 700 S, 800 R1, 900 R2, 1000 G2, 1100 G3, 1200 M1, 1300 M2, 1400 P, 1500 D1, 1600 D2, 1700 N2, 1800 N3, 1900 S' 2000 R1' 2100 R2' etc. ) Different folks will have different cent values for S but the intervals are the same. The above mappings are only approximate for CM but that is good enough.
2) Optionally, It will be good if you can label the annotation graph itself with the solfa symbols when there is a steady note, or a region of oscillatory activity over a flat line but now I am getting greedy.
3) Optionally, on the horizontal scale, have the ability to mark off Rhythm cycles. The user can mark places on the X axis with some symbols for one cycle and then you can apply that same pattern to the right of that till the end of the song ( or a specified number of cycles ). At the minimum, marking the start of one cycle alone ( and the end of the cycle as a result ) can be very useful. The automatically drawn X axis markers will not be right since the musicians may not have the most perfect rhythmic timing. To accommodate that, as you do elsewhere in the program, provide a drag and adjust type of method for the user to adjust it.
If you have any questions on these, please feel free to ask.
General 'wouldn't be nice' kind of suggestions:
1) Save key strokes to get the annotations view. Currently, I have to first dislodge the annotations window, make it bigger, then hit the 'fit to screen' button before I get useful information from it. It will be good, if I can define the upper and lower bound for that window ahead of time ( or save a previous manually created setting ), so it shows only that range and in that size upon launch.
2) It will be useful to have a 'live' view of that annotation window. Meaning, if the graph reaches the end of the window and more music has passed, I need to hit that 'fit to screen' button for it to show the new data. It will be good if it scrolls automatically to the left.
3) I use that 'fit to window' button a lot but still its meaning is not clear since at times it does not behave quite what I thought it will. For example, if I zoomed in to a particular frequency band and if I hit that button, it sometimes shows a region where there is no data.
4) May be we need another button which is a simple refresh of that annotation window without changing the frequency scale but just move forward in the time dimension. This is useful when I have zoomed in to a portion and I want to keep it that way but look at what is to my right, on the time scale.
Even without any of the above features, Tarsos is a very useful program. Thanks Joren for all the hard work on this. I encourage others to give it a try and provide suggestions on how/where we can put it to good use.
Joren, If we find any bugs, where do you want us to send them to? Thanks.