|
From: | Loïc Chahine |
Subject: | fonction qui marche plus / quand on passe d'une version à une autre… |
Date: | Fri, 26 Apr 2013 11:29:10 +0200 |
User-agent: | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:17.0) Gecko/20130328 Thunderbird/17.0.5 |
Bonjour à tous, Je dois dire que je suis un peu agacé. J’avais écrit une magnifique fonction en version 2.15.38, pour les blocs score qui sont identiques. Je comptais généraliser ce genre de procédé (au bout d’un moment, réécrire pour la 59e fois le même \score { gnia gnia gnia… }…), sauf que évidemment en version 2.16 ça compile, mais en fait ça marche pas. J’ai pas de partition, au bout, juste les titre. (Et je découvre aussi que dans Frescobaldi, pour copier-coller la sortie avec les erreurs, bah c’est simple, ça marche pas… C’est mon jour, décidément.) Voici la fonction en question : #(define (add-toc-item parser markup-symbol text) (collect-music-for-book parser (add-toc-item! markup-symbol text))) #(define-public fable-number 0) fableScore = #(define-music-function (parser location leTitre laMorale lAir laClef leLivre laFable) (string? string? string? string? number? number?) (define laStructure (string-append (format #f "~a" leLivre) (string-append "/" (string-append (format #f "~a" laFable) "/structure.ly")))) (define leDessus (string-append (format #f "~a" leLivre) (string-append "/" (string-append (format #f "~a" laFable) "/voix.ly")))) (define laBasse (string-append (format #f "~a" leLivre) (string-append "/" (string-append (format #f "~a" laFable) "/basse.ly")))) (define lesChiffres (string-append (format #f "~a" leLivre) (string-append "/" (string-append (format #f "~a" laFable) "/chiffres.ly")))) (define lesParoles (string-append (format #f "~a" leLivre) (string-append "/" (string-append (format #f "~a" laFable) "/paroles.ly")))) (define lesCouplets (string-append (format #f "~a" leLivre) (string-append "/" (string-append (format #f "~a" laFable) "/couplets.ly")))) (define laRef (string-append (format #f "address@hidden" leLivre) (string-append ":" (format #f "~a" laFable)))) (set! fable-number (1+ fable-number)) (add-text parser #{ \markup { \column { \vspace #1 \line { \fill-line { \override #'(font-name . "Adobe Caslon Pro") \fontsize #1 #(format #f "Fable address@hidden" fable-number) } } \line { \fill-line { \override #'(font-name . "Adobe Caslon Pro Italic") \fontsize #4 $leTitre } } \line { \fill-line { \override #'(font-name . "Adobe Caslon Pro") \fontsize #1.5 $laMorale } } \line { \fill-line { \null \override #'(font-name . "Adobe Caslon Pro Italic") \fontsize #1 $lAir \override #'(font-name . "Adobe Caslon Pro") $laRef } } } } #}) (add-toc-item parser 'tocFableMarkup leTitre) (add-toc-item parser 'tocAirMarkup lAir) ;; ajout du \noPageBreak au top-level (add-music parser (make-music 'Music 'page-marker #t 'page-break-permission 'forbid)) #{\new ChoirStaff << \new Staff { \autoBeamOff % \tempo $leChemin \clef $laClef %\staffStart << \include $laStructure \include $leDessus >> } \addlyrics { \set stanza = "1." \include $lesParoles } \new Staff { \autoBeamOff \clef basse \staffStart << \include $laStructure \include $laBasse >> } \figures { \include $lesChiffres } >> #} ) Un exemple d’utilisation : \fableScore #"La Fourmi et la Sauterelle" #"L’Oisiveté" #"Sur l’air « Qui l’entend mieux »" #"soprano" #1 #2 (ça allait chercher parfaitement bien dans le
dossier 1/2/ ce qu’il fallait, etc.) Comment mettre ça à jour pour que ça compile à
nouveau ?
Derrière ce problème, il y a, à mon sens, un problème récurrent : celui de tous ceux qui comme moi galèrent à écrire des fonctions de ce genre, en réfléchissant beaucoup et en agglomérant du code trouvé çà et là, sans forcément faire ça régulièrement, et sans avoir une compréhension immédiate et très avisée des détails, et qui du coup pour mettre à jour les fonctions de ce genre d’un passage de version à l’autre, galèrent ou abandonnent. Par exemple, les fameuses fonctions que j’avais
co-écrites avec B. Bordage pour les ornements et doigtés
spécifiques à la viole de gambe, ça fonctionne plus. Ça compile,
mais ça ne donne pas le résultat, et pour savoir pourquoi, il faut
avoir bien l’habitude, être versé là-dedans, etc. Bien à vous tous, L.C. |
[Prev in Thread] | Current Thread | [Next in Thread] |