Skip to content

shivanan/cmc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cmc 
===

Introduction:
cmc is a program to generate midi files from carnatic music notation.  You
just create a text file containing the notes for a song ("notation file")
and pass it as input to the program.  cmc will generate the respective midi
file as output.
(Note: cmc doesn't actually *play* the midi file. It just creates a file
which can be played using any midi player)

Installation:
cmc as distributed as source code.
Building the software from its sources is fairly straightforward.
Just unpack the source archive into a directory, visit the directory and
issue the 'make' command.
The code is written in ansi-compliant C, which basically means it should
compile cleanly under any ansi C compiler.
gcc would probably be your best choice, although I have gotten the code to
compile cleanly under Visual C++ as well.


Usage:

$cmc <input file(s)> -o <outputfile>

If you specify more than one input file, the contents of each file will be
transcribed into a seperate track in the output midi file.
If you don't specify an output file, the midi data is written to stdout.
You can also pipe the music notation into cmc as stdin:

$cat notation_file | cmc > output.midi


Playing midi files:
The midi files created by cmc should be playable from any midi player.

If you are running cmc on a Unix-style system, I recommend using timidity
to play your midi files. It uses soundfonts to convert the midi to wave
format in real time while playing. It also has a flexible commandline
interface. You could do the following:

$cmc input.notes | timidity -

You can get the latest version of timidity at:
http://www.goice.co.jp/member/mo/timidity/



Features:
cmc can create a multi-track midi file from several input notation files.
The notation file layout is simple but extremely flexible.
It's a free-format file allowing you to layout the notes as you see fit.
You can also change the volume, pan and instrument to use at any give time.
You can insert text markers in the notation file which will be included in
the midi file.  If your midi player software supports it, these pieces of
text will be displayed at the appropriate time. (These text markers are
frequently used to create 'lyrics' that can be displayed as the midi file
plays)
The program is non-interactive and can be easily manipulated from the
command-line.

Drawbacks\Bugs:
This program is a work in progress, and as such, certain features are yet
to be implemented.

1) The midi format was basically designed for wester music. It's not really
expressive enough to faithfully reproduce carnatic music. In particular,
support for "gamakams" is virtually non-existant. There are tricks to work
around this but I've yet to properly implement them.
Currently gamakams are implemented through portamento events (note
sliding). The effect isn't quite as good and, infact, at times is downright
annoying.

2) It would be nice to be able to specify a thalam track that keeps a
steady beat through out the song.

About

Carnatic music notation to midi compiler

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published