@end itemize
-@end ignore
-
@subheading Program usage
Este libro explica la manera de ejecutar el programa y cómo integrar
<html>
<!-- This page is automatically generated by translation-status.py from
-translations.template.html; DO NOT EDIT !-->
+translations.template.html.in; DO NOT EDIT !-->
<!--
Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
is finished.
</p>
- <p><i>Last updated Tue Feb 26 15:43:29 UTC 2008
+ <p><i>Last updated Sun Mar 16 15:46:21 UTC 2008
</i></p>
<table align="center" border="2">
<tr align="center">
<th>es</th>
</tr>
<tr align="left">
- <td>Section titles<br>(406)</td>
+ <td>Section titles<br>(396)</td>
<td>John Mandereau<br>
Jean-Charles Malahieude<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #1fff1f">up to date</span><br>
+ <span style="background-color: #6fff29">partially up to date</span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #1fff1f">up to date</span><br>
+ <span style="background-color: #6fff29">partially up to date</span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #4efe25">partially up-to-date (93 %)</span><br>
+ <span style="background-color: #2cff20">partially up to date</span><br>
</td>
</tr>
<tr align="left">
<small>Jean-Charles Malahieude<br>
Jean-Yves Baudais</small><br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #39ff22">partially up-to-date (96 %)</span><br>
+ <span style="background-color: #39ff22">partially up to date</span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #39ff22">partially up-to-date (96 %)</span><br>
+ <span style="background-color: #39ff22">partially up to date</span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #d587ff"></span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
</td>
</tr>
<tr align="left">
Valentin Villenave<br>
John Mandereau</small><br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #ff8f50">partially up-to-date (23 %)</span><br>
+ <span style="background-color: #ff8f50">partially up to date</span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #40fe23">partially up-to-date (95 %)</span><br>
+ <span style="background-color: #40fe23">partially up to date</span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
<small>Jean-Charles Malahieude<br>
John Mandereau</small><br>
<span style="background-color: #dfef77">partially translated (39 %)</span><br>
- <span style="background-color: #a5ff31">partially up-to-date (80 %)</span><br>
+ <span style="background-color: #a5ff31">partially up to date</span><br>
</td>
<td> <span style="background-color: #d0f0f8">not translated</span><br>
</td>
- <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ <td> <span style="background-color: #dfef77">partially translated (27 %)</span><br>
</td>
</tr>
<tr align="left">
- <td>4 Tweaking output<br>(11862)</td>
+ <td>4 Tweaking output<br>(12134)</td>
<td>Valentin Villenave<br>
Nicolas Klutchnikoff<br>
<small>Jean-Charles Malahieude<br>
John Mandereau</small><br>
- <span style="background-color: #dfef77">partially translated (16 %)</span><br>
- <span style="background-color: #ff6f57">partially up-to-date (9 %)</span><br>
+ <span style="background-color: #dfef77">partially translated (18 %)</span><br>
+ <span style="background-color: #ff6f57">partially up to date</span><br>
</td>
<td>Till Rettig<br>
- <span style="background-color: #dfef77">partially translated (16 %)</span><br>
- <span style="background-color: #ff6f57">partially up-to-date (9 %)</span><br>
+ <span style="background-color: #dfef77">partially translated (18 %)</span><br>
+ <span style="background-color: #ff6f57">partially up to date</span><br>
</td>
<td>Francisco Vila<br>
- <span style="background-color: #dfef77">partially translated (16 %)</span><br>
+ <span style="background-color: #dfef77">partially translated (18 %)</span><br>
<span style="background-color: #d587ff"></span><br>
</td>
</tr>
John Mandereau<br>
Jean-Charles Malahieude</small><br>
<span style="background-color: #dfef77">partially translated (79 %)</span><br>
- <span style="background-color: #7dff2b">partially up-to-date (86 %)</span><br>
+ <span style="background-color: #7dff2b">partially up to date</span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #dfef77">partially translated (79 %)</span><br>
- <span style="background-color: #7dff2b">partially up-to-date (86 %)</span><br>
+ <span style="background-color: #7dff2b">partially up to date</span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #dfef77">partially translated (79 %)</span><br>
</td>
</tr>
<tr align="left">
- <td>A Templates<br>(297)</td>
+ <td>A Templates<br>(483)</td>
<td> <span style="background-color: #d0f0f8">not translated</span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #ff9150">partially up-to-date (24 %)</span><br>
+ <span style="background-color: #ff9150">partially up to date</span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #dfef77">partially translated (91 %)</span><br>
- <span style="background-color: #83fe2c">partially up-to-date (85 %)</span><br>
- </td>
- <td> <span style="background-color: #d0f0f8">not translated</span><br>
- </td>
- </tr>
-</table>
-<p></p>
-
-<table align="center" border="2">
- <tr align="center">
- <th>GNU LilyPond --- program usage</th> <th>fr</th>
- <th>de</th>
- <th>es</th>
- </tr>
- <tr align="left">
- <td>Section titles<br>(384)</td>
- <td>John Mandereau<br>
- Jean-Charles Malahieude<br>
- <span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #1fff1f">up to date</span><br>
- </td>
- <td>Till Rettig<br>
- <span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #1fff1f">up to date</span><br>
- </td>
- <td>Francisco Vila<br>
- <span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #4efe25">partially up-to-date (93 %)</span><br>
- </td>
- </tr>
- <tr align="left">
- <td>1 Install<br>(1477)</td>
- <td>John Mandereau<br>
- Jean-Charles Malahieude<br>
- <span style="background-color: #dfef77">partially translated (11 %)</span><br>
- <span style="background-color: #39ff22">partially up-to-date (96 %)</span><br>
- </td>
- <td> <span style="background-color: #d0f0f8">not translated</span><br>
- </td>
- <td>Francisco Vila<br>
- <span style="background-color: #dfef77">partially translated (11 %)</span><br>
- <span style="background-color: #6fff29">partially up-to-date (88 %)</span><br>
- </td>
- </tr>
- <tr align="left">
- <td>2 Setup<br>(947)</td>
- <td> <span style="background-color: #d0f0f8">not translated</span><br>
- </td>
- <td>Till Rettig<br>
- <span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #39ff22">partially up-to-date (96 %)</span><br>
- </td>
- <td>Francisco Vila<br>
- <span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #d587ff"></span><br>
- </td>
- </tr>
- <tr align="left">
- <td>3 Running LilyPond<br>(2860)</td>
- <td> <span style="background-color: #d0f0f8">not translated</span><br>
- </td>
- <td> <span style="background-color: #d0f0f8">not translated</span><br>
- </td>
- <td> <span style="background-color: #d0f0f8">not translated</span><br>
- </td>
- </tr>
- <tr align="left">
- <td>4 @command{lilypond-book}: Integrating text and music<br>(2840)</td>
- <td> <span style="background-color: #d0f0f8">not translated</span><br>
- </td>
- <td> <span style="background-color: #d0f0f8">not translated</span><br>
- </td>
- <td> <span style="background-color: #d0f0f8">not translated</span><br>
- </td>
- </tr>
- <tr align="left">
- <td>5 Converting from other formats<br>(975)</td>
- <td>Jean-Charles Malahieude<br>
- <span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #1fff1f">up to date</span><br>
- </td>
- <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ <span style="background-color: #83fe2c">partially up to date</span><br>
</td>
<td> <span style="background-color: #d0f0f8">not translated</span><br>
</td>
<th>es</th>
</tr>
<tr align="left">
- <td>Section titles<br>(549)</td>
+ <td>Section titles<br>(539)</td>
<td>John Mandereau<br>
Jean-Charles Malahieude<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #7dff2b">partially up-to-date (86 %)</span><br>
+ <span style="background-color: #b2fe32">partially up to date</span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #7dff2b">partially up-to-date (86 %)</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #39ff22">partially up-to-date (96 %)</span><br>
+ <span style="background-color: #33ff21">partially up to date</span><br>
</td>
</tr>
<tr align="left">
</td>
<td>Till Rettig<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #acff31">partially up-to-date (79 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #acff31">partially up-to-date (79 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
</tr>
<tr align="left">
<small>Valentin Villenave<br>
Jean-Charles Malahieude</small><br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #ff7855">partially up-to-date (13 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #ff7855">partially up-to-date (13 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #1fff1f">up to date</span><br>
+ <span style="background-color: #25fe1f">partially up to date</span><br>
</td>
</tr>
<tr align="left">
- <td>1.2 Rhythms<br>(7056)</td>
+ <td>1.2 Rhythms<br>(7279)</td>
<td>Frédéric Chiasson<br>
<small>Valentin Villenave<br>
Jean-Charles Malahieude</small><br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #ff9c4e">partially up-to-date (29 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #dfef77">partially translated (82 %)</span><br>
- <span style="background-color: #ff9c4e">partially up-to-date (29 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #dfef77">partially translated (87 %)</span><br>
- <span style="background-color: #1fff1f">up to date</span><br>
+ <span style="background-color: #5bff27">partially up to date</span><br>
</td>
</tr>
<tr align="left">
- <td>1.3 Expressive marks<br>(1602)</td>
+ <td>1.3 Expressive marks<br>(1681)</td>
<td>Valentin Villenave<br>
<small>Jean-Charles Malahieude<br>
John Mandereau</small><br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #ff9c4e">partially up-to-date (29 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #ff9c4e">partially up-to-date (29 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #91ff2e">partially up-to-date (83 %)</span><br>
+ <span style="background-color: #7dff2b">partially up to date</span><br>
</td>
</tr>
<tr align="left">
- <td>1.4 Repeats<br>(717)</td>
+ <td>1.4 Repeats<br>(738)</td>
<td>Valentin Villenave<br>
<small>Jean-Charles Malahieude<br>
John Mandereau</small><br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #ffb549">partially up-to-date (39 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #ffb549">partially up-to-date (39 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #1fff1f">up to date</span><br>
+ <span style="background-color: #6fff29">partially up to date</span><br>
</td>
</tr>
<tr align="left">
<small>Jean-Charles Malahieude<br>
John Mandereau</small><br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #ffb549">partially up-to-date (39 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #dfef77">partially translated (58 %)</span><br>
- <span style="background-color: #ffb549">partially up-to-date (39 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #dfef77">partially translated (58 %)</span><br>
</td>
</tr>
<tr align="left">
- <td>1.6 Staff notation<br>(1637)</td>
+ <td>1.6 Staff notation<br>(1861)</td>
<td>Valentin Villenave<br>
Jean-Charles Malahieude<br>
<small>John Mandereau</small><br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #ffba48">partially up-to-date (41 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Till Rettig<br>
- <span style="background-color: #dfef77">partially translated (49 %)</span><br>
- <span style="background-color: #ffba48">partially up-to-date (41 %)</span><br>
+ <span style="background-color: #dfef77">partially translated (32 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
</td>
</tr>
<tr align="left">
- <td>1.7 Editorial annotations<br>(866)</td>
+ <td>1.7 Editorial annotations<br>(879)</td>
<td>Jean-Charles Malahieude<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #ff6f57">partially up-to-date (9 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Till Rettig<br>
- <span style="background-color: #dfef77">partially translated (38 %)</span><br>
- <span style="background-color: #ff6f57">partially up-to-date (9 %)</span><br>
+ <span style="background-color: #dfef77">partially translated (41 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Francisco Vila<br>
- <span style="background-color: #dfef77">partially translated (95 %)</span><br>
- <span style="background-color: #1fff1f">up to date</span><br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #b9ff33">partially up to date</span><br>
</td>
</tr>
<tr align="left">
- <td>1.8 Text<br>(2329)</td>
+ <td>1.8 Text<br>(2361)</td>
<td>Jean-Charles Malahieude<br>
<small>Valentin Villenave<br>
John Mandereau</small><br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #ffb549">partially up-to-date (39 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td> <span style="background-color: #d0f0f8">not translated</span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #1fff1f">up to date</span><br>
+ <span style="background-color: #33ff21">partially up to date</span><br>
</td>
</tr>
<tr align="left">
</td>
<td>Till Rettig<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #f6fe3b">partially up-to-date (68 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #f6fe3b">partially up-to-date (68 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
</tr>
<tr align="left">
<td>Valentin Villenave<br>
<small>Jean-Charles Malahieude</small><br>
<span style="background-color: #dfef77">partially translated (89 %)</span><br>
- <span style="background-color: #68ff28">partially up-to-date (89 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td> <span style="background-color: #d0f0f8">not translated</span><br>
</td>
<small>Jean-Charles Malahieude<br>
John Mandereau</small><br>
<span style="background-color: #dfef77">partially translated (56 %)</span><br>
- <span style="background-color: #76fe2a">partially up-to-date (87 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #dfef77">partially translated (56 %)</span><br>
- <span style="background-color: #76fe2a">partially up-to-date (87 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #dfef77">partially translated (56 %)</span><br>
<small>Jean-Charles Malahieude<br>
John Mandereau</small><br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #68ff28">partially up-to-date (89 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #68ff28">partially up-to-date (89 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
<small>Jean-Charles Malahieude<br>
John Mandereau</small><br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #54ff26">partially up-to-date (92 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #54ff26">partially up-to-date (92 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
<small>Jean-Charles Malahieude<br>
John Mandereau</small><br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #5bff27">partially up-to-date (91 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #5bff27">partially up-to-date (91 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
<small>Jean-Charles Malahieude<br>
John Mandereau</small><br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #ffef3f">partially up-to-date (61 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #ffef3f">partially up-to-date (61 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #ffef3f">partially up-to-date (61 %)</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
</td>
</tr>
<tr align="left">
<small>Jean-Charles Malahieude<br>
John Mandereau</small><br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #a5ff31">partially up-to-date (80 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #dfef77">partially translated (94 %)</span><br>
- <span style="background-color: #a5ff31">partially up-to-date (80 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #a5ff31">partially up-to-date (80 %)</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
</td>
</tr>
<tr align="left">
<small>Jean-Charles Malahieude<br>
John Mandereau</small><br>
<span style="background-color: #dfef77">partially translated (88 %)</span><br>
- <span style="background-color: #47ff24">partially up-to-date (94 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #dfef77">partially translated (88 %)</span><br>
- <span style="background-color: #47ff24">partially up-to-date (94 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #dfef77">partially translated (88 %)</span><br>
</td>
</tr>
<tr align="left">
- <td>3 Input syntax<br>(2448)</td>
+ <td>3 Input syntax<br>(2458)</td>
<td>Jean-Charles Malahieude<br>
<span style="background-color: #dfef77">partially translated (7 %)</span><br>
- <span style="background-color: #25fe1f">partially up-to-date (99 %)</span><br>
+ <span style="background-color: #25fe1f">partially up to date</span><br>
</td>
<td> <span style="background-color: #d0f0f8">not translated</span><br>
</td>
<td> <span style="background-color: #d0f0f8">not translated</span><br>
</td>
<td>Francisco Vila<br>
- <span style="background-color: #dfef77">partially translated (3 %)</span><br>
+ <span style="background-color: #1fff1f">translated</span><br>
<span style="background-color: #1fff1f">up to date</span><br>
</td>
</tr>
<td>Valentin Villenave<br>
<small>Gilles Thibault</small><br>
<span style="background-color: #1fff1f">translated</span><br>
- <span style="background-color: #b9ff33">partially up-to-date (77 %)</span><br>
+ <span style="background-color: #b9ff33">partially up to date</span><br>
</td>
<td> <span style="background-color: #d0f0f8">not translated</span><br>
</td>
<td>Frédéric Chiasson<br>
Jean-Charles Malahieude<br>
<span style="background-color: #dfef77">partially translated (13 %)</span><br>
- <span style="background-color: #4efe25">partially up-to-date (93 %)</span><br>
+ <span style="background-color: #d587ff"></span><br>
</td>
<td>Till Rettig<br>
<span style="background-color: #dfef77">partially translated (84 %)</span><br>
- <span style="background-color: #62ff28">partially up-to-date (90 %)</span><br>
+ <span style="background-color: #62ff28">partially up to date</span><br>
</td>
<td>Francisco Vila<br>
<span style="background-color: #dfef77">partially translated (97 %)</span><br>
</table>
<p></p>
+<table align="center" border="2">
+ <tr align="center">
+ <th>GNU LilyPond --- program usage</th> <th>fr</th>
+ <th>de</th>
+ <th>es</th>
+ </tr>
+ <tr align="left">
+ <td>Section titles<br>(374)</td>
+ <td>John Mandereau<br>
+ Jean-Charles Malahieude<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #5bff27">partially up to date</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #5bff27">partially up to date</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #25fe1f">partially up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>1 Install<br>(1477)</td>
+ <td>John Mandereau<br>
+ Jean-Charles Malahieude<br>
+ <span style="background-color: #dfef77">partially translated (11 %)</span><br>
+ <span style="background-color: #39ff22">partially up to date</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #dfef77">partially translated (11 %)</span><br>
+ <span style="background-color: #6fff29">partially up to date</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>2 Setup<br>(947)</td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td>Till Rettig<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #39ff22">partially up to date</span><br>
+ </td>
+ <td>Francisco Vila<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #d587ff"></span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>3 Running LilyPond<br>(2860)</td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>4 @command{lilypond-book}: Integrating text and music<br>(2917)</td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ </tr>
+ <tr align="left">
+ <td>5 Converting from other formats<br>(975)</td>
+ <td>Jean-Charles Malahieude<br>
+ <span style="background-color: #1fff1f">translated</span><br>
+ <span style="background-color: #1fff1f">up to date</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ <td> <span style="background-color: #d0f0f8">not translated</span><br>
+ </td>
+ </tr>
+</table>
+<p></p>
+
</body>
</html>
@cindex font size, selecting
@cindex selecting font size
-The easiest method of setting the font size of any context is by
-setting the @code{fontSize} property.
+The font size of notation elements may be altered. It does not
+change the size of variable symbols, such as beams or slurs.
@lilypond[quote,fragment,relative=2,verbatim,ragged-right]
-c4
-\set fontSize = #-4
-c f
-\set fontSize = #3
-g8 a
+\huge
+c4.-> d8---3
+\large
+c4.-> d8---3
+\normalsize
+c4.-> d8---3
+\small
+c4.-> d8---3
+\tiny
+c4.-> d8---3
+\normalsize
+c2
@end lilypond
-@noindent
-It does not change the size of variable symbols, such as beams or
-slurs.
-
@cindex font size scaling
-Internally, the @code{fontSize} context property will cause the
-@code{font-size} property to be set in all layout objects. The
-value of @code{font-size} is a number indicating the size relative
-to the standard size for the current staff height. Each step up
-is an increase of approximately 12% of the font size. Six steps
-is exactly a factor two. The Scheme function @code{magstep}
-converts a @code{font-size} number to a scaling factor. The
-@code{font-size} property can also be set directly, so that only
-certain layout objects are affected.
+Internally, this sets the @code{fontSize} property. This in turns
+causes the @code{font-size} property to be set in all layout
+objects. The value of @code{font-size} is a number indicating the
+size relative to the standard size for the current staff height.
+Each step up is an increase of approximately 12% of the font size.
+Six steps is exactly a factor two. The Scheme function
+@code{magstep} converts a @code{font-size} number to a scaling
+factor. The @code{font-size} property can also be set directly,
+so that only certain layout objects are affected.
@lilypond[quote,fragment,relative=2,verbatim,ragged-right]
-c4
+\set fontSize = #3
+c4.-> d8---3
\override NoteHead #'font-size = #-4
-c f
-\override NoteHead #'font-size = #3
-g8 a
+c4.-> d8---3
+\override Script #'font-size = #3
+c4.-> d8---3
@end lilypond
@cindex standard font size
@code{font-size} equals 0), depends on the standard staff height.
For a 20pt staff, a 10pt font is selected.
-The @code{font-size} property can only be set on layout objects that
-use fonts. These are the ones supporting the @code{font-interface}
-layout interface.
+The @code{font-size} property can only be set on layout objects
+that use fonts. These are the ones supporting the
+@code{font-interface} layout interface.
@predefined
-The following commands set @code{fontSize} for the current voice:
-
@funindex \tiny
@code{\tiny},
@funindex \small
@code{\small},
@funindex \normalsize
-@code{\normalsize}.
+@code{\normalsize},
+@funindex \large
+@code{\large},
+@funindex \huge
+@code{\huge}.
+
+@snippets
@seealso
Fingering instructions can be entered using
@var{note}-@var{digit}:
-Fingering instructions may be manually placed above or below the
-staff, see @ref{Controlling direction and placement}.
@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
c4-1 d-2 f-4 e-3
< c-1 e-2 g-3 b-5 >2 < d-1 f-2 a-3 c-5 >
@end lilypond
+Fingering instructions may be manually placed above or below the
+staff, see @ref{Controlling direction and placement}.
@snippets
@end lilypond
@seealso
+@ref{Controlling direction and placement}
Snippets: @lsrdir{Editorial,Editorial-annotations}.
color returned defaults to black.
@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
-
\override Staff.StaffSymbol #'color = #(x11-color 'SlateBlue2)
\set Staff.instrumentName = \markup {
\with-color #(x11-color 'navy) "Clarinet"
% this is deliberate nonsense; note that the stems remain black
\override Stem #'color = #(x11-color 'Boggle)
b2 cis
-
@end lilypond
You can get exact RGB colors by specifying the rgb-color number.
@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
-
- \override Staff.StaffSymbol #'color = #(x11-color 'SlateBlue2)
- \set Staff.instrumentName = \markup {
- \with-color #(x11-color 'navy) "Clarinet"
- }
+\override Staff.StaffSymbol #'color = #(x11-color 'SlateBlue2)
+\set Staff.instrumentName = \markup {
+ \with-color #(x11-color 'navy) "Clarinet"
+}
- %black
- \override Stem #'color = #(rgb-color 0 0 0)
- gis8 a
- % white
- \override Stem #'color = #(rgb-color 1 1 1)
- gis8 a
- % dark blue
- \override Stem #'color = #(rgb-color 0 0 0.5)
- gis4 a
-
+%black
+\override Stem #'color = #(rgb-color 0 0 0)
+gis8 a
+% white
+\override Stem #'color = #(rgb-color 1 1 1)
+gis8 a
+% dark blue
+\override Stem #'color = #(rgb-color 0 0 0.5)
+gis4 a
@end lilypond
@seealso
parenthesize a single note it must be enclosed with @code{<>} as
if it is a chord.
-@lilypond[relative=2,fragment,verbatim,ragged-right]
+@lilypond[quote,relative=2,fragment,verbatim,ragged-right]
c2 < \parenthesize d>
@end lilypond
Non-note objects may be parenthesized as well.
-@lilypond[relative=2,fragment,verbatim,ragged-right]
+@lilypond[quote,relative=2,fragment,verbatim,ragged-right]
< c d g >2-\parenthesize -. d
@end lilypond
@end lilypond
@seealso
+@ref{Controlling direction and placement}.
Snippets: @lsrdir{Editorial,Editorial-annotations}.
square balloon. The primary purpose of this feature is to explain
notation.
-The following example demonstrates its use.
-
@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
\new Voice \with { \consists "Balloon_engraver" }
- {
- \time 2/4
- \balloonGrobText #'Stem #'(3 . 4) \markup { "I'm a Stem" }
- a8
- <c, g'-\balloonText #'(-2 . -2) \markup { "I'm a note head" }
-c>4.
- }
-
+{
+ \balloonGrobText #'Stem #'(3 . 4) \markup { "I'm a Stem" }
+ a4
+ <c, g'-\balloonText #'(-2 . -2) \markup { "I'm a note head" } c>2.
+}
@end lilypond
There are two music functions, @code{balloonGrobText} and
-@code{balloonText}; The former is used like \once \override to
-attach text to any grob, and the latter is used like \tweak,
+@code{balloonText}; The former is used like @code{\once \override} to
+attach text to any grob, and the latter is used like @code{ \tweak},
typically within chords, to attach text to an individual note.
@cindex balloon
Vertical lines can be drawn between staves synchronized with the
notes.
-@lilypond[ragged-right,quote,verbatim]
+@lilypond[quote,verbatim,ragged-right]
\layout {
\context {
\Staff
\new ChoirStaff <<
\new Staff {
- \stemUp
- \relative {
- c'4. d8 e8 f g4
+ \relative c'' {
+ \stemUp
+ c4. d8 e8 f g4
}
}
\new Staff {
- \stemDown
\clef bass
\relative c {
+ \stemDown
c4 g' f e
}
}
>>
@end lilypond
-To change the grid lines use \override.
+@snippets
+To change the grid lines use \override.
-@lilypond[ragged-right,quote,verbatim]
+@lilypond[quote,verbatim,ragged-right]
\layout {
\context {
\Staff
\consists "Grid_point_engraver"
% sets up grids
- gridInterval = #(ly:make-moment 1 4)
- % this sets the grid interval to 1 quarternote (crotchet)
+ gridInterval = #(ly:make-moment 1 4)
+ % this sets the grid interval to 1 quarternote (crotchet)
}
}
-
+
\new Score \with {
\consists "Grid_line_span_engraver"
\override NoteColumn #'X-offset = #-0.5
% this moves them to the right half a staff space
}
-
+
\new ChoirStaff <<
- \new Staff {
- \stemUp
- \relative {
- c'4. d8 e8 f g4
- }
+ \new Staff {
+ \relative c'' {
+ \stemUp
+ c'4. d8 e8 f g4
+ }
}
\new Staff {
- \override Score.GridLine #'extra-offset = #'( 0.0 . 1.0 )
- % this moves them up one staff space from the default position
- \stemDown
- \clef bass
\relative c {
- c4 g' f e
+ \override Score.GridLine #'extra-offset = #'( 0.0 . 1.0 )
+ % this moves them up one staff space from the default position
+ \stemDown
+ \clef bass
+ \once \override Score.GridLine #'thickness = #5.0
+ c4
+ \once \override Score.GridLine #'thickness = #1.0
+ g'
+ \once \override Score.GridLine #'thickness = #3.0
+ f
+ \once \override Score.GridLine #'thickness = #5.0
+ e
}
}
>>
@cindex note grouping bracket
Brackets are used in musical analysis to indicate structure in musical
-pieces. LilyPond supports a simple form of nested horizontal
-brackets. To use this, add the @code{Horizontal_bracket_engraver} to
-the @code{Staff} context. A bracket is started with
-@code{\startGroup} and closed with @code{\stopGroup}.
-
-@lilypond[quote,ragged-right,verbatim]
-\score {
- \relative c'' {
- c4\startGroup\startGroup
- c4\stopGroup
- c4\startGroup
- c4\stopGroup\stopGroup
+pieces. LilyPond supports a simple form of horizontal brackets.
+
+@lilypond[quote,verbatim,ragged-right]
+\layout {
+ \context {
+ \Staff \consists "Horizontal_bracket_engraver"
}
- \layout {
- \context {
- \Staff \consists "Horizontal_bracket_engraver"
- }
+}
+\relative c'' {
+ c2\startGroup
+ d\stopGroup
+}
+@end lilypond
+
+Analysis brackets may be nested.
+
+@lilypond[quote,verbatim,ragged-right]
+\layout {
+ \context {
+ \Staff \consists "Horizontal_bracket_engraver"
}
}
+\relative c'' {
+ c4\startGroup\startGroup
+ d4\stopGroup
+ e4\startGroup
+ d4\stopGroup\stopGroup
+}
@end lilypond
@seealso
@node Attached to notes
@subsection Attached to notes
-
@menu
* Articulations and ornamentations::
* Dynamics::
@cindex scripts
@cindex ornaments
-A variety of symbols can appear above and below notes to indicate
-different characteristics of the performance. All these symbols
-can be attached to a note using the syntax
-@var{note}@tie{}@code{\}@var{name}.
+A variety of symbols that denote articulations, ornamentations,
+and other performance indications can be attached to a note using
+this syntax:
-@c Add a LilyPond example here soon. -pm
+@example
+@var{note}\@var{name}
+@end example
The possible values for @var{name} are listed in @ref{List of
-articulations}.
+articulations}. For example:
+
+@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
+c4\staccato c\mordent b2\turn
+c1\fermata
+@end lilypond
@cindex marcato
@cindex stopped
c-> c-. c-_
@end lilypond
-The marks are placed automatically by default (either above or
-below the note), but their positions can be manually @q{forced}
-above or below notes as well. For details, see
+The rules for the default placement of articulations are defined
+in @file{scm/@/script@/.scm}. Articulations and ornamentations
+may be manually placed above or below the staff, see
@ref{Controlling direction and placement}.
@cindex espressivo
@seealso
-Music Glossary: @rglos{marcato}, @rglos{stopped}, @rglos{tenuto},
-@rglos{staccatissimo}, @rglos{accent}, @rglos{staccato},
+Music Glossary: @rglos{tenuto}, @rglos{accent}, @rglos{staccato},
@rglos{portato}.
Snippets: @lsrdir{Expressive,Expressive-marks}
@code{\pppp}, @code{\ppp}, @code{\pp}, @code{\p}, @code{\mp},
@code{\mf}, @code{\f}, @code{\ff}, @code{\fff}, @code{\ffff},
@code{\fp}, @code{\sf}, @code{\sff}, @code{\sp}, @code{\spp},
-@code{\sfz}, and @code{\rfz}. The dynamic marks can be placed
-above or below the staff: For details, see
-@ref{Controlling direction and placement}.
+@code{\sfz}, and @code{\rfz}. The dynamic marks may be manually
+placed above or below the staff, see @ref{Controlling direction
+and placement}.
@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
c2\ppp c\mp
<< f1 { s4 s4\< s4\! \> s4\! } >>
@end lilypond
-This may give rise to very short hairpins. To lengthen them, use
-for example @code{minimum-length} in
-@internalsref{Voice}.@internalsref{Hairpin}:
+This may give rise to very short hairpins. To lengthen them, the
+following code can be used, for example:
@example
\override Voice.Hairpin #'minimum-length = #5
A @notation{hairpin} normally starts at the left edge of the
beginning note and ends on the right edge of the ending note. If
the ending note falls on the downbeat, the @notation{hairpin} ends
-on the immediately preceding bar line. This may be modified by
-setting the @code{hairpinToBarline} property:
+on the immediately preceding bar line. The following example
+illustrates this behavior:
@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
e4\< e2. e1\!
@cindex al niente
@cindex niente, al
-Hairpins may be printed with a circled tip (al niente notation) by
-setting the @code{circled-tip} property:
+Hairpins may be printed with a circled tip (al niente notation):
@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
\override Hairpin #'circled-tip = ##t
@funindex \setHairpinDim
@funindex \setHairpinDecresc
-You can use text saying @emph{cresc.}, @emph{decr.}, or
-@emph{dim.} instead of hairpins with the commands
+You can use text saying @notation{cresc.}, @notation{decr.}, or
+@notation{dim.} instead of hairpins with the commands
@code{\setTextCresc}, @code{\setTextDim}, and
@code{\setTextDecresc}. The corresponding
@code{\setHairpinCresc}, @code{\setHairpinDim}, and
You may also use this property if the dynamics are colliding with
other notation.
-Crescendi and decrescendi that cross a line break will be
-continued on the second line. If they end on the first note of a
-new line, nothing will be printed on that line. To change this
-behavior, use
+@notation{Crescendi} and @notation{decrescendi} that cross a line
+break will be continued on the second line. If they end on the
+first note of a new line, nothing will be printed on that line.
+To change this behavior, use
@example
\override Score.Hairpin #'after-line-breaking = ##t
@end example
-Text style dynamic changes (such as @emph{cresc.} and @emph{dim.})
-are printed with a dashed line showing their extent. To surpress
-printing this line, use
+Text style dynamic changes (such as @notation{cresc.} and
+@notation{dim.}) are printed with a dashed line showing their
+extent. To surpress printing this line, use
@example
\override DynamicTextSpanner #'dash-period = #-1.0
@seealso
-Music Glossary: @rglos{hairpin}, @rglos{crescendo},
-@rglos{decrescendo}.
+@c TODO: Add hairpin to glossary.
+
+Music Glossary: @rglos{crescendo}, @rglos{decrescendo}.
Learning Manual: @rlearning{Articulation and dynamics}.
Just as with ties, the direction of a slur can be specified with
@code{\slur@emph{DIR}}, where @code{@emph{DIR}} is either
@code{Up}, @code{Down}, or @code{Neutral} (@code{Neutral} is the
-default). The shorthands are also available: For details, see
-@ref{Controlling direction and placement}.
+default). Slurs may be manually placed above or below the staff,
+see @ref{Controlling direction and placement}.
@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
c4_( c) c^( c)
normal slur. However, they are treated as different objects. A
@code{\slurUp} will have no effect on a phrasing slur; instead,
use @code{\phrasingSlurUp}, @code{\phrasingSlurDown}, and
-@code{\phrasingSlurNeutral}. The shorthands work for phrasing
-slurs as well: For details, see @ref{Controlling direction and placement}.
+@code{\phrasingSlurNeutral}. Phrasing slurs may be manually
+placed above or below the staff, see @ref{Controlling direction
+and placement}.
You cannot have simultaneous phrasing slurs.
d4
@end lilypond
+
@seealso
Snippets: @lsrdir{Expressive,Expressive-marks}
@funindex \bendAfter
@notation{Falls} and @notation{doits} can be added to notes using
-the @code{\bendAfter} command,
+the @code{\bendAfter} command:
+
+@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
+c2-\bendAfter #+4
+c-\bendAfter #-4
+c-\bendAfter #+8
+c-\bendAfter #-8
+@end lilypond
+
+The dash (@tie{-}) following the note name is @emph{required} when
+writing @notation{falls} and @notation{doits}.
+
+
+@snippets
+
+The @code{shortest-duration-space} property may have to be tweaked
+to adjust the shape of @notation{falls} and @notation{doits}.
+
+@c Fix this snippet. The tweak does not work. -pm
@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
\override Score.SpacingSpanner #'shortest-duration-space = #3.0
@seealso
-Music Glossary: @rglos{falls}, @rglos{doits}.
+@c TODO: add falls and doits to glossary.
+@c Music Glossary: @rglos{falls}, @rglos{doits}.
Snippets: @lsrdir{Expressive,Expressive-marks}
@cindex arpeggio
@cindex broken chord
-@funindex \arpeggio
You can specify an @notation{arpeggio} (also known as a
@notation{broken chord}) on a chord by attaching an
@predefined
+@funindex \arpeggio
+@code{\arpeggio},
@funindex \arpeggioUp
@code{\arpeggioUp},
@funindex \arpeggioDown
@seealso
-Music Glossary: @rglos{arpeggio}, @rglos{broken chord}.
+@c TODO: Add 'broken chord' to glossary.
+
+Music Glossary: @rglos{arpeggio}
Notation Reference: @ref{Ties}, for writing out arpeggios.
Short @notation{trills} are printed with @code{\trill} like normal
articulation; see @ref{Articulations and ornamentations}.
-Long running trills are made with @code{\startTrillSpan} and
-@code{\stopTrillSpan}. In the following example, it is shown in
-the common combination with grace notes. If a more precise
-control of the placement of the grace notes is needed, see
-@ref{Grace notes}.
+Long running @notation{trills} are made with
+@code{\startTrillSpan} and @code{\stopTrillSpan}. In the
+following example, a long running @notation{trill} is shown
+combined with grace notes. To achieve precise control of the
+placement of the grace notes, see @ref{Grace notes}.
@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
c1 \afterGrace
@cindex pitched trills
-Trills that should be executed on an explicitly specified pitch
-can be typeset with the command @code{\pitchedTrill}, and the
-syntax @code{\pitchedTrill} @var{mainnote} @code{\startTrillSpan}
-@var{trillnote} @var{endnote} @code{\stopTrillSpan}.
+@notation{Trills} that should be executed on an explicitly
+specified pitch can be typeset with the command
+@code{\pitchedTrill} using the following syntax:
+
+@example
+@code{\pitchedTrill} @var{mainnote} @code{\startTrillSpan}
+@var{trillnote} @var{endnote} @code{\stopTrillSpan}
+@end example
@lilypond[verbatim,quote,ragged-right,fragment,relative=1]
\pitchedTrill e2 \startTrillSpan fis
* Preface:: Preface.
* Introduction:: What, Why, How.
* Tutorial:: A tutorial introduction.
-* Fundamental concepts:: Basic concepts required for reading
-the rest of this manual.
+* Fundamental concepts:: Basic concepts required for reading the rest of this manual.
* Tweaking output:: Introduction to modifying output.
* Working on LilyPond projects:: Discusses real-life usage.
@node Absolute octave entry
-@subsubsection Absolute octave entry
+@unnumberedsubsubsec Absolute octave entry
@cindex pitch names
@cindex pitches
@node Relative octave entry
-@subsubsection Relative octave entry
+@unnumberedsubsubsec Relative octave entry
@cindex relative
@cindex relative octave specification
@node Accidentals
-@subsubsection Accidentals
+@unnumberedsubsubsec Accidentals
@cindex accidental
@cindex key signature
@node Note names in other languages
-@subsubsection Note names in other languages
+@unnumberedsubsubsec Note names in other languages
There are predefined sets of note names for various other
languages. To use them, include the language-specific init file.
@end menu
@node Octave checks
-@subsubsection Octave checks
+@unnumberedsubsubsec Octave checks
@cindex octave correction
@cindex octave check
@node Transpose
-@subsubsection Transpose
+@unnumberedsubsubsec Transpose
@cindex transpose
@cindex transposition
@node Clef
-@subsubsection Clef
+@unnumberedsubsubsec Clef
@funindex \clef
@cindex G clef
@node Key signature
-@subsubsection Key signature
+@unnumberedsubsubsec Key signature
@cindex key signature
@funindex \key
@node Ottava brackets
-@subsubsection Ottava brackets
+@unnumberedsubsubsec Ottava brackets
@cindex ottava
@cindex 15ma
@node Instrument transpositions
-@subsubsection Instrument transpositions
+@unnumberedsubsubsec Instrument transpositions
@cindex transposition, MIDI
@cindex transposition, instrument
@node Automatic accidentals
-@subsubsection Automatic accidentals
+@unnumberedsubsubsec Automatic accidentals
@cindex automatic accidentals
@cindex accidentals, automatic
@node Ambitus
-@subsubsection Ambitus
+@unnumberedsubsubsec Ambitus
@cindex ambitus
@cindex range of pitches
@end menu
@node Special note heads
-@subsubsection Special note heads
+@unnumberedsubsubsec Special note heads
@cindex note heads, special
@cindex note heads, cross
@node Easy notation note heads
-@subsubsection Easy notation note heads
+@unnumberedsubsubsec Easy notation note heads
@cindex note heads, practice
@cindex note heads, easy notation
@node Shape note heads
-@subsubsection Shape note heads
+@unnumberedsubsubsec Shape note heads
@cindex note heads, shape
@cindex note heads, Aiken
@node Improvisation
-@subsubsection Improvisation
+@unnumberedsubsubsec Improvisation
@cindex improvisation
@cindex slashed note heads
entering repetitious music.
@item percent
-Make beat or measure repeats. These look like percent signs.
+Write beat or measure repeats. These look like percent signs.
Percent repeats must be declared within a @code{Voice} context.
@item tremolo
-Make tremolo beams.
+Write tremolo beams.
@end table
+@ignore
LilyPond has one syntactic construct for specifying different
types of repeats. The syntax is
@var{alternative} is a music expression. If you give fewer
alternatives than @var{repeatcount}, the first alternative is assumed
to be played more than once.
+@end ignore
@menu
@menu
* Normal repeats::
* Manual repeat marks::
+* Written-out repeats::
@end menu
@cindex volta
@node Normal repeats
@subsubsection Normal repeats
-FIXME: this example needs to go by itself.
-@verbatim
+The syntax for a simple repeat is
+
+@example
+\repeat @var{variant} @var{repeatcount} @var{repeatbody}
+@end example
+
+where @var{repeabody} is a music expression.
+
+Normal repeats, without alternate endings:
+
+@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
\repeat volta 2 { c4 d e f }
-@end verbatim
+c1
+@end lilypond
-Normal repeats, with or without alternate repeats:
+Normal repeats, with alternate endings:
@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
\repeat volta 2 { g f e d }
}
c1
@end lilypond
+
+
Repeats with upbeats:
@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
@end lilypond
By default, the volta brackets will be drawn over all of the
-alternative music, but it is possible to shorten them by
-setting @code{voltaSpannerDuration}. In the next example, the
-bracket only lasts one measure, which is a duration of 3/4.
+alternative music, but it is possible to shorten them by setting
+@code{voltaSpannerDuration}. In the next example, the bracket only
+lasts one measure, which is a duration of 3/4.
@lilypond[verbatim,ragged-right,quote]
\relative c''{
}
@end lilypond
-The @code{Volta_engraver} by default resides in the Score context,
-and brackets for the repeat are thus normally only printed over
-the topmost staff. This can be adjusted by adding
-@code{Volta_engraver} to the Staff context where you want the
-brackets to appear; see @ref{Modifying context plug-ins} and
+The @code{Volta_engraver} by default resides in the Score context, and
+brackets for the repeat are thus normally only printed over the
+topmost staff. This can be adjusted by adding @code{Volta_engraver}
+to the Staff context where you want the brackets to appear; see
+@ref{Modifying context plug-ins} and
@c @lsr{repeats,volta@/-multi@/-staff@/.ly}.
@lilypond[verbatim,ragged-right,quote]
@c Is there a way to have a final bar ("|.") at the end of the
@c previous line? Doesn't seem to be.
-If you want to start a repeat at the beginning of a line and have
-a double bar at the end of the previous line, use
+If you want to start a repeat at the beginning of a line and have a
+double bar at the end of the previous line, use
@example
@dots{} \bar "||:" \break
@seealso
+Music Glossary: @rglos{repeat};
+@c FIXME : add @rglos{volta} after glossary addition
+
+Notation Reference: @ref{Bar lines}; @ref{Modifying context plug-ins}.
+
Snippets: @lsrdir{Repeats,Repeats}
Internals Reference: @internalsref{VoltaBracket},
having the @code{\alternative} belong to the inner @code{\repeat}.
For clarity, it is advisable to use braces in such situations.
-Timing information is not remembered at the start of an
-alternative, so after a repeat timing information must be reset by
-hand; for example, by setting @code{Score.measurePosition} or
-entering @code{\partial}. Similarly, slurs or ties are also not
-repeated.
+Timing information is not remembered at the start of an alternative,
+so after a repeat timing information must be reset by hand; for
+example, by setting @code{Score.measurePosition} or entering
+@code{\partial}. Similarly, slurs or ties are also not repeated.
and @internalsref{UnfoldedRepeatedMusic}.
+@node Written-out repeats
+@subsubsection Written-out repeats
+
+unfold
+
+
+
+
@node Short repeats
@subsection Short repeats
duration. For details of this and other settings which control
proportional notation, see @ref{Proportional notation}.
-@predefined
-
Dots are normally moved up to avoid staff lines, except in
-polyphonic situations. The following commands may be used to
-force a particular direction manually, and to return to the
-default behaviour:
+polyphonic situations. To force a particular direction manually,
+see @ref{Controlling direction and placement}.
+
+@predefined
@funindex \dotsUp
@code{\dotsUp},
@seealso
-Music Glossary: @rglos{breve}, @rglos{longa}, @rglos{note value}
+Music Glossary:
+@rglos{breve},
+@rglos{longa},
+@rglos{note value},
@rglos{Duration names notes and rests}.
-Notation Reference: @ref{Automatic beams}, @ref{Ties},
-@ref{Writing rhythms}, @ref{Writing rests}, @ref{Vocal music},
-@ref{Ancient notation}, @ref{Proportional notation}.
+Notation Reference:
+@ref{Automatic beams},
+@ref{Ties},
+@ref{Writing rhythms},
+@ref{Writing rests},
+@ref{Vocal music},
+@ref{Ancient notation},
+@ref{Proportional notation}.
Snippets: @lsrdir{Rhythms,Rhythms}
-Internals Reference: @internalsref{Dots},
+Internals Reference:
+@internalsref{Dots},
@internalsref{DotColumn}.
@end lilypond
+The automatic placement of the tuplet bracket above or below the
+notes may be overridden manually, for details see
+@ref{Controlling direction and placement}.
+
Tuplets may be nested:
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
Modifying nested tuplets which begin at the same musical moment
must be done with @code{\tweak}.
-@c TODO Add link to LM section which deals with this.
+
+To modify the duration of notes without printing a tuplet bracket,
+see @ref{Scaling durations}.
@predefined
@lilypondfile [verbatim,lilyquote,ragged-right,texidoc]
{entering-several-tuplets-using-only-one--times-command.ly}
-@noindent
-For more information about @code{make-moment}, see
-@ref{Time administration}.
-
@funindex TupletNumber
+@c Sent to VV on 12 Feb - replace with @lilypondfile when available
+@c TODO and delete from here ...
By default, only the numerator of the tuplet number
is printed over the tuplet bracket, i.e. the denominator
of the argument to the @code{\times} command. Alternatively,
\times 2/3 { c8 c c }
@end lilypond
-@c TODO Add snippet to show this
-Tuplets may extend over bar lines, but they will inhibit a
-line break unless the @code{Forbid_line_break_engraver} is
-removed from the @code{Voice context}.
-
-@c TODO Move to LM 4
-@ignore
-@subheading Modifying nested tuplets
-
-@cindex tuplets, nested
-@cindex triplets, nested
-@cindex bracket, tuplet
-@cindex tuplet bracket
-@cindex triplet bracket
-@funindex TupletBracket
-
-If nested tuplets do not begin at the same moment their
-appearance may be modified in the usual way with
-@code{\override} commands:
-
-@c NOTE Tuplet brackets collide if notes are high on staff
-@c See issue 509
-@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
-\times 2/3 { c8[ c c]}
-\once \override TupletNumber #'text = #tuplet-number::calc-fraction-text
-\times 2/3 {
- c[ c]
- c[ c]
- \once \override TupletNumber #'transparent = ##t
- \times 2/3 { c8[ c c] }
-\times 2/3 { c8[ c c]}
-}
-@end lilypond
+@c ... to here
-However, if the nested tuplets begin at the same musical moment,
-@code{\override} commands cannot be applied to just one of them
--- they apply to both. So to change the appearance of nested
-tuplets beginning at the same musical moment individually, the
-@code{\tweak} function must be used (see @ref{Objects connected
-to the input}). The @code{\tweak} function is applied to the
-following @code{\times} command as it appears in the input stream,
-and so can distinguish between separate @code{\times} commands
-even if their tuplets begin at the same musical moment.
-
-In this example, the @code{\tweak} command is used to specify
-fraction text for the outer @code{TupletNumber} and denominator
-text for the @code{TupletNumber} of the first of the three
-inner tuplets.
-
-@c NOTE Tuplet brackets collide if notes are high on staff
-@c so use relative=1 until this is fixed
-@c See issue 509
-@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
-\tweak #'text #tuplet-number::calc-fraction-text
-\times 4/3 {
- \tweak #'text #tuplet-number::calc-denominator-text
- \times 2/3 { c8[ c8 c8] }
- \times 2/3 { c8[ c8 c8] }
- \times 2/3 { c8[ c8 c8] }
-}
-@end lilypond
-In the next example, @code{\tweak} and @code{\override} work
-together to specify @code{TupletBracket} direction. The first
-@code{\tweak} positions the @code{TupletBracket} of the outer
-tuplet above the staff. The second @code{\tweak} positions the
-@code{TupletBracket} of the first of the three inner tuplets below
-the staff. Note that the @code{\tweak} command needs to be used
-only for events that begin at the same music moment: the outer
-tuplet and the first of the three inner tuplets. To position the
-@code{TupletBracket}s of the second and third of the inner tuplets
-below the staff, we can use @code{\override} in the usual way.
+@c Sent to VV on 12 Feb - replace with @lilypondfile when available
+@c TODO and delete from here ...
+This artificial example shows how both manual and automatic line
+breaks may be permitted within a beamed tuplet. Note that such
+off-beat tuplets have to be beamed manually.
-@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
-\tweak #'text #tuplet-number::calc-fraction-text
-\tweak #'direction #up
-\times 4/3 {
- \tweak #'direction #down
- \times 2/3 { c8[ c8 c8] }
- \override TupletBracket #'direction = #down
- \times 2/3 { c8[ c8 c8] }
- \times 2/3 { c8[ c8 c8] }
+@lilypond[quote,ragged-right,verbatim]
+\relative c'' {
+ a8
+ \repeat unfold 8 {\times 2/3 { c[ b a]}}
+ % Insert a manual line break within a tuplet
+ \times 2/3 { c[ b \bar "" \break a]}
+ \repeat unfold 2 {\times 2/3 { c[ b a]}}
+ c8
}
-@end lilypond
-@end ignore
-
-@c TODO - tidy up
-@c Sent to Valentin for LSR (general list of Rhythm snippets) 22 Feb
-@c Maybe try referencing with:
-@c For example of modifying bracket length see @lsr{..}
-@c Index entries could then be added above this.
-@c Delete ignore block when available in LSR
-
-@ignore
-@subheading Modifying tuplet bracket length
-
-@cindex tuplet bracket length
-@cindex triplet bracket length
-@cindex bracket length, tuplets
-@funindex tupletFullLength
-@funindex tupletFullLengthNote
-
-Tuplet brackets can be made to run to prefatory matter or the
-next note.
-Default tuplet brackets end at the right edge of the final note
-of the tuplet; full-length tuplet brackets extend farther to the
-right, either to cover all the non-rhythmic notation up to the
-following note, or to cover only the whitespace before the next
-item of notation, be that a clef, time signature, key signature,
-or another note. The example shows how to switch tuplets to
-full length mode and how to modify what material they cover.
-
-
-@lilypond[ragged-right,verbatim,quote]
-\new RhythmicStaff {
- % Set tuplets to be extendable ..
- \set tupletFullLength = ##t
- % .. to cover all items up to the next note
- \set tupletFullLengthNote = ##t
- \time 2/4
- \times 2/3 { c4 c c }
- % .. or to cover just whitespace
- \set tupletFullLengthNote = ##f
- \time 4/4
- \times 4/5 { c4 c1 }
- \time 3/4
- c4
+\layout {
+ \context {
+ \Voice
+ % Permit line breaks within tuplets
+ \remove "Forbid_line_break_engraver"
+ % Allow beams to be broken at line breaks
+ \override Beam #'breakable = ##t
+ }
}
@end lilypond
-@end ignore
-
-@c Compressing music
-
-@cindex compressing music
-@funindex \compressMusic
-
-@code{\compressMusic} works similarly to \times, but does not
-create a tuplet bracket. One application is in polymetric
-notation, see @ref{Polymetric notation}.
-
-@lilypondfile [verbatim,lilyquote,ragged-right,texidoc]
-{printing-music-with-different-time-signatures.ly}
+@c .. to here
@seealso
-Music Glossary: @rglos{triplet}, @rglos{tuplet},
+Music Glossary:
+@rglos{triplet},
+@rglos{tuplet},
@rglos{polymetric}.
-Notation Reference: @ref{Time administration},
-@ref{Objects connected to the input}, @ref{Polymetric notation}.
+Notation Reference:
+@ref{Time administration},
+@ref{Scaling durations},
+@ref{Objects connected to the input},
+@ref{Polymetric notation}.
Snippets: @lsrdir{Rhythms,Rhythms}.
-Internals Reference: @internalsref{TupletBracket},
-@internalsref{TupletNumber}, @internalsref{TimeScaledMusic}.
-
-@knownissues
-
-Lines may be broken within a tuplet with @code{\bar "" \break},
-but the tuplet bracket does not correctly carry over.
+Internals Reference:
+@internalsref{TupletBracket},
+@internalsref{TupletNumber},
+@internalsref{TimeScaledMusic}.
@node Scaling durations
@subsubsection Scaling durations
-You can alter the length of a duration by a fraction @var{N/M}
-by appending @code{*@var{N/M}} (or @code{*@var{N}} if @var{M=1}).
+@cindex scaling durations
+@cindex durations, scaling
+
+You can alter the duration of single notes, rests or chords by a
+fraction @code{N/M} by appending @code{*N/M} (or @code{*N} if
+@code{M} is 1) to the duration.
This will not affect the appearance of the notes or rests
produced, but the altered duration will be used in calculating the
position within the measure and setting the duration in the MIDI
-output. Multiplying factors may be combined
-such as @code{*M*N}.
+output. Multiplying factors may be combined such as @code{*L*M/N}.
In the following example, the first three notes take up exactly
two beats, but no triplet bracket is printed.
@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
\time 2/4
+% Alter durations to triplets
a4*2/3 gis4*2/3 a4*2/3
-a4 a4 a4*2
+% Normal durations
+a4 a4
+% Double the duration of chord
+<a d>4*2
+% Duration of quarter, appears like sixteeth
b16*4 c4
@end lilypond
a multiplier. This is useful for skipping many measures, e.g.,
@code{s1*23}.
+@cindex compressing music
+@funindex \compressMusic
+
+Longer stretches of music may be compressed by a fraction in
+the same way, as if every note, chord or rest had the fraction
+as a multiplier. The general syntax of the command to do this
+is:
+
+@example
+\compressMusic #'(@emph{num} . @emph{den}) @{ @emph{music} @}
+@end example
+
+@noindent
+This will leave the appearance of @emph{music} unchanged but
+the internal duration of the notes will be multiplied by the
+fraction @emph{num}/@emph{den}. The spaces around the dot
+are required. Here is an example showing how music can be
+compressed and expanded:
+
+@lilypond[quote,fragment,relative=2,ragged-right,verbatim]
+\time 2/4
+% Normal durations
+<c a>4 c8 a
+% Scale music by *2/3
+\compressMusic #'(2 . 3) {
+ <c a f>4. c8 a f
+}
+% Scale music by *2
+\compressMusic #'(2 . 1) {
+ <c' a>4 c8 b
+}
+@end lilypond
+
+@noindent
+One application of this command is in polymetric
+notation, see @ref{Polymetric notation}.
+
+
@seealso
-Notation Reference: @ref{Tuplets}, @ref{Skips}, @ref{Polymetric notation}.
+Notation Reference:
+@ref{Tuplets},
+@ref{Skips},
+@ref{Polymetric notation}.
Snippets: @lsrdir{Rhythms,Rhythms}
@funindex ~
A tie connects two adjacent note heads of the same pitch. The tie
-in effect extends the length of a note.
+in effect extends the duration of a note.
@warning{Ties should not be confused with @emph{slurs}, which
indicate articulation, or @emph{phrasing slurs}, which indicate
@end lilypond
If you need to tie a lot of notes across bar lines, it may be
-easier to use automatic note splitting (see @ref{Automatic note
-splitting}). This mechanism automatically splits long notes, and
+easier to use automatic note splitting, see @ref{Automatic note
+splitting}. This mechanism automatically splits long notes, and
ties them across bar lines.
-@funindex \repeatTie
-@cindex repeating ties
-@cindex volta brackets and ties
+@cindex ties and chords
+@cindex chords and ties
When a tie is applied to a chord, all note heads whose pitches
match are connected. When no note heads match, no ties will be
<c~ e g~ b> <c e g b>
@end lilypond
+@funindex \repeatTie
+@cindex repeating ties
+@cindex ties, repeating
+@cindex volta brackets and ties
+@cindex ties and volta brackets
+
When a second alternative of a repeat starts with a tied note, you
-have to repeat the tie. This can be achieved with
-@code{\repeatTie},
+have to specify the repeated tie as follows:
@lilypond[fragment,quote,ragged-right,relative=2,verbatim]
\repeat volta 2 { c g <c e>2 ~ }
-\alternative {{ <c e>2. r4 } {<c e>2\repeatTie d4 c }}
+\alternative {
+ % Following note is tied normally in first alternative
+ { <c e>2. r4 }
+ % Following note has a repeated tie in second alternative
+ {<c e>2\repeatTie d4 c }}
@end lilypond
@cindex laissez vibrer
@cindex ties, laissez vibrer
@funindex \laissezVibrer
-@funindex \tieUp
-@funindex \tieDown
-@funindex \tieNeutral
@notation{L.v.} ties (@notation{laissez vibrer}) indicate that
notes must not be damped at the end. It is used in notation for
piano, harp and other string and percussion instruments. They can
-be entered using @code{\laissezVibrer}:
+be entered as follows:
@lilypond[fragment,ragged-right,verbatim,relative=1]
<c f g>\laissezVibrer
@end lilypond
-The vertical placement of ties may be controlled; see
+@cindex ties, placement
+@funindex \tieUp
+@funindex \tieDown
+@funindex \tieNeutral
+
+The vertical placement of ties may be controlled, see the
+predefined commands. For details, see
@ref{Controlling direction and placement}.
-@quotation
-DELETE THIS ?
-@code{\tieDown} (see example below). @code{\tieNeutral} reverts
-to the default behaviour again.
+@cindex ties, appearance
+@funindex \tieDotted
+@funindex \tieDashed
+@funindex \tieSolid
-However, as with other music elements of this kind, there is a
-convenient shorthand for forcing tie directions. By adding
-@code{_} or @code{^} before the tilde, the direction is also set:
+Solid, dotted or dashed ties may be specified, see predefined
+commands.
-@lilypond[relative=2,ragged-right,quote,verbatim,fragment]
-c4_~ c c^~ c)
-@end lilypond
-@end quotation
@predefined
@snippets
+@c TODO Remove when snippet available - sent 15 Mar 08
Ties are sometimes used to write out arpeggios. In this case, two
tied notes need not be consecutive. This can be achieved by
setting the @code{tieWaitForNote} property to true. The same
\tieUp c8~ a \tieDown \tieDotted g~ c g2
@end lilypond
+@c end of section to be removed
+
+@c TODO Remove when snippet available - sent 15 Mar 08
Ties may be engraved manually by changing the
@code{tie-configuration} property of the @code{TieColumn} object.
The first number indicates the distance from the center of the
<c e g>~ <c e g> |
@end lilypond
+@c end of section to be removed
@seealso
-Music Glossary: @rglos{tie},
-@c [TODO]add @rglos{laissez vibrer}. when there is a glossary entry.
+Music Glossary:
+@rglos{tie},
+@rglos{laissez vibrer}.
+
+Notation Reference: @ref{Automatic note splitting}.
Snippets: @lsrdir{Rhythms,Rhythms}
Internals Reference:
@internalsref{LaissezVibrerTie}
@internalsref{LaissezVibrerTieColumn}
-
-Example files:
-@c @lsr{connecting,laissez-vibrer-ties.ly}
-
-
-
-
-Notation Reference: @ref{Automatic note splitting}.
-
-Snippets: @lsrdir{Rhythms,Rhythms}
-
-Internals Reference: @internalsref{Tie}.
+@internalsref{TieColumn}
+@internalsref{Tie}.
@knownissues
@node Polymetric notation
@subsubsection Polymetric notation
+@c TODO Work this example into the main text
+@c @lilypondfile [verbatim,lilyquote,ragged-right,texidoc]
+@c {printing-music-with-different-time-signatures.ly}
+
@cindex double time signatures
@cindex signatures, polymetric
@cindex polymetric signatures
+
+
@cindex text items, non-empty
@cindex non-empty texts
-It is possible to place arbitrary strings of text or @ref{Text
-markup} with @var{note}@code{-"}@var{text}@code{"}.
+It is possible to add arbitrary text indications with
+@var{note}@code{-"}@var{text}@code{"}.
+Such indications can also be manually placed
+above or below the staff, using the
+simple syntax described in @ref{Controlling direction and
+placement}.
-INSERT EXAMPLE
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+d8^"pizz." e f g a4-"scherz." f
+@end lilypond
-More complex formatting may also be added to a note by using the
+In LilyPond, such text strings are called @command{markup}
+objects. This syntax is actually a shorthand; more complex text
+formatting may be added to a note by explicitly using the
@code{\markup} command, as described in @ref{Text markup}.
-@lilypond[fragment,ragged-right,verbatim,quote]
-c'4^\markup { bla \bold bla }
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+d8^\markup { \italic pizz. } e f g
+a4_\markup { \tiny scherz. \bold molto } f
@end lilypond
@predefined
@funindex \textLengthOff
@code{\textLengthOff}.
+By default, text indications do not influence the note spacing.
+However, their widths can be taken into account using the following
+syntax:
-@snippets
-@c TODO: put this in the LSR. -vv
-By default, these indications do not influence the note spacing.
-However, by using the command @code{\textLengthOn}, the widths
-will be taken into account:
+@example
+\textLengthOn
+@var{note}@code{-"text"}
+\textLengthOff
+@end example
+
+In the following example, the first text string does not affect
+spacing, whereas the second one does.
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-c4^"this does not affect spacing" \textLengthOn c4_"whereas this does" c4
+d8^"pizz." e f g \textLengthOn a4_"scherzando" f
@end lilypond
-@noindent
-After having used such a command, to go back to the default behavior
-and prevent text from influencing spacing, use @code{\textLengthOff}.
+@snippets
-@c TODO: LSR-ize this as well -vv
+@c FIXME: add an example and LSR-ize this? -vv
Checking to make sure that text scripts and lyrics are within the
margins is a relatively large computational task. To speed up
processing, lilypond does not perform such calculations by
Note that the @code{\tweak} command must be preceded by an
articulation mark as if it were an articulation itself.
+@cindex tuplets, nested
+@cindex triplets, nested
+@cindex bracket, tuplet
+@cindex tuplet bracket
+@cindex triplet bracket
+@funindex TupletBracket
+
The @code{\tweak} command must also be used to change the
appearance of one of a set of nested tuplets which begin at the
same musical moment. In the following example, the long tuplet
You can find more details of the @code{\tweak} command in
@ruser{Objects connected to the input}.
+If nested tuplets do not begin at the same moment their
+appearance may be modified in the usual way with
+@code{\override} commands:
+
+@c NOTE Tuplet brackets collide if notes are high on staff
+@c See issue 509
+@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
+\times 2/3 { c8[ c c]}
+\once \override TupletNumber
+ #'text = #tuplet-number::calc-fraction-text
+\times 2/3 {
+ c[ c]
+ c[ c]
+ \once \override TupletNumber #'transparent = ##t
+ \times 2/3 { c8[ c c] }
+\times 2/3 { c8[ c c]}
+}
+@end lilypond
+
@node The Internals Reference manual
@section The Internals Reference manual
diff_cmd = 'git diff --no-color %(committish)s HEAD -- %(original)s | cat'
format_table = {
- 'not translated': {'color':'d0f0f8', 'short':_doc ('no'), 'long':_doc ('not translated')},
+ 'not translated': {'color':'d0f0f8', 'short':_doc ('no'), 'abbr':'NT',
+ 'long':_doc ('not translated')},
'partially translated': {'color':'dfef77', 'short':_doc ('partially (%(p)d %%)'),
- 'long':_doc ('partially translated (%(p)d %%)')},
- 'fully translated': {'color':'1fff1f', 'short':_doc ('yes'), 'long': _doc ('translated')},
- 'up to date': {'short':_doc ('yes'), 'long':_doc ('up to date')},
- 'outdated': {'short':_doc ('partially (%(p)d %%)'), 'long':_doc ('partially up-to-date (%(p)d %%)')},
- 'N/A': {'short':_doc ('N/A'), 'long':'', 'color':'d587ff' },
+ 'abbr':'%(p)d%%', 'long':_doc ('partially translated (%(p)d %%)')},
+ 'fully translated': {'color':'1fff1f', 'short':_doc ('yes'), 'abbr':'FT',
+ 'long': _doc ('translated')},
+ 'up to date': {'short':_doc ('yes'), 'long':_doc ('up to date'), 'abbr':'100%%',
+ 'vague':_doc ('up to date')},
+ 'outdated': {'short':_doc ('partially (%(p)d %%)'), 'abbr':'%(p)d%%',
+ 'vague':_doc ('partially up to date')},
+ 'N/A': {'short':_doc ('N/A'), 'abbr':'N/A', 'color':'d587ff', 'vague':''},
'pre-GDP':_doc ('pre-GDP'),
'post-GDP':_doc ('post-GDP')
}
if self.checkers:
s += ' <small>' + '<br>\n '.join (self.checkers) + '</small><br>\n'
- c = self.completeness (['long', 'color'])
+ c = self.completeness (['color', 'long'])
s += ' <span style="background-color: #%(color)s">%(long)s</span><br>\n' % c
if self.partially_translated:
- u = self.uptodateness (['long', 'color'])
- s += ' <span style="background-color: #%(color)s">%(long)s</span><br>\n' % u
+ u = self.uptodateness (['vague', 'color'])
+ s += ' <span style="background-color: #%(color)s">%(vague)s</span><br>\n' % u
s += ' </td>\n'
return s
+ def text_status (self):
+ s = self.completeness ('abbr')['abbr'] + ' '
+
+ if self.partially_translated:
+ s += self.uptodateness ('abbr')['abbr'] + ' '
+ return s
+
def html_status (self):
# TODO
return ''
class MasterTelyDocument (TelyDocument):
def __init__ (self, filename, parent_translations=dict ([(lang, None) for lang in langdefs.LANGDICT.keys()])):
- #print "init MasterTelyDocument %s" % filename
TelyDocument.__init__ (self, filename)
self.size = len (self.contents)
self.word_count = tely_word_count (self.contents)
translations = dict ([(lang, os.path.join (lang, filename)) for lang in langdefs.LANGDICT.keys()])
- #print translations
self.translations = dict ([(lang, TranslatedTelyDocument (translations[lang], self, parent_translations.get (lang)))
for lang in langdefs.LANGDICT.keys() if os.path.exists (translations[lang])])
if self.translations:
s += '</table>\n<p></p>\n'
return s
+ def text_status (self, numbering=SectionNumber (), colspec=[48,12]):
+ if self.title == 'Untitled' or not self.translations:
+ return ''
+
+ s = ''
+ if self.level[1] == 0: # if self is a master document
+ s += (self.print_title (numbering) + ' ').ljust (colspec[0])
+ s += ''.join (['%s'.ljust (colspec[1]) % l for l in self.translations.keys ()])
+ s += '\n'
+ s += ('Section titles (%d)' % sum (self.word_count)).ljust (colspec[0])
+
+ else:
+ s = '%s (%d) ' \
+ % (self.print_title (numbering), sum (self.word_count))
+ s = s.ljust (colspec[0])
+
+ s += ''.join ([t.text_status ().ljust(colspec[1]) for t in self.translations.values ()])
+ s += '\n\n'
+ s += ''.join ([i.text_status (numbering) for i in self.includes])
+
+ if self.level[1] == 0:
+ s += '\n'
+ return s
+
+
progress ("Reading documents...")
tely_files = read_pipe ("find -maxdepth 2 -name '*.tely'")[0].splitlines ()
progress ("Generating status pages...")
-main_status_html = ' <p><i>Last updated %s</i></p>\n' % read_pipe ('LANG= date -u')[0]
+date_time = read_pipe ('LANG= date -u')[0]
+
+main_status_html = ' <p><i>Last updated %s</i></p>\n' % date_time
main_status_html += '\n'.join ([doc.html_status () for doc in master_docs])
html_re = re.compile ('<html>', re.I)
main_status_page = end_body_re.sub (main_status_html + '\n</body>', main_status_page)
open ('translations.html.in', 'w').write (main_status_page)
+
+main_status_txt = '''Documentation translations status
+Generated %s
+NT = not translated
+FT = fully translated
+
+''' % date_time
+
+main_status_txt += '\n'.join ([doc.text_status () for doc in master_docs])
+
+status_txt_file = 'out/translations-status.txt'
+progress ("Writing %s..." % status_txt_file)
+open (status_txt_file, 'w').write (main_status_txt)
texidoc = "Automatic beaming works also in ternary time sigs. In
this case, the 8th is a beat, so the 16ths are split into two
- groups. This can be avoided by overriding @code{beatLength} to be 3
- 8th notes."
+ groups. This can be avoided by overriding @code{beatLength} to be
+ three 8th notes."
}
\header {
texidoc = "Falls and doits can be created with bendAfter. They run
- to the next note, or to the next barline."
+ to the next note, or to the next barline. Microtone bends (i.e.
+ \bendAfter #3.5) are also supported."
}
c4-\bendAfter #-2
c4-\bendAfter #-3
c4-\bendAfter #-4
+ c4-\bendAfter #-5
+ c4-\bendAfter #3.5
+ c4-\bendAfter #2.5
+ c4-\bendAfter #1.5
+ c4-\bendAfter #0.5
+ c4-\bendAfter #-0.5
+ c4-\bendAfter #-1.5
+ c4-\bendAfter #-2.5
+ c4-\bendAfter #-3.5
}
--- /dev/null
+\header {
+
+ texidoc = "For collisions where the upper note is dotted and in a
+ space, the upper is moved to right. This behavior can be tuned by
+ prefer-dotted-right."
+
+ }
+
+\version "2.10.20"
+
+\paper{ ragged-right=##t }
+
+\new Staff \relative c' <<
+ { fis4.
+ \override Staff.NoteCollision #'prefer-dotted-right = ##f
+ fis4. }
+ \\
+ { \autoBeamOff e8 e e e e e e }
+>>
-%% regression test for fret diagram markups
-
\version "2.10.0"
-
+\header {
+ texidoc = "Fret diagrams can be created with @code{\markup}."
+}
\paper {
%% stretch to prevent diagrams from colliding.
\header {
- texidoc = "This file tests various Scheme utiliity functions."
+ texidoc = "This file tests various Scheme utility functions."
}
\header {
-
texidoc = "Stem lengths for grace notes should be shorter than
normal notes, if possible. They should never be longer, even if that
-would lead to beam quanting program. "
-
- }
+would lead to beam quanting problems."
+}
\version "2.10.0"
\layout {
\header {
- texidoc ="lyric syllables without note attachment are
-not centered; Centering may cause unintended effects when
-the papercolumn is very wide."
- }
-
-\layout{
- ragged-right = ##t
+ texidoc ="Lyric syllables without note attachment are not
+centered. Centering may cause unintended effects when the
+papercolumn is very wide."
}
+
+\layout{ ragged-right = ##t }
\version "2.11.38"
<<
\header {
-
- texidoc = "Own markup commands may be defined by using the
- @code{define-markup-command} scheme macro."
-
-
+ texidoc = "Users may define non-standard markup commands using
+the @code{define-markup-command} scheme macro."
}
<bend><bend-alter>3</bend-alter><release/><with-bar/></bend>
</technical>
</notations>
- <lyric number="1"><text>bend 3 with-bar</text></lyric>
+ <lyric number="1"><text>b.3 with-bar</text></lyric>
</note>
<note>
<pitch>
<type>quarter</type>
<notations>
<technical>
- <bend><bend-alter>-5</bend-alter><pre-bend/></bend>
+ <bend><bend-alter>-0.5</bend-alter><pre-bend/></bend>
</technical>
</notations>
- <lyric number="1"><text>pre-bend -(0.)5</text></lyric>
+ <lyric number="1"><text>pre-b. -0.5</text></lyric>
</note>
<note>
<pitch>
<type>quarter</type>
<notations>
<technical>
- <bend><bend-alter>5</bend-alter><release/></bend>
+ <bend><bend-alter>3.5</bend-alter><release/></bend>
</technical>
</notations>
- <lyric number="1"><text>bend release (3.)5</text></lyric>
+ <lyric number="1"><text>b. release 3.5</text></lyric>
</note>
</measure>
<measure number="20">
f2 \glissando c
\revert Glissando #'(bound-details right Y)
f2 \glissando c
+ \revert Glissando #'(bound-details left Y)
+ f2 \glissando c
}
\version "2.10.0"
\header {
- texidoc =
- "
-The piano brace should be shifted horizontally if it is enclosed in a bracket.
-"
+ texidoc = "A piano context included within a staff group should
+cause the piano brace to be drawn to the left of the staff angle
+bracket."
}
\layout {ragged-right = ##t}
ADD_ACKNOWLEDGER (Accidental_engraver, note_column);
ADD_TRANSLATOR (Accidental_engraver,
-
- "Make accidentals. "
- "Catch note heads, ties and notices key-change events. "
- "This engraver usually lives at Staff level, but "
- "reads the settings for Accidental at @code{Voice} level, "
- "so you can @code{\\override} them at @code{Voice}. ",
-
- /* grobs */
+ /* doc */
+ "Make accidentals."
+ " Catch note heads, ties and notices key-change events."
+ " This engraver usually lives at Staff level, but"
+ " reads the settings for Accidental at @code{Voice} level,"
+ " so you can @code{\\override} them at @code{Voice}.",
+
+ /* create */
"Accidental "
"AccidentalCautionary "
"AccidentalSuggestion ",
- /* props */
+ /* read */
"autoAccidentals "
"autoCautionaries "
"internalBarNumber "
"extraNatural "
"harmonicAccidentals "
"localKeySignature ",
+
+ /* write */
"localKeySignature "
);
ADD_INTERFACE (Accidental_interface,
- "a single accidental",
+ "A single accidental.",
- /* props */
+ /* properties */
"alteration "
"avoid-slur "
"forced "
}
ADD_INTERFACE (Align_interface,
+ "Order grobs from top to bottom, left to right, right to left"
+ " or bottom to top. For vertical alignments of staves, the"
+ " @code{break-system-details} of the left"
+ " @internalsref{NonMusicalPaperColumn} may be set to tune"
+ " vertical spacing. Set @code{alignment-extra-space} to add"
+ " extra space for staves. Set"
+ " @code{fixed-alignment-extra-space} to force staves in"
+ " @code{PianoStaff}s further apart.",
- "Order grobs from top to bottom, left to right, right to left or bottom "
- "to top. "
- "For vertical alignments of staves, the @code{break-system-details} of "
- "the left @internalsref{NonMusicalPaperColumn} may be set to tune vertical spacing "
- "Set @code{alignment-extra-space} to add extra space for staves. Set "
- "@code{fixed-alignment-extra-space} to force staves in PianoStaves further apart."
- ,
-
- /*
- properties
- */
+ /* properties */
"align-dir "
"axes "
"elements "
#include "protected-scm.hh"
#include "side-position-interface.hh"
#include "separation-item.hh"
-#include "staff-symbol-referencer.hh"
+#include "staff-symbol-referencer.hh"
#include "stream-event.hh"
#include "translator.icc"
ADD_ACKNOWLEDGER (Ambitus_engraver, note_head);
ADD_TRANSLATOR (Ambitus_engraver,
- /* doc */ "",
+ /* doc */
+ "",
+
/* create */
"Ambitus "
"AmbitusLine "
"AmbitusNoteHead "
- "AmbitusAccidental",
- /* read */ "",
- /* write */ "");
+ "AmbitusAccidental ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
return SCM_EOL;
}
-ADD_INTERFACE (Ambitus ,
+ADD_INTERFACE (Ambitus,
"The line between note heads for a pitch range.",
- /* props */
+ /* properties */
"join-heads "
"note-heads "
"thickness "
ADD_ACKNOWLEDGER (Arpeggio_engraver, rhythmic_head);
ADD_TRANSLATOR (Arpeggio_engraver,
- /* doc */ "Generate an Arpeggio symbol",
- /* create */ "Arpeggio",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Generate an Arpeggio symbol.",
+
+ /* create */
+ "Arpeggio",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Arpeggio,
- "Functions and settings for drawing an arpeggio symbol (a wavy line left to noteheads.",
+ "Functions and settings for drawing an arpeggio symbol (a"
+ " wavy line left to noteheads.",
/* properties */
"arpeggio-direction "
ADD_ACKNOWLEDGER (Auto_beam_engraver, beam);
ADD_ACKNOWLEDGER (Auto_beam_engraver, rest);
ADD_TRANSLATOR (Auto_beam_engraver,
- /* doc */ "Generate beams based on measure characteristics and observed "
- "Stems. Uses beatLength, measureLength and measurePosition to decide "
- "when to start and stop a beam. Overriding beaming is done through "
- "@ref{Stem_engraver} properties @code{stemLeftBeamCount} and "
- "@code{stemRightBeamCount}. ",
- /* create */ "Beam",
+ /* doc */
+ "Generate beams based on measure characteristics and observed"
+ " Stems. Uses @code{beatLength}, @code{measureLength}, and"
+ " @code{measurePosition} to decide when to start and stop a"
+ " beam. Overriding beaming is done through"
+ " @ref{Stem_engraver} properties @code{stemLeftBeamCount} and"
+ " @code{stemRightBeamCount}.",
+
+ /* create */
+ "Beam ",
/* read */
"autoBeaming "
"beatLength "
"subdivideBeams ",
- /* write */ "");
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Axis_group_engraver, grob);
ADD_TRANSLATOR (Axis_group_engraver,
- /* doc */ "Group all objects created in this context in a VerticalAxisGroup spanner.",
- /* create */ "VerticalAxisGroup",
+ /* doc */
+ "Group all objects created in this context in a"
+ " @code{VerticalAxisGroup} spanner.",
+
+ /* create */
+ "VerticalAxisGroup ",
+
/* read */
"currentCommandColumn ",
- /* write */ "");
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Axis_group_interface,
-
"An object that groups other layout objects.",
/* properties */
ADD_ACKNOWLEDGER (Balloon_engraver, grob);
ADD_TRANSLATOR (Balloon_engraver,
- "Create balloon texts",
+ /* doc */
+ "Create balloon texts.",
+
+ /* create */
"BalloonTextItem ",
- /*read*/ "",
- /*write*/ ""
+
+ /*read*/
+ "",
+
+ /*write*/
+ ""
);
}
ADD_INTERFACE (Balloon_interface,
- "A collection of routines to put text balloons around an object.",
+ "A collection of routines to put text balloons around an"
+ " object.",
/* properties */
"padding "
ADD_END_ACKNOWLEDGER (Bar_engraver, spanner);
ADD_TRANSLATOR (Bar_engraver,
- /* doc */ "Create barlines. This engraver is controlled through the "
- "@code{whichBar} property. If it has no bar line to create, it will forbid a linebreak at this point",
- /* create */ "BarLine",
- /* read */ "whichBar",
- /* write */ "forbidBreak");
+ /* doc */
+ "Create barlines. This engraver is controlled through the"
+ " @code{whichBar} property. If it has no bar line to create,"
+ " it will forbid a linebreak at this point.",
+
+ /* create */
+ "BarLine ",
+
+ /* read */
+ "whichBar ",
+
+ /* write */
+ "forbidBreak "
+ );
}
ADD_INTERFACE (Bar_line,
-
"Bar line.\n"
"\n"
- "Print a special bar symbol. It replaces the \n"
- "regular bar symbol with a special\n"
- "symbol. The argument @var{bartype} is a string which specifies the\n"
- "kind of bar to print. Options are @code{:|}, \n"
- "@code{|:}, @code{:|:},\n"
- "@code{||}, @code{|.},\n"
- "@code{.|}, and @code{.|.}. \n"
+ "Print a special bar symbol. It replaces the regular bar"
+ " symbol with a special symbol. The argument @var{bartype}"
+ " is a string which specifies the kind of bar to print."
+ " Options are @code{:|}, @code{|:}, @code{:|:}, @code{||},"
+ " @code{|.}, @code{.|}, and @code{.|.}.\n"
"\n"
- "These produce, respectively, a right repeat, a left repeat, a double\n"
- "repeat, a double bar, a start bar, an end bar, and a thick double bar.\n"
- "In addition, there is an option @code{||:} which is equivalent to\n"
- "@code{|:} except at line breaks, where it produces a double bar (@code{||})\n"
- "at the end of the line and a repeat sign (@code{|:}) at the beginning\n"
- "of the new line."
- "If @var{bartype} is set to @code{empty} then nothing is printed,\n"
- "but a line break is allowed at that spot.\n"
- "\n\n"
- "@code{gap} is used for the gaps in dashed barlines."
-
- ,
-
+ "These produce, respectively, a right repeat, a left repeat,"
+ " a double repeat, a double bar, a start bar, an end bar, and"
+ " a thick double bar. In addition, there is an option"
+ " @code{||:} which is equivalent to @code{|:} except at line"
+ " breaks, where it produces a double bar (@code{||}) at the"
+ " end of the line and a repeat sign (@code{|:}) at the"
+ " beginning of the new line.\n"
+ "\n"
+ "If @var{bartype} is set to @code{empty} then nothing is"
+ " printed, but a line break is allowed at that spot.\n"
+ "\n"
+ "@code{gap} is used for the gaps in dashed barlines.",
/* properties */
"allow-span-bar "
ADD_ACKNOWLEDGER (Bar_number_engraver, break_alignment);
ADD_TRANSLATOR (Bar_number_engraver,
- /* doc */ "A bar number is created whenever measurePosition "
- "is zero and when there is a bar line (ie. when @code{whichBar} is set. "
- "It is \n"
- "put on top of all staves, and appears only at left side of the staff. "
- "The staves are taken from @code{stavesFound}, which is maintained by "
- "@code{@ref{Staff_collecting_engraver}}. ",
-
- /* create */ "BarNumber",
+ /* doc */
+ "A bar number is created whenever @code{measurePosition} is"
+ " zero and when there is a bar line (i.e., when"
+ " @code{whichBar} is set). It is put on top of all staves,"
+ " and appears only at the left side of the staff. The staves"
+ " are taken from @code{stavesFound}, which is maintained by"
+ " @ref{Staff_collecting_engraver}.",
+
+ /* create */
+ "BarNumber ",
+
/* read */
"currentBarNumber "
"whichBar "
"stavesFound "
"barNumberVisibility ",
- /* write */ "");
+
+ /* write */
+ ""
+ );
ADD_TRANSLATOR (Beam_engraver,
/* doc */
-
- "Handles Beam events by engraving Beams. If omitted, then notes will be "
- "printed with flags instead of beams.",
+ "Handle @code{Beam} events by engraving beams. If omitted,"
+ " then notes are printed with flags instead of beams.",
- /* create */ "Beam",
+ /* create */
+ "Beam ",
/* read */
"beamMelismaBusy "
"beatLength "
- "subdivideBeams "
- ,
+ "subdivideBeams ",
+
/* write */
- "forbidBreak");
+ "forbidBreak"
+ );
class Grace_beam_engraver : public Beam_engraver
{
ADD_ACKNOWLEDGER (Grace_beam_engraver, rest);
ADD_TRANSLATOR (Grace_beam_engraver,
-
/* doc */
-
- "Handles Beam events by engraving Beams. If omitted, then notes will "
- "be printed with flags instead of beams. Only engraves beams when we "
- " are at grace points in time. ",
+ "Handle @code{Beam} events by engraving beams. If omitted,"
+ " then notes are printed with flags instead of beams. Only"
+ " engraves beams when we are at grace points in time.",
- /* create */ "Beam",
+ /* create */
+ "Beam ",
+
/* read */
"beamMelismaBusy "
"beatLength "
- "subdivideBeams "
- ,
- /* write */ "");
+ "subdivideBeams ",
+
+ /* write */
+ ""
+ );
now_stop_ev_ = ev;
}
-ADD_TRANSLATOR (Beam_performer, "", "", "", "");
+ADD_TRANSLATOR (Beam_performer,
+ /* doc */
+ "",
+
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Beam,
-
- "A beam. \n\n"
- "The @code{thickness} property is the weight of beams, "
- "measured in staffspace. The @code{direction} "
- "property is not user-serviceable. Use "
- "the @code{direction} property of @code{Stem} instead. "
-
- ,
+ "A beam.\n"
+ "\n"
+ "The @code{thickness} property is the weight of beams,"
+ " measured in staffspace. The @code{direction} property is"
+ " not user-serviceable. Use the @code{direction} property"
+ " of @code{Stem} instead.",
/* properties */
"annotation "
"concaveness "
"damping "
"details "
- "direction "
+ "direction "
"gap "
"gap-count "
"grow-direction "
ADD_ACKNOWLEDGER (Bend_engraver, note_head);
ADD_TRANSLATOR (Bend_engraver,
- /* doc */ "Create fall spanners.",
- /* create */ "BendAfter",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Create fall spanners.",
+
+ /* create */
+ "BendAfter ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
Axis_group_interface::add_element (group, item);
}
+
ADD_ACKNOWLEDGER (Break_align_engraver, break_aligned);
ADD_ACKNOWLEDGER (Break_align_engraver, break_alignable);
ADD_TRANSLATOR (Break_align_engraver,
- "Align grobs with corresponding @code{break-align-symbols} into "
- "groups, and order the groups according to @code{breakAlignOrder}. "
- "The left edge of the alignment gets a separate group, with a symbol @code{left-edge}. ",
- /* create */ "BreakAlignment "
+ /* doc */
+ "Align grobs with corresponding @code{break-align-symbols}"
+ " into groups, and order the groups according to"
+ " @code{breakAlignOrder}. The left edge of the alignment gets"
+ " a separate group, with a symbol @code{left-edge}.",
+
+ /* create */
+ "BreakAlignment "
"BreakAlignGroup "
"LeftEdge ",
- /* read */ "",
- /* write */ "");
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Break_alignable_interface,
- "Object that is aligned on a break aligment. ",
+ "Object that is aligned on a break aligment.",
/* properties */
"break-align-symbols "
- )
-
-
+ );
ADD_INTERFACE (Break_aligned_interface,
"Items that are aligned in prefatory matter.\n"
"\n"
- "The spacing of these items is controlled by the @code{space-alist}\n"
- "property. It contains a list @code{break-align-symbol}s with a specification\n"
- "of the associated space. The space specification can be "
+ "The spacing of these items is controlled by the"
+ " @code{space-alist} property. It contains a list"
+ " @code{break-align-symbol}s with a specification of the"
+ " associated space. The space specification can be\n"
+ "\n"
"@table @code\n"
"@item (minimum-space . @var{spc}))\n"
- " Pad space until the distance is @var{spc}\n"
+ "Pad space until the distance is @var{spc}.\n"
"@item (fixed-space . @var{spc})\n"
- " Set a fixed space\n"
+ "Set a fixed space.\n"
"@item (semi-fixed-space . @var{spc})\n"
- " Set a space. Half of it is fixed and half is stretchable. \n"
- "(does not work at start of line. fixme)\n"
+ "Set a space. Half of it is fixed and half is stretchable."
+ " (does not work at start of line. fixme)\n"
"@item (extra-space . @var{spc})\n"
- " Add @var{spc} amount of space.\n"
+ "Add @var{spc} amount of space.\n"
"@end table\n"
"\n"
- "Special keys for the alist are @code{first-note} and @code{next-note}, signifying\n"
- "the first note on a line, and the next note halfway a line.\n"
+ "Special keys for the alist are @code{first-note} and"
+ " @code{next-note}, signifying the first note on a line, and"
+ " the next note halfway a line.\n"
"\n"
- "Rules for this spacing are much more complicated than this. \n"
- "See [Wanske] page 126 -- 134, [Ross] pg 143 -- 147\n",
+ "Rules for this spacing are much more complicated than this."
+ " See [Wanske] page 126--134, [Ross] page 143--147.",
/* properties */
"break-align-anchor "
);
ADD_INTERFACE (Break_alignment_interface,
- "The object that performs break aligment. See @ref{break-aligned-interface}.",
+ "The object that performs break aligment. See"
+ " @ref{break-aligned-interface}.",
/* properties */
"positioning-done "
- "break-align-orders");
+ "break-align-orders "
+ );
}
ADD_TRANSLATOR (Breathing_sign_engraver,
- /* doc */ "",
- /* create */ "BreathingSign",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Create a breathing sign.",
+
+ /* create */
+ "BreathingSign ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
ADD_INTERFACE (Breathing_sign,
"A breathing sign.",
+ /* properties */
"direction "
-
);
which properties are read depend on the chord naming function active.
*/
ADD_TRANSLATOR (Chord_name_engraver,
- /* doc */ "Catch note-events "
- "and generate the appropriate chordname.",
+ /* doc */
+ "Catch note events and generate the appropriate chordname.",
- /* create */ "ChordName",
- /* read */ "chordChanges "
+ /* create */
+ "ChordName ",
+
+ /* read */
+ "chordChanges "
"chordNameExceptions "
"chordNameFunction "
"chordNoteNamer "
"chordRootNamer "
"chordNameExceptions "
- "majorSevenSymbol "
- ,
- /* write */ "");
+ "majorSevenSymbol ",
+
+ /* write */
+ ""
+ );
ADD_INTERFACE (Chord_name,
"A chord name.",
-
- "begin-of-line-visible");
+ /* properties */
+ "begin-of-line-visible "
+ );
ADD_ACKNOWLEDGER (Chord_tremolo_engraver, stem);
ADD_TRANSLATOR (Chord_tremolo_engraver,
- /* doc */ "Generates beams for tremolo repeats.",
- /* create */ "Beam",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Generate beams for tremolo repeats.",
+
+ /* create */
+ "Beam ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Clef_engraver, bar_line);
ADD_TRANSLATOR (Clef_engraver,
- /* doc */ "Determine and set reference point for pitches",
- /* create */ "Clef "
+ /* doc */
+ "Determine and set reference point for pitches.",
+
+ /* create */
+ "Clef "
"OctavateEight ",
+
/* read */
"clefGlyph "
"clefOctavation "
"clefPosition "
"explicitClefVisibility "
- "forceClef "
- ,
- /* write */ "");
+ "forceClef ",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Clef,
- "A clef sign",
+ "A clef sign.",
/* properties */
"full-size-change "
ADD_ACKNOWLEDGER (Cluster_spanner_engraver, note_column);
ADD_TRANSLATOR (Cluster_spanner_engraver,
/* doc */
- "Engraves a cluster using Spanner notation ",
+ "Engrave a cluster using @code{Spanner} notation.",
+
/* create */
"ClusterSpanner "
"ClusterSpannerBeacon ",
- /* read */ "",
- /* write */ "");
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Cluster,
- "A graphically drawn musical cluster. "
- "\n\n"
- "@code{padding} adds to the vertical extent of the shape (top and "
- "bottom). \n\n"
- "The property @code{style} controls the shape of cluster segments. Valid values "
- "include @code{leftsided-stairs}, @code{rightsided-stairs}, @code{centered-stairs}, "
- "and @code{ramp}.\n",
-
- /* props */
+ "A graphically drawn musical cluster.\n"
+ "\n"
+ "@code{padding} adds to the vertical extent of the shape (top"
+ " and bottom).\n"
+ "\n"
+ "The property @code{style} controls the shape of cluster"
+ " segments. Valid values include @code{leftsided-stairs},"
+ " @code{rightsided-stairs}, @code{centered-stairs}, and"
+ " @code{ramp}.\n",
+
+ /* properties */
"style "
"padding "
"columns "
}
ADD_INTERFACE (Cluster_beacon,
- "A place holder for the cluster spanner to determine the vertical "
- "extents of a cluster spanner at this X position.",
+ "A place holder for the cluster spanner to determine the"
+ " vertical extents of a cluster spanner at this"
+ " X@tie{}position.",
/* properties */
- "positions ");
+ "positions "
+ );
ADD_ACKNOWLEDGER (Collision_engraver, note_column);
ADD_TRANSLATOR (Collision_engraver,
- /* doc */ "Collect NoteColumns, and as soon as there are two or more, put them in a NoteCollision object.",
- /* create */ "NoteCollision",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Collect @code{NoteColumns}, and as soon as there are two or"
+ " more, put them in a @code{NoteCollision} object.",
+
+ /* create */
+ "NoteCollision ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_TRANSLATOR (Completion_heads_engraver,
- /* doc */ "This engraver replaces "
- "@code{Note_heads_engraver}. It plays some trickery to "
- "break long notes and automatically tie them into the next measure.",
+ /* doc */
+ "This engraver replaces @code{Note_heads_engraver}. It plays"
+ " some trickery to break long notes and automatically tie them"
+ " into the next measure.",
+
/* create */
"NoteHead "
"Dots "
- "Tie",
+ "Tie ",
+
/* read */
"middleCPosition "
"measurePosition "
- "measureLength",
+ "measureLength ",
- /* write */ "");
+ /* write */
+ ""
+ );
add_text (Audio_text::TEXT, id_string);
}
-ADD_TRANSLATOR (Control_track_performer, "", "",
- "", "");
+ADD_TRANSLATOR (Control_track_performer,
+ /* doc */
+ "",
+
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Custos_engraver, note_head);
ADD_TRANSLATOR (Custos_engraver,
- /* doc */ "",
- /* create */ "Custos",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Engrave custodes.",
+
+ /* create */
+ "Custos ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Custos,
- "A custos object.",
+ "A custos object. @code{style} can have four valid values:"
+ " @code{mensural}, @code{vaticana}, @code{medicaea}, and"
+ " @code{hufnagel}. @code{mensural} is the default style.",
+
+ /* properties */
"style "
"neutral-position "
- "neutral-direction ");
+ "neutral-direction "
+ );
#include "translator.icc"
ADD_TRANSLATOR (Default_bar_line_engraver,
- "This engraver determines what kind of automatic bar "
- "lines should be produced, "
- "and sets @code{whichBar} "
- "accordingly. It should be at the same "
- "level as @ref{Timing_translator}. ",
+ /* doc */
+ "This engraver determines what kind of automatic bar lines"
+ " should be produced, and sets @code{whichBar} accordingly."
+ " It should be at the same level as @ref{Timing_translator}.",
- /* create */ "",
+ /* create */
+ "",
/* read */
"automaticBars "
"whichBar "
"measurePosition ",
- /* write */ "automaticBars");
+ /* write */
+ "automaticBars "
+ );
Default_bar_line_engraver::Default_bar_line_engraver ()
{
#include "side-position-interface.hh"
#include "engraver.hh"
#include "translator.icc"
-#include "item.hh"
+#include "item.hh"
class Dot_column_engraver : public Engraver
{
ADD_ACKNOWLEDGER (Dot_column_engraver, rhythmic_head);
ADD_TRANSLATOR (Dot_column_engraver,
- /* doc */ "Engraves dots on dotted notes shifted to the right of the note.\n"
- "If omitted, then dots appear on top of the notes.",
- /* create */ "DotColumn",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Engrave dots on dotted notes shifted to the right of the"
+ " note. If omitted, then dots appear on top of the notes.",
+
+ /* create */
+ "DotColumn ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Dot_column,
-
- "Groups dot objects so they form a column, and position dots so they do not "
- "clash with staff lines. ",
+ "Group dot objects so they form a column, and position"
+ " dots so they do not clash with staff lines.",
/* properties */
"dots "
ADD_ACKNOWLEDGER (Dots_engraver, rhythmic_head);
ADD_TRANSLATOR (Dots_engraver,
- "Create @ref{Dots} objects for @ref{rhythmic-head-interface}s.",
+ "Create @ref{Dots} objects for"
+ " @ref{rhythmic-head-interface}s.",
- /* create */
- "Dots ",
+ /* create */
+ "Dots ",
- /*r*/
- "" ,
+ /* read */
+ "",
- /*w*/
- "");
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Dots,
- "The dots to go with a notehead or rest."
- "@code{direction} sets the preferred direction to move in case of staff "
- "line collisions.",
+ "The dots to go with a notehead or rest. @code{direction}"
+ " sets the preferred direction to move in case of staff line"
+ " collisions. @code{style} defaults to undefined, which is"
+ " normal 19th/20th century traditional style. Set"
+ " @code{style} to @code{vaticana} for ancient type dots.",
/* properties */
"direction "
ADD_TRANSLATOR (Drum_notes_engraver,
- /* doc */ "Generate noteheads.",
+ /* doc */
+ "Generate drum note heads.",
+
/* create */
"NoteHead "
- "Script",
- /* read */ "drumStyleTable",
- /* write */ "");
+ "Script ",
+
+ /* read */
+ "drumStyleTable ",
+
+ /* write */
+ ""
+ );
}
ADD_TRANSLATOR (Drum_note_performer,
- "Play drum notes.", "", "", "");
+ /* doc */
+ "Play drum notes.",
+
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
finished_cresc_ = cresc_;
/* backwards compatibility with hairpinToBarline */
- bool use_bar = to_boolean (get_property ("hairpinToBarline"))
- && scm_is_string (get_property ("whichBar"));
+ if (finished_cresc_->get_property ("to-barline") == SCM_EOL)
+ {
+ bool use_bar = to_boolean (get_property ("hairpinToBarline"))
+ && scm_is_string (get_property ("whichBar"));
- finished_cresc_->set_property ("to-barline", scm_from_bool (use_bar));
+ finished_cresc_->set_property ("to-barline", scm_from_bool (use_bar));
+ }
announce_end_grob (finished_cresc_, SCM_EOL);
cresc_ = 0;
ADD_TRANSLATOR (Dynamic_engraver,
/* doc */
- "This engraver creates hairpins, dynamic texts, and their vertical\n"
- "alignments. The symbols are collected onto a DynamicLineSpanner grob\n"
- "which takes care of vertical positioning. ",
+ "Create hairpins, dynamic texts, and their vertical"
+ " alignments. The symbols are collected onto a"
+ " @code{DynamicLineSpanner} grob which takes care of vertical"
+ " positioning.",
/* create */
"DynamicLineSpanner "
"Hairpin "
"TextSpanner ",
- /* read */ "",
- /* write */ "");
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_TRANSLATOR (Dynamic_performer,
- /* doc */ "",
- /* create */ "",
+ /* doc */
+ "",
+
+ /* create */
+ "",
/* read */
"dynamicAbsoluteVolumeFunction "
"instrumentEqualizer "
"midiMaximumVolume "
"midiMinimumVolume "
- "midiInstrument "
- ,
- /*writes*/"");
+ "midiInstrument ",
+
+ /* write */
+ ""
+ );
ADD_INTERFACE (Enclosing_bracket,
-
"Brackets alongside bass figures.",
- /* props */
+ /* properties */
"bracket-flare "
"edge-height "
"elements "
#include "translator.icc"
ADD_TRANSLATOR_GROUP (Engraver_group,
- /* doc */ "A group of engravers taken together",
- /* create */ "",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "A group of engravers taken together.",
+
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
void
Engraver_group::derived_mark () const
#include "translator.icc"
ADD_TRANSLATOR (Engraver,
- "Base class for engravers. Does nothing, so it is not used.",
+ /* doc */
+ "Base class for engravers. Does nothing, so it is not used.",
+
+ /* create */
"",
+
+ /* read */
"",
- "");
+
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Extender_engraver, lyric_syllable);
ADD_TRANSLATOR (Extender_engraver,
- /* doc */ "Create lyric extenders",
- /* create */ "LyricExtender",
- /* read */ "extendersOverRests",
- /* write */ "");
+ /* doc */
+ "Create lyric extenders.",
+
+ /* create */
+ "LyricExtender ",
+
+ /* read */
+ "extendersOverRests ",
+
+ /* write */
+ ""
+ );
ADD_INTERFACE (Figured_bass_continuation,
"Simple extender line between bounds.",
- /* props */
+ /* properties */
"thickness "
"padding "
"figures "
ADD_TRANSLATOR (Figured_bass_engraver,
/* doc */
-
"Make figured bass numbers.",
+
/* create */
"BassFigure "
"BassFigureAlignment "
"BassFigureBracket "
"BassFigureContinuation "
- "BassFigureLine "
- ,
+ "BassFigureLine ",
/* read */
"figuredBassAlterationDirection "
"figuredBassFormatter "
"implicitBassFigures "
"useBassFigureExtenders "
- "ignoreFiguredBassRest "
- ,
+ "ignoreFiguredBassRest ",
/* write */
- "");
+ ""
+ );
"BassFigureAlignmentPositioning ",
/* read */
- " ",
- /* write */ "");
+ "",
+
+ /* write */
+ ""
+ );
ADD_TRANSLATOR (Fingering_engraver,
/* doc */
- "Create fingering-scripts",
+ "Create fingering scripts.",
+
/* create */
- "Fingering",
- /* read */ "",
- /* write */ "");
+ "Fingering ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Font_interface,
- "Any symbol that is typeset through fixed sets of glyphs, "
- " (ie. fonts)",
+ "Any symbol that is typeset through fixed sets of glyphs,"
+ " (i.e., fonts).",
+ /* properties */
"font "
"font-encoding "
"font-family "
ADD_ACKNOWLEDGER (Font_size_engraver, font);
ADD_TRANSLATOR (Font_size_engraver,
- /* doc */ "Puts fontSize into font-size grob property.",
- /* create */ "",
- /* read */ "fontSize",
- /* write */ "");
+ /* doc */
+ "Put @code{fontSize} into @code{font-size} grob property.",
+
+ /* create */
+ "",
+
+ /* read */
+ "fontSize ",
+
+ /* write */
+ ""
+ );
}
ADD_TRANSLATOR (Forbid_line_break_engraver,
- /* doc */ "Forbid line breaks when note heads "
- "are still playing at some point.",
- /* create */ "",
- /* read */ "busyGrobs",
- /* write */ "forbidBreak");
+ /* doc */
+ "Forbid line breaks when note heads are still playing at some"
+ " point.",
+
+ /* create */
+ "",
+
+ /* read */
+ "busyGrobs ",
+
+ /* write */
+ "forbidBreak "
+ );
}
ADD_TRANSLATOR (Fretboard_engraver,
- /* doc */ "Generate one or more tablature noteheads from event of type NoteEvent.",
+ /* doc */
+ "Generate one or more tablature noteheads from event of type"
+ " @code{NoteEvent}.",
+
/* create */
- "FretBoard "
- ,
+ "FretBoard ",
/* read */
"stringTunings "
"minimumFret "
"tablatureFormat "
- "highStringOne "
- ,
- /* write */ "");
+ "highStringOne ",
+
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Glissando_engraver, rhythmic_head);
ADD_TRANSLATOR (Glissando_engraver,
- /* doc */ "",
+ /* doc */
+ "Engrave glissandi.",
+
/* create */
- "Glissando",
+ "Glissando ",
/* read */
"",
- /* write */ "");
+ /* write */
+ ""
+ );
#include "translator.icc"
ADD_TRANSLATOR (Grace_engraver,
- /* doc */ "Set font size and other properties for grace notes.",
- /* create */ "",
- /* read */ "graceSettings",
- /* write */ "");
+ /* doc */
+ "Set font size and other properties for grace notes.",
+
+ /* create */
+ "",
+
+ /* read */
+ "graceSettings ",
+
+ /* write */
+ ""
+ );
ADD_TRANSLATOR (Grace_spacing_engraver,
- "Bookkeeping of shortest starting and playing notes in grace note runs.",
+ "Bookkeeping of shortest starting and playing notes in grace"
+ " note runs.",
/* create */
"GraceSpacing ",
/* read */
"currentMusicalColumn ",
- /* write */ "");
+ /* write */
+ ""
+ );
read by the associated item class, such as VaticanaLigature.--jr
*/
ADD_INTERFACE (Gregorian_ligature,
- "A gregorian ligature",
- "virga stropha inclinatum auctum descendens ascendens "
- "oriscus quilisma deminutum cavum linea pes-or-flexa "
- "context-info prefix-set");
+ "A gregorian ligature.",
+
+ /* properties */
+ "virga "
+ "stropha "
+ "inclinatum "
+ "auctum "
+ "descendens "
+ "ascendens "
+ "oriscus "
+ "quilisma "
+ "deminutum "
+ "cavum "
+ "linea "
+ "pes-or-flexa "
+ "context-info "
+ "prefix-set "
+ );
}
ADD_INTERFACE (Grid_line_interface,
- "A line that spanned between grid-points. ",
- "elements thickness");
+ "A line that is spanned between grid-points.",
+
+ /* properties */
+ "elements "
+ "thickness "
+ );
ADD_INTERFACE (Grid_point_interface,
- "A spanning point for grid lines. ",
- "");
+ "A spanning point for grid lines.",
+
+ /* properties */
+ ""
+ );
#include "translator.icc"
ADD_ACKNOWLEDGER (Grid_line_span_engraver, grid_point);
ADD_TRANSLATOR (Grid_line_span_engraver,
- /* doc */ "This engraver makes cross-staff linelines: It catches all normal "
- "line lines, and draws a single span-line across them.",
- /* create */ "GridLine",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "This engraver makes cross-staff lines: It catches all normal"
+ " lines and draws a single span line across them.",
+
+ /* create */
+ "GridLine ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_TRANSLATOR (Grid_point_engraver,
- /* doc */ "generate grid points.",
- /* create */ "GridPoint",
- /* read */ "gridInterval",
- /* write */ "");
+ /* doc */
+ "Generate grid points.",
+
+ /* create */
+ "GridPoint ",
+
+ /* read */
+ "gridInterval ",
+
+ /* write */
+ ""
+ );
#include "translator.icc"
ADD_ACKNOWLEDGER (Grob_pq_engraver, grob);
ADD_TRANSLATOR (Grob_pq_engraver,
+ /* doc */
+ "Administrate when certain grobs (e.g., note heads) stop"
+ " playing.",
- /* doc */ "Administrate when certain grobs (eg. note heads) stop playing",
- /* create */ "",
- /* read */ "busyGrobs",
- /* write */ "busyGrobs");
+ /* create */
+ "",
+
+ /* read */
+ "busyGrobs ",
+
+ /* write */
+ "busyGrobs "
+ );
ADD_INTERFACE (Grob,
- "A grob represents a piece of music notation\n"
+ "A grob represents a piece of music notation.\n"
"\n"
- "All grobs have an X and Y-position on the page. These X and Y positions\n"
- "are stored in a relative format, so they can easily be combined by\n"
- "stacking them, hanging one grob to the side of another, and coupling\n"
- "them into a grouping objects.\n"
+ "All grobs have an X and Y@tie{}position on the page. These"
+ " X and Y@tie{}positions are stored in a relative format, thus"
+ " they can easily be combined by stacking them, hanging one"
+ " grob to the side of another, or coupling them into grouping"
+ " objects.\n"
"\n"
- "Each grob has a reference point (a.k.a. parent): the position of a grob\n"
- "is stored relative to that reference point. For example the X-reference\n"
- "point of a staccato dot usually is the note head that it applies\n"
- "to. When the note head is moved, the staccato dot moves along\n"
- "automatically.\n"
+ "Each grob has a reference point (a.k.a.@: parent): The"
+ " position of a grob is stored relative to that reference"
+ " point. For example, the X@tie{}reference point of a staccato"
+ " dot usually is the note head that it applies to. When the"
+ " note head is moved, the staccato dot moves along"
+ " automatically.\n"
"\n"
- "A grob is often associated with a symbol, but some grobs do not print\n"
- "any symbols. They take care of grouping objects. For example, there is a\n"
- "separate grob that stacks staves vertically. The @ref{NoteCollision}\n"
- "is also an abstract grob: it only moves around chords, but doesn't print\n"
- "anything.\n"
+ "A grob is often associated with a symbol, but some grobs do"
+ " not print any symbols. They take care of grouping objects."
+ " For example, there is a separate grob that stacks staves"
+ " vertically. The @ref{NoteCollision} object is also an"
+ " abstract grob: It only moves around chords, but doesn't print"
+ " anything.\n"
"\n"
- "Grobs have a properties: Scheme variables, that can be read and set. "
- "They have two types. Immutable variables "
- "define the default style and behavior. They are shared between many objects. "
- "They can be changed using @code{\\override} and @code{\\revert}. "
- "\n\n"
- "Mutable properties are variables that are specific to one grob. Typically, "
- "lists of other objects, or results from computations are stored in"
- "mutable properties: every call to set-grob-property (or its C++ equivalent) "
- "sets a mutable property. "
- "\n\n"
- "The properties @code{after-line-breaking} and @code{before-line-breaking} "
- "are dummies that are not user-serviceable. "
-
- ,
+ "Grobs have properties (Scheme variables) that can be read and"
+ " set. Two types of them exist: immutable and mutable."
+ " Immutable variables define the default style and behavior."
+ " They are shared between many objects. They can be changed"
+ " using @code{\\override} and @code{\\revert}. Mutable"
+ " properties are variables that are specific to one grob."
+ " Typically, lists of other objects, or results from"
+ " computations are stored in mutable properties. In"
+ " particular, every call to @code{set-grob-property} (or its"
+ " C++ equivalent) sets a mutable property.\n"
+ "\n"
+ "The properties @code{after-line-breaking} and"
+ " @code{before-line-breaking} are dummies that are not"
+ " user-serviceable.",
/* properties */
"X-extent "
}
ADD_INTERFACE (Hairpin,
- "A hairpin crescendo/decrescendo.",
+ "A hairpin crescendo or decrescendo.",
- /* props */
+ /* properties */
"adjacent-hairpins "
"circled-tip "
"bound-padding "
ADD_ACKNOWLEDGER (Hara_kiri_engraver, grob);
ADD_TRANSLATOR (Hara_kiri_engraver,
- /* doc */ "Like Axis_group_engraver, but make a hara-kiri spanner, and add "
- "interesting items (ie. note heads, lyric syllables and normal rests) ",
- /* create */ "VerticalAxisGroup",
- /* read */ "keepAliveInterfaces",
- /* write */ "");
+ /* doc */
+ "Like @code{Axis_group_engraver}, but make a hara-kiri"
+ " spanner, and add interesting items (i.e., note heads, lyric"
+ " syllables, and normal rests).",
+
+ /* create */
+ "VerticalAxisGroup ",
+
+ /* read */
+ "keepAliveInterfaces ",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Hara_kiri_group_spanner,
- "A group spanner that keeps track of interesting items. If it "
- "doesn't contain any after linebreaking, then it "
- "will remove itself and all its children.",
-
+ "A group spanner that keeps track of interesting items. If it"
+ " doesn't contain any after line breaking, it removes itself"
+ " and all its children.",
/* properties */
"items-worth-living "
ADD_ACKNOWLEDGER (Horizontal_bracket_engraver, note_column);
ADD_TRANSLATOR (Horizontal_bracket_engraver,
- "Create horizontal brackets over notes for musical analysis purposes.",
- "HorizontalBracket",
+ /* doc */
+ "Create horizontal brackets over notes for musical analysis"
+ " purposes.",
+
+ /* create */
+ "HorizontalBracket ",
+
+ /* read */
"",
- "");
+
+ /* write */
+ ""
+ );
Horizontal_bracket_engraver::Horizontal_bracket_engraver ()
{
ADD_INTERFACE (Horizontal_bracket,
"A horizontal bracket encompassing notes.",
- /* props */
+ /* properties */
"bracket-flare "
"columns "
"edge-height "
ADD_ACKNOWLEDGER (Hyphen_engraver, lyric_syllable);
ADD_TRANSLATOR (Hyphen_engraver,
- /* doc */ "Create lyric hyphens and "
- "distance constraints between words.",
- /* create */ "LyricHyphen LyricSpace",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Create lyric hyphens and distance constraints between words.",
+
+ /* create */
+ "LyricHyphen "
+ "LyricSpace ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Instrument_name_engraver, axis_group);
ADD_TRANSLATOR (Instrument_name_engraver,
-
/* doc */
- "Creates a system start text for instrument or vocal names.",
+ "Create a system start text for instrument or vocal names.",
/* create */
"InstrumentName ",
"shortInstrumentName "
"instrumentName "
"shortVocalName "
- "vocalName "
- ,
+ "vocalName ",
- /* write */ "");
+ /* write */
+ ""
+ );
}
ADD_TRANSLATOR (Instrument_switch_engraver,
- "Create a cue text for taking instrument.",
+ /* doc */
+ "Create a cue text for taking instrument.",
- "InstrumentSwitch ",
+ /* create */
+ "InstrumentSwitch ",
- "instrumentCueName",
+ /* read */
+ "instrumentCueName ",
- "");
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Item,
-
- "Grobs can be distinguished in their role in the horizontal spacing.\n"
- "Many grobs define constraints on the spacing by their sizes. For\n"
- "example, note heads, clefs, stems, and all other symbols with a fixed\n"
- "shape. These grobs form a subtype called @code{Item}.\n"
- "\n"
+ "Grobs can be distinguished in their role in the horizontal"
+ " spacing. Many grobs define constraints on the spacing by"
+ " their sizes, for example, note heads, clefs, stems, and all"
+ " other symbols with a fixed shape. These grobs form a"
+ " subtype called @code{Item}.\n"
"\n"
- "Some items need special treatment for line breaking. For example, a\n"
- "clef is normally only printed at the start of a line (i.e. after a\n"
- "line break). To model this, `breakable' items (clef, key signature,\n"
- "bar lines, etc.) are copied twice. Then we have three versions of each\n"
- "breakable item: one version if there is no line break, one version\n"
- "that is printed before the line break (at the end of a system), one\n"
- "version that is printed after the line break.\n"
+ "Some items need special treatment for line breaking. For"
+ " example, a clef is normally only printed at the start of a"
+ " line (i.e., after a line break). To model this,"
+ " @q{breakable} items (clef, key signature, bar lines, etc.)"
+ " are copied twice. Then we have three versions of each"
+ " breakable item: one version if there is no line break, one"
+ " version that is printed before the line break (at the end of"
+ " a system), and one version that is printed after the line"
+ " break.\n"
"\n"
- "Whether these versions are visible and take up space, is determined by\n"
- "the outcome of the @code{break-visibility}. This grob property is a\n"
- "function taking a direction (-1, 0 or 1) as argument. It returns a\n"
- "cons of booleans, signifying whether this grob should be transparent\n"
- "and have no extent.\n"
+ "Whether these versions are visible and take up space is"
+ " determined by the outcome of the @code{break-visibility}"
+ " grob property, which is a function taking a direction"
+ " (@code{-1}, @code{0} or@tie{}@code{1}) as an argument. It"
+ " returns a cons of booleans, signifying whether this grob"
+ " should be transparent and have no extent.\n"
"\n"
- "The following variables for break-visibility are predefined:\n"
+ "The following variables for @code{break-visibility} are"
+ " predefined:\n"
"@example\n"
" grob will show: before no after\n"
" break break break\n"
" begin-of-line-invisible yes yes no\n"
" end-of-line-invisible no yes yes\n"
" center-invisible yes no yes\n"
- "@end example\n",
+ "@end example",
/* properties */
"break-visibility "
"extra-spacing-width "
"infinite-spacing-height "
- "non-musical")
+ "non-musical "
+ );
ADD_ACKNOWLEDGER (Key_engraver, bar_line);
ADD_TRANSLATOR (Key_engraver,
- /* doc */ "",
- /* create */ "KeySignature",
+ /* doc */
+ "Engrave a key signature.",
+
+ /* create */
+ "KeySignature ",
/* read */
"createKeyOnClefChange "
"keyAlterationOrder "
"keySignature "
"lastKeySignature "
- "printKeyCancellation "
- ,
+ "printKeyCancellation ",
/* write */
"keySignature "
"lastKeySignature "
- "tonic ")
+ "tonic "
+ );
}
ADD_TRANSLATOR (Key_performer,
+ /* doc */
"",
+
+ /* create */
"",
+
+ /* read */
"",
- "");
+
+ /* write */
+ ""
+ );
ADD_INTERFACE (Key_signature_interface,
"A group of accidentals, to be printed as signature sign.",
+ /* properties */
"alteration-alist "
"c0-position "
"glyph-name-alist "
ADD_ACKNOWLEDGER (Laissez_vibrer_engraver, note_head);
ADD_TRANSLATOR (Laissez_vibrer_engraver,
- /* doc */ "Create Laissez vibrer items.",
+ /* doc */
+ "Create laissez vibrer items.",
/* create */
"LaissezVibrerTie "
"LaissezVibrerTieColumn ",
- /* read */ "",
- /* write */ "");
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Ledger_line_engraver, ledgered);
ADD_ACKNOWLEDGER (Ledger_line_engraver, staff_symbol);
ADD_TRANSLATOR (Ledger_line_engraver,
- "Creates the spanner to draw ledger lines, and notices objects that need ledger lines",
- /* create */ "LedgerLineSpanner",
- /* read */ "",
- /* write */ "")
+ /* doc */
+ "Create the spanner to draw ledger lines, and notices"
+ " objects that need ledger lines.",
+
+ /* create */
+ "LedgerLineSpanner ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Ledger_line_spanner,
-
- "This spanner draws the ledger lines of a staff.\n"
- "This is a separate grob because it has to process\n"
- "all potential collisions between all note heads.",
+ "This spanner draws the ledger lines of a staff. This is a"
+ " separate grob because it has to process all potential"
+ " collisions between all note heads.",
/* properties */
"gap "
};
ADD_INTERFACE (Ledgered_interface,
+ "Objects that need ledger lines, typically note heads. See"
+ " also @ref{ledger-line-spanner-interface}.",
- "Objects that need ledger lines, typically "
- "note heads. See also @ref{ledger-line-spanner-interface}.",
-
- "no-ledgers");
+ /* properties */
+ "no-ledgers "
+ );
ADD_ACKNOWLEDGER (Ligature_bracket_engraver, note_column);
ADD_TRANSLATOR (Ligature_bracket_engraver,
- /* doc */ "Handles Ligature_events by engraving Ligature brackets.",
- /* create */ "LigatureBracket",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Handle @code{Ligature_events} by engraving @code{Ligature}"
+ " brackets.",
+
+ /* create */
+ "LigatureBracket ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Line_interface,
- "Generic line objects. Any object using lines supports this. "
- "The property @code{style} can be @code{line}, "
- "@code{dashed-line}, @code{trill}, \n"
- "@code{dotted-line} or @code{zigzag}.\n"
+ "Generic line objects. Any object using lines supports this."
+ " The property @code{style} can be @code{line},"
+ " @code{dashed-line}, @code{trill}, @code{dotted-line} or"
+ " @code{zigzag}.\n"
"\n"
- "For dashed-line, the length of the dashes is tuned with "
- "@code{dash-fraction}. If the latter is set to 0, a dotted line is "
- "produced. If @code{dash-period} is negative, the line is made "
- "transparent.",
+ "For @code{dashed-line}, the length of the dashes is tuned"
+ " with @code{dash-fraction}. If the latter is set to@tie{}0, a"
+ " dotted line is produced. If @code{dash-period} is negative,"
+ " the line is made transparent.",
/* properties */
"dash-period "
}
ADD_INTERFACE (Line_spanner,
- "Generic line drawn between two objects, e.g. for use with glissandi.\n"
- "The property @code{style} can be @code{line}, "
- "@code{dashed-line}, @code{trill}, \n"
- "@code{dotted-line} or @code{zigzag}.\n"
- "\n",
-
- "bound-details "
+ "Generic line drawn between two objects, e.g., for use with"
+ " glissandi.\n"
+ "\n"
+ "The property @code{style} can be @code{line},"
+ " @code{dashed-line}, @code{trill}, @code{dotted-line} or"
+ " @code{zigzag}.",
+
+ /* properties */
+ "bound-details "
"extra-dy "
"gap "
"left-bound-info "
"note-columns "
- "right-bound-info "
+ "right-bound-info "
"thickness "
+ "to-barline "
);
}
ADD_TRANSLATOR (Lyric_engraver,
- /* doc */ "",
- /* create */ "LyricText",
- /* read */ "lyricMelismaAlignment",
- /* write */ "");
+ /* doc */
+ "Engrave text for lyrics.",
+
+ /* create */
+ "LyricText ",
+ /* read */
+ "lyricMelismaAlignment ",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Lyric_extender,
- "The extender is a simple line at the baseline of the lyric "
- "that helps show the length of a melissima (tied/slurred note).",
+ "The extender is a simple line at the baseline of the lyric"
+ " that helps show the length of a melisma (a tied or slurred"
+ " note).",
+ /* properties */
"heads "
"left-padding "
"next "
}
ADD_INTERFACE (Lyric_hyphen,
+ "A centered hyphen is simply a line between lyrics used to"
+ " divide syllables.",
- "A centered hyphen is a simple line between "
- "lyrics used to divide syllables",
-
- /* props */
+ /* properties */
"dash-period "
"height "
"length "
events_.push_back (event);
}
-ADD_TRANSLATOR (Lyric_performer, "", "",
- "", "");
+ADD_TRANSLATOR (Lyric_performer,
+ /* doc */
+ "",
+
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Mark_engraver, break_alignment);
ADD_TRANSLATOR (Mark_engraver,
- /* doc */ "This engraver will create RehearsalMark objects. "
- "It puts them on top of all staves (which is taken from "
- "the property @code{stavesFound}). If moving this engraver "
- "to a different context, "
- "@ref{Staff_collecting_engraver} must move along, otherwise all marks"
- "end up on the same Y-location",
+ /* doc */
+ "Create @code{RehearsalMark} objects. It puts them on top of"
+ " all staves (which is taken from the property"
+ " @code{stavesFound}). If moving this engraver to a different"
+ " context, @ref{Staff_collecting_engraver} must move along,"
+ " otherwise all marks end up on the same Y@tie{}location.",
- /* create */ "RehearsalMark",
+ /* create */
+ "RehearsalMark ",
+
/* read */
"markFormatter "
"rehearsalMark "
"stavesFound ",
- /* write */ "");
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Measure_grouping_engraver, note_column);
ADD_TRANSLATOR (Measure_grouping_engraver,
/* doc */
- "Creates MeasureGrouping to indicate beat subdivision.",
+ "Create @code{MeasureGrouping} to indicate beat subdivision.",
+
/* create */
- "MeasureGrouping",
+ "MeasureGrouping ",
+
/* read */
"beatLength "
"currentMusicalColumn "
"measurePosition "
- "beatGrouping "
- ,
+ "beatGrouping ",
+
/* write */
- "");
+ ""
+ );
}
ADD_INTERFACE (Measure_grouping,
- "This object indicates groups of beats. "
- "Valid choices for @code{style} are @code{bracket} and @code{triangle}.",
- "thickness style height");
+ "This object indicates groups of beats. Valid choices for"
+ " @code{style} are @code{bracket} and @code{triangle}.",
+
+ /* properties */
+ "thickness "
+ "style "
+ "height "
+ );
ADD_ACKNOWLEDGER (Melody_engraver, slur);
ADD_TRANSLATOR (Melody_engraver,
- "Create information for context dependent typesetting decisions. ",
- "MelodyItem",
+ /* doc */
+ "Create information for context dependent typesetting"
+ " decisions.",
+
+ /* create */
+ "MelodyItem ",
+
+ /* read */
"",
- "");
+
+ /* write */
+ ""
+ );
ADD_INTERFACE (Melody_spanner,
"Context dependent typesetting decisions.",
+ /* properties */
"stems "
- "neutral-direction ");
+ "neutral-direction "
+ );
// instead of number 6
// the legth of the longa stem should be queried something like
// Font_interface::get_default_font (ligature)->find_by_name
- // ("noteheads.s-2mensural").extent (Y_AXIS).length ()
+ // ("noteheads.sM2mensural").extent (Y_AXIS).length ()
}
prev_primitive->set_property ("join-right-amount",
scm_from_int (delta_pitch));
Real head_width
= Font_interface::get_default_font (ligature)->
- find_by_name ("noteheads.s-1mensural").extent (X_AXIS).length ();
+ find_by_name ("noteheads.sM1mensural").extent (X_AXIS).length ();
Real flexa_width
= robust_scm2double (ligature->get_property ("flexa-width"), 2);
Real maxima_head_width
= Font_interface::get_default_font (ligature)->
- find_by_name ("noteheads.s-1neomensural").extent (X_AXIS).length ();
+ find_by_name ("noteheads.sM1neomensural").extent (X_AXIS).length ();
flexa_width *= Staff_symbol_referencer::staff_space (ligature);
ADD_ACKNOWLEDGER (Mensural_ligature_engraver, note_head);
ADD_TRANSLATOR (Mensural_ligature_engraver,
- /* doc */ "Handles Mensural_ligature_events by glueing special ligature heads together.",
- /* create */ "MensuralLigature",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Handle @code{Mensural_ligature_events} by glueing special"
+ " ligature heads together.",
+
+ /* create */
+ "MensuralLigature ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
return Lookup::blank (Box (Interval (0, 0), Interval (0, 0)));
case MLP_LONGA: // mensural brevis head with right cauda
out = Font_interface::get_default_font (me)->find_by_name
- ("noteheads.s-2mensural");
+ ("noteheads.sM2mensural");
break;
case MLP_BREVIS: // mensural brevis head
out = Font_interface::get_default_font (me)->find_by_name
- ("noteheads.s-1mensural");
+ ("noteheads.sM1mensural");
break;
case MLP_MAXIMA: // should be mensural maxima head without stem
out = Font_interface::get_default_font (me)->find_by_name
- ("noteheads.s-1neomensural");
+ ("noteheads.sM1neomensural");
break;
case MLP_FLEXA:
out = brew_flexa (me, delta_pitch, false, width, thickness);
}
ADD_INTERFACE (Mensural_ligature,
- "A mensural ligature",
+ "A mensural ligature.",
+ /* properties */
"delta-position "
"flexa-width "
"head-width "
"join-right-amount "
"primitive "
- "thickness"
+ "thickness "
);
}
ADD_TRANSLATOR (Metronome_mark_engraver,
- /* doc */ "Engrave metro nome marking. This delegates the formatting work "
- "to the function in the metronomeMarkFormatter property. "
- "The mark is put over all staves. "
- "The staves are taken from the @code{stavesFound} property, "
- "which is maintained by @code{@ref{Staff_collecting_engraver}}. ",
- /* create */ "MetronomeMark",
+ /* doc */
+ "Engrave metronome marking. This delegates the formatting"
+ " work to the function in the @code{metronomeMarkFormatter}"
+ " property. The mark is put over all staves. The staves are"
+ " taken from the @code{stavesFound} property, which is"
+ " maintained by @ref{Staff_collecting_engraver}.",
+
+ /* create */
+ "MetronomeMark ",
/* read */
"stavesFound "
"metronomeMarkFormatter "
"tempoUnitDuration "
- "tempoUnitCount "
- ,
+ "tempoUnitCount ",
- /* write */ "");
+ /* write */
+ ""
+ );
ADD_TRANSLATOR (Multi_measure_rest_engraver,
/* doc */
- "Engraves multi-measure rests that are produced with @code{R}. Reads "
- "@code{measurePosition} and @code{internalBarNumber} to determine what number to print "
- "over the @ref{MultiMeasureRest}. Reads @code{measureLength} to determine if it "
- "should use a whole rest or a breve rest to represent 1 measure ",
+ "Engrave multi-measure rests that are produced with"
+ " @samp{R}. It reads @code{measurePosition} and"
+ " @code{internalBarNumber} to determine what number to print"
+ " over the @ref{MultiMeasureRest}. Reads @code{measureLength}"
+ " to determine whether it should use a whole rest or a breve"
+ " rest to represent one measure.",
/* create */
"MultiMeasureRest "
"measurePosition "
"measureLength ",
- /* write */ "");
+ /* write */
+ ""
+ );
"thick-thickness "
"use-breve-rest "
"bound-padding "
- "minimum-length");
+ "minimum-length "
+ );
ADD_ACKNOWLEDGER (New_fingering_engraver, stem);
ADD_TRANSLATOR (New_fingering_engraver,
- /* doc */ "Create fingering-scripts for notes in a new chord. "
- "This engraver is ill-named, since it "
- "also takes care of articulations and harmonic note heads",
+ /* doc */
+ "Create fingering scripts for notes in a new chord. This"
+ " engraver is ill-named, since it also takes care of"
+ " articulations and harmonic note heads.",
+
/* create */
"Fingering "
"StringNumber "
"StrokeFinger "
- "Script "
- ,
+ "Script ",
+
/* read */
-
"fingeringOrientations "
"strokeFingerOrientations "
- "stringNumberOrientations "
- ,
+ "stringNumberOrientations ",
- /* write */ "");
+ /* write */
+ ""
+ );
if (!extents[UP].size () || ! extents[DOWN].size ())
return;
- Grob *cu = clash_groups[UP][0];
- Grob *cd = clash_groups[DOWN][0];
+ Grob *clash_up = clash_groups[UP][0];
+ Grob *clash_down = clash_groups[DOWN][0];
/* Every note column should have a stem, but avoid a crash. */
- if (!Note_column::get_stem (cu) || !Note_column::get_stem (cd))
+ if (!Note_column::get_stem (clash_up) || !Note_column::get_stem (clash_down))
return;
- Drul_array<Grob*> stems (Note_column::get_stem (cd),
- Note_column::get_stem (cu));
+ Drul_array<Grob*> stems (Note_column::get_stem (clash_down),
+ Note_column::get_stem (clash_up));
- Grob *nu = Note_column::first_head (cu);
- Grob *nd = Note_column::first_head (cd);
+ Grob *head_up = Note_column::first_head (clash_up);
+ Grob *head_down = Note_column::first_head (clash_down);
- vector<int> ups = Stem::note_head_positions (Note_column::get_stem (cu));
- vector<int> dps = Stem::note_head_positions (Note_column::get_stem (cd));
+ vector<int> ups = Stem::note_head_positions (Note_column::get_stem (clash_up));
+ vector<int> dps = Stem::note_head_positions (Note_column::get_stem (clash_down));
/* Too far apart to collide. */
if (ups[0] > dps.back () + 1)
bool merge_possible = (ups[0] >= dps[0]) && (ups.back () >= dps.back ());
/* Do not merge notes typeset in different style. */
- if (!ly_is_equal (nu->get_property ("style"),
- nd->get_property ("style")))
+ if (!ly_is_equal (head_up->get_property ("style"),
+ head_down->get_property ("style")))
merge_possible = false;
- int upball_type = Rhythmic_head::duration_log (nu);
- int dnball_type = Rhythmic_head::duration_log (nd);
+ int up_ball_type = Rhythmic_head::duration_log (head_up);
+ int down_ball_type = Rhythmic_head::duration_log (head_down);
/* Do not merge whole notes (or longer, like breve, longa, maxima). */
- if (merge_possible && (upball_type <= 0 || dnball_type <= 0))
+ if (merge_possible && (up_ball_type <= 0 || down_ball_type <= 0))
merge_possible = false;
if (merge_possible
- && Rhythmic_head::dot_count (nu) != Rhythmic_head::dot_count (nd)
+ && Rhythmic_head::dot_count (head_up) != Rhythmic_head::dot_count (head_down)
&& !to_boolean (me->get_property ("merge-differently-dotted")))
merge_possible = false;
/* Can only merge different heads if merge-differently-headed is
set. */
if (merge_possible
- && upball_type != dnball_type
+ && up_ball_type != down_ball_type
&& !to_boolean (me->get_property ("merge-differently-headed")))
merge_possible = false;
if (merge_possible
- && nu->get_property ("style") == ly_symbol2scm ("fa")
- && nd->get_property ("style") == ly_symbol2scm ("fa"))
+ && head_up->get_property ("style") == ly_symbol2scm ("fa")
+ && head_down->get_property ("style") == ly_symbol2scm ("fa"))
{
- Interval uphead_size = nu->extent (nu, Y_AXIS);
+ Interval uphead_size = head_up->extent (head_up, Y_AXIS);
Offset att = Offset (0.0, -1.0);
- nu->set_property ("stem-attachment", ly_offset2scm (att));
- nu->set_property ("transparent", SCM_BOOL_T);
+ head_up->set_property ("stem-attachment", ly_offset2scm (att));
+ head_up->set_property ("transparent", SCM_BOOL_T);
}
/* Should never merge quarter and half notes, as this would make
make sure the dotted heads go to the right. */
bool stem_to_stem = false;
if (full_collide)
- if (Rhythmic_head::dot_count (nu) > Rhythmic_head::dot_count (nd))
- shift_amount = 1;
- else if (Rhythmic_head::dot_count (nu) < Rhythmic_head::dot_count (nd))
- stem_to_stem = true;
-
+ {
+ if (Rhythmic_head::dot_count (head_up) > Rhythmic_head::dot_count (head_down))
+ shift_amount = 1;
+ else if (Rhythmic_head::dot_count (head_up) < Rhythmic_head::dot_count (head_down))
+ stem_to_stem = true;
+ }
+
if (merge_possible)
{
shift_amount = 0;
or head with smallest amount of dots. Note: when merging
different heads, dots on the smaller one disappear. */
Grob *wipe_ball = 0;
- Grob *dot_wipe_head = nu;
+ Grob *dot_wipe_head = head_up;
- if (upball_type == dnball_type)
+ if (up_ball_type == down_ball_type)
{
- if (Rhythmic_head::dot_count (nd) < Rhythmic_head::dot_count (nu))
+ if (Rhythmic_head::dot_count (head_down) < Rhythmic_head::dot_count (head_up))
{
- wipe_ball = nd;
- dot_wipe_head = nd;
+ wipe_ball = head_down;
+ dot_wipe_head = head_down;
}
- else if (Rhythmic_head::dot_count (nd) > Rhythmic_head::dot_count (nu))
+ else if (Rhythmic_head::dot_count (head_down) > Rhythmic_head::dot_count (head_up))
{
- dot_wipe_head = nu;
- wipe_ball = nu;
+ dot_wipe_head = head_up;
+ wipe_ball = head_up;
}
else
- dot_wipe_head = nu;
+ dot_wipe_head = head_up;
}
- else if (dnball_type > upball_type)
+ else if (down_ball_type > up_ball_type)
{
- wipe_ball = nd;
- dot_wipe_head = nd;
+ wipe_ball = head_down;
+ dot_wipe_head = head_down;
}
- else if (dnball_type < upball_type)
+ else if (down_ball_type < up_ball_type)
{
- wipe_ball = nu;
- dot_wipe_head = nu;
+ wipe_ball = head_up;
+ dot_wipe_head = head_up;
}
if (dot_wipe_head)
shift_amount *= 0.5;
/* we're meshing. */
- else if (Rhythmic_head::dot_count (nu) || Rhythmic_head::dot_count (nd))
+ else if (Rhythmic_head::dot_count (head_up) || Rhythmic_head::dot_count (head_down))
shift_amount *= 0.1;
else
shift_amount *= 0.17;
*/
if (full_collide
- && dnball_type * upball_type == 0)
+ && down_ball_type * up_ball_type == 0)
{
- if (upball_type == 0 && dnball_type == 1)
+ if (up_ball_type == 0 && down_ball_type == 1)
shift_amount *= 1.25;
- else if (upball_type == 0 && dnball_type == 2)
+ else if (up_ball_type == 0 && down_ball_type == 2)
shift_amount *= 1.35;
- else if (dnball_type == 0 && upball_type == 1)
+ else if (down_ball_type == 0 && up_ball_type == 1)
shift_amount *= 0.7;
- else if (dnball_type == 0 && upball_type == 2)
+ else if (down_ball_type == 0 && up_ball_type == 2)
shift_amount *= 0.75;
}
* hasn't got any dots.
*/
if (close_half_collide
- && Rhythmic_head::dot_count (nu)
- && !Rhythmic_head::dot_count (nd))
+ && Rhythmic_head::dot_count (head_up)
+ && !Rhythmic_head::dot_count (head_down))
{
Grob *staff = Staff_symbol_referencer::get_staff_symbol (me);
if (!Staff_symbol_referencer::on_line (staff, ups[0]))
- {
- Grob *d = unsmob_grob (nu->get_object ("dot"));
- Grob *parent = d->get_parent (X_AXIS);
- if (Dot_column::has_interface (parent))
- Side_position_interface::add_support (parent, nd);
- }
+ /*
+ TODO: consider junking the else body.
+ */
+ if (to_boolean (me->get_property ("prefer-dotted-right")))
+ {
+ shift_amount = 0.5;
+ }
+ else
+ {
+ Grob *d = unsmob_grob (head_up->get_object ("dot"));
+ Grob *parent = d->get_parent (X_AXIS);
+ if (Dot_column::has_interface (parent))
+ Side_position_interface::add_support (parent, head_down);
+ }
}
/* For full or close half collisions, the right hand head may
obscure dots. Move dots to the right. */
if (abs (shift_amount) > 1e-6
- && Rhythmic_head::dot_count (nd) > Rhythmic_head::dot_count (nu)
+ && Rhythmic_head::dot_count (head_down) > Rhythmic_head::dot_count (head_up)
&& (full_collide || close_half_collide))
{
- Grob *d = unsmob_grob (nd->get_object ("dot"));
+ Grob *d = unsmob_grob (head_down->get_object ("dot"));
Grob *parent = d->get_parent (X_AXIS);
/*
*/
if (Dot_column::has_interface (parent))
{
- Grob *stem = unsmob_grob (nu->get_object ("stem"));
+ Grob *stem = unsmob_grob (head_up->get_object ("stem"));
extract_grob_set (stem, "note-heads", heads);
for (vsize i = 0; i < heads.size (); i++)
Side_position_interface::add_support (parent, heads[i]);
Grob *me = unsmob_grob (smob);
me->set_property ("positioning-done", SCM_BOOL_T);
- Drul_array<vector<Grob*> > cg = get_clash_groups (me);
+ Drul_array<vector<Grob*> > clash_groups = get_clash_groups (me);
Direction d = UP;
do
{
- for (vsize i = cg[d].size (); i--; )
+ for (vsize i = clash_groups[d].size (); i--; )
{
/*
Trigger positioning
*/
- cg[d][i]->extent (me, X_AXIS);
+ clash_groups[d][i]->extent (me, X_AXIS);
}
}
while (flip (&d) != UP);
- SCM autos (automatic_shift (me, cg));
+ SCM autos (automatic_shift (me, clash_groups));
SCM hand (forced_shift (me));
Real wid = 0.0;
do
{
- if (cg[d].size ())
+ if (clash_groups[d].size ())
{
- Grob *h = cg[d][0];
+ Grob *h = clash_groups[d][0];
Grob *fh = Note_column::first_head (h);
if (fh)
wid = fh->extent (h, X_AXIS).length ();
}
ADD_INTERFACE (Note_collision_interface,
- "An object that handles collisions between notes with different stem "
- "directions and horizontal shifts. Most of the interesting properties "
- "are to be set in @ref{note-column-interface}: these are "
- "@code{force-hshift} and @code{horizontal-shift}.",
+ "An object that handles collisions between notes with"
+ " different stem directions and horizontal shifts. Most of"
+ " the interesting properties are to be set in"
+ " @ref{note-column-interface}: these are @code{force-hshift}"
+ " and @code{horizontal-shift}.",
/* properties */
"merge-differently-dotted "
"merge-differently-headed "
- "positioning-done ");
+ "positioning-done "
+ "prefer-dotted-right "
+ );
}
ADD_INTERFACE (Note_column,
- "Stem and noteheads combined",
+ "Stem and noteheads combined.",
/* properties */
"arpeggio "
ADD_ACKNOWLEDGER (Note_head_line_engraver, rhythmic_head);
ADD_TRANSLATOR (Note_head_line_engraver,
- /* doc */ "Engrave a line between two note heads, for example a glissando. If "
- " followVoice is set, staff switches also generate a line.",
- /* create */ "Glissando VoiceFollower",
- /* read */ "followVoice",
- /* write */ "");
+ /* doc */
+ "Engrave a line between two note heads, for example a"
+ " glissando. If @code{followVoice} is set, staff switches"
+ " also generate a line.",
+
+ /* create */
+ "Glissando "
+ "VoiceFollower ",
+
+ /* read */
+ "followVoice ",
+
+ /* write */
+ ""
+ );
ADD_INTERFACE (Note_head,
- "Note head",
+ "Note head.",
/* properties */
"note-names "
}
ADD_TRANSLATOR (Note_heads_engraver,
- /* doc */ "Generate noteheads.",
+ /* doc */
+ "Generate note heads.",
+
/* create */
"NoteHead ",
- /* read */ "middleCPosition "
+
+ /* read */
+ "middleCPosition "
"staffLineLayoutFunction ",
- /* write */ "");
+
+ /* write */
+ ""
+ );
}
ADD_TRANSLATOR (Note_name_engraver,
- /* doc */ "Print pitches as words.",
- /* create */ "NoteName",
- /* read */ "printOctaveNames",
- /* write */ "");
+ /* doc */
+ "Print pitches as words.",
+
+ /* create */
+ "NoteName ",
+
+ /* read */
+ "printOctaveNames ",
+
+ /* write */
+ ""
+ );
note_evs_.push_back (ev);
}
-ADD_TRANSLATOR (Note_performer, "", "",
- "", "");
+ADD_TRANSLATOR (Note_performer,
+ /* doc */
+ "",
+
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
Note_performer::Note_performer ()
{
ADD_ACKNOWLEDGER (Note_spacing_engraver, rhythmic_grob);
ADD_TRANSLATOR (Note_spacing_engraver,
- /* doc */ "Generates NoteSpacing, an object linking horizontal lines for use in spacing.",
- /* create */ "NoteSpacing",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Generate @code{NoteSpacing}, an object linking horizontal"
+ " lines for use in spacing.",
+
+ /* create */
+ "NoteSpacing ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
ADD_INTERFACE (Note_spacing,
"This object calculates spacing wishes for individual voices.",
-
+ /* properties */
"knee-spacing-correction "
"left-items "
"right-items "
"same-direction-correction "
"stem-spacing-correction "
"space-to-barline "
-
);
}
ADD_INTERFACE (Ottava_bracket,
- "An ottava bracket",
+ "An ottava bracket.",
- /*
- properties
- */
+ /* properties */
"edge-height "
"bracket-flare "
"shorten-pair "
- "minimum-length");
+ "minimum-length "
+ );
ADD_ACKNOWLEDGER (Ottava_spanner_engraver, note_column);
ADD_TRANSLATOR (Ottava_spanner_engraver,
- /* doc */ "Create a text spanner when the ottavation property changes..",
- /* create */ "OttavaBracket",
- /* read */ "ottavation "
+ /* doc */
+ "Create a text spanner when the ottavation property changes.",
+
+ /* create */
+ "OttavaBracket ",
+
+ /* read */
+ "ottavation "
"originalMiddleCPosition "
- "currentMusicalColumn "
-
- ,
+ "currentMusicalColumn ",
- /* write */ "");
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Output_property_engraver, grob);
ADD_TRANSLATOR (Output_property_engraver,
-
/* doc */
- "Apply a procedure to any grob acknowledged. ",
+ "Apply a procedure to any grob acknowledged.",
/* create */
"",
"",
/* write */
- "");
+ ""
+ );
LY_DEFINE (ly_minimal_breaking, "ly:minimal-breaking",
1, 0, 0, (SCM pb),
"Break (pages and lines) the @code{Paper_book} object @var{pb}"
- "without looking for optimal spacing: stack as many lines on"
- "a page before moving to the next one.")
+ " without looking for optimal spacing: stack as many lines on"
+ " a page before moving to the next one.")
{
Minimal_page_breaking b (unsmob_paper_book (pb));
return b.solve ();
ADD_ACKNOWLEDGER (Page_turn_engraver, note_head);
ADD_TRANSLATOR (Page_turn_engraver,
- /* doc */ "Decide where page turns are allowed to go",
- /* create */ "",
+ /* doc */
+ "Decide where page turns are allowed to go.",
+
+ /* create */
+ "",
+
/* read */
"minimumPageTurnLength "
"minimumRepeatLengthForPageTurn ",
- /* write */ ""
+
+ /* write */
+ ""
);
ADD_ACKNOWLEDGER (Paper_column_engraver, staff_spacing);
ADD_TRANSLATOR (Paper_column_engraver,
- /* doc */ "Takes care of generating columns."
- "\n\n "
- "This engraver decides whether a column is breakable. The default is "
- "that a column is always breakable. However, every Bar_engraver "
- "that does not have a barline at a certain point will set forbidBreaks "
- "in the score context to stop linebreaks. In practice, this "
- "means that you can make a breakpoint by creating a barline (assuming "
- "that there are no beams or notes that prevent a breakpoint.) ",
+ /* doc */
+ "Take care of generating columns.\n"
+ "\n"
+ "This engraver decides whether a column is breakable. The"
+ " default is that a column is always breakable. However,"
+ " every @code{Bar_engraver} that does not have a barline at a"
+ " certain point will set @code{forbidBreaks} in the score"
+ " context to stop line breaks. In practice, this means that"
+ " you can make a break point by creating a bar line (assuming"
+ " that there are no beams or notes that prevent a break"
+ " point).",
/* create */
"PaperColumn "
- "NonMusicalPaperColumn",
+ "NonMusicalPaperColumn ",
+
/* read */
- "forbidBreak "
- ,
+ "forbidBreak ",
+
/* write */
"forbidBreak "
"currentCommandColumn "
ADD_INTERFACE (Paper_column,
- "@code{Paper_column} objects form the top-most X-parents for items."
- " The are two types of columns: musical columns, where are attached to, and "
- " non-musical columns, where bar-lines, clefs etc. are attached to. "
- " The spacing engine determines the X-positions of these objects."
-
- "\n\n"
- "They are\n"
- " numbered, the first (leftmost) is column 0. Numbering happens before\n"
- " line-breaking, and columns are not renumbered after line breaking.\n"
- " Since many columns go unused, you should only use the rank field to\n"
- " get ordering information. Two adjacent columns may have\n"
- " non-adjacent numbers.\n",
-
+ "@code{Paper_column} objects form the top-most X@tie{}parents"
+ " for items. There are two types of columns: musical columns,"
+ " where are attached to, and non-musical columns, where"
+ " bar-lines, clefs, etc., are attached to. The spacing engine"
+ " determines the X@tie{}positions of these objects.\n"
+ "\n"
+ "They are numbered, the first (leftmost) is column@tie{}0."
+ " Numbering happens before line breaking, and columns are not"
+ " renumbered after line breaking. Since many columns go"
+ " unused, you should only use the rank field to get ordering"
+ " information. Two adjacent columns may have non-adjacent"
+ " numbers.",
/* properties */
"between-cols "
"shortest-starter-duration "
"spacing "
"used "
- "when ");
+ "when "
+ );
ADD_ACKNOWLEDGER (Parenthesis_engraver, grob);
ADD_TRANSLATOR (Parenthesis_engraver,
- /* doc */ "Parenthesize objects whose music cause has the @code{parenthesize} "
- "property.",
+ /* doc */
+ "Parenthesize objects whose music cause has the"
+ " @code{parenthesize} property.",
/* create */
"ParenthesesItem ",
- /* read */ "",
- /* write */ "");
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Part_combine_engraver, note_head);
ADD_ACKNOWLEDGER (Part_combine_engraver, stem);
ADD_TRANSLATOR (Part_combine_engraver,
- /* doc */ "Part combine engraver for orchestral scores: "
- "Print markings a2, Solo, Solo II, and unisono ",
- /* create */ "CombineTextScript",
+ /* doc */
+ "Part combine engraver for orchestral scores: Print markings"
+ " @q{a2}, @q{Solo}, @q{Solo II}, and @q{unisono}.",
+
+ /* create */
+ "CombineTextScript ",
+
/* read */
"printPartCombineTexts "
"soloText "
"soloIIText "
- "aDueText",
- /* write */ "");
+ "aDueText ",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Percent_repeat_item_interface,
- "Repeats that look like percent signs",
+ "Repeats that look like percent signs.",
+ /* properties */
"slope "
- "thickness ");
+ "thickness "
+ );
#include "warn.hh"
ADD_TRANSLATOR_GROUP (Performer_group,
- /* doc */ "",
- /* create */ "",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "",
+
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
void
Performer_group::announce_element (Audio_element_info info)
ADD_ACKNOWLEDGER (Phrasing_slur_engraver, tie);
ADD_TRANSLATOR (Phrasing_slur_engraver,
- /* doc */ "Print phrasing slurs. Similar to @ref{Slur_engraver}",
- /* create */ "PhrasingSlur",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Print phrasing slurs. Similar to @ref{Slur_engraver}.",
+
+ /* create */
+ "PhrasingSlur ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
ADD_TRANSLATOR (Piano_pedal_align_engraver,
-
/* doc */
"Align piano pedal symbols and brackets.",
/* read */
"currentCommandColumn ",
- /* write */ "");
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Piano_pedal_bracket,
+ "The bracket of the piano pedal. It can be tuned through"
+ " the regular bracket properties.",
- "The bracket of the piano pedal. "
- "It can be tuned through the regular "
- "bracket properties.",
-
- /* props */
+ /* properties */
"bound-padding "
"edge-height "
"shorten-pair "
"bracket-flare "
- "pedal-text ");
+ "pedal-text "
+ );
ADD_ACKNOWLEDGER (Piano_pedal_engraver, note_column);
ADD_TRANSLATOR (Piano_pedal_engraver,
-
/* doc */
"Engrave piano pedal symbols and brackets.",
"pedalSustainStrings "
"pedalSustainStyle "
"pedalUnaCordaStrings "
- "pedalUnaCordaStyle",
+ "pedalUnaCordaStyle ",
- /* write */ "");
+ /* write */
+ ""
+ );
info_alist_[UNA_CORDA].event_drul_[d] = r;
}
-ADD_TRANSLATOR (Piano_pedal_performer, "", "",
- "", "");
+ADD_TRANSLATOR (Piano_pedal_performer,
+ /* doc */
+ "",
+
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Pitch_squash_engraver, note_head);
ADD_TRANSLATOR (Pitch_squash_engraver,
/* doc */
- "Set the vertical position of noteheads to "
- "@code{squashedPosition}, if that "
- "property is set. "
- "This can be used to make a single line staff "
- "demonstrating the rhythm of a melody.",
-
- /* create */ "",
- /* read */ "squashedPosition",
- /* write */ "");
+ "Set the vertical position of note heads to"
+ " @code{squashedPosition}, if that property is set. This can"
+ " be used to make a single-line staff demonstrating the"
+ " rhythm of a melody.",
+
+ /* create */
+ "",
+
+ /* read */
+ "squashedPosition ",
+
+ /* write */
+ ""
+ );
ADD_TRANSLATOR (Pitched_trill_engraver,
/* doc */
- "Print the bracketed notehead after a notehead with trill.",
+ "Print the bracketed note head after a note head with trill.",
/* create */
"TrillPitchHead "
"TrillPitchAccidental "
"TrillPitchGroup ",
- /* read */ "",
+ /* read */
+ "",
- /* write */ "");
+ /* write */
+ ""
+ );
}
ADD_TRANSLATOR (Repeat_acknowledge_engraver,
- /* doc */ "Acknowledge repeated music, and convert the contents of "
- "repeatCommands ainto an appropriate setting for whichBar.",
- /* create */ "",
- /* read */ "repeatCommands whichBar",
- /* write */ "");
+ /* doc */
+ "Acknowledge repeated music, and convert the contents of"
+ " @code{repeatCommands} into an appropriate setting for"
+ " @code{whichBar}.",
+
+ /* create */
+ "",
+
+ /* read */
+ "repeatCommands "
+ "whichBar ",
+
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Repeat_tie_engraver, note_head);
ADD_TRANSLATOR (Repeat_tie_engraver,
- /* doc */ "Create repeat ties.",
+ /* doc */
+ "Create repeat ties.",
/* create */
"RepeatTie "
"RepeatTieColumn ",
- /* read */ "",
- /* write */ "");
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Rest_collision_engraver, note_column);
ADD_TRANSLATOR (Rest_collision_engraver,
- /* doc */ "Handles collisions of rests.",
- /* create */ "RestCollision",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Handle collisions of rests.",
+
+ /* create */
+ "RestCollision ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Rest_collision,
- "Move around ordinary rests (not multi-measure-rests) to avoid "
- "conflicts.",
+ "Move around ordinary rests (not multi-measure-rests) to avoid"
+ " conflicts.",
/* properties */
"minimum-distance "
"positioning-done "
- "elements");
+ "elements "
+ );
}
ADD_TRANSLATOR (Rest_engraver,
- /* doc */ "",
- /* create */ "Rest ",
- /* read */ "middleCPosition",
- /* write */ "");
+ /* doc */
+ "Engrave rests.",
+
+ /* create */
+ "Rest ",
+
+ /* read */
+ "middleCPosition ",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Rest,
- "A rest symbol."
- "The property @code{style} can be @code{default}, "
- "@code{mensural}, @code{neomensural} or @code{classical}.",
+ "A rest symbol. The property @code{style} can be"
+ " @code{default}, @code{mensural}, @code{neomensural} or"
+ " @code{classical}.",
/* properties */
-
"direction "
"minimum-distance "
"style "
ADD_ACKNOWLEDGER (Rhythmic_column_engraver, arpeggio);
ADD_TRANSLATOR (Rhythmic_column_engraver,
- /* doc */ "Generates NoteColumn, an objects that groups stems, noteheads and rests.",
- /* create */ "NoteColumn",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Generate @code{NoteColumn}, an object that groups stems,"
+ " note heads, and rests.",
+
+ /* create */
+ "NoteColumn ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Rhythmic_head,
-
- "Note head or rest",
+ "Note head or rest.",
+ /* properties */
"dot "
"duration-log "
"stem "
);
-
}
ADD_TRANSLATOR_GROUP (Score_engraver,
- /* doc */ "Top level engraver. Takes care of generating columns and the complete system (ie. System) "
- "\n\n "
- "This engraver decides whether a column is breakable. The default is "
- "that a column is always breakable. However, every Bar_engraver "
- "that does not have a barline at a certain point will set "
- "forbidBreaks to stop linebreaks. In practice, this "
- "means that you can make a breakpoint by creating a barline (assuming "
- "that there are no beams or notes that prevent a breakpoint.) ",
+ /* doc */
+ "The top-level engraver. Takes care of generating"
+ " columns and the complete system (i.e.,"
+ " @code{System}).\n"
+ "\n"
+ "This engraver decides whether a column is breakable."
+ " The default is that a column is always breakable."
+ " However, every @code{Bar_engraver} that does not have"
+ " a bar line at a certain point sets @code{forbidBreaks}"
+ " to stop line breaks. In practice, this means that you"
+ " can make a break point by creating a bar line"
+ " (assuming that there are no beams or notes that"
+ " prevent a break point).",
+
/* create */
"System ",
"verticallySpacedContexts ",
/* write */
- "");
+ ""
+ );
#include "audio-item.hh"
ADD_TRANSLATOR_GROUP (Score_performer,
- /* doc */ "",
- /* create */ "",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "",
+
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
Score_performer::Score_performer ()
{
ADD_ACKNOWLEDGER (Script_column_engraver, side_position);
ADD_TRANSLATOR (Script_column_engraver,
- /* doc */ "",
- /* create */ "ScriptColumn",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Find potentially colliding scripts and put them into a"
+ " @code{ScriptColumn} object; that will fix the collisions.",
+
+ /* create */
+ "ScriptColumn ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Script_column,
- "An interface that sorts scripts "
- "according to their @code{script-priority}",
+ "An interface that sorts scripts according to their"
+ " @code{script-priority}.",
- "");
+ /* properties */
+ ""
+ );
ADD_ACKNOWLEDGER (Script_engraver, stem_tremolo);
ADD_TRANSLATOR (Script_engraver,
- /* doc */ "Handles note scripted articulations.",
- /* create */ "Script",
- /* read */ "scriptDefinitions",
- /* write */ "");
+ /* doc */
+ "Handle note scripted articulations.",
+
+ /* create */
+ "Script ",
+
+ /* read */
+ "scriptDefinitions ",
+
+ /* write */
+ ""
+ );
};
ADD_INTERFACE (Text_script,
- "An object that is put above or below a note",
+ "An object that is put above or below a note.",
/* properties */
"add-stem-support "
Hmm. Where should we put add-stem-support ?
*/
ADD_INTERFACE (Script_interface,
- "An object that is put above or below a note",
+ "An object that is put above or below a note.",
+
+ /* properties */
"add-stem-support "
"avoid-slur "
"positioning-done "
ADD_ACKNOWLEDGER (Script_row_engraver, accidental_placement);
ADD_ACKNOWLEDGER (Script_row_engraver, side_position);
ADD_TRANSLATOR (Script_row_engraver,
- /* doc */ "Determine order in horizontal side position elements. ",
- /* create */ "ScriptRow ",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Determine order in horizontal side position elements.",
+
+ /* create */
+ "ScriptRow ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Self_alignment_interface,
- "Position this object on itself and/or on its parent. To this end, the following functions "
- " are provided: \n"
- "@table @code \n"
+ "Position this object on itself and/or on its parent. To this"
+ " end, the following functions are provided:\n"
+ "\n"
+ "@table @code\n"
"@item Self_alignment_interface::[xy]_aligned_on_self\n"
- " Align self on reference point, using @code{self-alignment-X} and "
- "@code{self-alignment-Y}."
+ "Align self on reference point, using"
+ " @code{self-alignment-X} and @code{self-alignment-Y}."
"@item Self_alignment_interface::aligned_on_[xy]_parent\n"
"@item Self_alignment_interface::centered_on_[xy]_parent\n"
- " Shift the object so its own reference point is centered on the "
- " extent of the parent \n"
+ "Shift the object so its own reference point is centered on"
+ " the extent of the parent\n"
"@end table\n",
-
/* properties */
"self-alignment-X "
- "self-alignment-Y ");
+ "self-alignment-Y "
+ );
ADD_INTERFACE (Semi_tie_column,
- "The interface for a column of l.v. ties.",
+ "The interface for a column of l.v. (laissez vibrer) ties.",
/* properties */
"positioning-done "
#include "staff-symbol-referencer.hh"
ADD_INTERFACE (Semi_tie,
-
- "A tie which is only on one side connected to note heads. ",
+ "A tie which is only on one side connected to a note head.",
/* properties */
"control-points "
ADD_ACKNOWLEDGER (Separating_line_group_engraver, break_aligned);
ADD_TRANSLATOR (Separating_line_group_engraver,
- /* doc */ "Generates objects for computing spacing parameters.",
+ /* doc */
+ "Generate objects for computing spacing parameters.",
- /* create */ "StaffSpacing",
- /* read */ "createSpacing",
- /* write */ "hasStaffSpacing"
+ /* create */
+ "StaffSpacing ",
+
+ /* read */
+ "createSpacing ",
+
+ /* write */
+ "hasStaffSpacing "
);
}
ADD_INTERFACE (Separation_item,
- "Item that computes widths to generate spacing rods. "
- ,
+ "Item that computes widths to generate spacing rods.",
+ /* properties */
"X-extent "
"conditional-elements "
"elements "
}
ADD_INTERFACE (Side_position_interface,
- "Position a victim object (this one) next to other objects (the "
- "support). The property @code{direction} signifies where to put the "
- "victim object relative to the support (left or right, up or down?)\n\n "
- "The routine also takes the size the staff into account if "
- "@code{staff-padding} is set. If undefined, the staff symbol is ignored.",
+ "Position a victim object (this one) next to other objects"
+ " (the support). The property @code{direction} signifies where"
+ " to put the victim object relative to the support (left or"
+ " right, up or down?)\n"
+ "\n"
+ "The routine also takes the size of the staff into account if"
+ " @code{staff-padding} is set. If undefined, the staff symbol"
+ " is ignored.",
/* properties */
"direction "
}
ADD_TRANSLATOR (Slash_repeat_engraver,
- /* doc */ "Make beat repeats.",
- /* create */ "RepeatSlash",
- /* read */ "measureLength",
- /* write */ "");
+ /* doc */
+ "Make beat repeats.",
+
+ /* create */
+ "RepeatSlash ",
+
+ /* read */
+ "measureLength ",
+
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Slur_engraver, tie);
ADD_ACKNOWLEDGER (Slur_engraver, tuplet_number);
ADD_TRANSLATOR (Slur_engraver,
- /* doc */ "Build slur grobs from slur events",
- /* create */ "Slur",
+ /* doc */
+ "Build slur grobs from slur events.",
+
+ /* create */
+ "Slur ",
+
/* read */
"slurMelismaBusy "
"doubleSlurs ",
- /* write */ "");
+ /* write */
+ ""
+ );
}
ADD_TRANSLATOR (Slur_performer,
- "", "",
- "", "");
+ /* doc */
+ "",
+
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Slur,
-
- "A slur",
+ "A slur.",
/* properties */
"annotation "
ADD_INTERFACE (Spaceable_grob,
- "A layout object that takes part in the spacing problem. ",
-
+ "A layout object that takes part in the spacing problem.",
/* properties */
"allow-loose-spacing "
"minimum-distances "
"right-neighbors "
"spacing-wishes "
-
);
ADD_ACKNOWLEDGER (Spacing_engraver, rhythmic_grob);
ADD_TRANSLATOR (Spacing_engraver,
- "make a SpacingSpanner and do "
- "bookkeeping of shortest starting and playing notes ",
+ /* doc */
+ "Make a @code{SpacingSpanner} and do bookkeeping of shortest"
+ " starting and playing notes.",
+
+ /* create */
+ "SpacingSpanner ",
- /* create */ "SpacingSpanner",
/* read */
"currentMusicalColumn "
"currentCommandColumn "
- "proportionalNotationDuration",
+ "proportionalNotationDuration ",
- /* write */ "");
+ /* write */
+ ""
+ );
ADD_INTERFACE (Spacing_interface,
- "This object calculates the desired and minimum distances between two columns.",
+ "This object calculates the desired and minimum distances"
+ " between two columns.",
+ /* properties */
"left-items "
"right-items "
);
}
ADD_INTERFACE (Spacing_spanner,
- "The space taken by a note is dependent on its duration. Doubling a\n"
- "duration adds spacing-increment to the space. The most common shortest\n"
- "note gets @code{shortest-duration-space}. Notes that are even shorter are\n"
- "spaced proportonial to their duration.\n"
+ "The space taken by a note is dependent on its duration."
+ " Doubling a duration adds @code{spacing-increment} to the"
+ " space. The most common shortest note gets"
+ " @code{shortest-duration-space}. Notes that are even shorter"
+ " are spaced proportonial to their duration.\n"
"\n"
- "Typically, the increment is the width of a black note head. In a\n"
- "piece with lots of 8th notes, and some 16th notes, the eighth note\n"
- "gets 2 note heads width (i.e. the space following a note is 1 note\n"
- "head width) A 16th note is followed by 0.5 note head width. The\n"
- "quarter note is followed by 3 NHW, the half by 4 NHW, etc.\n",
-
-
+ "Typically, the increment is the width of a black note head."
+ " In a piece with lots of 8th notes, and some 16th notes, the"
+ " eighth note gets a 2@tie{}note heads width (i.e., the space"
+ " following a note is a 1@tie{}note head width). A 16th note"
+ " is followed by 0.5 note head width. The quarter note is"
+ " followed by 3@tie{}NHW, the half by 4@tie{}NHW, etc.",
+
+ /* properties */
"average-spacing-wishes "
"base-shortest-duration "
"common-shortest-duration "
"strict-grace-spacing "
"strict-note-spacing "
"uniform-stretching "
-
);
ADD_ACKNOWLEDGER (Span_arpeggio_engraver, arpeggio);
ADD_TRANSLATOR (Span_arpeggio_engraver,
- /* doc */ "",
- /* create */ "Arpeggio",
- /* read */ "connectArpeggios",
- /* write */ "");
+ /* doc */
+ "Make arpeggios that span multiple staves.",
+
+ /* create */
+ "Arpeggio ",
+
+ /* read */
+ "connectArpeggios ",
+
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Span_bar_engraver, bar_line);
ADD_TRANSLATOR (Span_bar_engraver,
- /* doc */ "This engraver makes cross-staff barlines: It catches all normal "
- "bar lines, and draws a single span-bar across them.",
- /* create */ "SpanBar",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Make cross-staff bar lines: It catches all normal bar lines"
+ " and draws a single span bar across them.",
+
+ /* create */
+ "SpanBar ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Span_bar,
- "A bar line that spanned between other barlines. This interface is "
- " used for bar lines that connect different staves.",
+ "A bar line that is spanned between other barlines. This"
+ " interface is used for bar lines that connect different"
+ " staves.",
/* properties */
"glyph-name "
- "elements");
+ "elements "
+ );
ADD_END_ACKNOWLEDGER (Spanner_break_forbid_engraver, unbreakable_spanner);
ADD_ACKNOWLEDGER (Spanner_break_forbid_engraver, unbreakable_spanner);
ADD_TRANSLATOR (Spanner_break_forbid_engraver,
- /* doc */ "Forbid breaks in certain spanners",
- /* create */ "",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Forbid breaks in certain spanners.",
+
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Spanner,
- "Some objects are horizontally spanned between objects. For\n"
- "example, slur, beam, tie, etc. These grobs form a subtype called\n"
- "@code{Spanner}. All spanners have two span-points (these must be\n"
- "@code{Item} objects), one on the left and one on the right. The left bound is\n"
- "also the X-reference point of the spanner.\n",
-
+ "Some objects are horizontally spanned between objects. For"
+ " example, slurs, beams, ties, etc. These grobs form a subtype"
+ " called @code{Spanner}. All spanners have two span points"
+ " (these must be @code{Item} objects), one on the left and one"
+ " on the right. The left bound is also the X@tie{}reference"
+ " point of the spanner.",
+
+ /* properties */
"minimum-length "
"to-barline "
);
ADD_END_ACKNOWLEDGER (Staff_collecting_engraver, staff_symbol);
ADD_TRANSLATOR (Staff_collecting_engraver,
- /* doc */ "Maintain the stavesFound variable",
+ /* doc */
+ "Maintain the @code{stavesFound} variable.",
- /* create */ "",
- /* read */ "stavesFound",
- /* write */ "stavesFound");
+ /* create */
+ "",
+
+ /* read */
+ "stavesFound ",
+
+ /* write */
+ "stavesFound "
+ );
#include "translator.icc"
-ADD_TRANSLATOR (Staff_performer, "", "",
- "", "");
+ADD_TRANSLATOR (Staff_performer,
+ /* doc */
+ "",
+
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ "");
Staff_performer::Staff_performer ()
{
}
ADD_INTERFACE (Staff_spacing,
- "This object calculates spacing details from a "
- " breakable symbol (left) to another object. For example, it takes care "
- " of optical spacing from a bar lines to a note.",
+ "This object calculates spacing details from a breakable"
+ " symbol (left) to another object. For example, it takes care"
+ " of optical spacing from a bar line to a note.",
/* properties */
"stem-spacing-correction "
ADD_ACKNOWLEDGER (Staff_symbol_engraver, grob);
ADD_TRANSLATOR (Staff_symbol_engraver,
- /* doc */ "Create the constellation of five (default) "
- "staff lines.",
- /* create */ "StaffSymbol",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Create the constellation of five (default) staff lines.",
+
+ /* create */
+ "StaffSymbol ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Staff_symbol_referencer,
- "An object whose Y position is meant relative to a staff "
- "symbol. "
- "These usually have @code{Staff_symbol_referencer::callback} "
- "in their @code{Y-offset-callbacks}. ",
+ "An object whose Y@tie{}position is meant relative to a staff"
+ " symbol. These usually"
+ " have @code{Staff_symbol_referencer::callback} in their"
+ " @code{Y-offset-callbacks}.",
/* properties */
- "staff-position");
-
-
+ "staff-position "
+ );
ADD_INTERFACE (Staff_symbol,
- "This spanner draws the lines of a staff. "
- "A staff symbol definines a vertical unit, the staff space. "
- "Quantities that go by a half staff space are called positions "
- "The center (i.e. middle line "
- "or space) is position 0. The length of the symbol may be set by hand "
- "through the @code{width} property. ",
-
+ "This spanner draws the lines of a staff. A staff symbol"
+ " defines a vertical unit, the @emph{staff space}. Quantities"
+ " that go by a half staff space are called @emph{positions}."
+ " The center (i.e., middle line or space) is position@tie{}0."
+ " The length of the symbol may be set by hand through the"
+ " @code{width} property.",
/* properties */
"ledger-line-thickness "
ADD_ACKNOWLEDGER (Stanza_number_align_engraver, stanza_number);
ADD_TRANSLATOR (Stanza_number_align_engraver,
- "This engraver ensures that stanza numbers are neatly aligned. ",
+ /* doc */
+ "This engraver ensures that stanza numbers are neatly"
+ " aligned.",
+
+ /* create */
"",
+
+ /* read */
"",
+
+ /* write */
"");
ADD_ACKNOWLEDGER (Stanza_number_engraver, lyric_syllable);
ADD_TRANSLATOR (Stanza_number_engraver,
- /* doc */ "",
- /* create */ "StanzaNumber",
- /* read */ "stanza",
- /* write */ "");
+ /* doc */
+ "Engrave stanza numbers.",
+
+ /* create */
+ "StanzaNumber ",
+
+ /* read */
+ "stanza ",
+
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (Stem_engraver, rhythmic_head);
ADD_TRANSLATOR (Stem_engraver,
-
- /* doc */ "Create stems and single-stem tremolos. It also works together with "
- "the beam engraver for overriding beaming.",
+ /* doc */
+ "Create stems and single-stem tremolos. It also works"
+ " together with the beam engraver for overriding beaming.",
/* create */
"Stem "
"stemLeftBeamCount "
"stemRightBeamCount ",
- /* write */ "");
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Stem_tremolo,
- "A beam slashing a stem to indicate a tremolo. "
- "The property @code{style} can be @code{default} or "
- "@code{rectangle}.",
+ "A beam slashing a stem to indicate a tremolo. The property"
+ " @code{style} can be @code{default} or @code{rectangle}.",
/* properties */
"beam-thickness "
/* FIXME: Too many properties */
ADD_INTERFACE (Stem,
- "The stem represent the graphical stem. "
- "In addition, it internally connects note heads, beams and"
- "tremolos. "
- "Rests and whole notes have invisible stems."
-
- "\n\nThe following properties may be set in the details list."
+ "The stem represents the graphical stem. In addition, it"
+ " internally connects note heads, beams, and tremolos. Rests"
+ " and whole notes have invisible stems.\n"
+ "\n"
+ "The following properties may be set in the @code{details}"
+ " list.\n"
+ "\n"
"@table @code\n"
- "@item beamed-lengths \n"
- "list of stem lengths given beam multiplicity. \n"
- "@item beamed-minimum-free-lengths \n"
- "list of normal minimum free stem lengths (chord to beams) given beam multiplicity.\n"
+ "@item beamed-lengths\n"
+ "List of stem lengths given beam multiplicity.\n"
+ "@item beamed-minimum-free-lengths\n"
+ "List of normal minimum free stem lengths (chord to beams)"
+ " given beam multiplicity.\n"
"@item beamed-extreme-minimum-free-lengths\n"
- "list of extreme minimum free stem lengths (chord to beams) given beam multiplicity.\n"
+ "List of extreme minimum free stem lengths (chord to beams)"
+ " given beam multiplicity.\n"
"@item lengths\n"
- "Default stem lengths. The list gives a length for each flag-count.\n"
+ "Default stem lengths. The list gives a length for each"
+ " flag count.\n"
"@item stem-shorten\n"
- "How much a stem in a forced direction "
- "should be shortened. The list gives an amount depending on the number "
- "of flags/beams."
- "@end table\n"
- ,
+ "How much a stem in a forced direction should be shortened."
+ " The list gives an amount depending on the number of flags"
+ " and beams.\n"
+ "@end table\n",
/* properties */
"avoid-note-head "
#include "translator.icc"
ADD_TRANSLATOR (String_number_engraver,
- /* doc */ "Swallow string-number-events - the purpose of this engraver is to"
- " process tab for normal notation. To provent warnings for unprocessed "
- " string-number-event to obscure real error messages, this engraver "
- " swallows them all.",
-
- /* create */ "",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Swallow string number events. The purpose of this engraver"
+ " is to process tablatures for normal notation. To provent"
+ " warnings for unprocessed string number events to obscure"
+ " real error messages, this engraver swallows them all.",
+
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
#include "translator.icc"
ADD_TRANSLATOR (Swallow_engraver,
- /* doc */ "This engraver swallows everything given to it silently. The purpose of "
- "this is to prevent spurious \"event junked\" warnings.",
- /* create */ "",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "This engraver swallows everything given to it silently."
+ " The purpose of this is to prevent spurious @q{event junked}"
+ " warnings.",
+
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
#include "translator.icc"
ADD_TRANSLATOR (Swallow_performer,
- /* doc */ "",
- /* create */ "",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "",
+
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
ADD_ACKNOWLEDGER (System_start_delimiter_engraver, system_start_text);
ADD_TRANSLATOR (System_start_delimiter_engraver,
- /* doc */ "Creates a system start delimiter (ie. SystemStart@{Bar, Brace, Bracket@} spanner",
- /* create */ "SystemStartSquare "
+ /* doc */
+ "Create a system start delimiter (i.e., a"
+ " @code{SystemStartBar}, @code{SystemStartBrace},"
+ " @code{SystemStartBracket} or @code{SystemStartSquare}"
+ " spanner).",
+
+ /* create */
+ "SystemStartSquare "
"SystemStartBrace "
"SystemStartBracket "
- "SystemStartBar",
+ "SystemStartBar ",
+
/* read */
"systemStartDelimiter "
"systemStartDelimiterHierarchy "
- "currentCommandColumn",
+ "currentCommandColumn ",
- /* write */ "");
+ /* write */
+ ""
+ );
*/
#include "system-start-delimiter.hh"
-#include "text-interface.hh"
+#include "text-interface.hh"
#include "all-font-metrics.hh"
#include "axis-group-interface.hh"
#include "font-interface.hh"
}
ADD_INTERFACE (System_start_delimiter,
- "The brace, bracket or bar in front of the system. "
- ,
+ "The brace, bracket or bar in front of the system. The"
+ " following values for @code{style} are recognized:\n"
+ "\n"
+ "@table @code\n"
+ "@item bracket\n"
+ "A thick bracket, normally used to group similar"
+ " instruments in a score. Default for @code{StaffGroup}."
+ " @code{SystemStartBracket} uses this style.\n"
+ "@item brace\n"
+ "A @q{piano style} brace normally used for an instrument"
+ " that uses two staves. The default style for"
+ " @code{GrandStaff}. @code{SystemStartBrace} uses this"
+ " style.\n"
+ "@item bar-line\n"
+ "A simple line between the staves in a score. Default"
+ " for staves enclosed in @code{<<} and @code{>>}."
+ " @code{SystemStartBar} uses this style.\n"
+ "@item line-bracket\n"
+ "A simple square, normally used for subgrouping"
+ " instruments in a score. @code{SystemStartSquare} uses"
+ " this style.\n"
+ "@end table\n"
+ "\n"
+ "See also @file{input/regression/system-start-nesting.ly}.",
/* properties */
"collapse-height "
}
ADD_INTERFACE (System,
- "This is the toplevel object: each object in a score "
- "ultimately has a System object as its X and Y parent. ",
+ "This is the top-level object: Each object in a score"
+ " ultimately has a @code{System} object as its X and"
+ " Y@tie{}parent.",
/* properties */
"all-elements "
ADD_ACKNOWLEDGER (Tab_harmonic_engraver, note_head);
ADD_TRANSLATOR (Tab_harmonic_engraver,
- /* doc */ "Parenthesize objects whose music cause has the @code{parenthesize} "
- "property.",
+ /* doc */
+ "In a tablature, parenthesize objects whose music cause has"
+ " the @code{parenthesize} property.",
/* create */
"HarmonicParenthesesItem ",
- /* read */ "",
- /* write */ "");
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_TRANSLATOR (Tab_note_heads_engraver,
- /* doc */ "Generate one or more tablature noteheads from event of type NoteEvent.",
+ /* doc */
+ "Generate one or more tablature noteheads from event of type"
+ " @code{NoteEvent}.",
+
/* create */
- "TabNoteHead "
- ,
+ "TabNoteHead ",
/* read */
"middleCPosition "
"highStringOne "
"stringOneTopmost ",
- /* write */ "");
+ /* write */ ""
+ );
ADD_ACKNOWLEDGER (Tab_staff_symbol_engraver, staff_symbol);
ADD_TRANSLATOR (Tab_staff_symbol_engraver,
/* doc */
- "Create a staff-symbol, but look at "
- "stringTunings for the number of lines. "
- ,
- /* create */ "StaffSymbol",
- /* read */ "stringTunings",
- /* write */ "");
+ "Create a tablature staff symbol, but look at"
+ " @code{stringTunings} for the number of lines.",
+
+ /* create */
+ "StaffSymbol ",
+
+ /* read */
+ "stringTunings ",
+
+ /* write */
+ ""
+ );
}
}
-ADD_TRANSLATOR (Tempo_performer, "", "",
+ADD_TRANSLATOR (Tempo_performer,
+ /* doc */
+ "",
+
+ /* create */
+ "",
+
+ /* read */
"tempoWholesPerMinute ",
- "");
+
+ /* write */
+ ""
+ );
}
ADD_TRANSLATOR (Text_engraver,
- /* doc */ "Create text-scripts",
- /* create */ "TextScript",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Create text scripts.",
+
+ /* create */
+ "TextScript ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
ADD_INTERFACE (Text_interface,
- "A scheme markup text, see @ruser{Text markup} and "
- "@ruser{New markup command definition}. "
- "\n\n"
- "There are two important commands: ly:text-interface::print, which is a "
- "grob callback, and ly:text-interface::interpret-markup ",
-
- /* props */
+ "A Scheme markup text, see @ruser{Text markup} and"
+ " @ruser{New markup command definition}.\n"
+ "\n"
+ "There are two important commands:"
+ " @code{ly:text-interface::print}, which is a"
+ " grob callback, and"
+ " @code{ly:text-interface::interpret-markup}.",
+
+ /* properties */
"baseline-skip "
"text "
"word-space "
else
{
finished_ = span_;
+ announce_end_grob (finished_, SCM_EOL);
span_ = 0;
current_event_ = 0;
}
ADD_TRANSLATOR (Text_spanner_engraver,
/* doc */
"Create text spanner from an event.",
+
/* create */
"TextSpanner ",
+
/* read */
"",
+
/* write */
""
);
ADD_INTERFACE (Tie_column,
- "Object that sets directions of multiple ties in a tied chord",
+ "Object that sets directions of multiple ties in a tied chord.",
/* properties */
"positioning-done "
ADD_ACKNOWLEDGER (Tie_engraver, note_head);
ADD_TRANSLATOR (Tie_engraver,
- /* doc */ "Generate ties between noteheads of equal pitch.",
+ /* doc */
+ "Generate ties between note heads of equal pitch.",
+
/* create */
"Tie "
"TieColumn ",
- /* read */ "tieWaitForNote",
- /* write */ "tieMelismaBusy");
+
+ /* read */
+ "tieWaitForNote ",
+
+ /* write */
+ "tieMelismaBusy "
+ );
#include "axis-group-interface.hh"
#include "paper-column.hh"
-#include "bezier.hh"
+#include "bezier.hh"
#include "directional-element-interface.hh"
#include "libc-extension.hh"
#include "misc.hh"
#include "note-head.hh"
#include "rhythmic-head.hh"
-#include "spanner.hh"
+#include "spanner.hh"
#include "staff-symbol-referencer.hh"
#include "stem.hh"
#include "tie-configuration.hh"
}
ADD_TRANSLATOR (Tie_performer,
- /* doc */ "Generate ties between noteheads of equal pitch.",
- /* create */ "",
- /* read */ "tieMelismaBusy",
- /* write */ "");
+ /* doc */
+ "Generate ties between note heads of equal pitch.",
+
+ /* create */
+ "",
+
+ /* read */
+ "tieMelismaBusy",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Tie,
- "A horizontal curve connecting two noteheads. \n\n"
- ,
+ "A horizontal curve connecting two noteheads.",
-
/* properties */
"annotation "
"avoid-slur " // UGH.
"direction "
"separation-item "
"head-direction "
- "line-thickness "
+ "line-thickness "
"quant-score "
"staff-position "
"thickness "
-
);
#include "translator.icc"
ADD_TRANSLATOR (Time_signature_engraver,
- /* doc */ "Create a @ref{TimeSignature} whenever @code{timeSignatureFraction} changes",
+ /* doc */
+ "Create a @ref{TimeSignature} whenever"
+ " @code{timeSignatureFraction} changes.",
+
/* create */
"TimeSignature ",
/* read */
"implicitTimeSignatureVisibility "
- "timeSignatureFraction "
+ "timeSignatureFraction ",
- ,
- /* write */ "");
+ /* write */
+ ""
+ );
#include "translator.icc"
-ADD_TRANSLATOR (Time_signature_performer, "", "", "", "");
+ADD_TRANSLATOR (Time_signature_performer,
+ /* doc */
+ "",
+
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Time_signature,
- "A time signature, in different styles.\n"
- " The following values for 'style are are recognized:\n"
+ "A time signature, in different styles. The following values"
+ " for @code{style} are are recognized:\n"
"\n"
- " @table @samp\n"
- " @item @code{C}\n"
- " 4/4 and 2/2 are typeset as C and struck C, respectively. All\n"
- " other time signatures are written with two digits.\n"
+ "@table @code\n"
+ "@item C\n"
+ "4/4 and 2/2 are typeset as C and struck C, respectively."
+ " All other time signatures are written with two digits.\n"
+ "@item neomensural\n"
+ "2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8, and 9/8 are"
+ " typeset with neo-mensural style mensuration marks. All"
+ " other time signatures are written with two digits.\n"
+ "@item mensural\n"
+ "2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8, and 9/8 are"
+ " typeset with mensural style mensuration marks. All other"
+ " time signatures are written with two digits.\n"
+ "@item single-digit\n"
+ "All time signatures are typeset with a single digit, e.g.,"
+ " 3/2 is written as 3.\n"
+ "@end table\n"
"\n"
- " @item @code{neomensural}\n"
- " 2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and 9/8 are\n"
- " typeset with neo-mensural style mensuration marks. All other time\n"
- " signatures are written with two digits.\n"
- "\n"
- " @item @code{mensural}\n"
- " 2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8 and 9/8 are\n"
- " typeset with mensural style mensuration marks. All other time\n"
- " signatures are written with two digits.\n"
- "\n"
- " @item @code{single-digit}\n"
- " All time signatures are typeset with a single\n"
- " digit, e.g. 3/2 is written as 3.\n"
- " @end table\n"
- "\n"
- "See also the test-file @file{input/test/time.ly}.\n",
- "fraction style");
+ "See also the test-file @file{input/test/time.ly}.",
+
+ /* properties */
+ "fraction "
+ "style "
+ );
#include "translator.icc"
ADD_TRANSLATOR (Timing_translator,
- "This engraver adds the alias "
- "@code{Timing} to its containing context."
- "Responsible for synchronizing timing information from staves. "
- "Normally in @code{Score}. In order to create polyrhythmic music, "
- "this engraver should be removed from @code{Score} and placed in "
- "@code{Staff}. "
- "\n\nThis engraver adds the alias @code{Timing} to its containing context.",
-
+ /* doc */
+ "This engraver adds the alias @code{Timing} to its containing"
+ " context. Responsible for synchronizing timing information"
+ " from staves. Normally in @code{Score}. In order to create"
+ " polyrhythmic music, this engraver should be removed from"
+ " @code{Score} and placed in @code{Staff}.",
+
+ /* create */
"",
+ /* read */
"internalBarNumber "
"currentBarNumber "
"measureLength "
"measurePosition ",
+ /* write */
"internalBarNumber "
"currentBarNumber "
"measurePosition "
}
ADD_TRANSLATOR (Translator,
- "Base class. Not instantiated.",
+ /* doc */
+ "Base class. Not instantiated.",
+
+ /* create */
"",
+
+ /* read */
"",
- "");
+
+ /* write */
+ ""
+ );
else
{
finished_ = span_;
+ announce_end_grob (finished_, SCM_EOL);
span_ = 0;
current_event_ = 0;
}
ADD_ACKNOWLEDGER (Trill_spanner_engraver, note_column);
ADD_TRANSLATOR (Trill_spanner_engraver,
- /* doc */ "Create trill spanner from an event.",
+ /* doc */
+ "Create trill spanner from an event.",
+
/* create */
"TrillSpanner ",
- /* read */ "",
- /* write */ "");
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Tuplet_bracket,
- "A bracket with a number in the middle, used for tuplets. "
- "When the bracket spans a line break, the value of "
- "@code{break-overshoot} determines how far it extends "
- "beyond the staff. "
- "At a line break, the markups in the @code{edge-text} are printed "
- "at the edges. ",
-
+ "A bracket with a number in the middle, used for tuplets."
+ " When the bracket spans a line break, the value of"
+ " @code{break-overshoot} determines how far it extends"
+ " beyond the staff. At a line break, the markups in the"
+ " @code{edge-text} are printed at the edges.",
/* properties */
"bracket-flare "
"shorten-pair "
"staff-padding "
"thickness "
- "tuplets ");
+ "tuplets "
+ );
ADD_ACKNOWLEDGER (Tuplet_engraver, note_column);
ADD_TRANSLATOR (Tuplet_engraver,
-
/* doc */
"Catch tuplet events and generate appropriate bracket.",
/* create */
"TupletBracket "
"TupletNumber ",
+
/* read */
"tupletFullLength "
"tupletFullLengthNote ",
- /* write */ "");
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Tuplet_number,
- "The number for a bracket. "
- ,
+ "The number for a bracket.",
/* properties */
"avoid-slur " // UGH.
- "bracket ");
+ "bracket "
+ );
ADD_ACKNOWLEDGER (Tweak_engraver, grob);
ADD_TRANSLATOR (Tweak_engraver,
- /* doc */ "Read the @code{tweaks} property from the originating event, and set properties." ,
+ /* doc */
+ "Read the @code{tweaks} property from the originating event,"
+ " and set properties.",
- /* create */ "",
- /* read */ "",
- /* write */ "");
+ /* create */
+ "",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_TRANSLATOR (Skip_event_swallow_translator,
- "Swallow \\skip.",
+ /* doc */
+ "Swallow @code{\\skip}.",
+
+ /* create */
"",
+
+ /* read */
"",
- "");
+
+ /* write */
+ ""
+ );
Rest_swallow_translator::Rest_swallow_translator (){}
ADD_TRANSLATOR (Rest_swallow_translator,
- "Swallow rest",
+ /* doc */
+ "Swallow rest.",
+
+ /* create */
"",
+
+ /* read */
"",
- "");
+
+ /* write */
+ ""
+ );
class Note_swallow_translator : public Translator
{
}
ADD_TRANSLATOR (Note_swallow_translator,
- "Swallow notes",
+ /* doc */
+ "Swallow notes.",
+
+ /* create */
"",
+
+ /* read */
"",
- "");
+ /* write */
+ ""
+ );
if (glyph_name_scm == SCM_EOL)
{
primitive->programming_error ("Vaticana_ligature:"
- "undefined glyph-name -> "
- "ignoring grob");
+ " undefined glyph-name ->"
+ " ignoring grob");
continue;
}
string glyph_name = ly_scm2string (glyph_name_scm);
else
{
primitive->programming_error ("Vaticana_ligature:"
- "delta-position undefined -> "
- "ignoring grob");
+ " delta-position undefined ->"
+ " ignoring grob");
continue;
}
}
else
{
primitive->programming_error ("Vaticana_ligature:"
- "delta-position undefined -> "
- "ignoring grob");
+ " delta-position undefined ->"
+ " ignoring grob");
continue;
}
else // (prev_delta_pitch == 0)
{
primitive->programming_error ("Vaticana_ligature:"
- "deminutum head must have different "
- "pitch -> ignoring grob");
+ " deminutum head must have different"
+ " pitch -> ignoring grob");
}
else if (prefix_set & (CAVUM | LINEA))
if ((prefix_set & CAVUM) && (prefix_set & LINEA))
ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, rest);
ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, note_head);
ADD_TRANSLATOR (Vaticana_ligature_engraver,
- /* doc */ "Handles ligatures by glueing special ligature heads together.",
- /* create */ "VaticanaLigature DotColumn",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Handle ligatures by glueing special ligature heads together.",
+
+ /* create */
+ "VaticanaLigature "
+ "DotColumn ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );
}
ADD_INTERFACE (Vaticana_ligature,
- "A vaticana style gregorian ligature",
+ "A vaticana style Gregorian ligature.",
/* properties */
"glyph-name "
- "flexa-height "
+ "flexa-height "
"flexa-width "
"thickness "
"add-cauda "
ADD_ACKNOWLEDGER (Vertical_align_engraver, axis_group);
ADD_TRANSLATOR (Vertical_align_engraver,
- "Catch groups (staves, lyrics lines, etc.) and stack "
- "them vertically.",
- /* create */ "VerticalAlignment",
+ /* doc */
+ "Catch groups (staves, lyrics lines, etc.) and stack them"
+ " vertically.",
+
+ /* create */
+ "VerticalAlignment ",
+
/* read */
"alignAboveContext "
"alignBelowContext ",
- /* write */ "");
+ /* write */
+ ""
+ );
Vertical_align_engraver::Vertical_align_engraver ()
{
ADD_ACKNOWLEDGER (Vertically_spaced_contexts_engraver, vertically_spaceable);
ADD_TRANSLATOR (Vertically_spaced_contexts_engraver,
- /* doc */ "",
- /* create */ "",
- /* read */ "verticallySpacedContexts",
- /* write */ "verticallySpacedContexts");
+ /* doc */
+ "",
+
+ /* create */
+ "",
+
+ /* read */
+ "verticallySpacedContexts ",
+
+ /* write */
+ "verticallySpacedContexts "
+ );
}
ADD_INTERFACE (Volta_bracket_interface,
- "Volta bracket with number",
+ "Volta bracket with number.",
/* properties */
"bars "
"thickness "
- "height");
+ "height "
+ );
*/
ADD_ACKNOWLEDGER (Volta_engraver, bar_line);
ADD_TRANSLATOR (Volta_engraver,
- /* doc */ "Make volta brackets.",
- /* create */ "VoltaBracket VoltaBracketSpanner",
- /* read */ "repeatCommands voltaSpannerDuration stavesFound",
- /* write */ "");
+ /* doc */
+ "Make volta brackets.",
+
+ /* create */
+ "VoltaBracket "
+ "VoltaBracketSpanner ",
+
+ /* read */
+ "repeatCommands "
+ "voltaSpannerDuration "
+ "stavesFound ",
+
+ /* write */
+ ""
+ );
'elements (list (make-music 'BreathingEvent))))
bendAfter =
-#(define-music-function (parser location delta) (integer?)
+#(define-music-function (parser location delta) (real?)
(make-music 'BendAfterEvent
'delta-step delta))
}
-tiny =
-\set fontSize = #-2
+tiny = {
+ \set fontSize = #-2
+}
-small =
-\set fontSize = #-1
+small = {
+ \set fontSize = #-1
+}
normalsize = {
\set fontSize = #0
}
+large = {
+ \set fontSize = #1
+}
+
+huge = {
+ \set fontSize = #2
+}
%% End the incipit and print a ``normal line start''.
endincipit = \context Staff {
whether to put a page turn at this column. Can be @code{force} or
@code{allow}.")
(parenthesized ,boolean? "Parenthesize this grob.")
- (positions ,number-pair? "Pair of staff coordinates @code{(@var{left}
-. @var{right})}, where both @var{left} and @var{right} are in
-@code{staff-space} units of the current staff.
-
-For slurs, this value selects which slur candidate
-to use; if extreme positions are requested, the closest one is taken.")
+ (positions ,number-pair? "Pair of staff coordinates
+@code{(@var{left} . @var{right})}, where both @var{left} and
+@var{right} are in @code{staff-space} units of the current staff.
+For slurs, this value selects which slur candidate to use; if
+extreme positions are requested, the closest one is taken.")
+ (prefer-dotted-right ,boolean? "For note collisions, prefer to
+shift dotted up-note to the right, rather than shifting just the
+dot.")
(ratio ,number? "Parameter for slur shape. The higher this
number, the quicker the slur attains its @code{height-limit}.")
(axes . (,X ,Y))
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,ly:axis-group-interface::height)
+ (prefer-dotted-right . #t)
(positioning-done . ,ly:note-collision-interface::calc-positioning-done)
(meta . ((class . Item)
(interfaces . (note-collision-interface
))
(define-public alteration-hufnagel-glyph-name-alist
- '((-1/2 . "accidentals.hufnagel-1")
+ '((-1/2 . "accidentals.hufnagelM1")
(0 . "accidentals.vaticana0")
(1/2 . "accidentals.mensural1")))
(define-public alteration-medicaea-glyph-name-alist
- '((-1/2 . "accidentals.medicaea-1")
+ '((-1/2 . "accidentals.medicaeaM1")
(0 . "accidentals.vaticana0")
(1/2 . "accidentals.mensural1")))
(define-public alteration-vaticana-glyph-name-alist
- '((-1/2 . "accidentals.vaticana-1")
+ '((-1/2 . "accidentals.vaticanaM1")
(0 . "accidentals.vaticana0")
(1/2 . "accidentals.mensural1")))
(define-public alteration-mensural-glyph-name-alist
- '((-1/2 . "accidentals.mensural-1")
+ '((-1/2 . "accidentals.mensuralM1")
(0 . "accidentals.vaticana0")
(1/2 . "accidentals.mensural1")))