[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Re: BarNumber et mesure à_cheval_su r_2_lignes
From: |
j-f.lucarelli |
Subject: |
Re: Re: BarNumber et mesure à_cheval_su r_2_lignes |
Date: |
Fri, 17 Sep 2010 16:13:06 +0200 |
======= le 17-09-2010, 15:24:44 vous écriviez: =======
> Allez, je me lance ! Après lecture et étude approfondie de la doc
>Extensions (très bien faite mais un peu courte pour moi)... que dolor ! :-P
>Toutes mes excuses par avance pour la longueur de ce post : je souhaite
>montrer ce qui se passe dans ma cervelle, alors forcément, ça prend du
>temps ! Le but peu visible est de trouver à terme une solution pour le
>sujet "BarNumber et mesure à cheval sur 2 lignes".
>
>_Par où commencer... Par ce que je sais faire..._
>Prenons ce bout de code :
>\version "2.13"
>{c4 c c d e2 d \bar "|."}
>
>Si je veux écrire Bravo ! au-dessus du premier c4, *en Scheme*, voici
>comment je procède :
>\version "2.13"
>\displayMusic{
>c4^"Bravo !" c c d e2 d \bar "|."
>}
>puis :
>lilypond machin.ly>display.txt
>
>Dans display.txt, je repère le code qui crée le Bravo ! :
>(make-music
> '*EventChord*
> 'elements
> (*list* (make-music
> 'NoteEvent
> 'duration
> (ly:make-duration 2 0 1 1)
> 'pitch
> (ly:make-pitch -1 0 0))
> (make-music
> 'TextScriptEvent
> 'direction
> 1
> 'text
> "Bravo !")
>C'est donc dans une liste de propriétés liées à EventChord. Je fais un
>honteux plagiat de la doc (page 13 et suivantes) et je ponds la fonction
>du siècle :
>bravo = #(define-music-function (parser location event-chord)(*ly:music?*)
>;la variable est event-chord de type ly:music
>"écrit Bravo ! au dessus de la note"
>(let ((result-event-chord (ly:music-deep-copy event-chord)))
>;declaration de la variable locale result-event-chord. On lui donne la
>valeur de music-deep copy
> (set! (ly:music-property result-event-chord 'elements)
> (cons (make-music *;ici je copie la partie de display.txt qui
>m'intéresse*
> 'TextScriptEvent
> 'direction
> 1
> 'text
> "Bravo !") (ly:music-property result-event-chord 'elements)))
> result-event-chord)
> )
>et on modifie le code de la parto pour utiliser cette fonction :
>\version "2.13"
>{\bravo c4 c c d e2 d \bar "|."}
>
>Et ça marche.
>Le pied.
>
>_Par où finir... Par ce que je ne sais pas faire..._
>Maintenant, je souhaite en venir aux numéros de mesure. Même méthode :
>
>Un petit \displayMusic sur le code suivant :
>\version "2.13"
>\displayMusic{
>c4 c c d \break
>\set Score.currentBarNumber=#50 e2 d \bar "|." }
>}
>
>J'obtiens le code interressant suivant (en partant "du haut") :
>(make-music
> 'SequentialMusic
> 'elements
> (list (make-music
> ...)
>*;la partie concernant le \break, qui est ratachée à un EventChord,
>comme plus haut*
> (make-music
> 'EventChord
> 'elements
> (list (make-music
> 'LineBreakEvent
> 'break-permission
> 'force)))
>*;la partie concernant le n° de mesure, pas du tout de la même forme que
>plus haut ! >:o
>* (make-music
> 'ContextSpeccedMusic
> 'context-type
> 'Score
> 'element
> (make-music
> 'PropertySet
> 'value
> 50
> 'symbol
> 'currentBarNumber))
>
>Allons-y quand-même !
>
>mesureD = #(define-music-function (parser location score)(ly:music?)
>;question : la variable score et son type sont-ils bon ?
>"force la numérotation en tête de ligne à 50"
>(let ((result-score (ly:music-deep-copy score)))
> (set! (ly:music-property result-score 'elements)
> (cons (make-music
> 'PropertySet
> 'value
> 50
> 'symbol
> 'currentBarNumber) (ly:music-property result-score 'elements)))
> result-score)
>
>Le hasard ayant pu de place en cette matière, ça plante complet à
>l'utilisation avec les messages suivants :
>erreur de programmation : Envoi d'un non-événement au contexte
>poursuite ; croisons les doigts.
>erreur de programmation : Not a music type
>poursuite ; croisons les doigts.
>Avertissement : Classe d'événement inconnue : « property-set »
>
>Or j'ai un mal fou à faire évoluer ce bourrin copier/coller...
>
>Quelqu'un(e) saurait m'aider à trouver comment faire un bon
>raisonnement, avant que mon enthousiasme quasi-juvénile baisse drapeau ?
>
>Merci d'avance !
Bravo, ce petit tutoriel permet de découvrir bien des choses sur l'interface
entre LilyPond et Scheme
Grand merci,
Jean-François
>_______________________________________________
>liste de diffusion lilypond-user-fr
>address@hidden
>http://lists.gnu.org/mailman/listinfo/lilypond-user-fr
>
= = = = = = = = = ========= = = = = = = = = = =
- BarNumber et mesure à cheval sur 2 lignes, Éditions IN NOMINE, 2010/09/15
- Re: BarNumber et mesure à cheval sur 2 lignes, Phil Hézaine, 2010/09/15
- Re: BarNumber et mesure à cheval sur 2 lignes, Éditions IN NOMINE, 2010/09/17
- Re: Re: BarNumber et mesure à_cheval_su r_2_lignes,
j-f.lucarelli <=
- Re: BarNumber et mesure à cheval sur 2 lignes, Cécile Huneau, 2010/09/17
- Re: BarNumber et mesure à cheval sur 2 lignes, Éditions IN NOMINE, 2010/09/20
- Re: BarNumber et mesure à cheval sur 2 lignes, Éditions IN NOMINE, 2010/09/20
- Re: BarNumber et mesure à cheval sur 2 lignes, Cécile Huneau, 2010/09/20
- Re: BarNumber et mesure à cheval sur 2 lignes, Cécile Huneau, 2010/09/20
- Re: BarNumber et mesure à cheval sur 2 lignes, Éditions IN NOMINE, 2010/09/20