@end ignore
+@item
+Lilypond typesets woodwind fingering charts.
+@lilypond
+\relative c' {
+ \textLengthOn
+ des1^\markup {
+ \woodwind-diagram #'bassoon #'((lh . (thumb-cis))
+ (cc . (one two three five six))
+ (rh . (f)))
+ } _"bassoon"
+ c1^\markup {
+ \woodwind-diagram #'oboe #'((rh . (c))
+ (lh . ())
+ (cc . (one two three four five six)))
+ } _"oboe"
+
+}
+@end lilypond
+
@item
MIDI-import through Midi2ly is improved
@itemize @bullet
discuss giving them push access. Unsolicited requests from
contributors for access will almost always be turned down.
-
-@subsubheading Creating the @strong{Lilydev} respin
-
-@enumerate
-
-@item Install ubuntu, reboot
-
-@item Run all updates, reboot if asked
-
-@item Enable src repos, refresh package lists
-
-@item install LP build deps:
-
-@example
-sudo apt-get build-dep lilypond
-@end example
-
-@ install git and other stray build dependencies:
-
-@example
-sudo apt-get install git-core gitk autoconf dblatex
-@end example
-
-@item TEST TO SEE WHETHER EVERYTHING WORKS NOW:
-
-@itemize
-
-@item use @code{lily-git.tcl} to grab source files
-@item go to source directory and do @code{./autogen.sh ;
-make all ; make doc}
-
-@item if all compiles, move on to iso creation...
-
-@end itemize
-
-@item Download & install "remastersys" package:
-
-@example
-@uref{http://sourceforge.net/projects/remastersys/}
-@end example
-
-@item copy @code{lily-git.tcl} script file into @code{/etc/skel/}
-
-@item modify @code{/etc/remastersys.conf} as desired
-(change .iso name, default live session username, etc)
-
-@item Remove non-essential desktop software as desired
-@item create iso:
-
-@example
-sudo remastersys dist
-@end example
-
-@item new iso is in @code{/home/remastersys/remastersys/}
-
-@item test iso by installing in VM and repeating steps above for
-getting source files and building lp and docs
-
-@end enumerate
* Tips for working on the build system::
* Doc build::
* Website build::
+* Building an Ubuntu distro::
@end menu
testing to see if SCONS (another build tool?) is being used, and
then runs @file{make/config.make} - which doesn't seem to exist...
+GP: scons is indeed a different build tool; I think that Jan
+experimented with it 5 years ago or something. It seems like we
+still have bits and pieces of it floating around.
+
+GP: note that *none* of the variables that are loaded (from depth
+to version numbers to whatever) are used in website.make.
+Instead, website.make sets up its own variables at the top of the
+file. If you're wondering if there's some smart reason for this,
+then the answer is "no". It's because I didn't know/trust the
+original variables when I was writing that file.
+
Next, it runs @file{make/toplevel-version.make}, which sets the
version variables for major, minor, patch, stable, development and
mypatchlevel (which seems to be used for patch numbers for
all these lines of make I'm following are autogenerated, but
that'll be something else to discover.)
-Next:
+Next in @file{stepmake.make}:
@example
include $(addprefix $(stepdir)/,$(addsuffix -vars.make, $(STEPMAKE_TEMPLATES)))
/home/phil/lilypond-git/stepmake/stepmake/install-vars.make.
@end example
-Woo. They all exist (they should - no - in front of the include).
+Woo. They all exist (they should as there's no - in front of the
+include). @file{generic-vars.make} sets loads of variables
+(funnily enough). @file{toplevel-vars.make} is very short - one
+line commented as @code{# override Generic_vars.make:} and 2 as
+follows:
+
+@example
+# urg?
+include $(stepdir)/documentation-vars.make
+@end example
+
+I assume the urg comment refers to the fact that this should
+really just create more variables, but it actually sends us off to
+@file{/home/phil/lilypond-git/stepmake/stepmake/documentation-vars.make}.
+
+That file is a 3 line variable setting one.
+
+@file{po-vars.make} has the one-line comment @code{# empty}, as
+does @file{install-vars.make}.
+
+So now we're back to @file{stepmake.make}.
+
+The next lines are
+:
+@example
+# ugh. need to do this because of PATH :=$(top-src-dir)/..:$(PATH)
+include $(addprefix $(depth)/make/,$(addsuffix -vars.make, $(LOCALSTEPMAKE_TEMPLATES)))
+@end example
+
+and the include expands to:
+
+@example
+include ./make/generic-vars.make ./make/lilypond-vars.make.
+@end example
+
+These again set variables, and in some cases export them to allow
+child @code{make} processes to use them.
+
+The final 4 lines of @file{stepmake.make} are:
+
+@example
+include $(addprefix $(depth)/make/,$(addsuffix -rules.make, $(LOCALSTEPMAKE_TEMPLATES)))
+include $(addprefix $(stepdir)/,$(addsuffix -rules.make, $(STEPMAKE_TEMPLATES)))
+include $(addprefix $(depth)/make/,$(addsuffix -targets.make, $(LOCALSTEPMAKE_TEMPLATES)))
+include $(addprefix $(stepdir)/,$(addsuffix -targets.make, $(STEPMAKE_TEMPLATES)))
+@end example
+
+which expand as follows:
-Next step will be to work out what these do.
+@example
+include ./make/generic-rules.make ./make/lilypond-rules.make
+include
+ /home/phil/lilypond-git/stepmake/stepmake/generic-rules.make
+ /home/phil/lilypond-git/stepmake/stepmake/toplevel-rules.make
+ /home/phil/lilypond-git/stepmake/stepmake/po-rules.make
+ /home/phil/lilypond-git/stepmake/stepmake/install-rules.make
+include ./make/generic-targets.make ./make/lilypond-targets.make
+include
+ /home/phil/lilypond-git/stepmake/stepmake/generic-targets.make
+ /home/phil/lilypond-git/stepmake/stepmake/toplevel-targets.make
+ /home/phil/lilypond-git/stepmake/stepmake/po-targets.make
+ /home/phil/lilypond-git/stepmake/stepmake/install-targets.make
+@end example
+
+@file{lilypond-rules.make} is @code{#empty}
+@file{generic-rules.make} does seem to have 2 rules in it. They
+are:
+
+@example
+$(outdir)/%.ly: %.lym4
+ $(M4) $< | sed "s/\`/,/g" > $@
+
+$(outdir)/%: %.in
+ rm -f $@
+ cat $< | sed $(sed-atfiles) | sed $(sed-atvariables) > $@
+@end example
+
+I believe the first rule is for *.ly files, and has a prerequisite
+that *.lym4 files must be built first. The recipe is @code{m4 |
+sed "s/\`/,/g" >}. Perhaps someone with more Unix/make knowledge
+can comment on exactly what the rules mean/do.
+
+@file{toplevel-rules.make} is @code{#empty}
+@file{po-rules.make} is @code{#empty}
+@file{install-rules.make} is @code{#empty}
+@file{generic-targets.make} contains 2 lines of comments.
+@file{lilypond-targets.make} contains only:
+
+@example
+## TODO: fail dist or web if no \version present.
+check-version:
+ grep -L version $(LY_FILES)
+@end example
+
+@file{stepmake/generic-targets.make} contains lots of rules - too
+many to list here - it seems to be the main file for rules. (FWIW
+I haven't actually found a rule for website: anywhere, although
+it clearly exists. I have also found that you can display a rule
+in the terminal by typing, say @code{make -n website}. This is
+probably common knowledge.
+
+@file{stepmake/toplevel-targets.make} adds a load of other (and
+occasionally the same) rules to the gernric-targets.
+
+@file{stepmake/po-targets.make} is rules for po* makes.
+
+@file{stepmake/install-targets.make} has rules for local-install*.
+
+And that's the end of stepmake.make. Back to
+@file{GNUmakefile.in}. More some other time.
-That's my 30 minutes for Monday.
+Another alterative approach to understanding the website build
+would be to redirect @code{make -n website} and @code{make website}
+to a text file and work through a) what it does and b) where the
+errors are occurring.
+
+GP: wow, all the above is much more complicated than I've ever
+looked at stuff -- I tend to do a "back first" approach (where I
+begin from the command-line that I want to modify, figure out
+where it's generated, and then figure out how to change the
+generated command-line), rather than a "front first" (where you
+begin from the "make" command). In the long term, we should
+probably move it to a general "how stepmake works" section,
+because it's not particularly relevant to the website build.
Website build includes @ref{Building a bibliography}.
+@subsubheading website.make variables
+
+The file begins by setting up some variables. These
+may/might/probably mirror existing variables, but lacking any docs
+about those variables, I thought it would be simpler to keep
+everything in the same file.
+
+Note that for security reasons, we *don't* call scripts in the git
+dir when building on the web server. See @ref{Uploading and
+security}. So we definitely want to keep those definitions for
+the WEBSITE_ONLY_BUILD.
+
+After some split WEBSITE_ONLY_BUILD vs. normal build definitions,
+there's another bunch of lines setting up generic variables.
+
+@subsubheading website.make building parts
+
+The website-version rule creates files that define macros for
+commands like @@stableDocsNotationPdf@{@}, by calling python scripts.
+Those scripts are scripts/build/create-version-itexi.py and
+scripts/build/create-weblinks-itexi.py.
+
+website-xrefs: creates files used for complicated "out-of-build"
+references. If you just write @@ref@{@}, then all's groovy. But
+if you do @@rlearning@{@}, then our custom texi2html init file
+needs to know about our custom xref file format, which tells our
+custom texi2html init file how to create the link.
+
+We should have a separate @@node to discuss xrefs. Also, take a
+quick look at a generated xref file -- it's basically just a list
+of @@node's [sic teenager pluralization rule] from the file.
+
+website-bib: generates the bibliography texinfo files from the
+.bib files.
+
+website-texinfo: this is the money shot; it calles texi2html to
+generate the actual html. It also has a ton of options to
+texi2html to pass info to our custom init file.
+
+After texi2html, it does some black magick to deal with
+untranslated nodes in the translations. Despite writing that
+part, I can't remember how it works. But in theory, you could
+figure it out by copy&pasting each part of the command (by "part",
+I mean "stuff before each | pipe"), substituting the variables,
+then looking at the text that's output. For example,
+ ls $(OUT)/$$l/*.html
+is going to print a list of all html files, in all languages, in
+the build directory. Then more stuff happens to each of those
+files (that's what xargs does).
+
+website-css: just copies files to the build dir.
+
+website-pictures, website-examples: more file copies, with an if
+statement to handle if you don't have any generated
+pictures/examples.
+
+web-post: buggered if I know. Apparently it runs the
+scripts/build/website_post.py file, which despite writing, I
+can't remember what it does.
+
+ok, it adds the "this page is translated in klingon" to the bottom
+of html pages, and adds the google analytics javascript. It also
+has hard-coded lilypond version numbers.
+
+website: this is the "master" rule. It calls the bits and pieces
+in order, then copies some extra files around.
+
+
+@node Building an Ubuntu distro
+@section Building an Ubuntu distro
+
+@enumerate
+@item
+Install ubuntu, reboot
+@item
+Run all updates, reboot if asked
+@item
+Enable src repos, refresh package lists
+@item
+Install LilyPond build deps:
+@example
+ sudo apt-get build-dep lilypond
+@end example
+@item
+Install git and autoconf:
+@example
+ sudo apt-get install git-core gitk autoconf
+@end example
+
+@item
+TEST TO SEE WHETHER EVERYTHING WORKS NOW:
+@enumerate
+@item
+Use lily-git.tcl to grab source files
+@item
+Go to source dir and do "./autogen.sh" ; make ; make doc
+@item
+If all compiles, move on to iso creation...
+
+@end enumerate
+
+@item
+Download & install "remastersys":
+@example
+ http://sourceforge.net/projects/remastersys/
+@end example
+@item
+Copy lily-git.tcl script file into /etc/skel/
+@item
+Modify /etc/remastersys.conf as desired (change .iso name, default
+live session username, etc)
+@item
+Remove non-essential desktop software as desired
+@item
+Create iso: sudo remastersys dist
+@item
+New iso is in /home/remastersys/remastersys/
+@item
+Test iso by installing in VM and repeating steps above for
+getting source files and building lp and docs
+@end enumerate
+
\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 6255791221fd8197a23d3299fdad85a3a79336ab
+ Translation of GIT committish: aa493b320dcb35e7862c594497c63a32912aa243
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@end ignore
+@item
+Lilypond produce diagramas de digitación para instrumentos de viento madera.
+@lilypond
+\relative c' {
+ \textLengthOn
+ des1^\markup {
+ \woodwind-diagram #'bassoon #'((lh . (thumb-cis))
+ (cc . (one two three five six))
+ (rh . (f)))
+ } _"bassoon"
+ c1^\markup {
+ \woodwind-diagram #'oboe #'((rh . (c))
+ (lh . ())
+ (cc . (one two three four five six)))
+ } _"oboe"
+
+}
+@end lilypond
+
+@item
+Se ha mejorado la importación de MIDI por medio de Midi2ly
+@itemize @bullet
+@item Midi2ly ahora funciona también en sistemas Windows
+@item ahora se manejan bien los archivos MIDI con más de 32 pistas
+@item ya no se ignoran las notas de ciertas voces simultáneas
+@item no se truncan las notas que sobrepasan una línea divisoria
+@item se respetan la armadura de la tonalidad y la indicación de compás iniciales
+@item se ha arreglado un problema con las octavas en pistas o voces subsiguientes
+@item se contemplan de forma incipiente varias voces sobre un pentagrama
+@item se fija el instrumentName a partir de los datos de la pista
+@item nueva opción --skip, por omisiión se muestran los silencios
+@item no se truncan los silencios que sobrepasan una línea divisoria
+@item nueva opción --include-header para establecer los títulos
+@item nueva opción --preview para archivos MIDI grandes
+@end itemize
+La primera funcionalidad estuvo patrocinada por Valentin Villenave,
+las otras funcionalidades han sido patrocinadas por Image-Line Software para FL Studio.
+
+@item
+Está disponible un nuevo grabador @code{Completion_rest_engraver} para convertir automáticamente
+silencios largos que sobrepasan a las líneas divisorias, de forma correspondiente al grabador
+@code{Completion_heads_engraver} para las notas
+@example
+\layout @{
+ \context @{
+ \Voice
+ \remove "Note_heads_engraver"
+ \consists "Completion_heads_engraver"
+ \remove "Rest_engraver"
+ \consists "Completion_rest_engraver"
+ @}
+@}
+@end example
+Esta funcionalidad ha sido patrocinada por Image-Line Software para FL Studio.
+
@item
Se pueden añadir puntos a los elementos del índice general utilizando:
@example
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c This file is included from notation.itely
@ignore
- Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
+ Translation of GIT committish: f93bc90b3ee5e5de96b59c8e81b4ea354d5b1927
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@funindex thumb
Puede usar la articulación de pulgar para indicar que una nota se debe
-tocar con el pulgar (p.ej. en música de cello).
+tocar con el pulgar (p.ej. en música de violoncello).
@lilypond[verbatim,quote,relative=2]
<a_\thumb a'-3>2 <b_\thumb b'-3>
@cindex acordes, digitación de
Las digitaciones para los acordes también se pueden añadir a las notas
-individuales del acorde escribiéndolas después de las alturas.
+individuales escribiéndolas después de las alturas.
@lilypond[verbatim,quote,relative=2]
<c-1 e-2 g-3 b-5>2 <d-1 f-2 a-3 c-5>
@rinternals{New_fingering_engraver},
@rinternals{Fingering}.
+@knownissues
+Por omisión, los números mayores de 9 no están coontemplados si se
+utiliza @samp{@var{nota}-@var{dígito}}.
+
@node Notas ocultas
@unnumberedsubsubsec Notas ocultas
@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
- Translation of GIT committish: 3c00bd3295cf8542f610a4975b5e11d26cf6e009
+ Translation of GIT committish: da34fdfe2057ebaae080e20b5875f35e96010f40
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
@cindex tablatura y armónicos
@cindex deslizamientos en notación de tablatura
@cindex tablatura y deslizamientos
+@cindex glissandos de acordes
+@funindex \harmonic
+@funindex \harmonicByFret
+@funindex \harmonicByRatio
+@funindex \chordGlissando
+
+Se pueden añadir indicaciones de armónicos a la notación de tablatura
+como sus alturas de sonido:
+
+@lilypond[verbatim,quote]
+firstHarmonic = {
+ <d'\4\harmonic>4
+ <g'\3\harmonic>4
+ <b'\2\harmonic>2
+}
+\score {
+ <<
+ \new Staff { \firstHarmonic }
+ \new TabStaff { \firstHarmonic }
+ >>
+}
+@end lilypond
-Se pueden añadir indicaciones de armónicos y @emph{slides} o
-deslizamientos a la notación de tablatura.
+Observe que la instrucción @code{\harmonic} se debe situar siempre
+dentro de una construcción de acorde. Sólo tiene sentido para
+armónicos sobre una cuerda abierta en el duodécimo traste. Cualquier
+otro armónico debe estar calculado por parte de LilyPond. Se puede
+conseguir esto indicando el traste en que debe rozar la cuerda el dedo
+de la mano que pisa.
-@lilypond[verbatim, quote, relative=1]
-\new TabStaff {
- \new TabVoice {
- <c g'\harmonic>4 d\2\glissando e\2
- }
+
+@lilypond[verbatim,quote]
+fretHarmonics = {
+ \harmonicByFret #5 d16\4
+ \harmonicByFret #4 d16\4
+ \harmonicByFret #3 d8\4
+ \harmonicByFret #5 <g\3 b\2>2.
+}
+\score {
+ <<
+ \new Staff { \fretHarmonics }
+ \new TabStaff { \fretHarmonics }
+ >>
+}
+@end lilypond
+
+De forma alternativa, se pueden calcular los armónicos definiendo la
+razón de las longitudes de cuerda por encima y por debajo de la
+digitación de armónico.
+
+@lilypond[verbatim,quote]
+ratioHarmonics = {
+ \harmonicByRatio #1/2 <g\3 b\2 e'\1>4
+ \harmonicByRatio #1/3 <g\3 b\2 e'\1>4
+ \harmonicByRatio #1/4 { g8\3 b8\2 e'4\1 }
+}
+\score {
+ <<
+ \new Staff { \ratioHarmonics }
+ \new TabStaff { \ratioHarmonics }
+ >>
}
@end lilypond
@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
{polyphony-in-tablature.ly}
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{open-string-harmonics-in-tablature.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{fretted-string-harmonics-in-tablature.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{slides-in-tablature.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{chord-glissando-in-tablature.ly}
+
@seealso
Referencia de la notación:
-@ref{Plicas}.
+@ref{Plicas},
+@ref{Armónicods},
+@ref{Glissando}.
Fragmentos de código:
@rlsr{Fretted strings}.
@funindex contextStringTunings
@funindex \contextStringTunings
-@cindex tablaturea, afinaciones personalizadas
+@cindex tablaturas, afinaciones personalizadas
@cindex personalizadas, afinaciones de cuerdas
Es posible crear cualquier afinación de cuerdas que se desee. Se
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Los símbolos específicos de acordeón discanto se escriben mediante
@code{\\markup}. Se puede trucar la colocación vertical de los
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Al escribir un bajo cifrado, podemos situar las cifras encima o debajo
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Añadir un ámbito por voz"
texidoces = "
Se puede añadir un ámbito por cada voz. En este caso, el ámbito se
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Al añadir un pentagrama nuevo en un salto de línea, por desgracia
se añade un espacio adicional al final de la línea antes del salto
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede añadir (posiblemente de forma temporal) un pentagrama
nuevo una vez que la pieza ha comenzado.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Para añadir indicaciones de línea divisoria dentro del contexto de
los nombres de acorde @code{ChordNames}, incluya el grabador
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La sintaxis de LilyPond puede implicar muchas colocaciones poco
comunes para los paréntesis, corchetes, etc, que a veces se tienen
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Mediante la utilización de las potentes herramientas preconfiguradas
como la función @code{\\drummode} y el contexto @code{DrumStaff}, la
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Para añadir digitaciones a las tablaturas, utilice una combinación de
@code{\\markup} y @code{\\finger}.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Este ejemplo muestra una forma de simplificar la adición de muchas
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La función @code{\\parenthesize} es un truco especial que encierra
objetos entre paréntesis. El grob asociado es @code{ParenthesesItem}.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Con algo de código de Scheme, se puede añadir fácilmente la fecha
actual a una partitura.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
El grabador @code{Volta_engraver} reside de forma predeterminada
dentro del contexto de @code{Score}, y los corchetes de la repetición
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Voces adicionales para evitar colisiones"
texidoces = "
En ciertos casos de polifonía compleja, se necesitan voces adicionales
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede ajustar la separación entre las notas de adorno utilizando la
propiedad @code{spacing-increment} de @code{Score.GraceSpacing}.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Este fragmento de código muestra cómo situar la línea de base de la
letra más cerca del pentagrama.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Puede ser necesario trucar la propiedad
@code{shortest-duration-space} para poder ajustar el tamaño de las
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La alineación horizontal de los nombres de instrumento se puede
trucar modificando la propiedad @code{Staff.InstrumentName
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Los números de compás se alinean de forma predeterminada por la
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Si están especificadas, las marcas de texto se pueden alinear con
objetos de notación distintos a las líneas divisorias. Entre estos
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Las cifras de digitación orientadas verticalmente se colocan de forma
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede variar la longitud de las plicas de las figuras unidas por
una barra mediante la sobreescritura de la propiedad
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Ámbitos con varias voces"
texidoces = "
La adición del grabador @code{Ambitus_engraver} al contexto de
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
De forma predeterminada se añaden corchetes de análisis sencillos
debajo del pentagrama. El ejemplo siguiente muestra una manera de
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Aquí se muestran muchos de (¿o quizá todos?) los símbolos que
están contemplados por la capacidad de LilyPond para la música
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Este ejemplo muestra cómo hacer una transcripción moderna de canto
gregoriano. El canto gregoriano no tiene compás ni plicas; utiliza
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Al transcribir música mensural, es útil un «incipit» al compienzo
de la pieza para indicar la tonalidad y el tempo
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Las indicaciones de compás también se pueden grabar en estilo antiguo.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Aplicar estilos de cabeza según la nota de la escala"
texidoces = "
La propiedad @code{shapeNoteStyles} se puede usar para definir varios
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Para las improvisaciones o @emph{taqasim} que son libres durante unos
momentos, se puede omitir la indicación de compás y se puede usar
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede hacer que una ligadura de expresión sea asimétrica para
adaptarse mejor a un patrón asimétrico de notas.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden subdividir las barras automáticamente. Estableciendo la
propiedad @code{subdivideBeams}, las barras se subdividen en
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Las reglas de final de barra especificadas en el contexto
@code{Score} se aplican a todos los pentagramas, pero se pueden
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
No está especificada ninguna agrupación predeterminada automática
de las barras para el compás de 7/8, de forma que si se requieren
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Normalmente están prohibidos los saltos de línea si las barras
atraviesan las líneas divisorias. Se puede cambiar este
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La instrucción @code{\\whiteout} intercala un rectángulo blanco
debajo de un elemento de marcado. Este rectángulo blanco no tapa
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Para hacer invisibles partes de un regulador de crescendo, se usa
el método de dibujar un rectángulo blanco encima de la parte
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
A veces se denota una «cesura» mediante una doble marca de respiración
parecida a las vías del tren, con un calderón encima. Este fragmento
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Este ejemplo proporciona una función para tipografiar un regulador con
texto por debajo, como @qq{molto} o @qq{poco}. El ejemplo ilustra
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Para hacer más pequeño el círculo de @code{\\flageolet} (armónico)
utilice la siguiente función de Scheme.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden modificar notas individuales de un acorde con la instrucción
@code{\\tweak}, alterando la propiedad @code{font-size}.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se insertan automáticamente barras en ángulo cuando se detecta un
intervalo muy grande entre las notas. Se puede hacer un ajuste
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede establecer el separador entre las distintas partes del
nombre de un acorde para que sea cualquier elemento de marcado.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Cambiar la forma de los silencios multicompás"
texidoces = "
Si hay diez compases de silencio o menos, se imprime en el pentagrama
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Al producir una salida MIDI, el comportamiento predeterminado es
que cada pentagrama representa un canal MIDI, con todas las voces
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Al utilizar la posibilidad de combinación automática de partes, se
puede modificar el texto que se imprime para las secciones de solo
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede modificar el texto empleado para los crescendos y
decrescendos modificando las propiedades de contexto
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Es posible ajustar la separación en las indicaciones de tesitura.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede cambiar el aspecto de las ligaduras de expresión de
continuas a punteadas o intermitentes.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
El glifo de la marca de respiración se puede ajustar
sobreescribiendo la propiedad de texto del objeto de presentación
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La nomenclatura inglesa (predeterminada) para los acordes del cifrado
americano se puede cambiar por la alemana (@code{\\germanChords}
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Este código muestra cómo cambiar la cantidad de puntillos de una nota.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Las alteraciones y los signos «más» pueden aparecer antes o
después de los números, según el valor de las propiedades
-%%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Para cambiar el tempo en la salida MIDI sin
imprimir nada, hacemos invisible la indicación metronómica:
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede usar @code{Staff.pedalSustainStrings} para fijar el texto de
las indicaciones de pisar pedal y levantar pedal. Observe que las
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La instrucción @code{\\time} establece las propiedades
@code{timeSignatureFraction}, @code{beatLength}, @code{beatGrouping} y
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Cambiar el número del grupo especial"
texidoces = "
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La propiedad @code{measureLength}, junto con
@code{measurePosition}, determina cuándo es necesario dibujar una
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Este tipo de notación se utiliza para el canto de los Salmos, en
que las estrofas no siempre tienen la misma longitud.
--- /dev/null
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+
+ texidoces = "
+Los deslizamientos para acordes se pueden indicar tanto en el contexto
+Staff como en TabStaff. Los números de cuerda son necesarios para
+TabStaff porque los cálculos de cuerda automáticos son diferentes para
+los acordes y para notas sueltas, y @code{\\chordGlissando} traza
+líneas entre las notas individuales.
+
+"
+
+ doctitlees = "Glissando de acordes en tablatura"
\ No newline at end of file
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede usar la propiedad @code{chordNameExceptions} para
almacenar una lista de notaciones espaciales para acordes
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La presentación del acorde de séptima mayor se
puede ajustar mediante majorSevenSymbol.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede hacer que los diagramas de posiciones se muestren sólo
cuando el acorde cambia o al comienzo de una nueva línea.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Este código muestra cómo recortar (extraer) fragmentos a partir de una
partitura completa.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Los «clusters» o racimos son un mecanismo para indicar la
interpretación de un ámbito de notas al mismo tiempo.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Ciertas indicaciones dinámicas pueden llevar textos (como @qq{più
forte} o @qq{piano subito}). Se pueden producir usando un bloque
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La herramienta de combinación de partes (instrucción
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Indicaciones de compases compuestos"
texidoces = "
Las indicaciones de compás poco frecuentes como @qq{5/8} se pueden
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La agrupación de pulsos dentro de un compás está controlada por la
propiedad de contexto @code{beatStructure}. Hay establecidos valores
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede tipografiar un gissando contemporáneo sin nota final
utilizando una nota oculta y temporalización de cadenza.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La visibilidad de los objetos de extensión que acaban en la primera
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede controlar con precisión la colocación de los números de
digitación. Para que se tenga en cuenta la orientación de las
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
El orden vertical que ocupan las inscripciones gráficas está
controlado con la propiedad @code{'script-priority}. Cuanto más
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
El comportamiento predeterminado de la visibilidad de los corchetes de
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La creación de un grupeto circular de anticipación entre dos notas,
donde la nota inferior del grupeto utiliza una alteración, requiere
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
En una música que tenga muchas apariciones de la
misma secuencia de notas a distintas alturas, podría ser de
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede trazar un símbolo de arpegio entre notas de distintas
voces que están sobre el mismo pentagrama si el grabador
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Para crear pentagramas en blanco, genere compases vacíos y después
elimine el grabador de números de compás @code{Bar_number_engraver}
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Dentro de un @code{PianoStaff}, es posible hacer que un arpegio
cruce entre los pentagramas ajustando la propiedad
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden crear arpegios que se cruzan entre pentagramas dentro de
contextos distintos a @code{GrandStaff}, @code{PianoStaff} y
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden crear indicaciones metronómicas nuevas en modo de
marcado, pero no cambian el tempo en la salida MIDI.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Aunque la manera más fácil de añadir paréntesis a una indicación
de dinámica es utilizar un bloque @code{\\markup}, este método
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
A diferencia de las inscripciones de texto, las lestras de ensayo
no se pueden apilar en un punto concreto de la partitura: sólo se
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
En determinadas situaciones es necesario crear ligaduras de
expresión entre notas que están en voces distintas.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Las instrucciones @code{\\startTextSpan} y @code{\\stopTextSpan}
permiten la creación de elementos de extensión textuales tan
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden tipografiar «custos» en diferentes estilos.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden establecer las propiedades de los diagramas de
posiciones de acordes por medio de @code{'fret-diagram-details}.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden establecer las propiedades de los diagramas de
posiciones a través de @code{'fret-diagram-details}. Para los
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La dirección predeterminada de las plicas sobre la tercera línea
del pentagrama está determinada por la propiedad
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Este ejemplo demuestra cómo se puede definir el grabador de ámbito en
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden añadir diagramas de posiciones predefinidas para
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Si hay un solo pentagrama en un de los tipos de sistema
@code{ChoirStaff} o @code{StaffGroup}, el comportamiento
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
He aquí una forma de imprimir un acorde en el que suena la misma nota
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Al trabajar con los callbacks de un grob, puede ser de mucha ayuda
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Alteraciones de estilo dodecafónico para todas las notas, incluidas las naturales"
texidoces = "
En las obras de principios del s.XX, empezando por Schoenberg, Berg y
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Funciones postfijas para la creación de objetos de extensión de texto
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Los objetos de extensión \cresc, \dim y \decresc ahora se pueden
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede insertar códico PostScript directamente dentro de un
bloque @code{\\markup}.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Del problema central de la notación, esto es, crear un determinado
símbolo, se encargan los «plugins» o complementos añadidos. Cada
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Grabado manual de las ligaduras"
texidoces = "
Se pueden grabar a mano las ligaduras modificando la propiedad
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Escribir varios grupos especiales usando una sola instrucción \\times"
texidoces = "
La propiedad @code{tupletSpannerDuration} establece cuánto debe durar
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede simular un @qq{hammer} o ligado ascendente con ligaduras de
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden conseguir símbolos especiales combinando glifos existentes,
lo que es de utilidad para la notación de instrumentos de viento.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
En este ejemplo se combinan las digitaciones de la mano izquierda,
indicaciones del número de cuerda y digitaciones de la mano
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Son posibles tanto los corchetes rectos sobre notas sueltas como
extremos de barra sueltos en figuras unidas, con una combinación de
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Forzar el desplazamiento horizontal de las notas"
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Si LilyPond no cree que haya sitio suficiente para un guión separador
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden crear tablas alternativas de diagramas de posiciones. Se
--- /dev/null
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+ texidoces = "
+Armónicos sobre cuerdas pisadas (armónicos artificiales):
+"
+ doctitlees = "Armónicos sobre cuerdas pisadas en tablatura"
+
+
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Este fragmento de código basado en Scheme genera
24 notas aleatorias (o tantas como se necesiten), basándose en la
-%%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
En muchos casos, las llaves que no están en la columna central se
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede cambiar el aspecto de las líneas de rejilla
sobreescribiendo algunas de sus propiedades.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden trazar líneas verticales normales entre pentagramas para
mostrar la relación entre notas; sin embargo, en caso de música
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Los patrones de barrado se pueden alterar con la propiedad
@code{beatGrouping}:
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Para la música de guitarra, es posible mostrar los ritmos de rasgueo,
además de las notas de la melodía, acordes y diagramas de posiciones.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Los reguladores pueden imprimirse en uno cualquiera de los estilos de
@code{line-interface}: discontinuo, punteado, línea, trino o zig-zag.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Aquí se muestra la manera de ocultar las alteraciones de las notas
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Los cambios de dinámica con estilo de texto (como cresc. y dim.)
se imprimen con una línea intermitente que muestra su alcance.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Este fragmento de código muestra una forma de preparar un himno cuando
cada línea comienza con un compás parcial. También muestra cómo
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Los «incipit» se pueden escribir utilizando el grob del nombre del
instruemento, pero manteniendo independientes las definiciones del
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Un corchete de arpegio puede indicar que se tienen que tocar con la
misma mano notas que están en dos pentagramas distintos. Para hacerlo,
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Las marcas de cesura se pueden crear sobreescribiendo la propiedad
@code{'text} del objeto @code{BreathingSign}. También está disponible
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
También se pueden imprimir símbolos de porcentaje sueltos.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Ésta es una plantilla bastante avanzada, para un conjunto de
jazz. Observe que la notación de todos los instrumentos está en
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Cuando se produce un cambio de clave, el símbolo de clave se imprime a
un tamaño menor que la clave inicial. Esto se puede ajustar con
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La tablatura se puede formatear utilizando letras en lugar de números.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden aplicar puntas de flecha a los elementos de extensión de
texto y de línea (como el Glissando).
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La alineación horizontal de la letra se puede ajustar sobreescribiendo
la propiedad @code{self-alignment-X} del objeto @code{LyricText}.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
El «Makam» es un tipo de melodía de Turquía que
utiliza alteraciones microtonales de 1/9 de tono. Consulte el
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Las ligaduras de expresión se pueden construir con patrones de
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede engrosar una línea del pentagrama con fines pedagógicos
(p.ej. la tercera línea o la de la clave de Sol). Esto se puede
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Este fragmento de código proporciona una solución alternativa a la
producción de contadores de compás utilizando repeticiones
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La disposición «mensurstriche» en que las líneas divisorias no
están dibujadas sobre los pentagramas, sino entre ellos, se puede
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Utilice un texto de marcado para sustituir el glifo de clave (TAB) con
una fuente tipográfica moderna.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Las abreviaturas se encuentran definidas dentro del archivo
@file{ly/script-init.ly}, donde las variables @code{dashHat},
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Cuando se puede una nota en la voz superior para evitar la colisión
con una nota de otra voz, el comportamiento predeterminado es
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede ajustar la posición vertical de una ligadura de
expresión utilizando la propiedad @code{positions} del objeto
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Los elementos de marcado aplicados a un silencio multicompás se
centran encima o debajo de éste. Los elementos de marcado extensos
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede utilizar la propiedad
@code{systemStartDelimiterHierarchy} para crear grupos de
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
LilyPond también proporciona funciones de formato para imprimir
números de grupo especial diferentes a la propia fracción, así
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Armaduras de tonalidad no tradicionales"
texidoces = "
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Las cabezas de nota de notación fácil utilizan la propiedad
--- /dev/null
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+ texidoces = "
+Referencia para armónicos sobre cuerdas al aire (armónicos naturales):
+
+"
+ doctitlees = "Referencia para armónicos sobre cuerdas al aire"
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Esta plantilla muestra el uso de contextos @code{StaffGroup} y
@code{GrandStaff} anidados para sub-agrupar instrumentos del mismo
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Internamente, @code{\\ottava} establece las propiedades
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden mostrar los contadores de las repeticiones del tipo
porcentaje a intervalos regulares mediante el establecimiento de
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Las repeticiones de compases completos de más de dos repeticiones
pueden llevar un contador si se activa la propiedad adecuada, como se
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Permitir saltos de línea dentro de grupos especiales con barra"
texidoces = "
Este ejemplo artificial muestra cómo se pueden permitir tanto los
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Presentamos a continuación una plantilla de piano sencilla con algunas
notas.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Muchas partituras de piano tienen las indicaciones dinámicas centradas
entre los dos pentagramas. El contexto @code{Dynamics}, si se sitúa
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
En lugar de tener un pentagrama dedicado a la melodía y la letra, ésta
se puede centrar entre los pentagramas de un sistema de piano.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
He aquí el típico formato dde una canción: un pentagrama con la
melodía y la letra, y el acompañamiento de piano por debajo.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Es posible ejercer un mayor control sobre la colocación de las
digitaciones de la mano derecha estableciendo el valor de una
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La polifonía se crea de la misma forma en un @code{TabStaff} que
en una pauta normal.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Si necesitamos alargar o acortar un símbolo de arpegio, podemos
modificar independientemente los extremos superior e inferior.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Cuando se colocan figuras sobre líneas adicionales, sus barras se
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Al establecer la propiedad @code{'strict-grace-spacing} hacemos que
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Posicionar los silencios multicompás"
texidoces = "
A diferencia de los silencios normales, no existe una instrucción
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Los elementos de marcado de texto deben tener la propiedad
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Evitar que se añadan becuadros adicionales automáticamente"
texidoces = "
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Evitar que se impriman becuadros cuando cambia la armadura"
texidoces = "
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede imprimir una línea divisoria de la forma @code{|:} al
principio de la pieza, sobreescribiendo la propiedad correspondiente:
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden imprimir los números de compás a intervalos regulares
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Los números de compás también se pueden imprimir dentro de rectángulos o de circunferencias.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden imprimir reguladores con un círculo en la punta (notación
«al niente») estableciendo la propiedad @code{circled-tip} del objeto
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Aunque normalmente las marcas de texto sólo se imprimen sobre el
pentagrama superior, también se pueden imprimir en otro pentagrama
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
De forma predeterminada, las indicaciones metronómicas y las
letras de ensayo se imprimen encima del pentagrama. Para
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede usar el contexto @code{NoteNames} para imprimir el valor
textual de las notas. La propiedad @code{printOctaveNames} activa o
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
De forma predeterminada se suprime el número del primer compás de una
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Los pasajes citados tienen en cuenta la transposición de la fuente
tanto como la del destino. En este ejemplo, todos los
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La propiedad @code{quotedEventTypes} determina los tipos de eventos
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
El ejemplo siguiente muestra cómo se pueden realizar diagramas de
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Los valores predeterminados para las notas de adorno están
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden eliminar completamente los números de compás quitando el
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
De forma predeterminada, las líneas divisorias en los grupos
StaffGroup, PianoStaff o GrandStaff se conectan entre los pentagramas.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
El primer pentagrama vacío también se puede suprimir de la
partitura estableciendo la propiedad @code{remove-first} de
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Estilos de silencios"
texidoces = "
Los silencios se pueden imprimir en distintos estilos.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Para tipografiar las barras agrupadas en la forma @code{3-4-3-2} sólo
es necesario modificar la estructura de pulsos:
-%% Translation of GIT committish: d0a39a10d625c28a43acd9641aefeb2c7218ab41
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
He aquí un cuadro que muestra todas las articulaciones disponibles:
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Si la nota que da fin a un regulador cae sobre la primera parte de
un compás, el regulador se detiene en la línea divisoria
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden insertar separadores sistema entre los sistemas de una
página. Se puede usar cualquier elemento de marcado, pero
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Si los reguladores son demasiado cortos, se pueden alargar
modificando la propiedad @code{minimum-length} del objeto
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
De forma predeterminada, los corchetes de primera y segunda vez se
trazan encima de los finales alternativos completos, pero es posible
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden imprimir los acordes exclusivamente al comienzo de las
líneas y cuando cambia el acorde.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Al juntar nombres de acorde en cifrado americano, melodía y letra,
obtenemos una hoja guía de acordes o «lead sheet»:
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Esta plantilla facilita la preparación de una canción con melodía,
letra y acordes.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Presentamos a continuación un ejemplo de plantilla para una hoja
guía de acordes con melodía, letra, acordes y diagramas de
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
¿Quiere preparar una hoja guía de acordes (o «lead sheet») con
melodía y acordes? ¡No busque más!
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Esta pequeña plantilla muestra una melodía sencilla con letra. Córtela
y péguela, escriba las notas y luego la letra. Este ejemplo desactiva
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Esta plantilla simple prepara un pentagrama con notas, adecuado para
un instrumento solista o un fragmento melódico. Córtelo y péguelo en
--- /dev/null
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
+ texidoces = "
+
+Los deslizamientos se pueden componer tipográficamente tanto en los
+contextos de @code{Staff} como en los de @code{TabStaff}:
+
+"
+
+ doctitlees = "Deslizamientos en tablatura"
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Marca de pizzicato de chasquido (@q{pizzicato de Bartók})"
texidoces = "
El pizzicato de chasquido (también llamado @q{Pizzicato de Bartók}) es un
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Los textos independientes se pueden disponer en varias columnas
utilizando instrucciones @code{\\markup}:
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La dirección de las plicas se contola de la misma forma en la
tablatura que en la notación tradicional. Las barras se pueden
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Esta plantilla muestra un cuarteto de cuerda normal. También utiliza
una sección @code{\\global} para el compás y la armadura
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
El fragmento de código @qq{Plantilla de cuarteto de cuerda} produce un
resultado satisfactorio para el cuarteto, pero ¿y si tenemos que
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
A veces, la indicación de compás no debe imprimir la fracción completa
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
A modo de alternativa para obtener auténticos «incipit»
independientes de la partitura principal, se incluyen como
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Transportar música con el menor número de alteraciones"
texidoces = "
Este ejemplo utiliza código de Scheme para forzar las
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Trucaje de las propiedades de clave"
texidoces = "
La instrucción @code{\\clef \"treble_8\"} equivale a un ajuste de
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
La disposición de las expresiones de adorno se puede cambiar a lo
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se puede usar el delimitador de comienzo de un sistema
@code{SystemStartSquare} estableciéndolo explícitamente dentro de
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Se pueden imprimir estilos alternativos del corchete o gancho de las
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
El corchete de arpegios @code{arpeggioBracket} se puede usar para
indicar la división de voces cuando no hay plicas que puedan ofrecer
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Algunos compositores escriben dos ligaduras cuando quieren acordes
legato. Esto se puede conseguir estableciendo @code{doubleSlurs}.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Es posible aplicar la barrita que cruza la barra de las
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
doctitlees = "Uso de ligaduras en los arpegios"
texidoces = "
En ocasiones se usan ligaduras de unión para escribir los arpegios.
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Mediante el establecimiento de la propiedad @code{'Y-extent} a un valor
adecuado, todos los objetos @code{DynamicLineSpanner} (reguladores e
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Las expresiones dinámicas que se comienzan, terminan o se producen
en la misma nota se alinean verticalmente. Para asegurar que las
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Este fragmento de código muestra el uso de las propiedades de
contexto @code{alignBelowContext} y @code{alignAboveContext} para
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Allí donde se utilicen líneas extensoras para el bajo cifrado mediante
el establecimiento de @code{useBassFigureExtenders} al valor
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Esta plantilla añade una reducción de piano automática a la partitura
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Esta plantilla es, básicamente, la misma que la sencilla plantilla
@qq{Conjunto vocal}, excepto que aquí todas las líneas de letra se
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Esta plantilla crea una partitura que comienza con una estrofa para
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
He aquí una partitura vocal estándar para cuatro voces SATB. Con
grupos mayores, suele ser útil incluir una sección que aparezca en
-%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
Mediante la adición del grabador @code{Volta_engraver} al
pentagrama pertinente, se pueden poner los corchetes de primera y
-%%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
-%%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
+%%% Translation of GIT committish: 59caa3adce63114ca7972d18f95d4aadc528ec3d
texidoces = "
El fragmento de música que aparece a continuación presenta todos los
diagramas de viento madera que se encuentran definidos en LilyPond por
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
+@ignore
+ Translation of GIT committish: fe4f33aca60ea7c58bc9196eac43b4acca1d4437
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+@c \version "2.13.36"
+
+
+@c Translators: Yoshiki Sawada
+@c Translation status: post-GDP
+
+
+@node 表現記号
+@section 表現記号
+@translationof Expressive marks
+
+@lilypondfile[quote]{expressive-headword.ly}
+
+このセクションでは楽譜の中で作成可能なさまざまな表現記号をリストアップします。
+
+@menu
+* 音符に付けられる表現記号::
+* 曲線の表現記号::
+* 直線の表現記号::
+@end menu
+
+
+@node 音符に付けられる表現記号
+@subsection 音符に付けられる表現記号
+@translationof Expressive marks attached to notes
+
+このセクションでは、音符に添付される表現記号を作成する方法について説明します。@c
+音符に添付される表現記号には以下のものがあります:
+アーティキュレーション、装飾、強弱記号。@c
+新たに強弱記号を作成する方法についても議論します。
+
+
+@menu
+* アーティキュレーションと装飾::
+* 強弱記号::
+* 新たな強弱記号::
+@end menu
+
+
+@node アーティキュレーションと装飾
+@unnumberedsubsubsec アーティキュレーションと装飾
+@translationof Articulations and ornamentations
+
+@cindex articulations (アーティキュレーション)
+@cindex ornamentation (装飾)
+@cindex scripts (スクリプト)
+@cindex ornaments (装飾)
+@cindex espressivo (表現的な)
+@cindex fermata (フェルマータ)
+@cindex upbow (アップボー、上弓)
+@cindex downbow (ダウンボー、下弓)
+@cindex foot marks (フット マーク、足記号)
+@cindex organ pedal marks (オルガン ペダル記号)
+@cindex pedal marks, organ (オルガン ペダル記号)
+@cindex turn (ターン)
+@cindex open (オープン)
+@c 未訳
+@cindex stopped
+@c フラジョレット: 六孔の縦笛
+@cindex flageolet (フラジョレット)
+@cindex reverseturn (逆ターン)
+@cindex trill (トリル)
+@cindex prall (プラル)
+@cindex mordent (モルデント)
+@cindex prallprall (プラルプラル)
+@cindex prallmordent (プラルモルデント)
+@cindex prall, up (アップ プラル)
+@cindex prall, down (ダウン プラル)
+@cindex thumb marking
+@cindex segno (セーニョ)
+@cindex coda (コーダ)
+@c 未訳
+@cindex varcoda
+
+@funindex \accent
+@funindex \marcato
+@funindex \staccatissimo
+@funindex \espressivo
+@funindex \staccato
+@funindex \tenuto
+@funindex \portato
+@funindex \upbow
+@funindex \downbow
+@funindex \flageolet
+@funindex \thumb
+@funindex \lheel
+@funindex \rheel
+@funindex \ltoe
+@funindex \rtoe
+@funindex \open
+@funindex \halfopen
+@funindex \stopped
+@funindex \snappizzicato
+@funindex \turn
+@funindex \reverseturn
+@funindex \trill
+@funindex \prall
+@funindex \mordent
+@funindex \prallprall
+@funindex \prallmordent
+@funindex \upprall
+@funindex \downprall
+@funindex \upmordent
+@funindex \downmordent
+@funindex \pralldown
+@funindex \prallup
+@funindex \lineprall
+@funindex \signumcongruentiae
+@funindex \shortfermata
+@funindex \fermata
+@funindex \longfermata
+@funindex \verylongfermata
+@funindex \fermataMarkup
+@funindex \segno
+@funindex \coda
+@funindex \varcoda
+
+
+@funindex -
+
+
+アーティキュレーション、装飾音それに他の演奏指示を表すさまざまな記号は@c
+以下の構文を用いて音符に付けることができます:
+
+@example
+@var{note}\@var{name}
+@end example
+
+@code{@var{name}} に対してとり得る値は
+@ref{List of articulations} でリストアップしています。@c
+例えば:
+
+@lilypond[verbatim,quote,relative=2]
+c4\staccato c\mordent b2\turn
+c1\fermata
+@end lilypond
+
+@cindex marcato (マルカート)
+@cindex tenuto (テヌート)
+@cindex staccatissimo (スタッカーティシモ)
+@cindex accent (アクセント)
+@cindex staccato (スタッカート)
+@cindex portato (ポルタート)
+
+これらのアーティキュレーションのいくつかはより容易に入力できるよう@c
+短縮記法を持っています。@c
+短縮記法は音符名の後ろに付けられ、ダッシュ @code{-} と@c
+それに続くアーティキュレーションを表す記号から成ります。@c
+あらかじめ定義されている短縮記法は以下のアーティキュレーションです:
+@notation{marcato}, @notation{stopped}, @notation{tenuto},
+@notation{staccatissimo}, @notation{accent}, @notation{staccato}
+それに @notation{portato}。@c
+これらの出力は以下のように表示されます:
+
+@lilypond[verbatim,quote,relative=2]
+c4-^ c-+ c-- c-|
+c4-> c-. c2-_
+@end lilypond
+
+アーティキュレーションのデフォルトの配置規則は@c
+ファイル @file{scm/@/script@/.scm} で定義されています。@c
+アーティキュレーションと装飾は手動で譜の上または下に配置されることもあります
+-- @ref{Direction and placement} を参照してください。
+
+アーティキュレーションは @code{Script} オブジェクトです。@c
+これらのプロパティについて @rinternals{Script} に説明があります。
+
+アーティキュレーションは音符と同様に休符に付けることもできますが、@c
+複数小節の休符に付けることはできません。@c
+特殊な定義済みコマンド @code{\fermataMarkup} は複数小節の休符に付ける@c
+ことができます (複数小節の休符にだけ付けることができます)。@c
+このコマンドは @code{MultiMeasureRestText} オブジェクトを作成します。
+
+@lilypond[verbatim,quote,relative=2]
+\override Script #'color = #red
+\override MultiMeasureRestText #'color = #blue
+a2\fermata r\fermata
+R1\fermataMarkup
+@end lilypond
+
+アーティキュレーションに加えて、テキストとマークアップを音符に付けることができます。@c
+@ref{Text scripts} を参照してください。
+
+音符につけられる Script と TextScript の配置順序についての更なる情報は、@c
+@rlearning{オブジェクトの配置} を参照してください。
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{modifying-default-values-for-articulation-shorthand-notation.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{controlling-the-vertical-ordering-of-scripts.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{creating-a-delayed-turn.ly}
+
+@seealso
+音楽用語集:
+@rglos{tenuto},
+@rglos{accent},
+@rglos{staccato},
+@rglos{portato}
+
+記譜法リファレンス:
+@ref{Direction and placement},
+@ref{List of articulations},
+@ref{トリル}
+
+インストールされているファイル:
+@file{scm/@/script@/.scm}
+
+コード断片集:
+@rlsrnamed{Expressive marks,表現記号}
+
+内部リファレンス:
+@rinternals{Script},
+@rinternals{TextScript}
+
+
+@node 強弱記号
+@unnumberedsubsubsec 強弱記号
+@translationof Dynamics
+
+@cindex absolute dynamics (絶対強弱記号)
+@cindex dynamics (強弱記号)
+@cindex dynamics, absolute (絶対強弱記号)
+
+@funindex \ppppp
+@funindex ppppp
+@funindex \pppp
+@funindex pppp
+@funindex \ppp
+@funindex ppp
+@funindex \pp
+@funindex pp
+@funindex \p
+@funindex p
+@funindex \mp
+@funindex mp
+@funindex \mf
+@funindex mf
+@funindex \f
+@funindex f
+@funindex \ff
+@funindex ff
+@funindex \fff
+@funindex fff
+@funindex \ffff
+@funindex ffff
+@funindex \fffff
+@funindex fffff
+@funindex \fp
+@funindex fp
+@funindex \sf
+@funindex sf
+@funindex \sff
+@funindex sff
+@funindex \sp
+@funindex sp
+@funindex \spp
+@funindex spp
+@funindex \sfz
+@funindex sfz
+@funindex \rfz
+@funindex rfz
+
+絶対強弱記号は音符の後にコマンドを用いて
+-- @code{c4\ff} などのように
+-- 指定します。
+利用可能な強弱記号は
+@code{\ppppp}, @code{\pppp}, @code{\ppp}, @code{\pp}, @code{\p},
+@code{\mp}, @code{\mf}, @code{\f}, @code{\ff}, @code{\fff},
+@code{\ffff}, @code{\fffff}, @code{\fp}, @code{\sf}, @code{\sff},
+@code{\sp}, @code{\spp}, @code{\sfz}, それに @code{\rfz} です。
+強弱記号を手動で譜の上または下に配置することもできます --
+@ref{Direction and placement} を参照してください。
+
+@lilypond[verbatim,quote,relative=2]
+c2\ppp c\mp
+c2\rfz c^\mf
+c2_\spp c^\ff
+@end lilypond
+
+@c 保留
+@cindex hairpin (ヘアピン)
+@cindex crescendo (クレッシェンド)
+@cindex decrescendo (デクレッシェンド)
+@cindex diminuendo (ディミヌエンド)
+
+@funindex \<
+@funindex \>
+@funindex \!
+@funindex \cr
+@funindex cr
+@funindex \decr
+@funindex decr
+
+@notation{クレッシェンド} 記号は @code{\<} で始まり、@code{\!}、@c
+絶対強弱記号あるいは追加のクレッシェンド記号またはデクレッシェンド記号で@c
+終わります。@c
+@notation{デクレッシェンド} 記号は @code{\>} で始まり、@code{\!}、@c
+絶対強弱記号あるいは次のクレッシェンド記号またはデクレッシェンド記号で@c
+終わります。@c
+@code{\cr} と @code{\decr} を @code{\<} と @code{\>} の代わりに@c
+用いる場合もあります。@c
+この記譜法を用いるとデフォルトでは @notation{ヘアピン} が譜刻されます。
+
+@lilypond[verbatim,quote,relative=2]
+c2\< c\!
+d2\< d\f
+e2\< e\>
+f2\> f\!
+e2\> e\mp
+d2\> d\>
+c1\!
+@end lilypond
+
+@code{\!} で終了するヘアピンは、@c
+@code{\!} が割り当てられた音符の右端で終了します。@c
+次の @notation{クレッシェンド} または @notation{デクレッシェンド} 記号の@c
+開始によってヘアピンが終了する場合、@c
+そのヘアピンは次の @code{\<} または @code{\>} が割り当てられた@c
+音符の中央で終了します。@c
+次のへアピンは、通常通りに音符の左端で始まる代わりに、右端から始まります。
+
+@lilypond[verbatim,quote,relative=2]
+c1\< | c4 a c\< a | c4 a c\! a\< | c4 a c a\!
+@end lilypond
+
+@code{\!} の代わりに絶対強弱記号で終了するヘアピも同じように譜刻されます。@c
+しかしながら、絶対強弱記号の幅によってヘアピンの終了点は変わります。
+
+@lilypond[verbatim,quote,relative=2]
+c1\< | c4 a c\mf a | c1\< | c4 a c\ffff a
+@end lilypond
+
+@cindex multiple dynamic marks on one note (1 つの音符に複数の強弱記号をつける)
+@cindex dynamic marks, multiple on one note (1 つの音符に複数の強弱記号をつける)
+1 つの音符に複数の記号を譜刻するには、空白休符を用いる必要があります。@c
+これは特に、同じ音符に @notation{クレッシェンド} と @notation{デクレッシェンド}
+を付ける場合に有用です。
+
+@lilypond[verbatim,quote,relative=2]
+c4\< c\! d\> e\!
+<< f1 { s4 s4\< s4\> s4\! } >>
+@end lilypond
+
+@cindex espressivo articulation (表現的なアーティキュレーション)
+
+@funindex \espressivo
+@funindex espressivo
+
+@code{\espressivo} コマンドを用いて、同じ音符にクレッシェンドとデクレッシェンドを@c
+付けることができます。@c
+しかしながら、これは強弱記号ではなくアーティキュレーションとして実装されている@c
+ということに注意してください。
+
+@lilypond[verbatim,quote,relative=2]
+c2 b4 a
+g1\espressivo
+@end lilypond
+
+
+@funindex \cresc
+@funindex cresc
+@funindex \decresc
+@funindex decresc
+@funindex \dim
+@funindex dim
+テキストのクレッシェンド記号は @code{\cresc} で開始します。@c
+テキストのデクレッシェンド記号は @code{\decresc} または
+@code{\dim} で開始します。@c
+必要に応じて延長線が譜刻されます。
+
+@lilypond[verbatim,quote,relative=2]
+g8\cresc a b c b c d e\mf |
+f8\decresc e d c e\> d c b |
+a1\dim ~ |
+a2. r4\! |
+@end lilypond
+
+@funindex \crescTextCresc
+@funindex crescTextCresc
+@funindex \dimTextDecresc
+@funindex dimTextDecresc
+@funindex \dimTextDecr
+@funindex dimTextDecr
+@funindex \dimTextDim
+@funindex dimTextDim
+@funindex \crescHairpin
+@funindex crescHairpin
+@funindex \dimHairpin
+@funindex dimHairpin
+
+強弱のテキスト符号の変更でヘアピンを置換することもできます:
+@lilypond[verbatim,quote,relative=2]
+\crescTextCresc
+c4\< d e f\! |
+\dimTextDecresc
+g4\> e d c\! |
+\dimTextDecr
+e4\> d c b\! |
+\dimTextDim
+d4\> c b a\! |
+\crescHairpin
+\dimHairpin
+c4\< d\! e\> d\! |
+@end lilypond
+
+新たに絶対強弱記号や強弱に対応させるテキストを作成するには、@c
+@ref{新たな強弱記号} を参照してください。
+
+@cindex dynamics, vertical positioning (強弱記号の垂直方向の位置)
+@cindex vertical positioning of dynamics (強弱記号の垂直方向の位置)
+
+@funindex DynamicLineSpanner
+
+
+強弱記号の垂直方向の位置は
+@rinternals{DynamicLineSpanner} によって処理されます。
+@funindex \dynamicUp
+@funindex dynamicUp
+@funindex \dynamicDown
+@funindex dynamicDown
+@funindex \dynamicNeutral
+@funindex dynamicNeutral
+
+@code{Dynamics} を用いて水平線上に強弱記号を譜刻することができます。@c
+タイミングを示すために空白休符を使用します。@c
+(@code{Dynamics} コンテキスト内の音符は音楽的時間を取りますが、@c
+譜刻されません。)@c
+@code{Dynamics} コンテキストはテキスト スクリプト、テキスト スパナ、@c
+ピアノ ペダル記号などを保持することができ、有用です。
+
+@lilypond[verbatim,quote]
+<<
+ \new Staff \relative c' {
+ c2 d4 e |
+ c4 e e,2 |
+ g'4 a g a |
+ c1 |
+ }
+ \new Dynamics {
+ s1\< |
+ s1\f |
+ s2\dim s2-"rit." |
+ s1\p |
+ }
+>>
+@end lilypond
+
+@predefined
+@code{\dynamicUp},
+@code{\dynamicDown},
+@code{\dynamicNeutral},
+@code{\crescTextCresc},
+@code{\dimTextDim},
+@code{\dimTextDecr},
+@code{\dimTextDecresc},
+@code{\crescHairpin},
+@code{\dimHairpin}
+@endpredefined
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{setting-hairpin-behavior-at-bar-lines.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{setting-the-minimum-length-of-hairpins.ly}
+
+@c 未訳
+@cindex al niente (アル ニエンテ)
+@cindex niente, al (アル ニエンテ)
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{printing-hairpins-using-al-niente-notation.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{vertically-aligned-dynamics-and-textscripts.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{hiding-the-extender-line-for-text-dynamics.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{changing-text-and-spanner-styles-for-text-dynamics.ly}
+
+
+@seealso
+音楽用語集:
+@rglos{al niente},
+@rglos{crescendo},
+@rglos{decrescendo},
+@rglos{hairpin}
+
+学習マニュアル:
+@rlearning{アーティキュレーションと強弱記号}
+
+記譜法リファレンス:
+@ref{Direction and placement},
+@ref{新たな強弱記号},
+@ref{What goes into the MIDI output?},
+@ref{Controlling MIDI dynamics}
+
+コード断片集:
+@rlsrnamed{Expressive marks,表現記号}
+
+内部リファレンス:
+@rinternals{DynamicText},
+@rinternals{Hairpin},
+@rinternals{DynamicLineSpanner},
+@rinternals{Dynamics}
+
+
+@node 新たな強弱記号
+@unnumberedsubsubsec 新たな強弱記号
+@translationof New dynamic marks
+
+@cindex new dynamic marks (新たな強弱記号)
+@cindex dynamic marks, new (新たな強弱記号)
+
+強弱記号を作成する最も容易な方法は、@c
+@code{\markup} オブジェクトを使用することです。
+
+@lilypond[verbatim,quote]
+moltoF = \markup { molto \dynamic f }
+
+\relative c' {
+ <d e>16_\moltoF <d e>
+ <d e>2..
+}
+@end lilypond
+
+@cindex dynamics, editorial (注釈の強弱記号)
+@cindex dynamics, parenthesis (括弧の強弱記号)
+@cindex editorial dynamics (注釈の強弱記号)
+@funindex \bracket
+@funindex bracket
+@funindex \dynamic
+@funindex dynamic
+
+マークアップ モードでは、@c
+注釈の強弱記号 (括弧や角括弧で囲まれます) を作成することができます。@c
+マークアップ モードの構文は @ref{Formatting text} で記述されています。
+
+@lilypond[verbatim,quote]
+roundF = \markup {
+ \center-align \concat { \bold { \italic ( }
+ \dynamic f \bold { \italic ) } } }
+boxF = \markup { \bracket { \dynamic f } }
+\relative c' {
+ c1_\roundF
+ c1_\boxF
+}
+@end lilypond
+
+@cindex make-dynamic-script
+@funindex make-dynamic-script
+
+単純に中央揃えの強弱記号は @code{make-dynamic-script} 関数を用いて@c
+簡単に作成できます。@c
+
+@lilypond[verbatim,quote]
+sfzp = #(make-dynamic-script "sfzp")
+\relative c' {
+ c4 c c\sfzp c
+}
+@end lilypond
+
+一般に、@code{make-dynamic-script} は引数として@c
+何らかのマークアップ オブジェクトをとります。@c
+強弱記号のフォントに含まれる文字は @code{f,m,p,r,s} それに @code{z} だけです。@c
+このため、テキストや句読点を含む強弱記号を必要とする場合、@c
+フォント ファミリとフォント エンコーディングを通常のテキストに戻すための@c
+マークアップ コマンド
+-- 例えば @code{\normal-text} -- を用いる必要があります。@c
+通常のマークアップの代わりに @code{make-dynamic-script} を用いる利点は、@c
+同じ符頭に付けられるマークアップ オブジェクトとヘアピンが垂直方向に揃うことを@c
+保証されている点にあります。
+
+@lilypond[verbatim,quote]
+roundF = \markup { \center-align \concat {
+ \normal-text { \bold { \italic ( } }
+ \dynamic f
+ \normal-text { \bold { \italic ) } } } }
+boxF = \markup { \bracket { \dynamic f } }
+mfEspress = \markup { \center-align \line {
+ \hspace #3.7 mf \normal-text \italic espress. } }
+roundFdynamic = #(make-dynamic-script roundF)
+boxFdynamic = #(make-dynamic-script boxF)
+mfEspressDynamic = #(make-dynamic-script mfEspress)
+\relative c' {
+ c4_\roundFdynamic\< d e f
+ g,1~_\boxFdynamic\>
+ g1
+ g'1~\mfEspressDynamic
+ g1
+}
+@end lilypond
+
+Scheme 形式のマークアップ モードを用いることもできます。@c
+マークアップ Scheme の構文は @rextend{Markup construction in Scheme} で@c
+説明されています。
+
+@lilypond[verbatim,quote]
+moltoF = #(make-dynamic-script
+ (markup #:normal-text "molto"
+ #:dynamic "f"))
+\relative c' {
+ <d e>16 <d e>
+ <d e>2..\moltoF
+}
+@end lilypond
+
+マークアップ モードでのフォント設定は
+@ref{Selecting font and font size} で記述されています。
+
+
+@seealso
+記譜法リファレンス:
+@ref{Formatting text},
+@ref{Selecting font and font size},
+@ref{What goes into the MIDI output?},
+@ref{Controlling MIDI dynamics}
+
+コード断片集:
+@rlsrnamed{Expressive marks,表現記号}
+
+
+@node 曲線の表現記号
+@subsection 曲線の表現記号
+@translationof Expressive marks as curves
+
+@c 未訳
+このセクションでは曲線を持つさまざまな表現記号
+-- 通常のスラー、フレージング スラー、ブレス記号、falls それに doits --
+を作成する方法について説明します。
+
+@menu
+* スラー::
+* フレージング スラー::
+* ブレス記号::
+* Falls and doits::
+@end menu
+
+@node スラー
+@unnumberedsubsubsec スラー
+@translationof Slurs
+
+@cindex slurs (スラー)
+
+@notation{スラー} は括弧を用いて入力します:
+
+@warning{多声音楽では、@c
+スラーが始まったボイスでそのスラーを終わらせる必要があります。}
+
+@lilypond[verbatim,quote,relative=2]
+f4( g a) a8 b(
+a4 g2 f4)
+<c e>2( <b d>2)
+@end lilypond
+
+@cindex slurs, manual placement (手動でスラーを配置する)
+@cindex slurs, below notes (音符の下にスラーを配置する)
+@cindex slurs, above notes (音符の上にスラーを配置する)
+@funindex \slurDown
+@funindex slurDown
+@funindex \slurNeutral
+@funindex slurNeutral
+
+スラーを手動で音符の上または下に配置することができます。@c
+@ref{Direction and placement} を参照してください。
+
+@cindex phrasing slur (フレージング スラー)
+@cindex multiple slurs (多重スラー)
+@cindex simultaneous slurs (同時進行のスラー)
+@cindex slur, phrasing (フレージング スラー)
+@cindex slurs, multiple (多重スラー)
+@cindex slurs, simultaneous (同時進行のスラー)
+
+同時進行または重なり合うスラーは許可されません。@c
+しかしながら、フレージング スラーはスラーと重なり合うことができます。@c
+これにより、2 つのスラーを同時に譜刻することができます。@c
+詳細は @ref{フレージング スラー} を参照してください。
+
+@cindex slur style (スラーのスタイル)
+@cindex solid slur (実線のスラー)
+@cindex dotted slur (点線のスラー)
+@cindex dashed slur (破線のスラー)
+@cindex sytle, slur (スラーのスタイル)
+@cindex slur, solid (実線のスラー)
+@cindex slur, dotted (点線のスラー)
+@cindex slur, dashed (破線のスラー)
+@cindex style, slur (スラーのスタイル)
+@funindex \slurDashed
+@funindex slurDashed
+@funindex \slurDotted
+@funindex slurDotted
+@funindex \slurSolid
+@funindex slurSolid
+
+スラーは実線、点線あるいは破線のどれかになります。@c
+実線がスラーのデフォルト スタイルです:
+
+@lilypond[verbatim,quote,relative=1]
+c4( e g2)
+\slurDashed
+g4( e c2)
+\slurDotted
+c4( e g2)
+\slurSolid
+g4( e c2)
+@end lilypond
+
+@funindex \slurHalfDashed
+@funindex slurHalfDashed
+@funindex \slurHalfSolid
+@funindex slurHalfSolid
+@cindex slur, half dashed and half solid (半分が破線で半分が実線のスラー)
+
+スラーの半分を破線 (前半を破線、後半を実線) にする、あるいは、@c
+半分を実線 (前半を実線、後半を破線) にすることもできます:
+
+@lilypond[verbatim,quote,relative=1]
+c4( e g2)
+\slurHalfDashed
+g4( e c2)
+\slurHalfSolid
+c4( e g2)
+\slurSolid
+g4( e c2)
+@end lilypond
+
+@funindex \slurDashPattern
+@funindex slurDashPattern
+@cindex slur, defining dash patterns (スラーの破線パターンを定義する)
+
+スラーの破線パターンを定義することができます:
+
+@lilypond[verbatim,quote,relative=1]
+c4( e g2)
+\slurDashPattern #0.7 #0.75
+g4( e c2)
+\slurDashPattern #0.5 #2.0
+c4( e g2)
+\slurSolid
+g4( e c2)
+@end lilypond
+
+
+
+@funindex \slurUp
+@funindex slurUp
+
+
+@predefined
+@code{\slurUp},
+@code{\slurDown},
+@code{\slurNeutral},
+@code{\slurDashed},
+@code{\slurDotted},
+@code{\slurHalfDashed},
+@code{\slurHalfSolid},
+@code{\slurDashPattern},
+@code{\slurSolid}
+@endpredefined
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{using-double-slurs-for-legato-chords.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{positioning-text-markups-inside-slurs.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{making-slurs-with-complex-dash-structure.ly}
+
+@seealso
+音楽用語集:
+@rglos{slur}
+
+学習マニュアル:
+@rlearning{ネストされない括弧とタイ}
+
+記譜法リファレンス:
+@ref{Direction and placement},
+@ref{フレージング スラー}
+
+コード断片集:
+@rlsrnamed{Expressive marks,表現記号}
+
+内部リファレンス:
+@rinternals{Slur}
+
+
+@node フレージング スラー
+@unnumberedsubsubsec フレージング スラー
+@translationof Phrasing slurs
+
+@cindex phrasing slurs (フレージング スラー)
+@cindex phrasing marks (フレーズ記号)
+@cindex slur, phrasing (フレージング スラー)
+@cindex mark, phrasing (フレーズ記号)
+@funindex \(
+@funindex \)
+
+音楽センテンスを示す @notation{フレージング スラー} (またはフレーズ記号) は@c
+コマンド @code{\(} と @code{\)} を用いて記述します:
+
+@lilypond[verbatim,quote,relative=2]
+c4\( d( e) f(
+e2) d\)
+@end lilypond
+
+@funindex \phrasingSlurUp
+@funindex phrasingSlurUp
+@funindex \phrasingSlurDown
+@funindex phrasingSlurDown
+@funindex \phrasingSlurNeutral
+@funindex phrasingSlurNeutral
+
+印刷の上では、フレージング スラーは通常のスラーとほとんど同じです。@c
+しかしながら、それぞれ異なるオブジェクトとして取り扱われます。@c
+@code{\slurUp} はフレージング スラーには影響を与えません。@c
+フレージング スラーを手動で音符の上または下に配置することができます。@c
+@ref{Direction and placement} を参照してください。
+
+@cindex simultaneous phrasing slurs (同時進行のフレージング スラー)
+@cindex multiple phrasing slurs (多重フレージング スラー)
+@cindex slurs, simultaneous phrasing (同時進行のフレージング スラー)
+@cindex slurs, multiple phrasing (多重フレージング スラー)
+@cindex phrasing slurs, simultaneous (同時進行のフレージング スラー)
+@cindex phrasing slurs, multiple (多重フレージング スラー)
+
+同時進行あるいは重なり合うフレージング スラーは許可されません。
+
+@funindex phrasingSlurDashed
+@funindex \phrasingSlurDashed
+@funindex \phrasingSlurDotted
+@funindex phrasingSlurDotted
+@funindex \phrasingSlurSolid
+@funindex phrasingSlurSolid
+@cindex phrasing slur, dashed (破線のフレージング スラー)
+@cindex dashed phrasing slur (破線のフレージング スラー)
+@cindex phrasing slur, dotted (点線のフレージング スラー)
+@cindex dotted phrasing slurs (点線のフレージング スラー)
+@cindex slur, dashed phrasing (破線のフレージング スラー)
+@cindex slur, dotted phrasing (点線のフレージング スラー)
+
+フレージング スラーを実線、点線あるいは破線にすることができます。@c
+実線がフレージング スラーのデフォルト スタイルです:
+
+@lilypond[verbatim,quote,relative=1]
+c4\( e g2\)
+\phrasingSlurDashed
+g4\( e c2\)
+\phrasingSlurDotted
+c4\( e g2\)
+\phrasingSlurSolid
+g4\( e c2\)
+@end lilypond
+
+@funindex phrasingSlurHalfDashed
+@funindex \phrasingSlurHalfDashed
+@funindex \phrasingSlurHalfSolid
+@funindex phrasingSlurHalfSolid
+@cindex phrasing slur, half solid and half dashed (半分が実線で半分が破線のフレージング スラー)
+@cindex slur, half solid and half dashed phrasing (半分が実線で半分が破線のフレージング スラー)
+
+フレージング スラーの半分を破線 (前半を破線、後半を実線) にする、あるいは、@c
+半分を実線 (前半を実線、後半を破線) にすることもできます:
+
+@lilypond[verbatim,quote,relative=1]
+c4\( e g2\)
+\phrasingSlurHalfDashed
+g4\( e c2\)
+\phrasingSlurHalfSolid
+c4\( e g2\)
+\phrasingSlurSolid
+g4\( e c2\)
+@end lilypond
+
+@funindex \phrasingSlurDashPattern
+@funindex phrasingSlurDashPattern
+@cindex phrasing slur, defining dash patterns
+@cindex slur, phrasing, defining dash patterns (フレージング スラーの破線パターンを定義する)
+@cindex slur, defining dash patterns for phrasing (フレージング スラーの破線パターンを定義する)
+
+フレージング スラーの破線パターンを定義することができます:
+
+@lilypond[verbatim,quote,relative=1]
+c4\( e g2\)
+\phrasingSlurDashPattern #0.7 #0.75
+g4\( e c2\)
+\phrasingSlurDashPattern #0.5 #2.0
+c4\( e g2\)
+\phrasingSlurSolid
+g4\( e c2\)
+@end lilypond
+
+フレージング スラーに対する破線パターンの定義は、@c
+スラーに対する破線パターンの定義と同じ構造をとります。@c
+複雑な破線パターンについての更なる情報は、@c
+@ref{スラー} のコード断片集を参照してください。
+
+@predefined
+@code{\phrasingSlurUp},
+@code{\phrasingSlurDown},
+@code{\phrasingSlurNeutral},
+@code{\phrasingSlurDashed},
+@code{\phrasingSlurDotted},
+@code{\phrasingSlurHalfDashed},
+@code{\phrasingSlurHalfSolid},
+@code{\phrasingSlurDashPattern},
+@code{\phrasingSlurSolid}
+@endpredefined
+
+
+@seealso
+学習マニュアル:
+@rlearning{ネストされない括弧とタイ}
+
+記譜法リファレンス:
+@ref{Direction and placement},
+@ref{スラー}
+
+コード断片集:
+@rlsrnamed{Expressive marks,表現記号}
+
+内部リファレンス:
+@rinternals{PhrasingSlur}
+
+
+@node ブレス記号
+@unnumberedsubsubsec ブレス記号
+@translationof Breath marks
+
+@cindex breath marks (ブレス記号)
+@cindex pause mark (休止記号)
+@funindex \breathe
+@funindex breathe
+
+ブレス記号は @code{\breathe} を用いて入力します:
+
+@lilypond[verbatim,quote,relative=2]
+c2. \breathe d4
+@end lilypond
+
+ブレス記号は自動連桁を終わらせます。@c
+この振る舞いをオーバライドする方法は、@ref{手動連桁} を参照してください。
+
+@lilypond[verbatim,quote,relative=2]
+c8 \breathe d e f g2
+@end lilypond
+
+@c 保留
+古代記譜法でのブレス記号の音楽指示子 --
+divisiones (ディビジョン: 区切り) がサポートされています。@c
+詳細は @ref{Divisiones} を参照してください。
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{changing-the-breath-mark-symbol.ly}
+
+@c 未訳
+@cindex caesura
+@cindex railroad tracks
+
+@c 未訳
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{inserting-a-caesura.ly}
+
+
+@seealso
+音楽用語集:
+@rglos{caesura}
+
+記譜法リファレンス:
+@ref{Divisiones}
+
+コード断片集:
+@rlsrnamed{Expressive marks,表現記号}
+
+内部リファレンス:
+@rinternals{BreathingEvent},
+@rinternals{BreathingSign},
+@rinternals{Breathing_sign_engraver}
+
+
+@c 未訳
+@node Falls and doits
+@unnumberedsubsubsec Falls and doits
+
+@cindex falls
+@cindex doits
+@funindex \bendAfter
+@funindex bendAfter
+
+@notation{Falls} and @notation{doits} can be added to notes using
+the @code{\bendAfter} command. The direction of the fall or doit
+is indicated with a plus or minus (up or down). The number
+indicates the pitch interval that the fall or doit will extend
+@emph{beyond} the main note.
+
+@lilypond[verbatim,quote,relative=2]
+c2-\bendAfter #+4
+c2-\bendAfter #-4
+c2-\bendAfter #+8
+c2-\bendAfter #-8
+@end lilypond
+
+The dash @code{-} immediately preceding the @code{\bendAfter}
+command is @emph{required} when writing falls and doits.
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{adjusting-the-shape-of-falls-and-doits.ly}
+
+
+@seealso
+音楽用語集:
+@rglos{fall},
+@rglos{doit}
+
+コード断片集:
+@rlsrnamed{Expressive marks,表現記号}
+
+
+@node 直線の表現記号
+@subsection 直線の表現記号
+@translationof Expressive marks as lines
+
+このセクションでは直線的な軌道をとるさまざまな表現記号 --
+グリッサンド、アルペジオそれにトリル -- を作成する方法について説明します。
+
+@menu
+* グリッサンド::
+* アルペジオ::
+* トリル::
+@end menu
+
+@node グリッサンド
+@unnumberedsubsubsec グリッサンド
+@translationof Glissando
+
+@cindex glissando (グリッサンド)
+@funindex \glissando
+@funindex glissando
+
+@notation{グリッサンド} は音符に @code{\glissando} を付けることによって@c
+作成されます:
+
+@lilypond[verbatim,quote,relative=2]
+g2\glissando g'
+c2\glissando c,
+@end lilypond
+
+異なるスタイルのグリッサンドを作成することもできます。@c
+詳細は @ref{Line styles} を参照してください。
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{contemporary-glissando.ly}
+
+
+@seealso
+音楽用語集:
+@rglos{glissando}
+
+記譜法リファレンス:
+@ref{Line styles}
+
+コード断片集:
+@rlsrnamed{Expressive marks,表現記号}
+
+内部リファレンス:
+@rinternals{Glissando}
+
+
+@knownissues
+
+@c 未訳
+線の上にテキストを譜刻する (@notation{グリッサンド} など) ことは@c
+サポートされていません。
+
+
+@node アルペジオ
+@unnumberedsubsubsec アルペジオ
+@translationof Arpeggio
+
+@cindex arpeggio (アルペジオ)
+@cindex broken chord (変則和音)
+@cindex chord, broken (変則和音)
+
+@funindex \arpeggio
+@funindex arpeggio
+@funindex \arpeggioArrowUp
+@funindex arpeggioArrowUp
+@funindex \arpeggioArrowDown
+@funindex arpeggioArrowDown
+@funindex \arpeggioNormal
+@funindex arpeggioNormal
+
+和音の @notation{アルペジオ} (変則和音とも呼ばれます) は和音構造の後に
+@code{\arpeggio} を付けることによって記述されます:
+
+@lilypond[verbatim,quote,relative=1]
+<c e g c>1\arpeggio
+@end lilypond
+
+異なるタイプのアルペジオを描くこともできます。@c
+@code{\arpeggioNormal} は通常のアルペジオに戻します:
+
+@lilypond[verbatim,quote,relative=1]
+<c e g c>2\arpeggio
+
+\arpeggioArrowUp
+<c e g c>2\arpeggio
+
+\arpeggioArrowDown
+<c e g c>2\arpeggio
+
+\arpeggioNormal
+<c e g c>2\arpeggio
+@end lilypond
+
+@cindex arpeggio symbols, special (特殊なアルペジオ シンボル)
+@cindex special arpeggio symbols (特殊なアルペジオ シンボル)
+
+@funindex \arpeggioBracket
+@funindex arpeggioBracket
+@funindex \arpeggioParenthesis
+@funindex arpeggioParenthesis
+@funindex \arpeggioParenthesisDashed
+@funindex arpeggioParenthesisDashed
+
+特殊な @emph{括弧スタイル} のアルペジオ シンボルを作成することができます:
+
+@lilypond[verbatim,quote,relative=1]
+<c e g c>2
+
+\arpeggioBracket
+<c e g c>2\arpeggio
+
+\arpeggioParenthesis
+<c e g c>2\arpeggio
+
+\arpeggioParenthesisDashed
+<c e g c>2\arpeggio
+
+\arpeggioNormal
+<c e g c>2\arpeggio
+@end lilypond
+
+括弧スタイルのアルペジオの破線プロパティは @code{'dash-details} プロパティで@c
+制御します。@c
+@code{'dash-details} プロパティについては @ref{スラー} で説明しています。
+
+アルペジオをタイを用いて明示的に描き出すことができます。@c
+詳細は @ref{タイ} を参照してください。
+
+
+@predefined
+@code{\arpeggio},
+@code{\arpeggioArrowUp},
+@code{\arpeggioArrowDown},
+@code{\arpeggioNormal},
+@code{\arpeggioBracket},
+@code{\arpeggioParenthesis}
+@code{\arpeggioParenthesisDashed}
+@endpredefined
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{creating-cross-staff-arpeggios-in-a-piano-staff.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{creating-cross-staff-arpeggios-in-other-contexts.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{creating-arpeggios-across-notes-in-different-voices.ly}
+
+
+@seealso
+音楽用語集:
+@rglos{arpeggio}
+
+記譜法リファレンス:
+@ref{スラー},
+@ref{タイ}
+
+コード断片集:
+@rlsrnamed{Expressive marks,表現記号}
+
+内部リファレンス:
+@rinternals{Arpeggio},
+@rinternals{Slur},
+@rinternals{PianoStaff}
+
+
+@knownissues
+
+@cindex cross-staff parenthesis-style arpeggio (譜を跨ぐ括弧スタイルのアルペジオ)
+@cindex arpeggio, parenthesis-style, cross-staff (譜を跨ぐ括弧スタイルのアルペジオ)
+@cindex arpeggio, cross-staff parenthesis-style (譜を跨ぐ括弧スタイルのアルペジオ)
+
+ある @code{PianoStaff} の中の同時点で譜を跨ぐアルペジオと跨がないアルペジオを@c
+混在させることはできません。
+
+譜を跨ぐアルペジオに括弧スタイルのアルペジオを適用することはできません。
+
+
+@node トリル
+@unnumberedsubsubsec トリル
+@translationof Trills
+
+@cindex trills (トリル)
+
+@funindex \trill
+@funindex trill
+@funindex \startTrillSpan
+@funindex startTrillSpan
+@funindex \stopTrillSpan
+@funindex stopTrillSpan
+
+延長線を持たない短い @notation{トリル} は @code{\trill} で譜刻されます。@c
+@ref{アーティキュレーションと装飾} を参照してください。
+
+延長線を持つ長いトリルは @code{\startTrillSpan} と @code{\stopTrillSpan} で@c
+作成されます:
+
+@lilypond[verbatim,quote,relative=2]
+d1\startTrillSpan
+d1
+c2\stopTrillSpan
+r2
+@end lilypond
+
+改行を跨ぐトリルは、次行の最初の音符の上から再開されます。
+
+@lilypond[ragged-right,verbatim,quote,relative=2]
+d1\startTrillSpan
+\break
+d1
+c2\stopTrillSpan
+r2
+@end lilypond
+
+連続したトリルには、明示的な @code{\stopTrillSpan} コマンドは必要ありません。@c
+なぜなら、自動的に次のトリルが前のトリルの右端となるからです。
+
+@lilypond[verbatim,quote,relative=2]
+d1\startTrillSpan
+d1
+b1\startTrillSpan
+d2\stopTrillSpan
+r2
+@end lilypond
+
+トリルを装飾小音符と組み合わせることもできます。@c
+この組み合わせの構文と装飾小音符を正確に配置する方法については、@c
+@ref{装飾小音符} で説明しています。
+
+@lilypond[verbatim,quote,relative=2]
+d1~\afterGrace
+d1\startTrillSpan { c32[ d]\stopTrillSpan }
+c2 r2
+@end lilypond
+
+@cindex pitched trills (ピッチを持つトリル)
+@cindex trills, pitched (ピッチを持つトリル)
+@funindex \pitchedTrill
+@funindex pitchedTrill
+
+明示的なピッチを持つ予備の音符を必要とするトリルは
+@code{\pitchedTrill} コマンドを用いて譜刻することができます。@c
+最初の引数は主音符です。2 番目の引数は @emph{トリル} の音符であり、@c
+括弧で囲まれた符幹を持たない符頭として譜刻されます。
+
+@lilypond[verbatim,quote,relative=2]
+\pitchedTrill
+d2\startTrillSpan fis
+d2
+c2\stopTrillSpan
+r2
+@end lilypond
+
+@c 未訳
+@cindex pitched trill with forced accidental (ピッチを持つトリルに強制的に臨時記号を付ける)
+@cindex trill, pitched with forced accidental (ピッチを持つトリルに強制的に臨時記号を付ける)
+@cindex accidental, forced for pitched trill (ピッチを持つトリルに強制的に臨時記号を付ける)
+
+同じ小節内で、同一音符のためデフォルトでは譜刻されない臨時記号を譜刻するには@c
+手動で譜刻を指定する必要があります。@c
+最初の小節では、最初のピッチを持つトリルだけに臨時記号が譜刻されています。
+
+@lilypond[verbatim,quote,relative=2]
+\pitchedTrill
+eis4\startTrillSpan fis
+eis4\stopTrillSpan
+
+\pitchedTrill
+eis4\startTrillSpan fis
+eis4\stopTrillSpan
+
+\pitchedTrill
+eis4\startTrillSpan fis
+eis4\stopTrillSpan
+
+\pitchedTrill
+eis4\startTrillSpan fis!
+eis4\stopTrillSpan
+@end lilypond
+
+
+@predefined
+@code{\startTrillSpan},
+@code{\stopTrillSpan}
+@endpredefined
+
+
+@seealso
+音楽用語集:
+@rglos{trill}
+
+記譜法リファレンス:
+@ref{アーティキュレーションと装飾},
+@ref{装飾小音符}
+
+コード断片集:
+@rlsrnamed{Expressive marks,表現記号}
+
+内部リファレンス:
+@rinternals{TrillSpanner}
@menu
* ピッチ:: 音符のピッチを記述、表示する
-* Rhythms:: Writing and displaying the durations of notes.
-* Expressive marks:: Adding expression to notes.
-* Repeats:: Repeat music.
+* リズム:: 音符の演奏時間を記述、表示する
+* 表現記号:: 音符に表現を付け加える
+* 繰り返し:: 音楽の繰り返し
* Simultaneous notes:: More than one note at once.
* Staff notation:: Displaying staves.
* Editorial annotations:: Special notation to increase legibility.
@ignore
@menu
-* ピッチ:: 音符のピッチを記述、表示する
-* リズム:: 音符の演奏時間を記述、表示する
-* 表現記号:: 音符に表現を付け加える
-* 繰り返し:: 音楽の繰り返し
* 同時進行する音符:: 同時に複数の音符を演奏する
* 譜の記譜法:: 譜を表示する
* 編集者の注釈:: 可読性を良くするための特別な表記
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
+@ignore
+ Translation of GIT committish: fe4f33aca60ea7c58bc9196eac43b4acca1d4437
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+@c \version "2.13.36"
+
+
+@c Translators: Yoshiki Sawada
+@c Translation status: post-GDP
+
+
+@node 繰り返し
+@section 繰り返し
+@translationof Repeats
+
+@lilypondfile[quote]{repeats-headword.ly}
+
+繰り返しは音楽の主要なコンセプトであり、@c
+繰り返しのために複数の記譜法が存在します。@c
+LilyPond は以下の種類の繰り返しをサポートします:
+
+
+@table @code
+@item volta
+繰り返される音楽は描き出されませんが、繰り返しの小節線で囲まれます。@c
+繰り返しが楽曲の先頭にある場合、繰り返しの小節線は繰り返しの終端にのみ@c
+譜刻されます。@c
+繰り返し時に入れ替えて演奏される部分 (volte) は囲みの右側に譜刻されます。@c
+これは入れ替えがある繰り返しの標準的な記譜法です。
+
+@item unfold
+繰り返される音楽は、@var{repeatcount} によって指定された回数だけ、@c
+描き出されます。@c
+これは反復の多い音楽を入力するときに有用です。
+
+@item percent
+これには拍の繰り返しや小節の繰り返しがあります。@c
+スラッシュまたはパーセント記号のような外見をしています。
+
+@item tremolo
+これはトレモロの連桁を描くために使用されます。
+@end table
+
+
+@menu
+* 長い繰り返し::
+* 短い繰り返し::
+@end menu
+
+@node 長い繰り返し
+@subsection 長い繰り返し
+@translationof Long repeats
+
+このセクションでは長い (通常は複数の小節) 繰り返しを入力する方法について@c
+議論します。@c
+繰り返しには 2 つの形式があります: 繰り返し記号によって囲まれる繰り返しと、@c
+描き出される繰り返し -- これは反復の多い音楽を入力するために使用されます
+-- です。@c
+繰り返し記号を手動で制御することもできます。
+
+@menu
+* 通常の繰り返し::
+* 手動の繰り返し記号::
+* 繰り返しを描き出す::
+@end menu
+
+@c 未訳
+@cindex volta
+@cindex prima volta
+@cindex seconda volta
+@cindex volta, prima
+@cindex volta, seconda
+@cindex repeat, normal
+@cindex normal repeat
+@cindex repeat with alternate endings
+@cindex alternate endings
+@funindex \repeat
+@funindex \alternative
+@funindex \partial
+
+@node 通常の繰り返し
+@unnumberedsubsubsec 通常の繰り返し
+@translationof Normal repeats
+
+通常の繰り返しの構文は以下の通りです。
+
+@example
+\repeat volta @var{repeatcount} @var{musicexpr}
+@end example
+
+@noindent
+ここで、@code{@var{musicexpr}} は音楽表記です。@c
+
+入れ替えを持たない 1 回の繰り返しは以下のようになります:
+
+@lilypond[verbatim,quote,relative=2]
+\repeat volta 2 { c4 d e f }
+c2 d
+\repeat volta 2 { d4 e f g }
+@end lilypond
+
+繰り返し時に入れ替えて演奏する部分は @code{\alternative} を@c
+用いて作り出すことができます。@c
+入れ替えの各グループを波括弧で囲んで、このブロックの中に配置します。
+
+@example
+\repeat volta @var{repeatcount} @var{musicexpr}
+\alternative @{
+ @{ @var{musicexpr} @}
+@}
+@end example
+
+@noindent
+ここで、@code{@var{musicexpr}} は音楽表記です。@c
+
+繰り返し回数が入れ替え部分の数よりも多い場合、始めの方の繰り返しには@c
+最初の入れ替え部分が使用されます。
+
+繰り返しが 1 回で、入れ替えも 1 つの場合は以下のようになります:
+
+@lilypond[verbatim,quote,relative=2]
+\repeat volta 2 { c4 d e f | }
+\alternative {
+ { c2 e | }
+ { f2 g | }
+}
+c1
+@end lilypond
+
+複数の入れ替え部分を 1 回ずつ演奏する繰り返しは以下のようになります:
+
+
+@lilypond[verbatim,quote,relative=2]
+\repeat volta 4 { c4 d e f | }
+\alternative {
+ { c2 e | }
+ { f2 g | }
+}
+c1
+@end lilypond
+
+繰り返し部分を複数回繰り返す場合は以下のようになります:
+
+@lilypond[verbatim,quote,relative=2]
+\repeat volta 3 { c4 d e f | }
+\alternative {
+ { c2 e | }
+ { f2 g | }
+ { a2 g | }
+}
+c1
+@end lilypond
+
+@warning{入れ替えが複数ある場合、入れ替えの閉じ波括弧と次の入れ替えの@c
+開始の波括弧の間に何かを置くべきではありません。@c
+さもないと、予期せぬ数の入れ替えが発生します。}
+
+@warning{@code{Voice} コンテキストを明示的にインスタンス化せずに@c
+@code{@bs{}relative} を @code{@bs{}repeat} の中に配置すると、@c
+余計な譜が表示されます。@c
+@rprogram{余計な譜が表示される} を参照してください。}
+
+@cindex repeat with upbeat (上拍を持つ繰り返し)
+@cindex upbeat in a repeat (繰り返しの中にある上拍)
+@cindex anacrucis in a repeat (繰り返しの中にある弱拍)
+@cindex repeat with anacrucis (弱拍を持つ繰り返し)
+@cindex repeat with pickup (ピックアップを持つ繰り返し)
+@cindex pickup in a repeat (繰り返しの中にあるピックアップ)
+@funindex \partial
+
+繰り返しが小節の途中から始まり、入れ替え部分が無い場合、@c
+風通は繰り返しの終わりも小節の途中になります。@c
+そのため、1 つ小節に 2 つの終わりが加えられます。@c
+そのような場合、繰り返し記号は本来の小節線とは異なります。@c
+繰り返し記号を譜刻する場所で @code{\partila} コマンドや小節チェックを@c
+使わないで下さい:
+
+@c KEEP LY
+@lilypond[verbatim,quote,relative=1]
+% ここで \partial を使わないで下さい
+c4 e g % ここで小節チェックを行わないで下さい
+% ここで \partial を使わないで下さい
+\repeat volta 4 {
+ e4 |
+ c2 e |
+ % ここで \partial を使わないで下さい
+ g4 g g % ここで小節チェックを行わないで下さい
+}
+% ここで \partial を使わないで下さい
+g4 |
+a2 a |
+g1 |
+@end lilypond
+
+同様に、繰り返しが楽譜の先頭の部分小節から始まり、入れ替え部分を持たない場合、@c
+楽譜の先頭で @code{\partial} コマンドを配置する必要があることを除いて、@c
+上の例と同じ条件が適用されます:
+
+@c KEEP LY
+@lilypond[verbatim,quote,relative=1]
+\partial 4 % \partial が必要です
+\repeat volta 4 {
+ e4 |
+ c2 e |
+ % ここで \partial を使わないで下さい
+ g4 g g % ここで小節チェックを行わないで下さい
+}
+% ここで \partial を使わないで下さい
+g4 |
+a2 a |
+g1 |
+@end lilypond
+
+完全な長さを持たない小節で始まる小節に入れ替え部分を付け加える場合、@c
+以下の場所で @code{Timing.measureLength} コンテキスト プロパティを@c
+手動で設定する必要があります:
+
+@itemize
+@item
+@code{\alternative} ブロック内の不完全な小節の開始点。@c
+通常、これは (たいていの場合は) 最後の入れ替え部分を除く、@c
+各入れ替え部分の最後の小節になります。
+
+@item
+最初の入れ替え部分を除く、各入れ替え部分の開始点。
+@end itemize
+
+@lilypond[verbatim,quote,relative=1]
+\partial 4
+\repeat volta 2 { e4 | c2 e | }
+\alternative {
+ {
+ f2 d |
+ \set Timing.measureLength = #(ly:make-moment 3 4)
+ g4 g g % optional bar check is allowed here
+ }
+ {
+ \set Timing.measureLength = #(ly:make-moment 4 4)
+ a2 a |
+ }
+}
+g1 |
+@end lilypond
+
+@code{measureLength} プロパティについての説明は @ref{時間管理} にあります。
+
+@cindex repeats with ties (タイを持つ繰り返し)
+@cindex alternative endings with ties (タイを持つ繰り返しの入れ替え部分)
+@cindex ties in repeats (繰り返しの中にあるタイ)
+@cindex ties in alternative endings (繰り返しの入れ替え部分の中にあるタイ)
+@funindex \repeatTie
+
+繰り返しの 2 回目の部分にタイを付け加えることもできます:
+
+@lilypond[verbatim,quote,relative=2]
+c1
+\repeat volta 2 { c4 d e f~ }
+\alternative {
+ { f2 d }
+ { f2\repeatTie f, }
+}
+@end lilypond
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{shortening-volta-brackets.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{adding-volta-brackets-to-additional-staves.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{setting-the-double-repeat-default-for-volte.ly}
+
+@seealso
+音楽用語集:
+@rglos{repeat},
+@rglos{volta}
+
+記譜法リファレンス:
+@ref{小節線},
+@ref{Modifying context plug-ins},
+@ref{時間管理}
+
+コード断片集:
+@rlsr{Repeats}
+
+内部リファレンス:
+@rinternals{VoltaBracket},
+@rinternals{RepeatedMusic},
+@rinternals{VoltaRepeatedMusic},
+@rinternals{UnfoldedRepeatedMusic}
+
+
+@knownissues
+
+@cindex repeat, ambiguous (あいまいな繰り返し)
+@cindex nested repeat (ネストされた繰り返し)
+@cindex repeat, nested (ネストされた繰り返し)
+@cindex repeat timing information (繰り返しタイミング情報)
+@cindex repeat and measure number (繰り返しと小節番号)
+@cindex timing information and repeats (タイミング情報と繰り返し)
+@cindex measure number and repeats (小節番号と繰り返し)
+@cindex repeat and slur (繰り返しとスラー)
+@cindex slur and repeat (スラーと繰り返し)
+
+@code{\repeat} ブロックから @code{\alternative} ブロックまで続くスラーは、@c
+最初の入れ替え部分に対してのみ機能します。@c
+さらに、スラーは入れ替え部分の終わりから繰り返しの先頭までをカバーすることは@c
+できません。
+
+不完全な小節で始まる繰り返しが @code{measureLength} プロパティの変更を行う@c
+@code{\alternative} ブロックを持つ場合、@c
+@code{\unfoldRepeats} を使用するとおかしな場所に小節線が引かれ、@c
+小節チェック警告が発生します。
+
+以下のようにネストされた繰り返し
+
+@example
+\repeat @dots{}
+\repeat @dots{}
+\alternative
+@end example
+
+@noindent
+はあいまいです。@c
+なぜなら、@code{\alternative} がどちらの @code{\repeat} に属するのか@c
+はっきりしないからです。@c
+このあいまいさは、常に @code{\alternative} を内側の @code{\repeat} に@c
+属させることによって解決されます。@c
+はっきりとさせるために、そのような状況では波括弧を使用すると賢明です。
+
+
+@node 手動の繰り返し記号
+@unnumberedsubsubsec 手動の繰り返し記号
+@translationof Manual repeat marks
+
+@cindex manual repeat mark (手動の繰り返し記号)
+@cindex repeat, manual (手動の繰り返し)
+@cindex start repeat (繰り返しの開始)
+@cindex repeat, start (繰り返しの開始)
+@cindex end repeat (繰り返しの終了)
+@cindex repeat, end (繰り返しの終了)
+@cindex repeat number, changing (繰り返しの回数を変更する)
+@cindex repeat volta, changing (繰り返し volta を変更する)
+@cindex volta bracket (volta 囲み)
+@cindex bracket, volta (volta 囲み)
+@funindex repeatCommands
+@funindex start-repeat
+
+@warning{以下の手法は特殊な繰り返し構造を表示するためだけに使用され、@c
+予期しない振る舞いをする可能性があります。@c
+たいていのケースでは、繰り返しは標準の @code{@bs{}repeat} コマンドを用いるか、@c
+適切な小節線を譜刻することによって作成すべきです。@c
+更なる情報は、@ref{小節線} を参照してください。}
+
+プロパティ @code{repeatCommands} を用いて繰り返しのレイアウトを@c
+制御することができます。@c
+このプロパティの値は繰り返しコマンドの Scheme リストです。
+
+@table @code
+@item start-repeat
+@code{|:} 小節線を譜刻します。
+
+@lilypond[verbatim,quote,relative=2]
+c1
+\set Score.repeatCommands = #'(start-repeat)
+d4 e f g
+c1
+@end lilypond
+
+標準の譜刻習慣に従い、楽曲の先頭では繰り返し記号は譜刻されません。
+
+@item end-repeat
+@code{:|} 小節線を譜刻します。
+
+@lilypond[verbatim,quote,relative=2]
+c1
+d4 e f g
+\set Score.repeatCommands = #'(end-repeat)
+c1
+@end lilypond
+
+@item (volta @var{number}) ... (volta #f)
+指定された番号を持つ新しい volta を作成します。@c
+Volta 囲みは明示的に終了させる必要があります。@c
+さもなければ、譜刻されません。
+
+@lilypond[verbatim,quote,relative=2]
+f4 g a b
+\set Score.repeatCommands = #'((volta "2"))
+g4 a g a
+\set Score.repeatCommands = #'((volta #f))
+c1
+@end lilypond
+
+@end table
+
+複数の繰り返しコマンドが同時に発生することもあります:
+
+@lilypond[verbatim,quote,relative=2]
+f4 g a b
+\set Score.repeatCommands = #'((volta "2, 5") end-repeat)
+g4 a g a
+c1
+\set Score.repeatCommands = #'((volta #f) (volta "95") end-repeat)
+b1
+\set Score.repeatCommands = #'((volta #f))
+@end lilypond
+
+@cindex volta bracket with text (テキストを持つ volta 囲み)
+@cindex text in volta bracket (volta 囲みの中にあるテキスト)
+
+テキストを volta 囲みに含めることができます。@c
+テキストに使用できるのは数字やマークアップ テキストです。@c
+@ref{Formatting text} を参照してください。@c
+マークアップ テキストを使用するための最も簡単な方法は、最初にマークアップを@c
+定義し、それからそのマークアップを Scheme リストに含める方法です。
+
+@lilypond[verbatim,quote]
+voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }
+\relative c'' {
+ c1
+ \set Score.repeatCommands = #(list(list 'volta voltaAdLib) 'start-repeat)
+ c4 b d e
+ \set Score.repeatCommands = #'((volta #f) (volta "4.") end-repeat)
+ f1
+ \set Score.repeatCommands = #'((volta #f))
+}
+@end lilypond
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{printing-a-repeat-sign-at-the-beginning-of-a-piece.ly}
+
+
+@seealso
+記譜法リファレンス:
+@ref{小節線},
+@ref{Formatting text}
+
+コード断片集:
+@rlsr{Repeats}
+
+内部リファレンス:
+@rinternals{VoltaBracket},
+@rinternals{RepeatedMusic},
+@rinternals{VoltaRepeatedMusic}
+
+
+@node 繰り返しを描き出す
+@unnumberedsubsubsec 繰り返しを描き出す
+@translationof Written-out repeats
+
+@cindex written-out repeats (繰り返しを描き出す)
+@cindex repetitious music (反復の多い音楽)
+@cindex repeats, written-out (繰り返しを描き出す)
+@cindex repeat, unfold (繰り返しを展開する)
+@cindex unfold music (音楽を展開する)
+@cindex unfold repeat (繰り返しを展開する)
+@cindex unfold repeat with alternate endings (入れ替え部分のある繰り返しを展開する)
+@cindex unfold music with alternate endings (入れ替え部分のある音楽を展開する)
+@cindex alternate ending in written-out repeats (描き出される繰り返しの中にある入れ替え部分)
+@funindex unfold
+
+@code{unfold} コマンドを用いることにより、@c
+繰り返しを単に反復する音楽を描き出すために使用することができます。@c
+構文は以下の通りです:
+
+@example
+\repeat unfold @var{repeatcount} @var{musicexpr}
+@end example
+
+ここで、@code{@var{musicexpr}} は音楽表記であり、@code{@var{repeatcount}} は
+@code{@var{musicexpr}} を繰り返す回数です。
+
+@lilypond[verbatim,quote,relative=2]
+\repeat unfold 2 { c4 d e f }
+c1
+@end lilypond
+
+入れ替え部分がある繰り返しを展開することもできます。@c
+
+@lilypond[verbatim,quote,relative=2]
+\repeat unfold 2 { c4 d e f }
+\alternative {
+ { c2 g' }
+ { c,2 b }
+}
+c1
+@end lilypond
+
+繰り返し回数が入れ替え部分の数よりも多い場合、@c
+最初の入れ替え部分が複数回使用して、入れ替え数と繰り返し回数を合わせます。
+
+@lilypond[verbatim,quote,relative=2]
+\repeat unfold 4 { c4 d e f }
+\alternative {
+ { c2 g' }
+ { c,2 b }
+ { e2 d }
+ }
+c1
+@end lilypond
+入れ替え部分の数が繰り返し回数よりも多い場合、@c
+最初の入れ替え部分が使用され、残りの繰り返し部分は無視され、譜刻されません。
+
+@lilypond[verbatim,quote,relative=2]
+\repeat unfold 2 { c4 d e f }
+\alternative {
+ { c2 g' }
+ { c,2 b }
+ { e2 d }
+}
+c1
+@end lilypond
+
+複数の @code{unfold} 関数をネストすることも可能です。@c
+(@code{unfold} は入れ替え部分を持っていても、持っていなくても構いません。)
+
+@lilypond[verbatim,quote,relative=2]
+\repeat unfold 2 {
+ \repeat unfold 2 { c4 d e f }
+ \alternative {
+ { c2 g' }
+ { c,2 b }
+ }
+}
+c1
+@end lilypond
+
+@warning{@code{Voice} コンテキストを明示的にインスタンス化せずに@c
+@code{@bs{}relative} を @code{@bs{}repeat} の中に配置すると、@c
+余計な譜が表示されます。@c
+@rprogram{余計な譜が表示される} を参照してください。}
+
+
+@seealso
+コード断片集:
+@rlsr{Repeats}
+
+内部リファレンス:
+@rinternals{RepeatedMusic},
+@rinternals{UnfoldedRepeatedMusic}
+
+
+@node 短い繰り返し
+@subsection 短い繰り返し
+@translationof Short repeats
+
+このセクションでは、短い繰り返しを入力する方法について議論します。@c
+短い繰り返しには 2 つの形式があります:
+単一の音符、単一の小節あるいは 2 小節の繰り返しを表す@c
+スラッシュまたはパーセント記号と、トレモロです。
+
+@menu
+* パーセント繰り返し::
+* トレモロの繰り返し::
+@end menu
+
+@node パーセント繰り返し
+@unnumberedsubsubsec パーセント繰り返し
+@translationof Percent repeats
+
+@cindex percent repeats (パーセント繰り返し)
+@cindex measure repeats (小節の繰り返し)
+@cindex repeat, percent (パーセント繰り返し)
+@cindex repeat, measure (小節の繰り返し)
+@cindex repeat, short (短い繰り返し)
+@funindex \repeat percent
+@funindex percent
+
+繰り返される短いパターンは 1 回だけ譜刻され、@c
+繰り返しは特殊な記号で置き換えられます。
+
+構文は以下の通りです
+
+@example
+\repeat percent @var{number} @var{musicexpr}
+@end example
+
+@noindent
+ここで、@code{@var{musicexpr}} は音楽表記です。
+
+1 小節よりも短いパターンはスラッシュで置き換えられます。
+
+@lilypond[verbatim,quote,relative=2]
+\repeat percent 4 { c8 d }
+\repeat percent 4 { c4 }
+\repeat percent 2 { c2 }
+@end lilypond
+
+1 または 2 小節のパターンはパーセントのような記号で置き換えられます。
+
+@lilypond[verbatim,quote,relative=2]
+\repeat percent 3 { c4 d e f }
+\repeat percent 4 { c2 d }
+@end lilypond
+
+@lilypond[verbatim,quote,relative=2]
+\repeat percent 3 { c4 d e f | c2 g' }
+@end lilypond
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{percent-repeat-counter.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{percent-repeat-count-visibility.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{isolated-percent-repeats.ly}
+
+
+@seealso
+音楽用語集:
+@rglos{percent repeat},
+@rglos{simile}
+
+コード断片集:
+@rlsr{Repeats}
+
+内部リファレンス:
+@rinternals{RepeatSlash},
+@rinternals{PercentRepeat},
+@rinternals{DoublePercentRepeat},
+@rinternals{DoublePercentRepeatCounter},
+@rinternals{PercentRepeatCounter},
+@rinternals{PercentRepeatedMusic}
+
+
+@knownissues
+
+パーセント繰り返しは 3 種類だけサポートされます:
+単一の拍を表す単線のスラッシュ (繰り返される音符の演奏時間とは関係ありません)、@c
+1 小節を表す単線の付点スラッシュ、@c
+それに 2 小節を表す 2 重線の付点スラッシュ
+-- これは小節線の上に譜刻されます -- です。@c
+16 分音符やそれよりも短い音符から成る単一拍の繰り返しを表す多重線スラッシュや、@c
+さまざまな演奏時間の音符から成る単一拍の繰り返しを表す
+2 重線の付点スラッシュはサポートされません。
+
+
+@node トレモロの繰り返し
+@unnumberedsubsubsec トレモロの繰り返し
+@translationof Tremolo repeats
+
+@cindex tremolo beams (トレモロの連桁)
+@cindex tremolo (トレモロ)
+@cindex repeat, tremolo (トレモロの繰り返し)
+@funindex \repeat tremolo
+@funindex tremolo
+
+トレモロには 2 つの形式があります:
+2 つの和音あるいは 2 つの音符を交互に演奏するものと、@c
+単一の音符あるいは和音を素早く繰り返すものです。@c
+交互に演奏するトレモロは、@c
+音符あるいは和音の間に多重連桁を付け加えることによって示され、@c
+一方、単一の音符を素早く繰り返すトレモロは単一の音符に@c
+多重連桁あるいは多重スラッシュを付け加えることによって示されます。
+
+2 つの音符の間にトレモロ記号を配置するには、トレモロ スタイルの @code{\repeat}
+を使用します:
+
+@lilypond[quote,verbatim,relative=2]
+\repeat tremolo 8 { c16 d }
+\repeat tremolo 6 { c16 d }
+\repeat tremolo 2 { c16 d }
+@end lilypond
+
+@code{\repeat tremolo} の構文では、@c
+波括弧の中にある音符の数がちょうど 2 つであること、@c
+それに、繰り返しの回数が普通の音符あるいは付点音符として表すことができる@c
+音価に相当することが必須です。@c
+それゆえ、@code{\repeat tremolo 7} は有効であり、2 重付点音符を作り出します。@c
+しかしながら、@code{\repeat tremolo 9} は無効です。
+
+トレモロの演奏時間は、@c
+波括弧で囲まれた音楽表記の演奏時間に繰り返し回数を掛けたものに等しいです:
+@code{\repeat tremolo 8 @{ c16 d16 @}} は全音符のトレモロであり、@c
+トレモロの連桁でつながれた 2 つの全音符として譜刻されます。
+
+単一の音符上にトレモロ記号を配置する方法は 2 つあります。@c
+@code{\repeat tremolo} 構文をここでも使用します
+-- この場合、音符を波括弧で囲むべきではありません:
+
+@lilypond[quote,verbatim,ragged-right]
+\repeat tremolo 4 c'16
+@end lilypond
+
+@cindex tremolo marks (トレモロ記号)
+@funindex tremoloFlags
+@funindex :
+
+音符の後に @code{:@var{N}} を付け加えることによって@c
+同じ出力を得ることができます。@c
+@code{@var{N}} は細部の演奏時間を表し、8 以上である必要があります。@c
+@code{@var{N}} が 8 である場合、音符の符幹に 1 本の連桁が付け加えられます。@c
+@code{@var{N}} が省略された場合、
+最後の値 (@code{tremoloFlags} に保存されています) が使用されます:
+
+@lilypond[quote,verbatim,relative=2]
+c2:8 c:32
+c: c:
+@end lilypond
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{cross-staff-tremolos.ly}
+
+
+@seealso
+コード断片集:
+@rlsr{Repeats}
+
+@cindex tremolo, cross-staff (譜を跨ぐトレモロ)
+@cindex cross-staff tremolo (譜を跨ぐトレモロ)
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
+@ignore
+ Translation of GIT committish: 1f655fba7d94feb67f846785f47ab6fb20dc2e59
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+@c \version "2.13.44"
+
+@c Translators: Yoshiki Sawada
+@c Translation status: post-GDP
+
+
+@node リズム
+@section リズム
+@translationof Rhythms
+
+@lilypondfile[quote]{rhythms-headword.ly}
+
+このセクションではリズム、休符、演奏時間、連桁、小節について議論します。
+
+@menu
+* リズムを記述する::
+* 休符を記述する::
+* リズムを表示する::
+* 連桁::
+* 小節::
+* 特殊なリズム関連事項::
+@end menu
+
+
+@node リズムを記述する
+@subsection リズムを記述する
+@translationof Writing rhythms
+
+@menu
+* 演奏時間::
+* 連符::
+* 演奏時間を変更する::
+* タイ::
+@end menu
+
+@node 演奏時間
+@unnumberedsubsubsec 演奏時間
+@translationof Durations
+
+@cindex durations, of notes (音符の演奏時間)
+@cindex note durations (音符の演奏時間)
+@cindex length of notes (音符の長さ)
+@cindex note lengths (音符の長さ)
+
+@funindex \longa
+@funindex longa
+@funindex \breve
+@funindex breve
+@funindex \maxima
+@funindex maxima
+
+演奏時間は数とドットで指定されます。@c
+演奏時間はその演奏時間の逆数で入力されます。@c
+例えば、4 分音符は @code{4} で入力され (1/4 の音符だから)、半音符は @code{2}
+で入力されます (1/2 の音符だから)。@c
+全音符よりも長い音符を入力するには、@code{\longa} コマンド (全音符の 4 倍)
+と @code{\breve} コマンド (全音符の 2 倍) を使う必要があります。@c
+128 分音符のような短い音符を指定することもできます。@c
+それよりも短い音価を指定することも可能ですが、必ず連桁付きの音符となります。
+
+@c Two 64th notes are needed to obtain beams
+@lilypond[quote,verbatim,relative=2]
+\time 8/1
+c\longa c\breve c1 c2
+c4 c8 c16 c32 c64 c128 c128
+@end lilypond
+
+同じ例で自動連桁を off にしてみます。
+
+@c not strictly "writing rhythms"; more of a "displaying" thing,
+@c but it's ok here. -gp
+@lilypond[quote,verbatim,relative=2]
+\time 8/1
+\autoBeamOff
+c\longa c\breve c1 c2
+c4 c8 c16 c32 c64 c128 c128
+@end lilypond
+
+全音符の 8 倍の演奏時間を持つ音符は
+@code{\maxima} を使って入力することができます。@c
+しかしながら、これは古代音楽表記でのみサポートされます。@c
+詳細は @ref{Ancient notation} を参照してください。
+
+@cindex duration, default (デフォルトの演奏時間)
+@cindex default note duration (デフォルトの音符演奏時間)
+@cindex note duration, default (デフォルトの音符演奏時間)
+
+演奏時間を省略した場合、前に入力された演奏時間にセットされます。@c
+最初の音符のデフォルト値は 4 分音符です。
+
+@lilypond[quote,verbatim,relative=2]
+a a a2 a a4 a a1 a
+@end lilypond
+
+@cindex notes, dotted (付点音符)
+@cindex dotted notes (付点音符)
+@cindex notes, double-dotted (2 重付点音符)
+@cindex double-dotted notes (2 重付点音符)
+
+@funindex .
+
+付点音符の演奏時間を得るには、演奏時間の後にドット (@code{.}) を置きます。@c
+2 重付点音符は 2 つのドットを置き、3 重付点音符は 3 つのドットなどとなります。
+
+@lilypond[quote,verbatim,relative=2]
+a4 b c4. b8 a4. b4.. c8.
+@end lilypond
+
+演奏時間の中には 2の倍数の演奏時間とドットだけでは表せないものもあります。@c
+それらを表すには 2 つかそれ以上の音符をタイでつなげるしかありません。@c
+詳細は @ref{タイ} を参照してください。
+
+歌詞の音節に対して演奏時間を指定する方法、歌詞を音符に揃える方法については
+@ref{Vocal music} を参照してください。
+
+オプションとして、音符を音符の演奏時間に厳密に比例させた間隔で@c
+配置することができます。@c
+このオプションとプロポーショナル表記を制御するその他の設定についての@c
+詳細は @ref{Proportional notation} を参照してください。
+
+@funindex \dotsUp
+@funindex dotsUp
+@funindex \dotsDown
+@funindex dotsDown
+@funindex \dotsNeutral
+@funindex dotsNeutral
+
+通常、多声でない限り、ドットは譜線を避けるために上に移動させられます。@c
+ある特定のドットの移動方向を手動で指定するための定義済みコマンドがあります
+-- 詳細は @ref{Direction and placement} を参照してください。
+
+
+@predefined
+@code{\autoBeamOn},
+@code{\autoBeamOff},
+@code{\dotsUp},
+@code{\dotsDown},
+@code{\dotsNeutral}
+@endpredefined
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{changing-the-number-of-augmentation-dots-per-note.ly}
+
+
+@seealso
+音楽用語集:
+@rglos{breve},
+@rglos{longa},
+@rglos{maxima},
+@rglos{note value},
+@rglos{Duration names notes and rests}
+
+記譜法リファレンス:
+@ref{自動連桁},
+@ref{タイ},
+@ref{リズムを記述する},
+@ref{休符を記述する},
+@ref{Vocal music},
+@ref{Ancient notation},
+@ref{Proportional notation}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{Dots},
+@rinternals{DotColumn}
+
+
+@knownissues
+
+@c Deliberately duplicated in Durations and Rests. -gp
+休符の演奏時間には基本的に限界がありません (最大値としても、最小値としても)。@c
+しかしながら、図柄の数には限界があります:
+128 分から全音符の 8 倍までの休符を譜刻することができます。
+
+
+@node 連符
+@unnumberedsubsubsec 連符
+@translationof Tuplets
+
+@cindex tuplets (連符)
+@cindex triplets (3 連符)
+
+@funindex \times
+@funindex times
+
+連符はその連符内のすべての音符の演奏時間に分数を掛け合わせる音楽表記によって@c
+作られます:
+
+@example
+\times @var{fraction} @{ @var{music} @}
+@end example
+
+@noindent
+@code{@var{music}} の演奏時間には分数 @code{@var{fraction}} が掛け合わされます。@c
+分数の分母が音符の上または下に譜刻され、オプションで囲みが付きます。@c
+最も一般的な連符は 3 連符であり、3 連符では 3 つの音符が音符 2 つ分の@c
+演奏時間を持ちます。@c
+そのため、3 連符で指定する分数は 2/3 です。
+
+@lilypond[quote,verbatim,relative=2]
+a2 \times 2/3 { b4 b b }
+c4 c \times 2/3 { b4 a g }
+@end lilypond
+
+@cindex tuplet bracket placement (連符囲みの配置)
+
+@funindex \tupletUp
+@funindex tupletUp
+@funindex \tupletDown
+@funindex tupletDown
+@funindex \tupletNeutral
+@funindex tupletNeutral
+
+連符囲みは手動で譜の上または下に配置することができます
+-- @ref{Direction and placement} を参照してください。
+
+連符はネストすることができます:
+
+@lilypond[quote,verbatim,relative=2]
+\autoBeamOff
+c4 \times 4/5 { f8 e f \times 2/3 { e[ f g] } } f4
+@end lilypond
+
+ネストされた連符の演奏開始点が同時である場合に、それらの連符を変更するには
+@code{\tweak} を使う必要があります。
+
+連符囲みを譜刻せずに音符の演奏時間を変更する方法は
+@ref{演奏時間を変更する} を参照してください。
+
+
+@predefined
+@code{\tupletUp},
+@code{\tupletDown},
+@code{\tupletNeutral}.
+@endpredefined
+
+
+@snippets
+
+@cindex tuplet formatting (連符のフォーマット)
+@cindex triplet formatting (3 連符のフォーマット)
+
+@funindex tupletNumberFormatFunction
+@funindex tupletSpannerDuration
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{entering-several-tuplets-using-only-one--times-command.ly}
+
+@cindex Tuplet number changes (連符の数の変更)
+
+@funindex TupletNumber
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{changing-the-tuplet-number.ly}
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{non-default-tuplet-numbers.ly}
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{controlling-tuplet-bracket-visibility.ly}
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{permitting-line-breaks-within-beamed-tuplets.ly}
+
+
+@seealso
+音楽用語集:
+@rglos{triplet},
+@rglos{tuplet},
+@rglos{polymetric}
+
+学習マニュアル:
+@rlearning{調整手段}
+
+記譜法リファレンス:
+@ref{時間管理},
+@ref{演奏時間を変更する},
+@ref{The tweak command},
+@ref{複合拍子記譜法}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{TupletBracket},
+@rinternals{TupletNumber},
+@rinternals{TimeScaledMusic}.
+
+
+@cindex grace notes within tuplet brackets (連符囲み内の装飾小音符)
+
+@knownissues
+譜の先頭に装飾小音符とそれに続く連符を配置する場合でない限り、@c
+装飾を連符囲みの中に配置することができます。@c
+この特殊な場合では、エラーを避けるためにその装飾小音符を
+@code{\times} コマンドの前に置かなければなりません。
+
+@cindex tempo marks within tuplet brackets (連符囲み内でのテンポ記号)
+
+@code{\tempo} コマンドを持つ楽曲の先頭で連符を使う場合、@c
+@rlearning{音楽を保持するボイス} で説明されているように@c
+その音楽を明示的に @code{\new Voice} ブロックの中に入れる必要があります。
+
+
+@node 演奏時間を変更する
+@unnumberedsubsubsec 演奏時間を変更する
+@translationof Scaling durations
+
+@cindex scaling durations (演奏時間を伸縮する)
+@cindex durations, scaling (演奏時間を伸縮する)
+
+@code{*N/M} (または、@code{M} が 1 の場合は @code{*N}) を演奏時間の後に@c
+付け加えることによって、単一の音符、休符、和音の演奏時間を分数 @code{N/M} 倍
+に変更することができます。@c
+これは作り出される音符や休符の見た目には影響を与えませんが、@c
+変更された演奏時間は小節の中での位置を算出するためと、@c
+MIDI 出力での演奏時間を決定するために使用されます。@c
+掛け合わせる要素は @code{*L*M/N} などのように組み合わせることができます。
+
+以下の例では、最初の 3 つの音符で 2 拍ですが、連符囲みは譜刻されていません。
+
+@c KEEP LY
+@lilypond[quote,relative=2,verbatim]
+\time 2/4
+% 演奏時間を変更して 3 連符にします
+a4*2/3 gis4*2/3 a4*2/3
+% 通常の演奏時間
+a4 a4
+% 和音の演奏時間を 2 倍にします
+<a d>4*2
+% 演奏時間は 4 分音符ですが、見た目は 16 分音符です
+b16*4 c4
+@end lilypond
+
+空白音符の演奏時間も掛け算によって変更できます。@c
+これは @code{s1*23} のように多くの小節をスキップする場合に役に立ちます。
+
+@cindex compressing music (音楽を圧縮する)
+@cindex expanding music (音楽を伸長する)
+
+@funindex \scaleDurations
+@funindex scaleDurations
+
+同様の方法で分数を使うことで、長く伸びた音楽を圧縮することができます。@c
+それによりそれぞれの音符、和音、休符には@c
+分数が掛け合わせられたかのようになります。@c
+これは楽譜要素の見た目をそのままにして、要素の内部演奏時間に@c
+@emph{分子}/@emph{分母}を掛け合わせます。@c
+ドットの両側にはスペースが必要です。@c
+ここで、音楽がどのように圧縮され、伸張されるかを示す例を挙げます:
+
+@c KEEP LY
+@lilypond[quote,relative=2,verbatim]
+\time 2/4
+% 通常の演奏時間
+<c a>4 c8 a
+% 2/3 を掛けます
+\scaleDurations #'(2 . 3) {
+ <c a f>4. c8 a f
+}
+% 2 を掛けます
+\scaleDurations #'(2 . 1) {
+ <c' a>4 c8 b
+}
+@end lilypond
+
+このコマンドの応用例の 1 つは複合拍子表記での使用です。@c
+@ref{複合拍子記譜法} を参照してください。
+
+
+@seealso
+記譜法リファレンス:
+@ref{連符},
+@ref{不可視の休符},
+@ref{複合拍子記譜法}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+
+@node タイ
+@unnumberedsubsubsec タイ
+@translationof Ties
+
+@cindex tie (タイ)
+
+@funindex ~
+
+タイは同じピッチの隣り合う符頭を結び付けます。@c
+タイは音符の演奏時間を伸張する効果があります。
+
+@warning{タイを音楽的なフレーズを表す @emph{スラー} や
+@emph{フレージング スラー} と混同しないでください。@c
+タイは音符の演奏時間を伸ばす働きを持ち、音価を増やすドットに似ています。}
+
+タイはチルド記号 @code{~} を使って入力します:
+
+@lilypond[quote,verbatim,relative=2]
+a2 ~ a
+@end lilypond
+
+タイは、音符が小節線をまたがる場合か、リズムを表すためにドットを@c
+使うことができない場合に使用されます。@c
+さらに、以下の例のように音価が小節の区画をまたがる場合にも使用されます
+(訳者補足: 4/4 拍子では 1 小節は 1/4, 1/4, 1/4, 1/4 の区画に分けられます。@c
+下の例の第 2 小節では半音符が区画をまたがっているので良くない書き方であり、@c
+第 1 小節のように書くべきです。):
+
+@c KEEP LY
+@lilypond[verbatim,quote]
+\relative c' {
+ r8 c8 ~ c2 r4 |
+ r8^"こうすべきではありません" c2 ~ c8 r4
+}
+@end lilypond
+
+小節線をまたいで多くの音符をタイで結び付ける必要がある場合、@c
+自動音符分割を使用したほうが簡単かもしれません
+-- @ref{自動音符分割} を参照してください。@c
+これは長い音符を自動的に分割して、小節線をまたがる音符をタイで結び付けます。
+
+@cindex ties and chords (タイと和音)
+@cindex chords and ties (和音とタイ)
+
+タイを和音に適用する場合、ピッチが一致する符頭すべてが結ばれます。@c
+一致する符頭が無い場合、タイは作成されません。@c
+和音の内部にタイを置くことによって、和音の一部だけをタイで結ぶことができます。
+
+@lilypond[quote,verbatim,relative=1]
+<c e g> ~ <c e g>
+<c~ e g~ b> <c e g b>
+@end lilypond
+
+@cindex repeating ties (タイを含む繰り返し)
+@cindex ties, repeating (タイを含む繰り返し)
+@cindex volta brackets and ties (volta 囲みとタイ)
+@cindex ties and volta brackets (タイと volta 囲み)
+
+@funindex \repeatTie
+@funindex repeatTie
+
+繰り返しの 2 回目の差し替え部分はタイで結ばれた音符で始まっています。@c
+そのような繰り返し部分でのタイは以下のように指定する必要があります:
+
+@c KEEP LY
+@lilypond[quote,relative=2,verbatim]
+\repeat volta 2 { c g <c e>2 ~ }
+\alternative {
+ % 1 番目の差し替え部分: 後に続く音符は通常通りタイで結ばれます
+ { <c e>2. r4 }
+ % 2 番目の差し替え部分: 後に続く音符にはリピート用のタイを付けます
+ { <c e>2\repeatTie d4 c } }
+@end lilypond
+
+@cindex laissez vibrer (レセ ヴィブレ)
+@cindex ties, laissez vibrer (レセ ヴィブレのタイ)
+
+@funindex \laissezVibrer
+@funindex laissezVibrer
+
+@notation{L.v.}@: タイ (@notation{レセ ヴィブレ: laissez vibrer}) は@c
+音符を終端で途切れさせないということを示します。@c
+ピアノ、ハープ、他の弦楽器、それに打楽器のための楽譜で使用されます。@c
+L.v. タイは以下のように入力します:
+
+@lilypond[quote,verbatim,relative=1]
+<c f g>1\laissezVibrer
+@end lilypond
+
+@cindex ties, placement (タイの配置)
+
+@funindex \tieUp
+@funindex tieUp
+@funindex \tieDown
+@funindex tieDown
+@funindex \tieNeutral
+@funindex tieNeutral
+
+タイを手動で譜の上または下に配置することができます。
+@ref{Direction and placement} を参照してください。
+
+@cindex ties, appearance (タイの見た目)
+@cindex ties, dotted (点線のタイ)
+@cindex ties, dashed (破線のタイ)
+@cindex dashed ties (破線のタイ)
+@cindex dotted ties (点線のタイ)
+
+@funindex \tieDotted
+@funindex tieDotted
+@funindex \tieDashed
+@funindex tieDashed
+@funindex \tieSolid
+@funindex tieSolid
+
+タイを破線、点線、実線と破線の組み合わせにすることができます。
+
+@lilypond[quote, verbatim, relative=1]
+\tieDotted
+c2 ~ c
+\tieDashed
+c2 ~ c
+\tieHalfDashed
+c2 ~ c
+\tieHalfSolid
+c2 ~ c
+\tieSolid
+c2 ~ c
+@end lilypond
+
+破線パターンのカスタマイズを指定することができます:
+
+@lilypond[quote, verbatim, relative=1]
+\tieDashPattern #0.3 #0.75
+c2 ~ c
+\tieDashPattern #0.7 #1.5
+c2 ~ c
+\tieSolid
+c2 ~ c
+@end lilypond
+
+タイの破線パターン定義の構造は、スラーの破線パターン定義と同じです。@c
+複雑な破線パターンについての更なる情報は @ref{Slurs} にある@c
+コード断片集を参照してください。
+
+@predefined
+@code{\tieUp},
+@code{\tieDown},
+@code{\tieNeutral},
+@code{\tieDotted},
+@code{\tieDashed},
+@code{\tieDashPattern},
+@code{\tieHalfDashed},
+@code{\tieHalfSolid},
+@code{\tieSolid}
+@endpredefined
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{using-ties-with-arpeggios.ly}
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{engraving-ties-manually.ly}
+
+
+@seealso
+音楽用語集:
+@rglos{tie},
+@rglos{laissez vibrer}
+
+記譜法リファレンス:
+@ref{Slurs},
+@ref{自動音符分割}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{LaissezVibrerTie},
+@rinternals{LaissezVibrerTieColumn},
+@rinternals{TieColumn},
+@rinternals{Tie}
+
+
+@knownissues
+
+タイがアクティブなときに譜を切り換えても斜めのタイは作られません。
+
+タイの最中に音部記号やオクターブを変更することはきちんと定義されていません。@c
+そのような場合には、スラーを用いる方が好ましいです。
+
+
+@node 休符を記述する
+@subsection 休符を記述する
+@translationof Writing rests
+
+休符は音楽表記の中の音楽の一部として入力されます。
+
+@menu
+* 休符::
+* 不可視の休符::
+* 小節単位の休符::
+@end menu
+
+
+@node 休符
+@unnumberedsubsubsec 休符
+@translationof Rests
+
+@cindex rest (休符)
+@cindex rest, entering durations (休符の演奏時間を入力する)
+@cindex maxima rest (八全休符)
+@cindex longa rest (四全休符)
+@cindex breve rest (二全休符)
+
+@funindex \rest
+@funindex rest
+@funindex r
+@funindex \maxima
+@funindex maxima
+@funindex \longa
+@funindex longa
+@funindex \breve
+@funindex breve
+
+休符は音符名 @code{r} を持つ音符として入力されます。@c
+全休符よりも長い演奏時間を持つ休符には以下に示す定義済みコマンドを使用します:
+
+@c \time 16/1 is used to avoid spurious bar lines
+@c and long tracts of empty measures
+@c KEEP LY
+@lilypond[quote,verbatim,relative=2]
+\new Staff {
+ % この 2 本線には意味はありません
+ \time 16/1
+ \override Staff.TimeSignature #'stencil = ##f
+ % 八全休符を譜刻します。二全休符 4 つと等価です
+ r\maxima
+ % 四全休符を譜刻します。二全休符 2 つと等価です
+ r\longa
+ % 二全休符を譜刻します。
+ r\breve
+ r1 r2 r4 r8 r16 r32 r64 r128
+}
+@end lilypond
+
+@cindex rest, multi-measure (複数小節の休符)
+@cindex rest, whole-measure (全休符)
+
+全休符 -- 小節の中心に置かれます -- は複数小節の休符として@c
+入力する必要があります。@c
+複数小節の休符は多くの小節に対してと同様に単一の小節に対しても@c
+使用することができます。@c
+詳細は @ref{小節単位の休符} を参照してください。
+
+@cindex rest, specifying vertical position (休符の垂直方向の位置を指定する)
+
+休符の垂直方向の位置を明示的に指定するには、音符の後に続けて @code{\rest}
+を記述します。@c
+その音符が譜上で占める位置に、その音符の演奏時間を持つ休符が配置されます。@c
+これは多声部音楽を手動で精密にフォーマットすることを考慮したものです。@c
+なぜなら、自動休符フォーマットでは多声部音楽の休符の衝突を回避できないからです。
+
+@lilypond[quote,verbatim,relative=2]
+a4\rest d4\rest
+@end lilypond
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{rest-styles.ly}
+
+
+@seealso
+音楽用語集:
+@rglos{breve},
+@rglos{longa},
+@rglos{maxima}
+
+記譜法リファレンス:
+@ref{小節単位の休符}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{Rest}
+
+
+@knownissues
+
+@c Deliberately duplicated in Durations and Rests. -gp
+休符の演奏時間には基本的に限界がありません (最大値としても、最小値としても)。@c
+しかしながら、図柄の数には限界があります: 128 分から全音符の 8 倍までの@c
+休符を譜刻することができます。
+
+
+@node 不可視の休符
+@unnumberedsubsubsec 不可視の休符
+@translationof Invisible rests
+
+@cindex skip (スキップ)
+@cindex invisible rest (不可視の休符)
+@cindex rest, invisible (不可視の休符)
+@cindex spacer note (空白音符)
+@cindex spacer rest (空白休符)
+
+@funindex s
+@funindex \skip
+@funindex skip
+
+不可視の休符 (@q{空白休符} とも呼ばれます) は音符名@tie{}@code{s} を@c
+持つ音符として入力することができます:
+
+@lilypond[verbatim,quote,relative=2]
+c4 c s c
+s2 c
+@end lilypond
+
+@cindex lyrics, skip (歌詞をスキップする)
+
+空白休符は音符モードと和音モードでのみ利用可能です。@c
+他のモードでは、例えば歌詞を入力している場合、音楽モーメントをスキップするには
+@code{\skip} を使用します。@c
+@code{\skip} は明示的な演奏時間を必要としますが、@c
+@code{\addlyrics} や @code{\lyricsto} を使っていて、@c
+歌詞が関係するメロディーの音符から演奏時間を得ている場合は無視されます。
+
+@lilypond[quote,verbatim,relative=2]
+<<
+ {
+ a2 \skip2 a2 a2
+ }
+ \new Lyrics {
+ \lyricmode {
+ foo2 \skip 1 bla2
+ }
+ }
+>>
+@end lilypond
+
+@code{\skip} はコマンドであるため、@c
+@code{s} とは異なり後に続く音符のデフォルト演奏時間には影響を与えません。
+
+@lilypond[quote,verbatim,relative=2]
+<<
+ {
+ \repeat unfold 8 { a4 }
+ }
+ {
+ a4 \skip 2 a |
+ s2 a
+ }
+>>
+@end lilypond
+
+
+空白休符は、音符や休符と同様に、@code{Staff} や @code{Voice} が@c
+存在しない場合に、それらを暗黙的に作成します:
+
+@lilypond[quote,verbatim,fragment]
+s1 s s
+@end lilypond
+
+@code{\skip} はただ音楽的な時間をスキップするだけです。@c
+これはいかなる種類の出力も作成しません。
+
+@c KEEP LY
+@lilypond[quote,verbatim,relative=2]
+% これは有効な入力ですが、何もしません
+\skip 1 \skip1 \skip 1
+@end lilypond
+
+
+@seealso
+学習マニュアル:
+@rlearning{オブジェクトの可視性と色}
+
+記譜法リファレンス:
+@ref{Hidden notes},
+@ref{Visibility of objects}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{SkipMusic}
+
+
+@node 小節単位の休符
+@unnumberedsubsubsec 小節単位の休符
+@translationof Full measure rests
+
+@cindex multi-measure rests (複数の小節にまたがる休符)
+@cindex full-measure rests (小節単位の休符)
+@cindex rest, multi-measure (複数の小節にまたがる休符)
+@cindex rest, full-measure (小節単位の休符)
+@cindex whole rest for a full measure (小節に対する全休符)
+@cindex rest, whole for a full measure (小節に対する全休符)
+
+@funindex R
+
+1 つまたは複数の小節に対する休符は@c
+音符名として大文字の @code{R} を持つ音符として入力します:
+
+@lilypond[quote,verbatim,relative=2]
+% 休みの小節は 1 つの小節にまとめられます
+\compressFullBarRests
+R1*4
+R1*24
+R1*4
+b2^"Tutti" b4 a4
+@end lilypond
+
+小節単位の休符の演奏時間は、音符に対する演奏時間と同じ表記を使います。@c
+複数小節にまたがる休符の演奏時間は常に小節の長さの整数倍になります。@c
+そのため、しばしばドットや分数を使う必要があります:
+
+@lilypond[quote,verbatim,relative=2]
+\compressFullBarRests
+\time 2/4
+R1 | R2 |
+\time 3/4
+R2. | R2.*2 |
+\time 13/8
+R1*13/8 | R1*13/8*12 |
+\time 10/8
+R4*5*4 |
+@end lilypond
+
+1 小節分の休符は、拍子次第で全休符または二全休符のどちらかとして、@c
+小節の中央に譜刻されます。
+
+@lilypond[quote,verbatim,relative=2]
+\time 4/4
+R1 |
+\time 6/4
+R1*3/2 |
+\time 8/4
+R1*2 |
+@end lilypond
+
+@cindex multi-measure rest, expanding (複数小節にまたがる休符を展開する)
+@cindex multi-measure rest, contracting (複数小節にまたがる休符をまとめる)
+
+@funindex \expandFullBarRests
+@funindex expandFullBarRests
+@funindex \compressFullBarRests
+@funindex compressFullBarRests
+
+デフォルトでは、複数小節にまたがる休符は@c
+休みの小節すべてを明示的に示すように譜刻される楽譜に展開されます。@c
+そうする代わりに、複数小節にまたがる休符を複数小節の休符記号を持つ単一の@c
+小節として譜刻することもできます -- 休みの小節数がその小節の上に譜刻されます。
+
+@c KEEP LY
+@lilypond[quote,verbatim,relative=2]
+% デフォルトの振る舞い
+\time 3/4 r2. | R2.*2 |
+\time 2/4 R2 |
+\time 4/4
+% 休みの小節を 1 つの小節にまとめます
+\compressFullBarRests
+r1 | R1*17 | R1*4 |
+% 休みの小節を展開します
+\expandFullBarRests
+\time 3/4
+R2.*2 |
+@end lilypond
+
+
+@cindex text on multi-measure rest (複数小節にまたがる休符上のテキスト)
+@cindex multi-measure rest, attaching text (複数小節にまたがる休符にテキストを付ける)
+@cindex script on multi-measure rest (複数小節にまたがる休符上のスクリプト)
+@cindex multi-measure rest, script (複数小節にまたがる休符上のスクリプト)
+@cindex fermata on multi-measure rest (複数小節にまたがる休符上のフェルマータ)
+@cindex multi-measure rest, attaching fermata (複数小節にまたがる休符にフェルマータを付ける)
+@cindex markup on multi-measure rest (複数小節にまたがる休符上のマークアップ)
+@cindex multi-measure rest with markup (マークアップを持つ複数小節にまたがる休符)
+
+@funindex \fermataMarkup
+@funindex fermataMarkup
+@funindex MultiMeasureRestText
+
+マークアップを複数小節にまたがる休符に付け加えることができます。@c
+フェルマータを付け加えるための定義済みコマンドとして
+@code{\fermataMarkup} が提供されています。
+
+@lilypond[quote,verbatim,relative=2]
+\compressFullBarRests
+\time 3/4
+R2.*10^\markup { \italic "ad lib." }
+R2.^\fermataMarkup
+@end lilypond
+
+@warning{
+複数小節にまたがる休符に付け加えられるマークアップはタイプ
+@code{MultiMeasureRestText} のオブジェクトであり、@c
+@code{TextScript} ではありません。@c
+オーバライドは正しいオブジェクトに対して行わなければなりません。@c
+さもないと無視されます。@c
+以下の例を見てください。
+}
+
+@c KEEP LY
+@lilypond[quote,verbatim,relative=2]
+% この例は誤ったオブジェクト名を指定しているため失敗します
+\override TextScript #'padding = #5
+R1^"wrong"
+% この例は正しいオブジェクト名が指定されています
+\override MultiMeasureRestText #'padding = #5
+R1^"right"
+@end lilypond
+
+複数小節にまたがる休符が @code{\partial} 設定の直後にある場合、@c
+小節チェックの警告が表示されないかもしれません。
+
+
+@funindex \textLengthOn
+@funindex textLengthOn
+@funindex \textLengthOff
+@funindex textLenthOff
+@funindex \fermataMarkup
+@funindex fermataMarkup
+@funindex \compressFullBarRests
+@funindex compressFullBarRests
+@funindex \expandFullBarRests
+@funindex expandFullBarRests
+
+@predefined
+@code{\textLengthOn},
+@code{\textLengthOff},
+@code{\fermataMarkup},
+@code{\compressFullBarRests},
+@code{\expandFullBarRests}
+@endpredefined
+
+
+@snippets
+
+@c 未訳
+@cindex church rest
+@cindex rest, church
+@cindex kirchenpausen
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{changing-form-of-multi-measure-rests.ly}
+
+@cindex multi-measure rests, positioning
+@cindex positioning multi-measure rests
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{positioning-multi-measure-rests.ly}
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{multi-measure-rest-markup.ly}
+
+
+@seealso
+音楽用語集:
+@rglos{multi-measure rest}
+
+記譜法リファレンス:
+@ref{演奏時間},
+@ref{Text},
+@ref{Formatting text},
+@ref{Text scripts}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{MultiMeasureRest},
+@rinternals{MultiMeasureRestNumber},
+@rinternals{MultiMeasureRestText}
+
+
+@cindex fingerings and multi-measure rests (運指記号と複数小節にまたがる休符)
+@cindex multi-measure rests and fingerings (運指記号と複数小節にまたがる休符)
+
+@knownissues
+複数小節にまたがる休符の上に運指記号を配置すると (例えば、@code{R1*10-4})、@c
+運指の数字が休みの小節数と衝突する可能性があります。
+
+@cindex condensing rests (休符をまとめる)
+@cindex rest, condensing ordinary (通常の休符をまとめる)
+
+複数の通常の休符を自動的に単一の複数小節休符にまとめる方法はありません。
+
+@cindex rest, collisions of (休符の衝突)
+
+複数小節にまたがる休符が休符の衝突を引き起こすことはありません。
+
+
+@node リズムを表示する
+@subsection リズムを表示する
+@translationof Displaying rhythms
+
+@menu
+* 拍子::
+* メトロノーム記号::
+* 上拍::
+* 無韻律の音楽::
+* 複合拍子記譜法::
+* 自動音符分割::
+* 旋律のリズムを示す::
+@end menu
+
+@node 拍子
+@unnumberedsubsubsec 拍子
+@translationof Time signature
+
+@cindex time signature (拍子)
+@cindex meter (拍)
+
+@funindex \time
+@funindex time
+
+拍子は以下のようにセットします:
+
+@lilypond[quote,verbatim,relative=2]
+\time 2/4 c2
+\time 3/4 c2.
+@end lilypond
+
+@cindex time signature, visibility of (拍子の可視性)
+
+拍子は楽曲の始まりと拍子が変更されたときに譜刻されます。@c
+行の終わりで変更が起こる場合、警告の拍子が行の終わりに譜刻されます。@c
+デフォルトの振る舞いを変更することができます。@c
+@ref{Visibility of objects} を参照してください。
+
+@lilypond[quote,verbatim,relative=2]
+\time 2/4
+c2 c
+\break
+c c
+\break
+\time 4/4
+c c c c
+@end lilypond
+
+@cindex time signature style (拍子スタイル)
+@cindex meter style (拍スタイル)
+
+@funindex \numericTimeSignature
+@funindex numericTimeSignature
+@funindex \defaultTimeSignature
+@funindex defaultTimeSignature
+
+2/2 や 4/4 で使用される拍子は数字を使用するスタイルに変更することができます:
+
+@c KEEP LY
+@lilypond[quote,verbatim,relative=2]
+% デフォルトのスタイル
+\time 4/4 c1
+\time 2/2 c1
+% 数字を使うスタイルに変更します
+\numericTimeSignature
+\time 4/4 c1
+\time 2/2 c1
+% デフォルトのスタイルに戻します
+\defaultTimeSignature
+\time 4/4 c1
+\time 2/2 c1
+@end lilypond
+
+
+定量拍子については @ref{Mensural time signatures} でカバーされています。
+
+@cindex time signature default settings (拍子のデフォルト設定)
+@cindex autobeaming properties for time signatures (拍子のための自動連桁プロパティ)
+@cindex beaming, time signature default properties (連桁と拍子のデフォルト プロパティ)
+@funindex \overrideTimeSignatureSettings
+
+
+@predefined
+@code{\numericTimeSignature},
+@code{\defaultTimeSignature}
+@endpredefined
+
+譜刻される拍子を設定することに加えて、@c
+@code{\time} コマンドは拍子に基づくプロパティ
+@code{baseMoment}, @code{beatStructure}, それに @code{beamExceptions}
+のデフォルト値も設定します。@c
+これらのプロパティにあらかじめ定義されているデフォルト値は
+@file{scm/time-signature-settings.scm} で見つかります。@c
+既存のデフォルト値を変更したり、新しいデフォルト値を変更したりすることができます:
+
+@lilypond[quote,verbatim]
+\score {
+ \new Staff {
+ \relative c' {
+ \overrideTimeSignatureSettings
+ #'(4 . 4) % timeSignatureFraction
+ #'(1 . 4) % baseMomentFraction
+ #'(3 1) % beatStructure
+ #'() % beamExceptions
+ \time 4/4
+ \repeat unfold 8 { c8 } |
+ }
+ }
+}
+@end lilypond
+
+@code{\overrideTimeSignatureSettings} は 4 つの引数をとります:
+
+@enumerate
+
+@item
+@code{@var{timeSignatureFraction}}, 拍子を示す Scheme ペア。
+
+@item
+@code{@var{baseMomentFraction}}, 拍子の基本タイミングの単位となる@c
+分子と分母を保持する Scheme ペア。
+
+@item
+@code{@var{beatStructure}}, 小節の拍構造を示す Scheme リスト。@c
+基本タイミングを単位とします。
+
+@item
+@code{@var{beamExceptions}}, 指定された拍子でそれぞれの拍で終了しない@c
+連桁のルールを保持する配列リスト。@c
+@ref{自動連桁の振る舞いを設定する} に説明があります。
+@end enumerate
+
+@code{\overrideTimeSignatureSettings} を保持するコンテキストは、@c
+その @code{\overrideTimeSignatureSettings} 呼び出しが実行される前に@c
+インスタンス化されている必要があります。@c
+このことは、そのようなコンテキストは明示的にインスタンス化するか、@c
+そのコンテキスト内で @code{\overrideTimeSignatureSettings} の前に@c
+音楽を置いておく必要があるということを意味します:
+
+@c KEEP LY
+@lilypond[quote,verbatim]
+\score {
+ \relative c' {
+ % コンテキストがまだインスタンス化されていないため、この呼び出しは失敗します
+ \overrideTimeSignatureSettings
+ #'(4 . 4) % timeSignatureFraction
+ #'(1 . 4) % baseMomentFraction
+ #'(3 1) % beatStructure
+ #'() % beamExceptions
+ \time 4/4
+ c8^\markup {"Beamed (2 2)"}
+ \repeat unfold 7 { c8 } |
+ % この呼び出しは成功します
+ \overrideTimeSignatureSettings
+ #'(4 . 4) % timeSignatureFraction
+ #'(1 . 4) % baseMomentFraction
+ #'(3 1) % beatStructure
+ #'() % beamExceptions
+ \time 4/4
+ c8^\markup {"Beamed (3 1)"}
+ \repeat unfold 7 { c8 } |
+ }
+}
+@end lilypond
+
+@cindex time signature properties, restoring default values (拍子プロパティをデフォルト値に戻す)
+@cindex restoring default properties for time signatures (拍子をデフォルト プロパティに戻す)
+@funindex \revertTimeSignatureSettings
+
+デフォルトの拍子プロパティ値の変更を元の値に戻すことができます:
+
+@lilypond[quote,verbatim]
+\score{
+ \relative c' {
+ \repeat unfold 8 { c8 } |
+ \overrideTimeSignatureSettings
+ #'(4 . 4) % timeSignatureFraction
+ #'(1 . 4) % baseMomentFraction
+ #'(3 1) % beatStructure
+ #'() % beamExceptions
+ \time 4/4
+ \repeat unfold 8 { c8 } |
+ \revertTimeSignatureSettings #'(4 . 4)
+ \time 4/4
+ \repeat unfold 8 { c8 } |
+ }
+}
+@end lilypond
+
+@code{Timing_translator} と @code{Default_bar_line_engraver} を@c
+@code{Score} コンテキストから @code{Staff} コンテキストに移動させることにより、@c
+異なる譜に対して異なる値のデフォルト拍子プロパティを割り当てることができます。
+
+@lilypond[quote, verbatim]
+\score {
+ \new StaffGroup <<
+ \new Staff {
+ \overrideTimeSignatureSettings
+ #'(4 . 4) % timeSignatureFraction
+ #'(1 . 4) % baseMomentFraction
+ #'(3 1) % beatStructure
+ #'() % beamExceptions
+ \time 4/4
+ \repeat unfold 8 {c''8}
+ }
+ \new Staff {
+ \overrideTimeSignatureSettings
+ #'(4 . 4) % timeSignatureFraction
+ #'(1 . 4) % baseMomentFraction
+ #'(1 3) % beatStructure
+ #'() % beamExceptions
+ \time 4/4
+ \repeat unfold 8 {c''8}
+ }
+ >>
+ \layout {
+ \context {
+ \Score
+ \remove "Timing_translator"
+ \remove "Default_bar_line_engraver"
+ }
+ \context {
+ \Staff
+ \consists "Timing_translator"
+ \consists "Default_bar_line_engraver"
+ }
+ }
+}
+@end lilypond
+
+@predefined
+@code{\numericTimeSignature},
+@code{\defaultTimeSignature}
+@endpredefined
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{changing-the-time-signature-without-affecting-the-beaming.ly}
+
+@cindex compound time signatures
+@cindex time signature, compound
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{compound-time-signatures.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly}
+
+
+@seealso
+音楽用語集:
+@rglos{time signature}
+
+記譜法リファレンス:
+@ref{Mensural time signatures},
+@ref{時間管理}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{TimeSignature},
+@rinternals{Timing_translator}
+
+
+@node メトロノーム記号
+@unnumberedsubsubsec メトロノーム記号
+@translationof Metronome marks
+
+@cindex tempo (テンポ)
+@cindex beats per minute (1 分毎の拍数)
+@cindex metronome mark (メトロノーム記号)
+@cindex metronome marking with text (テキストを持つメトロノーム記号)
+
+@funindex \tempo
+@funindex tempo
+
+基本的なメトロノーム記号は単純に以下のように記述します:
+
+@lilypond[verbatim,quote,relative=1]
+\tempo 4 = 120
+c2 d
+e4. d8 c2
+@end lilypond
+
+メトロノーム記号を 2 つの数の範囲として譜刻することもできます:
+
+@lilypond[verbatim,quote,relative=1]
+\tempo 4 = 40 ~ 46
+c4. e8 a4 g
+b,2 d4 r
+@end lilypond
+
+テキストを持つテンポ指示にすこともできます:
+
+@lilypond[verbatim,quote,relative=2]
+\tempo "Allegretto"
+c4 e d c
+b4. a16 b c4 r4
+@end lilypond
+
+メトロノーム記号とテキストを組み合わせると、@c
+メトロノーム記号は自動的に括弧で囲まれます:
+
+@lilypond[verbatim,quote,relative=2]
+\tempo "Allegro" 4 = 160
+g4 c d e
+d4 b g2
+@end lilypond
+
+一般に、テキストを任意のマークアップ オブジェクトにすることができます:
+
+@lilypond[verbatim,quote,relative=2]
+\tempo \markup { \italic Faster } 4 = 132
+a8-. r8 b-. r gis-. r a-. r
+@end lilypond
+
+テキストを伴わないメトロノーム記号を括弧で囲むには、@c
+空の文字列を含めて記述します:
+
+@lilypond[verbatim,quote,relative=2]
+\tempo "" 8 = 96
+d4 g e c
+@end lilypond
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{printing-metronome-and-rehearsal-marks-below-the-staff.ly}
+
+@c perhaps also an example of how to move it horizontally?
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{changing-the-tempo-without-a-metronome-mark.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{creating-metronome-marks-in-markup-mode.ly}
+
+詳細は @ref{Formatting text} を参照してください。
+
+
+@seealso
+音楽用語集:
+@rglos{metronome},
+@rglos{metronomic indication},
+@rglos{tempo indication},
+@rglos{metronome mark}
+
+記譜法リファレンス:
+@ref{Formatting text},
+@ref{MIDI output}
+
+コード断片集:
+@rlsr{Staff notation}
+
+内部リファレンス:
+@rinternals{MetronomeMark}
+
+
+@node 上拍
+@unnumberedsubsubsec 上拍
+@translationof Upbeats
+
+@cindex anacrusis (弱拍)
+@cindex upbeat (上拍)
+@cindex partial measure (部分小節)
+@cindex measure, partial (部分小節)
+@cindex pickup measure (ピックアップ小節)
+@cindex measure, change length (小節の長さの変更)
+
+@funindex measurePosition
+@funindex \partial
+@funindex partial
+
+弱拍や上拍などのような部分小節またはピックアップ小節は、@c
+@code{\partial} コマンドを使って入力します。@c
+以下の構文を使用します:
+
+@example
+\partial @var{duration}
+@end example
+
+@noindent
+@code{duration} は、最初の完全な長さを持つ小節の前に置かれる小節の長さです:
+
+@lilypond[quote,verbatim,relative=2]
+\partial 4 e4 |
+a2. c,4 |
+@end lilypond
+
+部分小節は、完全な長さを持つ小節よりも短い演奏時間なら、@c
+どのような長さでも持つことができます:
+
+@lilypond[quote,verbatim,relative=2]
+\partial 4 e4 |
+a2. c,4 |
+@end lilypond
+
+部分小節は 1 小節よりも短い任意の演奏時間にすることができます:
+
+@lilypond[quote,verbatim,relative=2]
+\partial 8*3 c8 d e |
+a2. c,4 |
+@end lilypond
+
+内部的には、@code{\partial @var{duration}} は以下のように翻訳されます:
+
+@example
+\set Timing.measurePosition -@var{duration}
+@end example
+
+例えば、@code{\partial 8*3} は以下のようになります:
+
+@example
+\set Timing.measurePosition = #(ly:make-moment -3 8)
+@end example
+
+プロパティ @code{measurePosition} は、@c
+ある時点でその小節はどれくらい演奏済みになっているかを示す有理数を保持します。@c
+このプロパティは @code{\partial} によって負の数にセットされるということに@c
+注意してください:
+すなわち、@code{\partial 4} は内部的に @code{-4} に翻訳され、@c
+@qq{その小節には 4 分音符が残っている} という意味になります。
+
+
+@seealso
+音楽用語集:
+@rglos{anacrusis}
+
+記譜法リファレンス:
+@ref{装飾小音符}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{Timing_translator}
+
+
+@knownissues
+
+@code{\partial} コマンドは楽曲の開始時で使用されることだけを@c
+意図したものです。@c
+楽曲の途中でこのコマンドを使用した場合、@c
+奇妙な警告がいくつか発生するかもしれません。@c
+曲の途中では @code{\set Timing.measurePosition} を使用してください。
+
+@node 無韻律の音楽
+@unnumberedsubsubsec 無韻律の音楽
+@translationof Unmetered music
+
+@cindex bar lines, turning off (小節線を付けない)
+@cindex bar numbering, turning off (小節の付番を off にする)
+@cindex cadenza (カデンツァ)
+@cindex unmetered music (無韻律の音楽)
+
+@funindex \cadenzaOn
+@funindex cadenzaOn
+@funindex \cadenzaOff
+@funindex cadenzaOff
+
+小節線と小節番号は自動的に算出されます。@c
+無韻律の音楽 (例えば、カデンツァの一部) では、この機能は望ましくありません。@c
+小節線と小節番号の自動算出を off にするには@c
+コマンド @code{\cadenzaOn} を使用し、@c
+再び on にするには @code{\cadenzaOff} を使用します。
+
+@lilypond[verbatim,relative=2,quote]
+c4 d e d
+\cadenzaOn
+c4 c d8[ d d] f4 g4.
+\cadenzaOff
+\bar "|"
+d4 e d c
+@end lilypond
+
+小節の付番は、カデンツァが存在しないかのように、@c
+カデンツァの終了点で再開されます:
+
+@lilypond[verbatim,relative=2,quote]
+% すべての小節番号を表示します
+\override Score.BarNumber #'break-visibility = #all-visible
+c4 d e d
+\cadenzaOn
+c4 c d8[ d d] f4 g4.
+\cadenzaOff
+\bar "|"
+d4 e d c
+@end lilypond
+
+@cindex beaming in cadenzas (カデンツァでの連桁)
+@cindex beaming in unmetered music (無韻律の音楽での連桁)
+@cindex cadenza, beaming in (カデンツァでの連桁)
+@cindex unmetered music, beaming in (無韻律の音楽での連桁)
+
+自動連桁は @code{\cadenzaOn} で off になり、@c
+@code{\cadenzaOff} で on になります。@c
+このため、カデンツァ内の連桁はすべて手動で入力する必要があります
+(@ref{手動連桁})。
+
+@lilypond[verbatim,relative=2,quote]
+\repeat unfold 8 { c8 }
+\cadenzaOn
+\repeat unfold 5 { c8 }
+\bar"|"
+\cadenzaOff
+\repeat unfold 8 { c8 }
+@end lilypond
+
+これらの定義済みコマンドは、@c
+たとえ @code{Voice} コンテキストの 1 つの中に配置したとしても、@c
+楽譜のすべての譜に影響を与えるということに注意してください。@c
+これを変更するには、@ref{複合拍子記譜法} で示されているように、@c
+@code{Timing_translator} を @code{Score} コンテキストから
+@code{Staff} コンテキストに移動させます。
+
+@predefined
+@code{\cadenzaOn},
+@code{\cadenzaOff}
+@endpredefined
+
+
+@seealso
+音楽用語集:
+@rglos{cadenza}
+
+記譜法リファレンス:
+@ref{Visibility of objects}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+
+@cindex cadenza line breaks (カデンツァでの改行)
+@cindex cadenza page breaks (カデンツァでの改ページ)
+@cindex unmetered music, line breaks (無韻律の音楽での改行)
+@cindex unmetered music, page breaks (無韻律の音楽での改ページ)
+@cindex breaks in unmetered music (無韻律の音楽での改行、改ページ)
+@cindex line breaks in cadenzas (カデンツァでの改行)
+@cindex page breaks in cadenzas (カデンツァでの改ページ)
+@cindex line breaks in unmetered music (無韻律の音楽での改行)
+@cindex page breaks in unmetered music (無韻律の音楽での改ページ)
+
+@knownissues
+
+LilyPond は改行と改ページを小節線の箇所にのみ挿入します。@c
+無韻律の音楽が譜の行の終わりまでに終了しないのならば、@c
+以下のように不可視の小節線を挿入して、@c
+改行または改ページを起こすことができる場所であることを示す必要があります:
+
+@example
+\bar ""
+@end example
+
+@code{\cadenzaOn} で楽曲を始める場合、@c
+@code{Voice} コンテキストを明示的に作成すべきです。@c
+さもないと、奇妙なエラーが発生する可能性があります。
+
+@example
+\new Voice @{
+ \relative c' @{
+ \cadenzaOn
+ c16[^"Solo Free Time" d e f] g2.
+ \bar "||"
+ \cadenzaOff
+ @}
+@}
+@end example
+
+
+@node 複合拍子記譜法
+@unnumberedsubsubsec 複合拍子記譜法
+@translationof Polymetric notation
+
+@c This section necessarily uses \set
+@c This is acceptable -td
+
+@cindex double time signatures (2 重拍子)
+@cindex signatures, polymetric (複合韻律)
+@cindex time signatures, polymetric (複合拍子)
+@cindex time signatures, double (2 重拍子)
+@cindex polymetric signatures (複合韻律)
+@cindex meter, polymetric (複合韻律拍)
+
+@funindex timeSignatureFraction
+@funindex \scaleDurations
+@funindex scaleDurations
+@funindex \times
+@funindex times
+
+複合拍子記譜法がサポートされます。@c
+明示的な複合拍子と、拍子指定を変更して音符の演奏時間を@c
+伸縮することによる複合拍子のどちらもです。
+
+
+@strong{@i{それぞれの譜は異なる拍子を持ち、小節の長さは等価である場合}}
+
+この記譜を作成するには、各譜に共通の拍子をセットし、@c
+@code{timeSignatureFraction} に望みの分数をセットすることによって記号を@c
+手動で置き換え、各譜の演奏時間を伸縮させて共通の拍子に合わせます
+-- @ref{拍子} を参照してください。@c
+演奏時間の伸縮は @code{\scaleDurations} で行います。@c
+このコマンドの使用方法は @code{\times} と同じですが、連符囲みを@c
+作成しません -- @ref{演奏時間を変更する} を参照してください。
+
+@cindex beaming in polymetric music (複合拍子音楽での連桁)
+@cindex beaming in polymetric meter (複合拍での連桁)
+
+この例では、3/4, 9/8 それに 10/8 の拍子を持つ音楽が並列に並べられています。@c
+2 番目の譜では、演奏時間に 2/3 が掛けられ、それによって 2/3 * 9/8 = 3/4 と@c
+なっています。@c
+3 番目の譜では、演奏時間に 3/5 が掛けられ、それによって 3/5 * 10/8 = 3/4 と@c
+なっています。@c
+演奏時間の伸縮は自動連桁の規則に影響を与えるため、しばしば手動で連桁を@c
+挿入することが必要になります。
+
+@lilypond[quote,verbatim]
+\relative c' <<
+ \new Staff {
+ \time 3/4
+ c4 c c |
+ c c c |
+ }
+ \new Staff {
+ \time 3/4
+ \set Staff.timeSignatureFraction = #'(9 . 8)
+ \scaleDurations #'(2 . 3)
+ \repeat unfold 6 { c8[ c c] }
+ }
+ \new Staff {
+ \time 3/4
+ \set Staff.timeSignatureFraction = #'(10 . 8)
+ \scaleDurations #'(3 . 5) {
+ \repeat unfold 2 { c8[ c c] }
+ \repeat unfold 2 { c8[ c] } |
+ c4. c4. \times 2/3 { c8[ c c] } c4
+ }
+ }
+>>
+@end lilypond
+
+
+@strong{@i{それぞれの譜は異なる拍子を持ち、小節の長さは等価ではない場合}}
+
+@code{Timing_translator} と @code{Default_bar_line_engraver} を
+@code{Staff} コンテキストに移すことによって、@c
+それぞれの譜に独立した拍子を与えることができます。
+
+@c KEEP LY
+@lilypond[quote,verbatim]
+\layout {
+ \context {
+ \Score
+ \remove "Timing_translator"
+ \remove "Default_bar_line_engraver"
+ }
+ \context {
+ \Staff
+ \consists "Timing_translator"
+ \consists "Default_bar_line_engraver"
+ }
+}
+
+% 以上で、各譜はそれぞれに拍子を持つようになります
+
+\relative c' <<
+ \new Staff {
+ \time 3/4
+ c4 c c |
+ c4 c c |
+ }
+ \new Staff {
+ \time 2/4
+ c4 c |
+ c4 c |
+ c4 c |
+ }
+ \new Staff {
+ \time 3/8
+ c4. |
+ c8 c c |
+ c4. |
+ c8 c c |
+ }
+>>
+@end lilypond
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{compound-time-signatures.ly}
+
+
+@seealso
+音楽用語集:
+@rglos{polymetric},
+@rglos{polymetric time signature},
+@rglos{meter}
+
+記譜法リファレンス:
+@ref{拍子},
+@ref{演奏時間を変更する}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{TimeSignature},
+@rinternals{Timing_translator},
+@rinternals{Default_bar_line_engraver},
+@rinternals{Staff}
+
+
+@knownissues
+
+異なる拍子を持つ譜が並列に並べられている場合、@c
+同時に起こる音符の水平方向の位置は同じになります。@c
+しかしながら、それぞれの譜の小節線により、@c
+音符の間隔は通常の異なる拍子が無い場合よりも不規則になります。
+
+
+@node 自動音符分割
+@unnumberedsubsubsec 自動音符分割
+@translationof Automatic note splitting
+
+@cindex notes, splitting (音符を分割する)
+@cindex splitting notes (音符を分割する)
+
+@funindex Note_heads_engraver
+@funindex Completion_heads_engraver
+
+小節線をまたがる長い音符を自動的にタイで結ばれた音符に変換することができます。@c
+これを行うには、@code{Note_heads_engraver} を
+@code{Completion_heads_engraver} で置き換えます。@c
+以下の例では、小節線をまたがる音符が分割され、タイで結ばれています。
+
+@lilypond[quote,verbatim,relative=1]
+\new Voice \with {
+ \remove "Note_heads_engraver"
+ \consists "Completion_heads_engraver"
+}
+
+{ c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2 }
+@end lilypond
+
+このエングラーバは進行中の音符をすべて小節線のところで分割して、@c
+タイを挿入します。@c
+このエングラーバの用途の 1 つに複雑な楽譜のデバッグがあります:
+何小節かで音符がきちんと満たされていない場合、@c
+このエングラーバで挿入されたタイが、それぞれの小節の狂いを示します。
+
+
+@seealso
+音楽用語集: @rglos{tie}
+
+学習マニュアル:
+@rlearning{エングラーバの説明},
+@rlearning{エングラーバを追加 / 削除する}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{Note_heads_engraver},
+@rinternals{Completion_heads_engraver},
+@rinternals{Forbid_line_break_engraver}
+
+
+@knownissues
+
+すべての演奏時間を通常の音符と付点で正確に表すことはできません
+(特に、連符を含んでいる場合) が、@c
+@code{Completion_heads_engraver} が連符を挿入することはありません。
+
+@code{Completion_heads_engraver} は音符にだけ作用します。@c
+休符を分割することはありません。
+
+
+@node 旋律のリズムを示す
+@unnumberedsubsubsec 旋律のリズムを示す
+@translationof Showing melody rhythms
+
+@cindex melody rhythms, showing (旋律のリズムを示す)
+@cindex rhythms, showing melody (旋律のリズムを示す)
+
+しばしば旋律のリズムだけを示したいことがあります。@c
+これはリズム譜を使うことで達成できます。@c
+そのような譜上にある音符のピッチはすべて破棄され、その譜自体は 1 本の@c
+線を持ちます:
+
+@lilypond[quote,relative=1,verbatim]
+<<
+ \new RhythmicStaff {
+ \new Voice = "myRhythm" {
+ \time 4/4
+ c4 e8 f g2
+ r4 g g f
+ g1
+ }
+ }
+ \new Lyrics {
+ \lyricsto "myRhythm" {
+ This is my song
+ I like to sing
+ }
+ }
+>>
+@end lilypond
+
+@cindex guitar chord charts (ギター コード表)
+@cindex strumming rhythms, showing (つま弾き (ストラム) のリズムを示す)
+@cindex guitar strumming rhythms, showing (ギターのつま弾き (ストラム) のリズムを示す)
+
+@funindex Pitch_squash_engraver
+@funindex \improvisationOn
+@funindex improvisationOn
+@funindex \improvisationOff
+@funindex improvisationOff
+
+ギター コード表はしばしばつま弾き (ストラム) のリズムを示します。@c
+これは @code{Pitch_squash_engraver} と @code{\improvisationOn} を@c
+使うことで達成できます。
+
+
+@lilypond[quote,verbatim]
+<<
+ \new ChordNames {
+ \chordmode {
+ c1 f g c
+ }
+ }
+ \new Voice \with {
+ \consists Pitch_squash_engraver
+ } \relative c'' {
+ \improvisationOn
+ c4 c8 c c4 c8 c
+ f4 f8 f f4 f8 f
+ g4 g8 g g4 g8 g
+ c4 c8 c c4 c8 c
+ }
+>>
+@end lilypond
+
+
+@predefined
+@code{\improvisationOn},
+@code{\improvisationOff}
+@endpredefined
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{guitar-strum-rhythms.ly}
+
+
+@seealso
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{RhythmicStaff},
+@rinternals{Pitch_squash_engraver}
+
+
+@node 連桁
+@subsection 連桁
+@translationof Beams
+
+@menu
+* 自動連桁::
+* 自動連桁の振る舞いを設定する::
+* 手動連桁::
+* 羽状の連桁::
+@end menu
+
+
+@node 自動連桁
+@unnumberedsubsubsec 自動連桁
+@translationof Automatic beams
+
+デフォルトでは、連桁は自動的に挿入されます:
+
+@cindex beams, manual (手動連桁)
+@cindex manual beams (手動連桁)
+@cindex beams, setting rules for (連桁の規則を設定する)
+@cindex beams, custom rules for (連桁のためのカスタム規則)
+
+@funindex \autoBeamOn
+@funindex autoBeamOn
+@funindex \autoBeamOff
+@funindex autoBeamOff
+
+@lilypond[quote,verbatim,relative=2]
+\time 2/4 c8 c c c
+\time 6/8 c8 c c c8. c16 c8
+@end lilypond
+
+自動的に決定される連桁が満足いかないものである場合、@c
+明示的に連桁を挿入することが可能です
+-- @ref{手動連桁} を参照してください。@c
+連桁を休符の上まで伸ばそうと意図しているのなら、@c
+連桁を手動で挿入する @emph{必要があります}。
+
+自動連桁を必要としない場合、@c
+@code{\autoBeamOff} で off にすることができ、@c
+@code{\autoBeamOn} で on にすることができます:
+
+@lilypond[quote,relative=1,verbatim]
+c4 c8 c8. c16 c8. c16 c8
+\autoBeamOff
+c4 c8 c8. c16 c8.
+\autoBeamOn
+c16 c8
+@end lilypond
+
+@cindex melismata, beams (メリスマと連桁)
+@cindex beams and melismata (連桁とメリスマ)
+
+@warning{歌曲の中でメリスマを表すために連桁を使用する場合、
+@code{\autoBeamOff} で自動連桁を off にして、手動で連桁を示すべきです。}
+
+@warning{@code{@bs{}partcombine} を @code{@bs{}autoBeamOff} と一緒に@c
+用いると予期しない結果になる可能性があります。@c
+詳細は以下のコード断片を参照してください。}
+
+自動的に挿入されるデフォルトの連桁とは異なるパターンの連桁を@c
+作成することができます
+-- @ref{自動連桁の振る舞いを設定する} を参照してください。
+
+
+@predefined
+@code{\autoBeamOff},
+@code{\autoBeamOn}
+@endpredefined
+
+
+@snippets
+
+@cindex line breaks and beams (改行と連桁)
+@cindex beams and line breaks (連桁と改行)
+
+@funindex breakable
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{beams-across-line-breaks.ly}
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{changing-beam-knee-gap.ly}
+
+@cindex \partcombine and \autoBeamOff (\partcombine と \autoBeamOff)
+@cindex \autoBeamOff and \partcombine (\autoBeamOff と \partcombine)
+
+
+@lilypondfile [verbatim, lilyquote, ragged-right, texidoc, doctitle]
+{partcombine-and-autobeamoff.ly}
+
+
+@seealso
+記譜法リファレンス:
+@ref{手動連桁},
+@ref{自動連桁の振る舞いを設定する}
+
+インストールされているファイル:
+@file{scm/auto-beam.scm}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{Auto_beam_engraver},
+@rinternals{Beam_engraver},
+@rinternals{Beam},
+@rinternals{BeamEvent},
+@rinternals{BeamForbidEvent},
+@rinternals{beam-interface},
+@rinternals{unbreakable-spanner-interface}
+
+
+@knownissues
+
+連桁は他のボイスの中にある符頭や臨時記号と衝突する可能性があります。
+
+
+@node 自動連桁の振る舞いを設定する
+@unnumberedsubsubsec 自動連桁の振る舞いを設定する
+@translationof Setting automatic beam behavior
+
+
+@cindex automatic beams, tuning (自動連桁を調整する)
+@cindex tuning automatic beaming (自動連桁を調整する)
+@cindex automatic beam generation (自動連桁生成)
+@cindex autobeam (自動連桁)
+@cindex lyrics and beaming (歌詞と連桁)
+
+@funindex autoBeaming
+@funindex baseMoment
+@funindex beamExceptions
+@funindex beatStructure
+@funindex measureLength
+@funindex \time
+@funindex time
+@funindex \set
+@funindex set
+
+たいていの場合、自動連桁は拍の終わりで終了します。@c
+拍の終了点はコンテキスト プロパティ @code{baseMoment} と @code{beatStructure}
+によって決定されます。@c
+@code{beatStructure} は @code{baseMoment} を単位とする小節の各拍の長さを@c
+定義する Scheme リストです。@c
+デフォルトでは、@code{baseMoment} は「1/拍子の分母」です。@c
+デフォルトでは、各拍の長さは @code{baseMoment} です。
+
+@lilypond[quote,relative=2,verbatim]
+\time 5/16
+c16^"default" c c c c |
+\set Timing.beatStructure = #'(2 3)
+c16^"(2+3)" c c c c |
+\set Timing.beatStructure = #'(3 2)
+c16^"(3+2)" c c c c |
+@end lilypond
+
+連桁の設定変更をある特定のテキストに限定することができます。@c
+下位コンテキストに連桁の設定が含まれない場合、@c
+そのコンテキストを囲んでいる上位コンテキストの設定が適用されます。
+
+@lilypond[quote, verbatim,relative=1]
+\new Staff {
+ \time 7/8
+ \set Staff.beatStructure = #'(2 3 2)
+ <<
+ \new Voice = one {
+ \relative c'' {
+ a8 a a a a a a
+ }
+ }
+ \new Voice = two {
+ \relative c' {
+ \voiceTwo
+ \set Voice.beatStructure = #'(1 3 3)
+ f8 f f f f f f
+ }
+ }
+ >>
+}
+@end lilypond
+
+譜で複数のボイスが使用されている場合に@c
+連桁設定を譜のすべてのボイスに適用するには、@c
+@code{Staff} コンテキストで設定を行う必要があります:
+
+@c KEEP LY
+@lilypond[quote,verbatim,relative=2]
+\time 7/8
+% リズム 3-1-1-2
+% デフォルトで連桁設定の変更は Voice に適用され、うまくいきません
+% なぜなら、自動生成されるボイスで、すべての拍は baseMoment (1 . 8) だからです
+\set beatStructure = #'(3 1 1 2)
+<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
+
+% コンテキスト Staff を指定するとうまくいきます
+\set Staff.beatStructure = #'(3 1 1 2)
+<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
+@end lilypond
+
+@code{baseMoment} の値を調整することで、@c
+連桁の振る舞いを変更することができます。@c
+@code{baseMoment} の値を変更した場合、@c
+@code{beatStructure} に新しい @code{baseMoment} と矛盾しない値を@c
+設定する必要があります。
+
+@lilypond[quote,verbatim,relative=2]
+\time 5/8
+\set Timing.baseMoment = #(ly:make-moment 1 16)
+\set Timing.beatStructure = #'(7 3)
+\repeat unfold 10 { a16 }
+@end lilypond
+
+@code{beatLength} は @i{moment} -- 演奏時間の単位 -- です。@c
+タイプ @i{momento} の量は
+Scheme 関数 @code{ly:make-moment} によって作り出されます。@c
+この関数についての更なる情報は @ref{時間管理} を参照してください。
+
+デフォルトでは、@code{baseMoment} には「1/拍子の分母」がセットされています。@c
+このデフォルトの例外は @file{scm/time-signature-settings.scm} で見つかります。
+
+特殊な自動連桁規則 (連桁の終わりが拍に従わないもの) はプロパティ
+@code{beamExceptions} に定義します。
+
+@c 未訳
+@lilypond[quote,relative=2,verbatim]
+\time 3/16
+\set Timing.beatStructure = #'(2 1)
+\set Timing.beamExceptions =
+ #'( ;start of alist
+ (end . ;entry for end of beams
+ ( ;start of alist of end points
+ ((1 . 32) . (2 2 2)) ;rule for 1/32 beams -- end each 1/16
+ ))) %close all entries
+c16 c c |
+\repeat unfold 6 { c32 } |
+@end lilypond
+
+@code{beamExceptions} は規則タイプのキーと連桁規則の値を持つ配列リストです。
+
+現時点で、利用可能な唯一の規則タイプの値は、@c
+連桁の終わりのための @code{#'end} です。
+
+連桁規則は、連桁タイプとその連桁タイプの最短演奏時間の音符を保持する連桁に@c
+適用されるグループ化の仕方を示す Scheme 配列リスト (あるいはペアのリスト) です。
+
+@example
+#'((beam-type1 . grouping-1)
+ (beam-type2 . grouping-2)
+ (beam-type3 . grouping-3))
+@end example
+
+連桁タイプは、その連桁の演奏時間を示す Scheme ペアであり、@c
+例えば @code{(1 . 16)} です。
+
+@warning{@code{beamExceptions} の値は @emph{完全な} 例外リストである@c
+必要があります。@c
+つまり、その設定には適用されるべき例外がすべて含まれている必要があります。@c
+例外の 1 つだけを追加、削除、変更することはできません。@c
+このことは扱い難いように思えるかもしれませんが、@c
+新しい連桁パターンを指定する際に現在の連桁設定を知る必要がないということを@c
+意味します。}
+
+拍子が変更されると、@code{Timing.baseMoment}, @code{Timing.beatStructure},
+それに @code{Timing.beamExceptions} のデフォルト値が設定されます。@c
+拍子を設定すると、その @code{Timing} コンテキストの自動連桁設定は@c
+デフォルトの振る舞いにリセットされます。
+
+@c KEEP LY
+@lilypond[quote,verbatim,relative=2]
+\time 6/8
+\repeat unfold 6 { a8 }
+% (4 + 2) にグループ化します
+\set Timing.beatStructure = #'(4 2)
+\repeat unfold 6 { a8 }
+% デフォルトの振る舞いに戻ります
+\time 6/8
+\repeat unfold 6 { a8 }
+@end lilypond
+
+ある拍子のデフォルトの自動連桁設定は @file{scm/beam-settings.scm}
+の中で決定されます。@c
+ある拍子に対する自動連桁のデフォルト設定を変更する方法は
+@ref{拍子} で説明しています。
+
+ある拍子に対する自動連桁設定の多くには
+@code{beamExceptions} が登録されています。@c
+例えば、4/4 拍子は 16 分音符しかない小節を 2 つの連桁で囲もうとします。@c
+@code{beamExceptions} がリセットされていなければ、@c
+@code{beamExceptions} 規則は @code{beatStructure} 設定を@c
+オーバライドすることができます。
+
+@c KEEP LY
+@lilypond[quote,verbatim,relative=2]
+\time 4/4
+\set Timing.baseMoment = #(ly:make-moment 1 8)
+\set Timing.beatStructure = #'(3 3 2)
+% 以下は beamExceptions のため、(3 3 2) の連桁にはなりません
+\repeat unfold 8 {c8} |
+% 以下は beamExceptions をクリアするため、(3 3 2) の連桁になります
+\set Timing.beamExceptions = #'()
+\repeat unfold 8 {c8}
+@end lilypond
+
+同様に、デフォルトで 8 分音符のみの 3/4 拍子の小節は 1 つの連桁で囲まれます。@c
+3/4 拍子での 8分音符を拍毎に連桁で囲むには、@c
+@code{beamExceptions} をリセットします。
+
+@c KEEP LY
+@lilypond[quote,verbatim,relative=2]
+\time 3/4
+% デフォルトでは beamExceptions のため、(3) の連桁になります
+\repeat unfold 6 {a8} |
+% 以下は beatLength のため、(1 1 1) の連桁になります
+\set Timing.beamExceptions = #'()
+\repeat unfold 6 {a8}
+@end lilypond
+
+@i{@strong{自動連桁はどのように機能するのか}}
+
+自動連桁が有効である場合、自動連桁の配置はコンテキスト プロパティ
+@code{baseMoment}, @code{beatStructure}, それに @code{beamExceptions}
+によって決定されます。
+
+連桁の配置を決定する際、以下の規則が並び順の優先度で適用されます:
+
+@itemize
+
+@item @code{[..]} で手動連桁が指定されている場合、@c
+連桁は指定どおりに設定されます。@c
+手動連桁が指定されていない場合、
+
+@item
+その連桁タイプに対する @code{beamExceptions} に連桁終了規則が@c
+定義されている場合、@c
+その規則を用いて連桁を終了させる位置を決定します。@c
+連桁終了規則が定義されていない場合、
+
+@item
+もっと長い連桁タイプに対する @code{beamExceptions} に連桁終了規則が@c
+定義されている場合、@c
+その規則を用いて連桁を終了させる位置を決定します。@c
+連桁終了規則が定義されていない場合、
+
+@item
+@code{baseMoment} と @code{beatStructure} の値を用いて@c
+その小節での拍の終わりを決定し、@c
+拍の終わりで連桁を終了させます。
+
+@end itemize
+
+上記の規則で、連桁タイプは連桁でグループ化された音符の最短演奏時間です。
+
+参考として、@c
+デフォルトの連桁規則は @file{scm/time-signature-settings.scm} の中にあります。
+
+@snippets
+
+@cindex beams, subdividing (連桁をサブ グループ化する)
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{subdividing-beams.ly}
+
+@cindex measure groupings (小節をグループ化する)
+@cindex beats, grouping (拍をグループ化する)
+@cindex grouping beats (拍をグループ化する)
+@cindex measure sub-grouping (小節をサブ グループ化する)
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{conducting-signs,-measure-grouping-signs.ly}
+
+@cindex beam, last in score (楽譜の最後の連桁)
+@cindex beam, last in polyphonic voice (多声ボイスの最後の連桁)
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{beam-endings-in-score-context.ly}
+
+
+@seealso
+インストールされているファイル:
+@file{scm/beam-settings.scm}
+
+コード断片集:
+@rlsr{Rhythms}
+
+内部リファレンス:
+@rinternals{Auto_beam_engraver},
+@rinternals{Beam},
+@rinternals{BeamForbidEvent},
+@rinternals{beam-interface}
+
+
+@knownissues
+自動連桁が終了しておらず、まだ音符を受け付けている最中に楽譜が終了する場合、@c
+その最後の連桁はまったく譜刻されません。@c
+@code{<< @dots{} \\ @dots{} >>} で入力される多声ボイスでも同様です。@c
+自動連桁がまだ音符を受け付けている最中に多声ボイスが終了する場合、@c
+その最後の連桁はまったく譜刻されません。@c
+ボイスや楽譜の最後の連桁には手動で連桁を付けることにより、@c
+これらの問題を回避できます。
+
+
+@node 手動連桁
+@unnumberedsubsubsec 手動連桁
+@translationof Manual beams
+
+@cindex beams, manual (手動連桁)
+@cindex manual beams (手動連桁)
+
+@funindex ]
+@funindex [
+
+自動連桁アルゴリズムをオーバライドする必要がある場合もあります。@c
+例えば、自動連桁は休符や小節線を越えて連桁を配置することはなく、@c
+合唱譜では連桁はしばしば音符ではなく歌詞の韻律に従って配置されます。@c
+そのような連桁は @code{[} と @code{]} で開始点と終了点を記すことによって@c
+手動で指定することができます:
+
+@lilypond[quote,relative=1,verbatim]
+r4 r8[ g' a r] r g[ | a] r
+@end lilypond
+
+@cindex manual beams, direction shorthand for (手動連桁の向きを指定する短縮記譜法)
+@cindex manual beams, grace notes (装飾小音符の手動連桁)
+
+方向指示子を用いることで、連桁の向きを手動で設定することができます:
+
+@lilypond[quote,relative=2,verbatim]
+c8^[ d e] c,_[ d e f g]
+@end lilypond
+
+@funindex \noBeam
+@funindex noBeam
+
+連桁でつながれないようにするために、個々の音符には
+@code{\noBeam} が記されるかもしれません:
+
+@lilypond[quote,verbatim,relative=2]
+\time 2/4
+c8 c\noBeam c c
+@end lilypond
+
+装飾小音符の連桁と通常の音符の連桁は同時進行で発生します。@c
+通常の音符の連桁の途中に、連桁でつながれない装飾小音符は配置されません。
+
+@lilypond[quote,verbatim,relative=2]
+c4 d8[
+\grace { e32[ d c d] }
+e8] e[ e
+\grace { f16 }
+e8 e]
+@end lilypond
+
+@funindex stemLeftBeamCount
+@funindex stemRightBeamCount
+
+プロパティ @code{stemLeftBeamCount} と @code{stemRightBeamCount} を@c
+セットすることによって連桁をさらに厳密に手動制御することが可能です。@c
+これらの値はそれぞれ、次の音符の左側と右側に描く連桁の本数を指定します。@c
+どちらかのプロパティがセットされている場合、その値は 1 度だけ使用され、@c
+それから消去されます。@c
+以下の例では、最後の @code{f} は左側に連桁を 1 本だけ持って
+-- すなわち、グループ全体をつなげている 8 分音符の連桁を持って --
+譜刻されています。
+
+@lilypond[quote,relative=2,verbatim]
+a8[ r16 f g a]
+a8[ r16
+\set stemLeftBeamCount = #2
+\set stemRightBeamCount = #1
+f16
+\set stemLeftBeamCount = #1
+g16 a]
+@end lilypond
+
+
+@predefined
+@code{\noBeam}
+@endpredefined
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{flat-flags-and-beam-nibs.ly}
+
+
+@seealso
+記譜法リファレンス:
+@ref{Direction and placement},
+@ref{Grace notes}
+
+コード断片集:
+@rlsr{Rhythms}
+
+内部リファレンス:
+@rinternals{Beam},
+@rinternals{BeamEvent},
+@rinternals{Beam_engraver},
+@rinternals{beam-interface},
+@rinternals{Stem_engraver}
+
+
+@node 羽状の連桁
+@unnumberedsubsubsec 羽状の連桁
+@translationof Feathered beams
+
+@cindex beams, feathered (羽状の連桁)
+@cindex feathered beams (羽状の連桁)
+
+@funindex \featherDurations
+@funindex featherDurations
+@funindex grow-direction
+
+羽状の連桁は、楽曲全体のテンポを変えることなく、音符の小さなグループを@c
+テンポを上げながら (あるいは下げながら) 演奏すべきであることを示すために@c
+使用されます。@c
+羽状連桁の範囲は @code{[} と @code{]} を使って手動で指定する必要があり、@c
+連桁の羽は @code{Beam} のプロパティ @code{grow-direction} に向きを@c
+指定することによって調整することができます。
+
+音符の配置と MIDI 出力での音が羽状連桁によって指示された
+ritardando (徐々に緩やかに) や accelerando (次第に速く) を@c
+反映すべきであるのなら、@c
+音符は波括弧で区切られた音楽表記としてグループ化される必要があり、@c
+さらに、そのグループの最初の音符と最後の音符の演奏時間の比率を指定する
+@code{featheredDurations} コマンドを前に置く必要があります。
+
+角括弧は連桁の範囲を示し、@c
+波括弧は演奏時間を変更される音符はどれなのかを示します。@c
+通常これら 2 つは同じ音符のグループを囲みますが、@c
+同じであることは必須ではありません:
+2 つのコマンドは独立しています。
+
+以下の例では、8 つの 16 分音符は 2 分音符とまったく同じ時間を占めますが、@c
+最初の音符の長さは最後の音符の長さの半分であり、@c
+中間の音符は徐々に長くなります。@c
+最初の 4 つの 32 分音符は徐々にスピード アップしますが、@c
+最後の 4 つの 32 分音符は一定のテンポです。
+
+@lilypond[relative=1,verbatim,quote]
+\override Beam #'grow-direction = #LEFT
+\featherDurations #(ly:make-moment 2 1)
+{ c16[ c c c c c c c] }
+\override Beam #'grow-direction = #RIGHT
+\featherDurations #(ly:make-moment 2 3)
+{ c32[ d e f] }
+% revert to non-feathered beams
+\override Beam #'grow-direction = #'()
+{ g32[ a b c] }
+@end lilypond
+
+@noindent
+譜刻される音符の間隔は音符の演奏時間を近似的に表しているだけですが、@c
+MIDI 出力での演奏時間は正確です。
+
+
+@predefined
+@code{\featherDurations}
+@endpredefined
+
+@seealso
+コード断片集:
+@rlsr{Rhythms}
+
+
+@knownissues
+
+@code{\featherDurations} は非常に短い音楽コード断片に対してだけ、@c
+そして分数の数が小さいときにだけ機能します。
+
+
+@seealso
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+
+@node 小節
+@subsection 小節
+@translationof Bars
+
+@menu
+* 小節線::
+* 小節番号::
+* 小節と小節番号のチェック::
+* リハーサル記号::
+@end menu
+
+
+@node 小節線
+@unnumberedsubsubsec 小節線
+@translationof Bar lines
+
+@cindex bar lines (小節線)
+@cindex measure lines (小節線)
+@cindex closing bar lines (閉じの小節線)
+@cindex bar lines, closing (閉じの小節線)
+@cindex double bar lines (2 重小節線)
+@cindex bar lines, double (2 重小節線)
+@cindex repeat bars (繰り返しの小節線)
+
+@funindex \bar
+@funindex bar
+
+小節線は小節を区切り、繰り返しを示すためにも使用されます。@c
+通常、単線の小節線が拍子に基づいて出力に自動的に挿入されます。
+
+自動的に挿入される単線の小節線は
+@code{\bar} コマンドで他のタイプに変更することができます。@c
+例えば、通常、2 重線の閉じの小節線が楽曲の最後に配置されます:
+
+@lilypond[quote,relative=1,verbatim]
+e4 d c2 \bar "|."
+@end lilypond
+
+ある小節の最後の音符が、自動的に挿入される小節線の所で終わっていなくても@c
+無効ではありません:
+その音符は次の小節に持ち越されるものと見なされます。@c
+しかしながら、そのような持ち越しのある小節がいくつも続く場合、@c
+その音楽は圧縮されて表示される可能性があり、@c
+ページからはみ出す可能性さえあります。@c
+これは、自動改行は完全な小節
+-- つまり、小節の終端ですべての音符が終わっている小節 --
+の終わりでのみ発生するからです。
+
+@warning{誤った演奏時間の指定は改行を抑制し、結果として@c
+非常に圧縮された楽譜やページからはみ出す楽譜の原因となります。}
+
+@cindex line breaks (改行)
+@cindex bar lines, invisible (不可視の小節線)
+@cindex measure lines, invisible (不可視の小節線)
+
+手動で挿入された小節線のところでも
+-- たとえ、その小節が不完全であっても --
+改行することができます。@c
+小節線を譜刻せずに改行を可能にするには、以下を使用します:
+
+@example
+\bar ""
+@end example
+
+@noindent
+これは不可視の小節線を挿入し、@c
+そこで改行が発生することを可能にします (強制はしません)。@c
+小節番号カウンタは増加しません。@c
+強制的に改行を行うには、@ref{Line breaking} を参照してください。
+
+@cindex manual bar lines (手動の小節線)
+@cindex manual measure lines (手動の小節線)
+@cindex bar lines, manual (手動の小節線)
+@cindex measure lines, manual (手動の小節線)
+
+不可視の小節線と他の特殊な小節線は任意の位置に手動で挿入することができます。@c
+それらの小節線の位置がある小節の終わりと一致する場合、@c
+それらの小節線はそこに自動で挿入されるはずだった単線の小節線に@c
+取って代わります。@c
+小節の終わりと一致しない場合、指定された小節線がその位置に挿入されます。@c
+
+手動の小節線は純粋に視覚的なものです。@c
+それらは通常の小節線が影響を与えるプロパティ
+-- 小節番号、臨時記号、改行など --
+には何の影響も与えません。@c
+手動の小節線はその後に続く自動小節線の算出や配置に影響を与えません。@c
+自動小節線がすでに存在する場所に手動小節線が配置されても、@c
+自動小節線の効果は変更されません。
+
+手動で挿入できる小節線として、単線の小節線は 2 種類あり、@c
+2 重線の小節線は 5 種類あります:
+
+@lilypond[quote,relative=1,verbatim]
+f1 \bar "|"
+f1 \bar "."
+g1 \bar "||"
+a1 \bar ".|"
+b1 \bar ".|."
+c1 \bar "|.|"
+d1 \bar "|."
+e1
+@end lilypond
+
+@noindent
+さらに、点線と破線の小節線があります:
+
+@lilypond[quote,relative=1,verbatim]
+f1 \bar ":"
+g1 \bar "dashed"
+a1
+@end lilypond
+
+@noindent
+さらに、繰り返しの小節線が 5 種類あります:
+
+@lilypond[quote,relative=1,verbatim]
+f1 \bar "|:"
+g1 \bar ":|:"
+a1 \bar ":|.|:"
+b1 \bar ":|.:"
+c1 \bar ":|"
+e1
+@end lilypond
+
+@c 未訳
+Additionally, a bar line can be printed as a simple tick:
+@lilypond[quote,relative=1,verbatim]
+f1 \bar "'"
+@end lilypond
+However, as such ticks are typically used in Gregorian chant, it is preferable
+to use @code{\divisioMinima} there instead, described in the section
+@ref{Divisiones} in Gregorian chant.
+
+@cindex segno (セーニョ)
+
+行内のセーニョ記号として、3 タイプの小節線があり、@c
+改行での振る舞いがそれぞれ異なります:
+
+@lilypond[quote,relative=2,verbatim]
+c4 c c c
+\bar "S"
+c4 c c c \break
+\bar "S"
+c4 c c c
+\bar "|S"
+c4 c c c \break
+\bar "|S"
+c4 c c c
+\bar "S|"
+c4 c c c \break
+\bar "S|"
+c1
+@end lilypond
+
+@cindex repeats (繰り返し)
+
+繰り返しを表す小節線は手動で挿入される場合がありますが、@c
+それらの小節線自体は LilyPond に繰り返されるセクションを@c
+認識させることはしません。@c
+そのような繰り返されるセクションは@c
+さまざまな繰り返しのコマンドを使って入力した方が良いです
+(@ref{Repeats} を参照してください)。@c
+繰り返しのコマンドは自動的に適切な小節線を譜刻します。
+
+さらに、@code{"||:"} を使用することができます。@c
+これは @code{"|:"} と等価ですが、例外として改行位置では、@c
+この小節線は行の終わりに 2 重線の小節線を置き、@c
+次の行の始めに繰り返し開始の小節線を置きます。
+
+@lilypond[quote,relative=2,verbatim]
+c4 c c c
+\bar "||:"
+c4 c c c \break
+\bar "||:"
+c4 c c c
+@end lilypond
+
+繰り返しとセーニョ記号の組み合わせは 6 種類あります:
+
+@lilypond[quote,relative=2,verbatim]
+c4 c c c
+\bar ":|S"
+c4 c c c \break
+\bar ":|S"
+c4 c c c
+\bar ":|S."
+c4 c c c \break
+\bar ":|S."
+c4 c c c
+\bar "S|:"
+c4 c c c \break
+\bar "S|:"
+c4 c c c
+\bar ".S|:"
+c4 c c c \break
+\bar ".S|:"
+c4 c c c
+\bar ":|S|:"
+c4 c c c \break
+\bar ":|S|:"
+c4 c c c
+\bar ":|S.|:"
+c4 c c c \break
+\bar ":|S.|:"
+c1
+@end lilypond
+
+
+多くの譜を持つ楽譜では、ある譜の @code{\bar} コマンドは@c
+自動的にすべての譜に適用されます。@c
+結果として、@code{StaffGroup}, @code{PianoStaff}, あるいは
+@code{GrandStaff} では、小節線は譜をまたがって 1 本に接続されます。
+
+@lilypond[quote,relative=1,verbatim]
+<<
+ \new StaffGroup <<
+ \new Staff {
+ e4 d
+ \bar "||"
+ f4 e
+ }
+ \new Staff { \clef bass c4 g e g }
+ >>
+ \new Staff { \clef bass c2 c2 }
+>>
+@end lilypond
+
+
+@cindex default bar lines, changing (デフォルトの小節線を変更する)
+@cindex bar lines, default, changing (デフォルトの小節線を変更する)
+
+@snippets
+
+@funindex whichBar
+@funindex defaultBarType
+@funindex \bar
+@funindex bar
+@funindex bartype
+
+コマンド @code{\bar }@var{bartype} は
+@samp{\set Timing.whichBar = @var{bartype}} の短縮記法です。@c
+@code{whichBar} プロパティがセットされるといつでも小節線が作成されます。
+
+自動的に挿入される小節線に使用されるデフォルトの@c
+小節線タイプは @code{"|"} です。@c
+これは @samp{\set Timing.defaultBarType = @var{bartype}} でいつでも@c
+変更することができます。
+
+
+@seealso
+記譜法リファレンス:
+@ref{Line breaking},
+@ref{Repeats},
+@ref{Grouping staves}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{BarLine} (@rinternals{Staff} の階層で作成されます),
+@rinternals{SpanBar} (譜をまたぎます),
+@rinternals{Timing_translator} (@code{Timing} プロパティ用です)
+
+
+@node 小節番号
+@unnumberedsubsubsec 小節番号
+@translationof Bar numbers
+
+@cindex bar numbers (小節番号)
+@cindex measure numbers (小節番号)
+@cindex numbers, bar (小節番号)
+@cindex numbers, measure (小節番号)
+
+@funindex currentBarNumber
+
+小節番号は、デフォルトでは、最初の行を除く各行の開始点で譜刻されます。@c
+番号自体は @code{currentBarNumber} プロパティに保存されていて、@c
+通常は各小節で自動的に更新されます。@c
+小節番号を手動で設定することも可能です:
+
+@lilypond[verbatim,quote,fragment,relative=1]
+c1 c c c
+\break
+\set Score.currentBarNumber = #50
+c1 c c c
+@end lilypond
+
+@cindex bar numbers, regular spacing 規則的な間隔で小節番号を譜刻する
+
+@funindex barNumberVisibility
+@funindex BarNumber
+
+小節番号は、各行の開始点に配置する代わりに、規則的な間隔で@c
+譜刻することができます。@c
+このようにするには、小節番号を行の開始点以外の位置に譜刻できるよう、@c
+デフォルトの振る舞いをオーバライドする必要があります。@c
+これは @code{BarNumber} の @code{break-visibility} プロパティによって@c
+制御されます。@c
+これは 3 つの値をとります
+-- 3 つの値は、対応する小節番号を可視にするかしないかを指定するために、@c
+@code{#t} または @code{#f} にセットされます。@c
+3 つの値の順番は、@code{end of line visible},
+@code{middle of line visible}, @code{beginning of line visible}
+(行の終了点での可視性、行の途中での可視性、行の開始点での可視性) です。@c
+以下の例では、譜刻可能な場所すべてに小節番号を譜刻しています:
+
+@lilypond[verbatim,quote,relative=1]
+\override Score.BarNumber #'break-visibility = #'#(#t #t #t)
+\set Score.currentBarNumber = #11
+% Permit first bar number to be printed
+\bar ""
+c1 | c | c | c
+\break
+c1 | c | c | c
+@end lilypond
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{printing-the-bar-number-for-the-first-measure.ly}
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{printing-bar-numbers-at-regular-intervals.ly}
+
+@cindex measure number, format
+@cindex bar number, format
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{printing-bar-numbers-inside-boxes-or-circles.ly}
+
+@cindex bar number alignment
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{aligning-bar-numbers.ly}
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{removing-bar-numbers-from-a-score.ly}
+
+
+@seealso
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{BarNumber},
+@rinternals{Bar_number_engraver}
+
+
+@cindex bar number collision (小節番号の衝突)
+@cindex collision, bar number (小節番号の衝突)
+
+@knownissues
+小節番号は @code{StaffGroup} の左括弧の上端と衝突する可能性があります。@c
+これを解決するには、@code{BarNumber} の @code{padding} プロパティを@c
+使って小節番号を適切な位置に配置します。@c
+詳細は @rinternals{StaffGroup} と @rinternals{BarNumber} を参照してください。
+
+
+@node 小節と小節番号のチェック
+@unnumberedsubsubsec 小節と小節番号のチェック
+@translationof Bar and bar number checks
+
+@cindex bar check (小節チェック)
+@cindex bar number check (小節番号チェック)
+@cindex measure check (小節チェック)
+@cindex measure number check (小節番号チェック)
+
+@funindex barCheckSynchronize
+@funindex |
+
+小節チェックは入力された演奏時間の誤りを検出する手助けをします。@c
+小節チェックは、小節線が書き込まれると予想される場所ならどこにでも、@c
+小節記号 @code{|} を使うことで挿入できます。@c
+他の場所で小節チェックの線に遭遇した場合、警告のリストがログ ファイルに@c
+書き込まれ、小節チェックに失敗した行番号と行を示します。@c
+次の例では、2 番目の小節チェックがエラーを発します。
+
+@example
+\time 3/4 c2 e4 | g2 |
+@end example
+
+歌詞でも小節チェックを使用することができます。@c
+以下に例を挙げます:
+
+@example
+\lyricmode @{
+ \time 2/4
+ Twin -- kle | Twin -- kle |
+@}
+@end example
+
+正しくない演奏時間は滅茶苦茶な楽譜を生成する可能性があります
+-- 特にその楽譜が多声である場合はそうなる可能性があります。@c
+入力を修正するには、@c
+まずざっと見て失敗した小節チェックと演奏時間の誤りを探すと良いでしょう。
+
+連続する小節チェックは同じ音楽的間隔で off になり、@c
+最初の警告メッセージだけが表示されます。@c
+これにより、警告の焦点がタイミング エラーの発生源に絞られます。
+
+
+@funindex |
+@funindex pipeSymbol
+
+入力の中で小節チェックあるいはパイプ記号 @code{|} に遭遇した場合にとられる@c
+アクションを再定義することも可能です。@c
+これにより、小節チェック以外のことを行うことができます。@c
+再定義は音楽表記を @code{pipeSymbol} に代入することによって行います。@c
+以下の例では、@code{|} は小節の終わりをチェックするのではなく、@c
+それが現れた場所に 2 重線の小節線を挿入するようセットされています。
+
+@lilypond[quote,verbatim]
+pipeSymbol = \bar "||"
+{
+ c'2 c' |
+ c'2 c'
+ c'2 | c'
+ c'2 c'
+}
+@end lilypond
+
+@funindex \barNumberCheck
+@funindex barNumberCheck
+
+大きな楽曲をコピーしている場合、LilyPond の小節番号と@c
+コピー元のオリジナルの小節番号の対応をチェックすると役に立ちます。@c
+この対応は @code{\barNumberCheck} によってチェックすることができます。@c
+例えば、
+
+@verbatim
+\barNumberCheck #123
+@end verbatim
+
+@noindent
+を使用すると、@code{currentBarNumber} が処理された時に 123 でなければ、@c
+警告が表示されます。
+
+
+@seealso
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+
+@node リハーサル記号
+@unnumberedsubsubsec リハーサル記号
+@translationof Rehearsal marks
+
+@cindex rehearsal marks (リハーサル記号)
+@cindex mark, rehearsal (リハーサル記号)
+
+@funindex \mark
+@funindex mark
+
+リハーサル記号を譜刻するには、@code{\mark} コマンドを使用します:
+
+@lilypond[quote,verbatim,relative=2]
+c1 \mark \default
+c1 \mark \default
+c1 \mark \default
+c1 \mark \default
+@end lilypond
+
+@noindent
+@code{\mark \default} を使用するとリハーサル記号は自動的に +1 されますが、@c
+手動で整数をリハーサル記号にセットすることもできます。@c
+セットした値は @code{rehearsalMark} に保存されます。
+
+@lilypond[quote,verbatim,relative=2]
+c1 \mark \default
+c1 \mark \default
+c1 \mark #8
+c1 \mark \default
+c1 \mark \default
+@end lilypond
+
+@noindent
+文字@tie{}@q{I} は、譜刻の慣習に従って、スキップされます。@c
+文字@tie{}@q{I} を含めたければ、@c
+リハーサル記号のスタイル (文字のみ、四角で囲まれた文字、丸で囲まれた文字)
+に合わせて以下のコマンドの 1 つを使用します:
+
+@example
+\set Score.markFormatter = #format-mark-alphabet
+\set Score.markFormatter = #format-mark-box-alphabet
+\set Score.markFormatter = #format-mark-circle-alphabet
+@end example
+
+@lilypond[quote,verbatim,relative=2]
+\set Score.markFormatter = #format-mark-box-alphabet
+c1 \mark \default
+c1 \mark \default
+c1 \mark #8
+c1 \mark \default
+c1 \mark \default
+@end lilypond
+
+@cindex rehearsal mark format (リハーサル記号のフォーマット)
+@cindex rehearsal mark style (リハーサル記号のスタイル)
+@cindex style, rehearsal mark (リハーサル記号のスタイル)
+@cindex format, rehearsal mark (リハーサル記号のフォーマット)
+@cindex mark, rehearsal, style (リハーサル記号のスタイル)
+@cindex mark, rehearsal, format (リハーサル記号のフォーマット)
+@cindex rehearsal mark, manual (手動でリハーサル記号をセットする)
+@cindex mark, rehearsal, manual (手動でリハーサル記号をセットする)
+@cindex custom rehearsal mark (リハーサル記号のカスタム)
+@cindex manual rehearsal mark (手動のリハーサル記号)
+
+スタイルはプロパティ @code{markFormatter} によって定義されます。@c
+これは引数としてカレントの記号 (整数) とカレントのコンテキストをとる関数です。@c
+この関数はマークアップ オブジェクトを返します。@c
+以下の例では、@code{markFormatter} には定義済みの手続きがセットされています。@c
+数小節後では、四角で囲まれた番号を作り出す手続きがセットされています。
+
+@lilypond[quote,verbatim,relative=2]
+\set Score.markFormatter = #format-mark-numbers
+c1 \mark \default
+c1 \mark \default
+\set Score.markFormatter = #format-mark-box-numbers
+c1 \mark \default
+\set Score.markFormatter = #format-mark-circle-numbers
+c1 \mark \default
+\set Score.markFormatter = #format-mark-circle-letters
+c1
+@end lilypond
+
+ファイル @file{scm/translation-functions.scm} は
+@code{format-mark-numbers} (デフォルトのフォーマット),
+@code{format-mark-box-numbers}, @code{format-mark-letters} それに
+@code{format-mark-box-letters} の定義を保持しています。@c
+これらを参考にして他のフォーマット関数を作り出すこともできます。
+
+加算された数字や文字の代わりに小節番号を取得するために
+@code{format-mark-barnumbers}, @code{format-mark-box-barnumbers}, それに
+@code{format-mark-circle-barnumbers} を使うことがあります。
+
+リハーサル記号の他のスタイルを手動で指定することができます:
+
+@example
+\mark "A1"
+@end example
+
+@noindent
+@code{Score.markFormatter} はこの方法で指定された記号に影響を与えません。@c
+しかしながら、文字列として @code{\markup} 使用することができます。
+
+@example
+\mark \markup@{ \box A1 @}
+@end example
+
+@cindex segno (セーニョ)
+@cindex coda (コーダ)
+@cindex D.S al Fine (ここで曲の先頭に戻り、Fine で終わる)
+@cindex fermata (フェルマータ)
+@cindex music glyphs (音楽的図柄)
+@cindex glyphs, music (音楽的図柄)
+
+@funindex \musicglyph
+@funindex musicglyph
+
+音楽的図柄 (セーニョ記号など) を @code{\mark} の中に譜刻することができます:
+
+@lilypond[quote,verbatim,relative=1]
+c1 \mark \markup { \musicglyph #"scripts.segno" }
+c1 \mark \markup { \musicglyph #"scripts.coda" }
+c1 \mark \markup { \musicglyph #"scripts.ufermata" }
+c1
+@end lilypond
+
+@noindent
+@code{\musicglyph} を使用して譜刻できる記号のリストは、@c
+@ref{The Feta font} を参照してください。
+
+リハーサル記号の配置の一般的な調整については、@c
+@ref{Formatting text} を参照してください。@c
+更に細かな制御を行う場合は、@c
+@ref{Aligning objects} の @code{break-alignable-interface} を参照してください。
+
+
+@seealso
+記譜法リファレンス:
+@ref{The Feta font},
+@ref{Formatting text},
+@ref{Aligning objects}
+
+インストールされているファイル:
+@file{scm/translation-functions.scm} は @code{format-mark-numbers} と
+@code{format-mark-letters} の定義を保持しています。@c
+ここにある定義を参考にして他のフォーマット関数を作り出すことができます。
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{MarkEvent},
+@rinternals{Mark_engraver},
+@rinternals{RehearsalMark}
+
+
+@node 特殊なリズム関連事項
+@subsection 特殊なリズム関連事項
+@translationof Special rhythmic concerns
+
+
+@menu
+* 装飾小音符::
+* カデンツァに揃える::
+* 時間管理::
+@end menu
+
+@node 装飾小音符
+@unnumberedsubsubsec 装飾小音符
+@translationof Grace notes
+
+@cindex ornaments (装飾音)
+@cindex grace notes (装飾小音符)
+@cindex appoggiatura (アッポジャトゥーラ)
+@cindex acciaccatura (アッチャカトゥーラ)
+
+@funindex \grace
+@funindex grace
+
+装飾小音符は楽譜に書き出される装飾音です。@c
+装飾小音符は小さなフォントで譜刻され、@c
+小節の中では論理的な時間を持ちません。
+
+@lilypond[quote,relative=2,verbatim]
+c4 \grace c16 c4
+\grace { c16[ d16] } c2
+@end lilypond
+
+Lilypond はさらに 2 つ特殊なタイプの装飾小音符をサポートします:
+@emph{acciaccatura} (長さを持たない装飾小音符で、@c
+スラッシュ付きの符幹を持つスラーでつなげられる小さな音符) と
+@emph{appoggiatura} (一定の比率で主音符から演奏時間をとり、@c
+スラッシュを持たない小さな音符で譜刻されます) です。
+
+@lilypond[quote,relative=2,verbatim]
+\grace c8 b4
+\acciaccatura d8 c4
+\appoggiatura e8 d4
+\acciaccatura { g16[ f] } e4
+@end lilypond
+
+装飾小音符の配置は他の譜と同期されます。@c
+以下の例では、8 分の装飾小音符 1 つに対して 2 つの 16 分装飾小音符が@c
+割り当てられています:
+
+@lilypond[quote,relative=2,verbatim]
+<<
+ \new Staff { e2 \grace { c16[ d e f] } e2 }
+ \new Staff { c2 \grace { g8[ b] } c2 }
+>>
+@end lilypond
+
+@cindex grace notes, following (装飾小音符を後ろに配置する)
+
+@funindex \afterGrace
+@funindex afterGrace
+
+装飾小音符で記譜を終えたいのならば、@c
+@code{\afterGrace} コマンドを使用します。@c
+このコマンドは 2 つの引数をとります:
+主音符と主音符の後に続く装飾小音符です。
+
+@lilypond[quote,verbatim,relative=2]
+c1 \afterGrace d1 { c16[ d] } c1
+@end lilypond
+
+これは主音符の長さの 3/4 のスペースをとった後に@c
+装飾小音符を配置しています。@c
+デフォルトの分数 3/4 は @code{afterGraceFraction} を設定することにより@c
+変更することができます。@c
+以下の例では、スペースをデフォルト、主音符の 15/16、最後は 1/2 に@c
+設定した結果を示しています。
+
+@lilypond[quote,verbatim,relative=2]
+<<
+ \new Staff {
+ c1 \afterGrace d1 { c16[ d] } c1
+ }
+ \new Staff {
+ #(define afterGraceFraction (cons 15 16))
+ c1 \afterGrace d1 { c16[ d] } c1
+ }
+ \new Staff {
+ #(define afterGraceFraction (cons 1 2))
+ c1 \afterGrace d1 { c16[ d] } c1
+ }
+>>
+@end lilypond
+
+主音符と装飾小音符の間のスペースは空白音符を使って@c
+指定することもできます。@c
+以下の例では、主音符の長さの 7/8 のスペースをとった後に装飾小音符を@c
+配置しています。
+
+@lilypond[quote,verbatim,relative=2]
+\new Voice {
+ <<
+ { d1^\trill_( }
+ { s2 s4. \grace { c16[ d] } }
+ >>
+ c1)
+}
+@end lilypond
+
+@cindex tweaking grace notes (装飾小音符を調整する)
+@cindex grace notes, tweaking (装飾小音符を調整する)
+@cindex grace notes, changing layout settings (装飾小音符のレイアウト設定を変更する)
+
+@code{\grace} 音楽表記は特殊な譜刻設定を導入します
+-- 例えば、小さなフォントを作り出し、向きを設定するためです。@c
+それゆえ、装飾小音符の特殊な設定をオーバライドするために@c
+レイアウトの調整を行う場合、@c
+調整は装飾小音符の表記の中に置くべきです。@c
+さらに、そのオーバライドは装飾小音符の表記の中で元に戻しておくべきです。@c
+以下の例では、装飾小音符の符幹のデフォルトの向きがオーバライドされ、@c
+それから元に戻されています。
+
+@lilypond[quote,verbatim,relative=2]
+\new Voice {
+ \acciaccatura {
+ \stemDown
+ f16->
+ \stemNeutral
+ }
+ g4 e c2
+}
+@end lilypond
+
+
+@cindex stem, with slash (スラッシュ付きの符幹)
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{using-grace-note-slashes-with-normal-heads.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{tweaking-grace-layout-within-music.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{redefining-grace-note-global-defaults.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{positioning-grace-notes-with-floating-space.ly}
+
+
+@seealso
+音楽用語集:
+@rglos{grace notes},
+@rglos{acciaccatura},
+@rglos{appoggiatura}
+
+記譜法リファレンス:
+@ref{手動連桁}
+
+インストールされているファイル:
+@file{ly/grace-init@/.ly}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{GraceMusic},
+@rinternals{Grace_beam_engraver},
+@rinternals{Grace_engraver},
+@rinternals{Grace_spacing_engraver}
+
+
+@knownissues
+
+@cindex acciaccatura, multi-note (複数音符のアッチャカトゥーラ)
+@cindex multi-note acciaccatura (複数音符のアッチャカトゥーラ)
+@cindex grace-note synchronization (装飾小音符の同期)
+
+複数の音符を連桁でつないだ @i{アッチャカトゥーラ} には@c
+スラッシュは付けられず、@c
+複数の音符を連桁でつないだ @i{アッポジャトゥーラ} と@c
+まったく同じに見えます。
+
+@c TODO Add link to LSR snippet to add slash when available
+
+装飾小音符の同期は予期しない結果を引き起こす可能性があります。@c
+譜の記譜要素 -- 拍子、小節線など -- も同期をとられます。@c
+装飾小音符を持つ譜と持たない譜を混在させる場合は気をつけて下さい。@c
+例えば:
+
+@lilypond[quote,relative=2,verbatim]
+<<
+ \new Staff { e4 \bar "|:" \grace c16 d2. }
+ \new Staff { c4 \bar "|:" d2. }
+>>
+@end lilypond
+
+@noindent
+これは、他の譜にある装飾小音符の演奏時間に対応した空白の@c
+装飾小音符を挿入することによって修正することができます。@c
+上の例を以下のように修正します:
+
+@lilypond[quote,relative=2,verbatim]
+<<
+ \new Staff { e4 \bar "|:" \grace c16 d2. }
+ \new Staff { c4 \bar "|:" \grace s16 d2. }
+>>
+@end lilypond
+
+装飾小音符セクションはシーケンシャルな音楽表記の中でのみ使用すべきです。@c
+装飾小音符セクションのネスト、並置はサポートされておらず、@c
+クラッシュや他のエラーを引き起こすかもしれません。
+
+
+@node カデンツァに揃える
+@unnumberedsubsubsec カデンツァに揃える
+@translationof Aligning to cadenzas
+
+@cindex cadenza (カデンツァ)
+@cindex cadenza, aligning to (カデンツァに揃える)
+@cindex aligning to cadenza (カデンツァに揃える)
+
+オーケストラのコンテキストにおいて、カデンツァは特殊な問題を提起します:
+楽譜の構成に演奏時間を持つカデンツァや他のソロ パッセージが含まれる場合、@c
+他のすべての楽器は、そのカデンツァの演奏時間の分だけ@c
+スキップする必要があります。@c
+さもなければ、他の楽器はカデンツァの終わりよりも早すぎる
+(あるいは遅すぎる) タイミングで始まってしまいます。
+
+この問題の解決方法の一つは、関数 @code{mmrest-of-length} と
+@code{skip-of-length} を使用することです。@c
+これらの Scheme 関数は、引数として定義済みの音楽表記をとり、@c
+その音楽表記と同じ長さの複数小節休符または @code{\skip} を生成します。
+
+@lilypond[verbatim,quote]
+MyCadenza = \relative c' {
+ c4 d8 e f g g4
+ f2 g4 g
+}
+
+\new GrandStaff <<
+ \new Staff {
+ \MyCadenza c'1
+ \MyCadenza c'1
+ }
+ \new Staff {
+ #(ly:export (mmrest-of-length MyCadenza))
+ c'1
+ #(ly:export (skip-of-length MyCadenza))
+ c'1
+ }
+>>
+@end lilypond
+
+
+@seealso
+音楽用語集:
+@rglos{cadenza}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+
+@c ここから L3219
+@node 時間管理
+@unnumberedsubsubsec 時間管理
+@translationof Time administration
+
+@cindex time administration (時間管理)
+@cindex timing (within the score) ((楽譜内での) タイミング)
+@cindex music, unmetered (無韻律の音楽)
+@cindex unmetered music (無韻律の音楽)
+
+@funindex currentBarNumber
+@funindex measurePosition
+@funindex measureLength
+
+時間は @code{Timing_translator}
+-- これは、デフォルトでは、@code{Socre} コンテキストの中にあります --
+によって管理されます。@c
+エイリアス @code{Timing} は @code{Timing_translator} が配置されている@c
+コンテキストに付け加えられます。
+エイリアス @code{Timing} が利用可能であることを保証するため、@c
+コンテキスト (@code{Voice} や @code{Staff} など) を明示的にインスタンス化@c
+する必要があるかもしれません。
+
+以下の @code{Timing} のプロパティは、@c
+楽譜内でのタイミングの経過を追うために使用されます。
+
+@cindex bar number (小節番号)
+@cindex measure number (小節番号)
+
+@table @code
+@item currentBarNumber
+カレントの小節番号。@c
+このプロパティの使用例は、@ref{小節番号} を参照してください。
+
+@item measureLength
+カレントの拍子での小節の長さ。@c
+4/4 拍子では 1 であり、6/8 拍子では 3/4 です。@c
+この値は小節線を挿入するタイミングと自動連桁の生成の仕方を決定します。
+
+@item measurePosition
+カレントで処理している小節内での位置。@c
+この値は、@code{measureLength} に到達するか超過したときに、@c
+この値から @code{measureLength} を減算されることによって、リセットされます。@c
+リセットが起こるときに、@code{currentBarNumber} が +1 されます。
+
+@item timing
+真にセットされている場合、各タイム ステップごとに上記の変数は更新されます。@c
+偽にセットされている場合、エングラーバはカレントの小節に永久に留まります。
+
+@end table
+
+タイミングは、上記の値のいずれかを明示的に設定することによって、@c
+変更することができます。@c
+次の例では、デフォルトの 4/4 拍子が譜刻されていますが、@c
+@code{measureLength} は 5/4 にセットされています。@c
+第 3 小節の 4/8 の位置で、@code{measurePositoin} は 1/8 進められて
+5/8 になり、それによりその小節は 1/8 短くされます。@c
+次の小節線は 5/4 ではなく 9/8 の位置で引かれます。
+
+@lilypond[quote,verbatim]
+\new Voice \relative c' {
+ \set Timing.measureLength = #(ly:make-moment 5 4)
+ c1 c4 |
+ c1 c4 |
+ c4 c
+ \set Timing.measurePosition = #(ly:make-moment 5 8)
+ b4 b b8 |
+ c4 c1 |
+}
+@end lilypond
+
+@noindent
+この例が示すように、@code{ly:make-moment n m} は全音符の n/m の長さの@c
+演奏時間を構成します。@c
+例えば、@code{ly:make-moment 1 8} は 1 個の 8 分音符の演奏時間であり、@c
+@code{ly:make-moment 7 16} は 7 個の 16 分音符の演奏時間です。
+
+
+@seealso
+記譜法リファレンス:
+@ref{小節番号},
+@ref{無韻律の音楽}
+
+コード断片集:
+@rlsrnamed{Rhythms,リズム}
+
+内部リファレンス:
+@rinternals{Timing_translator},
+@rinternals{Score}
@translationof Normal usage
たいていのユーザは GUI から LilyPond を実行します。@c
-まだ実行したことがないのであれば @rlearning{Tutorial} を読んでください。
+まだ実行したことがないのであれば @rlearning{チュートリアル} を読んでください。
lilypond ファイルを書くのに代替のエディタを使用するのであれば、@c
そのエディタのドキュメントを読んでください。
@end table
+@c 未訳
@node LilyPond in chroot jail
@unnumberedsubsec LilyPond in chroot jail
-@untranslated
+Setting up the server to run LilyPond in a chroot jail is a complicated
+task. The steps are listed below. Examples in the steps are from
+Ubuntu Linux, and may require the use of @code{sudo} as appropriate.
+
+@itemize
+
+@item Install the necessary packages: LilyPond, GhostScript, and ImageMagick.
+
+@item Create a new user by the name of @code{lily}:
+
+@example
+adduser lily
+@end example
+
+@noindent
+This will create a new group for the @code{lily} user as well, and a home folder,
+@code{/home/lily}
+
+@item In the home folder of the @code{lily} user create a file to use as a
+separate filesystem:
+
+@example
+dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
+@end example
+
+@noindent
+This example creates a 200MB file for use as the jail filesystem.
+
+@item Create a loop device, make a file system and mount it, then create
+a folder that can be written by the @code{lily} user:
+
+@example
+mkdir /mnt/lilyloop
+losetup /dev/loop0 /home/lily/loopfile
+mkfs -t ext3 /dev/loop0 200000
+mount -t ext3 /dev/loop0 /mnt/lilyloop
+mkdir /mnt/lilyloop/lilyhome
+chown lily /mnt/lilyloop/lilyhome
+@end example
+
+@item In the configuration of the servers, the JAIL will be @code{/mnt/lilyloop}
+and the DIR will be @code{/lilyhome}.
+
+@item Create a big directory tree in the jail by copying the necessary files, as
+shown in the sample script below.
+
+You can use @code{sed} to create the necessary copy commands for a given
+executable:
+
+@example
+for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; \
+ do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& \
+ cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \
+ \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done
+@end example
+
+@end itemize
+
+@subheading Example script for 32-bit Ubuntu 8.04
+
+@example
+#!/bin/sh
+## defaults set here
+
+username=lily
+home=/home
+loopdevice=/dev/loop0
+jaildir=/mnt/lilyloop
+# the prefix (without the leading slash!)
+lilyprefix=usr/local
+# the directory where lilypond is installed on the system
+lilydir=/$lilyprefix/lilypond/
+
+userhome=$home/$username
+loopfile=$userhome/loopfile
+adduser $username
+dd if=/dev/zero of=$loopfile bs=1k count=200000
+mkdir $jaildir
+losetup $loopdevice $loopfile
+mkfs -t ext3 $loopdevice 200000
+mount -t ext3 $loopdevice $jaildir
+mkdir $jaildir/lilyhome
+chown $username $jaildir/lilyhome
+cd $jaildir
+
+mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp
+chmod a+w tmp
+
+cp -r -L $lilydir $lilyprefix
+cp -L /bin/sh /bin/rm bin
+cp -L /usr/bin/convert /usr/bin/gs usr/bin
+cp -L /usr/share/fonts/truetype usr/share/fonts
+
+# Now the library copying magic
+for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh" \
+ "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=> \
+ \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed \
+ 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' \
+ | sed '/.*=>.*/d'; done | sh -s
+
+# The shared files for ghostscript...
+ cp -L -r /usr/share/ghostscript usr/share
+# The shared files for ImageMagick
+ cp -L -r /usr/lib/ImageMagick* usr/lib
+
+### Now, assuming that you have test.ly in /mnt/lilyloop/lilyhome,
+### you should be able to run:
+### Note that /$lilyprefix/bin/lilypond is a script, which sets the
+### LD_LIBRARY_PATH - this is crucial
+ /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly
+@end example
+
+@c " keep quote signs balanced for context-sensitive editors
@node エラー メッセージ
@funindex \thumb
@funindex thumb
-A thumb-script can be added (e.g., in cello music) to indicate
+A thumb-script can be added (e.g. cello music) to indicate
that a note should be played with the thumb.
@lilypond[verbatim,quote,relative=2]
@cindex fingering instructions for chords
@cindex chords, fingering
-Fingerings for chords can also be added to individual notes of the
-chord by adding them after the pitches.
+Fingerings for chords can also be added to individual notes by
+adding them after the pitches.
@lilypond[verbatim,quote,relative=2]
<c-1 e-2 g-3 b-5>2 <d-1 f-2 a-3 c-5>
@seealso
Notation Reference:
-@ref{Direction and placement}
+@ref{Direction and placement}.
Snippets:
@rlsr{Editorial annotations}.
@rinternals{New_fingering_engraver},
@rinternals{Fingering}.
+@knownissues
+By default, numbers greater than 9 are not supported using
+@samp{@var{note}-@var{digit}}.
+
@node Hidden notes
@unnumberedsubsubsec Hidden notes
needed in polyphony situations, the first part (with context called
@code{one}) always gets up stems, while the second (called @code{two})
always gets down stems. In solo situations, the first and second
-parts get marked with @q{Solo} and @q{Solo II}, respectively. The
-unisono (@notation{a due}) parts are marked by default with the text
+parts get marked with @qq{Solo} and @qq{Solo II}, respectively. The
+unison (@notation{a due}) parts are marked by default with the text
@qq{a2}.
Both arguments to @code{\partcombine} will be interpreted as
has no effect on the pitches of @code{@var{musicexpr1}} and
@code{@var{musicexpr2}}.
+In professional scores, voices are often kept apart for long periods,
+even if one or two notes actually coincide and could easily be printed
+as unison. Combining notes into a chord, or showing one voice as solo
+is therefore not ideal as the @code{\partcombine} function considers
+each note separately. For this reason, the @code{\partcombine} function
+can be overriden with the following commands:
+
+@itemize
+@item
+@code{\partcombineApart}, @code{\partcombineApartOnce}:
+Keep the notes as two separate voices, even if they can be combined to a
+chord or unison.
+
+@item
+@code{\partcombineChords}, @code{\partcombineChordsOnce}:
+Combine the notes to a chord.
+
+@item
+@code{\partcombineUnisono}, @code{\partcombineUnisonoOnce}:
+The two voices are unison.
+
+@item
+@code{\partcombineSoloI}, @code{\partcombineSoloIOnce}:
+Show only voice one and mark it as solo.
+
+@item
+@code{\partcombineSoloII}, @code{\partcombineSoloIIOnce}:
+Show only voice two and mark it as solo.
+
+@item
+@code{\partcombineAutomatic}, @code{\partcombineAutomaticOnce}:
+Ends the effect of the special commands above, and returns to the default
+part combining mechanism.
+
+@end itemize
+
+All commands ending in @code{...Once} apply only to the following note.
+
+@lilypond[quote,verbatim]
+instrumentOne = \relative c' {
+ \partcombineApart c2^"apart" e |
+ \partcombineAutomatic e^"auto" e |
+ \partcombineChords e'^"chord" e |
+ \partcombineAutomatic c^"auto" c |
+ \partcombineApart c^"apart" \partcombineChordsOnce e^"chord once" |
+ c c |
+}
+instrumentTwo = \relative c' {
+ c2 c |
+ e2 e |
+ a,2 c |
+ c2 c' |
+ c2 c |
+ c2 c |
+}
+
+<<
+ \new Staff { \instrumentOne }
+ \new Staff { \instrumentTwo }
+ \new Staff { \partcombine \instrumentOne \instrumentTwo }
+>>
+@end lilypond
+
+
@snippets
@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
@table @code
+@cindex page numbers, auto-numbering
@item auto-first-page-number
@funindex auto-first-page-number
will result in the first page number remaining as is or being
increased by one. Default: @code{#f}.
+@cindex page numbers, specify the first
@item first-page-number
@funindex first-page-number
If set to true, a page number is printed on the first page.
+@cindex page numbers, suppress
@item print-page-number
@funindex print-page-number
@node Within-system spacing properties
@unnumberedsubsubsec Within-system spacing properties
+@funindex staff-affinity
+@funindex staffgroup-staff-spacing
+@funindex staff-staff-spacing
+@funindex nonstaff-unrelatedstaff-spacing
+@funindex nonstaff-relatedstaff-spacing
+@funindex nonstaff-nonstaff-spacing
+@funindex default-staff-staff-spacing
+@funindex minimum-Y-extent
+@funindex extra-offset
+@funindex self-alignment-X
+@funindex X-offset
+@funindex VerticalAxisGroup
+
The within-system vertical spacing mechanisms are controlled by
two sets of grob properties. The first set is associated with the
@code{VerticalAxisGroup} grob, which is created by all staves and
@end lilypond
Each of the vertical spacing grob properties (except
-@code{staff-affinity}) uses the same alist structure
-as the @code{\paper} spacing variables discussed in
+@code{staff-affinity}) uses the same alist structure as the
+@code{\paper} spacing variables discussed in
@ref{Flexible vertical spacing \paper variables}. Specific methods
for modifying alists are discussed in @ref{Modifying alists}.
Grob properties should be adjusted with an @code{\override} inside
@end table
@seealso
-Installed Files:
-@file{ly/engraver-init.ly},
-@file{scm/define-grobs.scm}.
+Notation Reference:
+@ref{Flexible vertical spacing \paper variables},
+@ref{Modifying alists}.
Internals Reference:
@rinternals{Contexts},
@rinternals{VerticalAxisGroup},
@rinternals{StaffGrouper}.
+Installed Files:
+@file{ly/engraver-init.ly},
+@file{scm/define-grobs.scm}.
+
@node Spacing of ungrouped staves
@unnumberedsubsubsec Spacing of ungrouped staves
\version "2.13.53"
\header {
+%% Translation of GIT committish: 69d7781c6ab26df02bc81ff1eb294d47fa673491
+
+ texidoces = "
+Los deslizamientos para acordes se pueden indicar tanto en el contexto
+Staff como en TabStaff. Los números de cuerda son necesarios para
+TabStaff porque los cálculos de cuerda automáticos son diferentes para
+los acordes y para notas sueltas, y @code{\\chordGlissando} traza
+líneas entre las notas individuales.
+
+"
+
+ doctitlees = "Glissando de acordes en tablatura"
lsrtags = "fretted-strings"
texidoc = "
Slides for chords can be indicated in both Staff and TabStaff.
\version "2.13.49"
\header {
+%% Translation of GIT committish: 69d7781c6ab26df02bc81ff1eb294d47fa673491
+ texidoces = "
+Armónicos sobre cuerdas pisadas (armónicos artificiales):
+"
+ doctitlees = "Armónicos sobre cuerdas pisadas en tablatura"
+
+
+
lsrtags = "fretted-strings"
texidoc = "
Fretted-string harmonics:
\version "2.13.49"
\header {
+%% Translation of GIT committish: 69d7781c6ab26df02bc81ff1eb294d47fa673491
+ texidoces = "
+Referencia para armónicos sobre cuerdas al aire (armónicos naturales):
+
+"
+ doctitlees = "Referencia para armónicos sobre cuerdas al aire"
+
lsrtags = "fretted-strings"
texidoc = "
Reference for open-string harmonics:
\version "2.13.49"
\header {
+%% Translation of GIT committish: 69d7781c6ab26df02bc81ff1eb294d47fa673491
+ texidoces = "
+
+Los deslizamientos se pueden componer tipográficamente tanto en los
+contextos de @code{Staff} como en los de @code{TabStaff}:
+
+"
+
+ doctitlees = "Deslizamientos en tablatura"
+
lsrtags = "fretted-strings"
texidoc = "
Slides can be typeset in both @code{Staff} and @code{TabStaff} contexts:
% and then run scripts/auxiliar/makelsr.py
%
% This file is in the public domain.
-%% Note: this file works from version 2.13.36
-\version "2.13.36"
+%% Note: this file works from version 2.13.51
+\version "2.13.51"
\header {
%%% Translation of GIT committish: 91eeed36c877fe625d957437d22081721c8c6345
@c used for news about the upcoming release; see CG 10.2
@newsItem
-@subsubheading LilyPond 2.13.53 released! @emph{Mar 6, 2011}
+@subsubheading Release candidate 3 withdrawn @emph{Mar 15, 2011}
-We are happy to announce the release of LilyPond 2.13.53. This
-release contains the usual number of bugfixes.
-
-Please note that this is @strong{not} the third release candidate,
-due to a few remaining Critical bugs.
-
-@newsEnd
-
-@newsItem
-@subsubheading LilyPond 2.13.52 released! @emph{Mar 1, 2011}
-
-We are happy to announce the release of LilyPond 2.13.52. This
-release contains the usual number of bugfixes.
-
-Please note that this is @strong{not} the third release candidate,
-due to a few remaining Critical bugs.
-
-@newsEnd
-
-@newsItem
-@subsubheading LilyPond 2.13.51 released! @emph{Feb 22, 2011}
-
-We are happy to announce the release of LilyPond 2.13.51. This
-release contains the usual number of bugfixes.
-
-Please note that this is @strong{not} the third release candidate,
-due to a few remaining Critical bugs.
+We have discovered a regression since 2.12.3, so lilypond 2.13.54
+is no longer a candidate for the 2.14.0 release. However, please
+continue testing it -- we would like to discover (and fix!) any
+more regressions as soon as possible. If you discover any
+problems, please send us @ref{Bug reports}.
@newsEnd
@newsItem
-@subsubheading LilyPond 2.13.50 released! @emph{Feb 13, 2011}
-
-We are happy to announce the release of LilyPond 2.13.50. This
-release contains the usual number of bugfixes.
-
-Please note that this is @strong{not} the third release candidate.
-Due to a number of untested changes to our build process, we
-cannot be at all confident about the quality of this release.
-
-@newsEnd
+@subsubheading Release candidate 3 of 2.14 - LilyPond 2.13.54 released! @emph{Mar 13, 2011}
+LilyPond 2.13.54 is out; this is the third release candidate of
+the upcoming 2.14 stable release. All users are invited to
+experiment with this version. New features since 2.12.3 are
+listed in the @qq{Changes} manual on the website section about
+@ref{Development}.
-@newsItem
-@subsubheading New Chinese and Czech translations of the web page! @emph{Feb 11,2011}
-
-Two new languages are added to our web page: Chinese by Ben Luo, and
-Czech by Pavel Fric. It is a work in progress but they are fully
-functional. That makes ten languages to choose from!
+There are no known Critical issues with this release. If no
+Critical bugs are found, then the official 2.14.0 release will be
+on March 27, 2011. If you discover any problems, please send us
+@ref{Bug reports}.
@newsEnd
-
@end ignore
+@newsItem
+@subsubheading LilyPond 2.13.53 released! @emph{Mar 6, 2011}
+
+We are happy to announce the release of LilyPond 2.13.53. This
+release contains the usual number of bugfixes.
+
+Please note that this is @strong{not} the third release candidate,
+due to a few remaining Critical bugs.
+
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.13.52 released! @emph{Mar 1, 2011}
+
+We are happy to announce the release of LilyPond 2.13.52. This
+release contains the usual number of bugfixes.
+
+Please note that this is @strong{not} the third release candidate,
+due to a few remaining Critical bugs.
+
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.13.51 released! @emph{Feb 22, 2011}
+
+We are happy to announce the release of LilyPond 2.13.51. This
+release contains the usual number of bugfixes.
+
+Please note that this is @strong{not} the third release candidate,
+due to a few remaining Critical bugs.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.13.50 released! @emph{Feb 13, 2011}
+
+We are happy to announce the release of LilyPond 2.13.50. This
+release contains the usual number of bugfixes.
+
+Please note that this is @strong{not} the third release candidate.
+Due to a number of untested changes to our build process, we
+cannot be at all confident about the quality of this release.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading New Chinese and Czech translations of the web page! @emph{Feb 11,2011}
+
+Two new languages are added to our web page: Chinese by Ben Luo, and
+Czech by Pavel Fric. It is a work in progress but they are fully
+functional. That makes ten languages to choose from!
+
+@newsEnd
+
+
+
@newsItem
@subsubheading Release candidate 2 of 2.14 - LilyPond 2.13.49 released! @emph{Feb 9, 2011}
@echo ' grep sourcefilename `grep -L systems.texi out/lybook-testdb/*/*log|sed s/log/ly/g`'
@echo
$(MAKE) -C input/regression out=test local-test
+ $(MAKE) -C input/regression/midi out=test local-test
$(MAKE) -C input/regression/musicxml out=test local-test
$(MAKE) -C input/regression/abc2ly out=test local-test
$(MAKE) -C input/regression/lilypond-book out=test local-test
$(MAKE)
$(MAKE) test
$(MAKE) out=test -C input/regression local-test-baseline
+ $(MAKE) out=test -C input/regression/midi local-test-baseline
$(MAKE) out=test -C input/regression/musicxml local-test-baseline
$(MAKE) out=test -C input/regression/abc2ly local-test-baseline
$(MAKE) out=test -C input/regression/lilypond-book local-test-baseline
PACKAGE_NAME=LilyPond
MAJOR_VERSION=2
MINOR_VERSION=13
-PATCH_LEVEL=54
+PATCH_LEVEL=55
MY_PATCH_LEVEL=
VERSION_STABLE=2.12.3
-VERSION_DEVEL=2.13.53
+VERSION_DEVEL=2.13.54
include $(depth)/make/stepmake.make
TITLE=LilyPond Regression Tests
-SUBDIRS=musicxml abc2ly lilypond-book
+SUBDIRS=midi musicxml abc2ly lilypond-book
--- /dev/null
+\version "2.13.55"
+\header {
+ texidoc = "Feathered beams should have the same progress of their feathering
+at the end of a line break as they do at the beginning of the next line."
+}
+
+\paper {
+ left-margin = 2\cm
+ line-width = 10\cm
+ ragged-right = ##t
+ indent = 0\cm
+}
+
+\new Staff <<
+ \relative c' {
+ \cadenzaOn
+ \override Staff . TimeSignature #'stencil = ##f
+ \override Voice . Beam #'breakable = ##t
+ \once \override Voice . Beam #'grow-direction = #RIGHT
+ a32[ b c d e f g a ]
+ \once \override Voice . Beam #'grow-direction = #LEFT
+ a[ g f e d c b a] \bar "|"
+} >>
+
+\new Staff <<
+ \relative c' {
+ \cadenzaOn
+ \override Staff . TimeSignature #'stencil = ##f
+ \override Voice . Beam #'breakable = ##t
+ \once \override Voice . Beam #'grow-direction = #RIGHT
+ a32[ b c d \bar "" \break e f g a b c d e f g a ] \bar "|"
+} >>
+
+\new Staff <<
+ \relative c' {
+ \cadenzaOn
+ \override Staff . TimeSignature #'stencil = ##f
+ \override Voice . Beam #'breakable = ##t
+ \once \override Voice . Beam #'grow-direction = #RIGHT
+ a32[ b c d e f g a \bar "" \break b c d e f g a ] \bar "|"
+} >>
+
+\new Staff <<
+ \relative c' {
+ \cadenzaOn
+ \override Staff . TimeSignature #'stencil = ##f
+ \override Voice . Beam #'breakable = ##t
+ \once \override Voice . Beam #'grow-direction = #RIGHT
+ a32[ b c d e f g a b c d \bar "" \break e f g a ] \bar "|"
+} >>
+
+\new Staff <<
+ \relative c' {
+ \cadenzaOn
+ \override Staff . TimeSignature #'stencil = ##f
+ \override Voice . Beam #'breakable = ##t
+ \once \override Voice . Beam #'grow-direction = #LEFT
+ a32[ b c d \bar "" \break e f g a b c d e f g a ] \bar "|"
+} >>
+
+\new Staff <<
+ \relative c' {
+ \cadenzaOn
+ \override Staff . TimeSignature #'stencil = ##f
+ \override Voice . Beam #'breakable = ##t
+ \once \override Voice . Beam #'grow-direction = #LEFT
+ a32[ b c d e f g a \bar "" \break b c d e f g a ] \bar "|"
+} >>
+
+\new Staff <<
+ \relative c' {
+ \cadenzaOn
+ \override Staff . TimeSignature #'stencil = ##f
+ \override Voice . Beam #'breakable = ##t
+ \once \override Voice . Beam #'grow-direction = #LEFT
+ a32[ b c d e f g a b c d \bar "" \break e f g a ] \bar "|"
+} >>
+
+\new Staff <<
+ \relative c' {
+ \cadenzaOn
+ \override Staff . TimeSignature #'stencil = ##f
+ \override Voice . Stem #'direction = #DOWN
+ \override Voice . Beam #'breakable = ##t
+ \once \override Voice . Beam #'grow-direction = #RIGHT
+ a32[ b c d \bar "" \break e f g a b c d e f g a ] \bar "|"
+} >>
+
+\new Staff <<
+ \relative c' {
+ \cadenzaOn
+ \override Staff . TimeSignature #'stencil = ##f
+ \override Voice . Stem #'direction = #DOWN
+ \override Voice . Beam #'breakable = ##t
+ \once \override Voice . Beam #'grow-direction = #RIGHT
+ a32[ b c d e f g a \bar "" \break b c d e f g a ] \bar "|"
+} >>
+
+\new Staff <<
+ \relative c' {
+ \cadenzaOn
+ \override Staff . TimeSignature #'stencil = ##f
+ \override Voice . Stem #'direction = #DOWN
+ \override Voice . Beam #'breakable = ##t
+ \once \override Voice . Beam #'grow-direction = #RIGHT
+ a32[ b c d e f g a b c d \bar "" \break e f g a ] \bar "|"
+} >>
+
+\new Staff <<
+ \relative c' {
+ \cadenzaOn
+ \override Staff . TimeSignature #'stencil = ##f
+ \override Voice . Stem #'direction = #DOWN
+ \override Voice . Beam #'breakable = ##t
+ \once \override Voice . Beam #'grow-direction = #LEFT
+ a32[ b c d \bar "" \break e f g a b c d e f g a ] \bar "|"
+} >>
+
+\new Staff <<
+ \relative c' {
+ \cadenzaOn
+ \override Staff . TimeSignature #'stencil = ##f
+ \override Voice . Stem #'direction = #DOWN
+ \override Voice . Beam #'breakable = ##t
+ \once \override Voice . Beam #'grow-direction = #LEFT
+ a32[ b c d e f g a \bar "" \break b c d e f g a ] \bar "|"
+} >>
+
+\new Staff <<
+ \relative c' {
+ \cadenzaOn
+ \override Staff . TimeSignature #'stencil = ##f
+ \override Voice . Stem #'direction = #DOWN
+ \override Voice . Beam #'breakable = ##t
+ \once \override Voice . Beam #'grow-direction = #LEFT
+ a32[ b c d e f g a b c d \bar "" \break e f g a ] \bar "|"
+} >>
\book {
\relative c'' {
-\once \override FootnoteSpanner #'spanner-placement = #-0.7
\footnoteGrob #'Hairpin
#'(0.5 . 0.5)
\markup { \tiny "1." }
- \markup { 1. \justify { Goes to the second broken spanner. } }
+ \markup { 1. \justify { Goes to the first broken spanner. } }
b4\< c d a
b c d a
b c d a
b c d a
b c d a\!
-\once \override FootnoteSpanner #'spanner-placement = #1.0
+\once \override FootnoteSpanner #'spanner-placement = #RIGHT
\footnoteGrob #'Hairpin
#'(0.5 . 0.5)
\markup { \tiny "2." }
\header {
texidoc="
Finger labels can be added, either in dots or below strings.
-Dot color can be changed, and fingering label font size
-can be adjusted.
+Dot color can be changed globally or on a per-dot basis,
+and fingering label font size can be adjusted.
"
}
c1 |
c1 |
c1 |
+ c1 |
+ c1 |
c1
}
(place-fret 2 5 4)
(place-fret 1 3 1)
(barre 5 1 3))}
-
+ %% dot color inversion, white on black
+ \once \override TextScript #'fret-diagram-details
+ #'dot-color = #'black
+ c' ^\markup {
+ \fret-diagram-verbose #'((mute 6)
+ (place-fret 5 3 1 inverted)
+ (place-fret 4 5 2)
+ (place-fret 3 5 3 inverted)
+ (place-fret 2 5 4)
+ (place-fret 1 3 1)
+ (barre 5 1 3))}
+ %% dot color inversion, black on white
+ \once \override TextScript #'fret-diagram-details
+ #'dot-color = #'white
+ c' ^\markup {
+ \fret-diagram-verbose #'((mute 6)
+ (place-fret 5 3 1 inverted)
+ (place-fret 4 5 2)
+ (place-fret 3 5 3 inverted)
+ (place-fret 2 5 4)
+ (place-fret 1 3 1)
+ (barre 5 1 3))}
}
>>
<<
\chords {
+ c1 |
c1 |
c1 |
c1
(place-fret 1 3 1)
(barre 5 1 3))}
+ %% C major for guitar, verbose style
+ \revert TextScript #'fret-diagram-details #'label-dir
+ \once \override TextScript #'fret-diagram-details
+ #'number-type = #'custom
+ \once \override TextScript #'fret-diagram-details
+ #'fret-label-custom-format = #"~d°"
+ c' ^\markup {
+ \fret-diagram-verbose #'((mute 6)
+ (place-fret 5 3 1)
+ (place-fret 4 5 2)
+ (place-fret 3 5 3)
+ (place-fret 2 5 4)
+ (place-fret 1 3 1)
+ (barre 5 1 3))}
+
}
>>
--- /dev/null
+\version "2.13.51"
+
+\header {
+ texidoc="
+Fret diagrams can be scaled using the @code{size} property.
+The position and size of first fret label, mute/open signs, fingers,
+relative to the diagram grid, shall be the same in all cases.
+
+"
+}
+
+myFretDiagram =
+\markup \fret-diagram-verbose #'((place-fret 6 6 "P")
+ (place-fret 5 8 2)
+ (place-fret 4 8 2)
+ (place-fret 3 7 1)
+ (place-fret 2 8 3)
+ (mute 1))
+
+\markup \override #'(fret-diagram-details . ((finger-code . below-string))) {
+ \myFretDiagram
+ \hspace #4
+ \override #'(size . 1.5) \myFretDiagram
+ \hspace #8
+ \override #'(size . 3) \myFretDiagram
+}
-\version "2.12.0"
+\version "2.13.54"
\header {
+ tagline = ##f
texidoc = "Text that can spread over pages is entered with the
-@code{\\markuplines} command."
+@code{\\markuplines} command. Widowed and orphaned lines are avoided
+at the begininng and end of a @code{\\markuplines} containing more
+than one line."
}
-#(set-default-paper-size "a6")
+#(set-default-paper-size "a7")
#(define-markup-list-command (paragraph layout props args) (markup-list?)
(interpret-markup-list layout props
(make-justified-lines-markup-list (cons (make-hspace-markup 2) args))))
-
-%% Candide, Voltaire
-\markuplines \override-lines #'(baseline-skip . 2.5) {
- \paragraph {
- Il y avait en Westphalie, dans le château de M. le baron de
- Thunder-ten-tronckh, un jeune garçon à qui la nature avait donné
- les mœurs les plus douces. Sa physionomie annonçait son âme.
- Il avait le jugement assez droit, avec l'esprit le plus simple ;
- c'est, je crois, pour cette raison qu'on le nommait Candide. Les
- anciens domestiques de la maison soupçonnaient qu'il était fils
- de la sœur de monsieur le baron et d'un bon et honnête
- gentilhomme du voisinage, que cette demoiselle ne voulut jamais
- épouser parce qu'il n'avait pu prouver que soixante et onze
- quartiers, et que le reste de son arbre généalogique avait été
- perdu par l'injure du temps.
+\book {
+ \markuplines {} % Empty list is handled gracefully
+ %% Candide, Voltaire
+ \markuplines \override-lines #'(baseline-skip . 3.0) {
+ \paragraph { % The final two lines are placed on page 2.
+ Il y avait en Westphalie, dans le château de M. le baron de
+ Thunder-ten-tronckh, un jeune garçon à qui la nature avait donné
+ les mœurs les plus douces. Sa physionomie annonçait son âme.
+ Il avait le jugement assez droit, avec l'esprit le plus simple ;
+ c'est, je crois, pour cette raison qu'on le nommait Candide. Les
+ anciens domestiques de la maison soupçonnaient qu'il était fils
+ de la sœur de monsieur le baron et d'un bon et honnête
+ gentilhomme du voisinage, que cette demoiselle ne voulut jamais
+ épouser parce qu'il n'avait pu prouver que soixante et onze
+ quartiers, et que le reste de son arbre généalogique avait été
+ perdu par l'injure du temps. (not orphaned)
+ }
+ }
+ \markuplines \override-lines #'(baseline-skip . 3.9) {
+ \paragraph {
+ Monsieur le baron était un des plus puissants seigneurs de la
+ Westphalie, car son château avait une porte et des fenêtres. Sa
+ grande salle même était ornée d'une tapisserie. Tous les chiens
+ de ses basses-cours composaient une meute dans le besoin ; ses
+ palefreniers étaient ses piqueurs; le vicaire du village était
+ son grand-aumônier. Ils l'appelaient tous monseigneur, et ils
+ riaient quand il faisait des contes.
+ }
}
- \paragraph {
- Monsieur le baron était un des plus puissants seigneurs de la
- Westphalie, car son château avait une porte et des fenêtres. Sa
- grande salle même était ornée d'une tapisserie. Tous les chiens
- de ses basses-cours composaient une meute dans le besoin ; ses
- palefreniers étaient ses piqueurs; le vicaire du village était
- son grand-aumônier. Ils l'appelaient tous monseigneur, et ils
- riaient quand il faisait des contes.
+ \markuplines {
+ \paragraph { % A single-line paragraph may be orphaned
+ Madame la ... (may be orphaned)
+ }
}
}
--- /dev/null
+depth = ../../..
+
+STEPMAKE_TEMPLATES=documentation texinfo tex
+LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc midi
+
+TEXI2HTML_FLAGS += --nomenu
+
+TMP = $(sort $(LY_FILES) $(TEXINFO_SOURCES) )
+COLLATED_FILES = ${TMP:%.ly=$(outdir)/%-midi.ly}
+
+include $(depth)/make/stepmake.make
+
+TITLE=MIDI test suite
--- /dev/null
+% Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out/initial-key.midi
+\version "2.13.53"
+
+\layout {
+ \context {
+ \Voice
+ \remove "Note_heads_engraver"
+ \consists "Completion_heads_engraver"
+ \remove "Rest_engraver"
+ \consists "Completion_rest_engraver"
+ }
+}
+
+% included from ./out/initial-key.header
+\header {
+texidoc="keys work in MIDI, this is a-minor"
+options=""
+}
+% end
+
+trackAchannelA = {
+
+
+ \key a \minor
+
+ % [SEQUENCE_TRACK_NAME] control track
+
+ % [TEXT_EVENT] creator:
+
+ % [TEXT_EVENT] GNU LilyPond 2.13.54
+
+ \time 4/4
+
+ \tempo 4 = 60
+
+}
+
+trackA = <<
+ \context Voice = voiceA \trackAchannelA
+>>
+
+
+trackBchannelA = \relative c {
+
+ \set Staff.instrumentName = "trackB:voiceA"
+ a'4 b c d
+ | % 2
+ e f gis a
+ | % 3
+
+}
+
+trackB = <<
+ \context Voice = voiceA \trackBchannelA
+>>
+
+
+trackCchannelA = {
+
+ \set Staff.instrumentName = "trackB:"
+
+
+ \key a \minor
+
+}
+
+trackC = <<
+ \context Voice = voiceA \trackCchannelA
+>>
+
+
+\score {
+ <<
+ \context Staff=trackB \trackA
+ \context Staff=trackB \trackB
+ >>
+ \layout {}
+ \midi {}
+}
--- /dev/null
+% Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out-www/option-key.midi
+\version "2.13.53"
+
+\layout {
+ \context {
+ \Voice
+ \remove "Note_heads_engraver"
+ \consists "Completion_heads_engraver"
+ \remove "Rest_engraver"
+ \consists "Completion_rest_engraver"
+ }
+}
+
+% included from ./out-www/option-key.header
+\header {
+texidoc="midi2ly @code{--key} works, this is F major"
+options="--key=-1"
+}
+% end
+
+trackAchannelA = {
+
+
+ % [SEQUENCE_TRACK_NAME] control track
+
+ % [TEXT_EVENT] creator:
+
+ % [TEXT_EVENT] GNU LilyPond 2.13.54
+
+ \time 4/4
+
+ \tempo 4 = 60
+
+}
+
+trackA = <<
+ \context Voice = voiceA \trackAchannelA
+>>
+
+
+trackBchannelA = \relative c {
+
+ \set Staff.instrumentName = "trackB:voiceA"
+ f'4 g a bes
+ | % 2
+ c d e f
+ | % 3
+
+}
+
+trackB = <<
+ \context Voice = voiceA \trackBchannelA
+>>
+
+
+trackCchannelA = {
+
+ \set Staff.instrumentName = "trackB:"
+
+
+}
+
+trackC = <<
+ \context Voice = voiceA \trackCchannelA
+>>
+
+
+\score {
+ <<
+ \context Staff=trackB \trackA
+ \context Staff=trackB \trackB
+ >>
+ \layout {}
+ \midi {}
+}
--- /dev/null
+% Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out/initial-key.midi
+\version "2.13.53"
+
+\layout {
+ \context {
+ \Voice
+ \remove "Note_heads_engraver"
+ \consists "Completion_heads_engraver"
+ \remove "Rest_engraver"
+ \consists "Completion_rest_engraver"
+ }
+}
+
+% included from ./out/initial-key.header
+\header {
+texidoc="Lyrics are preserved"
+options=""
+}
+% end
+
+\score {
+ <<
+ \relative c'' {
+ \key g \major
+ \time 6/8
+ d4 b8 c4 a8 | d4 b8 g4
+ }
+ \addlyrics {
+ Girls and boys come | out to play,
+ }
+ >>
+ \layout {}
+ \midi {}
+}
--- /dev/null
+% Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out-www/voice-2.midi
+\version "2.13.53"
+
+\layout {
+ \context {
+ \Voice
+ \remove "Note_heads_engraver"
+ \consists "Completion_heads_engraver"
+ \remove "Rest_engraver"
+ \consists "Completion_rest_engraver"
+ }
+}
+
+% included from ./out-www/voice-2.header
+\header {
+texidoc="midi2ly @code{--duration-quant} quantizes durations of notes"
+options="--duration-quant=4"
+}
+% end
+
+trackAchannelA = {
+
+ % [SEQUENCE_TRACK_NAME] control track
+
+ % [TEXT_EVENT] creator:
+
+ % [TEXT_EVENT] GNU LilyPond 2.13.54
+
+ \time 4/4
+
+ \tempo 4 = 60
+
+}
+
+trackA = <<
+ \context Voice = voiceA \trackAchannelA
+>>
+
+
+trackBchannelA = \relative c {
+ r4*1/8 c4*7/8
+ c4*7/8 r4*1/8
+}
+
+trackB = <<
+ \context Voice = voiceA \trackBchannelA
+>>
+
+
+\score {
+ <<
+ \context Staff=trackB \trackB
+ >>
+ \layout {}
+ \midi {}
+}
--- /dev/null
+% Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out-www/voice-2.midi
+\version "2.13.53"
+
+\layout {
+ \context {
+ \Voice
+ \remove "Note_heads_engraver"
+ \consists "Completion_heads_engraver"
+ \remove "Rest_engraver"
+ \consists "Completion_rest_engraver"
+ }
+}
+
+% included from ./out-www/voice-2.header
+\header {
+texidoc="midi2ly @code{--start-quant} quantizes start of notes"
+options="--start-quant=4"
+}
+% end
+
+trackAchannelA = {
+
+ % [SEQUENCE_TRACK_NAME] control track
+
+ % [TEXT_EVENT] creator:
+
+ % [TEXT_EVENT] GNU LilyPond 2.13.54
+
+ \time 4/4
+
+ \tempo 4 = 60
+
+}
+
+trackA = <<
+ \context Voice = voiceA \trackAchannelA
+>>
+
+
+trackBchannelA = \relative c {
+ r4*1/8 c4*7/8
+ c4*7/8 r4*1/8
+}
+
+trackB = <<
+ \context Voice = voiceA \trackBchannelA
+>>
+
+
+\score {
+ <<
+ \context Staff=trackB \trackB
+ >>
+ \layout {}
+ \midi {}
+}
--- /dev/null
+% Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out-www/rest.midi
+\version "2.13.53"
+
+\layout {
+ \context {
+ \Voice
+ \remove "Note_heads_engraver"
+ \consists "Completion_heads_engraver"
+ \remove "Rest_engraver"
+ \consists "Completion_rest_engraver"
+ }
+}
+
+% included from ./out-www/rest.header
+\header {
+texidoc="midi2ly identifies rests"
+options=""
+}
+% end
+
+trackAchannelA = {
+
+ % [SEQUENCE_TRACK_NAME] control track
+
+ % [TEXT_EVENT] creator:
+
+ % [TEXT_EVENT] GNU LilyPond 2.13.54
+
+ \time 4/4
+
+ \tempo 4 = 60
+
+}
+
+trackA = <<
+ \context Voice = voiceA \trackAchannelA
+>>
+
+
+trackBchannelA = \relative c {
+ r4
+ \set Staff.instrumentName = "trackB:voiceA"
+ a r4 a
+ | % 2
+
+}
+
+trackB = <<
+
+ \clef bass
+
+ \context Voice = voiceA \trackBchannelA
+>>
+
+
+\score {
+ <<
+ \context Staff=trackB \trackA
+ \context Staff=trackB \trackB
+ >>
+ \layout {}
+ \midi {}
+}
--- /dev/null
+\version "2.13.53"
+
+\header {
+texidoc="Midi2ly remaps voices correctly to staves in MIDI-files that use instrument<->channel mapping when combined with voice<->track mapping. TODO: pianostaff"
+options=""
+}
+
+\score {
+%% TODO:PIANOSTAFF \context PianoStaff <<
+ <<
+ \context Staff = "treble" <<
+ %% the default
+ %% \set Score.midiChannelMapping = #'instrument
+ \context Voice="one" \relative c'' {
+ \time 4/4
+ \key c \minor
+ \voiceOne
+%comes
+%7
+ f8 es16 d c16 bes ! as g f8 as' g f
+%8 es8 d es f b, c d b |
+ f,16 g as4 g16 f e2 |
+ }
+ \context Voice="two" \relative c'' {
+ \voiceTwo
+%dux
+%7
+ c4 r4 r8 f es d |
+%8 r8 as g f g f16 es f8 d |
+ <b, d>8 r <b d> r <g c>2 |
+ }
+ >>
+ \context Staff = "bass" <<
+ \context Voice="three" \relative c' {
+ \key c \minor
+ \clef bass
+%7
+ r8 c16 b c8 g as c16 b c8 d |
+%8 g8 c16 b c8 d f,16 g as4 g16 f |
+ <c,, c'>1
+ }
+ >>
+ >>
+ \layout {}
+ \midi {}
+}
--- /dev/null
+\version "2.13.53"
+
+\header {
+texidoc="Midi2ly remaps voices correctly to staves in MIDI-files that use voice<->channel mapping when combined with staff<->track mapping. TODO: pianostaff"
+options=""
+}
+
+\score {
+%% TODO:PIANOSTAFF \context PianoStaff <<
+ <<
+ \context Staff = "treble" <<
+ \set Score.midiChannelMapping = #'voice
+ \context Voice="one" \relative c'' {
+ \time 4/4
+ \key c \minor
+ \voiceOne
+%comes
+%7
+ f8 es16 d c16 bes ! as g f8 as' g f
+%8 es8 d es f b, c d b |
+ f,16 g as4 g16 f e2 |
+ }
+ \context Voice="two" \relative c'' {
+ \voiceTwo
+%dux
+%7
+ c4 r4 r8 f es d |
+%8 r8 as g f g f16 es f8 d |
+ <b, d>8 r <b d> r <g c>2 |
+ }
+ >>
+ \context Staff = "bass" <<
+ \context Voice="three" \relative c' {
+ \key c \minor
+ \clef bass
+%7
+ r8 c16 b c8 g as c16 b c8 d |
+%8 g8 c16 b c8 d f,16 g as4 g16 f |
+ <c,, c'>1
+ }
+ >>
+ >>
+ \layout {}
+ \midi {}
+}
--- /dev/null
+% Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out-www/voice-2.midi
+\version "2.13.53"
+
+\layout {
+ \context {
+ \Voice
+ \remove "Note_heads_engraver"
+ \consists "Completion_heads_engraver"
+ \remove "Rest_engraver"
+ \consists "Completion_rest_engraver"
+ }
+}
+
+% included from ./out-www/voice-2.header
+\header {
+texidoc="midi2ly maps two voices nicely on one staff as \voiceOne, \voiceTwo"
+options=""
+}
+% end
+
+trackAchannelA = {
+
+ % [SEQUENCE_TRACK_NAME] control track
+
+ % [TEXT_EVENT] creator:
+
+ % [TEXT_EVENT] GNU LilyPond 2.13.54
+
+ \time 4/4
+
+ \tempo 4 = 60
+
+}
+
+trackA = <<
+ \context Voice = voiceA \trackAchannelA
+>>
+
+
+trackBchannelA = \relative c {
+ \voiceOne
+
+ \set Staff.instrumentName = ":1"
+ e''4 e e e
+ | % 2
+
+}
+
+trackBchannelB = \relative c {
+ \voiceTwo
+ f' f f f
+ | % 2
+
+}
+
+trackB = <<
+ \context Voice = voiceA \trackBchannelA
+ \context Voice = voiceB \trackBchannelB
+>>
+
+
+\score {
+ <<
+ \context Staff=trackB \trackA
+ \context Staff=trackB \trackB
+ >>
+ \layout {}
+ \midi {}
+}
--- /dev/null
+% Lily was here -- automatically converted by ../../../scripts/midi2ly.py from out-www/voice-4.midi
+\version "2.13.53"
+
+\layout {
+ \context {
+ \Voice
+ \remove "Note_heads_engraver"
+ \consists "Completion_heads_engraver"
+ \remove "Rest_engraver"
+ \consists "Completion_rest_engraver"
+ }
+}
+
+% included from ./out-www/voice-4.header
+\header {
+texidoc="midi2ly maps four voices nicely on one staff as \voiceOne, \voiceTwo, \voiceThree, \voiceFour"
+options=""
+}
+% end
+
+trackAchannelA = {
+
+ % [SEQUENCE_TRACK_NAME] control track
+
+ % [TEXT_EVENT] creator:
+
+ % [TEXT_EVENT] GNU LilyPond 2.13.54
+
+ \time 4/4
+
+ \tempo 4 = 60
+
+}
+
+trackA = <<
+ \context Voice = voiceA \trackAchannelA
+>>
+
+
+trackBchannelA = \relative c {
+ \voiceOne
+
+ \set Staff.instrumentName = ":1"
+ <c''' a >2 b
+ | % 2
+
+}
+
+trackBchannelB = \relative c {
+ \voiceThree
+ c''4. d8 e4 f
+ | % 2
+
+}
+
+trackBchannelC = \relative c {
+ \voiceFour
+ d'1
+ | % 2
+
+}
+
+trackBchannelD = \relative c {
+ \voiceTwo
+ c'4 c2 c4
+ | % 2
+
+}
+
+trackB = <<
+ \context Voice = voiceA \trackBchannelA
+ \context Voice = voiceB \trackBchannelB
+ \context Voice = voiceC \trackBchannelC
+ \context Voice = voiceD \trackBchannelD
+>>
+
+
+\score {
+ <<
+ \context Staff=trackB \trackA
+ \context Staff=trackB \trackB
+ >>
+ \layout {}
+ \midi {}
+}
#include "audio-column.hh"
#include "audio-item.hh"
-#include "performance.hh"
Audio_column::Audio_column (Moment when)
{
tied_ = 0;
transposing_ = transposing;
tie_event_ = tie_event;
+ volume_ = 0;
}
void
}
void
-Audio_staff::output (Midi_stream &midi_stream, int track)
+Audio_staff::output (Midi_stream &midi_stream, int track, bool port)
{
- Midi_track midi_track;
- midi_track.number_ = track;
+ Midi_track midi_track (track, port);
Midi_walker i (this, &midi_track);
for (; i.ok (); i++)
return internal_balloon_print (me, p, off);
}
-// ugh...code dup...hopefully can be consolidated w/ above one day
MAKE_SCHEME_CALLBACK (Balloon_interface, print_spanner, 1);
SCM
Balloon_interface::print_spanner (SCM smob)
{
Spanner *me = unsmob_spanner (smob);
- Grob *orig = me->original ();
+ Spanner *orig = dynamic_cast<Spanner *> (me->original ());
if (orig)
{
- // TODO : consolidate code dup from System::get_footnote_grobs_in_range
- int pos = orig->spanned_rank_interval ()[LEFT];
- Real spanner_placement = min (1.0,
- max (robust_scm2double (me->get_property ("spanner-placement"), -1.0),
- -1.0));
+ Direction spanner_placement = robust_scm2dir (me->get_property ("spanner-placement"), LEFT);
- spanner_placement = (spanner_placement + 1.0) / 2.0;
- int rpos = orig->spanned_rank_interval ()[RIGHT];
- pos = (int)((rpos - pos) * spanner_placement + pos + 0.5);
+ Spanner *wanted = (spanner_placement != RIGHT)
+ ? orig->broken_intos_[0]
+ : orig->broken_intos_.back ();
- if (pos < me->spanned_rank_interval () [LEFT])
- return SCM_EOL;
- if (pos >= me->spanned_rank_interval () [RIGHT] && (me->spanned_rank_interval () [RIGHT] != orig->spanned_rank_interval () [RIGHT]))
+ if (me != wanted)
return SCM_EOL;
}
Direction feather_dir = to_dir (me->get_property ("grow-direction"));
+ Interval placements = robust_scm2interval (me->get_property ("normalized-endpoints"), Interval (0.0, 0.0));
+
Stencil the_beam;
+
+ int extreme = (segments[0].vertical_count_ == 0
+ ? segments[0].vertical_count_
+ : segments.back ().vertical_count_);
+
for (vsize i = 0; i < segments.size (); i ++)
{
Real local_slope = slope;
+ /*
+ Makes local slope proportional to the ratio of the length of this beam
+ to the total length.
+ */
if (feather_dir)
- {
- local_slope += feather_dir * segments[i].vertical_count_ * beam_dy / span.length ();
- }
+ local_slope += (feather_dir * segments[i].vertical_count_
+ * beam_dy
+ * placements.length ()
+ / span.length ());
Stencil b = Lookup::beam (local_slope, segments[i].horizontal_.length (), beam_thickness, blot);
b.translate_axis (segments[i].horizontal_[LEFT], X_AXIS);
+ Real multiplier = feather_dir ? placements[LEFT] : 1.0;
+
+ Interval weights (1 - multiplier, multiplier);
+
+ if (feather_dir != LEFT)
+ weights.swap ();
+
+ // we need two translations: the normal one and
+ // the one of the lowest segment
+ int idx[] = {i, extreme};
+ Real translations[2];
+
+ for (int j = 0; j < 2; j++)
+ translations[j] = slope
+ * (segments[idx[j]].horizontal_[LEFT] - span.linear_combination (CENTER))
+ + pos.linear_combination (CENTER)
+ + beam_dy * segments[idx[j]].vertical_count_;
+
+ Real weighted_average = translations[0] * weights[LEFT] + translations[1] * weights[RIGHT];
+
+ /*
+ Tricky. The manipulation of the variable `weighted_average' below ensures
+ that beams with a RIGHT grow direction will start from the position of the
+ lowest segment at 0, and this error will decrease and decrease over the
+ course of the beam. Something with a LEFT grow direction, on the other
+ hand, will always start in the correct place but progressively accrue
+ error at broken places. This code shifts beams up given where they are
+ in the total span length (controlled by the variable `multiplier'). To
+ better understand what it does, try commenting it out: you'll see that
+ all of the RIGHT growing beams immediately start too low and get better
+ over line breaks, whereas all of the LEFT growing beams start just right
+ and get worse over line breaks.
+ */
+ Real factor = Interval (multiplier, 1 - multiplier).linear_combination (feather_dir);
+
+ if (segments[0].vertical_count_ < 0 && feather_dir)
+ weighted_average += beam_dy * (segments.size () - 1) * factor;
+
+ b.translate_axis (weighted_average, Y_AXIS);
- b.translate_axis (local_slope
- * (segments[i].horizontal_[LEFT] - span.linear_combination (feather_dir))
- + pos.linear_combination (feather_dir)
- + beam_dy * segments[i].vertical_count_, Y_AXIS);
the_beam.add_stencil (b);
+
}
#if (DEBUG_BEAM_SCORING)
properties = scm_cons(scm_acons (ly_symbol2scm ("font-size"), scm_from_int (-5), SCM_EOL),
properties);
-
+
Direction stem_dir = stems.size () ? to_dir (stems[0]->get_property ("direction")) : UP;
Stencil score = *unsmob_stencil (Text_interface::interpret_markup
Real x = s->relative_coordinate (common[X_AXIS], X_AXIS) - x_span[LEFT];
x_posns.push_back (x);
}
-
+
Grob *lvs = last_normal_stem (me);
x_span[RIGHT] = lvs->relative_coordinate (common[X_AXIS], X_AXIS);
Pitch pitch_;
Moment length_mom_;
Pitch transposing_;
+ Real volume_;
Audio_note *tied_;
bool tie_event_;
struct Audio_staff : public Audio_element
{
void add_audio_item (Audio_item *ai);
- void output (Midi_stream &midi_stream_r, int track);
+ void output (Midi_stream &midi_stream_r, int track, bool port);
Audio_staff ();
void set (string header_string, string data_string, string footer_string);
virtual string to_string () const;
virtual string data_string () const;
- DECLARE_CLASSNAME(Midi_chunk);
+ DECLARE_CLASSNAME (Midi_chunk);
virtual ~Midi_chunk ();
private:
string data_string_;
class Midi_header : public Midi_chunk
{
public:
- DECLARE_CLASSNAME(Midi_header);
+ DECLARE_CLASSNAME (Midi_header);
Midi_header (int format, int tracks, int clocks_per_4);
};
{
public:
int number_;
- DECLARE_CLASSNAME(Midi_track);
+ int port_;
+ DECLARE_CLASSNAME (Midi_track);
vector<Midi_event*> events_;
- Midi_track ();
+ Midi_track (int number, bool port);
~Midi_track ();
void add (int, Midi_item *midi);
class Performance : public Music_output
{
public:
- Performance ();
+ Performance (bool ports=false);
~Performance ();
DECLARE_CLASSNAME(Performance);
vector<Audio_staff*> audio_staffs_;
vector<Audio_element*> audio_elements_;
Output_def *midi_;
+ bool ports_;
};
#endif /* PERFORMANCE_HH */
public:
DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM));
+ DECLARE_SCHEME_CALLBACK (calc_normalized_endpoints, (SCM));
DECLARE_SCHEME_CALLBACK (bounds_width, (SCM));
DECLARE_SCHEME_CALLBACK (kill_zero_spanned_time, (SCM));
void add_bound_item (Spanner *, Grob *);
bool spanner_less (Spanner *s1, Spanner *s2);
-int broken_spanner_index (Spanner const *sp);
#endif
#include "std-string.hh"
#include "string-convert.hh"
-Midi_track::Midi_track ()
+Midi_track::Midi_track (int number, bool port)
+ : number_ (number)
{
// 4D 54 72 6B MTrk
// 00 00 00 3B chunk length (59)
// mi = 0: major key
// mi = 1: minor key
- number_ = 0;
-
char const *data_str0 = ""
// "00" "ff58" "0404" "0218" "08"
// "00" "ff51" "0307" "a120"
// only for format 0 (currently using format 1)?
data_string += String_convert::hex2bin (data_str0);
+ if (port)
+ {
+ string port = "00" "ff" "21" "01"
+ + String_convert::int2hex (number_, 2, '0');
+ data_string += String_convert::hex2bin (port);
+ }
+
char const *footer_str0 = "00" "ff2f" "00";
string footer_string = String_convert::hex2bin (footer_str0);
Midi_note::Midi_note (Audio_note *a)
: Midi_channel_item (a)
, audio_ (a)
- , dynamic_byte_ (0x5a)
+ , dynamic_byte_ (a->volume_ > 0 ? Byte (a->volume_ * 0x7f) : Byte (0x5a))
{
}
string
Midi_dynamic::to_string () const
{
+ if (audio_->volume_ < 0)
+ return "";
+
Byte status_byte = (char) (0xB0 + channel_);
string str = ::to_string ((char)status_byte);
paper_->self_scm (),
page_properties,
scm_car (s));
- Prob *ps;
- SCM list;
- for (list = texts ; scm_is_pair (list) ; list = scm_cdr (list))
+ Prob *first = 0;
+ Prob *last = 0;
+ for (SCM list = texts; scm_is_pair (list); list = scm_cdr (list))
{
SCM t = scm_car (list);
// TODO: init props
- ps = make_paper_system (SCM_EOL);
+ Prob *ps = make_paper_system (SCM_EOL);
ps->set_property ("page-break-permission",
ly_symbol2scm ("allow"));
ps->set_property ("page-turn-permission",
ly_symbol2scm ("allow"));
ps->set_property ("last-markup-line", SCM_BOOL_F);
- ps->set_property ("first-markup-line",
- list == texts? SCM_BOOL_T : SCM_BOOL_F);
+ ps->set_property ("first-markup-line", SCM_BOOL_F);
paper_system_set_stencil (ps, *unsmob_stencil (t));
SCM footnotes = get_footnotes (unsmob_stencil (t)->expr ());
ps->set_property ("footnotes", footnotes);
ps->set_property ("is-title", SCM_BOOL_T);
- if (list != texts)
- /* For each markup other than the first, place it as closely as
- possible to the previous markup and don't allow stretching. */
- ps->set_property ("tight-spacing", SCM_BOOL_T);
-
+ if (list == texts)
+ first = ps;
+ else
+ {
+ // last line so far, in a multi-line paragraph
+ last = ps;
+ //Place closely to previous line, no stretching.
+ ps->set_property ("tight-spacing", SCM_BOOL_T);
+ }
system_specs = scm_cons (ps->self_scm (), system_specs);
ps->unprotect ();
// FIXME: figure out penalty.
//set_system_penalty (ps, scores_[i].header_);
}
- // We may want to place a check here, for whether the line is too short
- if (list == texts)
- {
- // if there is only one line in the paragraph,
- // do not try to avoid orphans
- ps->set_property ("last-markup-line", SCM_BOOL_F);
- ps->set_property ("first-markup-line", SCM_BOOL_F);
- }
- else
- {
- ps->set_property ("last-markup-line", SCM_BOOL_T);
+ /* Set properties to avoid widowed/orphaned lines.
+ Single-line markup_lists are excluded, but in future
+ we may want to add the case of a very short, single line. */
+ if (first && last)
+ {
+ last->set_property ("last-markup-line", SCM_BOOL_T);
+ first->set_property ("first-markup-line", SCM_BOOL_T);
}
}
else
#include "string-convert.hh"
#include "warn.hh"
-Performance::Performance ()
+Performance::Performance (bool ports)
+ : midi_ (0)
+ , ports_ (ports)
{
- midi_ = 0;
}
Performance::~Performance ()
Audio_staff *s = audio_staffs_[i];
if (be_verbose_global)
progress_indication ("[" + to_string (i));
- s->output (midi_stream, i);
+ s->output (midi_stream, i, ports_);
if (be_verbose_global)
progress_indication ("]");
}
void
Score_performer::finish (SCM)
{
+ SCM channel_mapping = context ()->get_property ("midiChannelMapping");
+ bool use_ports = channel_mapping == ly_symbol2scm ("voice");
+ performance_->ports_ = use_ports;
recurse_over_translators (context (),
&Translator::finalize,
&Translator_group::finalize,
if (!original_)
return 0;
- vsize k = broken_spanner_index (this);
+ vsize k = get_break_index ();
Spanner *orig = dynamic_cast<Spanner*> (original_);
int j = int (k) + d;
if (j < 0 || vsize (j) >= orig->broken_intos_.size ())
return SCM_UNSPECIFIED;
}
-/*
- Return I such that SP == SP->ORIGINAL ()->BROKEN_INTOS_[I].
-*/
-int
-broken_spanner_index (Spanner const *sp)
+MAKE_SCHEME_CALLBACK (Spanner, calc_normalized_endpoints, 1);
+SCM
+Spanner::calc_normalized_endpoints (SCM smob)
{
- Spanner *parent = dynamic_cast<Spanner *> (sp->original ());
- /* ugh: casting */
- return find (parent->broken_intos_, (Spanner*) sp) - parent->broken_intos_.begin ();
+ Spanner *me = unsmob_spanner (smob);
+ SCM result = SCM_EOL;
+
+ Spanner *orig = dynamic_cast<Spanner *> (me->original ());
+
+ orig = orig ? orig : me;
+
+ if (orig->is_broken ())
+ {
+ Real total_width = 0.0;
+ vector<Real> span_data;
+
+ if (!orig->is_broken ())
+ span_data.push_back (orig->spanner_length ());
+ else
+ for (vsize i = 0; i < orig->broken_intos_.size (); i++)
+ span_data.push_back (orig->broken_intos_[i]->spanner_length ());
+
+ vector<Interval> unnormalized_endpoints;
+
+ for (vsize i = 0; i < span_data.size (); i++)
+ {
+ unnormalized_endpoints.push_back (Interval (total_width, total_width + span_data[i]));
+ total_width += span_data[i];
+ }
+
+ for (vsize i = 0; i < unnormalized_endpoints.size (); i++)
+ {
+ SCM t = ly_interval2scm (1 / total_width * unnormalized_endpoints[i]);
+ orig->broken_intos_[i]->set_property ("normalized-endpoints", t);
+ if (me->get_break_index () == i)
+ result = t;
+ }
+ }
+ else
+ {
+ result = scm_cons (scm_from_double (0.0), scm_from_double (1.0));
+ orig->set_property ("normalized-endpoints", result);
+ }
+
+ return result;
}
Spanner *
" point of the spanner.",
/* properties */
+ "normalized-endpoints "
"minimum-length "
"to-barline "
);
#include <map>
-#include "warn.hh"
#include "audio-column.hh"
#include "audio-item.hh"
#include "audio-staff.hh"
-#include "performer-group.hh"
#include "context.hh"
+#include "international.hh"
+#include "performer-group.hh"
+#include "warn.hh"
/* Perform a staff. Individual notes should have their instrument
(staff-wide) set, so we override play_element ()
TRANSLATOR_DECLARATIONS (Staff_performer);
~Staff_performer ();
- string new_instrument_string ();
- string instrument_string_;
-
protected:
virtual void acknowledge_audio_element (Audio_element_info info);
virtual void finalize ();
void stop_translation_timestep ();
private:
- Audio_staff *audio_staff_;
+ string new_instrument_string ();
+ void set_instrument_name (string voice);
+ void set_instrument (int channel, string voice);
+ int get_channel (string instrument);
+ Audio_staff* get_audio_staff (string voice);
+ Audio_staff* new_audio_staff (string voice);
+ Real get_dynamic (string voice);
+
+ string instrument_string_;
+ int channel_;
Audio_instrument *instrument_;
Audio_text *instrument_name_;
Audio_text *name_;
Audio_tempo *tempo_;
+ map<string, Audio_staff*> staff_map_;
map<string, int> channel_map_;
+ map<string, Real> dynamic_map_;
+ static map<string, int> static_channel_map_;
+ static int channel_count_;
};
+map<string, int> Staff_performer::static_channel_map_;
+int Staff_performer::channel_count_ = 0;
+
#include "translator.icc"
ADD_TRANSLATOR (Staff_performer,
"");
Staff_performer::Staff_performer ()
+ : channel_ (0)
+ , instrument_ (0)
+ , instrument_name_ (0)
+ , name_ (0)
+ , tempo_ (0)
{
- audio_staff_ = 0;
- instrument_ = 0;
- instrument_name_ = 0;
- name_ = 0;
- tempo_ = 0;
}
Staff_performer::~Staff_performer ()
void
Staff_performer::initialize ()
{
- audio_staff_ = new Audio_staff;
- name_ = new Audio_text (Audio_text::TRACK_NAME, context ()->id_string ());
+}
- audio_staff_->add_audio_item (name_);
-
- announce_element (Audio_element_info (audio_staff_, 0));
- announce_element (Audio_element_info (name_, 0));
+Audio_staff*
+Staff_performer::new_audio_staff (string voice)
+{
+ Audio_staff* audio_staff = new Audio_staff;
+ string track_name = context ()->id_string () + ":" + voice;
+ if (track_name != ":")
+ {
+ name_ = new Audio_text (Audio_text::TRACK_NAME, context ()->id_string ()
+ + ":" + voice);
+ audio_staff->add_audio_item (name_);
+ announce_element (Audio_element_info (name_, 0));
+ }
+ announce_element (Audio_element_info (audio_staff, 0));
+ staff_map_[voice] = audio_staff;
+ if (!instrument_string_.empty ())
+ set_instrument (channel_, voice);
+ return audio_staff;
}
-void
-Staff_performer::process_music ()
+Audio_staff*
+Staff_performer::get_audio_staff (string voice)
{
- string str = new_instrument_string ();
- if (str.length ())
+ SCM channel_mapping = get_property ("midiChannelMapping");
+ if (channel_mapping != ly_symbol2scm ("instrument")
+ && staff_map_.size ())
+ return staff_map_.begin ()->second;
+
+ map<string, Audio_staff*>::const_iterator i = staff_map_.find (voice);
+ if (i != staff_map_.end ())
+ return i->second;
+ map<string, Audio_staff*>::const_iterator e = staff_map_.find ("");
+ if (staff_map_.size () == 1 && e != staff_map_.end ())
{
- instrument_name_ = new Audio_text (Audio_text::INSTRUMENT_NAME, str);
- announce_element (Audio_element_info (instrument_name_, 0));
- instrument_ = new Audio_instrument (str);
- announce_element (Audio_element_info (instrument_, 0));
-
- audio_staff_->add_audio_item (instrument_);
- audio_staff_->add_audio_item (instrument_name_);
-
- /*
- Have to be here before notes arrive into the staff.
- */
+ staff_map_[voice] = e->second;
+ return e->second;
}
+ return new_audio_staff (voice);
+}
+
+Real
+Staff_performer::get_dynamic (string voice)
+{
+ map<string, Real>::const_iterator i = dynamic_map_.find (voice);
+ if (i != dynamic_map_.end ())
+ return i->second;
+ return 0;
}
void
-Staff_performer::stop_translation_timestep ()
+Staff_performer::process_music ()
+{
+}
+
+void
+Staff_performer::set_instrument (int channel, string voice)
{
+ instrument_ = new Audio_instrument (instrument_string_);
+ instrument_->channel_ = channel;
+ announce_element (Audio_element_info (instrument_, 0));
+ Audio_staff* audio_staff = get_audio_staff (voice);
+ audio_staff->add_audio_item (instrument_);
SCM proc = ly_lily_module_constant ("percussion?");
SCM drums = scm_call_1 (proc, ly_symbol2scm (instrument_string_.c_str ()));
- audio_staff_->percussion_ = (drums == SCM_BOOL_T);
+ audio_staff->percussion_ = (drums == SCM_BOOL_T);
+}
- if (name_)
- name_ = 0;
- if (tempo_)
- tempo_ = 0;
+void
+Staff_performer::set_instrument_name (string voice)
+{
+ instrument_name_ = new Audio_text (Audio_text::INSTRUMENT_NAME,
+ instrument_string_);
+ announce_element (Audio_element_info (instrument_name_, 0));
+ get_audio_staff (voice)->add_audio_item (instrument_name_);
+}
+
+void
+Staff_performer::stop_translation_timestep ()
+{
+ name_ = 0;
+ tempo_ = 0;
instrument_name_ = 0;
instrument_ = 0;
}
void
Staff_performer::finalize ()
{
- audio_staff_ = 0;
+ staff_map_.clear ();
+ channel_map_.clear ();
}
string
return instrument_string_;
}
+int
+Staff_performer::get_channel (string instrument)
+{
+ SCM channel_mapping = get_property ("midiChannelMapping");
+ map<string, int>& channel_map
+ = (channel_mapping != ly_symbol2scm ("instrument"))
+ ? channel_map_
+ : static_channel_map_;
+
+ map<string, int>::const_iterator i = channel_map.find (instrument);
+ if (i != channel_map.end ())
+ return i->second;
+
+ int channel = (channel_mapping == ly_symbol2scm ("staff"))
+ ? channel_count_++
+ : channel_map.size ();
+
+ /* MIDI players tend to ignore instrument settings on channel
+ 10, the percussion channel. */
+ if (channel % 16 == 9)
+ {
+ channel_map["percussion"] = channel++;
+ channel_count_++;
+ }
+
+ if (channel > 15)
+ {
+ warning (_ ("MIDI channel wrapped around"));
+ warning (_ ("remapping modulo 16"));
+ channel = channel % 16;
+ }
+
+ channel_map[instrument] = channel;
+ return channel;
+}
+
void
Staff_performer::acknowledge_audio_element (Audio_element_info inf)
{
if (Audio_item *ai = dynamic_cast<Audio_item *> (inf.elem_))
{
- /* map each context (voice) to its own channel */
- Context *c = inf.origin_contexts (this)[0];
- string id = c->id_string ();
- int channel = channel_map_.size ();
- /* MIDI players tend to ignore instrument settings on channel
- 10, the percussion channel. */
- if (channel % 16 == 9)
- channel_map_[""] = channel++;
-
- map<string, int>::const_iterator i = channel_map_.find (id);
- if (i != channel_map_.end ())
- channel = i->second;
- else
- channel_map_[id] = channel;
-
- ai->channel_ = channel;
- audio_staff_->add_audio_item (ai);
+ /* map each context (voice) to its own track */
+ Context* c = inf.origin_contexts (this)[0];
+ string voice;
+ if (c->is_alias (ly_symbol2scm ("Voice")))
+ voice = c->id_string ();
+ SCM channel_mapping = get_property ("midiChannelMapping");
+ if (channel_mapping == ly_symbol2scm ("voice"))
+ channel_ = get_channel (voice);
+ string str = new_instrument_string ();
+ if (str.length ())
+ {
+ if (channel_mapping != ly_symbol2scm ("voice"))
+ channel_ = get_channel (str);
+ set_instrument (channel_, voice);
+ set_instrument_name (voice);
+ }
+ Audio_staff* audio_staff = get_audio_staff (voice);
+ ai->channel_ = channel_;
+ // Output volume as velocity and disable Midi_dynamic output
+ if (Audio_dynamic *d = dynamic_cast<Audio_dynamic *> (inf.elem_))
+ {
+ dynamic_map_[voice] = d->volume_;
+ d->volume_ = -1;
+ }
+ if (Real d = get_dynamic (voice))
+ if (Audio_note *n = dynamic_cast<Audio_note *> (inf.elem_))
+ n->volume_ = d;
+ audio_staff->add_audio_item (ai);
}
}
bool end_of_line_visible = true;
if (Spanner *s = dynamic_cast<Spanner *>(footnote_grobs_[i]))
{
- Real spanner_placement = min (1.0,
- max (robust_scm2double (s->get_property ("spanner-placement"), -1.0),
- -1.0));
+ Direction spanner_placement = robust_scm2dir (s->get_property ("spanner-placement"), LEFT);
+ if (spanner_placement == CENTER)
+ spanner_placement = LEFT;
- spanner_placement = (spanner_placement + 1.0) / 2.0;
- int rpos = s->spanned_rank_interval ()[RIGHT];
- pos = (int)((rpos - pos) * spanner_placement + pos + 0.5);
+ pos = s->spanned_rank_interval ()[spanner_placement];
}
if (Item *item = dynamic_cast<Item *>(footnote_grobs_[i]))
end_of_line_visible = (LEFT == item->break_status_dir ());
}
- if (pos < (int)start)
+ if (pos < int (start))
continue;
- if (pos > (int)end)
+ if (pos > int (end))
break;
- if (pos == (int)start && end_of_line_visible)
+ if (pos == int (start) && end_of_line_visible)
continue;
- if (pos == (int)end && !end_of_line_visible)
+ if (pos == int (end) && !end_of_line_visible)
continue;
if (!footnote_grobs_[i]->is_live ())
continue;
%%
%% Footnotes
%%
- footnote-separator-markup = \markup { \draw-hline }
+ footnote-separator-markup = \markup { \fill-line \override #`(span-factor . 1/2) { \draw-hline } }
footnote-padding = 0.5\mm
melismaBusyProperties = #default-melisma-properties
instrumentName = #"bright acoustic"
+ midiChannelMapping = #'instrument
%% quarter = 60
tempoWholesPerMinute = #(ly:make-moment 15 1)
\set squashedPosition = #0
\override NoteHead #'style = #'slash
\override Accidental #'stencil = ##f
+ \override AccidentalCautionary #'stencil = ##f
}
improvisationOff = {
\unset squashedPosition
\revert NoteHead #'style
\revert Accidental #'stencil
+ \revert AccidentalCautionary #'stencil
}
the-script-dir=$(wildcard $(script-dir))
ABC2LY = $(script-dir)/abc2ly.py
+MIDI2LY = $(script-dir)/midi2ly.py
MUSICXML2LY = $(script-dir)/musicxml2ly.py
CONVERT_LY = $(script-dir)/convert-ly.py
LILYPOND_BOOK = $(script-dir)/lilypond-book.py
--- /dev/null
+.SUFFIXES: .midi
+
+$(outdir)/%.ly: %.midi
+ $(PYTHON) $(MIDI2LY) -o $(outdir) $<
+
+$(outdir)/%.midi: %.ly $(LILYPOND_BINARY)
+ touch $(foreach f, $(HEADER_FIELDS), $(outdir)/$*.$f)
+ $(LILYPOND_BINARY) $(HEADER_FIELDS:%=-H %) -o $(outdir) $<
+
+$(outdir)/%-midi.ly: $(outdir)/%.midi $(MIDI2LY)
+ (echo '\header {'; for f in $(HEADER_FIELDS); do echo -n $$f'="'; cat $(outdir)/$*.$$f; echo '"'; done; echo '}') > $(outdir)/$*.header
+ $(PYTHON) $(MIDI2LY) $(shell cat $(outdir)/$*.options) --include-header=$(outdir)/$*.header -o $(outdir) $<
+
+$(outdir)/%.diff: %.ly $(outdir)/%-midi.ly
+ $(DIFF) -puN $(MIDI2LY_IGNORE_RES) $^ > $@ || cat $@
+
+$(outdir)/midi.diff: $(OUT_DIFF_FILES)
+ cat $(OUT_DIFF_FILES) > $@
--- /dev/null
+default:
+
+##local-test: $(outdir)/midi.diff
+
+check: $(outdir)/midi.diff local-WWW-1 local-WWW-2
+
+test: check
--- /dev/null
+MIDI_FILES = $(call src-wildcard,*.midi)
+HEADER_FILES = $(call src-wildcard,*.header)
+OUT_LY_FILES = $(sort ${MIDI_FILES:%.midi=$(outdir)/%.ly} ${LY_FILES:%.ly=$(outdir)/%-midi.ly} )
+OUT_FILES = $(OUT_LY_FILES)
+HEADER_FIELDS = texidoc options
+OUT_DIFF_FILES = ${LY_FILES:%.ly=$(outdir)/%.diff}
+MIDI2LY_IGNORE_RES = -I 'Lily was here' -I '^\\version ' -I 'TEXT_EVENT.*GNU LilyPond' -I '^% included from'
+DIFF = diff
+
+EXTRA_DIST_FILES += $(MIDI_FILES) $(HEADER_FILES)
fet_beginchar ("8th Flag (up)", "u3");
save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio;
+ save flagspace, total_depth, flag_count;
+ flag_count = 1;
+ total_depth# = 3 staff_space# - blot_diameter# / 2;
flare = staff_space;
+ flagspace# = staff_space#;
hip_depth_ratio = .72;
- foot_width_ratio = .8;
hip_width# = upflag_width# - hip_thickness# / 2;
- foot_depth# = 3 staff_space# - blot_diameter# / 2;
+ foot_width_ratio = .8;
+
+ (flag_count - 1) * flagspace# + foot_depth# = total_depth#;
+
define_pixels (hip_width, foot_depth);
+ define_whole_vertical_pixels (flagspace);
- set_char_box (0,
- hip_width# + stemthickness# / 2 + right_upflag_space#,
+ set_char_box (0, hip_width# + stemthickness# / 2 + right_upflag_space#,
foot_depth# + foot_thickness# / 2, stemthickness# / 2);
- draw_flag ((0,0), flare, (hip_width, foot_depth),
+ draw_flag ((0, -(flag_count - 1) * flagspace),
+ flare, (hip_width, foot_depth),
hip_depth_ratio, foot_width_ratio,
hip_thickness, foot_thickness, 1);
- draw_square_block ((-0.5 stemthickness_rounded, -staff_space_rounded),
- (0, 0));
+ draw_square_block ((-0.5 stemthickness_rounded, 0),
+ (0, (-flag_count * staff_space_rounded)));
fet_endchar;
save flare, hip_depth_ratio, hip_width, foot_depth, foot_width_ratio;
save flagspace, total_depth, flag_count;
- total_depth# = 3.5 staff_space# - blot_diameter# / 2;
flag_count = 2;
+ total_depth# = 3.5 staff_space# - blot_diameter# / 2;
flare = .85 staff_space;
flagspace# = .85 staff_space#;
hip_depth_ratio = .72;
hip_width# = upflag_width# - hip_thickness# / 2;
- flagspace# + foot_depth# = total_depth#;
foot_width_ratio = .8;
+
+ (flag_count - 1) * flagspace# + foot_depth# = total_depth#;
+
define_pixels (hip_width, foot_depth);
define_whole_vertical_pixels (flagspace);
- set_char_box (0,
- hip_width# + stemthickness# / 2 + right_upflag_space#,
+ set_char_box (0, hip_width# + stemthickness# / 2 + right_upflag_space#,
total_depth# + foot_thickness# / 2, stemthickness# / 2);
- draw_flag ((0, -flagspace), flare, (hip_width, foot_depth),
+ draw_flag ((0, -(flag_count - 1) * flagspace),
+ flare, (hip_width, foot_depth),
hip_depth_ratio, foot_width_ratio,
hip_thickness, foot_thickness, 1);
hip_thickness, foot_thickness);
draw_square_block ((-0.5 stemthickness_rounded, 0),
- (0, -2 staff_space_rounded));
+ (0, (-flag_count * staff_space_rounded)));
fet_endchar;
set_char_box (0, hip_width# + right_upflag_space#,
total_depth# + foot_thickness# / 2, stemthickness# / 2);
- draw_flag ((0, -2 flagspace), flare, (hip_width, foot_depth),
+ draw_flag ((0, -(flag_count - 1) * flagspace),
+ flare, (hip_width, foot_depth),
hip_depth_ratio, foot_width_ratio,
hip_thickness, foot_thickness, 1);
hip_thickness, foot_thickness);
draw_square_block ((-0.5 stemthickness_rounded, 0),
- (0, -3 staff_space_rounded));
+ (0, (-flag_count * staff_space_rounded)));
fet_endchar;
save flagspace, total_depth, flag_count;
flag_count = 4;
+ total_depth# = 5.25 staff_space#;
flare = .85 staff_space;
flagspace# = .9 staff_space#;
hip_depth_ratio = .72;
hip_width# = upflag_width# - hip_thickness# / 2;
- total_depth# = 5.25 staff_space#;
foot_width_ratio = .8;
(flag_count - 1) * flagspace# + foot_depth# = total_depth#;
set_char_box (0, hip_width# + right_upflag_space#,
total_depth# + foot_thickness# / 2, stemthickness# / 2);
- draw_flag ((0, -(flag_count - 1) * flagspace), flare,
- (hip_width, foot_depth),
+ draw_flag ((0, -(flag_count - 1) * flagspace),
+ flare, (hip_width, foot_depth),
hip_depth_ratio, foot_width_ratio,
hip_thickness, foot_thickness, 1);
hip_thickness, foot_thickness);
draw_square_block ((-0.5 stemthickness_rounded, 0),
- (0, -4 staff_space_rounded));
+ (0, (-flag_count * staff_space_rounded)));
fet_endchar;
save flagspace, total_depth, flag_count;
flag_count = 5;
+ total_depth# = 6.25 staff_space#;
flare = .85 staff_space;
flagspace# = .93 staff_space#;
hip_depth_ratio = .72;
hip_width# = upflag_width# - hip_thickness# / 2;
- total_depth# = 6.25 staff_space#;
foot_width_ratio = .8;
(flag_count - 1) * flagspace# + foot_depth# = total_depth#;
set_char_box (0, hip_width# + right_upflag_space#,
total_depth# + foot_thickness# / 2, stemthickness# / 2);
- draw_flag ((0, -(flag_count - 1) * flagspace), flare,
- (hip_width, foot_depth),
+ draw_flag ((0, -(flag_count - 1) * flagspace),
+ flare, (hip_width, foot_depth),
hip_depth_ratio, foot_width_ratio,
hip_thickness, foot_thickness, 1);
hip_thickness, foot_thickness);
draw_square_block ((-0.5 stemthickness_rounded, 0),
- (0, -5 staff_space_rounded));
+ (0, (-flag_count * staff_space_rounded)));
fet_endchar;
save flagspace, total_depth, flag_count;
flag_count = 1;
+ total_depth# = 2.85 staff_space#;
flare = staff_space;
flagspace# = .9 staff_space#;
hip_depth_ratio = .72;
hip_width# = downflag_width# - hip_thickness# / 2;
- total_depth# = 2.85 staff_space#;
foot_width_ratio = .8;
(flag_count - 1) * flagspace# + foot_depth# = total_depth#;
- define_pixels (hip_width, flagspace, foot_depth);
+ define_pixels (hip_width, foot_depth);
+ define_whole_vertical_pixels (flagspace);
set_char_box (0, hip_width# + right_downflag_space#,
total_depth# + foot_thickness# / 2, stemthickness# / 2)
- draw_flag ((0, -(flag_count - 1) * flagspace), flare,
- (hip_width, foot_depth),
+ draw_flag ((0, -(flag_count - 1) * flagspace),
+ flare, (hip_width, foot_depth),
hip_depth_ratio, foot_width_ratio,
hip_thickness, foot_thickness, 0);
draw_square_block ((-0.5 stemthickness_rounded, 0),
- (0, -staff_space_rounded));
-
- y_mirror_char;
-fet_endchar;
-
-
-%%%%%%%%
-%
-% Single Stroke for Short Appogiatura
-%
-
-fet_beginchar ("grace dash (up)", "ugrace");
- save flare, hip_depth_ratio, hip_width, foot_depth;
-
- hip_depth_ratio = .72;
- flare# = staff_space#;
- hip_width# = upflag_width# - hip_thickness# / 2;
- foot_depth# = 3 staff_space#;
-
- define_pixels (hip_width, foot_depth);
-
- set_char_box (hip_width# * hip_depth_ratio,
- hip_width# + right_upflag_space#,
- foot_depth# * hip_depth_ratio, -flare#)
-
- pickup pencircle scaled 1.5 stemthickness;
-
- z1 = (-b, -d);
- z2 = (w, h);
-
- penpos1 (1.5 stemthickness, angle (z2 - z1) - 90);
- penpos2 (1.5 stemthickness, angle (z2 - z1) - 90);
-
- fill z1l
- -- z2l
- .. top z2
- .. rt z2
- .. z2r
- -- z1r
- .. bot z1
- .. lft z1
- .. cycle;
-
- penlabels (1, 2);
-fet_endchar;
-
-
-fet_beginchar ("grace dash (down)", "dgrace");
- save flare, hip_depth_ratio, hip_width, foot_depth;
- save total_depth;
-
- hip_depth_ratio = .72 ;
- flare# = .99 staff_space#;
- hip_width# = downflag_width# - hip_thickness# / 2;
- total_depth# = 2.85 staff_space#;
- foot_depth# = total_depth#;
- foot_width_ratio = .8;
-
- define_pixels (hip_width, foot_depth);
-
- set_char_box (hip_width# * hip_depth_ratio,
- hip_width# + right_downflag_space#,
- foot_depth# * hip_depth_ratio, -flare#)
-
- pickup pencircle scaled 1.5 stemthickness;
-
- z1 = (-b, -d);
- z2 = (w, h);
-
- penpos1 (1.5 stemthickness, angle (z2 - z1) - 90);
- penpos2 (1.5 stemthickness, angle (z2 - z1) - 90);
-
- fill z1l
- -- z2l
- .. top z2
- .. rt z2
- .. z2r
- -- z1r
- .. bot z1
- .. lft z1
- .. cycle;
+ (0, (-flag_count * staff_space_rounded)));
y_mirror_char;
fet_endchar;
save flagspace, total_depth, flag_count;
flag_count = 2;
+ total_depth# = 3.0 staff_space# - blot_diameter# / 2;
flare = .8 staff_space;
flagspace# = .9 staff_space#;
hip_depth_ratio = .85;
hip_width# = downflag_width# - hip_thickness# / 2;
- total_depth# = 3.0 staff_space# - blot_diameter# / 2;
foot_width_ratio = .95;
(flag_count - 1) * flagspace# + foot_depth# = total_depth#;
- set_char_box (0, hip_width# + right_downflag_space#,
- total_depth# + foot_thickness# / 2, stemthickness# / 2);
-
define_pixels (hip_width, foot_depth);
define_whole_vertical_pixels (flagspace);
- draw_flag ((0, -(flag_count - 1) * flagspace), flare,
- (hip_width, foot_depth),
+ set_char_box (0, hip_width# + right_downflag_space#,
+ total_depth# + foot_thickness# / 2, stemthickness# / 2);
+
+ draw_flag ((0, -(flag_count - 1) * flagspace),
+ flare, (hip_width, foot_depth),
hip_depth_ratio, foot_width_ratio,
hip_thickness, foot_thickness, 0);
hip_thickness, foot_thickness);
draw_square_block ((-0.5 stemthickness_rounded, 0),
- (0, -2 staff_space_rounded));
+ (0, (-flag_count * staff_space_rounded)));
y_mirror_char;
fet_endchar;
save flagspace, total_depth, flag_count;
flag_count = 3;
+ total_depth# = 3.75 * staff_space# - blot_diameter# / 2;
flare = .84 staff_space;
flagspace# = .9 staff_space#;
hip_depth_ratio = .85;
hip_width# = downflag_width# - hip_thickness# / 2;
- total_depth# = 3.85 staff_space#;
foot_width_ratio = .95;
(flag_count - 1) * flagspace# + foot_depth# = total_depth#;
set_char_box (0, hip_width# + right_downflag_space#,
total_depth# + foot_thickness# / 2, stemthickness# / 2);
- draw_flag ((0, -(flag_count - 1) * flagspace), flare,
- (hip_width, foot_depth),
+ draw_flag ((0, -(flag_count - 1) * flagspace),
+ flare, (hip_width, foot_depth),
hip_depth_ratio, foot_width_ratio,
hip_thickness, foot_thickness, 0);
hip_thickness, foot_thickness);
draw_square_block ((-0.5 stemthickness_rounded, 0),
- (0, -3 staff_space_rounded));
+ (0, (-flag_count * staff_space_rounded)));
y_mirror_char;
fet_endchar;
save flagspace, total_depth, flag_count;
flag_count = 4;
+ total_depth# = 4.35 staff_space#;
flare = .8 staff_space;
flagspace# = .9 staff_space#;
hip_depth_ratio = .85;
hip_width# = downflag_width# - hip_thickness# / 2;
- total_depth# = 4.35 staff_space#;
foot_width_ratio = .98;
(flag_count - 1) * flagspace# + foot_depth# = total_depth#;
set_char_box (0, hip_width# + right_downflag_space#,
total_depth# + foot_thickness# / 2, stemthickness# / 2);
- draw_flag ((0, -(flag_count - 1) * flagspace), flare,
- (hip_width, foot_depth),
+ draw_flag ((0, -(flag_count - 1) * flagspace),
+ flare, (hip_width, foot_depth),
hip_depth_ratio, foot_width_ratio,
hip_thickness, foot_thickness, 0);
hip_thickness, foot_thickness);
draw_square_block ((-0.5 stemthickness_rounded, 0),
- (0, -4 staff_space_rounded));
+ (0, (-flag_count * staff_space_rounded)));
y_mirror_char;
fet_endchar;
save flagspace, total_depth, flag_count;
flag_count = 5;
+ total_depth# = 5.25 staff_space#;
flare = .8 staff_space;
flagspace# = .9 staff_space#;
hip_depth_ratio = .85;
hip_width# = downflag_width# - hip_thickness# / 2;
- total_depth# = 5.25 staff_space#;
foot_width_ratio = .98;
(flag_count - 1) * flagspace# + foot_depth# = total_depth#;
+
define_pixels (hip_width, foot_depth);
define_whole_vertical_pixels (flagspace);
set_char_box (0, hip_width# + right_downflag_space#,
total_depth# + foot_thickness# / 2, stemthickness# / 2);
- draw_flag ((0, -(flag_count - 1) * flagspace), flare,
- (hip_width, foot_depth),
+ draw_flag ((0, -(flag_count - 1) * flagspace),
+ flare, (hip_width, foot_depth),
hip_depth_ratio, foot_width_ratio,
hip_thickness, foot_thickness, 0);
hip_thickness, foot_thickness);
draw_square_block ((-0.5 stemthickness_rounded, 0),
- (0, -5 staff_space_rounded));
+ (0, (-flag_count * staff_space_rounded)));
+
+ y_mirror_char;
+fet_endchar;
+
+
+%%%%%%%%
+%
+% Single Stroke for Short Appogiatura
+%
+
+fet_beginchar ("grace dash (up)", "ugrace");
+ save flare, hip_depth_ratio, hip_width, foot_depth;
+
+ hip_depth_ratio = .72;
+ flare# = staff_space#;
+ hip_width# = upflag_width# - hip_thickness# / 2;
+ foot_depth# = 3 staff_space#;
+
+ define_pixels (hip_width, foot_depth);
+
+ set_char_box (hip_width# * hip_depth_ratio,
+ hip_width# + right_upflag_space#,
+ foot_depth# * hip_depth_ratio, -flare#)
+
+ pickup pencircle scaled 1.5 stemthickness;
+
+ z1 = (-b, -d);
+ z2 = (w, h);
+
+ penpos1 (1.5 stemthickness, angle (z2 - z1) - 90);
+ penpos2 (1.5 stemthickness, angle (z2 - z1) - 90);
+
+ fill z1l
+ -- z2l
+ .. top z2
+ .. rt z2
+ .. z2r
+ -- z1r
+ .. bot z1
+ .. lft z1
+ .. cycle;
+
+ penlabels (1, 2);
+fet_endchar;
+
+
+fet_beginchar ("grace dash (down)", "dgrace");
+ save flare, hip_depth_ratio, hip_width, foot_depth;
+ save total_depth;
+
+ hip_depth_ratio = .72 ;
+ flare# = .99 staff_space#;
+ hip_width# = downflag_width# - hip_thickness# / 2;
+ total_depth# = 2.85 staff_space#;
+ foot_depth# = total_depth#;
+ foot_width_ratio = .8;
+
+ define_pixels (hip_width, foot_depth);
+
+ set_char_box (hip_width# * hip_depth_ratio,
+ hip_width# + right_downflag_space#,
+ foot_depth# * hip_depth_ratio, -flare#)
+
+ pickup pencircle scaled 1.5 stemthickness;
+
+ z1 = (-b, -d);
+ z2 = (w, h);
+
+ penpos1 (1.5 stemthickness, angle (z2 - z1) - 90);
+ penpos2 (1.5 stemthickness, angle (z2 - z1) - 90);
+
+ fill z1l
+ -- z2l
+ .. top z2
+ .. rt z2
+ .. z2r
+ -- z1r
+ .. bot z1
+ .. lft z1
+ .. cycle;
y_mirror_char;
fet_endchar;
+
fet_endgroup ("flags");
# Urg, Python 2.4 does not define stderr/stdout encoding
# Maybe guess encoding from LANG/LC_ALL/LC_CTYPE?
+reload (sys)
+sys.setdefaultencoding ('utf-8')
+import codecs
+sys.stdout = codecs.getwriter ('utf8') (sys.stdout)
+sys.stderr = codecs.getwriter ('utf8') (sys.stderr)
+
def encoded_write(f, s):
- f.write (s.encode (f.encoding or 'utf_8'))
+ f.write (s.encode (f.encoding or 'utf-8', 'replace'))
# ugh, Python 2.5 optparse requires Unicode strings in some argument
# functions, and refuse them in some other places
def display_encode (s):
- return s.encode (sys.stderr.encoding or 'utf_8')
+ return s.encode (sys.stderr.encoding or 'utf-8', 'replace')
# Lilylib globals.
program_version = '@TOPLEVEL_VERSION@'
@code{midiMinimumVolume}.")
(midiMinimumVolume ,number? "Set the minimum loudness for MIDI.
Ranges from 0 to@tie{}1.")
+ (midiChannelMapping ,symbol? "How to map MIDI channels: per @code{instrument} (default), @code{staff} or @code{voice}.")
(minimumFret ,number? "The tablature auto string-selecting
mechanism selects the highest string with a fret at least
@code{minimumFret}.")
@item
@code{fret-count} -- The number of frets. Default@tie{}4.
@item
+@code{fret-label-custom-format} -- The format string to be used label
+the lowest fret number, when @code{number-type} equals to
+@code{custom}. Default@tie{}\"~a\".
+@item
@code{fret-label-font-mag} -- The magnification of the font used to
label the lowest fret number. Default@tie{}0.5.
@item
string. Default @code{\"x\"}.
@item
@code{number-type} -- Type of numbers to use in fret label. Choices
-include @code{roman-lower}, @code{roman-upper}, and @code{arabic}.
+include @code{roman-lower}, @code{roman-upper}, @code{arabic} and
+@code{custom}. In the later case, the format string is supplied by
+the @code{fret-label-custom-format} property.
Default @code{roman-lower}.
@item
@code{open-string} -- Character string to be used to indicate open
between the two, and @code{staff-affinity} is either @code{UP} or
@code{DOWN}. See @code{staff-staff-spacing} for a description of
the alist structure.")
+ (normalized-endpoints ,pair? "Represents left and right placement
+over the total spanner, where the width of the spanner is normalized
+between 0 and 1.")
(note-names ,vector? "Vector of strings containing names for
easy-notation note heads.")
(spacing-wishes ,ly:grob-array? "An array of note spacing or staff spacing
objects.")
(span-start ,boolean? "Is the note head at the start of a spanner?")
- (spanner-placement ,number? "The place of an annotation on a spanner.
-Note that this number must be between -1 and 1, with -1 representing the
-beginning of the spanner and 1 representing the end. The annotation will
-still be placed at the left or right extremity of the spanner, but this
-number ensures that when line breaking happens, the annotation is assigned
-to the correct broken piece and the footnote is put on the correct page.
-An important caveat is that this number applies to column ranks, not staff
-space. For example, 0 will place the annotation at the middle column of
-its parent's span, which may be to the right or left of the physical middle
-of the spanner.")
+ (spanner-placement ,ly:dir? "The place of an annotation on a spanner.
+LEFT is for the first spanner, and RIGHT is for the last. CENTER will
+place it on the broken spanner that falls closest to the center of the length
+of the entire spanner, although this behavior is unpredictable in situations
+with lots of rhythmic diversity. For predictable results, use LEFT and RIGHT.")
(staff-grouper ,ly:grob? "The staff grouper we belong to.")
(staff-symbol ,ly:grob? "The staff symbol grob that we are in.")
(stem ,ly:grob? "A pointer to a @code{Stem} object.")
. (
;; todo: clean this up a bit: the list is getting
;; rather long.
-
(auto-knee-gap . 5.5)
(beam-thickness . 0.48) ; in staff-space
(round-to-zero-slope . 0.02)))
(direction . ,ly:beam::calc-direction)
+ (normalized-endpoints . ,ly:spanner::calc-normalized-endpoints)
;; only for debugging.
(font-family . roman)
(annotation-balloon . #f)
(annotation-line . #t)
(footnote-text . ,(grob::calc-property-by-copy 'footnote-text))
- (spanner-placement . -1.0)
+ (spanner-placement . LEFT)
(stencil . ,ly:balloon-interface::print-spanner)
(text . ,(grob::calc-property-by-copy 'text))
(Y-extent . #f)
. (
;; 3.5 (or 3 measured from note head) is standard length
;; 32nd, 64th, 128th flagged stems should be longer
- (lengths . (3.5 3.5 3.5 4.5 5.0 6.0))
+ (lengths . (3.5 3.5 3.5 4.25 5.0 6.0))
;; FIXME. 3.5 yields too long beams (according to Ross and
;; looking at Baerenreiter examples) for a number of common
()
#:category graphic
#:properties ((draw-line-markup)
- (line-width))
+ (line-width)
+ (span-factor 1))
"
@cindex drawing a line across a page
-Draws a line across a page.
+Draws a line across a page, where the property @code{span-factor}
+controls what fraction of the page is taken up.
@lilypond[verbatim,quote]
\\markup {
- \\draw-hline
+ \\column {
+ \\draw-hline
+ \\override #'(span-factor . 1/3)
+ \\draw-hline
+ }
}
@end lilypond"
- (interpret-markup layout props (make-draw-line-markup (cons line-width 0))))
+ (interpret-markup layout
+ props
+ (markup #:draw-line (cons (* line-width
+ span-factor)
+ 0))))
(define-markup-command (draw-circle layout props radius thickness filled)
(number? number? boolean?)
(if (null? dot-list)
'()
(let ((this-list (car dot-list)))
- (cons* (list (car this-list) (- (second this-list) base-fret)
- (if (null? (cddr this-list))
- '()
- (third this-list)))
+ (cons* (list
+ ;; string
+ (car this-list)
+ ;; fret
+ (- (second this-list) base-fret)
+ ;; finger
+ (if (null? (cddr this-list))
+ '()
+ (third this-list))
+ ;; color modifier
+ (if (or (null? (cddr this-list))
+ (null? (cdddr this-list)))
+ '()
+ (fourth this-list)))
(subtract-base-fret base-fret (cdr dot-list))))))
(define (drop-paren item-list)
(thickness-factor (assoc-get 'string-thickness-factor details 0))
(alignment
(chain-assoc-get 'align-dir props -0.4)) ; needed only here
- (xo-padding
- (* size (assoc-get 'xo-padding details 0.2))) ; needed only here
+ (xo-padding (assoc-get 'xo-padding details 0.2)) ; needed only here
(parameters (fret-parse-marking-list marking-list my-fret-count))
(capo-fret (assoc-get 'capo-fret parameters 0))
(dot-list (assoc-get 'dot-list parameters))
(let* ( (scale-dot-radius (* size dot-radius))
(scale-dot-thick (* size th))
- (dot-color (assoc-get 'dot-color details 'black))
+ (default-dot-color (assoc-get 'dot-color details 'black))
(finger-label-padding 0.3)
(dot-label-font-mag
(* scale-dot-radius
(extent (cons (- scale-dot-radius) scale-dot-radius))
(finger (caddr mypair))
(finger (if (number? finger) (number->string finger) finger))
+ (inverted-color (eq? 'inverted (cadddr mypair)))
+ (dot-color (if (or (and (eq? default-dot-color 'black) inverted-color)
+ (and (eq? default-dot-color 'white) (not inverted-color)))
+ 'white
+ 'black))
(dot-stencil (if (eq? dot-color 'white)
(ly:stencil-add
(make-circle-stencil
"Put open and mute string indications on diagram, as contained in
@var{xo-list}."
(let* ((xo-font-mag
- (* size (assoc-get
- 'xo-font-magnification details
+ (assoc-get 'xo-font-magnification details
(cond ((or (eq? orientation 'landscape)
(eq? orientation 'opposing-landscape))
0.4)
- (else 0.4)))))
+ (else 0.4))))
(mypair (car xo-list))
(restlist (cdr xo-list))
(glyph-string (if (eq? (car mypair) 'mute)
(fancy-format #f "~@r" base-fret))
((equal? 'arabic number-type)
(fancy-format #f "~d" base-fret))
+ ((equal? 'custom number-type)
+ (fancy-format #f
+ (assoc-get 'fret-label-custom-format
+ details "~a")
+ base-fret))
(else (fancy-format #f "~(~@r~)" base-fret))))
(label-stencil
(centered-stencil
(ly:stencil-translate
label-stencil
(stencil-coordinates
- (1+ (* size label-vertical-offset))
+ (* size (+ 1.0 label-vertical-offset))
(if (eq? label-dir LEFT)
(- label-outside-diagram)
(+ (* size (1- string-count)) label-outside-diagram))))))
at fret location @var{fret-number}. Also, set fret @var{fret-number}
to be the lowest fret on the fret diagram.
-@item (place-fret @var{string-number} @var{fret-number} @var{finger-value})
+@item (place-fret @var{string-number} @var{fret-number} [@var{finger-value} [@var{color-modifier}]])
Place a fret playing indication on string @var{string-number} at fret
-@var{fret-number} with an optional fingering label @var{finger-value}.
+@var{fret-number} with an optional fingering label @var{finger-value},
+and an optional color modifier @var{color-modifier}.
By default, the fret playing indicator is a solid dot. This can be
-changed by setting the value of the variable @var{dot-color}. If the
-@var{finger} part of the @code{place-fret} element is present,
+globally changed by setting the value of the variable @var{dot-color}.
+Setting @var{color-modifier} to @code{inverted} inverts the dot color
+for a specific fingering.
+If the @var{finger} part of the @code{place-fret} element is present,
@var{finger-value} will be displayed according to the setting of the
variable @var{finger-code}. There is no limit to the number of fret
indications per string.
'''
TODO:
- * test on weird and unquantised midi input (lily-devel)
- * update doc and manpage
-
- * simply insert clef changes whenever too many ledger lines
- [to avoid tex capacity exceeded]
- * do not ever quant skips
- * better lyrics handling
- * [see if it is feasible to] move ly-classes to library for use in
- other converters, while leaving midi specific stuff here
'''
import os
s = '%d*%d/%d' % (self.dur, self.num, self.den)
global reference_note
- reference_note.duration = self
+ if reference_note: # debugging
+ reference_note.duration = self
return s
s = s + ' '
elif (self.text.strip ()
and self.type == midi.SEQUENCE_TRACK_NAME
- and not self.text == 'control track'):
+ and not self.text == 'control track'
+ and not self.track.lyrics_p_):
text = self.text.replace ('(MIDI)', '').strip ()
if text:
s = '\n \\set Staff.instrumentName = "%(text)s"\n ' % locals ()
def __repr__ (self):
return 'Text(%d=%s)' % (self.type, self.text)
+def get_voice (channel, music):
+ debug ('channel: ' + str (channel) + '\n')
+ return unthread_notes (music)
+
+class Channel:
+ def __init__ (self, number):
+ self.number = number
+ self.events = []
+ self.music = None
+ def add (self, event):
+ self.events.append (event)
+ def get_voice (self):
+ if not self.music:
+ self.music = self.parse ()
+ return get_voice (self.number, self.music)
+ def parse (self):
+ pitches = {}
+ notes = []
+ music = []
+ last_lyric = 0
+ last_time = 0
+ for e in self.events:
+ t = e[0]
+ if start_quant_clocks:
+ t = quantise_clocks (t, start_quant_clocks)
-def split_track (track):
- chs = {}
- for i in range (16):
- chs[i] = []
+ if (e[1][0] == midi.NOTE_OFF
+ or (e[1][0] == midi.NOTE_ON and e[1][2] == 0)):
+ debug ('%d: NOTE OFF: %s' % (t, e[1][1]))
+ if not e[1][2]:
+ debug (' ...treated as OFF')
+ end_note (pitches, notes, t, e[1][1])
+
+ elif e[1][0] == midi.NOTE_ON:
+ if not pitches.has_key (e[1][1]):
+ debug ('%d: NOTE ON: %s' % (t, e[1][1]))
+ pitches[e[1][1]] = (t, e[1][2])
+ else:
+ debug ('...ignored')
+
+ # all include ALL_NOTES_OFF
+ elif (e[1][0] >= midi.ALL_SOUND_OFF
+ and e[1][0] <= midi.POLY_MODE_ON):
+ for i in pitches:
+ end_note (pitches, notes, t, i)
+
+ elif e[1][0] == midi.META_EVENT:
+ if e[1][1] == midi.END_OF_TRACK:
+ for i in pitches:
+ end_note (pitches, notes, t, i)
+ break
+
+ elif e[1][1] == midi.SET_TEMPO:
+ (u0, u1, u2) = map (ord, e[1][2])
+ us_per_4 = u2 + 256 * (u1 + 256 * u0)
+ seconds_per_1 = us_per_4 * 4 / 1e6
+ music.append ((t, Tempo (seconds_per_1)))
+ elif e[1][1] == midi.TIME_SIGNATURE:
+ (num, dur, clocks4, count32) = map (ord, e[1][2])
+ den = 2 ** dur
+ music.append ((t, Time (num, den)))
+ elif e[1][1] == midi.KEY_SIGNATURE:
+ (alterations, minor) = map (ord, e[1][2])
+ sharps = 0
+ flats = 0
+ if alterations < 127:
+ sharps = alterations
+ else:
+ flats = 256 - alterations
+
+ k = Key (sharps, flats, minor)
+ if not t and global_options.key:
+ # At t == 0, a set --key overrides us
+ k = global_options.key
+ music.append ((t, k))
+
+ # ugh, must set key while parsing
+ # because Note init uses key
+ # Better do Note.calc () at dump time?
+ global_options.key = k
+
+ elif (e[1][1] == midi.LYRIC
+ or (global_options.text_lyrics
+ and e[1][1] == midi.TEXT_EVENT)):
+ self.lyrics_p_ = True
+ if last_lyric:
+ last_lyric.clocks = t - last_time
+ music.append ((last_time, last_lyric))
+ last_time = t
+ last_lyric = Text (midi.LYRIC, e[1][2])
+
+ elif (e[1][1] >= midi.SEQUENCE_NUMBER
+ and e[1][1] <= midi.CUE_POINT):
+ text = Text (e[1][1], e[1][2])
+ text.track = self
+ music.append ((t, text))
+ if (text.type == midi.SEQUENCE_TRACK_NAME):
+ self.name = text.text
+ else:
+ if global_options.verbose:
+ sys.stderr.write ("SKIP: %s\n" % `e`)
+ else:
+ if global_options.verbose:
+ sys.stderr.write ("SKIP: %s\n" % `e`)
- for e in track:
+ if last_lyric:
+ # last_lyric.clocks = t - last_time
+ # hmm
+ last_lyric.clocks = clocks_per_4
+ music.append ((last_time, last_lyric))
+ last_lyric = 0
+
+ i = 0
+ while len (notes):
+ if i < len (music) and notes[0][0] >= music[i][0]:
+ i = i + 1
+ else:
+ music.insert (i, notes[0])
+ del notes[0]
+ return music
+
+class Track (Channel):
+ def __init__ (self):
+ Channel.__init__ (self, None)
+ self.name = None
+ self.channels = {}
+ self.lyrics_p_ = False
+ def _add (self, event):
+ self.events.append (event)
+ def add (self, event, channel=None):
+ if channel == None:
+ self._add (event)
+ else:
+ self.channels[channel] = self.channels.get (channel, Channel (channel))
+ self.channels[channel].add (event)
+ def get_voices (self):
+ return ([self.get_voice ()]
+ + [self.channels[k].get_voice ()
+ for k in sorted (self.channels.keys ())])
+
+def create_track (events):
+ track = Track ()
+ for e in events:
data = list (e[1])
if data[0] > 0x7f and data[0] < 0xf0:
- c = data[0] & 0x0f
+ channel = data[0] & 0x0f
e = (e[0], tuple ([data[0] & 0xf0] + data[1:]))
- chs[c].append (e)
+ track.add (e, channel)
else:
- chs[0].append (e)
-
- threads = []
- i = 0
- for v in chs.values ():
- i += 1
- if not v:
- continue
- debug ('channel: %d\n' % i)
- events = events_on_channel (v)
- t = unthread_notes (events)
- if len (t):
- threads.append (t)
- return threads
+ track.add (e)
+ return track
def quantise_clocks (clocks, quant):
q = int (clocks / quant) * quant
except KeyError:
pass
-def events_on_channel (channel):
- pitches = {}
-
- notes = []
- events = []
- last_lyric = 0
- last_time = 0
- for e in channel:
- t = e[0]
-
- if start_quant_clocks:
- t = quantise_clocks (t, start_quant_clocks)
-
-
- if (e[1][0] == midi.NOTE_OFF
- or (e[1][0] == midi.NOTE_ON and e[1][2] == 0)):
- debug ('%d: NOTE OFF: %s' % (t, e[1][1]))
- if not e[1][2]:
- debug (' ...treated as OFF')
- end_note (pitches, notes, t, e[1][1])
-
- elif e[1][0] == midi.NOTE_ON:
- if not pitches.has_key (e[1][1]):
- debug ('%d: NOTE ON: %s' % (t, e[1][1]))
- pitches[e[1][1]] = (t, e[1][2])
- else:
- debug ('...ignored')
-
- # all include ALL_NOTES_OFF
- elif (e[1][0] >= midi.ALL_SOUND_OFF
- and e[1][0] <= midi.POLY_MODE_ON):
- for i in pitches:
- end_note (pitches, notes, t, i)
-
- elif e[1][0] == midi.META_EVENT:
- if e[1][1] == midi.END_OF_TRACK:
- for i in pitches:
- end_note (pitches, notes, t, i)
- break
-
- elif e[1][1] == midi.SET_TEMPO:
- (u0, u1, u2) = map (ord, e[1][2])
- us_per_4 = u2 + 256 * (u1 + 256 * u0)
- seconds_per_1 = us_per_4 * 4 / 1e6
- events.append ((t, Tempo (seconds_per_1)))
- elif e[1][1] == midi.TIME_SIGNATURE:
- (num, dur, clocks4, count32) = map (ord, e[1][2])
- den = 2 ** dur
- events.append ((t, Time (num, den)))
- elif e[1][1] == midi.KEY_SIGNATURE:
- (alterations, minor) = map (ord, e[1][2])
- sharps = 0
- flats = 0
- if alterations < 127:
- sharps = alterations
- else:
- flats = 256 - alterations
-
- k = Key (sharps, flats, minor)
- if not t and global_options.key:
- # At t == 0, a set --key overrides us
- k = global_options.key
- events.append ((t, k))
-
- # ugh, must set key while parsing
- # because Note init uses key
- # Better do Note.calc () at dump time?
- global_options.key = k
-
- elif (e[1][1] == midi.LYRIC
- or (global_options.text_lyrics and e[1][1] == midi.TEXT_EVENT)):
- if last_lyric:
- last_lyric.clocks = t - last_time
- events.append ((last_time, last_lyric))
- last_time = t
- last_lyric = Text (midi.LYRIC, e[1][2])
-
- elif (e[1][1] >= midi.SEQUENCE_NUMBER
- and e[1][1] <= midi.CUE_POINT):
- events.append ((t, Text (e[1][1], e[1][2])))
- else:
- if global_options.verbose:
- sys.stderr.write ("SKIP: %s\n" % `e`)
- pass
- else:
- if global_options.verbose:
- sys.stderr.write ("SKIP: %s\n" % `e`)
- pass
-
- if last_lyric:
- # last_lyric.clocks = t - last_time
- # hmm
- last_lyric.clocks = clocks_per_4
- events.append ((last_time, last_lyric))
- last_lyric = 0
-
- i = 0
- while len (notes):
- if i < len (events) and notes[0][0] >= events[i][0]:
- i = i + 1
- else:
- events.insert (i, notes[0])
- del notes[0]
- return events
-
def unthread_notes (channel):
threads = []
while channel:
def dump_voice (thread, skip):
global reference_note, time
-
- # urg LilyPond doesn't start at c4, but
- # remembers from previous tracks!
- # reference_note = Note (clocks_per_4, 4*12, 0)
ref = Note (0, 4*12, 0)
if not reference_note:
reference_note = ref
return 'voice' + number2ascii (i)
return ''
+def lst_append (lst, x):
+ lst.append (x)
+ return lst
+
def get_voice_layout (average_pitch):
d = {}
for i in range (len (average_pitch)):
- d[average_pitch[i]] = i
+ d[average_pitch[i]] = lst_append (d.get (average_pitch[i], []), i)
s = list (reversed (sorted (average_pitch)))
non_empty = len (filter (lambda x: x, s))
names = ['One', 'Two']
for i, n in zip (s, names):
if i:
v = d[i]
+ if type (v) == list:
+ d[i] = v[1:]
+ v = v[0]
layout[v] = n
return layout
return Clef (3)
return Clef (2)
+class Staff:
+ def __init__ (self, track):
+ self.voices = track.get_voices ()
+ def dump (self, i):
+ return dump_track (self.voices, i)
+
def convert_midi (in_file, out_file):
global clocks_per_1, clocks_per_4, key
global start_quant_clocks
if global_options.verbose:
print 'allowed tuplet clocks:', allowed_tuplet_clocks
- tracks = []
- for t in midi_dump[1]:
- tracks.append (split_track (t))
+ tracks = [create_track (t) for t in midi_dump[1]]
+ # urg, parse all global track events, such as Key first
+ # this fixes key in different voice/staff problem
+ for t in tracks:
+ t.music = t.parse ()
+ prev = None
+ staves = []
+ for t in tracks:
+ voices = t.get_voices ()
+ if ((t.name and prev and prev.name)
+ and t.name.split (':')[0] == prev.name.split (':')[0]):
+ # staves[-1].voices += voices
+ # all global track events first
+ staves[-1].voices = ([staves[-1].voices[0]]
+ + [voices[0]]
+ + staves[-1].voices[1:]
+ + voices[1:])
+ else:
+ staves.append (Staff (t))
+ prev = t
tag = '%% Lily was here -- automatically converted by %s from %s' % ( program_name, in_file)
s = tag
s += r'''
-\version "2.7.38"
+\version "2.13.53"
'''
s += r'''
s += '\n'
s += '% end\n'
- for i in range (len (tracks)):
- s = s + dump_track (tracks[i], i)
+ for i, t in enumerate (staves):
+ s += t.dump (i)
s += '\n\\score {\n <<\n'
i = 0
- for t in tracks:
+ for i, staff in enumerate (staves):
track_name = get_track_name (i)
- item = track_first_item (t)
+ item = track_first_item (staff.voices)
staff_name = track_name
context = None
- if not i and not item and len (tracks) > 1:
+ if not i and not item and len (staves) > 1:
# control track
staff_name = get_track_name (1)
context = 'Staff'
context = 'Lyrics'
if context:
s += ' \\context %(context)s=%(staff_name)s \\%(track_name)s\n' % locals ()
- i += 1
- s = s + ' >>\n}\n'
+
+ s = s + ''' >>
+ \layout {}
+ \midi {}
+}
+'''
progress (_ ("%s output to `%s'...") % ('LY', out_file))