%% Generated by lilypond-book
%% Options: [exampleindent=10.16\mm,indent=0\mm,line-width=160\mm,paper-height=845.047\pt,paper-width=597.508\pt,papersize='(cons (* 597.508 pt) (* 845.047 pt))]
\include "lilypond-book-preamble.ly"


% ****************************************************************
% Start cut-&-pastable-section
% ****************************************************************

#(ly:set-option 'eps-box-padding 3.000000)



\paper {
  #(set-paper-size '(cons (* 597.508 pt) (* 845.047 pt)))
  indent = 0\mm
  line-width = 160\mm
  % offset the left padding, also add 1mm as lilypond creates cropped
  % images with a little space on the right
  line-width = #(- line-width (* mm  3.000000) (* mm 1))
}

\layout {
  
}




% ****************************************************************
% ly snippet:
% ****************************************************************
\sourcefilename "snippets/changing-properties-for-individual-grobs.ly"
\sourcefileline 0
%% DO NOT EDIT this file manually; it was automatically
%% generated from the LilyPond Wiki
%% (https://wiki.lilypond.community).
%%
%% Make any changes in the Wiki itself, or in
%% `Documentation/snippets/new/`, then run
%% `scripts/auxiliar/makelsr.pl`.
%%
%% This file is in the public domain.

\version "2.24.0"

\header {
%% Translation of GIT committish: f11513f36c131dab18338d6a3a729e24a927150d
  texidocja = "
@code{\\applyOutput} コマンドは、どのようなコンテキストの@c
どのようなレイアウト オブジェクトも変更することができます。@c
このコマンドは Scheme 関数と 3 つの引数が必要です。
"
  doctitleja = "個々の Grob のプロパティを変更する"

%% Translation of GIT committish: c043783aac6c35926d633aa2daf60ed4f2e7ca7a
  texidocfr = "
La commande @code{\\applyOutput} permet de personnaliser n'importe quel
objet de rendu. Elle requiert une fonction Scheme à trois arguments.

Dans l'exemple suivant, la fonction @code{mc-squared} est exécutée pour
tous les objets @code{NoteHead} (au sein du contexte @code{Voice} en
cours) à ce moment précis ; la fonction modifie le @code{stencil} de
l'objet graphique à l'aide de la propriété @code{staff-position} pour
remplacer certaines hauteurs par des @emph{markups}.

De plus amples informations sont disponibles à la rubrique
@rextendnamed{Running a function on all layout objects,
Application d’une fonction à tous les objets de mise en forme}.
"

  doctitlefr = "Modification des propriétés d'objets particuliers"

%% Translation of GIT committish: 70abecb938c2bb752967bd56b7402dd8129838a5
  texidoces = "
La instrucción @code{\\applyOutput} hace posible el ajuste fino de
cualquier objeto de presentación, en cualquier contexto.  Requiere
una función de Scheme contres argumentos.

En el ejemplo de abajo, la función @code{mc-squared} se ejecuta
para todos los objetos gráficos @code{NoteHead} (dentro del
contexto @code{Voice} actual) en el punto temporal en curso; la
función modifica el @code{stencil} o sello del objeto gráfico,
usando la propiedad @code{staff-position} para sustituir ciertas
alturas con elementos de marcado.

Consulte el
@uref{https://lilypond.org/doc/v2.24/Documentation/extending/running-a-function-on-all-layout-objects,@q{Manual
de extensión del programa}} para más información.

"
  doctitlees = "Modificación de propiedades para objetos gráficos individuales"

%% Translation of GIT committish: 7b3d43f2b604e8ccdc24315fa0c094e04dcfcbaf
  texidocca = "
L'ordre @code{\\applyOutput} fa possible l'ajustament fi de
qualsevol objecte de presentació, en qualsevol context.  Requereix
una funció de l'Scheme amb tres arguments

"
  doctitleca = "Modificació de propietats per a objetes gràfics individuals"

  categories = "Really cool, Scheme, Tweaks and overrides"

  texidoc = "
The @code{\\applyOutput} command allows the tuning of any layout
object, in any context. It requires a Scheme function with three
arguments.

In the example below, function @code{mc-squared} is executed for all
@code{NoteHead} grobs (within the current @code{Voice} context) at the
current time step; the function modifies the grob's @code{stencil},
using the @code{staff-position} property to replace some pitches with
markup.

See the
@uref{https://lilypond.org/doc/v2.24/Documentation/extending/running-a-function-on-all-layout-objects,@q{Extending}
manual} for more information.
"

  doctitle = "Changing properties for individual grobs"
} % begin verbatim


#(define (mc-squared grob grob-origin context)
   (let ((sp (ly:grob-property grob 'staff-position)))
     (ly:grob-set-property!
      grob 'stencil
      (grob-interpret-markup grob
       #{ \markup \lower #0.5
           #(case sp
              ((-5) "m")
              ((-3) "c ")
              ((-2) #{ \markup \teeny \bold 2 #})
              (else "bla")) #}))))

\relative c' {
  <d f g b>2
  \applyOutput Voice.NoteHead #mc-squared
  <d f g b>2
}



% ****************************************************************
% end ly snippet
% ****************************************************************
