compo 2.1 - Change Log

Interface changes

The declare-note new macro binds global names to note construction expression. Such global names can be referenced inside subsequent note construction expressions.

From now on, the error checking mechanism checks the validity of names in declarations and references, and that a referenced name has already been declared.

The localization file is at root and is dynamically loaded (can be changed without the need of a recompilation).

The note constructor accept two new keyword parameters :

The lyrics new note class specifies substructures defining lyrics to figure under any staff in the produced cmn scores.

The repeat-end and fermata-repeat-end new note classes come in complement with fermata for the classification of notes (for future use).

The score command accept several new keyword parameters :

The cleave-change new function allows to affect different cleaves than the default to each voice class (for example a treble cleave to the soprano voice class rather than the soprano cleave).

The init-cleaves new function comes along with cleave-change. It resets each voice class to its default cleave.

The cleave-change-help new help function gives the entire list of keywords allowed as a cleave to cleave-change.

The new function test-programs sends one midi note to each midi chanel in order to actually activate program changes.

The program-change and init-programs functions do not send midi events anymore.

Implementation changes

A bug has been corrected in the cmnize function : the notes of height cf, cff, bs or bss where not drawned at the right octave in the score.

The new function ntoev returns the voice class of a given voice.

From now on, the cton function returns its argument rather than nil if it is not a cleave;

The ordering of voices has been changed in the sorting context item in order to group voices of the same class. The same change has been made in the cmnize function which performs a similar sorting.