| 2001-10-22 - Hierarchical representation of music
One of the main aspects of the compo language is that its hierarchical
structure allows to share any recurent structure in a work, possibly
in consideration of melodic modulations or rhythmic augmentations
or diminutions. See the folk song example from the presentation
for an illustration of this.
This hierarchical structuration ability has in addition an immediate
practical advantage, when transcribing an existing score. Effectively,
it often allows to save a non-negligeable part of this tedious task.
Let's suppose man wish to transcribe the following sentence :

First, it is worth using the centered on the fifth octave register
of the upper melody. By writing this whole melody inside an enclosing
structure at the :c5 height, it will be not necessary to specify
the octave of each note.
(note :sync
(:treble :c5 (:c)(:e)...)
(:bass ...))
Similarly, the sixtenth burst at the same voice can be included
inside a sub-structure specifying a sixteenth rhythmic indication,
avoiding thus the repetition of this indication at each note level
:
(note :sync
(:treble :c5 (:c)(:e) (:16th
(:g)(:f)(:e)(:f)(:g)(:bf)(:a)(:g)(:fs)(:a)(:g)(:fs)(:g)(:a)(:g)(:f))(:d
:h))
Concerning the bass, the redundancy to be eliminated is of a different
kind. It is possible to save the manual writing of each harmonic
octave by abstracting this structure this way :
(note :sync
(:treble :c5 (:c)(:e) (:16th (:g)(:f)(:e)(:f)(:g)(:bf)(:a)(:g)(:fs)(:a)(:g)(:fs)(:g)(:a)(:g)(:f))(:d
:h))
(:bass x=(:chord (:c)(:c5)) ...))
All man has to do then is to instanciate this x model by creating
as many as necessary structures containing it, each provided with
the desired height :
(note :sync
(:treble :c5 (:c)(:e) (:16th (:g)(:f)(:e)(:f)(:g)(:bf)(:a)(:g)(:fs)(:a)(:g)(:fs)(:g)(:a)(:g)(:f))(:d
:h))
(:bass x=(:chord (:c)(:c5)) (:c2 (:c x)(:b3
x)(:c x)(:d x)(:e x)(:c x)(:d :h x))))
Man can note that the whole has also been included inside a structure
at a :c2 global height, allowing the two octaves lowering.
As a comparison, transcribing the whole sentence without taking
into account this sharing possibilities would have required to write
the following code :
(note :sync
(:treble (:c5)(:e5)(:g5 :16th)(:f5 :16th)(:e5
:16th)(:f5 :16th)(:g5 :16th)(:bf5 :16th)(:a5 :16th)(:g5 :16th)(:fs5
:16th)(:a5 :16th)(:g5 :16th)(:fs5 :16th)(:g5 :16th)(:a5 :16th)(:g5
:16th)(:f5 :16th)(:d5 :h))
(:bass (:chord (:c2)(:c3))(:chord (:b1)(:b2))(:chord
(:c2)(:c3))(:chord (:d2)(:d3))(:chord (:e2)(:e3))(:chord (:c2)(:c3))(:chord
:h (:d2)(:d3))))
Which is, when dealing with large works, not only more tedious
to write, but also less readable.
|