An introduction to the CMN format is in Beyond MIDI chapter 16. You can download the manual and the program from the CMN page .
The CMN format looks LISPy as you would expect from a program that is written in LISP. But I don't see a big problem to read and write CMN files with other languages (I've written LISP programs in an earlier life and now usually use Java . I don't regret this step in general but there are really nice LISP properties I miss).
This is how you can read CMN files: build your
object tree with the first element of a list as
parent node. While
XML
nodes contain two axes (attributes and children),
LISP has one.
Example: (chord (notes b3 g4) q). From a LISP view,
notes is a function and b3 and g4 are parameters.
The function chord has two parameters (see them?).
If you build an object tree in
Java
, just create a chord object that contains two
fields: one contains a reference to an Object with
notes and one that it contains has the length of a
quarter note.
So you (and your program) don't have to understand LISP. It is possible to extend the CMN format, but you can extend NIFF, too. CMN is extended with functions while NIFF is extended with chunks, but for a program it's the same: Ignore what you don't know. (Ok, one thing is harder in CMN: it ignores what evaluates to nil and you don't know how to evaluate outside LISP but I don't think this is a problem in usual cases.)
Programs exporting CMN: Common Music Notation:
Programs importing CMN: Common Music Notation:
|
Feedback (questions, suggestions, broken links): CMN: Common Music Notation
My new eBook (in German)
Professionell Ankern - vom NLP-Practitioner bis zum Coaching and its Website