| [Top][Contents] |
LilyPond — Nouveautés
|
Ce document recense les modifications et les nouvelles fonctionnalités de LilyPond pour la version 2.25.20 (depuis la 2.24). |
Note : Chaque nouvelle version de LilyPond peut comporter des
changements de syntaxe, ce qui peut exiger de modifier les fichiers que
vous avez écrits avec des versions précédentes, de telle sorte qu’ils
restent fonctionnels avec les nouvelles versions. Afin de mettre à jour
vos fichiers, il est fortement conseillé d’utiliser
l’utilitaire convert-ly distribué avec LilyPond et qui est
abordé dans Mise à jour avec convert-ly. convert-ly
est capable de réaliser la plupart des modifications de syntaxe
automatiquement. Les utilisateurs de Frescobaldi peuvent lancer
convert-ly directement à partir du menu de Frescobaldi en
faisant « Outils > Mettre à jour avec convert-ly… ». D’autres
environnements prenant en charge LilyPond sont susceptibles de fournir
un moyen graphique de lancer convert-ly.
| Modifications majeures de LilyPond | ||
| Nouveautés en matière de notation musicale | ||
| Nouveautés en matière de notation spécialisée | ||
| Autres améliorations diverses |
| [ << Top ] | [Top][Contents] | [ Nouveautés en matière de notation musicale >> ] |
| [ < Top ] | [ Up : Top ] | [ Notes à propos de la compilation des sources et à l’attention des empaqueteurs > ] |
Modifications majeures de LilyPond
- Le marges sont désormais plus larges, suivant ainsi les mises en pages
de nombreux éditeurs, et conformément aux recommandations d’Elaine
Gould.
Pour retrouver les mêmes réglages que précédemment, notamment dans le but de conserver la mise en page après mise à jour d’une partition à la version 2.25.20, il suffit d’ajouter le code suivant :
\paper { top-margin = 5\mm bottom-margin = 6\mm top-system-spacing.basic-distance = 1 top-markup-spacing.basic-distance = 0 left-margin = 10\mm right-margin = 10\mm inner-margin = 10\mm outer-margin = 20\mm binding-offset = 0\mm } - Au lieu de générer des sorties PostScript ou SVG par lui-même, LilyPond
peut désormais utiliser la bibliothèque Cairo pour produire ses
résultats. Il est ici fait référence au « moteur Cairo » qui peut être
activé par l’option
-dbackend-cairoen ligne de commande. Cette fonctionnalité est opérationnelle pour tous les formats de sortie (PDF, SVG, PNG, PostScript) et apporte vitesse et amélioration du rendu SVG en particulier. Néanmoins, les fonctionnalités des moteurs par défaut ne sont pas encore toutes implémentées. Sont entre autre absents le plan des PDF, l’option-dembed-source-codepour le PDF et la propriétéoutput-attributespour le SVG. - Les distances entre la clef et la métrique ainsi qu’entre la clef et
l’armure sont désormais calculées différemment. Par voie de conséquence,
on obtient un meilleur espacement pour des clefs imposantes, comme
\clef "GG", ou très fines comme\clef "petrucci-c3".L’image suivante illustre les modifications apportées aux positionnements. Le pourcentage indique la différence d’espacement entre la clef et la métrique, et entre la clef et l’armure.
Note that, as before, the widest clef in a staff group determines the horizontal position of all clefs in a system; this means, for example, that a piano score containing a treble and an alto clef doesn’t change at all.
If you want to restore the previous default values for whatever reason, add
\override Staff.Clef.space-alist.time-signature = #'(minimum-space . 3.5) \override Staff.Clef.space-alist.key-cancellation = #'(minimum-space . 3.5) \override Staff.Clef.space-alist.key-signature = #'(minimum-space . 4.2)to your score.
Notes à propos de la compilation des sources et à l’attention des empaqueteurs
Cette section est destinée aux enthousiastes qui compilent LilyPond à partir des sources et aux empaqueteurs qui préparent LilyPond pour les différentes distributions. Si vous ne faites partie d’aucun de ces groupes, vous pouvez aisément passer ce qui suit.
- LilyPond requiert désormais Guile 3.0. Comme précédemment, il est
fortement recommandé de générer le bytecode des fichiers
.scm lors de la compilation en lançant
make install-bytecodeavantmake install.
Nouveautés en matière de notation musicale
Améliorations de la représentation des hauteurs
Améliorations en matière de rythme
- Il est désormais possible d’aligner par la droite différents types de
barre de mesure.
\new StaffGroup << \new Staff { \textMark "default" b1 } \new Staff { b1 \section } >> \new StaffGroup << \new Staff { \textMark "right-aligned" b1 } \new Staff { b1 \override StaffGroup.BarLine.right-justified = ##t \section } >>
- Désormais, les contrôles de mesure (
|) créent implicitement des contextes. Les développeurs considèrent que cela n’aura aucun impact sur les partitions courantes. N’hésitez pas à signaler tout problème qui ne trouverait pas de solution de contournement évidente. - La nouvelle option
span-all-note-headspermet aux crochets de n-olets d’embrasser toutes les têtes de notes (pas seulement les hampes) comme recommandé par Gould et Ross. - La subdivision des ligatures automatiques a été retravaillée. Jusqu’à
présent, on pouvait constater de nombreuses imperfections dans la
manière de subdiviser automatiquement des motifs de ligature complexes
en raison de surestimations de la valeur de
baseMoment. LilyPond est désormais capable de subdiviser correctement la plupart des motifs de ligature sans utiliser la valeur debaseMomentpour limiter la subdivision d’une ligature. La simple activation desubdivideBeamsdivise automatiquement tous les intervalles par défaut. Trois nouvelles propriétés ont été introduites pour permettre d’affiner la subdivision automatique des ligatures :minimumBeamSubdivisionInterval,maximumBeamSubdivisionIntervaletrespectIncompleteBeams.minimumBeamSubdivisionIntervallimite les intervalles de subdivision de manière identique à ce quebaseMomentfaisait auparavant (réduction de la fréquence des subdivisions de ligatures).maximumBeamSubdivisionIntervallimite globalement le nombre de tronçons supprimés aux emplacements de subdivision.respectIncompleteBeamslimite le nombre de moignons lorsque le temps restant ne complèterait pas la métrique de la subdivision. RéglerminimumBeamSubdivisionIntervalà la valeur debaseMomentdans tous les cas, y compris lorsquebaseMomentvarie implicitement, préserve le comportement antérieur. - Sont désormais disponibles des glyphes de crochets « empilés ». Tous les
éléments d’un glyphe de crochet ont la même largeur, mais sont
verticalement plus compacts.
Ces glyphes sont accessibles à l’aide de
\flagStyleStacked; un\flagStyleDefaultpermet de retrouver le style de crochet standard. - Le style de
TimeSignature'single-digita été renommé en'single-number.
Améliorations en matière d’expressivité
- Les soufflets de style Ferneyhough acceptent désormais un cercle
al niente.
{ \override Hairpin.circled-tip = ##t \override Hairpin.stencil = #flared-hairpin b1\< b\> b\> b2 b\< b2 b\! }
- Sont désormais disponibles deux variantes du signe de respiration :
laltcommaetraltcomma. Ces glyphes représentent respectivement les anciens galbes de « lcomma » et « rcomma » avant leur changement pour un galbe plus courant.{ \override BreathingSign.text = \markup { \musicglyph "scripts.raltcomma" } f'2 \breathe f' | }
Améliorations en matière de reprises
- Les fins alternatives d’un
\repeat voltane créent plus de barre de mesure invisible. Ceci peut affecter le saut de ligne, l’espacement horizontal et l’extension d’unVoltaBracketlorsqu’une alternative débute ou se termine en l’absence de barre de mesure. Dans le cas d’un changement non désiré, il est possible d’ajouter un\bar ""ou toute autre commande créant un objetBarLineprécisément à ce point. - Grâce à la propriété
printInitialRepeatBar, il est désormais possible d’afficher automatiquement une barre de reprise même lorsqu’elle intervient en début de pièce. - Le positionnement du numéro de volta relativement au crochet de
reprise peut désormais s’ajuster à l’aide de la propriété
volta-number-offsetduVoltaBracket.
Améliorations en matière d’annotations éditoriales
- Les objets graphiques
NoteNamesont désormais centrés horizontalement par défaut.
Améliorations en matière de fontes et de mise en forme du texte
- La nouvelle commande de markup
\bar-linepermet d’imprimer une barre de mesure dans du texte.\markup { \override #'(word-space . 2) \line { Examples \fontsize #-5 \translate-scaled #'(0 . 2) { \bar-line ":|." \bar-line ".|:" \bar-line ";!S!;" \bar-line "]{|}[" } } }
- La syntaxe permettant de modifier les fontes musicales et textuelles a
changé. Au lieu de
\paper { #(define fonts (set-global-fonts #:music "Nom de la fonte musicale" #:brace "Nom de la fonte musicale d'accolades" #:roman "Nom de la fonte à empattements" #:sans "Nom de la fonte sans empattements" #:typewriter "Nom de la fonte monospace")) }ou
\paper { #(define fonts (make-pango-font-tree "Nom de la fonte à empattements" "Nom de la fonte sans empattements" "Nom de la fonte monospace" factor)) }la syntaxe consacrée est dorénavant
\paper { property-defaults.fonts.music = "Nom de la fonte musicale" property-defaults.fonts.serif = "Nom de la fonte à empattements" property-defaults.fonts.sans = "Nom de la fonte sans empattement" property-defaults.fonts.typewriter = "Nom de la fonte monospace" }Contrairement aux anciennes pratiques, la nouvelle syntaxe n’interfère en rien dans la taille des fontes, qui doit se gérer séparément à l’aide de
set-global-staff-sizeoulayout-set-staff-size.La liste associative ne comporte pas de clé
brace; les glyphes d’accolade sont désormais toujours pris dans la fonte musicale. Il est néanmoins possible d’y déroger en utilisant une famille de fontes supplémentaire, comme dans l’exemple suivant (la fonte LilyJAZZ doit alors être disponible) :\layout { \context { \Score \override SystemStartBrace.font.music = "lilyjazz" } } \new PianoStaff << \new Staff { c' } \new Staff { c' } >> \markup \override #'(fonts . ((music . "lilyjazz"))) \left-brace #20Dans la mesure où
fontsest une simple propriété, il est possible de lui apporter dérogation sur la base d’un objet graphique, comme par exemple\layout { \override Score.SectionLabel.fonts.roman = "Custom font" }Ceci s’avère préférable à l’utilisation de la propriété
font-name, cette dernière rendant ineffectives les commandes telles que\boldet requérant d’inclure « Bold » dans la chaîne defont-name. L’utilisation defontsne provoque pas de tels effets. - La commande de markup
\lookupn’est désormais disponible que pour les accolades ; pour les autres glyphes, c’est la commande\musicglyphqu’il faut utiliser. Au lieu de\lookup, il vaut d’ailleurs mieux lui préférer\left-brace. - Lorsqu’une fonte musicale est utilisée dans un markup –
typiquement pour une indication de nuance – et qu’un glyphe en était
absent, celui-ci était rendu dans une fonte textuelle normale. Ceci
n’est plus le cas, et un avertissement est alors émis quant au glyphe
manquant. Afin d’utiliser une fonte textuelle, il faut utiliser l’une
des commande de markup
\serif,\sansou\typewriter, comme ici par exemple.dolceP = #(make-dynamic-script #{ \markup { \serif \normal-weight dolce p } #}) { c'\dolceP }
- Les petites capitales s’obtiennent désormais en réglant
font-variantsursmall-caps, plutôt qu’en fixantfont-shapeàcaps. Dans la mesure où la raison d’être defont-shapeest de pouvoir accéder à l’italique, ce changement rend possible l’utilisation conjointe de petites capitales et de l’italique. - La propriété
font-seriesest désormais plus flexible et accepte des valeurs telles quesemiboldetlighten plus des seulesnormaletbold.La valeur
mediumest désormais une valeur intermédiaire entrenormaletboldplutôt qu’un équivalent denormal. Par conséquent, la commande de markup\mediuma été renommée en\normal-weight. - La nouvelle propriété
font-stretchpermet de sélectionner une fonte resserrée ou expansée. - Le texte d’un objet
VoltaBrackettel que défini par un\override Score.VoltaBracket.text = …ou\set Score.repeatCommands = …n’est plus automatiquement rendu dans une fonte musicale ; il faut pour cela utiliser la commande de markup\volta-numbersur les parties qui le nécessitent. Il faudra donc, par exemple, convertir\set Score.repeatCommands = #'((volta "2, 5"))
en
\set Score.repeatCommands = #`((volta ,#{ \markup { \concat { \volta-number 2 , } \volta-number 5 } #})) - Dans un markup, les doigtés (
\markup \finger) et chiffrages d’accord (\markup \figured-bass) sont désormais adaptés à la taille du texte normal en présence d’un\fontsize.myText = \markup { The fingering \finger { 5-4 } for a \figured-bass { 7 "6\\" } … } \myText \markup\fontsize #6 \myText
Le comportement antérieur peut être retrouvé en activant les variables globales
legacy-figured-bass-markup-fontsizeetlegacy-finger-markup-fontsize, soit :#(set! legacy-figured-bass-markup-fontsize #t) #(set! legacy-finger-markup-fontsize #t) myText = \markup { The fingering \finger { 4-5 } for a \figured-bass { 5+ 6 } … } \myText \markup\fontsize #6 \myText
- Pour plus de clarté, la commande de markup
\romana été renommée en\serif. Aussi, pour modifier une propriétéfont-familyréglée àsansoutypewriter, il faut faut la définir àserif, non plus àroman. - La commande de markup
\texta été supprimée. Doivent être utilisées en remplacement les commandes\serif,\sansou\typewriter. Si ces commandes permettaient de définir le style de fonte uniquement lorsqu’une fonte textuelle était utilisée (non une fonte musicale comme pour les nuances), elles déterminent désormais à la fois le style de fonte et l’utilisation d’une fonte textuelle.
Nouveautés en matière de notation spécialisée
Améliorations pour les notations anciennes
- Pour plus de cohérence avec les clefs anciennes, cinq nouvelles clefs
mensurales sont disponibles :
"mensural-f2","mensural-f3","mensural-f4"(identique à"mensural-f"),"mensural-f5","mensural-g1"et"mensural-g2"(identique à"mensural-g"). - La métrique et le style d’altération à l’armure d’un contexte
PetrucciStaffsont désormais identiques à ceux d’unMensuralStaff. - Les ligatures mensurales blanches prennent désormais en charge quelques
cas rares (semi-brève isolée ou non), et autorisent des affinages
permettant d’indiquer quelque hampe non nécessaire.
\score { \relative { \set Score.timing = ##f \set Score.measureBarType = #'() \override NoteHead.style = #'petrucci \override Staff.TimeSignature.style = #'mensural \clef "petrucci-c4" \[ a1 g f e \] \[ a1 g\longa \] \[ \once \override NoteHead.left-down-stem = ##t a\breve b \once \override NoteHead.right-down-stem = ##t g\longa \] \[ \once \override NoteHead.right-down-stem = ##t b\maxima \once \override NoteHead.right-up-stem = ##t g\longa \] } \layout { \context { \Voice \remove Ligature_bracket_engraver \consists Mensural_ligature_engraver } } }
- L’utilisation de gregorian.ly est désuète. Bien que toujours
fonctionnelle pour raison de compatibilté ascendante, elle devrait être
remplacée par l’utilisation d’un contexte
VaticanaScore, avec si besoin des adaptations manuelles dans le bloc\layout. Un code tel que\include "gregorian.ly" \score { \new VaticanaStaff { ... } }devrait devenir
\new VaticanaScore { \new VaticanaStaff { ... } } \layout { indent = 0 ragged-last = ##t } - La langue de saisie ‘arabic’ est dépréciée. Bien que toujours fonctionnelle pour des raisons de rétrocompatiblité – si l’on charge hel-arabic –, il est recommandé d’utiliser ‘english’, ‘italiano’ ou votre langue de saisie préférée.
- Les réglages par défaut des étiquettes de diagramme de fret ont changé.
- La valeur par défaut de
fret-label-vertical-offsetest fixée à -0.5, ce qui a pour effet de centrer l’étiquette dans l’espace du fret. - Le format numérique par défaut est désormais
'custom, avec un format de chaîne"~dfr"(résultant en ‘3fr’ par exemple), au lieu de'roman-lower.
- La valeur par défaut de
- La commande
\autoBeamOffinterrompt désormais immédiatement la ligature automatique. Auparavant, ses effets étaient différés lorsque le graveur de ligature automatique était actif. - Il n’est désormais plus nécessaire de désactiver les ligatures
automatiques dans le cadre d’un
\crossStaff.
| [ << Nouveautés en matière de notation spécialisée ] | [Top][Contents] | [ >> ] |
| [ < Améliorations pour les notations anciennes ] | [ Up : Top ] | [ > ] |
Autres améliorations diverses
- L’inclusion d’images PNG est désormais possible à l’aide de la commande
de markup
\image. Ceci vient en supplement de la commande\epsfilepour les images EPS.La commande
\imagetraîte aussi bien les images PNG que EPS, à ceci près que la commande\imageinsère un fond blanc, contrairement à\epsfile. - La nouvelle commande de markup
\qr-codepermet d’insérer un QR-code de la taille spécifiée pour l’URL correspondante. Ceci peut servir à fournir un lien vers le site du compositeur ou de l’éditeur, ou bien vers les sources LilyPond ou des enregistrements, etc.\markup \qr-code #10 "https://lilypond.org"
- Ont été ajoutés à la fonte Emmentaler les glyphes figure-dash (U+2012) et en-dash (U+2013) (quart de catradin).
- Une espace pour nombres (U+2007), une espace fine (U+2009) et une espace ultrafine (U+200A) ont été ajoutées à la fonte Emmentaler.
- L’option
-dinclude-settingspeut désormais apparaître à plusieurs reprises, afin de pouvoir inclure différentes feuilles de style. - Dans l’utilisation conjointe de LaTeX et
lilypond-book, les images au fil du texte sont désormais décalées verticalement. Ce décalage peut se contrôler en ligne de commande à l’aide de l’option --inline-vshift et, localement, en ajoutantinlineen argument aux options de l’extrait. - Deux nouvelles options en ligne de commande font leur apparition :
-dfirst and -dlast. Elles sont équivalents aux
réglages respectifs de
showFirstLengthetshowLastLengthdans un fichier LilyPond. Par exemple, taperlilypond -dlast=R1*5 ...
aura pour résultat que LilyPond génèrera seulement les cinq dernières mesure (partant du principe d’une métrique à 4/4).
- Est désormais disponible un nouveau manuel constituant un index de tous les objets graphiques (grobs) de LilyPond. Il est basé sur le travail de Joram Berger pour LilyPond 2.19.
- L’impression des arpeggios a été améliorée de par l’utilisation de
nouvelles valeurs par défaut différentes pour la propriété
Arpeggio.positions. Les ajustements à cette propriété sont susceptibles d’évoluer. - LilyPond prend en charge les annotations au fil du texte, autrement dit des sortes de notes de bas de page entre les systèmes. Bien que ce ne soit pas nouveau, puisque disponible depuis la version 2.15.17 publiée en 2011, cette possibilité n’était pas si stable et manquait de documentation jusqu’à présent.
- Le script
lilysonga été supprimé. En dehors du fait qu’il ne disposait d’aucune documentation, il n’était plus maintenu depuis fort longtemps. De plus, il reposait sur un programme externe de synthèse vocale –festival– laissé à l’abandon. - Deux nouveaux styles sont disponibles pour la propriété d’objet
graphique
space-alist:shrink-spaceetsemi-shrink-space. Ils contractent les espaces au lieu de les étendre. Ils sont aussi directement utilisés par LilyPond afin d’améliorer le formatage des portées resserrées. - Le binaire
lilyponddispose d’une nouvelle option en ligne de commande, -dstaff-size, pour régler la taille globale des portées. Elle est équivalente à la présence d’unset-global-staff-sizedans un fichier LilyPond. - En remplacement des fonctions
\bookOutputNameet\bookOutputSuffix, nous recommandons dorénavant l’utilisation des variables de papieroutput-filenameetoutput-suffix. Bien que les premières restent pleinement fonctionnelles, ces dernières sont plus cohérentes et facilement compréhensibles, notamment si elles sont combinées avec des variables de papier prédéfinies. - La propriété
Stem.details.lengthsaccepte maintenant des paires en tant qu’éléments de liste. Ceci permet de définir séparément les longueurs de hampe ascendante ou descendante. - La fonction
ly:self-alignment-interface::aligned-on-x-parent– utilisée par de nombreux objets graphiques pour calculer leur x-offset – écoute désormais la nouvelle propriétéX-alignment-extentdePaperColumn. Activée par défaut, elle fournit une largeur de secours au grobPaperColumndans le cas où il ne contiendrait pas de tête de note. Ceci permet d’aider à l’alignement des scripts de nuance attachés à des silences invisibles, entre autres.music = \new Staff << { f'2 g'2 } { s4\f s\f s\f s\f } >> \score { \music } \score { \music \layout { \context { \Score \override PaperColumn.X-alignment-extent = ##f } } }
- Les objets
BassFigureContinuationprennent désormais en charge lahorizontal-line-spanner-interface. La propriétépaddinga été remplacée par des sous-propriétés correspondantes dansbound-details. - La commande de markup
\align-on-otheraccepte désormais la valeur#fpour l’alignement, indiquant le point de référence d’un markup. - Une nouvelle fonction
\withRelativeDirest désormais disponible pour les commandes de markup qui incluent des fichiers lorsque ces fichiers devraient se trouver relativement au fichier source. Par exemple :\markup { \image #X #3 \withRelativeDir "test.png" } - Le positionnement des crochets horizontaux d’analyse a été amélioré.
En particulier, l’objet
HorizontalBracketa désormais une valeur deoutside-staff-priorityfixée à 800. Par conséquent, il se pourrait que des crochets imbriqués voient leur positionement modifié. Ceci peut se corriger en ajustant les valeurs deoutside-staff-prioritypar un\tweak, tout en sachant que le crochet externe doit garder une valeur de priorité supérieure. - La nouvelle fonction Scheme
to-staff-spacepermet de convertir des dimensions absolues (exprimées en diverses unités) en unités d’espace de portée. Par exemple :top-markup-spacing.basic-distance = #(to-staff-space 2 'cm) % l'unité par défaut est le point (pt) \markup \override #`(baseline-skip . ,(to-staff-space 20)) \column { foo bar } - Les deux nouvelles fonctions de markup
\abs-hspaceet\abs-vspacepermettent de déterminer des dimensions absolues qui subsistent quelle que soit la taille de portée en cours. - Les donnes émises par l’option en ligne de commande -dshow-available-fonts sont désormais envoyées sur la sortie standard.
- La fonction
ly:font-config-display-fontsaccepte désormais un argument optionnel pour sélectionner le port de sortie. - La gestion des options Scheme en ligne de commande gagne en
robustesse. Quelques changements mineurs ont été rendus nécessaires par
cette nouvelle implémentation.
- Sur la ligne de commande, l’argument à l’option -dpaper-size ne
nécéssite plus d’être mis entre guillemets. En d’autres termes,
mentionner
-dpaper-size=a3est tout à fait valide. - L’option pixmap-format requiert désormais une valeur sous forme
de chaîne, non plus un symbole. Rien ne change pour la ligne de
commande, mais un appel tel que
#(ly:set-option 'pixmap-format 'pngalpha)
devra être changé en
#(ly:set-option 'pixmap-format "pngalpha")
Il en va de même pour les options separate-page-formats et tall-page-formats. Notez que
convert-lyse charge d’effectuer la modification automatiquement.
- Sur la ligne de commande, l’argument à l’option -dpaper-size ne
nécéssite plus d’être mis entre guillemets. En d’autres termes,
mentionner
- La
side-position-interfacedispose de deux nouvelles propriétés,X-paddingetminimum-X-space, aux fins de contrôler le décalage horizontal et la distance minimale d’un grob avec son objet parent, indépendamment du décalage vertical et de la distance minimale. Ceci se révèle utile pour des objets tels queFingeringqui peuvent avoir un attachement à une tête de note tant dans la verticalité que l’horizontalité, et dont le décalage dans chacun des axes peut requérir des valeurs différentes. -
\pushContextPropertyet\popContextPropertysont deux nouvelles commandes permettant de manipuler les propriétés de contexte. La première insère la valeur courante dans une pile et définit une nouvelle valeur, alors que la seconde suprime cette valeur de la pile et restaure la valeur initale.{ c' \pushContextProperty Staff.fontSize 3 c' \pushContextProperty Staff.fontSize 6 c' \popContextProperty Staff.fontSize c' \popContextProperty Staff.fontSize c' }
Pour des annonces plus anciennes, rendez-vouz aux pages https://lilypond.org/doc/v2.22/Documentation/changes/, ou remontez à l’index de la documentation.
![[image of music]](35/lily-38f0af9a.png)
![[image of music]](18/lily-24b1d8b3.png)
![[image of music]](a4/lily-31fdb6f3.png)
![[image of music]](7d/lily-bfd64b5a.png)
![[image of music]](48/lily-18dd9b09.png)
![[image of music]](6e/lily-6854be9e.png)
![[image of music]](ae/lily-13254891.png)
![[image of music]](23/lily-68929dc1.png)
![[image of music]](4d/lily-7ef8f66e.png)
![[image of music]](b7/lily-ef389a3a.png)
![[image of music]](97/lily-1761db17.png)
![[image of music]](bc/lily-68759a9b.png)
![[image of music]](9b/lily-ee6bea59.png)
![[image of music]](9d/lily-7878c139.png)
![[image of music]](0b/lily-56eaf92c.png)
![[image of music]](d6/lily-4453a346.png)