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

Compo 3 - Prise en main

© 2002 Bruno Lartillot

Note pour les adeptes de la notation musicale latine (Do, Ré, Mi...) : compo se présente par défaut en notation musicale anglo-saxone (C, D, E...). Néanmoins, sachez qu'il est possible de basculer en syntaxe latine. Veuillez consulter la documentation de référence pour plus de précisions.

Compo fournit deux principales interfaces : midi et score, respectivement pour l'audition et la visualisation de vos travaux. Par exemple : (realize (midi (:c)(:d)(:e))) joue la structure induite par (midi (:c)(:d)(:e)) décrite ci-dessous), tandis que (realize (score (:c)(:d)(:e))) dessine la partition correspondante. Essayez les deux expressions.

Si aucun son n'est perceptible, essayez de jouer le fichier midi compo.midi, créé par la commande (realize (midi)) avec tout utilitaire à même d'exécuter les fichiers midi.

Si la partition n'apparaît pas immédiatement à l'écran (ce qui n'est en fait disponible que sur Macintosh), vous pouvez la visualiser en ouvrant avec ghostview le fichier cmn-1.eps, créé par la commande (realize (score)) à la racine du dossier compo.

Soit la cellule mélodique :

Vous pouvez simplement obtenir cette partition en saisissant de manière naturelle :

(realize (score (:c)(:d)(:e)(:f)(:g)(:a)))

Pour l'entendre, saisissez juste :

(realize (midi (:c)(:d)(:e)(:f)(:g)(:a)))

Une structure compo correspond à l'expression commençant par (midi... ou (score.... Comme vous pouvez le constater, une séquence de noires est obtenue simplement en saisissant (score suivi d'une liste de noms de notes, chacun étant précédé par : et encadré par une paire de parenthèses, plus une parenthèse fermante correspondant à la parenthèse ouvrante initiale.

Un nom de note peut être suivi d'une altération (cs pour do# (c sharp), bf pour sib (b flat)), un numéro d'octave (comme dans c3 ou bf5 par exemple). Notez que la syntaxe de compo est insensible à la casse, c'est à dire que df est équivalent à DF.

Introduisons un peu de rhythme dans notre cellule mélodique :

Le moyen d'écrire cela en compo est :

(realize (score (:c :h)(:d)(:e)(:f)(:g :8th)(:a :8th)))

Remarquez le mot clé :h qui signifie une blanche (half) et :8th qui signifie une croche (eighth). Ainsi, la durée n'a besoin d'être spécifiée que lorsqu'elle diffère d'une noire.

A présent, insérez simplement avant la liste des sous-notes un mot clé de hauteur comme :d par exemple :

(realize (score :d (:c :h)(:d)(:e)(:f)(:g :8th)(:a :8th)))

Votre mélodie se trouve de fait transposée d'une seconde majeure ascendante, du fait que Ré (D) est situé une seconde majeure au-dessus de Do (C abréviation de C4) :

Si vous aviez saisi :bf3 (Sib) à la place de :d, votre mélodie aurait alors été transposée d'une seconde descendante, du fait que Sib est situé une seconde majeure au-dessous de Do.

Comme vous pouvez le constater, il est aisé de transposer toute structure, simplement en insérant un nom de hauteur. Il est possible d'effectuer une telle transposition sur une partie plutôt que sur la totalité de la structure. Par exemple, notre exemple ci-dessus :

aurait pu être écrit :

(realize (score (:c)(:d)(:e) (:f (:c)(:d)(:e))))

dans la mesure où la séquence <f g a> (Fa, Sol, La) peut être considérée comme équivalente à la séquence <c d e> (Do, Ré, Mi) transposée d'une quarte ascendante.

A ce point, il est intéressant de noter que, puisque nous avons la même structure présentes deux fois, il est possible de réécrire l'exemple d'une meilleure façon :

(realize (score a=((:c)(:d)(:e)) a (:f a)))

Pas de panique ! Cela reste simple à comprendre : a=(nimportequoi) signifie que vous donnez à toute stucture de complexité arbitraire le nom a, en guise de raccourci. Dans la suite de l'expression, chaque fois que a apparaît, il est remplacé par le nimportequoi qu'il représente. Par conséquent, si vous remplacez les deux occurences de a ci-dessus par sa "valeur" qui est (:c)(:d)(:e), vous obtenez effectivement le même résultat que dans l'expression précédente.

Ce qui est vrai pour les hauteurs l'est également pour les durées. Supposez qu'en plus d'avoir la seconde occurence de a transposée d'une quarte ascendante, vous la voulez deux fois plus rapides, c'est à dire sous la forme de trois croches au lieu de trois noires :

Voici tout ce que vous devez taper :

(realize (score a=((:c)(:d)(:e)) a (:f :8th a)))

Vous pouvez associer à toute sous-structure une indication de voix comme :bass ou :soprano. La plus simple façon de décrire cette cellule à deux voix :

est :

(realize

  (score :sync

(:treble (:c)(:d)(:e))

(:bass (:c3)(:g2)(:c3)) ) )

Le mot-clé :sync indique simplement que les sous-structures sont superposées (elles débutent en même temps) plutôt que juxtaposées. La disposition en trois lignes de l'expression est uniquement pour la lisibilité et n'a aucune incidence sur le résultat.

Pour finir, voici un exemple d'une sous-structure répétée 4 fois :

(realize (score 4*((:c)(:g)(:e)(:g))))

Avec un peu de pratique, vous constaterez que cette manière de décrire la musique est simple et plutôt efficace. compo inclut de nombreuses caractéristiques avancées. Une fois que vous serez familiarisés avec ces bases, nous vous encourageons à consulter la documentation de référence pour aller plus loin.

Bonne chance, en espérant que compo vous sera utile.