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.
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.
Below are the files of SwaraLipiXML format in XSD.
swaralipixml10.zip - XSD versionAs 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.
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.