X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Ffr%2Fnotation%2Finput.itely;h=4789c89a3141fecf97bfbb7684bfece0dd2ce627;hb=18d03fa6a724b0102ccc47d194209802cea02f2e;hp=44596972c36ecbf40ca2420ab7f97c4dc7944dac;hpb=a94d26b6693cad58b946a01b7efaaed29480f063;p=lilypond.git diff --git a/Documentation/fr/notation/input.itely b/Documentation/fr/notation/input.itely index 44596972c3..4789c89a31 100644 --- a/Documentation/fr/notation/input.itely +++ b/Documentation/fr/notation/input.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: ec074a41f03cf4cd3b914daa1359dd6e0fb2012d + Translation of GIT committish: 181db07b2627d98fb77564c45fad23a96e7ee54c - When revising a translation, copy the HEAD committish of the - version that you are working on. For details, see the Contributors' - Guide, node Updating translation committishes.. + When revising a translation, copy the HEAD committish of the + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes.. @end ignore -@c \version "2.19.21" +@c \version "2.19.22" @c Translators: Jean-Charles Malahieude, Valentin Villenave @@ -25,7 +25,7 @@ LilyPond. * Titres et entêtes:: * Travail sur des fichiers texte:: * Contrôle des sorties:: -* Sortie MIDI:: +* Génération de fichiers MIDI:: * Extraction d'informations musicales:: @end menu @@ -395,7 +395,8 @@ avec les autres partitions se trouvant au même niveau pour composer le @code{\book}. Vous pouvez modifier ce comportement à l'aide de la variable @code{toplevel-score-handler} placée en tête. Le gestionnaire par défaut est défini dans le fichier d'initialisation -@file{../scm/lily.scm}. +@file{../scm/lily.scm}, et les réglages par défaut dans le fichier +@file{../ly/declarations-init.ly}. @item Un bloc @code{\book} permet de regrouper naturellement plusieurs @@ -550,6 +551,10 @@ Manuel de notation : @section Titres et entêtes @translationof Titles and headers +@cindex titre +@cindex entête +@cindex pied de page + La plupart de la musique qui est éditée comporte un titre et le nom de son compositeur ; certains ouvrages dispensent beaucoup plus d'informations. @@ -557,6 +562,7 @@ d'informations. @menu * Création de titres et entête ou pied de page:: * Titrages personnalisés:: +* Création des métadonnées des fichiers de sortie:: * Notes de bas de page:: * Référencement des numéros de page:: * Table des matières:: @@ -718,7 +724,7 @@ supprimés manuellement : \header { title = "DAS WOHLTEMPERIRTE CLAVIER" subtitle = "TEIL I" - % Pas de mention spéciale pour cet ouvrage + % Pas de mention spéciale par défaut pour cet ouvrage tagline = ##f } \markup { \vspace #1 } @@ -752,16 +758,17 @@ supprimés manuellement : @seealso Manuel de notation : -@ref{Structure de fichier}, @ref{Mise en forme par défaut des titrages subalternes}, -@ref{Mise en forme personnalisée des titrages}. +@ref{Mise en forme personnalisée des titrages}, +@ref{Structure de fichier}. @node Mise en forme par défaut des titrages subalternes @unnumberedsubsubsec Mise en forme par défaut des titrages subalternes @translationof Default layout of bookpart and score titles -Voici les différentes variables attachées au bloc @code{\header} : +Voici les différentes variables imprimables attachées au bloc +@code{\header} : @c KEEP LY @lilypond[papersize=a6landscape,quote,verbatim,noragged-right] @@ -781,8 +788,8 @@ Voici les différentes variables attachées au bloc @code{\header} : meter = "Tempo" arranger = "Arrangeur" % Les champs suivants sont centrés en bas de page - tagline = "« tagline » ou mention spéciale en pied de dernière page" - copyright = "copyright en pied de première page" + tagline = "Le « tagline » ou mention spéciale va en pied de dernière page" + copyright = "Le copyright va en pied de première page" } \score { { s1 } @@ -920,13 +927,13 @@ page, ou bien sous le @code{copyright} s'il n'y a qu'une seule page. @end itemize -La mention spéciale se modifie en alimentant le champ @code{tagline} au -niveau du bloc @code{\header} principal. +Le texte de la mention spéciale par défaut se modifie en alimentant le +champ @code{tagline} au niveau du bloc @code{\header} principal. @lilypond[papersize=a8landscape,verbatim] \book { \header { - tagline = "... music notation for Everyone" + tagline = "... la notation musicale pour Tous" } \score { \relative { @@ -936,8 +943,8 @@ niveau du bloc @code{\header} principal. } @end lilypond -Pour supprimer le @code{tagline}, il suffit de lui assigner la valeur -@code{##f}. +Pour supprimer le @code{tagline} par défaut, il suffit de lui assigner +la valeur @code{##f}. @node Titrages personnalisés @@ -1170,9 +1177,9 @@ au texte des entête et pied de page définis dans le bloc @code{\paper}. En voici la syntaxe : @example -@code{variable} = @code{\markup} @{ +variable = \markup @{ @dots{} - @code{\on-the-fly} \@var{procédure} @var{markup} + \on-the-fly \@var{procédure} @var{markup} @dots{} @} @end example @@ -1194,10 +1201,12 @@ LilyPond dispose d'ores et déjà d'un certain nombre de procédures : @item create-page-number-stencil @tab print-page-numbers est vrai. @item print-all-headers @tab print-all-headers est vrai. @item first-page @tab c'est la première page du @emph{book}. +@item not-first-page @tab ce n'est pas la première page du @emph{book}. @item (on-page nombre) @tab numéro de page = nombre @item last-page @tab c'est la dernière page du @emph{book}. @item not-first-page @tab ce n'est la première page du @emph{book}. @item part-first-page @tab c'est la première page de la partie. +@item not-part-first-page @tab ce n'est pas la première page de la partie. @item part-last-page @tab c'est la dernière page de la partie. @item not-single-page @tab cette partie fait plus d'une page. @@ -1236,8 +1245,8 @@ Plusieurs conditions @code{\on-the-fly} mentionnées l'une à la suite de l'autre se cumulent. Ainsi, par exemple, @example - @code{\on-the-fly \first-page} - @code{\on-the-fly \last-page} + \on-the-fly \first-page + \on-the-fly \last-page @code{@{ \markup @dots{} \fromproperty #'header: @dots{} @}} @end example @@ -1252,6 +1261,65 @@ fichiers d'initialisation : @file{../ly/titling-init.ly}. +@node Création des métadonnées des fichiers de sortie +@subsection Création des métadonnées des fichiers de sortie +@translationof Creating output file metadata + +@cindex PDF metadata +@cindex MIDI metadata +@cindex métadonnées PDF +@cindex métadonnées MIDI + +En plus de s'imprimer sur la partition, les variables du bloc +@code{\header} permettent de générer les métadonnées des fichiers de +sortie. Dans le cas d'un fichier PDF, ces métadonnées pourront être +affichées par le lecteur en tant que propriétés du document. Quel que +soit le type de fichier de sortie, seules seront analysées les variables +déterminées dans le @code{\header} du bloc définissant le fichier à +générer, ainsi que celles des blocs hiérarchiquement supérieurs. Pour les +fichiers PDF, seules les définitions du @code{\header} en dehors ou au +niveau d'un bloc @code{\book} affecteront les métadonnées des documents +PDF ; pour les fichiers MIDI seront utilisées les définitions jusqu'au +niveau @code{\score}. + +Par exemple, affecter « Symphony I » à la propriété @code{title} dans le +bloc @code{\header} donnera aussi ce titre au document PDF et à la +séquence MIDI. + +@example +\header@{ + title = "Symphony I" +@} +@end example + +Lorsque le titre imprimé diffère de celui affiché en tant que propriété +du PDF, devra être renseignée la propriété @code{pdftitle}. + +@example +\header@{ + title = "Symphony I" + pdftitle = "Symphony I by Beethoven" +@} +@end example + +Les variables @code{title}, @code{subject}, @code{keywords}, +@code{subtitle}, @code{composer}, @code{arranger}, @code{poet}, +@code{author} et @code{copyright} initialisent toutes les propriétés +PDF, qu'il suffit de préfixer d'un « pdf » pour affecter aux propriétés +PDF une valeur divergente de la sortie imprimable. + +La propriété PDF @code{Creator} prend automatiquement la valeur +« LilyPond » additionnée deu numéro de version ; les valeurs de +@code{CreationDate} et @code{ModDate} sont définies à la date et l'heure +courantes -- @code{ModDate} peut être écrasé par la variable de +@code{\header} @code{moddate} (ou @code{pdfmoddate}) pour un horodatage +PDF valide. + +La variable @code{title} détermine aussi le nom de la séquence MIDI. +L'utilisation de la variable @code{midititle} permet d'attribuer à la +séquence MIDI un nom différent de celui attribué au fichier imprimable. + + @node Notes de bas de page @subsection Notes de bas de page @translationof Creating footnotes @@ -1776,8 +1844,8 @@ le point de référence, sous la forme d'un symbole Scheme, comme par exemple @code{#'firstScore}, @item -un @qq{emporte-pièce} afin d'estimer la longueur totale du -@emph{markup}, et +un « emporte-pièce » afin d'estimer la longueur totale du @emph{markup}, +et @item un texte de remplacement au cas où la référence ne serait pas retrouvée. @@ -1829,42 +1897,89 @@ d'une expression musicale. @end verbatim Les @emph{markups} dévolus à la mise en forme de la table des matières -se définissent dans le bloc @code{\paper}. Il s'agit par défaut de -@code{tocTitleMarkup} pour le titre de la table, et de -@code{tocItemMarkup} pour ses éléments -- composés de leur libellé et -numéro de page. Vous pouvez bien entendu personnaliser ces variables : +se définissent dans le bloc @code{\paper}. LilyPond dispose de deux +@emph{markups} prédéfinis : + +@itemize + +@item +@code{tocTitleMarkup} + +@noindent +Utilisé pour mettre en forme le titre de la table des matières. + +@verbatim +tocTitleMarkup = \markup \huge \column { + \fill-line { \null "Table of Contents" \null } + \null +} +@end verbatim + +@item +@code{tocItemMarkup} + +@noindent +Utilisé pour mettre en forme les éléments au sein de la table des +matières. + +@verbatim +tocItemMarkup = \markup \fill-line { + \fromproperty #'toc:text \fromproperty #'toc:page +} +@end verbatim + +@end itemize + +@noindent +Ces variables sont adaptables. + +Voici comment, par exemple, franciser le titre : @verbatim \paper { - %% Traduit le titre de la table des matières en français : tocTitleMarkup = \markup \huge \column { \fill-line { \null "Table des matières" \null } \hspace #1 } - %% des fontes un peu plus grandes - tocItemMarkup = \markup \large \fill-line { - \fromproperty #'toc:text \fromproperty #'toc:page - } +@end verbatim + +L'exemple suivant illustre la manière de modifier la taille des éléments +de la table des matières : + +@verbatim +tocItemMarkup = \markup \large \fill-line { + \fromproperty #'toc:text \fromproperty #'toc:page } @end verbatim Notez bien la manière de référencer le libellé et le numéro de page dans la définition de @code{tocItemMarkup}. -N'hésitez pas à définir vous-même d'autres commandes et @emph{markups} -afin de construire une table plus élaborée : -@itemize -@item -commencez par définir une nouvelle variable de type @code{markup} au -sein du bloc @code{\paper}, +L'élément et son numéro de page peuvent se rejoindre par une ligne +pointillée : -@item -puis définissez une fonction musicale chargée d'insérer un élément de la -table à partir de cette variable. -@end itemize +@lilypond[verbatim,line-width=10.0\cm] +\header { tagline = ##f } +\paper { + tocItemMarkup = \tocItemWithDotsMarkup +} + +\book { + \markuplist \table-of-contents + \tocItem \markup { Allegro } + \tocItem \markup { Largo } + \markup \null +} +@end lilypond + +N'hésitez pas à définir vous-même d'autres commandes et @emph{markups} +afin de construire une table plus élaborée. Dans l'exemple qui suit, +nous créons un nouveau style d'élément dans le but de mentionner les +actes dans la table des matières d'un opéra : -Dans l'exemple qui suit, nous avons créé un nouveau style d'élément dans -le but de mentionner les actes dans la table des matières d'un opéra : +@noindent +Commençons par définir une nouvelle variable de type @code{markup} -- +appelée @code{tocActMarkup} -- au sein du bloc @code{\paper}. @verbatim \paper { @@ -1874,12 +1989,22 @@ le but de mentionner les actes dans la table des matières d'un opéra : \hspace #1 } } +@end verbatim + +@noindent +Créons ensuite une fonction musicale (@code{tocAct}) utilisant la +nouvelle définition de @emph{markup} @code{tocActMarkup}. +@verbatim tocAct = -#(define-music-function (parser location text) (markup?) - (add-toc-item! 'tocActMarkup text)) + #(define-music-function (text) (markup?) + (add-toc-item! 'tocActMarkup text)) @end verbatim +@noindent +Dans un fichier LilyPond, l'utilisation de cette définition +personnalisée pourrait ressembler à ceci : + @lilypond[line-width=10.0\cm] \header { tagline = ##f } \paper { @@ -1891,14 +2016,14 @@ tocAct = } tocAct = -#(define-music-function (parser location text) (markup?) - (add-toc-item! 'tocActMarkup text)) + #(define-music-function (text) (markup?) + (add-toc-item! 'tocActMarkup text)) \book { \markuplist \table-of-contents \tocAct \markup { Atto Primo } \tocItem \markup { Coro. Viva il nostro Alcide } - \tocItem \markup { Cesare. Presti omai l'Egizzia terra } + \tocItem \markup { Cesare. Presti omai l'Egizia terra } \tocAct \markup { Atto Secondo } \tocItem \markup { Sinfonia } \tocItem \markup { Cleopatra. V'adoro, pupille, saette d'Amore } @@ -1906,22 +2031,16 @@ tocAct = } @end lilypond -L'élément et son numéro de page peuvent se rejoindre par une ligne -pointillée : - -@lilypond[verbatim,line-width=10.0\cm] -\header { tagline = ##f } -\paper { - tocItemMarkup = \tocItemWithDotsMarkup -} +Voici comment utiliser la commande @code{\fill-with-pattern} dans le +cadre d'une table des matières : -\book { - \markuplist \table-of-contents - \tocItem \markup { Allegro } - \tocItem \markup { Largo } - \markup \null -} -@end lilypond +@verbatim + tocItemMarkup = \markup { \fill-line { + \override #'(line-width . 70) + \fill-with-pattern #1.5 #CENTER . \fromproperty #'toc:text \fromproperty #'toc:page + } + } +@end verbatim @predefined @funindex \table-of-contents @@ -2148,7 +2267,7 @@ sopranoMusic = \relative { a'4 b c b8( a) } altoMusic = \relative { e'4 e e f } tenorMusic = \relative { c'4 b e d8( c) } bassMusic = \relative { a4 gis a d, } -allLyrics = \lyricmode {King of glo -- ry } +allLyrics = \lyricmode { King of glo -- ry } << \new Staff = "Soprano" \sopranoMusic \new Lyrics \allLyrics @@ -2167,16 +2286,12 @@ allLyrics = \lyricmode {King of glo -- ry } \new PianoStaff << \new Staff = "RH" { \set Staff.printPartCombineTexts = ##f - \partcombine - \sopranoMusic - \altoMusic + \partcombine \sopranoMusic \altoMusic } \new Staff = "LH" { \set Staff.printPartCombineTexts = ##f \clef "bass" - \partcombine - \tenorMusic - \bassMusic + \partcombine \tenorMusic \bassMusic } >> >> @@ -2352,6 +2467,24 @@ liste de balises est en pareil cas des plus pertinente : seront exclus tous les fragments non concernés par l'une quelconque des balises mentionnées. +@lilypond[verbatim,quote] +music = \relative c'' { + \tag #'violinI { a4 a a a } + \tag #'violinII { b4 b b b } + \tag #'viola { c4 c c c } + \tag #'cello { d4 d d d } +} + +\new Staff { + \keepWithTag #'(violinI violinII) + \music +} +@end lilypond + +@noindent +imprimera les @code{\tag}s @var{violinI} et @var{violinII}, mais ni +@var{viola} ni @var{cello}. + @cindex regroupements de balises @cindex balises, regroupement @funindex \tagGroup @@ -2366,21 +2499,38 @@ alors être déclarés : \tagGroup #'(violinI violinII viola cello) @end example -stipule que ces filtres respectifs appartiennent à un même groupe. +@noindent +Les différents filtres appartiennent désormais tous à un seul +regroupement. Notez bien qu'une balise ne saurait être membre de +plusieurs regroupements. @example \keepWithTag #'violinI @dots{} @end example -ne sera donc concerné que par les balises @code{violinI} contenues dans -le groupe de filtres : tout élément de la musique incluse qui serait -balisé par un ou plusieurs des filtres de ce jeu mais @emph{pas} par -@code{violinI} sera rejeté. +@noindent +ne prendra désormais en compte que la musique concernée par la balise +@code{violinI} du groupe de filtres : tout élément de la musique qui +serait balisé par l'un des autres filtres de ce jeu sera rejeté. -Pour toute commande @code{\keepWithTag}, seules les balises du -regroupement mentionnées dans la commande seront visibles. +@lilypond[verbatim,quote] +music = \relative { + \tagGroup #'(violinI violinII viola cello) + \tag #'violinI { c''4^"violinI" c c c } + \tag #'violinII { a2 a } + \tag #'viola { e8 e e2. } + \tag #'cello { d'2 d4 d } + R1^"non balisé" +} + +\new Voice { + \keepWithTag #'violinI + \music +} +@end lilypond -Une balise ne peut faire partie que d'un seul regroupement. +Dans le cadre de la commande @code{\keepWithTag}, seules les balises du +regroupement mentionnées dans la commande seront visibles. @funindex \pushToTag @funindex \appendToTag @@ -2394,15 +2544,15 @@ d'une construction musicale existante. La musique séquentielle ou simultanée comporte assurément des @code{éléments} : @lilypond[verbatim,quote] -test = { \tag #'here { \tag #'here <> } } +music = { \tag #'here { \tag #'here <> } } { \pushToTag #'here c' \pushToTag #'here e' - \pushToTag #'here g' \test + \pushToTag #'here g' \music \appendToTag #'here c' \appendToTag #'here e' - \appendToTag #'here g' \test + \appendToTag #'here g' \music } @end lilypond @@ -2414,8 +2564,8 @@ Manuel d'initiation : @rlearning{Organisation du code source avec des variables}. Manuel de notation : -@ref{Regroupement automatique de parties}, -@ref{Insertion de fichiers LilyPond}. +@ref{Insertion de fichiers LilyPond}, +@ref{Regroupement automatique de parties}. @knownissues L'application d'un @code{\relative} à une expression musicale @@ -2452,8 +2602,8 @@ styles, comme indiqué au chapitre @rlearning{Feuilles de style}. @seealso Manuel d'initiation : -@rlearning{Organisation du code source avec des variables}, -@rlearning{Feuilles de style}. +@rlearning{Feuilles de style}, +@rlearning{Organisation du code source avec des variables}. Manuel de notation : @ref{Insertion de fichiers LilyPond}. @@ -2500,7 +2650,7 @@ instruction musicale -- comportant des caractères non ASCII soit codé en UTF-8. Le plus sûr moyen de saisir du texte de la sorte consiste à utiliser un éditeur supportant l'unicode et à enregistrer vos fichier en UTF-8. C'est le cas pour la plupart des éditeurs actuels, -que ce soit vim, Emacs, jEdit et GEdit. Tous les systèmes Windows +que ce soit vim, Emacs, jEdit et Gedit. Tous les systèmes Windows postérieurs à NT utilisent Unicode en natif ; même Notepad est capable d'éditer et sauvegarder un fichier en UTF-8 -- sans parler de l'excellente alternative qu'est BabelPad. @@ -2516,8 +2666,20 @@ FT_Get_Glyph_Name () erreur : invalid argument Voici un exemple utilisant du texte en cyrillique, en hébreux et en portugais. +@c NOTE: No verbatim in the following example as the code does not +@c display correctly in PDF Font settings for Cyrillic and Hebrew + @lilypond[quote] -%c No verbatim here as the code does not display correctly in PDF +% Linux Libertine fonts contain Cyrillic and Hebrew glyphs. +\paper { + #(define fonts + (set-global-fonts + #:roman "Linux Libertine O,serif" + #:sans "Linux Biolinum O,sans-serif" + #:typewriter "Linux Libertine Mono O,monospace" + )) +} + % Cyrillic bulgarian = \lyricmode { Жълтата дюля беше щастлива, че пухът, който цъфна, замръзна като гьон. @@ -2749,12 +2911,15 @@ Ce commutateur agit aussi sur la sortie MIDI. Notez bien que tous les événements seront escamotés, y compris les changements de tempo ou d'instrument -- vous voilà prévenu ! -@lilypond[quote,relative=2,ragged-right,verbatim] -c8 d -\set Score.skipTypesetting = ##t -e8 e e e e e e e -\set Score.skipTypesetting = ##f -c8 d b bes a g c2 +@lilypond[quote,ragged-right,verbatim] +\relative c' { + c1 + \set Score.skipTypesetting = ##t + \tempo 4 = 80 + c4 c c c + \set Score.skipTypesetting = ##f + d4 d d d +} @end lilypond Dans le cadre de musique polyphonique, @code{Score.skipTypesetting} @@ -2784,8 +2949,8 @@ commande avec l'option @i{ad hoc} -- voir @subsection Changement des fontes musicales @translationof Replacing the notation font -Gonville est une alternative à la fonte Feta que LilyPond utilise par -défaut. Vous pouvez la télécharger à partir de +Gonville est une alternative à la fonte Emmentaler que LilyPond utilise +par défaut. Vous pouvez la télécharger à partir de @example @uref{http://www.chiark.greenend.org.uk/~sgtatham/gonville/ ,http://www.chiark.greenend.org.uk/~sgtatham/gonville/} @end example @@ -2809,7 +2974,8 @@ Téléchargez puis décompressez l'archive zip. Recopiez le répertoire @rlearning{Autres sources de documentation} à ce sujet. Renommez le répertoire @code{fonts} qui s'y trouve en @code{fonts_orig}, puis le répertoire @code{lilyfonts} en @code{fonts}. Il vous suffira, pour -retrouver la fonte Feta, de renommer @code{fonts_orig} en @code{fonts}. +retrouver la fonte Emmentaler, de renommer @code{fonts_orig} en +@code{fonts}. @seealso Manuel d'initiation : @@ -2822,806 +2988,808 @@ Consultez le site de l'auteur pour de plus amples informations ainsi qu'à propos des conditions d'utilisation. -@node Sortie MIDI -@section Sortie MIDI -@translationof MIDI output +@node Génération de fichiers MIDI +@section Génération de fichiers MIDI +@translationof Creating MIDI output @cindex son @cindex MIDI -MIDI (Musical Instrument Digital Interface) constitue un standard en -matière de connexion et de contrôle des instruments électroniques. Un -fichier MIDI contient une série de notes réparties dans différentes -pistes. Il ne s'agit en rien d'un fichier sonore ; il vous faudra un -logiciel capable de traduire ces séries de notes en sons réels. - -Vous pouvez convertir vos partition en fichier MIDI de manière à -entendre ce que vous avez saisi. Ceci vous permet de contrôler aisément -ce que vous avez saisi : octaves et altérations erronées heurteront -votre oreille avertie grâce au MIDI. - -Le fichier MIDI généré par LilyPond est relativement brut. Vous pouvez -cependant obtenir un meilleur rendu avec @ref{Le script Articulate}. +LilyPond peut produire des fichiers conformes au standard MIDI (Musical +Instrument Digital Interface), ce qui permet de vérifier le rendu à +l'oreille grace à un logiciel ou un périphérique sachant interpréter le +MIDI. L'écoute du rendu en MIDI permet de contrôler aisément ce que +vous avez saisi : octaves et altérations erronées heurteront votre +oreille avertie ! -Dans une sortie MIDI, LilyPond alloue un canal à chaque portée, tout en -réservant le canal 10 aux percussions. Dans la mesure ou un -périphérique MIDI ne comprend que 16 canaux, un fichier MIDI qui -comportera plus de quinze portées verra le même canal réutilisé. +Les fichiers MIDI, contrairement aux fichiers AAC, MP3 ou Vorbis, ne +contiennent pas de son et nécessitent donc le recours à un logiciel +supplémentaire pour les écouter. @menu -* Création de fichiers MIDI:: -* Instrument MIDI:: -* Contenu de la sortie MIDI:: -* Répétitions et MIDI:: +* Notation prise en compte dans le MIDI:: +* Notation non prise en compte dans le MIDI:: +* Le bloc MIDI:: * Gestion des nuances en MIDI:: -* MIDI et percussions:: -* Le script Articulate:: +* Gestion des instruments MIDI:: +* Gestion des répétitions en MIDI:: +* Affectation des canaux MIDI:: +* Propriétés de contextes et effets MIDI:: +* Amélioration du rendu MIDI:: @end menu +@node Notation prise en compte dans le MIDI +@subsection Notation prise en compte dans le MIDI +@translationof Supported notation for MIDI -@node Création de fichiers MIDI -@subsection Création de fichiers MIDI -@translationof Creating MIDI files +@cindex MIDI, éléments pris en compte -LilyPond générera un fichier MIDI dès que vous ajouterez un bloc -@code{\midi} au sein du bloc @code{\score} : - -@example -\score @{ - @var{@dots{}musique@dots{}} - \layout @{ @} - \midi @{ @} -@} -@end example - -Lorsque le bloc @code{\score} contient uniquement un bloc @code{\midi} -(autrement dit pas de bloc @code{\layout}), LilyPond produira uniquement -la sortie MIDI -- aucun support visuel ne sera généré. +LilyPond retranscrit par défaut dans un fichier MIDI les éléments de +notation suivant : -@example -\score @{ - @var{@dots{}musique@dots{}} - \midi @{ @} -@} -@end example +@itemize +@item les marques de respiration, +@item les accords nommés, +@item les crescendos et decrescendos s'étendant sur plusieurs notes -- +le volume s'ajuste linéairement entre les deux extrêmes, +@item les indications de nuance, de @code{ppppp} à @code{fffff}, y compris +@code{mp}, @code{mf} et @code{sf}, +@item les microtonalités mais @emph{pas} sous forme d'accord ; leur +rendu nécessite cependant un lecteur qui prenne en charge la +modulation, +@item les paroles, +@item les hauteurs, +@item le rythme sous forme de durée de note, y compris les n-olets, +@item les articulations « simples » comme staccato, staccatissimo, +accent, marcato et portato, +@item les changements de tempo indiqués par un @code{\tempo}, +@item les liaisons de tenue, +@item les tremolos, excepté ceux utilisant la syntaxe +« @code{:}[@var{nombre}] ». +@end itemize -Hauteurs, durées, liaisons de prolongation, nuances et changements de -tempo seront interprétés et traduits en événements MIDI. Les -indications de nuances, crescendos et decrescendos sont traduits en -niveau de volume ; les indications sous la forme d'une fraction -déterminée du volume disponible, et crescendos et decrescendos sous la -forme d'une progression linéaire entre les deux extrêmes. +Spatialisation, balance, expression, réverbération et chorus peuvent se +contrôler à l'aide de propriétés de contexte -- voir +@ref{Propriétés de contextes et effets MIDI}. -Le tempo initial ainsi que ses changements sont normalement indiqués au -fil de la notation à l'aide de la commande @code{\tempo} ; ils seront -retranscrits dans le fichier MIDI. +En combinaison avec le script @file{articulate}, d'autres éléments +seront aussi reportés en MIDI : -Si le bloc @code{\midi} est la plupart du temps laissé vide, il peut -contenir des aménagements pour certains contextes, la définition de -contextes particuliers ou du code permettant de déterminer la valeur de -certaines propriétés. L'exemple suivant détermine le tempo initial du -fichier MIDI tout en se passant de son indication sur la partition -imprimée : +@itemize +@item les appoggiatures -- celles-ci prendront la moitié de la valeur, +dépourvue de point, de la note qui les suit -- par exemple, @example -\score @{ - @var{@dots{}music@dots{}} - \midi @{ - \tempo 4 = 72 - @} -@} +\appoggiatura c8 d2. @end example -Notez bien que @code{\tempo} est une commande chargée de définir des -propriétés en cours d'interprétation de la musique. Intervenant dans le -cadre de définitions d'une sortie, comme ici un bloc @code{\midi}, elle -est réinterprétée comme une modification de contexte. +@noindent +le do (noté @code{c}) prendra la valeur d'une noire. -@cindex MIDI, définition de contexte +@item les ornements (mordants, trilles et groupettos, etc.), +@item rallentando, accelerando, ritardando et a tempo, +@item les liaisons y compris de phrasé, +@item les tenutos. +@end itemize -La syntaxe permettant de définir un contexte pour le @code{\midi} est en -tout point identique à celle que vous utilisez dans le bloc -@code{\layout}, à ceci près que le « graveur » est remplacé par un -« interprète » (@emph{performer} en anglais). +@noindent +Voir @ref{Amélioration du rendu MIDI}. -@example -\score @{ - @var{@dots{}music@dots{}} - \midi @{ - \context @{ - \Voice - \remove "Dynamic_performer" - @} - @} -@} -@end example -@noindent -supprimera les effets de nuance dans la sortie MIDI. Les modules -chargés de traduire la musique en son s'appellent des « interprètes » -- -@emph{performers} en anglais. +@node Notation non prise en compte dans le MIDI +@subsection Notation non prise en compte dans le MIDI +@translationof Unsupported notation for MIDI -@snippets -@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] -{changing-midi-output-to-one-channel-per-voice.ly} +@cindex MIDI, éléments non pris en comte -@seealso -Manuel d'initiation : -@rlearning{Autres sources de documentation}. +Certains éléments de notation ne peuvent être retranscrits dans un +fichier MIDI : -Manuel de notation : -@ref{Signes d'interprétation}, -@ref{Mise en forme de la partition}. +@itemize +@item les articulations autres que staccato, staccatissimo, accent, marcato +et portato, +@item les crescendos et decrescendos sur @emph{une seule} note, +@item les points d'orgue, +@item la basse chiffrée, +@item les glissandos, +@item les chutes ou sauts, +@item les accords en microtonalité, +@item le rythme indiqué sous forme d'annotation, comme « swing », +@item les changements de tempo indiqués sous forme d'annotation (sans +@code{\tempo}), +@item les trémolos indiqués par la syntaxe « @code{:}[@var{nombre}] ». +@end itemize -Fichiers d'initialisation : -@file{ly/performer-init.ly}. -Morceaux choisis : -@rlsr{MIDI}. +@node Le bloc MIDI +@subsection Le bloc MIDI +@translationof The MIDI block -Référence des propriétés internes : -@rinternals{Dynamic_performer}. +@cindex MIDI, le bloc -@knownissues -Certains systèmes d'exploitation requièrent que les fichiers MIDI -portent l'extension @code{.mid}. Si besoin est, placez la ligne -suivante au début de votre fichier source, avant l'ouverture de tout -bloc @code{\book}, @code{\bookpart} ou @code{\score} : +LilyPond générera un fichier MIDI dès que vous ajouterez un bloc +@code{\midi}, même vide, au sein du bloc @code{\score} : @example -#(ly:set-option 'midi-extension "mid") +\score @{ + @var{@dots{}musique@dots{}} + \layout @{ @} + \midi @{ @} +@} @end example -Cette ligne déterminera @code{.midi} comme extension par défaut pour les -fichiers MIDI. +@warning{Lorsque le bloc @code{@bs{}score} contient uniquement un bloc +@code{@bs{}midi} (autrement dit pas de bloc @code{@bs{}layout}), +LilyPond produira uniquement la sortie MIDI -- aucun support visuel ne +sera généré.} -Vous pouvez aussi le faire en ligne de commande : +L'extension par défaut des fichiers MIDI générés (@code{.midi}) peut se +modifier en ligne de commande : @example -lilypond … -dmidi-extension=mid MonFichier.ly +lilypond -dmidi-extension=mid MonFichier.ly @end example -Un changement de volume ne peut intervenir que sur le démarrage d'une -note. C'est la raison pour laquelle la succession d'un crescendo et -d'un diminuendo ne peut se produire sur une même note. - -Certains lecteurs MIDI ne rendent pas correctement les changements de -tempo. - -Les modifications de @code{midiInstrument} ou autres options MIDI en -début de portée peuent se retrouver dédoublées dans la sortie MIDI. - - -@node Instrument MIDI -@subsection Instrument MIDI -@translationof MIDI Instruments - -@cindex instrument, nom d' -@cindex MIDI, instruments -@funindex Staff.midiInstrument - -L'instrument MIDI affecté à un canal particulier est déterminé par la -propriété @code{Staff.midiInstrument}. Vous pouvez choisir l'un des -instruments répertoriés à l'annexe @ref{Instruments MIDI}. +Une autre manière de procéder consiste à placer la ligne suivante au +début de votre fichier source, avant l'ouverture de tout bloc +@code{\book}, @code{\bookpart} ou @code{\score} -- voir +@ref{Structure de fichier} : @example -\new Staff @{ - \set Staff.midiInstrument = #"glockenspiel" - @var{@dots{}notes@dots{}} -@} +#(ly:set-option 'midi-extension "mid") @end example -@example -\new Staff \with @{midiInstrument = #"cello"@} @{ - @var{@dots{}notes@dots{}} -@} -@end example +@seealso +Manuel de notation : +@ref{Structure de fichier}. -Lorsque l'instrument choisi ne correspond pas exactement à l'une des -dénominations consacrées, LilyPond le replacera par un piano de concert -(@code{"acoustic grand"}). +Fichiers d'initialisation : +@file{scm/midi.scm}. -@seealso -Manuel de notation : -@ref{Instruments MIDI}. +@knownissues +Le standard MIDI dispose de 15 canaux plus un (le numéro 10) affecté aux +percussions. Les portées sont assignées l'une après l'autre à un canal. +Dans la mesure où une partition comporte plus de 15 portées, les portées +au-delà de la quinzième partageront un même canal MIDI, sans toutefois +l'écraser. Ceci peut entraîner des conflits au niveau des canaux en +raison des propriétés MIDI, notamment l'instrument utilisé. -Référence des propriétés internes : -@rinternals{Dynamic_performer}. +@node Gestion des nuances en MIDI +@subsection Gestion des nuances en MIDI +@translationof Controlling MIDI dynamics +@cindex MIDI, gestion des nuances -@node Contenu de la sortie MIDI -@subsection Contenu de la sortie MIDI -@translationof What goes into the MIDI output? +Le volume général de la sortie MIDI peut se définir, ainsi que ses +modulations, en fonction des indications de nuance et les volumes +relatifs entre les différents instruments. -@c TODO Check grace notes - timing is suspect? +Les indications de nuance se traduisent automatiquement en niveau de +volume dans l'amplitude disponible en MIDI alors que crescendos et +diminuendos auront une progression linéaire entre les extrêmes. @menu -* Éléments pris en compte dans le MIDI:: -* Éléments non pris en compte dans le MIDI:: +* Indication des nuances en MIDI:: +* Réglage du volume en MIDI:: +* Réglage de propriétés dans le bloc MIDI:: @end menu -@node Éléments pris en compte dans le MIDI -@unnumberedsubsubsec Éléments pris en compte dans le MIDI -@translationof Supported in MIDI - -@cindex hauteurs en MIDI -@cindex MIDI, hauteurs -@cindex quart de ton en MIDI -@cindex MIDI, quart de ton -@cindex microtonalité en MIDI -@cindex MIDI, microtonalité -@cindex accords nommés en MIDI -@cindex MIDI, accords nommés -@cindex Rythme en MIDI -@cindex MIDI, Rythme -@cindex articulations et MIDI -@cindex MIDI et articulations -@cindex trilles et MIDI -@cindex MIDI et trilles -@c TODO etc - -Un fichier MIDI généré par LilyPond comprendra les éléments de notation -suivants : +@node Indication des nuances en MIDI +@unnumberedsubsubsec Indication des nuances en MIDI +@translationof Dynamic marks in MIDI -@itemize -@item -les hauteurs ; +@cindex MIDI, indications de nuance -@item -les microtonalités -- voir @ref{Altérations}. Leur rendu nécessite -cependant un lecteur qui prenne en charge la modulation ; +Les indications de nuance, de @code{ppppp} à @code{fffff} -- y compris +@code{mp}, @code{mf} et @code{sf} -- ont des valeurs prédéfinies. Ce +coefficient est alors appliqué pour corriger le volume général de façon +à obtenir le niveau sonore qui sera retranscrit dans le fichier de +sortie pour la nuance considérée. Nous allons, par défaut, de 0,25 pour +un @notation{ppppp} à 0,95 pour un @notation{fffff}. Les +correspondances entre nuance et fraction de volume sont répertoriées +dans le fichier @file{scm/midi.scm}. -@item -les accords nommés ; +@snippets +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{creating-custom-dynamics-in-midi-output.ly} -@item -le rythme en tant que durée de note, y compris les n-olets ; +@seealso +Fichiers d'initialisation : +@file{ly/script-init.ly}, +@file{scm/midi.scm}. -@item -les trémolos, exceptés ceux utilisant la syntaxe -@qq{@code{:}[@var{nombre}]} ; +Morceaux choisis : +@rlsr{MIDI}. -@item -les liaisons de prolongation ; +Référence des propriétés internes : +@rinternals{Dynamic_performer}. -@item -les indications de nuance ; +@node Réglage du volume en MIDI +@unnumberedsubsubsec Réglage du volume en MIDI +@translationof Setting MIDI volume -@item -les crescendos et decrescendos s'étalant sur plusieurs notes ; +@cindex MIDI, réglage du volume -@item -les changements de tempo indiqués par un @code{\tempo} ; +Les valeurs extrêmes du volume MIDI des nuances se contrôlent à l'aide +des propriétés @code{midiMinimumVolume} et @code{midiMaximumVolume} qui +agissent au niveau @code{Score}. Ces propriétés sont effectives dès +lors qu'une nuance est indiquée ; une nuance de départ explicite est donc +requise pour que le volume soit ajusté dès le début de la partition. +Vous pouvez alors modifier la fraction correspondant à chaque nuance à +l'aide de la formule -@item -les paroles, +@example +midiMinimumVolume + (midiMaximumVolume - midiMinimumVolume) * fraction +@end example -@item -les articulations simples : staccato, staccatissimo, accent, marcato, -portato, +Voici comment ajuster les nuances tout en limitant l'amplitude du volume +entre 0,2 et 0,5 : -@item -les respirations. -@end itemize - -Si vous utilisez @ref{Le script Articulate}, d'autres éléments seront -alors inclus : - -@itemize -@item liaisons d'articulation ou de phrasé, -@item ornements (mordants, trilles et groupettos, etc.), -@item rallentando, accelerando, ritard. et a tempo. -@end itemize - -@seealso -Manuel de notation : -@ref{Altérations}, -@ref{Signes de respiration}, -@ref{Signes d'interprétation}. - -Fichiers d'initialisation : -@file{ly/articulate.ly}. - - -@node Éléments non pris en compte dans le MIDI -@unnumberedsubsubsec Éléments non pris en compte dans le MIDI -@translationof Unsupported in MIDI - -@c TODO index as above - -LilyPond ne peut générer d'événement MIDI pour les éléments suivant, -même avec @ref{Le script Articulate} : +@example +\score @{ + << + \new Staff @{ + \set Staff.midiInstrument = #"flute" + @var{@dots{} music @dots{}} + @} + \new Staff @{ + \set Staff.midiInstrument = #"clarinet" + @var{@dots{} music @dots{}} + @} + >> + \midi @{ + \context @{ + \Score + midiMinimumVolume = #0.2 + midiMaximumVolume = #0.5 + @} + @} +@} +@end example -@itemize -@item -le rythme indiqué sous forme d'annotation (par ex. @emph{swing}) ; +La définition de l'amplitude du volume MIDI au niveau d'un contexte +@code{Staff} -- grace aux propriétés @code{midiMinimumVolume} et +@code{midiMaximumVolume} -- permet en quelque sorte d'égaliser un +instrument MIDI. -@item -les changements de tempo indiqués sous forme d'annotation (sans -@code{\tempo}) ; +@example +\score @{ + \new Staff @{ + \set Staff.midiInstrument = #"flute" + \set Staff.midiMinimumVolume = #0.7 + \set Staff.midiMaximumVolume = #0.9 + @var{@dots{} musique @dots{}} + @} + \midi @{ @} +@} +@end example -@item -les points d'orgue ; +Dans le cas d'une partition à plusieurs portées et différents +instruments, les volumes relatifs entre les différents instruments se +gèrent individuellement : -@item -les autres articulations ; +@example +\score @{ + << + \new Staff @{ + \set Staff.midiInstrument = #"flute" + \set Staff.midiMinimumVolume = #0.7 + \set Staff.midiMaximumVolume = #0.9 + @var{@dots{} music @dots{}} + @} + \new Staff @{ + \set Staff.midiInstrument = #"clarinet" + \set Staff.midiMinimumVolume = #0.3 + \set Staff.midiMaximumVolume = #0.6 + @var{@dots{} music @dots{}} + @} + >> + \midi @{ @} +@} +@end example -@item -les liaisons d'articulation et de phrasé ; +La clarinette de cet exemple jouera relativement moins fort que la +flûte. -@item -les crescendos ou decrescendos sur une seule note ; +En l'absence de tout réglage des propriétés de volume, LilyPond +appliquera cependant un léger degré d'égalisation pour certains +instruments -- voir @file{scm/midi.scm}. -@item -les trémolos indiqués par la syntaxe @qq{@code{:}[@var{nombre}]} ; +@snippets +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{replacing-default-midi-instrument-equalization.ly} -@item -la basse chiffrée ; +@seealso +Fichiers d'initialisation : +@file{scm/midi.scm}. -@item -les accords en microtonalité. +Manuel de notation : +@ref{Mise en forme de la partition}. -@item -les glissandos, chutes et sauts. -@end itemize +Référence des propriétés internes : +@rinternals{Dynamic_performer}. -@seealso -Fichiers d'initialisation : -@file{ly/articulate.ly}. +@knownissues +Les modifications apportées au volume MIDI n'interviennent que sur +l'attaque d'une note, en conséquence de quoi crescendos et decrescendos +n'affecteront pas le volume s'ils se produisent sur une même et unique +note. -@node Répétitions et MIDI -@subsection Répétitions et MIDI -@translationof Repeats in MIDI +@node Réglage de propriétés dans le bloc MIDI +@unnumberedsubsubsec Réglage de propriétés dans le bloc MIDI +@translationof Setting MIDI block properties -@cindex reprises développées -@cindex MIDI et reprises -@funindex \unfoldRepeats +Le bloc @code{\midi} peut contenir des aménagements pour certains +contextes, la définition de contextes particuliers ou du code permettant +de déterminer la valeur de certaines propriétés. -Au prix de quelques réglages, les reprises de toutes sortes peuvent être -rendues dans le fichier MIDI. Il suffit pour cela de recourir à la -fonction @code{\unfoldRepeats}, qui développe toutes les reprises. En -d'autre termes, @code{\unfoldRepeats} transforme toutes les reprises -en reprises de type @code{unfold}. +@example +\score @{ + @var{@dots{} music @dots{}} + \midi @{ + \tempo 4 = 72 + @} +@} +@end example +Le tempo est ici réglé à 72 noires par minute. Une indication de tempo +inscrite dans le bloc @code{\midi} ne sera pas reportée sur la partition +imprimable. Cependant, tout @code{\tempo} mentionné dans le bloc +@code{\score} sera répercuté dans la sortie MIDI. -@lilypond[quote,verbatim] -\unfoldRepeats { - \repeat tremolo 8 {c'32 e' } - \repeat percent 2 { c''8 d'' } - \repeat volta 2 {c'4 d' e' f'} - \alternative { - { g' a' a' g' } - {f' e' d' c' } - } -} -\bar "|." -@end lilypond +Placée au sein d'un bloc @code{\midi}, la commande @code{\tempo} +détermine des propriétés lors de la phase d'interprétation de la musique +et dans le contexte de définition des sorties. Elle est alors +considérée comme une modification de contexte. -Dans une partition comportant plusieurs voix, le développement des -reprises ne sera effectif en MIDI qu'à la condition que ces reprises -soient mentionnée correctement dans @strong{toutes} les voix. +@cindex MIDI, définition de contexte +@cindex contexte, définition en MIDI -Lorsque l'on veut utiliser @code{\unfoldRepeats} seulement pour le rendu -MIDI, il faut établir deux blocs @code{\score} : un pour le MIDI, avec -des reprises explicites, et l'autre pour la partition, avec des reprises -notées sous forme de barres de reprise, de trémolo ou de symboles de -pourcentage. Par exemple +La syntaxe permettant de définir un contexte pour le @code{\midi} est en +tout point identique à celle que vous utilisez dans le bloc +@code{\layout} : @example \score @{ - @var{@dots{}musique@dots{}} - \layout @{ @dots{} @} -@} -\score @{ - \unfoldRepeats @var{@dots{}musique@dots{}} - \midi @{ @dots{} @} + @var{@dots{} musique @dots{}} + \midi @{ + \context @{ + \Voice + \remove "Dynamic_performer" + @} + @} @} @end example +Ces quelques lignes ont pour effet de supprimer l'application des +nuances à la sortie MIDI. Vous aurez noté que les modules de traduction +de LilyPond en matière de son s'appelent @emph{performers} -- des +« interprètes ». + @seealso +Manuel d'initiation : +@rlearning{Autres sources de documentation}. + Manuel de notation : -@ref{Mise en forme de la partition}. +@ref{Mise en forme de la partition}, +@ref{Signes d'interprétation}. Fichiers d'initialisation : -@file{ly/articulate.ly}. +@file{ly/performer-init.ly}. +Morceaux choisis : +@rlsr{MIDI}. -@node Gestion des nuances en MIDI -@subsection Gestion des nuances en MIDI -@translationof Controlling MIDI dynamics +Référence des propriétés internes : +@rinternals{Dynamic_performer}. -Les nuances MIDI sont générées par le @code{Dynamic_performer}, affecté -par défaut au contexte @code{Voice}. Vous pouvez contrôler à la fois le -volume général, celui des indications de nuance ainsi que celui des -différents instruments. +@knownissues +Certains lecteurs MIDI ne rendent pas correctement les changements de +tempo. -@menu -* Indications de nuance:: -* Amplitude du volume en MIDI:: -* Égalisation de plusieurs instruments (i):: -* Égalisation de plusieurs instruments (ii):: -@end menu +Les modifications de @code{midiInstrument} ou autres options MIDI en +début de portée peuvent se retrouver dédoublées dans la sortie MIDI. +@node Gestion des instruments MIDI +@subsection Gestion des instruments MIDI +@translationof Using MIDI Instruments -@node Indications de nuance -@unnumberedsubsubsec Indications de nuance -@translationof Dynamic marks - -Les indications de nuances sont transcrites en fraction du volume MIDI. -Nous allons, par défaut, de 0,25 pour un @notation{ppppp} à 0,95 pour un -@notation{fffff}. Les correspondances entre nuance et fraction de -volume sont répertoriées dans le fichier @file{../scm/midi.scm} -- -consultez la rubrique @rlearning{Autres sources de documentation} si -vous ne savez comment le localiser. Vous pouvez modifier ou étendre ce -jeu grâce à une fonction qui prendra en argument une indication de -nuance et renverra la fraction désirée, puis en affectant cette fonction -à @code{Score.dynamicAbsoluteVolumeFunction}. - -Prenons un exemple. Votre partition comporte un @notation{rinforzando} -que vous avez indiqué par @code{\rfz}. Cette indication de nuance -n'étant pas répertoriée dans le jeu par défaut, elle ne produira aucun -effet en MIDI. Il en sera d'ailleurs de même pour toute indication -créée de toute pièce à l'aide de l'instruction -@w{@code{make-dynamic-script}}. Voici comment procéder pour ajuster le -volume MIDI de ce @notation{rinforzando} que le compositeur a indiqué. -La fonction Scheme définit une fraction de 0,9 en cas de @notation{rfz}, -et demande d'utiliser la fonction par défaut dans les autre cas. +@cindex instrument, nom d' +@cindex MIDI, instruments +@funindex Staff.midiInstrument -@lilypond[verbatim,quote] -#(define (myDynamics dynamic) - (if (equal? dynamic "rfz") - 0.9 - (default-dynamic-absolute-volume dynamic))) +L'instrument MIDI est déterminé par la propriété @code{midiInstrument}, +au sein d'un contexte @code{Staff}. -\score { - \new Staff { - \set Staff.midiInstrument = #"cello" - \set Score.dynamicAbsoluteVolumeFunction = #myDynamics - \new Voice { - \relative { - a'4\pp b c-\rfz - } - } - } - \layout {} - \midi {} -} -@end lilypond +@example +\score @{ + \new Staff @{ + \set Staff.midiInstrument = #"glockenspiel" + @var{@dots{} music @dots{}} + @} + \midi @{ @} +@} +@end example -Si vous étiez amené à devoir modifier l'intégralité du jeu des -correspondances, nous vous conseillons d'utiliser la procédure -@command{default-dynamic-absolute-volume} contenue dans le fichier -@file{../scm/midi.scm} ainsi que la table d'association comme base. -Le dernier exemple de cette partie illustre la manière de procéder. +ou + +@example +\score @{ + \new Staff \with @{midiInstrument = #"cello"@} @{ + @var{@dots{} music @dots{}} + @} + \midi @{ @} +@} +@end example + +Lorsque l'instrument choisi ne correspond pas exactement à l'une des +dénominations consacrées, LilyPond le remplacera par un piano de concert +(@code{"acoustic grand"}) -- voir @ref{Instruments MIDI}. @seealso +Manuel d'initiation : +@rlearning{Autres sources de documentation}. + Manuel de notation : -@ref{Signes d'interprétation}, +@ref{Instruments MIDI}, @ref{Mise en forme de la partition}. +Référence des propriétés internes : +@rinternals{Dynamic_performer}. + Fichiers d'initialisation : @file{scm/midi.scm}. -Référence des propriétés internes : -@rinternals{Dynamic_performer}. +@knownissues +Les percussions gérées par un contexte @code{DrumStaff} sont affectées +directement au canal 10 qui leur est réservé. Certains instruments, tels +le xylophone, le marimba, le vibraphone ou les timbales, se traitent +cependant comme des instruments « classiques » puisqu'ils sont capables +d'émettre des hauteurs différentes ; leur notation relève donc d'un +contexte @code{Staff} standard, et non d'un @code{DrumStaff} pour +pouvoir être rendus correctement en MIDI. Une liste complète des +percussions affectées au canal 10 (@code{channel 10 drum-kits}) est +disponible dans le fichier @file{scm/midi.scm} -- voir +@rlearning{Autres sources de documentation}. -@node Amplitude du volume en MIDI -@unnumberedsubsubsec Amplitude du volume en MIDI -@translationof Overall MIDI volume +@node Gestion des répétitions en MIDI +@subsection Gestion des répétitions en MIDI +@translationof Using repeats with MIDI -Les valeurs extrêmes du volume MIDI des nuances se contrôlent à l'aide -des propriétés @code{midiMinimumVolume} et @code{midiMaximumVolume} qui -agissent au niveau @code{Score}. Ces propriétés sont effectives dès -lors qu'une nuance est indiquée ; une nuance de départ explicite est donc -requise pour que le volume soit ajusté dès le début de la partition. -Vous pouvez alors modifier la fraction correspondant à chaque nuance à -l'aide de la formule +@cindex reprises développées +@cindex MIDI et reprises +@funindex \unfoldRepeats + +Les reprises de toutes sortes peuvent être rendues dans le fichier MIDI. +Il suffit pour cela de recourir à la fonction @code{\unfoldRepeats}, qui +développe toutes les reprises. @example -midiMinimumVolume + (midiMaximumVolume - midiMinimumVolume) * fraction +\score @{ + \unfoldRepeats @{ + \repeat tremolo 8 @{ c'32 e' @} + \repeat percent 2 @{ c''8 d'' @} + \repeat volta 2 @{ c'4 d' e' f' @} + \alternative @{ + @{ g' a' a' g' @} + @{ f' e' d' c' @} + @} + @} + \midi @{ @} +@} @end example -Voici comment ajuster les nuances tout en limitant l'amplitude du volume -entre 0,2 et 0,5 : +Lorsque l'on veut utiliser @code{\unfoldRepeats} seulement pour le rendu +MIDI, il faut établir @b{deux} blocs @code{\score} : un pour le MIDI, +avec des reprises explicites, et l'autre pour la partition, avec des +reprises notées sous forme de barres de reprise, de trémolo ou de +symboles de pourcentage. Par exemple -@lilypond[verbatim,quote] -\score { - << - \new Staff { - \key g \major - \time 2/2 - \set Staff.midiInstrument = #"flute" - \new Voice \relative { - r2 g''\mp g fis~ - 4 g8 fis e2~ - 4 d8 cis d2 - } - } - \new Staff { - \key g \major - \set Staff.midiInstrument = #"clarinet" - \new Voice \relative { - b'1\p a2. b8 a - g2. fis8 e - fis2 r - } - } - >> - \layout {} - \midi { - \tempo 2 = 72 - \context { - \Score - midiMinimumVolume = #0.2 - midiMaximumVolume = #0.5 - } - } -} -@end lilypond +@example +\score @{ + @var{@dots{} musique @dots{}} + \layout @{ @} +@} +\score @{ + \unfoldRepeats @var{@dots{} musique @dots{}} + \midi @{ @} +@} +@end example + +Dans une partition comportant plusieurs voix, le développement des +reprises ne sera effectif en MIDI qu'à la condition que ces reprises +soient mentionnée correctement dans @strong{toutes} les voix. @seealso Manuel de notation : -@ref{Mise en forme de la partition}. +@ref{Répétitions et reprises}. -Référence des propriétés internes : -@rinternals{Dynamic_performer}. -@node Égalisation de plusieurs instruments (i) -@unnumberedsubsubsec Égalisation de plusieurs instruments (i) -@translationof Equalizing different instruments (i) +@node Affectation des canaux MIDI +@subsection Affectation des canaux MIDI +@translationof MIDI channel mapping -La définition de l'amplitude du volume MIDI au niveau d'un contexte -@code{Staff} permet de gérer les volumes relatifs entre les différents -instruments. Ceci constitue en quelque sorte un égaliseur, ce qui -permet d'améliorer notablement la qualité de la sortie MIDI. +@cindex MIDI, canaux +@cindex MIDI, pistes +@funindex midiChannelMapping -La clarinette de l'exemple suivant jouera relativement moins fort que la -flûte. Rappelez-vous que pour que cela fonctionne correctement, la -première note de chacun des instruments doit être affublée d'une -indication de nuance. +Lorsque LilyPond génère un fichier MIDI à partir d'une partition, chaque +note contenue dans cette partition sera automatiquement assignée à un +canal MIDI, celui sur lequel elle devrait être jouée quand elle est +transmise à un périphérique MIDI. Chaque canal MIDI dispose d'un +certain nombre de contrôles pour, par exemple, sélectionner l'instrument ++qui jouera les notes de ce canal ou bien demander au périphérique MIDI +d'appliquer différents effets au son produit sur ce canal. En tout état +de cause, chaque contrôle d'un canal MIDI ne peut se voir affecté que +d'une seule valeur à la fois -- celle-ci peut toutefois être modifiée +pour, par exemple, changer d'instrument au milieu du morceau. -@lilypond[verbatim,quote] -\score { - << - \new Staff { - \key g \major - \time 2/2 - \set Staff.midiInstrument = #"flute" - \set Staff.midiMinimumVolume = #0.7 - \set Staff.midiMaximumVolume = #0.9 - \new Voice \relative { - r2 g''\mp g fis~ - 4 g8 fis e2~ - 4 d8 cis d2 - } - } - \new Staff { - \key g \major - \set Staff.midiInstrument = #"clarinet" - \set Staff.midiMinimumVolume = #0.3 - \set Staff.midiMaximumVolume = #0.6 - \new Voice \relative { - b'1\p a2. b8 a - g2. fis8 e - fis2 r - } - } - >> - \layout {} - \midi { - \tempo 2 = 72 - } -} -@end lilypond +Le standard MIDI ne dispose que de 16 canaux par périphérique MIDI. +Cette limite du nombre de canaux entraîne une limitation du nombre +d'instruments pouvant jouer de concert. -@seealso -Manuel de notation : -@ref{Mise en forme de la partition}. +LilyPond crée une piste MIDI séparée pour chaque portée (ou chaque +instrument ou voix selon la valeur de @code{Score.midiChannelMapping}) +ainsi que pour chaque contexte de paroles. Il n'y a pas de limite au +nombre de pistes. +Afin de contourner la limitation du nombre de canaux MIDI, LilyPond +dispose de différents modes d'allocation d'un canal MIDI grâce à la +propriété de contexte @code{Score.midiChannelMapping}. Dans tous les +cas, lorsque la limite au nombre de canaux est atteinte, LilyPond repart +du canal 0, ce qui peut affecter des notes au mauvais instrument. Cette +propriété de contexte peut prendre les valeurs suivantes : -@node Égalisation de plusieurs instruments (ii) -@unnumberedsubsubsec Égalisation de plusieurs instruments (ii) -@translationof Equalizing different instruments (ii) +@table @var -Lorsque les propriétés volume minimum et maximum n'ont pas été définies, -LilyPond appliquera par défaut une légère égalisation pour quelques -instruments. Les instrument concernés ainsi que le niveau d'égalisation -sont répertoriés dans une table @notation{instrument-equalizer-alist} -du fichier @file{../scm/midi.scm}. +@item @code{'staff} + +Allocation d'un canal MIDI particulier à chacune des portées de la +partition (option par défaut). Toutes les notes de toutes les voix +d'une même portée partageront le canal MIDI affecté à la portée qui les +englobe, et toutes seront encodées dans la même piste. + +La limite des 16 canaux s'applique au nombre total de portées augmenté +des contextes de paroles même si les paroles MIDI n'occupent pas de +canal MIDI. + +@item @code{'instrument} + +Allocation d'un canal MIDI particulier à chaque instrument MIDI tel que +spécifié dans la partition. En d'autre termes, des notes jouées par un +même instrument MIDI partageront le même canal MIDI (et la même piste), +même si elles proviennent de voix ou portées différentes. + +Dans ce cas particulier, les contextes de paroles ne sont pas pris en +compte dans la limite des 16 canaux, puisqu'ils ne sont pas assignés à +un instrument MIDI, ce qui permet une meilleure allocation des canaux +MIDI lorsque le nombre de portées et de contextes de paroles dépasse 16. + +@item @code{'voice} + +Allocation d'un canal MIDI particulier à chaque voix de la partition +portant un nom unique parmi les voix de la portée considérée. Des voix +appartenant à des portées différentes seront toujours affectées à des +canaux MIDI différents, mais deux voix partageant la même portée +partageront le même canal MIDI dès lors qu'elles porteront le même nom. +Dans la mesure où @code{midiInstrument} et les différents contrôles +d'effets MIDI sont des propriétés affectant le contexte de portée, ils +ne peuvent se déterminer individuellement pour une voix. La première +voix adoptera l'instrument et les effets spécifiés pour cette portée, et +les voix dénommées différemment de la première se verront attribué +l'instrument et le effets par défaut. + +Note : l'affectation d'instruments ou d'effets différents aux +differentes voix d'une même portée s'obtient dès lors que le +@code{Staff_performer} est déplacé du contexte @code{Staff} au contexte +@code{Voice} tout en maintenant le @code{midiChannelMapping} dans le +contexte @code{'staff} ou en le réglant sur @code{'instrument}. -Vous pouvez remplacer l'égaliseur basique en définissant une nouvelle -procédure Scheme @code{instrumentEqualizer} au sein du contexte -@code{Score}. Cette procédure prend en unique argument le nom d'un -instrument MIDI et renverra une paire de fractions correspondant au -minimum et maximum de volume alloué à cet instrument. Cette -substitution fonctionne selon le même principe que celui que nous avons -vu en début de chapitre avec @code{dynamicAbsoluteVolumeFunction}. -L'égaliseur par défaut, @notation{default-instrument-equalizer}, est -défini dans le fichier @file{../scm/midi.scm} ; son analyse vous -aidera à construire votre propre procédure. +@end table -Nous allons, dans l'exemple suivant, régler le volume relatif de la -flûte et de la clarinette -- au même niveau que dans le précédent. +Par exemple, l'affectation par défaut des canaux MIDI d'une partition +peut être réglée sur @code{'instrument} comme ceci : -@lilypond[verbatim,quote] -#(define my-instrument-equalizer-alist '()) +@example +\score @{ + ...musique... + \midi @{ + \context @{ + \Score + midiChannelMapping = #'instrument + @} + @} +@} +@end example -#(set! my-instrument-equalizer-alist - (append - '( - ("flute" . (0.7 . 0.9)) - ("clarinet" . (0.3 . 0.6))) - my-instrument-equalizer-alist)) +@snippets +@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] +{changing-midi-output-to-one-channel-per-voice.ly} -#(define (my-instrument-equalizer s) - (let ((entry (assoc s my-instrument-equalizer-alist))) - (if entry - (cdr entry)))) -\score { - << - \new Staff { - \key g \major - \time 2/2 - \set Score.instrumentEqualizer = #my-instrument-equalizer - \set Staff.midiInstrument = #"flute" - \new Voice \relative { - r2 g''\mp g fis~ - 4 g8 fis e2~ - 4 d8 cis d2 - } - } - \new Staff { - \key g \major - \set Staff.midiInstrument = #"clarinet" - \new Voice \relative { - b'1\p a2. b8 a - g2. fis8 e - fis2 r - } - } - >> - \layout { } - \midi { - \tempo 2 = 72 - } -} -@end lilypond +@node Propriétés de contextes et effets MIDI +@subsection Propriétés de contextes et effets MIDI +@translationof Context properties for MIDI effects + +@cindex effets MIDI +@cindex pan, MIDI +@cindex spatialisation (pan), MIDI +@cindex stéréo MIDI, balance +@cindex balance MIDI +@cindex expression MIDI +@cindex reverb MIDI +@cindex chorus MIDI +@funindex midiPanPosition +@funindex midiBalance +@funindex midiExpression +@funindex midiReverbLevel +@funindex midiChorusLevel + +Les différentes propriétés de contexte qui suivent permettnt d'appliquer +différents effets MIDI aux notes contenues dans le canal MIDI associé à +la portée courante, à l'instrument ou à la voix, selon la valeur +affectée à la propriété de contexte @code{Score.midiChannelMapping} et +le contexte dans lequel le @code{Staff_performer} réside -- voir +@ref{Affectation des canaux MIDI}. + +Une adaptation de ces propriétés de contexte affectera toutes les notes +jouées sur ce canal dès leur modification. Certains effets pourront +même s'appliquer sur des notes déjà en cours, selon l'implémentation du +périphérique de sortie MIDI. + +LilyPond dispose des propriétés de contexte suivantes : -@seealso -Fichiers d'initialisation : -@file{scm/midi.scm}. +@table @var -Référence des propriétés internes : -@rinternals{Dynamic_performer}. +@item @code{Staff.midiPanPosition} -@ignore -@c Delete when satisfied this is adequately covered elsewhere -td +La spatialisation (@emph{pan position}) contrôle le positionnement d'un +canal MIDI entre les sorties stéréo droite et gauche. Cette propriété +de contexte prend en argument une valeur entre -1.0 (@code{#LEFT}) +et 1.0 (@code{#RIGHT}). Une valeur de -1.0 enverra toute la puissance +sonore sur le haut-parleur gauche (le droit sera silencieux), une +vaaleur de 0.0 (@code{#CENTER}) distribuera équitablement le son entre +les jaut-parleurs de gauche et de droite, et une valeur de 1.0 enverra +tout le son sur le haut-parleur de droite. Des valeurs entre -1.0 et +1.0 permettent d'obtenir une répartition du son entre les sorties +gauche et droite d'un équipement stéréophonique. -@n ode Microtones in MIDI -@s ubsection Microtones in MIDI -@cindex microtones in MIDI +@item @code{Staff.midiBalance} -Microtones consisting of half sharps and half flats are exported -to the MIDI file and render correctly in MIDI players which support -pitch bending. See @ref{Note names in other languages}. Here is -an example showing all the half sharps and half flats. It can be -copied out and compiled to test microtones in your MIDI player. +La balance stéréo d'un canal MIDI. Tout comme la spatialisation, cette +propriété de contexte prend en argument une valeur comprise entre -1.0 +(@code{#LEFT}) et 1.0 (@code{#RIGHT}). Elle permet de faire varier le +volume relatif envoyé aux deux haut-parleurs stéréo sans pour autant +affecter la distribution des signaux stéréo. -@lilypond[verbatim,quote] -\score { - \relative { - c'4 cih cis cisih - d4 dih ees eeh - e4 eih f fih - fis4 fisih g gih - gis4 gisih a aih - bes4 beh b bih - } - \layout {} - \midi {} -} -@end lilypond -@end ignore +@item @code{Staff.midiExpression} +Le niveau d'expression, en tant que fraction du niveau maximum de volume +disponible, à appliquer à un canal MIDI. Un périphérique MIDI combine +le niveau d'expression des canaux MIDI et le niveau de nuance de la voix +en cours (tel que défini par @code{\p} ou @code{\ff}) afin d'obtenir le +volume total de chacune des notes de la voix. Un contrôle de +l'expression permet, par exemple, d'implémenter des effets de crescendo +ou decrescendo sur une note tenue, ce que LilyPond ne sait pas faire +automatiquement. -@node MIDI et percussions -@subsection MIDI et percussions -@translationof Percussion in MIDI +@c Issue 4059 contains an attached snippet which shows how this might +@c be done, but this is too large and complex for the NR, even as a +@c referenced snippet. It could be added to the LSR. -La notation pour percussions recourt généralement à un contexte -particulier -- le @code{DrumStaff} -- qui permet d'affecter directement -les instruments concernés au canal 10 qui leur est réservé. +Le niveau d'expression varie entre 0.0 (sans expression, autrement dit +volume à zéro) et 1.0 (volume au maximum). -Certains instruments, tels le xylophone, le marimba, le vibraphone ou -les timbales, se traitent cependant comme des instruments « classiques » -puisqu'ils sont capables d'émettre des hauteurs différentes ; leurs -notation relève donc d'un contexte @code{Staff} standard, et non d'un -@code{DrumStaff} pour pouvoir être rendus correctement en MIDI. +@item @code{Staff.midiReverbLevel} -D'autres percussions, bien que n'émettant qu'un seul son et inclus dans -le standard @emph{general MIDI}, comme le tom mélodique ou le tambour -taiko, ne sont pas attachés au canal 10. Ces instruments doivent donc -être saisi dans un contexte @code{Staff}, en utilisant la hauteur -appropriée. +Le niveau de réverbération, en tant que fraction du niveau maximum +disponible, à appliquer à un canal MIDI. Cette propriété prend en +argument une valeur entre 0.0 (pas d'écho) et 1.0 (effet maximal). -De nombreux instruments de la famille des percussions, les castagnettes -par exemple, n'existent pas dans le standard @emph{general MIDI}. -L'alternative, bien que peu satisfaisante, consiste à leur attribuer le -son le plus proche dans la banque standard. +@item @code{Staff.midiChorusLevel} -@c TODO Expand with examples, and any other issues +Le niveau de chœur, en tant que fraction du niveau maximum disponible, à +appliquer à un canal MIDI. Cette propriété prend en argument une valeur +entre 0.0 (pas de chorus) et 1.0 (effet maximal). -@seealso -Manuel de notation : -@ref{Percussions}, -@ref{Mise en forme de la partition}. - -Référence des propriétés internes : -@rinternals{Dynamic_performer}. +@end table @knownissues -Le standard @emph{general MIDI} ne dispose pas du @emph{rim shot} ; -LilyPond lui substitue un @emph{sidestick}. +Dans la mesure où les fichiers MIDI ne comportent effectivement aucune +donnée audio, les modifications des propriétés de contexte ne se +traduisent qu'en requêtes de changement des contrôles du canal MIDI +lorsque ces fichiers MIDI sont joués. La manière dont un périphérique +MIDI particulier, tel un synthétiseur MIDI logiciel, gérera ces +requêtes incluses dans un fichier MIDI dépend complètement de +l'implémentation du périphérique : certains d'entre eux pourront +simplement ignorer plusieurs, voire toutes ces requêtes. Par ailleurs, +la manière dont un périphérique MIDI interprète les différentes valeurs +de ces contrôles (en règle générale, le standard MIDI ne fixe le +comportement qu'aux valeurs extrêmes de l'amplitude disponible pour +chacun des contrôles) et leur modification alors qu'une note sur un +canal est tenue, dépend de l'implémentation particulière à ce +périphérique. + +Lors de la génération d'un fichier MIDI, LilyPond transforme simplement +les valeurs fractionnaires dans l'amplitude linéaire en valeurs entières +correspondantes (de 0 à 127 et sur 7 octets, ou de 0 à 32767 et sur 14 +octets pour les contrôles MIDI supportant une résolution fine). Ces +valeurs entières converties sont stockées telles quelles dans le +fichier MIDI généré. Pour plus d'information sur la manière dont un +périphérique MIDI interprète ces valeurs, se reporter à sa +documentation. + + +@node Amélioration du rendu MIDI +@subsection Amélioration du rendu MIDI +@translationof Enhancing MIDI output + +Le fichier MIDI généré par LilyPond est relativement brut. Il peut +toutefois être amélioré en affectant des instruments MIDI, en réglant +des propriétés au sein du bloc @code{\midi} ou en utilisant le script +@file{articulate}. + +@menu +* Le script articulate:: +@end menu -@node Le script Articulate -@subsection Le script Articulate -@translationof The Articulate script -Vous obtiendrez un rendu MIDI plus @qq{réaliste} grâce au script -@code{articulate}. Celui-ci va tout faire pour d'une part prendre en -compte les articulations (liaisons, staccato etc.) -- en ajoutant un -blanc aux notes raccourcies -- et, d'autre part, développer les trilles -ou groupettos ainsi que tenir compte des éventuels rallentando et -accelerando. +@node Le script articulate +@unnumberedsubsubsec Le script @file{articulate} +@translationof The articulate script + +@cindex MIDI, instruments +@cindex articulate, script +@funindex Staff.midiInstrument -L'utilisation du script @code{articulate} se fait en deux temps. Vous -devez dans un premier temps inclure son fichier d'initialisation en -ajoutant en tête de votre fichier la ligne +L'utilisation du script @file{articulate} se fait après avoir ajouté en +tête de fichier la commande @code{\include} appropriée : @example \include "articulate.ly" @end example -puis, dans le bloc @code{\score}, indiquer que toutes les répétitions -seront développées et appliquer la commande à votre musique : +Le script créera une sortie MIDI dont les notes seront échelonées de +sorte à tenir compte de toute articulation ou changement de tempo. La +sortie imprimable sera toutefois modifiée en profondeur, pour refléter +littéralement la sortie MIDI. @example -\unfoldRepeats \articulate << - tout le reste du bloc contenant la partition@dots{} ->> +\score @{ + \articulate << + @var{@dots{} musique @dots{}} + >> + \midi @{ @} +@} @end example -Une fois votre fichier modifié de la sorte, vous constaterez que la -version imprimable aura été modifiée en profondeur. Le bloc -@code{\midi} produira par contre un fichier MIDI de bien meilleure -qualité. - -Bien que cela ne gène en rien le fonctionnement du script -@code{articulate}, lui adjoindre la commande @code{\unfoldRepeats} comme -illustré ci-dessus permettra le rendu d'un certain nombre -d'articulations tels les trilles. +Le script @file{articulate} tient compte des abréviations telles que les +trilles ou groupettos. L'intégralité des éléments traités est +répertoriée dans le script lui-même -- voir @file{ly/articulate.ly}. @seealso +Manuel d'initiation : +@rlearning{Autres sources de documentation}. + Manuel de notation : @ref{Mise en forme de la partition}. Fichiers d'initialisation : @file{ly/articulate.ly}. -Référence des propriétés internes : -@rinternals{UnfoldedRepeatedMusic}. - -@knownissues -Dans la mesure où le script @code{articulate} tend à raccourcir les -accords, certaines musiques, notamment pour l'orgue, paraîtront de moins -bonne qualité. +@warning{Dans la mesure où le script @file{articulate} tend à raccourcir +les accords, certaines musiques, notamment pour l'orgue, paraîtront de +moins bonne qualité. Les notes dépourvues d'articulation peuvent aussi +se voir raccourcies ; pour pallier cet inconvénient, le recours à la +fonction @code{@bs{}articulate} devrait ne concerner que de courts +fragments, sauf à modifier les valeurs des variables contenues dans le +script @file{articulate}.} @node Extraction d'informations musicales @@ -3674,14 +3842,17 @@ lilypond fichier.ly > affichage.txt Vous noterez que LilyPond ne se contente pas de simplement afficher l'expression musicale, mais procède aussi à son interprétation -- du fait que @code{\displayLilyMusic} renvoie l'expression tout en -l'affichant. S'il est bien pratique d'insérer un -@code{\displayLilyMusic} dans une expression musicale pour en obtenir -des informations, l'interprétation de cette expression peut toutefois -être évitée en ajoutant un @code{\void} avant l'instruction : +l'affichant. La simple insertion d'un @code{\displayLilyMusic} dans une +expression musicale permet d'obtenir l'information la concernant. + +Si l'instruction @code{\displayLilyMusic} interprète et affiche des +informations sur un fragment, la faire précéder d'un @code{\void} aura +pour effet de l'exclure du fichier résultant. @example @{ \void \displayLilyMusic \transpose c a, @{ c4 e g a bes @} + c1 @} @end example