Subject: raccourci de saisie rythmique

From: Daniel Cartron <[email-masked]>
Date: Fri, 03 May 2013 14:59:05 +0200

Bonjour à tous,

Il me semble avoir lu un truc relatif à ça ici mais il y a un bon moment et je 
ne sais mm plus comment c'était intitulé...

Voilà mon besoin : j'écris 
a16*4
et je voudrais que lily comprenne
a16 r a r
et même plus si c'est possible qu'elle comprenne
a16^"A" r a^"a" r

Ce serait vraiment top.

La raison de cette demande est que je reprend le boulot sur l'histoire de 
tablatures d'accordéon diatonique, que j'avais initiée, qui a été reprise par 	
Pen Beuz et que je reprend à nouveau. Entre ses idées et les miennes on 
devrait y arriver mais si on peut le faire sans passer par un module python 
externe ce serait nettement plus cool.

Donc merci de me dire ce qui est possible.

J'aurai d'autres question à ce sujet mais je ferai un fil séparé par question, 
techniquement ce sera trop différent pour rester dans le mm fil.

-- 
Cordialement, Daniel Cartron
« Le drame de la vieillesse, ce n'est pas que l'on se fait vieux, c'est qu'on 
reste jeune. »
Oscar Wilde

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Fri, 3 May 2013 15:54:56 +0200

Bonjour Daniel,

Je pense que tu dois penser à la commande :

\repeat unfold 4 { a16^"A" r }

voir ici :
http://www.lilypond.org/doc/v2.16/Documentation/notation/using-an-extra-voice-for-breaks.fr.html

---

From: Daniel Cartron <[email-masked]>
Date: Fri, 03 May 2013 16:02:06 +0200

> \repeat unfold 4 { a16^"A" r }

non ça c'est tellement basique que je connais par coeur, mais j'ai vu ici un 
jour une astuce que je pourrais appeler une fonction en scheme qui converti 
a16*4 en a16^"A" r a^"a" r.

le but est très clairement que l'utilisateur tape :
a16*4 g a d |

et que derrière ça soit compris (et gravé) comme :
a16^"A" r a^"a" r g16^"G" r g^"g" r a16^"A" r a^"a" r d16^"D" r d^"d" r |

-- 
Cordialement, Daniel Cartron
« Moi je veux tout, tout de suite -et que ce soit entier- ou alors je refuse !
Je ne veux pas être modeste, moi, et me contenter d'un petit morceau si j'ai 
été bien sage. Je veux être sûre de tout aujourd'hui et que cela soit aussi 
beau que quand j'etais petite - ou mourir. »
Jean Anouilh - Antigone

---

From: Gilles <[email-masked]>
Date: Sat, 04 May 2013 11:33:59 +0200

> a16^"A" r a^"a" r g16^"G" r g^"g" r a16^"A" r a^"a" r d16^"D" r d^"d" r |

Pour ce qui est des rythmes, avec les fonctions decrites ici :
   http://lsr.dsi.unimi.it/LSR/Item?id=654
on peut faire

%%%%%%%%%%%%%%%%%%%%%
pattern = \samePitch { c16 r c r}
music = \relative { a b c d}

\changePitch \pattern \music

=> { a16 r a r b r b r c r c r d r d r }

Pour les textScript, on peut les ajouter automatiquement soit avec une  
fonction \musicMap, soit avec un engraver personnalisé ( il y a des  
exemples qui ajoutent un TextScript justement).

-- 
Gilles

---

From: Daniel Cartron <[email-masked]>
Date: Sat, 04 May 2013 15:28:20 +0200

>    http://lsr.dsi.unimi.it/LSR/Item?id=654

ça me semble vraiment intéressant,mais je crois que je vais profiter pour 
l'instant du soleil, il nous a assez manqué...

ensuite j'épluche et si je n'ai pas tout compris je reviens t'ennuyer :-)

-- 
Cordialement, Daniel Cartron
« Le meilleur moyen de faire tourner la tête a une femme, c'est de lui dire 
qu'elle a un joli profil. »
Sacha Guitry

---

From: Daniel Cartron <[email-masked]>
Date: Mon, 06 May 2013 10:03:48 +0200

>    http://lsr.dsi.unimi.it/LSR/Item?id=654

ok ça fait une partie de ce que je veux, mais pas tout... C'est quand mm un 
bon début

mais la syntaxe de scheme me semble tellement déroutante que je me permet de 
poser ma question avant de me plonger dans l'étude d'un truc qui serait peut-
être pas le bon :

avec \changePitch je peux transformer 

c4 c en c16 r c r, et meme en c16^"C" r c^"c" r

mon pb est que je voudrais que le texte de ^"" varie avec le nom de la note :
a4 a devrait donner  a16^"A" r a "a" r et de mm pour toutes les notes.

Est-ce faisable et comment ? Un tableau de correspondance, pouvoir utiliser le 
nom de la note comme variable ???

Ou je dois explorer ce dont tu parles ci-dessous ?

Merci beaucoup

---

From: Gilles <[email-masked]>
Date: Mon, 06 May 2013 11:45:24 +0200

Le Mon, 06 May 2013 10:03:48 +0200, Daniel Cartron <[email-masked]> a  

> ok ça fait une partie de ce que je veux, mais pas tout... C'est quand mm  

Essaie ça

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\include "changePitch.ly"

pattern = \samePitch { c16^"bidon1" r c^"bidon2" r}
music = \relative { a b c d}

maFonction = #(define-music-function (parser location music)(ly:music?)
"[Decrire la fonction]"
#{ \musicMap
    #(lambda(evt)
      (case (ly:music-property evt 'name)
        ((NoteEvent)
           (let* ((arti (ly:music-property evt 'articulations))
                  (text (and (pair? arti)
                             (ly:music-property (car arti) 'text #f)))
                  (index (ly:pitch-notename (ly:music-property evt  
'pitch))))
              (if text (ly:music-set-property! (car arti) 'text
                 (cond ((string=? text "bidon1")(list-ref '("C" "D" "E" "F"  
"G" "A" "B") index))
                       ((string=? text "bidon2")(list-ref '("c" "d" "e" "f"  
"g" "a" "b") index))
                       (else text))))

              evt))
        (else evt))
      )
#})

%% { \displayMusic c8^"hello" }

{ \maFonction \music }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

-- 
Gilles

---

From: Daniel Cartron <[email-masked]>
Date: Mon, 06 May 2013 17:19:07 +0200

> > ok ça fait une partie de ce que je veux, mais pas tout... C'est quand mm

bon je suis désolé mais depuis ce midi je me bats contre ce code et pas 
moyen de le faire marcher... Je dois ne pas recopier ce qu'il faut là où il 
faut. Mon envie est de mettre la fonction dans le fichier changePitch.ly, 
les variables pattern et music étant dans le fichier qui contient ma 
musique. Et bien entendu pattern ni music n'ont ce nom exact, c'est plutôt 
patternBass et Bass.

J'ai fait tous les essais imaginables et soit j'ai une des erreurs suivantes 
: 
unexpected STRING
    \changePitch \pattern 
                          \music

chaîne d'échappement inconnue : « \music »
    \changePitch \pattern 
                          \music

soit ça compile en mettant bidon1 et bidon2...

Donc encore une fois désolé mais si tu pouvais m'aider à nouveau.

-- 
Cordialement, Daniel Cartron
« Rivalisant Avec Corneille Il Nous Étonna .»
Portrait acrostiche anonyme.

---

From: Gilles <[email-masked]>
Date: Mon, 06 May 2013 18:39:02 +0200

> musique. Et bien entendu pattern ni music n'ont ce nom exact, c'est  
    A ce moment là, il faut modifier la fonction pour qu'elle accepte 2
paramètres, 1 pour pattern, 1 pour music

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%% A mettre dans changePitch.ly

maFonction = #(define-music-function (parser location pattern  
music)(ly:music? ly:music?)
"[Decrire la fonction]"
#{ \musicMap
    #(lambda(evt)
      (case (ly:music-property evt 'name)
        ((NoteEvent)
           (let* ((arti (ly:music-property evt 'articulations))
                  (text (and (pair? arti)
                             (ly:music-property (car arti) 'text #f)))
                  (index (ly:pitch-notename (ly:music-property evt  
'pitch))))
              (if text (ly:music-set-property! (car arti) 'text
                 (cond ((string=? text "bidon1")(list-ref '("C" "D" "E" "F"  
"G" "A" "B") index))
                       ((string=? text "bidon2")(list-ref '("c" "d" "e" "f"  
"g" "a" "b") index))
                       (else text))))
              evt))
        (else evt))
      )
    \changePitch $pattern \music
#})

%%%%%%%%%%  A mettre dans le fichier courant
\include "changePitch.ly"
\language "italiano"

patternAvecLeNomQuonVeut = \samePitch { do16^"bidon1" r do^"bidon2" r }
music = \relative { la si do re }

{ \maFonction \patternAvecLeNomQuonVeut \music }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

NB
Je te conseille de partir de la dernière version (aujourd'hui !) de  
"changePitch.ly", qui est \language indépendant.
On pourra mettre indifféremment :
   \include "changePitch.ly"
   \language "italiano"
ou
   \language "italiano"
    \include "changePitch.ly"

http://gillesth.free.fr/Lilypond/changePitch/

-- 
Gilles

---

From: Daniel Cartron <[email-masked]>
Date: Mon, 06 May 2013 17:32:18 +0200

Le lundi 6 mai 2013 17:19:07 Daniel Cartron a écrit :
> Et bien entendu pattern ni music n'ont ce nom exact, c'est plutôt 
> patternBass et Bass.

Pour être un peu plus précis j'aimerais beaucoup que ça puisse fonctionner 
comme changepitch, à savoir que je met là où j'en ai besoin dans le fichier 
.ly

\mafonction \monpattern \mamusic

avec la définition de monpattern et de mamusic dans ce mm fichier et tout le 
reste dans le fichier que j'inclue.

-- 
Cordialement, Daniel Cartron
« Qui aime bien ses lunettes ménage sa monture. »
Francis Blanche - Mon oursin et moi

---

From: Daniel Cartron <[email-masked]>
Date: Mon, 06 May 2013 22:33:38 +0200

> paramètres, 1 pour pattern, 1 pour music

oui maintenant que tu le dis, ça semble logique :-)

cependant j'ai maintenant une nouvelle erreur 
<string>:3:31: Erreur : syntax error, unexpected STRING
    \changePitch \lilyvartmpca 
                               \music

et je ne trouve nulle part trace de ce \lilyvartmpca...

-- 
Cordialement, Daniel Cartron
« On fait toujours plaisir aux gens en venant les voir; si ce n'est en 
entrant, c'est en sortant. »
dom Crochon - Inventeur de la recette de Salmis aux Bécasses
Abbaye de Saint Sulpice de Lompnes

---

From: Gilles <[email-masked]>
Date: Tue, 07 May 2013 00:00:10 +0200

> et je ne trouve nulle part trace de ce \lilyvartmpca...

Oups ! c'est moi qui ai fait une erreur bête. J'ai été trop vite. Il faut
remplacer dans \maFonction
       \changePitch $pattern \music par
       \changePitch $pattern $music
Désolé.

Ceci dit, tu dis dans un autre message que tu as la version 2.14.
La version réclamée par "changePitch.ly" est 2.16, car la structure
interne des notes a changé (il a fallu que je réécrive pas mal de
fonctions de la 2.14 à la 2.16 ...).
Je doute donc que ça marche pour ta version Lilypond, avec la dernière
version de \changePitch.
Par contre dans "ma grande sagesse" ..., j'ai sauvegardé la version pour
2.14 :-)
Le fichier s'appelle "changePitch2.14.ly" et c'est ici :
http://gillesth.free.fr/Lilypond/changePitch/

Bon courage

------------------------------------------------------------

Je réécris le code complet, pour plus de clarté

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% A mettre dans "changePitch.ly" (ou "changePitch2.14.ly" )

maFonction = #(define-music-function (parser location pattern  
music)(ly:music? ly:music?)
"[Decrire la fonction]"
#{ \musicMap
    #(lambda(evt)
      (case (ly:music-property evt 'name)
        ((NoteEvent)
           (let* ((arti (ly:music-property evt 'articulations))
                  (text (and (pair? arti)
                             (ly:music-property (car arti) 'text #f)))
                  (index (ly:pitch-notename
                           (ly:music-property evt 'pitch))))
              (if text (ly:music-set-property! (car arti) 'text
                 (cond ((string=? text "bidon1")
                         (list-ref '("C" "D" "E" "F" "G" "A" "B") index))
                       ((string=? text "bidon2")
                         (list-ref '("c" "d" "e" "f" "g" "a" "b") index))
                       (else text))))
              evt))
        (else evt)))
    \changePitch $pattern $music
#})
%%%%%%%%%%  A mettre dans le fichier courant
\include "changePitch.ly"
% \include "changePitch2.14.ly"
\language "italiano"

patternAvecLeNomQuonVeut = \samePitch { do16^"bidon1" r do^"bidon2" r }
musicAvecLeNomQuonVeut = \relative { la si do re }

{ \maFonction \patternAvecLeNomQuonVeut \musicAvecLeNomQuonVeut }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

-- 
Gilles

---

From: Daniel Cartron <[email-masked]>
Date: Tue, 07 May 2013 07:15:31 +0200

>        \changePitch $pattern $music

Pas grave mais ça je ne l'aurais jamais trouvé tout seul ;-)

> Par contre dans "ma grande sagesse" ..., j'ai sauvegardé la version pour

c'est la version que j'utilise depuis le début, ça j'avais trouvé tout seul 
par contre...

Alors avec ce nouveau code j'ai encore deux problèmes :
 le texte bidon n'est pas remplacé par celui de la liste
 si je répète le motif do16^"bidon1" r do^"bidon2" r quatre fois le dernier r 
disparait... Y compris si je le fais suivre avec un autre motif.

par contre points positifs, j'arrive à enchainer plusieurs motifs différents, 
et j'ai aussi testé d'avoir trois list-ref au lieu de deux et ça marche aussi, 
le texte bidon s'affiche bien au-dessus de mes notes.

Dommage que le remplacement du texte bidon ne se fasse pas, sinon c'est top.

Dans l'idéal si j'avais pu avoir un pattern qui remplace 
do re par do16^"bidon1" r re^"bidon2" r (qui agisse sur deux notes et non une) 
ce serait encore plus top... Mais là je suis probablement trop gourmand???

-- 
Cordialement, Daniel Cartron
« Si vous ne vous sentez pas bien... faites-vous sentir par un autre! »
Francis Blanche

---

From: Gilles <[email-masked]>
Date: Tue, 07 May 2013 11:50:55 +0200

>  le texte bidon n'est pas remplacé par celui de la liste

Ah mais oui bien-sûr \maFonction ne peut marcher que sous 2.16 :-(
J'aurai dû y penser.
Voici une version pour 2.14. Après j'arrête ...

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Pour Lilypond 2.14
maFonction = #(define-music-function (parser location pattern  
music)(ly:music? ly:music?)
"[Decrire la fonction]"
#{ \musicMap
    #(lambda(evt)
      (case (ly:music-property evt 'name)
        ((EventChord)
           (let* ((elts (ly:music-property evt 'elements))
                  (last-elt (and (pair? elts)(last elts))))
             (if last-elt
               (let ((pitch (ly:music-property (first elts) 'pitch #f))
                     (text (ly:music-property last-elt 'text #f)))
                 (if (and text pitch)
                   (let ((index (ly:pitch-notename pitch)))
                     (ly:music-set-property! last-elt 'text
                       (cond ((string=? text "bidon1")
                                (list-ref '("C" "D" "E" "F" "G" "A" "B")  
index))
                             ((string=? text "bidon2")
                                (list-ref '("c" "d" "e" "f" "g" "a" "b")  
index))
                             (else text)))))))
             evt))
        (else evt)))
    \changePitch $pattern $music
#})

-- 
Gilles

---

From: Daniel Cartron <[email-masked]>
Date: Tue, 07 May 2013 15:36:04 +0200

Le mardi 7 mai 2013 11:50:55 Gilles a écrit :
> Ah mais oui bien-sûr \maFonction ne peut marcher que sous 2.16
> J'aurai dû y penser.

bon finalement j'ai trouvé comment avoir la 2.16, mais ça m'a vallu de tout 
réinstaller linux, d'ailleurs tout n'est pas fini et maintenant avec ta 
version 2.13 effectivement ça marche nickel.

> Après j'arrête ...

Désolé de t'avoir à ce point importuné, et dommage que tu n'aies pas un peu de 
temps pour éventuellement au moins me dire où trouver comment continuer à 
exploiter ton code, car il me semble que c'est exactement ce dont j'ai besoin 
pour la suite aussi.

En tout cas mille mercis pour tout.

-- 
Cordialement, Daniel Cartron
« Il vaut mieux marcher sur une tortue réveillée que sur un patin à roulettes 
endormi. »
François Cavanna - Le saviez-vous ?

---

From: Gilles <[email-masked]>
Date: Tue, 07 May 2013 16:11:33 +0200

> réinstaller linux, d'ailleurs tout n'est pas fini

Oups, effectivement. Je suis un débutant Linux (Mageia), et ça reste  
encore pour moi un système un peu pour geeks, même si ça s'améliore.

>> Après j'arrête ...
> Désolé de t'avoir à ce point importuné, et dommage que tu n'aies pas un  
> peu de temps pour éventuellement au moins me dire où trouver comment  
> continuer à
  Le "Après j'arrête ...", c'était surtout pour me raisonner, moi, car  
j'avais des corvées administratives à faire, et le scheme c'est un peu  
pour moi comme les mots croisées ou le Suduku pour d'autres. Il faut  
rester les pieds sur terre et savoir s'arrêter.
J'ai fait maintenant ces corvées. Une partie seulement en fait :-( mais tu  
peux continuer à poser des questions.

-- 
Gilles

---

From: Daniel Cartron <[email-masked]>
Date: Tue, 07 May 2013 18:50:16 +0200

> encore pour moi un système un peu pour geeks, même si ça s'améliore.

Et encore t'as pas connu ça du temps où il fallait une quinzaine de 
disquettes, et sans interface graphique... Remarque moi non plus je suis 
arrivé juste après, dans les premières versions de kde et je peux te dire que 
les progrès ont été énormes en si peu de temps quand on regarde la durée de 
développement de windows, mais là je m'égare...

> pour moi comme les mots croisées ou le Suduku pour d'autres. 

Ça se sent et ça me laisse pantois...

> Il faut  
> J'ai fait maintenant ces corvées. Une partie seulement en fait  mais tu  

Bon d'abord les bonnes nouvelles : j'ai maintenant une 2.16, j'ai chargé ton 
dernier code, mis la bonne versin de ta fonction et ça marche !!! 

Maintenant deux questions : 

pourquoi ça bugge sur la dernière note ? Mon dernier r n'est pas affiché et ça 
me fait du bazar quand j'alterne différents motifs. J'ai cru voir dans ta doc 
que c'est un pb connu, ya moyen d'outrepasser ?

Si j'ai bien compris le concept de la fonction elle transforme 
re4 en re16^"D" r re^"d" r (quelle que soit la durée initiale du ré 
d'ailleurs), c'est bien ça ? Or parfois j'aimerais avoir un pattern qui prenne 
deux notes pour faire ça :
re8 do --> re16^"D" r do^"c" r
C'est le genre de truc qui arrive assez régulièrement dans la musique que 
j'écrit, et tous mes essais de pattern tordus me mettent des barres de mesure 
malvenues au milieu de ma musique, donc j'ai laissé tomber. Si tu me dis que 
c'est faisable mais que tu ne veux pas t'en occuper je chercherai mais si 
c'est pas faisable tant pis il y aura des morceaux écrits en dur...

-- 
Cordialement, Daniel Cartron
«  Je voudrais que la terre s'arrête pour descendre. »
Serge Gainsbourg

---

From: Gilles <[email-masked]>
Date: Tue, 07 May 2013 23:09:25 +0200

> que c'est un pb connu, ya moyen d'outrepasser ?
C'est volontaire, car j'ai eu des cas où je ne voulais pas ce dernier
silence.
Pour l'avoir, il suffit de rajouter un skip (un s) après la dernière note
(c'est expliqué dans le paragraphe 4 de changePitch-doc.pdf
[ http://gillesth.free.fr/Lilypond/changePitch/ ]) :
music = { a b c d s }

> re8 do --> re16^"D" r do^"c" r
Il suffit d'enlever le \samePitch dans le pattern
pattern = { c16^"bidon1" r c^"bidon2" r }
\maFonction => { a16^"A" r b^"b" r
                        c^"C" r d^"d" r  etc ....
		}

Si c'est pas ça que tu veux, dis-moi le résultat que tu souhaites sur une
mesure ou 2, ça sera plus simple.
Comme tu peux le voir dans le dernier exemple de la doc, en trouvant les
bons patterns on peut faire des choses assez sympa.

-- 
Gilles

---

From: Daniel Cartron <[email-masked]>
Date: Tue, 07 May 2013 23:30:53 +0200

> bons patterns on peut faire des choses assez sympa.

j'avoue que je n'ai pas épluché celui-ci, un peu touffu par rapport à mon 
besoin mais je vais le faire.

Je me permet de te faire un petit mail en privé pour te dire mieux ma démarche 
sans polluer la liste.

-- 
Cordialement, Daniel Cartron
« Qui a de l'humour a déjà presque du génie. Celui qui n'est que spirituel n'a 
généralement même pas d'esprit. »
Arthur Schnitzler

---

From: Daniel Cartron <[email-masked]>
Date: Wed, 08 May 2013 11:03:35 +0200

> Pour l'avoir, il suffit de rajouter un skip (un s) après la dernière note

j'avais oublié de répondre à ça : j'avais essayé et si ça rajoute bien le 
dernier silence, la portée qui fait 4 mesures et tient sur une seule ligne 
passe alors sur deux lignes... Faudrait que je prenne le temps de fignoler les 
tailles de police mais qd mm ça fait bizarre...

-- 
Cordialement, Daniel Cartron
« Le rire sucre les larmes. »
Robert Sabatier - Le livre de la déraison souriante

---

From: Daniel Cartron <[email-masked]>
Date: Wed, 08 May 2013 12:23:56 +0200

> \maFonction => { a16^"A" r b^"b" r

Tout simplement parfait, à ceci près que du coup il faut que je pense à écrre 
8 croches par mesure alors qu'avec le samepitch je dois mettre 4 noires... Ce 
qui est finalement parfaitement logique (enfin pour moi, par rapport à la 
structure de ce que je veux faire)

Reste quand même un gros point noir, toujours dans mon optique : la 
suppression du dernier silence. Peut-on annuler ça ? J'explique pourquoi : 
j'applique ta fonction à une grille d'accords qui est écrite au-dessus de la 
portée (chordmode) et en-dessous sous forme d'indication rythmique. Ta 
fonction me permet de n'écrire qu'une seule fois cette grille et ça s'affiche 
correctement partout, sauf que si je rajoute un s à la fin d'une partie, ça 
s'affiche correctement en bas et plus du tout en haut, tout se décale du s 
autant de fois que j'applique le motif... 

En fait le problème n'existe que si je change de motif en cours de morceau, 
mais ça arrive pas si rarement que ça. Dans ce cas je dois contourner en 
écrivant deux grilles différentes, une avec s et l'autre sans, ce qui est 
dommage.

> bons patterns on peut faire des choses assez sympa.

Oui et ça me donne pas mal d'autres idées, faut vraiment que je me fasse des 
exercices de création de motifs...

-- 
Cordialement, Daniel Cartron
« Pourquoi faire simple quand on peut faire compliqué... »
Jacques Rouxel - Les shadoks

---

From: Gilles <[email-masked]>
Date: Wed, 08 May 2013 13:51:01 +0200

Le Wed, 08 May 2013 11:03:35 +0200, Daniel Cartron <[email-masked]> a  

> tailles de police mais qd mm ça fait bizarre...

Tu peux peut-êre mettre
  s \insert \break toutes les 4 mesures ( voir chapitre 5) de  
changePitch-doc.pdf ),
ou bien l'associer en simultané à :
  breaks = \repeat unfold 10 { s1*4 \break }

-- 
Gilles

---

From: Gilles <[email-masked]>
Date: Wed, 08 May 2013 13:58:02 +0200

> écrivant deux grilles différentes, une avec s et l'autre sans, ce qui est
Bon là, j'ai vraiment du mal à comprendre. Un petit exemple ( ou même tout  
le projet en entier), ça sera plus simple pour moi.

-- 
Gilles

---

From: Daniel Cartron <[email-masked]>
Date: Wed, 08 May 2013 14:18:03 +0200

> le projet en entier), ça sera plus simple pour moi.

oui c'est vraiment la bonne solution, je fabrique un fichier qui contient tous 
mes besoins et problèmes et je te l'envoie. Donne moi jusqu'à ce soir que je 
te fignole un truc bien tordu ;-)

Ha oui je réintègre dans le fichier tout ce que j'ai externalisé, mais pas ton 
code changepitch, uniquement ma fonction perso que tu m'as écrite exprès pour 
moi personnellement que je suis trop flatté votre honneur (bon fais pas gaffe, 
la digestion me fait toujours cet effet...)

-- 
Cordialement, Daniel Cartron
« Bien-être : état d'esprit produit par la contemplation des ennuis d'autrui. 
»
Ambrose Bierce

---

From: Daniel Cartron <[email-masked]>
Date: Thu, 09 May 2013 17:19:43 +0200

Bonjour,

> le projet en entier), ça sera plus simple pour moi.

Voici un petit exemple de ce que je veux faire. Quelle que soit la façon 
dont je termine la partie A, avec ou sans s (ligne 94) ça me met le souk 
dans la partition... Alors imagine si je dois changer plusieurs fois de 
motif dans le morceau, et ça peut arriver.

Dans la musique de diatonique on a toujours besoin du dernier silence, donc 
le mieux serait que je sache quelle partie de ton code est concernée et que 
je la retire, si c'est possible. D'ailleurs ai-je besoin de tout ce que tu 
as écrit ou puis-je n'en conserver qu'une seule partie ?

Pour la partie médiane de la tablature c'est tout vide pour l'instant, ça 
demande encore d'autres adaptations de ton travail, mais ce sera plus trapu, 
il faudrait remplacer par exemple un do' par un s_\markup{} et le re'' par 
un autre markup, etc. Si tu as envie et le temps de relever un défi scheme 
je serai heureux de t'expliquer tout en détail.

Et pour la partie basses (celle sur laquelle j'applique ta fonction) en fait 
l'idéal serait que ça me fasse ça (pour le rendu midi)
do4 donne : do,16^"Bs" r <do sol>16^"Ch" r
la première occurence de la note descend d'une octave et la deuxième est 
transformée en accord mais sans la tierce... Là je sens que je deviens trop 
gourmand...

Merci encore une fois pour tout le temps que tu me consacres.

-- 
Cordialement, Daniel Cartron
« Le bonheur, c'est de désirer ce que l'on a. »
Saint Augustin

---

From: Gilles <[email-masked]>
Date: Fri, 10 May 2013 00:36:51 +0200

> dans la partition...

Pourquoi forcément à la ligne 94.
Tu peux remplacer la ligne 120 par :

Basses = {
  	\tabDiatoBass \Scottish { \BassesScottish s }
         \tabDiatoBass \Valse { \BassesValse s }
}

ou plus radical, dans la fonction \tabDiatoBass, mettre

   \changePitch $pattern  { $music s }

-- 
Gilles

---

From: Gilles <[email-masked]>
Date: Fri, 10 May 2013 01:51:13 +0200

> transformée en accord mais sans la tierce...

Si c'était pour le score, ça serait très difficile, mais pour le midi  
uniquement, on peut faire ceci.

tabDiatoBassMidi = #(define-music-function (parser location patI patII  
music)
                       (ly:music? ly:music? ly:music?)
"Pour le midi"
#{ <<
       \changePitch $patI \transpose do' do { $music }
       \changePitch $patII $music
       \changePitch $patII \transpose do sol { $music }
#})

%% pattern pour midi
ScottishMidiI =  { do16 r r8 }
ScottishMidiII = { r8 do16 r }
ValseMidiI = { do8 r r2 }
ValseMidiII = \samePitch { r4 do8 r do r }

BassesMidi = {
    \tabDiatoBassMidi \ScottishMidiI \ScottishMidiII \BassesScottish
    r16      % bon ok, là il faut mettre les silences à la main
    \tabDiatoBassMidi \ValseMidiI \ValseMidiII \BassesValse
    r8
}

Si tu fais \new Voice \BassesMidi en mode \layout, tu auras plein  
d'erreurs de superposition, mais en mode \midi, elles ne devraient plus y  
être. [ à tester ...]

-- 
Gilles

---

From: Daniel Cartron <[email-masked]>
Date: Fri, 10 May 2013 11:29:59 +0200

>    \changePitch $pattern  { $music s }

c'est ce qu'on appelle l'oeuf de christophe colomb...

Effectivement ça marche parfaitement, et de façon transparente. Je n'ai pas 
testé de structures trop complexes mais sur le morceau transmis ça le fait 
parfaitement bien.

Pour la sortie midi c'est tout simplement bluffant, tes fonctions sont 
vraiment très puissantes.

Par contre j'ai un problème, en utilisant la fonction telle quelle elle ne 
prend pas en compte les repeat volta, j'ai bien essayé d'y mettre des 
\unfoldRepeats ici ou là rien n'y fait...

Tu as une idée ?

-- 
Cordialement, Daniel Cartron
« Quand on a oublié d'acheter du sucre, on peut parfaitement sucrer son café 
avec une betterave, mais c'est plus long. »
François Cavanna - Le saviez-vous ?

---

From: Gilles <[email-masked]>
Date: Sat, 11 May 2013 21:54:54 +0200

> prend pas en compte les repeat volta,j'ai bien essayé d'y mettre des

Non, \changePitch \pattern \newnotes transforme en interne \newnotes en  
une liste de notes et est indépendante de la structure initiale.
Il y a des solutions, mais j'ai dû d'abord corriger un comportement de  
\changePitch qui était gênant et que je n'avais pas pris le temps de  
faire. (C'est pour cela que je réponds si tard).
On a plus mainteant à s'occuper des silences à rajouter après coup, et la  
fonction tabDiatoBassMidi devient :

#{

    <<
       \changePitch $patI \transpose do' do { $music s }
       \changePitch $patII { $music s }
       \changePitch $patII \transpose do sol { $music s }
#})

Il faut télécharger la dernière version de changePitch.ly
http://gillesth.free.fr/Lilypond/changePitch/

                              ---------

> Tu as une idée ?

2 solutions.

   ----- Solution 1 -----
Utiliser une fonction \copyVoltaRepeats qui fait partie du snippet suivant
      http://lsr.dsi.unimi.it/LSR/Item?u=1&id=767

BasseMidi devient :

BassesMidi = \copyVoltaRepeats \Song {
    \tabDiatoBassMidi \ScottishMidiI \ScottishMidiII \BassesScottish
    \tabDiatoBassMidi \ValseMidiI \ValseMidiII \BassesValse
}

\BasseMidi contient maintenant la même structure \repeat volta que \Song,  
et tout se passe bien quand on appelle \unfoldRepeats dans la partie midi.
Ci-joint, ton fichier utilisant ces fonctions.

   ----- Solution 2 -----
La solution 1 ne marche qu'avec les  \repeat volta, mais ne marche pas  
avec les codas, signes de renvois, Da Capo etc.
Je préfère utiliser la solution décrite ici
http://lists.gnu.org/archive/html/lilypond-user/2012-08/msg00021.html
Elle permet comme cela de'écrire qu'une seule fois la structure, dans la  
variable \global, et après on peut faire très facilement une fonction qui  
transforme la structure de la musique en une version midi.

-- 
Gilles

---

From: Daniel Cartron <[email-masked]>
Date: Sun, 12 May 2013 09:28:53 +0200

Le samedi 11 mai 2013 21:54:54 Gilles a écrit :
Bonjour,

> faire. (C'est pour cela que je réponds si tard).

je me doute bien que tu n'as pas que ça à faire de passer tes we à t'occuper 
de mes questions...

> On a plus mainteant à s'occuper des silences à rajouter après coup

ça c'est sympa.

> transforme la structure de la musique en une version midi.

Tout simplement génial.

J'ai commencé à étudier tout ce que font tes fonctions, je sudoborre que 
certaines vont encore m'aider pour la suite du projet, la plus complexe, ça va 
être chaud, il va falloir analyser simultanément Song et Basses...

-- 
Cordialement, Daniel Cartron
« Le whisky est le cognac du con. »
Pierre Desproges - Dictionnaire superflu à l'usage de l'élite et des biens 
nantis

---

From: Daniel Cartron <[email-masked]>
Date: Sun, 12 May 2013 09:43:33 +0200

> Ci-joint, ton fichier utilisant ces fonctions.

Au fait merci pour ça aussi et pour ceux qui auraient regardé le contenu, les 
basses c'est n'importe quoi, en fait c'est pas du sol la mais du la mi qu'il 
faut lire. J'ai rectifié pour pouvoir écouter du midi pas trop horrible :-)

-- 
Cordialement, Daniel Cartron
« Un gentleman, c'est quelqu'un qui sait jouer de la cornemuse et qui n'en 
joue pas. »
Pierre Desproges - Le tribunal des flagrants délires