Subject: Ajout de staccato

From: Philhar <[email-masked]>
Date: Mon, 24 Sep 2012 08:34:09 -0700 (PDT)

Bonjour,

J'avais récupéré une fonction dans le LSR qui permet d'ajouter des signes
d'articulation à une série de notes. Et ça marchait très bien... jusqu'au
passage en 2.16 qui l'ignore complètement. Qu'est-ce qui a changé ?
Voici le code:

\version "2.16.0"

	%%% addStacc ..........................................
			#(define (make-script x)
		 (make-music 'ArticulationEvent
								 'articulation-type x))

			#(define (add-script m x)
			(if
				(equal? (ly:music-property m 'name) 'EventChord)
				(set! (ly:music-property m 'elements)
							(append (ly:music-property m 'elements)
												(list (make-script x)))))
			m)

			#(define (add-staccato m)
				(add-script m "staccato"))

			addStacc =
			#(define-music-function (parser location music) 
								(ly:music?)
					(music-map add-staccato music))	   
	%%% fin addStacc ............................................

\score {
  \relative c'' { 
    c c c c
    \addStacc { c c c c }		%% ajoute un point (staccato) aux notes entre { }
	}
}      

Cordialement,
Michel

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Ajout-de-staccato-tp7578476.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Jean-Charles Malahieude <[email-masked]>
Date: Mon, 24 Sep 2012 19:31:06 +0200

> passage en 2.16 qui l'ignore complètement. Qu'est-ce qui a changé ?

En pareil cas, j'intégrerais la « formule » dans un fichier d'une 
version précédente et comparerais avec ce qui résulte d'un
convert-ly. Les changements de syntaxe sont normalement réalisés 
automatiquement (comme \markuplines qui est devenu \markuplist).

@+
Jean-Charles

---

From: Philhar <[email-masked]>
Date: Mon, 24 Sep 2012 11:12:18 -0700 (PDT)

>automatiquement (comme \markuplines qui est devenu \markuplist).

convert-ly ne change que le n° de version. 
Je crois d'ailleurs que convert-ly ne modifie pas le code Scheme.

Michel

_______________________________________________
liste de diffusion lilypond-user-fr
lilypond-user-fr@
https://lists.gnu.org/mailman/listinfo/lilypond-user-fr

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Ajout-de-staccato-tp7578476p7578479.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Gilles <[email-masked]>
Date: Mon, 24 Sep 2012 21:59:33 +0200

> passage en 2.16 qui l'ignore complètement. Qu'est-ce qui a changé ?

C'est parce-que la structure interne des notes a changé.
Ce code ne marchera que pour les accords, qui eux n'ont pas changé.
Plusieurs solutions
     1- réécrire soi-même le code en tenant compte de la nouvelle structure  
...
     2- Utiliser la fonction \eventChords qui a été spécialement faite
pour ceux qui voudraient utiliser des "vieilles fonctions".
      \addStacc \eventChords { c c c c }
(voir http://lilypond.org/doc/v2.16/Documentation/changes/index.html )
     3- Utiliser un snippet dont la mise à jour a été faite.
J'utilise celui-ci :
http://lsr.dsi.unimi.it/LSR/Item?id=769
avec la mise à jour pour 2.16 ici :
http://gillesth.free.fr/Lilypond/copyArticulations/copyArticulations.ly

%%%%%%%%
\include "copyArticulations.ly"

addStacc = #(define-music-function (parser location x) (ly:music?)
#{
      \copyArticulations c-. $x
#})

\score {
     \relative c'' {
        c c c c
        \addStacc { c c c c } %% ajoute un point (staccato) aux notes
     }
}
%%%%%%%%

-- 
Gilles

---

From: Gilles <[email-masked]>
Date: Mon, 24 Sep 2012 23:34:36 +0200

> Plusieurs solutions
>      1- réécrire soi-même le code en tenant compte de la nouvelle  
> structure ...

%%%%%%%%%%%%%%%%
\version "2.16.0"

#(define (add-script m x)
   (case (ly:music-property m 'name)
     ((NoteEvent) (set! (ly:music-property m 'articulations)
                      (append (ly:music-property m 'articulations)
                         (list (make-script x))))
                   m)
     ((EventChord)(set! (ly:music-property m 'elements)
                      (append (ly:music-property m 'elements)
                         (list (make-script x))))
                   m)
     (else #f)))

addStacc = #(define-music-function (parser location music)
                 (ly:music?)
           (map-some-music add-staccato music))
%%% fin addStacc ............................................

\score {
   \relative c'' {
     c c c c
     \addStacc { c\p <c e> c-> c }
     %% ajoute un point (staccato) aux notes entre { }
   }
}
%%%%%%%%%%%%%%%%%%%%%%
-- 
Gilles

---

From: Philhar <[email-masked]>
Date: Mon, 24 Sep 2012 21:56:37 -0700 (PDT)

>      1- réécrire soi-même le code en tenant compte de la nouvelle  

Merci Gilles d'avoir réécrit le code de cette fonction. 
Je ne comprends pas grand chose au Scheme, mais j'essaie simplement
d'adapter du code existant à mes besoins personnels. Et là, j'aurais eu bien
du mal.
Je me voyais mal reprendre les centaines de fichiers de musique où j'ai
utilisé cette fonction. Heureusement, j'ai placé la définition de la
fonction dans un fichier Global pour chaque partition, ce qui m'évitera de
revoir les fichiers de musique.

Cordialement,
Michel

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Ajout-de-staccato-tp7578476p7578484.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.