Skip to content

Instantly share code, notes, and snippets.

@ssrihari
Last active August 29, 2015 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ssrihari/b25ddda331ec220663de to your computer and use it in GitHub Desktop.
Save ssrihari/b25ddda331ec220663de to your computer and use it in GitHub Desktop.
Fuctional Conf talk proposal - Carnatic music synthesis

Carnatic music synthesis in Clojure

Abstract

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.

What will the attendeee learn?

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

Using overtone to build Gamakams

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.

References

  1. My work so far: https://github.com/ssrihari/ragavardhini

  2. SSP - 1905 - Sangita Sampradaya Pradarshini http://ibiblio.org/guruguha/ssp_cakram1-4.pdf

  3. 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

  4. 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

  5. Gayaka, - the software. Runs on windows, written in javascript by SPS. http://carnatic2000.tripod.com/gaayaka6.htm

  6. Example of the synthetic carnatic music produced by gayaka: http://gamakam.tripod.com/KamakshiPart.mp3

  7. SPS A Composition Based Method for Modeling Carnatic Music Rāgas and Style http://sitardivin.globat.com/seminar2013/047SrikumarS.pdf

  8. Recent work on digitizing some carnatic music notation http://devagitam.in

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment