 So, hi everyone. I'm Shri Hari. I work at Nelenso. It's a software cooperative based in Bangalore. That's my Twitter handle and that's Nelenso's Twitter handle. So, Abhinav and Ned and I forgot to mention yesterday that we are hiring. So there's that. So, let's go ahead and start the talk, I suppose. That's the title of the talk. Read it. So, what this talk is about is it's about modeling karnatic music in code, right? And it's about making machine sing karnatic music in a way that's sort of close to how I would sing it. So this is what we'll do throughout the talk, right? What we'll do is we'll start off with comparisons of me singing and the machine singing and throughout the talk we'll try to bridge the gap between these two things and we'll see how close we can get the machine to sing like me. What this is not about is generation. This is about synthesis as in developing the abstraction so that a machine can render music the way you'd want it. It's not about those record and neural networks or deep learning things. That are absolutely fascinating and some things that I want to get into and I'll put a path forward at some point during the talk. But it's not as much about generation as it is about synthesis. So, what do you think? Do you think we should listen to some machine karnatic music right away or should we do that later? Right away? Sure. So let's do that. So that's a sample of how it sounds right now. So let's go ahead and get the talk started. We'll see how we got there during the talk. So for the people who are uninitiated, karnatic music is South Indian classical music and it's important academically because it's sort of in the classic spectrum of things. And the reason why it sounds different is because of the presence of gamma-coms and what gamma-coms are and how they're modeled and stuff will go into depth during the talk because that's sort of vital in sort of modeling this thing. And how else it is different is that it's mostly a vocal tradition in that my teacher sings something to me and I repeat and there's not much that's documented in the process and it's mostly a method of rote learning. And other ways in which it's different is that it mostly revolves around compositions. In contrast to say the western music of today, we only have about say 10 new compositions every year or so and so most of the concerts as you'd see today are basically renditions of existing established compositions and these compositions are like thousands of them and they've been written centuries back. And in a typical concert like say 20-30% of the audience would already know the compositions that the artists are rendering. And during pockets of these concerts is where an artist can express their creativity in what is called manodharma. And we need not go into the details of these kind of things. I'm just letting you know so that you get an idea of what this is like. So why I do this is because it's sort of an amalgamation of two things that I sort of am mediocre and sort of nice at. So I sing, occasionally I perform, I do computers, I drive software for a living and when these two things that I do are sort of interesting come together it feels like I'm doing something that's way more interesting. And another thing that's interesting is that I'm working on something that's sort of still in the research phase. So I'm not innovating based on existing tools and things like that but actually reading white papers and looking at references of white papers and then following that trail all the way. And I have dreamy ambitions. What I want to do one day is sit at home and then say machine play me 30 minutes of Seshankaravana, which is a raga. And I play it according to my mood and then create some music and play it and I want to be able to do that someday. And I guess whatever I'm doing is like small steps in getting there. And even today I actually see a lot of potential applications of such a thing. For example, I only have say the notation for a certain rendition and I don't know how to sing it. Or I want to say how would a vena sound if it played this thing. Or like I'm not good at vena. Like I can make the machine play something and say do this for me. Or I can like say sing along with it and it won't get tired like my teacher. So that's a very practical set of things that I see even today. And it's also a weekend hobby. And then it's a way for me to fill my weekends with. And here is a graph of me doing things on the weekend, get up, come in, see the line at the bottom. There's just Saturday and Sunday moving up and down. So what I'll do during this talk is cover these four things. First thing I'll do is I'll give you a bit of an introduction of what are shruti, swarams and ragam. And I'll explain these to you with code. And I'll go into a demo. And the whole talk is more or less a demo, but that's sort of the first demo in there. And I'll go into gamma cum, because like I said before, they're critical to the synthesis. And I'll tell you how, what are the existing models of these gamma cum and what I've done. And I'll also put forward a path for what I see, the evolution of this thing could be. Let's go ahead and jump into the first thing, which is shruti, swarams and ragam. I'll just get some water. So shruti is basically what you can think of as pitch, right? Say I'm a singer and I'm male, right? So my pitch is say C. And that's what I call the tonic note. And say if there is a female singer and she has a slightly higher pitch, then her pitch would be say F or something. And whatever she sings will then be relative to that tonic note, right? So all the semitones and all the frequencies will then be relative to that tonic note you choose. And your tonic note itself could be one of the standard frequencies or they can be basically any single frequency and everything else is related to that. And once you have chosen a single tonal frequency, you have the same 12 semitones within a scale, right? And that's the same as you'd expect in any other kind of music as well. It's the same 0 to 11 12 semitones that you can see in the Madhya Stai sthanum. You guys are able to read this code, right? Right? Okay. So you can see that in the first column of the Madhya Stai sthanum, it's just a serigam up as any. And all this is written in closure, so that's like a plain closure map. And that just says the relative frequency to the tonic note. And you can see that each of Riga and Ma have like three variants or two variants and things like that. And a ragam then becomes basically a combination of these things. I'm not going to go into the detail of these things a lot. I'm just going to give you enough context so you understand what's coming up front. And obviously when I sing these things, when I utter these, whereas I don't say V1, V2, I say serigam up as any. So that's abstracted in the simple swarms that you see there. And then there's the concept of sthais, which is analogous to the concept of octaves. So an octave is basically your 12 notes, and you can have higher and lower octaves. So that's what you see in the sthais. And in the last column in the sthais, you'll see the minus 24, minus 12, 0, 12, 24. So these are the two lower octaves and two higher octaves. And this basically comprises this basically can cover all of your composition within like all these four octaves. So given this, right, given the abstraction of these sthais, madhyasthais, swarams and sthais, I can then like say, given a certain number of notes, compute the exact frequency that I need to pass to my server. So this is the basic abstraction that I need. The other, I guess, yeah, let's go into a ragam just a bit before we jump in. So a ragam, like I said before, it's a combination of notes. It has a name and it has a scale. And a scale is basically a series of ascending notes and descending notes. So it's called the arohanam and avarohanam. And the arohanam and avarohanam, the ascending and descending scales, need not be symmetric, nor do they even need to have the same notes. So they can be not symmetric as in the arohanam, not equal to the arohanam, and they can have missing notes and be completely crooked in that aspect. So this is actually an Eden file that has all these ragas. And here's the far end of that file. Here's the bottom of that file. So you have 17,000 lines of basically just ragas. And I just mined this information off the web when I cleaned it. But there exist so many ragas just to give you a perspective and there are like 5,200 ragas with unique names that I was able to mine. The number. So each raga can actually belong to a parent raga, or what is called a Mehdakatta raga, right? And so the Mehdakatta raga, there is only five in its side. There are 72 such ragas. So those have numbers. And if I belong to that raga, my parent male raga has a number. But for the purposes of synthesis, at least these numbers don't really matter. So that brings us to Laya, and I'll go into this just a bit. It's quite complicated, and I don't think this is very crucial to the rest of the talk. So it's okay if you don't get it. But let me try to draw analog. So Kala Pramanam is basically tempo, right? And jatis are basically time signatures in Western music if you're familiar with that. So these time signatures are basically like 4 by 8, 5 by 8, 7 by 8 and 9 by 8. And columns are basically speed. So given a particular tempo, you can go double speed or quadruple speed or so on and so forth. Those are the columns, right? So given that these abstractions exist, let's go ahead and do a demo of what we have so far, right? So here is Emacs. I guess I'll be able to see this. Okay, and on the left-hand side, I just have some phrases just so that I can show these things easily. So this is basically a single map that reads off the file, and I can read a ragam like that. So it prints the name and the Arohanam and Avrohanam. What I can also do is, say, fuzzy find the ragam. So what I'm saying is, say, find gaula and I pass the string gaula and even though it's like a G-O-U-L-A, and the actual thing is G-A-U-L-A, it finds it. And it's actually slightly different from how you think of fuzzy search in any other language because this is like fuzzy finding in Sanskrit words. And the logic for finding such things in standard libraries is not easy. And I can go into that in more detail if you want. And this could be like another raga and you'll see that it has an alt-priority. That's because it has duplicates in the way people have understood it. So let's go ahead and play a raga. Let's play it. And here's how it sounds. So what it does is just plays the Arohanam and Avrohanam after each other. Let's play another raga. And that's the name. Like that's Bilharian. This is Dodi. And then what you can do is you can play phrases. So given a Swara, I can tell it the duration for which I should play it. So the previous thing was just playing each thing for the exact same time. So let's listen to this. So what I can also do here is quickly change the speed. So that's rather easy. And let me go to my next snippet, which is slightly more interesting. So what I have done, now we can see that these Swaras no longer have the 1, 2, 3 thing. They just play simple Swaras. And the actual position of these Swaras is interpreted based on the raga. So I also give it a raga. In this case, it's Kalyani. So let's listen to how it sounds. And here's one of the things that make you really think. So it's the exact same phrase, but in a different raga. Actually, it sounds so much different. And for me, as a musician, to get used to another raga, really understand it, and then sing the same phrase in another raga, it needs some mind-bending exercise, which is not easy to do. For a machine, it's nothing. You can just do it without thinking about it twice. And so that brings us to more and more higher abstraction and slightly more interesting things. So here is, for example, what I would call prescriptive notation. Basically what my teacher would say, write to me and give and say, so this is how it looks, right? It's like sa, and then there's question mark, question, like kama, kama, so that means, it's played for three duration, so on and so forth. So let's listen to how that thing sounds. That happened, sorry. So the logical next step would be to sort of read this from a file. And at this time, say, this is like the Mohana Varna, where I can just basically play off the file. Right? So that's basically rendering that entire file like sort of cluelessly, like give me the prescriptive notation and I am going to play it. So that's that. And with that, we will come back to the slides. And I had a demo here of me typing it out in case that everything failed here for some reason. So the tools and libraries that I've used here are fairly straightforward. Super Collider is the synthesis server that gets started up once I start my Overtone console. And the instrument here actually is like very trivial. So if I... So if this instrument here is what this all is rendering on and it's a simple saw wave, right? And it like takes a given frequency and it plays it for a given duration. So there's like absolutely nothing interesting, not nothing very interesting about that. And of course, I'm using like Overtone On, Bluffs and things like that. I'll come to that in a bit. And the phrases for each, like I'm telling you what durations to play and things like that. And that is a library called Libzik that's built on top of Overtone. And I use that. And for the fuzzy search, I'm just using Postgres. It just works. So, so far what we have done, what we've been able to do is we've been able to play a raga, right? We've been able to fuzzy find a raga because that's kind of interesting. We have a database of raga and then we've been able to play a phrase and we've been able to play a phrase in a particular raga. And we've also been able to play some prescriptive notation, right? But you'll all know, like anybody with any kind of hernatic music knowledge will let you know that obviously doesn't sound like hernatic music. But what is different, right? And what's different in a way that we can all understand it? So here's a way in which we can actually see this, right? So these are pitch grabs. So this is basically frequency versus time, right? And the top is me singing and at the bottom is the machine singing the exact same thing. So let's go ahead and, so you can see the differences, right? Like visually you can see the differences. Let's hear it now. Here's me singing. Ta-da-da-da-da-da-da-da-da-da-da-da-da-da-da-da. And here's the machine singing the exact same thing. That's obviously not the same thing and you can clearly see that it's not. Let's listen to another phrase, right? And this is some, like, slightly more closer looking phrases. So if you look at the last part, there's like a Batman-like looking thing and then there's a descent. So those parts actually match up pretty close, right? So let's go ahead and listen to this and see how or why it sounds closer. Here's me. Ta-da-da-da-da-da-da-da-da-da-da-da. And here's the machine singing the exact same phrase. Right? So you can see that, so one thing I did, that I did here sort of sneakily was change the instrument, right? So instead of using a saw wave, I think something's fall down from the top. I don't know what that is. So one thing that I sneakily did there was change the instrument. So I changed it from a saw wave to a sine wave. So it sounds slightly more soft. But still, like, you can see that this phrase at the bottom is basically just quirish and you have, like, steps and there's no curves like there is in my voice. So what is this difference, right? And you can see this difference in this. So this is just a hand-drawn version that I did that illustrates the difference. So the slide, the notation on top is prescriptive, right? So that's what I would write in my book. And this is a representation of what the pitches actually are. So I've just put a graph with the semitones. So 0 to 7 are just setting them up as any, or, like, semitones in between. And if you just look at the first bar in the first note, right, there is a single swara called pa, right? And that pa is actually a combination of three notes. It's not a single note. It's, like, it's 4 to 7, or, like, ma-ri-pa, right? So that is just lost in the notation. But that's how it actually sounds. And what's worse is that when I actually sing this, I would actually sing pa. I would not sing ma-ri-pa. So that's the difference between the note I utter and the note I sing, right? Even if I'm saying that thing, I'm actually singing three notes. So what are these things, and do they have names, and has no one ever talked about it before? They have, and these things have names, and these are called gamakas, which I promise I'll get to now. So let's go a bit into how these are modeled and how they are rendered. So gamakas are simply just continuous pitch movements, or what has been defried, like, what has been, like, referred to often in literature as microtones, right? These things actually have names, and they have abstractions, and it has been different through centuries, like Bhattas, Natya Shastra has, like, nine, and then there's, like, SSP describes ten, and then some other treatise describes 15 such gamakas, so on and so forth. And, well, that's the state of it, and it's continuously moving. And the reason, one of the main reasons why that is so is because it's, again, a vocal tradition. For example, when my teacher tells me that sing this thing, he wouldn't say sing this gamaka, sing that gamaka, he would just say emphasize this thing or sing this more strongly, or, like, lightly hit that note, or, like, hit that note hard, right? And I'd understand, and I'd, like, basically repeat what he's singing, and that's basically it, right? There aren't abstractions that you'd understand. And one of the works, actually there have been quite a few works on this, like, in the last century, one of the primary efforts has been by Subramadhi Kshadar, and that's the SSP or the Sangeeta Sampradaya Pradashini. And here he actually has notation for the gamakas, and he actually uses those notation in actual music, and I'll show you examples. But before that, so that you get a good understanding of what gamakas are, here are a few examples of me singing these things, right? So these things actually have names. Jauru, for example, is an ascending gamaka, it's like, you're just moving from one note to another note, gradually. And it can be an upward or downward slide. Let's listen to Jauru. Right? So that upward slide you saw is called a Jauru. Spuritam is something that we have already encountered, but let's listen to it again. Right? I'm actually only singing four notes there, and I'm repeating each note twice, but the second note has an emphasis, right? And my teacher would say, hit the second note. But what I'm actually doing in pitch is that I'm going to an arbitrary low frequency and hitting the second note, and that's how I emphasize it. I don't emphasize it with volume, I emphasize it with pitch, right? So the dips you see here, that's basically what is spuritam. And another interesting gamaka is an orikai, and it's odd that something like this has actually been called out and given a name, because it feels like it's something that appears in like three, four, raga, like todhi, and kalyani, and so on and so forth. But let's listen to it because it's interesting. Right? So that's like downward slide, but with a twist starting from the upper note. And the broadest of the gamakams is kampitam, right? And kampitam is where it's just described as an oscillation between two frequencies. These two frequencies can be any two frequencies, and the number of times you can oscillate between these two frequencies is also not defined. So you can like oscillate any number of times. You can even actually be three frequencies, or you can oscillate between them. So this kind of a thing is very hard to model in that you would have to like put in too many toggles to tweak and get a better control of it. Right? So let's listen to kampitam. So that oscillation that you saw between the first two notes is what you call kampitam. Right? So these are the names of the Dashevitha gamakas that he points out, and he actually gives them symbols. And like each symbol corresponds to that name there, and he actually uses it in notation, right? So here is, for example, notation in SSP where he actually takes the paint to write this down, but unfortunately this is not how we write down music even today in our classes. So coming to how we model gamakams, this is not the first person to stumble upon this and want to do this, but you can see that these are the two major works, and one is in 2009, one is in 2013, right? Given how long software has been around, and how long karnatic music has been around, and like the tools to generate music has been around, this is like very recent. This is one of the things that gets me excited because it's like so recent and there's like so little work done. These works are. So Gaika is actually a software that's created by M. Subramanian, and what it is, can we take questions in the end? I'm really sorry, I need 45 minutes and I'm probably going to take all of it. So what Gaika has is basically a database of phrases, right? So what it does is that for a given raga it computes all the possible combination of triplets. A triplet being a note, it's preceding note and it's succeeding note. And given the context of these three swaras, it figures out what is the possible phrase or what are the possible gamakas for this phrase. For each phrase it can have a list of such gamakas and it has the probability to weight each of them. And that lets you create automatic gamakas, right? In that you give it a phrase and it will probabilistically compute what is the gamaka it needs to render. But that is very not scalable, right? Because for each composition say there are like 200, 250, like 300 such phrases that you'll have to actually write down and give different gamakas for. And you have to do this manually for every raga. So that's definitely not scalable. So the more recent work has been by Shri Kumar. So actually both these people have had comp music, workshop videos and their own YouTube. And if you're more interested in these things you can look them up. So Shri Kumar I actually talked to. And his work is probably something that has inspired me the most and like made me understand and like give clarity to all of these things. And what he came up with are passer and de-passer transcriptions. And what passer is is a vector. And it basically a pitch attack, sustain and release. So it's like the amount of time spent in getting to the note, at the note and going away from the note. And he also did this thing called the de-passer notation. And I'll get into that in a bit. And here's how for example Gayaka went about modeling its gamakas, right? So in the phrase database what you'd have to do is you'd have to write the gamakas choosing like this, right? Where in you say like the lesser than and greater than arrows say the pitch is moving higher or lower. And then what he also said that was very interesting was that gamakams are motifs not only in frequency but in frequency and time. Which means that if I sing a gamakam faster it has a different shape, right? So that's actually very important. And he is modeled at using brackets. So more the brackets are the faster a gamakam is. And how I have done it is using overtone, right? So don't get freaked out by this. I'll explain it. There's a G inst at the bottom. So that's basically using the macro. And that thing is basically describing or modeling a single gamakam called the Spurita gamakam. And this is a simple dip that you saw earlier, right? So that dip is basically a curve, right? And overtone envelope. So I'm using this term called envelope and I call that function there. And overtone gives me that interaction. What it does is that it takes a list of frequencies and the list of durations, right? So and it's basically helping me draw that curve. And I've taken so this frequency and LFLF is a lower frequency, right? So at a frequency and I go to the lower frequency come up and then I'm at the frequency again, right? So that's the shape of my Spurita gamakam and I can give that. Interestingly both Shri Kumar and I have noticed that the shape in which we move from each note to the other is not necessarily linear, right? When you draw this pitch curve it's not linear. And so Shri Kumar said that it would be mostly sine interpolations of sorts and for me what I found was that Welch curve, which is sort of like a bell curve that overtone gives me fits well. And here are for example more gamakams that I've been able to write like this, right? Which are basically like the Jaru Kampitam and I tried Passer and I just left it there for showing that I tried that but yeah I've been able to sort of write gamakams here. Are you getting this? Right? So to put it sort of rather simply overtone gives me envelopes envelopes are things that helped me shape my pitch curve, right? Not necessarily pitch curve it can apply to both amplitude and pitch I'm using it for frequency which is pitch. So we're back to this and so let's listen to me and the machine again but this time it's going to be slightly different. So let's listen to me again So this is the same Spurita gamakam that you heard earlier, right? And here's the machine doing the same thing Right? And suddenly you look at the graphs, right? There's a Spurita in there, right? So you can see that that thing exists and the way I've done it is my input notation is sort of little inspired by SSP wherein you prefix the notation by the kind of gamakam that you want to render that in and I do use the context of triplets to find what the next and previous notes are. So this is a slight improvement and for those people who want to understand how like I did this in overtone and things like that actually let me go back a bit to this slide so this actually explains a bit about how it's implemented. So if you look at the last let block it's basically a wave multiplication so it's multiplying the modulation of the frequency and the modulation of the amplitude so the first line is basically saying that my instrument is a single sine oscillator and I'm generating an environment based on the gamakam so that tells me the pitch and as far as the volume is concerned that's the second line that says that start my note and then stop my note after a certain duration yeah I thought I'll get a bit into the details of overtone and things like that but I think I'm going to reconsider that and skip this and come to this again for details later so the second modeling thing that exists so far is called Passer and I explained this a bit earlier so this is how it looks that's again the prescriptive notation on top what you have here in the middle is the Passer notation which is very descriptive and this is actually the exact same phrase for which I had hand drawn the thing earlier on for example the Pa which was a combination of three frequencies earlier so it's like 4, 2 and 7 you see that so that's the first thing in the three vectors on top so that says that start with 4 and take 2 to come to take 2 units of time to come to 2 and then take 2 units of time to go to and stay at Pa for 4 units and these units are related to that row and that row tells you Pa colon 2 says that you have to play this for 2 units and all these units are again like relative like you give your actual duration and tempo from the outside and all these things get scaled accordingly yeah so the advancement that he did on top of Passer was something called the Passer which is dual Passer and it's interesting to note that all these people who have modeled Gamaka so far have been Veena artists like even Subramadikshada was a Veena artist and the way he describes Gamakams was mostly just how to play it on the Veena and it's interesting because as a vocalist it's hard for me to say that I'm starting from this Swara and going to the other Swara but as a Veena artist I have to physically see it and do it physically so that gives more clarity and how Srikumar split dual Passer was like if I'm going to slide I'm going to call it stage and the note I'm going to call it the dance stage so that's how he split it so he split it between the basic pitch movement and the movement within the pitch itself and he's tried this out and he's given theoretically much better results but I'm actually here to try it out but I did try out Passer so let's listen to how this sounds so that's me and the machine again here's the machine here's the machine now but it's going to render it using the Passer so it's that much closer and it's actually so beautiful so let's listen to a bit more of it there's some prescriptive notation on top and here's the machine playing that so that's it so you can still see that there are some phrases of like squarish movement in the graphs but it's kind of getting closer and here's how far I've gotten until now so that's it and here's what I think I will be doing in the near-term and the long-term so the near-term for me is that I have the basic abstractions I have the models for putting gamakas together and then I have the concepts of raghams and things like that properly modeled out that can take higher level abstractions on top of it what I do lack is abstractions at the meridy level I actually do have some random music generation things and I'm not showcasing it here because to be honest it's not that great because random is not how you do music and to understand how you do music you have to go to higher level abstractions and fortunately though karnatic music has some higher level abstractions some raghas have rules one raghas different from another raghas just because of the presence of a single gamaka and that differentiates both of them and then you suddenly have that thing as a rule to go on that in this ragham don't make this movement and these kind of rules help you be within the context of karnatic music and hence make more meaningful music generation so that's what I think we can do next which is use these rules and model them and then using these rules you'll be able to generate better music and obviously like recurrent neural networks and things like that I really want to get into that sometime soon what is I think in my opinion none other like 2-3 years away is where transcription is right now which is the other side of this give me a rendition and I want to compose them into these abstractions so that is actually in a research phase that's a little backward in that they are still in the phase where give me a rendition and I'll tell you what is the tonal note or give me a rendition and I'll split out the violin and the vocalist and unfortunately we don't have too many stereo recordings of karnatic music where you only have a single pitch thing and then you can just basically write on that and use those things to understand patterns and pitches so I can't do that yet but when that does come up in 2-3 years I think I'll be more than ready to take it up and what I'm also doing on the side is creating an open karnatic music database and I've already gone quite away in that and I'm just mining the web for all kind of karnatic music data and there's an r4g4.com and like it's actually working and I use it in concerts and things like that what it is is basically like all the information on the web as in diraga, compositions, composers and everything put inside a database and in a way that maps to these abstractions that I have so once I have that then the path is like as simple as that which is like give me the data, I'm going to auto transcribe it and then I'm going to feed it into my thing and I'm going to machine learn it and then I'm going to create music not me, I mean the machine is going to do that but then if the machine creates music is that really music? I've asked this to people, I've asked my friends about this how do you think you feel if a music if you're like a laptop plays music to you and you're like no I'm not really sure and that has been mostly the reaction but like their explanation is that sometimes the art is in the artist in that like it's how the artist feels and how the artist is able to express their art or express their emotions and things like that and my take on that is that you don't really know until you actually hear it so like wait until you can actually hear machine generated and then have a take on it and another line of thought here is that the moment I tell them that you put some human being behind a machine and say give them a few toggles to control how the music is generated suddenly it becomes like so much more creative like art, it's like similar to how we have electronic art today right or even like I don't know these overtone bands basically use the machine as an instrument of sort more than an instrument maybe but you have the toggle to tweak and fix the kind of music that a machine generates so I guess that's it and here are the references and I'll put these slides up so that you can see and read through the materials that I've read these are mostly just white papers there's SSP and then there's a bunch of other work the first thing there is though my github where I like a single report with all these open karnatic music database things and whatever I've done so far and that's it thank you I'll take some questions now if I have the time I have five minutes great absolutely so gamma comes actually vary with ragam they also vary with the school of teaching so different schools have different ways in which they emphasize certain things or not and these are left to the expression of the artists so on and so forth but the very fact that these things have been pulled out as abstractions to a certain level and like if you listen to some karnatic music lecture demonstrations they will actually use these words and say that this is how this thing is and they'd use these specific gamakas to say that like you need this ragas identified by these gamakas so on and so forth so the answer is that yes it does depend on the artist but for a machine to generate music you need these abstractions and then if a machine is then expressive by itself and it has to be sent chiant and all that then I don't know what that even means yeah so the gamakams pattern that is in gayaka for example the first thing that I showed you that is not that cannot be extrapolated to hindustani music but shrikmar and his pstpc says that the passer and the deep passer thing can easily be expanded to like hindustani music as well and you can render it like the model itself is not dependent on karnatic music specifically and the ragas and stuff of course are very different and you have a separate database for that yeah so my idea is that at some point I want to feed a machine like thousand shankaravana renditions and say learn and it would learn from the alapanas itself and then maybe it would have a style that's an amalgamation of all these artists and stuff like that does that make sense? exactly so I don't really know where to draw that line when I actually played this last snippet of the music that I showed you to my friends and I didn't tell them anything they said is that a vina or is that a go to vadya or something and I was like no it's a sine wave that's it nothing more to it and it's really indistinguishable at some point yeah I can do that so I actually do have a random generation for the simple thing and the thing with the gamakams as in you just pull random gamakams and then render it but to be honest it doesn't sound, I mean it sounds like in the waveform you'll see that oh there are gamakas and everything but the musicality aspect is not there yet it's still random to a certain level you need to wait at there has to be a phrase somewhere there's a sense of repetition and rhythm in the way I've generated durations I can have an infinite sequence of durations for each of these varas and make it such that every 8th thing it fits within the thala and I can do that and I've done it actually but that still doesn't contribute to the musicality of it it needs to sound good and how you get there is like going to higher levels of abstraction in something that's melody and I'm not really sure how to get there yet yeah so so each gamaka that I've been able to render now is actually a triplet I described this before which actually does depend on the previous and the next note and even within gayaka I was saying that the phrases are built within context you give a phrase and it tells you what the gamaka is it doesn't tell you what the gamaka is based on a single note so the context of the phrase is very much necessary also the context of the raga that is also very necessary in that the basic notes in the raga is one thing the parent raga so what usually happens is that if a raga is a janya raga of a melakarta raga it borrows the bhava or the way it sounds sort of the emotional how do the the mood sort of or like the flavor of the melakarta raga is borrowed onto the janya raga so you can depend on that and like I was saying there are rules like for example in shankarabrana you cannot shake the gandhara but the same shankarabrana which is different from kalyani by just a single note has to shake the gandhara otherwise it's not and you know that it's shankarabrana and the gandhara is flat so you can write on such rules I mean there are not many but you can write on them to make something that's more sensible that's the thing with rules right it's kind of bad because it doesn't it sort of sustains your creativity to a certain level but that's good for machines because that enables us to sort of restrict it to sound more musical that was that answer your question okay thanks yeah sure that sounds interesting I would like to get in touch oh that's interesting yeah sure why not so gayaka actually is an effort for that specifically that I remember that gayaka is like a suit of small softwares there's one that's specific to a learner where in it'll like take you through the sarili janta and things like that and it'll sing along with you in whatever pitch you give they tumble along with you and show you the notation they sing with me and then you sing with it and shrikma has built this tala keeper which is also a software which is like it'll like play the tala along with you and things like that so yeah these things exist and like I said in the beginning of the talk it's definitely one of the practical applications where you can learn from music learn from a machine alright let's take more questions of somewhere else thanks