Carnatic music synthesis in Clojure
I'm building a carnatic music (south indian classical music) synthesizer using Clojure and Overtone. There's a gaping hole in what can be done in carnatic music with technology and the library I'm building is a step in filling that space.
Right now, it can parse carnatic music notation as you'll see in a traditional book, build finer abstractions from that, and play back a not-so-terrible synth version.
The concept of 'Gamakam' (the transitions between notes) is central, so I'll go into it's guts and show how the library piggybacks on recent work on PASR (pitch-attack-sustain-release) and Dual-PASR ('stage' and 'dance' PASR components) transcriptions. I'll also put forth a path I see for fully synthetic carnatic music based on machine learning 'Ragams' (melodic modes).
I'll give a detailed demo of the synthetic music on the repl through the talk, and do a live voice vs synth comparison in the end.
Outline/Structure of the Session
I'll try to cover the following:
Representation of basic carnatic music concepts in Clojure.
- The basics concepts of 'Shruthi', 'Layam', 'Swaram', 'Sthayi', 'Ragam', 'Talam', 'Jathi', and 'Kaalam', and their equivalents in western classical music. Those that do not have analogous concepts will need more explanation.
- The abstractions in the library that represent these concepts.
- Looking up a raga with a fuzzy search, playing it.
- Finding similar ragas
Gamakams in depth
- The 10 kinds of gamakams and their notations. Here's a list of gamakas and their notation as they appear in SSP : https://gist.github.com/ssrihari/cd7c0f988652e22bf7c6#file-gamakas-png
- Their representations as waveforms as in [TMK]. Here are a couple of examples: https://gist.github.com/ssrihari/cd7c0f988652e22bf7c6#file-janta-jaru-odukkal-png, https://gist.github.com/ssrihari/cd7c0f988652e22bf7c6#file-orikai-kandippu-sphuritam-png
- Quick demo of what each of them sounds like both in voice and synth.
Using overtone to build Gamakams
- Why supercollider envelops cannot be used as-is, and the additions needed to make gamakams.
- What PASR and Dual-PASR transcriptions are (as in [SPS]). See https://gist.github.com/ssrihari/cd7c0f988652e22bf7c6#file-dpasr-transcriptions-png
- Implemtation of these new envelops in the library.
- Using these envelops in the context of a 'ragam'.
Machine learning a ragam
- I'll lay down the path I see for machines to learn from thousands of renditions, compose, and render carnatic music.
- The various sources of training data for this.
- Why and how carnatic music is more machine learnable than other forms of music.
- The related undergoing research work that will take this forward.
My work so far: https://github.com/ssrihari/ragavardhini
SSP - 1905 - Sangita Sampradaya Pradarshini http://ibiblio.org/guruguha/ssp_cakram1-4.pdf
TMK - 2012 - Svara, Gamaka, Phraseology and Raga identity http://compmusic.upf.edu/system/files/static_files/03-T-M-Krishna-2nd-CompMusic-Workshop-2012_0.pdf
SPS - 2013 - Modeling Gamakas of Carnatic Music as a Synthesizer for Sparse Prescriptive Notation http://sriku.org/thesis/srikumar-phd-thesis-cnm-modeling-gamakas-6aug2013.pdf http://sitardivin.globat.com/seminar2013/047SrikumarS.pdf
Example of the synthetic carnatic music produced by gayaka: http://gamakam.tripod.com/KamakshiPart.mp3
SPS A Composition Based Method for Modeling Carnatic Music Rāgas and Style http://sitardivin.globat.com/seminar2013/047SrikumarS.pdf
Recent work on digitizing some carnatic music notation http://devagitam.in