Swaralipi

SwaraLipiXML

SwaraLipiXML: A Comprehensive XML-Based Format for Exchanging Digital Indic Sheet Music

This work presents SwaraLipiXML as the first XML based digital sheet music exchange format for Indic music to describe a comprehensive set of musical information in one roof and for sharing this information ubiquitously across computer applications. SwaraLipiXML employs Swaralipi, a matrix based framework for transcribing and rendering Indic sheet music, as a backbone to handle the heterogeneous nature of Indic music and its notation systems. SwaraLipiXML provides all the required information needed for framing the music sheet structure, rendering the notation symbols, defining the rhythm and melody and facilitating interactive playing back of any Indic music score independent of any Indic notation system and language script.

VIEW SWARALIPI XML SCHEMA DEFINITION

For Developers


WHAT'S NEW


Version 1.0 of the SwaraLipiXML is just released. We are working on it constantly to improve it and include more features from Hindustani, Carnatic as well as folk music of India. Current version includes a W3C XML Schema Definition.

FILES


Below are the files of SwaraLipiXML format in XSD.

swaralipixml10.zip - XSD version

Tutorials


Hello World


As any other programming language, the very first program to learn the language is the Hello World program. It is the simplest program that can be understood easily and grasp how the results are generated. In SwaraLipiXML, the simplest program would be a music piece having only one note (say Suddha Shadaj or note Sa and without any lyrics, Taal and Raag. Such minimal composition can be realized in our format as below:

সা

<swaralipixml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://indic-music.github.io/Swaralipixml.xsd">
			<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
			 <SHEET>
			  <TOTAL_LINE>1</TOTAL_LINE>
			  <LINES>
			   <LINE INDEX="1">
			    <ROW_COUNT>1</ROW_COUNT>
			    <COL_COUNT>1</COL_COUNT>
			     <COLS>
			      <COL INDEX="1">
			       <ROW INDEX="1">সা</ROW>
			      </COL>
			     </COLS>			
			   <LINE>
			  </LINES>
			 </SHEET>			
			</swaralipixml>

Here <TOTAL_LINE> defines the total number of lines in the composition. Now, each line is composed of several rows (at most eight) as described in Swaralipi Framework. In this example, the composition contains only one line and that line contains only one one row, row for defining notes only. No lyrics is defined. The contents of each line is described in <LINE> element. Again, each row is divided into several columns depicted by <COLS>. <ROW> element describes the contents of all the rows of each column defined by its index number.


Five Parts of SwaraLipiXML


The five components of Indic music has been defined in SwaraLipiXML in five different parts. They are - <INFO>, <TAAL>, <RAAG>, <SHEET> and <MAPPING>. <INFO> describes the About information for any composition. It includes catalog information, genre, notation system and font information. For example, to define আমি চিনি গো চিনি তোমারে music piece of Tagore song, we will write the following information in the <INFO> element.

 <INFO>
  <TITLE>আমি চিনি গো চিনি তোমারে</TITLE>
  <AUTHOR>Rabindranath Tagore</AUTHOR>
  <FILENAME>AmiChini.swl</FILENAME>
  <LYRIC_LANGUAGE>Bengali</LYRIC_LANGUAGE>
  <NOTATION_SYSTEM>Akarmatrik</NOTATION_SYSTEM>
  <NOTE_FONT_NAME>Swarabitan.ttf</NOTE_FONT_NAME>
  <LYRIC_FONT_NAME>Akademi.ttf</LYRIC_FONT_NAME>
  <DATE_TIME>1895</DATE_TIME>
  <GENRE>Rabindra Sangeet</GENRE>
</INFO>

There are two interesting elements that is of great importance. The first one is the <NOTATION_SYSTEM> and the <GENRE>tags. Indic music consists of many music genres as well as many notation systems. Some of the famous music genres are Hisdustani Sangeet or North Indian Classical Music , Carnatic Sangeet or South Indian Classical Music, Rabindra Sangeet or Tagore Songs, Tappa, Gazal, Thumri, Different varieties of folk,Baul, Bhajan, Popular or Filmi and Pop. Among different notation systems prominent systems are Bhatkhande, Paluskar, Akarmatrik and Dandamatrik notation system.

The second important element are the <NOTE_FONT_NAME> and <LYRIC_FONT_NAME> tags. Why two different fonts in a single music piece. That is because the notes and lyrics of the music require different encoding system. We can write lyrics in any language script using Unicode software but, we do not have any standard format for the scores. That is why we have added new tags for including the note font name of the music piece.

The second part of the format is <TAAL>. It contains the rhythmic structure of the composition. The rhythmic structure is important to show the Taal information associated with the music piece. Sometimes the Taal information are viewed in a separate music sheet as depicted below.


Above images are examples of four different Taals of Hindustani Sangeet. The above notation as well as the rhythmic structure can be easily rendered by the <TAAL> part.

 <TAAL>
  <TAAL_NAME>Dadra</TAAL_NAME>
  <BIBHAGA>2</BIBHAGA>
  <MAATRA>6</MAATRA>
  <AVARTANA>2</AVARTANA>
  <BEAT_PATTERN>3-3</BEAT_PATTERN>
  <TAALI_COUNT>4</TAALI_COUNT>
  <KHALI_COUNT>1</KHALI_COUNT>
  <TAALI_INDEX>2-3-5-6</TAALI_INDEX>
  <KHALI_INDEX>4</KHALI_INDEX>
</TAAL>

The <RAAG> part contains another important feature of Indic music specifically of the classical genre. Raag in Indic classical music provides the melodic constructs of a composition. In Indic classical music any particular Raag can be identified by some of its characteristics. In SwaraLipiXML we are trying to cover all of such aspects. In that sense Raag identification would be much more easy in Music Information Retrieval point of view. The following portion provides the Raag information of a composition composed using Gour Sarang.

 <RAAG>
  <RAAG_NAME>Gour Sarang</RAAG_NAME>
  <THAAT>Kalyan</THAAT>
  <AROHANA>6</AROHANA>
  <AVARTANA>'N-S-G-R-m-G-P-M-D-P-N-D-S'</AVARTANA>
  <AVAROHANA>S'-D-P-M-P-G-m-RGRmG-P-R-S</AVAROHANA>
  <VADI>G</VADI>
  <SAMVADI>D</SAMVADI>
  <JAATI>Sampoorna-Sampoorna</JAATI>
  <PAKAD>G-R-m-G-P-R-S</PAKAD>
</RAAG>

The <SHEET> part is already mentioned in Hello World section. The <MAPPING> part is responsible for rendering the notation of the music sheet. As already said we provide two different formats for depicting score and lyrics. For lyrics we have standard format or Unicode. Therefore, we can render the lyrics as it is stored in XML. However, for rendering the notes we need additional fonts. In the mapping part we map the notation symbols with keys. We have also standardized the font formats, so that if the notation system changes for the change in language script, the sheet will have no effect and thus can be rendered in other notation system also.