Mélodie au point de croix

Une image dessinée au point de croix peut-elle être interprétée comme une mélodie ? Une solution serait celle exposée dans cet article.

Exemple d'introduction

Considérons un fichier lilypond(1)minimal dont le contenu est :

\version "2.19"
\relative c'
{
\key a \major
%lyxy
r2 cis4 e4  e2 a4 a4  a2. fis4   e1 
r2 a4 a4  a4 a4 a4 a4  cis,2 e2   e1 
r2 cis4 d4  e2 a4 b4
%lyxy
}

Nous allons lire les notes comprises entre les deux balises %lyxy et les interpréter comme une image au point de croix.

La méthode sera la suivante :

Une note au format lilypond est transformée en un couple (d, h) où d est la durée de la note et h sa hauteur. Ils seront les coordonnées d'un point de croix.

Durée

La durée est mesurée sur l'axe des abscisses.

L'unité de durée est la double croche. Une croche vaudra 2, une noire 4, etc. Une noire pointée vaudra 4+2=6.

Un coefficient multiplicateur peut être appliqué. Avec un coefficient 2, la double croche aura une durée 2×1=2, la croche 2×2=4, etc.

Hauteur

La hauteur h sera interprétée comme un nombre entier porté sur l'axe des ordonnées. Zéro est la valeur attribuée au La (juste en dessous du do central). En montant la gamme, on aura Si ↦ 3, Do ↦ 5, Ré ↦ 7, etc. Sib ↦ 1, Do# ↦ 6, etc.

Silences

Les silences auront une hauteur fictive hors de portée (255). Ils ne sont représentés par aucun signe. Il feront avancer le curseur de la valeur de leur durée.

pagination

Les premières mesures forment des points de croix en rouge. La largeur du canevas du code source fourni est prévue pour contenir l'équivalent de 8 noires (deux mesures de 4/4). A la fin de cette largeur de page, le curseur revient à l'origine et une nouvelle couleur est utilisée pour dessiner les points de croix.

Exemple 1

Le bout de code lilypond ci-dessus produit la partition :

partition lilypond

Et l'image au point de croix obtenue est :

point de croix

Ce n'est pas de l'art, c'est du point de croix.

Conversion lilypond vers couples durée hauteur

Voici le code source des fichiers lyxy.h et lyxy.cc. Il admet un paraètre qui est le nom du fichier lilypond sans l'extentension ".ly".

La syntaxe de la fonction lyxy(const char *s, int&x, int&y) est lyxy word, x, y)word est le mot lilypond à traiter et x et y sont respectivement la durée et la hauteur à calculer.

Elle utilise le module d'expressions régulières regex. Elle transforme une note au foramt lilyopnd en un couple (x, y) (exemple cis4(8, 17)). Elle se conforme à la méthode de lilypond qui place une note avec au plus une quarte de la précédente. Voir hauteur des notes du manuel de lilypond.

Quand à lyxy(string name) elle ne fait que les entrée sorties.

Point de croix

Aucune image, aucun dessin n'est utilisé. Tout est fait en C avec la mervilleuse librairie GD (voir article suivant).

Pour commencer il faut programmer le dessin d'une toile (toile aïda). On doit y voir le fil de tarme et le fil de chaîne s'entrecroiser, et les petits trous où piquer.

Ensuite il faut faire une procédure pour marquer une croix.

Enfin il faut lire le fichier produit par lyxy et faire les croix.

Codes source en C corss-stitch.h et corss-stitch.c

Dans le premier on peut modifier certaines constantes qui fixent les paramètres du dessin (largeur, hauteur, pas, marge, échelle, couleurs de l'aïda, couleurs des points de croix).

Exemple 2

Voici en exmple le tableau au point de croix de la mélodie de la chanson Ballade des dames du temps de jadis.

Fichier source lilypond

\version "2.19"
% mélodie
melodie = \relative c'
{
   \key c \major
   \time 3/4
   %\autoBeamOff
    r4 r4 c8 e8 \bar ".|" g4 e8 [ c8 ] e8 g8 | c2 b8 c8 | 
   g4 d8 [d] g f | e4 c c8 e | g4  e8 [c] e g | 
   c2 b8 c8 | g4 d8 [d] g f | e4 c4. c8 | 
   a' [a] a [b] c d |  c4 \( a8 \)  [a] b c | b4 \( g8 \) [g] a b | 
   a2     a8 g | f4   f8 [d] e f | g4 \( c \) b8 c8 | 
   g4 \( d8 \) [d] g f | e2    a8 g8 | f4   f8 [g] a b | 
   c4 \( e \) c8 a | g4   g8 [e]  f d | c2.  \bar "|."
} % mélodie
 
\score {
   \melodie
   \layout {}
}

Partition produite par lilypond :

partition

Tableau au point de croix :

point de croix

Notes

(1)

Lilypond est un excellent logiciel libre de notation musicale, qui permet d'éditer des partitions musicales de très grande qualité.




Réalisé avec Qlam - LGPL