Warning: mysql_connect(): Can't connect to MySQL server on 'mysql.sourceforge.net' (111) in /home/groups/c/co/compo/htdocs/inc/variables.php on line 7

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /home/groups/c/co/compo/htdocs/inc/variables.php on line 8

Warning: mysql_query(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /home/groups/c/co/compo/htdocs/inc/lib.stats.php on line 17

Warning: mysql_query(): A link to the server could not be established in /home/groups/c/co/compo/htdocs/inc/lib.stats.php on line 17

Warning: mysql_close(): no MySQL-Link resource supplied in /home/groups/c/co/compo/htdocs/inc/lib.stats.php on line 18

Accueil

Compo Online

English

 

Présentation

Compo et Open Music
Démos
FAQs
Téléchargement

Documentation

Tips

Contact

Qui sommes nous

SourceForge Logo

2001-11-28 - Représentation des paroles avec compo

2001-10-22 - Représentation Hiérarchique de la musique

Un des aspects majeurs du langage compo est que sa structure hiérarchique permet de factoriser toute structure présente de manière récurrente dans une pièce, et ce, en tenant compte d'éventuelles modulations mélodiques ou augmentations ou diminutions rhythmiques. Voir l'exemple de canon populaire de la présentation pour une illustration de cet aspect.

Cette faculté de structuration hiérarchique présente également un avantage pratique immédiat, lorsqu'il s'agit de transcrire une partition existante. En effet, elle permet souvent d'économiser une partie non négligeable de ce travail fastidieux. Supposons qu'il s'agisse de transcrire la phrase suivante :

En premier lieu, il convient d'exploiter le registre centré sur la cinquième octave de la mélodie supérieure. En écrivant toute cette mélodie à l'intérieur d'une structure englobante comportant la hauteur :do5, il ne sera pas nécessaire d'indiquer l'octave de chacune des notes :

(note :sync
  (:treble :do5 (:do)(:mi)...)
  (:bass ...))

De même, la rafale de doubles croches de cette même voix peut être incluse dans une sous-structure comportant une indication rhythmique de double croche, en évitant ainsi la répétition de cette indication au niveau de chaque note :

(note :sync

  (:treble :do5 (:do)(:mi) (:dc (:sol)(:fa)(:mi)(:fa)(:sol)(:sib)(:la)(:sol)(:fa#)(:la)(:sol)(:fa#)(:sol)(:la)(:sol)(:fa))(:re :b))

  (:bass ...))

En ce qui concerne la basse, la redondance à éliminer est d'un autre ordre. Il est possible d'économiser l'écriture manuelle de chacune des octaves harmoniques en abstrayant cette structure de la façon suivante :

(note :sync
  (:treble :do5 (:do)(:mi) (:dc (:sol)(:fa)(:mi)(:fa)(:sol)(:sib)(:la)(:sol)(:fa#)(:la)(:sol)(:fa#)(:sol)(:la)(:sol)(:fa))(:re :b))
  (:bass x=(:chord (:do)(:do5)) ...))

Il suffit alors d'instancier ce modèle x en créant autant de structures que nécessaire le contenant, chacune affectée de la hauteur désirée :

(note :sync
  (:treble :do5 (:do)(:mi) (:dc (:sol)(:fa)(:mi)(:fa)(:sol)(:sib)(:la)(:sol)(:fa#)(:la)(:sol)(:fa#)(:sol)(:la)(:sol)(:fa))(:re :b))
  (:bass x=(:chord (:do)(:do5)) (:do2 (:do x)(:si3 x)(:do x)(:re x)(:mi x)(:do x)(:re :b x))))

Notons que l'ensemble a également été inclus dans une structure de hauteur globale :do2 permettant l'abaissement de deux octaves vers le bas.

A titre de comparaison, une écriture de l'ensemble sans tenir compte de ces possibilités de factorisation aurait nécessité l'écriture du code suivant :

(note :sync
  (:treble (:do5)(:mi5)(:sol5 :dc)(:fa5 :dc)(:mi5 :dc)(:fa5 :dc)(:sol5 :dc)(:sib5 :dc)(:la5 :dc)(:sol5 :dc)(:fa#5 :dc)(:la5 :dc)(:sol5 :dc)(:fa#5 :dc)(:sol5 :dc)(:la5 :dc)(:sol5 :dc)(:fa5 :dc)(:re5 :b))
  (:bass (:chord (:do2)(:do3))(:chord (:si1)(:si2))(:chord (:do2)(:do3))(:chord (:re2)(:re3))(:chord (:mi2)(:mi3))(:chord (:do2)(:do3))(:chord :b (:re2)(:re3))))

Ce qui est, dans le cas de pièces de taille conséquente, non seulement plus fastidieux à écrire, mais également moins lisible.