documentation. It would be great if somebody could create
properly-formatted patches for these corrections.
-Technical requirements: ability to run @ref{Lilydev}.
+Technical requirements: ability to run @ref{LilyDev}.
@item LSR editor:
LSR contains many useful examples of lilypond, but some snippets
often find them in Ponds of Lilies) and new feature implementors.
Technical requirements: development environment (such as
-@ref{Lilydev}), ability to read+write scheme and/or C++ code.
+@ref{LilyDev}), ability to read+write scheme and/or C++ code.
@end itemize
@item
anything which stops contributors from helping out (e.g.
lily-git.tcl not working, source tree(s) not being available,
-lilydev being unable to compile git master, inaccurate
+LilyDev being unable to compile git master, inaccurate
instructions in the Contributor's Guide 2 Quick start).
To limit this scope of this point, we will assume that the
-contributor is using the latest lilydev and has read the relevant
+contributor is using the latest LilyDev and has read the relevant
part(s) of the Contributor's Guide. Problems in other chapters of
the CG are not sufficient to qualify as Type-Critical.
@node Quick start
@chapter Quick start
-Want to submit a patch for LilyPond? Great! This chapter is
-designed to let you do this as quickly and easily as possible.
-
-It is not possible to compile LilyPond on Windows, and extremely
-difficulty to compile it on MacOS X. We have therefore made a
-@q{remix} of Ubuntu which includes all necessary dependencies to
-compile both LilyPond and the documentation. This can be run
-inside a virtual machine without disturbing your main operating
-system. The full name is @qq{Ubuntu LilyPond Developer Remix},
-but we refer to it as @qq{lilydev} for short.
-
-@advanced{experienced developers may prefer to use their own
-development environment. It may be instructive to skim over these
-instructions, but be aware that this chapter is intended for
-helpful users who may have never created a patch before.}
+Want to submit a patch for LilyPond? Great! Never created a patch
+before? Never compiled software before? No problem! This chapter is
+for you and will help you do this as quickly and easily as possible.
@menu
-* Lilydev::
-* Using lily-git::
-* Compiling with lilydev::
+* LilyDev::
+* lily-git::
+* Compiling with LilyDev::
* Now start work!::
@end menu
-@node Lilydev
-@section Lilydev
+@node LilyDev
+@section LilyDev
-This section discusses how to install and use the Ubuntu LilyPond
-Development Remix.
+There is a disk image of a @q{remix} of Ubuntu Linux available for
+download which includes all the necessary software and tools to compile
+both LilyPond and the documentation. Called the
+@qq{Ubuntu LilyPond Developer Remix}, but known simply as @qq{LilyDev}
+for short. Although it is not possible to compile LilyPond on Windows
+and extremely difficult on MacOS, LilyDev can be installed and run
+inside a @q{virtual machine} on any of these operating systems without
+disturbing your main operating system. The LilyDev disk image can also
+be burnt to a DVD and installed like any other Ubuntu Linux
+distribution.
+
+Most virtualization software can be used but we recommend VirtualBox as
+it is available for all major operating systems and is easy to install
+& configure.
+
+If you are not familiar with Linux, it may be beneficial to read a
+couple of @qq{introduction to Ubuntu} web pages.
+
+Some contributors have recommended a free PDF:
+
+@example
+@uref{http://www.ubuntupocketguide.com/}
+@end example
+
+For those interested, the LilyDev remix is currently based on a 32bit
+version of 10.04 LTS Ubuntu (Lucid Lynx).
+
+@warning{Apart from installing and configuring LilyDev in VirtualBox,
+the rest of the chapter on assumes that you are comfortable using the
+command-line. While this chapter is intended for users who may have
+never created a patch or compiled software before, experienced
+developers (who prefer to use their own development environment) may
+still find it instructive to skim over this section.}
@menu
-* Installing lilydev::
-* Configuring lilydev in virtualbox::
-* Using lilydev::
+* Where to get LilyDev::
+* Installing LilyDev in VirtualBox::
+* Configuring LilyDev in VirtualBox::
@end menu
-@node Installing lilydev
-@subsection Installing lilydev
+
+@node Where to get LilyDev
+@unnumberedsubsec Where to get LilyDev
+
+Download the Ubuntu LilyPond Developer Remix CD image file
+(approximately 1 GB) from here:
+
+@smallexample
+@uref{http://www.philholmes.net/lilypond/LilyDev/ubuntu-LilyDev-remix-2.6.iso}
+@end smallexample
+
+Some advanced users might want this file too:
+@smallexample
+@uref{http://www.philholmes.net/lilypond/LilyDev/ubuntu-LilyDev-remix-2.6.iso.md5}
+@end smallexample
+(If you don't recognize what this file is, then you don't need it.)
+
+
+@node Installing LilyDev in VirtualBox
+@unnumberedsubsec Installing LilyDev in VirtualBox
+
+This section discusses how to install and use LilyDev with VirtualBox.
+
+@warning{If you already know how to install a virtual machine using a
+disc image inside VirtualBox (or your own virtualization software) then
+you can skip this section and go straight to @ref{lily-git}.}
@enumerate
@item
-Install some virtualization software.
-
-Any virtualization tool can be used, but we recommend VirtualBox:
+Download Virtualbox from here:
@example
@uref{http://@/www.virtualbox.org/@/wiki/@/Downloads}
@end example
-In virtualization terminology, your main operating system is the
-@strong{host}, while lilydev is the @strong{guest}.
+@warning{In virtualization terminology, the operating system where
+Virtualbox is installed, is the known as the @strong{host}. LilyDev
+will be installed @q{inside} Virtualbox as a @strong{guest}.}
@item
-Download the Ubuntu LilyPond Developer Remix disk image (approximately
-1 GB) from here:
+Start the VirtualBox software and click @q{New} to create a new
+@qq{virtual machine}.
-@example
-@uref{http://www.philholmes.net/lilypond/lilydev/ubuntu-lilydev-remix-2.6.iso}
-@end example
+The @q{New Virtual Machine Wizard} will walk you through setting up your
+guest virtual machine. Choose an appropriate name for your LilyDev
+installation and select the @q{Linux} operating system. When selecting
+the @q{version} use @q{Ubuntu} if available (but not the @q{64 bit}
+option). If you do not have that specific option choose @q{Linux 2.6}
+(again do not choose any option that has 64 bit next to it).
@item
-Create a new @qq{virtual machine} inside your virtualization
-software.
-
-If possible, use at least 700 MB of RAM (1GB would be better) for
-the virtual machine, and use @qq{dynamically expanding storage}
-for the virtual hard drive. A complete compile of everything
-(code, docs, regression tests) can reach 10 GB.
+Select the amount of RAM you will allow the LilyDev guest to use from
+your host operating system when it is running. If possible, use at
+least 700 MB of RAM; the more RAM you can spare from your host the
+better, although LilyDev will currently use no more than 4 GB (4096 MB)
+even if you are able to assign more.
@item
-Install @file{ubuntu-lilydev-remix-2.6.iso} as the @strong{guest}
-operating system on your virtualized system.
+For your @q{Virtual Hard Disk}, leave the @q{Create new hard disk}
+option checked, use the default @q{VDI} and
+@qq{Dynamically allocated} options for the virtual hard drive. A
+complete compile of everything (code, docs, regression tests) can reach
+10 GB so size your virtual disk and its location accordingly.
-@enumerate
+@item
+Verify the summary details and click @q{Create}, when you are satisfied.
+Your new guest will be displayed in the Virtualbox window. Click the
+@q{Start} button and the @q{First Run Wizard} will prompt you for
+the installation media. Click the browse icon and locate the LilyDev
+disk image and click through the wizard to start the installation
+process.
@item
-When @file{ubuntu-lilydev-remix-2.6.iso} boots, it shows an
-ISOLINUX @code{boot:} prompt. Type:
+When the LilyDev disk image boots, it shows a prompt:
@example
-install
+ISOLINUX @code{boot:}
@end example
+Hit the Return key (or wait 30 seconds) and then when the installer
+screen loads, using the arrow keys select
+@q{Install - start the installer directly} to begin the install process
+of LilyDev on your virtual hard disk. The Ubuntu software will walk you
+through the complete installation process.
+
@item
At the @qq{Prepare disk space} stage, do not be afraid to select
@qq{Erase and use the entire disk}, since this refers to your
@strong{@emph{virtual disk}}, not your machine's actual hard
-drive.
+disk.
@item
-When prompted to remove the installation CD, go to
-@clicksequence{Devices @click{} CD/DVD Devices} and de-select
-@file{ubuntu-lilydev-remix-2.6.iso}.
+Click through the rest of the wizard, filling in any appropriate details
+when asked and wait for the install to complete.
-@end enumerate
-
-@advanced{
-The latest version of lilydev is based on Ubuntu 10.04.1; if you
-encounter any difficulties installing it, search for one of the
-many tutorials for installing that particular version of Ubuntu as
-a guest operating system.
-}
+@warning{This will take anywhere from 10 minutes to up to an hour
+depending on the speed of your computer and if Ubuntu detects you are
+connected to the internet and needs to download any additional
+security updates or patches, although these updates are not required to
+compile LilyPond and it is possible to skip the additional downloads to
+speed up the install process.}
@item
-Do any extra configuration for your virtualization software.
-
-There are additional instructions for VirtualBox in
-@ref{Configuring lilydev in virtualbox}.
-
-If you use other virtualization software, then follow the normal
-procedures for your virtualization software with Ubuntu as the
-client.
+When prompted by the Ubuntu installer wizard, restart the virtual
+machine and then when prompted to @q{eject the CD} by virtual box, just
+click inside the virtual machine window and hit the return key to
+reboot the virtual machine. It will not try to restart the installer
+but start the virtual machine proper. LilyDev is now installed and
+running!
@end enumerate
@knownissues
-
Not all hardware is supported in all virtualization tools. In
-particular, some contributors have reported problems with USB
-devices, for example USB network adapters. If you have problems
-with network connection (for example internet connection in the
-host system is lost when you launch virtual system), try installing
-and running Lilydev with your computer's built-in network adapter
-used to connect to the network.
-If you would like to investigate further, then look for
-help for your virtualization tool using your normal OS as the
-@qq{host} and Ubuntu as the @qq{client}.
+particular, some contributors have reported problems with USB network
+adapters. If you have problems with network connection (for example
+Internet connection in the host system is lost when you launch virtual
+system), try installing and running LilyDev with your computer's
+built-in network adapter used to connect to the network. Refer to the
+help documentation that comes with your virtualization software.
-@node Configuring lilydev in virtualbox
-@subsection Configuring lilydev in virtualbox
+@node Configuring LilyDev in VirtualBox
+@unnumberedsubsec Configuring LilyDev in VirtualBox
-VirtualBox has extra @qq{guest additions} which can make the
-virtualization easier to use (full-screen, easy file sharing
-between host and guest operating systems, shared clipboards, etc).
+VirtualBox has extra @q{guest additions} which although are not
+necessary to use LilyDev or compile Lilypond, do provide some additional
+features to your Virtual Machine to make it easier to work with. Such
+as being able to dynamically resize the LilyDev window, allow seamless
+interaction with your mouse pointer on both the host and guest and let
+you copy/paste between your host and guest if needed.
@enumerate
@item
-In @emph{VirtualBox}, select @clicksequence{Devices @click{}
-Install Guest Additions...}.
+Select the @q{Devices} menu from the virtual machine window and choose
+@q{Install Guest Additions...}. This will automount a CD which will
+prompt you to autorun it. Click OK and follow the instructions. It is
+recommended to reboot the guest when the installation is complete.
-@item
-In @emph{Ubuntu}, select @clicksequence{Places @click{}
-VBOXADDITIONS_}. A file-system window will open.
+Other virtualization software will also have their own @q{guest}
+additions, follow the normal procedures for your virtualization software
+with Ubuntu as the client.
@item
-Double-click on the @file{autorun.sh} file, then select @qq{Run in
-Terminal}, and enter your password when prompted.
+Restart Ubuntu to complete the installation of the guest additions.
-@item
-Once the script is finished, @qq{eject} the virtual CD, and then
-go to @clicksequence{Devices @click{} CD/DVD Devices} and
-de-select @file{VBoxGuestAdditions.iso}.
+@advanced{If you do any kernel upgrades, you may need to reinstall
+the additional software. Just follow the step above again and reboot
+when the reinstallation is complete.}
-@item
-Restart Ubuntu to complete the installation.
-
-@advanced{If you do any kernel upgrades, you may need to re-run
-these VBOXADDITIONS instructions.}
@end enumerate
-Some other steps may be helpful:
+@noindent
+Other items that may be helpful:
@itemize
+
@item
In the settings for the virtual machine, set the network to
-Bridged mode to allow you to access shared folders on your Windows
-host.
+Bridged mode to allow you to access shared folders when using Windows
+hosts.
@item
Set up any additional features, such as @q{Shared Folders} between
-your main operating system and ubuntu. This is distinct from the
-networked share folders in Windows. Consult external
-documentation for this step.
+your main operating system and Ubuntu. This is distinct from the
+networked share folders in Windows. Consult the external
+documentation for this.
Some longtime contributors have reported that @q{shared folders}
are rarely useful and not worth the fuss, particularly since files
can be shared over a network instead.
-@end itemize
-
-
-@node Using lilydev
-@subsection Using lilydev
-
-If you are not familiar with Linux, it may be beneficial to read a
-couple of @qq{introduction to Ubuntu} webpages.
-
-@itemize
-@item
-One particular change from Windows and MacOS X is that most
-software should be installed with your @qq{package manager}; this
-vastly simplifies the process of installing and configuring
-software. Go to @clicksequence{Applications @click{} Ubuntu
-Software Center}.
-
-@item
-The rest of this manual assumes that you are using the
-command-line; double-click on the @q{Terminal} icon on the
-desktop.
-
@item
Pasting into a terminal is done with @code{Ctrl+Shift+v}.
using gedit.
@item
-Some contributors have recommended a free pdf:
-
-@example
-@uref{http://www.ubuntupocketguide.com/}
-@end example
+One particular change from Windows and MacOS X is that most
+software should be installed with your @qq{package manager}; this
+vastly simplifies the process of installing and configuring
+software. Go to @clicksequence{Applications @click{} Ubuntu
+Software Center}.
@end itemize
-@node Using lily-git
-@section Using lily-git
+@node lily-git
+@section lily-git
-@command{lily-git.tcl} is a graphical tool to help you access and
-share changes to the lilypond source code.
+The @q{LilyPond Contributor's Git Interface} (otherwise known as
+@command{lily-git.tcl}) is a simple-to-use GUI to help you download and
+update the LilyPond source code as well as an aid to making software
+patches.
@menu
-* Install and configuration of lily-git.tcl::
-* Daily use of lily-git.tcl::
+* Where to get lily-git::
+* Configuring lily-git and downloading the source code::
+* How to use lily-git::
@end menu
-@node Install and configuration of lily-git.tcl
-@unnumberedsubsec Install and configuration of @command{lily-git.tcl}
+@node Where to get lily-git
+@unnumberedsubsec Where to get lily-git
+
+Depending on your development environment, lily-git may already be
+installed on your computer.
+
+@itemize
+@item
+If you are using LilyDev (see @ref{LilyDev}) then lily-git is already
+installed and ready to run.
+
+@item
+For those not using LilyDev then lily-git can be obtained by downloading
+the software directly. See @ref{Manually installing lily-git.tcl}.
+
+@item
+Finally, lily-git is always part of the LilyPond source code and is
+located in @file{~/lilypond-git/scripts/auxillar/lily-git.tcl}.
+
+@end itemize
+
+
+@node Configuring lily-git and downloading the source code
+@unnumberedsubsec Configuring lily-git and downloading the source code
@warning{The rest of this manual assumes that you are using the
-command-line; double-click on the @q{Terminal} icon on the
-desktop.}
+command-line within a terminal.}
@enumerate
@item
lily-git.tcl
@end example
+@noindent
+You will be prompted to enter your name and your email address. This
+information is used only to identify and label any patches you create.
+This information can be edited if required later. See
+@ref{Configuring Git}. Click on the @emph{Submit} button to update
+lily-git with this information.
+
@item
Click on the @qq{Get source} button.
-This will create a directory called @file{lilypond-git/} within
-your home directory, and will download the source code into that
-directory (around 150@tie{}Mb). When the process is finished, the
-@qq{Command output} window will display @qq{Done}, and the button
-label will change to say @qq{Update source}.
+A directory called @file{lilypond-git/} is now created within
+your home directory and the complete source code will start to be
+downloaded into it.
+
+@warning{Be patient! The complete source is around 150@tie{}Mb.}
+
+@noindent
+When the source code has been downloaded, the @qq{Command output} window
+in lily-git will update and display @qq{Done} on the very last line.
+The button label will change to say @qq{Update source}.
-@warning{Some contributors have reported that nothing happens at
-this step. If this occurs, then try again in a few minutes -- we
-suspect that this is an intermittant network problem. If the
+@warning{Some contributors have reported that occasionally nothing
+happens at this step at all. If this occurs, then try again in a few
+minutes -- it could be an intermittant network problem. If the
problem persists, please ask for help.}
@item
-Navigate to the @file{lilypond-git/} directory to view the source
-files.
+Close the lily-git GUI and navigate to the @file{lilypond-git/}
+directory to view and edit the source files.
@end enumerate
-You should now progress to @ref{Compiling with lilydev}.
+@noindent
+If this is the first time you have compiled LilyPond then please go
+to @ref{Compiling with LilyDev} before reading on.
-@warning{Throughout the rest of this manual, most command-line
-input should be entered from @file{~/lilypond-git/}. This is
-referred to as the @emph{top source directory}.}
+@node How to use lily-git
+@unnumberedsubsec How to use lily-git
-@node Daily use of lily-git.tcl
-@unnumberedsubsec Daily use of @command{lily-git.tcl}
+@warning{Throughout the rest of this manual, most command-line
+input should be entered from @file{~/lilypond-git/}. This is
+known as the @emph{top source directory} and is often referred to as
+@var{$LILYPOND_GIT}}.
@warning{Only work on one set of changes at once. Do not start
work on any new changes until your first set has been accepted.}
-@node Compiling with lilydev
-@section Compiling with lilydev
+@node Compiling with LilyDev
+@section Compiling with LilyDev
-Lilydev is our @q{remix} of Ubuntu which contains all the
+LilyDev is our @q{remix} of Ubuntu which contains all the
necessary dependencies to do lilypond development; for more
-information, see @rcontrib{Lilydev}.
+information, see @rcontrib{LilyDev}.
@subsubheading Preparing the build
@subsubheading Installing
-Don't. There is no reason to install lilypond within lilydev.
+Don't. There is no reason to install lilypond within LilyDev.
All development work can (and should) stay within the
@file{$HOME/lilypond-git/} directory, and any personal composition
or typesetting work should be done with an official GUB release.
@node Now start work!
@section Now start work!
-Lilydev users may now skip to the chapter which is aimed at
+LilyDev users may now skip to the chapter which is aimed at
their intended contributions:
@itemize
@chapter Working with source code
@warning{New contributors should read @ref{Quick start}, and in
-particular @ref{Using lily-git}, instead of this chapter.}
+particular @ref{lily-git}, instead of this chapter.}
Advanced contributors will find this material quite useful,
particularly if they are working on major new features.
skip ahead to @ref{Starting with Git}.
@warning{These instructions are only for people who are @emph{not}
-using @ref{Lilydev}.}
+using @ref{LilyDev}.}
@c there's some duplication in this section with stuff covered in
@c Quick Start, but moving it into a macro inside included/ would
input should be entered from @file{~/lilypond-git/}. This is
referred to as the @emph{top source directory}.}
-Further instructions are in @ref{Daily use of lily-git.tcl}.
+Further instructions are in @ref{How to use lily-git}.
@node Starting with Git
@end example
Finally, and in some ways most importantly, let's make sure that
-we know what branch we're on. If you're not using lilydev, add
+we know what branch we're on. If you're not using LilyDev, add
this to your @file{~/.bashrc}:
@verbatim
export PS1="\u@\h \w\$(__git_ps1)$ "
@end verbatim
-If you are not using lilydev, you may need to install the
+If you are not using LilyDev, you may need to install the
additional @code{git-completion} package, but it is definitely
worth it.
Your prompt now shows you that you're on the other branch:
@example
-gperciva@@lilydev:~/lilypond-git (dev/cg)$
+gperciva@@LilyDev:~/lilypond-git (dev/cg)$
@end example
To be able to manage multiple lilypond issues at once, you'll need to switch
and @command{upload.py} scripts in one of your PATH
directories (such as @file{$HOME/bin}).
-In Ubuntu (and Lilydev), you can add directories to PATH
+In Ubuntu (and LilyDev), you can add directories to PATH
by adding this line to a hidden file @file{.bashrc},
located in your home directory:
@section Git on Windows
@warning{We heavily recommend that development be done with our
-virtual machine @ref{Lilydev}.}
+virtual machine @ref{LilyDev}.}
@c Some of this may duplicate stuff in other sections
@c But it is probably best for windows users to have it all together
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
\clef bass
\new Voice {
\voiceTwo \relative c' {
- <fis, a cis>8 <fis a cis>
+ <fis, a cis>8[ <fis a cis>
\change Staff = up
cis' cis
\change Staff = down
- <fis, a> <fis a>
+ <fis, a> <fis a>]
\showStaffSwitch
\change Staff = up
dis'4 |
"
doctitlees = "Modificar el tamaño de los diagramas de viento madera"
+%%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+
+ texidocde="
+Die Größe und Dicke der Holzbläserdiagramme kann geändert werden.
+"
%%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
doctitlede = "Größe von Holzbläserdiagrammen ändern"
-
%% Translation of GIT committish: 3b125956b08d27ef39cd48bfa3a2f1e1bb2ae8b4
texidocfr = "
La taille et l'épaisseur des diagrammes de doigté pour bois est modifiable
"
doctitlees = "Objeto personalizado de extensión de texto de matices dinámicos postfijo"
-
%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
"
doctitlees = "Objetos extensores de texto postfijos para dinámica"
-
%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
"
doctitlees = "Dar formato a sÃlabas de la letra"
-
%%% Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422
texidocde = "
Textbeschriftungsmodus kann eingesetzt werden, um individuelle Silben im Gesangstext
"
doctitlede = "Silben im Gesangstext formatieren"
-
%% Translation of GIT committish: d9d1da30361a0bcaea1ae058eb1bc8dd3a5b2e4c
texidocfr = "
Le mode markup permet d'individualiser la mise en forme de certaines syllabes.
"
doctitlees = "Diagramas para viento madera gráficos y textuales"
+%%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+
+ texidocde="
+In vielen Fällen können die nicht in der mittleren Reihe befindlichen
+Löcher dargestellt werden, indem man die Lochbezeichnung oder
+graphische Zeichen benutzt.
+
+"
%%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
doctitlede = "Graphische und Text-Holzbläserdiagramme"
-
%% Translation of GIT committish: 496c48f1f2e4d345ae3637b2c38ec748a55cda1d
texidocfr = "
Dans certains cas, vous pouvez opter pour l'affichage textuel d'une clé
"
doctitleit = "Modello per inno"
-
%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
texidocde = "
--- /dev/null
+\version "2.15.35"
+
+\header {
+ lsrtags = "staff-notation, tweaks-and-overrides, contexts-and-engravers"
+ texidoc = "This file defines and demonstrates a scheme engraver that
+connects stems across staves. The stem length need not be specified, as
+the code takes care of the variable distance between noteheads and staves."
+ doctitle = "Stem cross staff engraver"
+}
+
+%{
+ A new stem (referred to as span in the code) is created to connect the
+ original stems. The original stems are made transparent.
+
+ The span is created as a child of the "root" stem, that is the stem
+ connected to a notehead with the end that is not to be extended.
+
+ Both stem directions are supported. Connecting more than two stems is
+ possible.
+%}
+
+% Values are close enough to ignore the difference
+#(define (close-enough? x y)
+ (< (abs (- x y)) 0.0001))
+
+% Combine a list of extents
+#(define (extent-combine extents)
+ (if (pair? (cdr extents))
+ (interval-union (car extents) (extent-combine (cdr extents)))
+ (car extents)))
+
+% Check if the stem is connectable to the root
+#(define ((stem-connectable? ref root) stem)
+ ; The root is always connectable to itself
+ (or (eq? root stem)
+ (and
+ ; Horizontal positions of the stems must be almost the same
+ (close-enough? (car (ly:grob-extent root ref X))
+ (car (ly:grob-extent stem ref X)))
+ ; The stem must be in the direction away from the root's notehead
+ (positive? (* (ly:grob-property root 'direction)
+ (- (car (ly:grob-extent stem ref Y))
+ (car (ly:grob-extent root ref Y))))))))
+
+% Connect stems if we have at least one stems connectable to the root
+#(define (stem-span-stencil span)
+ (let* ((system (ly:grob-system span))
+ (root (ly:grob-parent span X))
+ (stems (filter (stem-connectable? system root)
+ (ly:grob-object span 'stems))))
+ (if (<= 2 (length stems))
+ (let* ((yextents (map (lambda (st)
+ (ly:grob-extent st system Y)) stems))
+ (yextent (extent-combine yextents))
+ (layout (ly:grob-layout root))
+ (blot (ly:output-def-lookup layout 'blot-diameter)))
+ ; Hide spanned stems
+ (map (lambda (st)
+ (set! (ly:grob-property st 'transparent) #t))
+ stems)
+ ; Draw a nice looking stem with rounded corners
+ (ly:round-filled-box (ly:grob-extent root root X) yextent blot))
+ ; Nothing to connect, don't draw the span
+ #f)))
+
+% Create a stem span as a child of the cross-staff stem (the root)
+#(define ((make-stem-span! stems trans) root)
+ (let ((span (ly:engraver-make-grob trans 'Stem '())))
+ (ly:grob-set-parent! span X root)
+ (set! (ly:grob-object span 'stems) stems)
+ ; Suppress positioning, the stem code is confused by this weird stem
+ (set! (ly:grob-property span 'X-offset) 0)
+ (set! (ly:grob-property span 'stencil) stem-span-stencil)))
+
+% Set cross-staff property of the stem to this function to connect it to
+% other stems automatically
+#(define (cross-staff-connect stem)
+ #t)
+
+% Check if automatic connecting of the stem was requested. Stems connected
+% to cross-staff beams are cross-staff, but they should not be connected to
+% other stems just because of that.
+#(define (stem-is-root? stem)
+ (eq? cross-staff-connect (ly:grob-property-data stem 'cross-staff)))
+
+% Create stem spans for cross-staff stems
+#(define (make-stem-spans! ctx stems trans)
+ ; Cannot do extensive checks here, just make sure there are at least
+ ; two stems at this musical moment
+ (if (<= 2 (length stems))
+ (let ((roots (filter stem-is-root? stems)))
+ (map (make-stem-span! stems trans) roots))))
+
+% Connect cross-staff stems to the stems above in the system
+#(define (Span_stem_engraver ctx)
+ (let ((stems '()))
+ (make-engraver
+ ; Record all stems for the given moment
+ (acknowledgers
+ ((stem-interface trans grob source)
+ (set! stems (cons grob stems))))
+ ; Process stems and reset the stem list to empty
+ ((process-acknowledged trans)
+ (make-stem-spans! ctx stems trans)
+ (set! stems '())))))
+
+crossStaff =
+#(define-music-function (parser location notes) (ly:music?) #{
+ \override Stem #'cross-staff = #cross-staff-connect
+ $notes
+ \revert Stem #'cross-staff
+#})
+
+\layout {
+ \context {
+ \StaffGroup
+ \consists #Span_stem_engraver
+ }
+}
+
+\parallelMusic #'(voiceA voiceB voiceC) {
+ % Bar 1 - durations, beams, flags
+ g'2 g'4 g'8 [ g'16 ] g'16 |
+ \crossStaff { c'2 c'4 c'8 [ c'16 ] c'16 } |
+ R1 |
+
+ % Bar 2 - direction
+ g'8 \stemDown g'8 \crossStaff g'8 \stemNeutral g'8 g'4 r4 |
+ \crossStaff { c'8 \stemDown c'8 } c'8 \stemNeutral c'8 r4 r4 |
+ c8 \stemDown c8 c8 \stemNeutral \crossStaff { c8 c4 c4 } |
+
+ % Bar 3 - multiple voice styles
+ << c''2 \\ \crossStaff d'2 \\ a'2 \\ \crossStaff f'2 >> g'2 |
+ << b'2 \\ c'2 \\ g'2 \\ e'2 >> << e'2 \\ \\ \crossStaff c'2 >> |
+ << \crossStaff b2 \\ c2 \\ \crossStaff g2 \\ e2 >> r2 |
+
+ % Bar 4 - grace notes
+ \grace g'8 a'2 \stemDown \crossStaff { \grace g'8 a'2 } \stemNeutral |
+ \grace c'8 d'2 \stemDown \grace c'8 d'2 \stemNeutral |
+ \crossStaff { \grace c8 d2 } \stemDown \grace c8 d2 \stemNeutral |
+
+ % Bar 5 - cross-staff beams
+ g'8 g'8 g'8 g'8 r2 |
+ s1 |
+ \crossStaff { c8 [ \change Staff=stafftwo c''8 ] }
+ \change Staff=staffthree c8 [ \change Staff=stafftwo c''8 ] r2 |
+}
+
+\score {
+ \new StaffGroup <<
+ \new Staff = "staffone" <<
+ \new Voice {
+ \autoBeamOff \voiceA
+ }
+ >>
+ \new Staff = "stafftwo" <<
+ \new Voice {
+ \autoBeamOff \voiceB
+ }
+ >>
+ \new Staff = "staffthree" <<
+ \new Voice {
+ \autoBeamOff \clef bass \voiceC
+ }
+ >>
+ >>
+ \layout { }
+}
"
doctitlees = "Partcombine y autoBeamOff"
-
%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
texidocde = "
"
doctitlede = "Partcombine und autoBeamOff"
-
%% Translation of GIT committish: 3b125956b08d27ef39cd48bfa3a2f1e1bb2ae8b4
texidocfr = "
La fonction @code{\\autoBeamOff} dans le cadre d'un
--- /dev/null
+% DO NOT EDIT this file manually; it is automatically
+% generated from Documentation/snippets/new
+% Make any changes in Documentation/snippets/new/
+% and then run scripts/auxiliar/makelsr.py
+%
+% This file is in the public domain.
+%% Note: this file works from version 2.15.35
+\version "2.15.35"
+
+\header {
+ lsrtags = "staff-notation, tweaks-and-overrides, contexts-and-engravers"
+ texidoc = "This file defines and demonstrates a scheme engraver that
+connects stems across staves. The stem length need not be specified, as
+the code takes care of the variable distance between noteheads and staves."
+ doctitle = "Stem cross staff engraver"
+} % begin verbatim
+
+
+%{
+ A new stem (referred to as span in the code) is created to connect the
+ original stems. The original stems are made transparent.
+
+ The span is created as a child of the "root" stem, that is the stem
+ connected to a notehead with the end that is not to be extended.
+
+ Both stem directions are supported. Connecting more than two stems is
+ possible.
+%}
+
+% Values are close enough to ignore the difference
+#(define (close-enough? x y)
+ (< (abs (- x y)) 0.0001))
+
+% Combine a list of extents
+#(define (extent-combine extents)
+ (if (pair? (cdr extents))
+ (interval-union (car extents) (extent-combine (cdr extents)))
+ (car extents)))
+
+% Check if the stem is connectable to the root
+#(define ((stem-connectable? ref root) stem)
+ ; The root is always connectable to itself
+ (or (eq? root stem)
+ (and
+ ; Horizontal positions of the stems must be almost the same
+ (close-enough? (car (ly:grob-extent root ref X))
+ (car (ly:grob-extent stem ref X)))
+ ; The stem must be in the direction away from the root's notehead
+ (positive? (* (ly:grob-property root 'direction)
+ (- (car (ly:grob-extent stem ref Y))
+ (car (ly:grob-extent root ref Y))))))))
+
+% Connect stems if we have at least one stems connectable to the root
+#(define (stem-span-stencil span)
+ (let* ((system (ly:grob-system span))
+ (root (ly:grob-parent span X))
+ (stems (filter (stem-connectable? system root)
+ (ly:grob-object span 'stems))))
+ (if (<= 2 (length stems))
+ (let* ((yextents (map (lambda (st)
+ (ly:grob-extent st system Y)) stems))
+ (yextent (extent-combine yextents))
+ (layout (ly:grob-layout root))
+ (blot (ly:output-def-lookup layout 'blot-diameter)))
+ ; Hide spanned stems
+ (map (lambda (st)
+ (set! (ly:grob-property st 'transparent) #t))
+ stems)
+ ; Draw a nice looking stem with rounded corners
+ (ly:round-filled-box (ly:grob-extent root root X) yextent blot))
+ ; Nothing to connect, don't draw the span
+ #f)))
+
+% Create a stem span as a child of the cross-staff stem (the root)
+#(define ((make-stem-span! stems trans) root)
+ (let ((span (ly:engraver-make-grob trans 'Stem '())))
+ (ly:grob-set-parent! span X root)
+ (set! (ly:grob-object span 'stems) stems)
+ ; Suppress positioning, the stem code is confused by this weird stem
+ (set! (ly:grob-property span 'X-offset) 0)
+ (set! (ly:grob-property span 'stencil) stem-span-stencil)))
+
+% Set cross-staff property of the stem to this function to connect it to
+% other stems automatically
+#(define (cross-staff-connect stem)
+ #t)
+
+% Check if automatic connecting of the stem was requested. Stems connected
+% to cross-staff beams are cross-staff, but they should not be connected to
+% other stems just because of that.
+#(define (stem-is-root? stem)
+ (eq? cross-staff-connect (ly:grob-property-data stem 'cross-staff)))
+
+% Create stem spans for cross-staff stems
+#(define (make-stem-spans! ctx stems trans)
+ ; Cannot do extensive checks here, just make sure there are at least
+ ; two stems at this musical moment
+ (if (<= 2 (length stems))
+ (let ((roots (filter stem-is-root? stems)))
+ (map (make-stem-span! stems trans) roots))))
+
+% Connect cross-staff stems to the stems above in the system
+#(define (Span_stem_engraver ctx)
+ (let ((stems '()))
+ (make-engraver
+ ; Record all stems for the given moment
+ (acknowledgers
+ ((stem-interface trans grob source)
+ (set! stems (cons grob stems))))
+ ; Process stems and reset the stem list to empty
+ ((process-acknowledged trans)
+ (make-stem-spans! ctx stems trans)
+ (set! stems '())))))
+
+crossStaff =
+#(define-music-function (parser location notes) (ly:music?) #{
+ \override Stem #'cross-staff = #cross-staff-connect
+ $notes
+ \revert Stem #'cross-staff
+#})
+
+\layout {
+ \context {
+ \StaffGroup
+ \consists #Span_stem_engraver
+ }
+}
+
+\parallelMusic #'(voiceA voiceB voiceC) {
+ % Bar 1 - durations, beams, flags
+ g'2 g'4 g'8 [ g'16 ] g'16 |
+ \crossStaff { c'2 c'4 c'8 [ c'16 ] c'16 } |
+ R1 |
+
+ % Bar 2 - direction
+ g'8 \stemDown g'8 \crossStaff g'8 \stemNeutral g'8 g'4 r4 |
+ \crossStaff { c'8 \stemDown c'8 } c'8 \stemNeutral c'8 r4 r4 |
+ c8 \stemDown c8 c8 \stemNeutral \crossStaff { c8 c4 c4 } |
+
+ % Bar 3 - multiple voice styles
+ << c''2 \\ \crossStaff d'2 \\ a'2 \\ \crossStaff f'2 >> g'2 |
+ << b'2 \\ c'2 \\ g'2 \\ e'2 >> << e'2 \\ \\ \crossStaff c'2 >> |
+ << \crossStaff b2 \\ c2 \\ \crossStaff g2 \\ e2 >> r2 |
+
+ % Bar 4 - grace notes
+ \grace g'8 a'2 \stemDown \crossStaff { \grace g'8 a'2 } \stemNeutral |
+ \grace c'8 d'2 \stemDown \grace c'8 d'2 \stemNeutral |
+ \crossStaff { \grace c8 d2 } \stemDown \grace c8 d2 \stemNeutral |
+
+ % Bar 5 - cross-staff beams
+ g'8 g'8 g'8 g'8 r2 |
+ s1 |
+ \crossStaff { c8 [ \change Staff=stafftwo c''8 ] }
+ \change Staff=staffthree c8 [ \change Staff=stafftwo c''8 ] r2 |
+}
+
+\score {
+ \new StaffGroup <<
+ \new Staff = "staffone" <<
+ \new Voice {
+ \autoBeamOff \voiceA
+ }
+ >>
+ \new Staff = "stafftwo" <<
+ \new Voice {
+ \autoBeamOff \voiceB
+ }
+ >>
+ \new Staff = "staffthree" <<
+ \new Voice {
+ \autoBeamOff \clef bass \voiceC
+ }
+ >>
+ >>
+ \layout { }
+}
"
doctitlees = "Listado de los diagramas para viento madera"
+%%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+
+
+ texidocde="
+Folgende Noten zeige alle Holzbläserdiagramme, die für LilyPond
+definiert sind.
+"
%%% Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
"
doctitlede = "Liste der Holzbläserdiagramme"
-
%% Translation of GIT committish: 496c48f1f2e4d345ae3637b2c38ec748a55cda1d
texidocfr = "
Voici la liste des différents instruments à vent de la section des bois
@itemize
@item
-@emph{Affaire étrangère}, an opera by
-@uref{http://valentin.villenave.net/,Valentin Villenave}
-to a French libretto by
-@uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis
-Trondheim}, premiered February 1, 2009 at
-@uref{http://www.orchestre-montpellier.com/, L'Opéra National de
-Montpellier}, France.
+Mussorgsky's @emph{Pictures at an exhibition}, re-orchestrated and
+conducted by @uref{http://www.aurelienbello.com/,Aurélien Bello} with
+the @uref{http://www.junge-philharmonie-brandenburg.de/,
+Junge Philharmonie Brandenburg}
+on Oct 10 2011 and again on Apr 15-16 2012.
+
+@item
+@uref{http://www.kierenmacmillan.info/, Kieren MacMillan}, composer and
+musical director. His many, recent works include; @emph{Go Thy Way},
+performed by the @uref{http://www.saltlakechoralartists.org/,
+Salt Lake Choral Artists} in March 2012; The
+@emph{Just Out of Reach Suite} performed
+by the
+@uref{http://www.herald-dispatch.com/news/marshall/x1883873762/Music-duo-Chrysalis-to-perform-at-Marshall-University-on-Jan-19,
+Chrysalis Duo} ; @emph{thrafsmata} performed in July 2011 by the
+@uref{http://www.pnme.org/CurrentSeason/PreviousSeasons.html, Pittsburgh
+New Music Ensemble}.
+
+
+@item
+@emph{Anonymous Student Compliment or Complaint}, by
+@uref{http://www.mikesolomon.org, Mike Solomon}, winner chosen from among
+172 entries from 22 countries of the
+@uref{http://leftcoastensemble.org/contest, 2011 Left Coast Composition Contest}.
+Other works include, Norman (age 1) for clarinet solo, performed at the
+@uref{emu.music.ufl.edu/fems_concerts.html, University of Florida}'s
+Electroacoustic Music Festival (FEMF), October 2010.
+
+@item
+A modern edition of the @emph{Serenata Erminia} by Alessandro Scarlatti,
+edited by Thomas Griffin, Musicologist (Rome, Italy). Performed on 22
+October 2010 in the Galleria of the Palazzo Zevallos Stigliano, Naples,
+Italy. @uref{http://www.ascarlatti2010.net, Alessandro Scarlatti 2010},
+in celebration of the composer's 350th birthday.
@item
@uref{http://www.mercurybaroque.org/02/02109.aspx, Mercury Baroque}'s
New York} (engraving by Nicolas Sceaux).
@item
-Mussorgsky's @emph{Pictures at an exhibition}, re-orchestrated and
-conducted by @uref{http://www.aurelienbello.com/,Aurélien Bello} with
-the @uref{http://www.junge-philharmonie-brandenburg.de/,Junge Philharmonie Brandenburg}
-on Oct 10 2011 and again on Apr 15-16 2012.
+@emph{Affaire étrangère}, an opera by
+@uref{http://valentin.villenave.net/,Valentin Villenave}
+to a French libretto by
+@uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis
+Trondheim}, premiered February 1, 2009 at
+@uref{http://www.orchestre-montpellier.com/, L'Opéra National de
+Montpellier}, France.
@end itemize
@divEnd
@c used for news about the upcoming release; see CG 10.2
+@newsItem
+@subsubheading Release candidate 5 of 2.16 - LilyPond 2.15.37 released! @emph{April 19, 2012}
+
+LilyPond 2.15.37 is out; this is the fifth release candidate of
+the upcoming 2.16 stable release. All users are invited to
+experiment with this version. New features since 2.14.2 are
+listed in the @qq{Changes} manual on the website section about
+@ref{Development}.
+
+There are no known Critical issues with this release. If no
+Critical bugs are found, then the official 2.16.0 release will be
+on 03 May 2012. If you discover any problems, please send us
+@ref{Bug reports}.
+
+@newsEnd
+
+
@newsItem
@subsubheading Release candidate 4 of 2.16 - LilyPond 2.15.36 released! @emph{April 6, 2012}
PACKAGE_NAME=LilyPond
MAJOR_VERSION=2
MINOR_VERSION=15
-PATCH_LEVEL=37
+PATCH_LEVEL=38
MY_PATCH_LEVEL=
VERSION_STABLE=2.14.2
-VERSION_DEVEL=2.15.36
+VERSION_DEVEL=2.15.37
else if (str == "'")
m = tick_bar_line (me, extent.at (UP), rounded);
else if (str == "kievan")
+ {
+ me->set_property ("layer", scm_from_int (1));
m.add_stencil (Font_interface::get_default_font (me)->find_by_name ("scripts.barline.kievan"));
+ m = *unsmob_stencil (scm_call_1 (ly_lily_module_constant ("stencil-whiteout"), m.smobbed_copy ()));
+ }
return m;
}
if (Music *m = unsmob_music (val))
m->transpose (delta);
}
- else if (prop == ly_symbol2scm ("elements"))
+ else if (prop == ly_symbol2scm ("elements")
+ || prop == ly_symbol2scm ("articulations"))
transpose_music_list (val, delta);
else if (prop == ly_symbol2scm ("pitch-alist")
&& scm_is_pair (val))
scm_gc_mark (first_iter_->self_scm ());
if (second_iter_)
scm_gc_mark (second_iter_->self_scm ());
-
- Stream_event *ptrs[]
- =
- {
- unisono_event_,
- mmrest_event_,
- solo_two_event_,
- solo_one_event_,
- 0
- };
- for (int i = 0; ptrs[i]; i++)
- if (ptrs[i])
- scm_gc_mark (ptrs[i]->self_scm ());
+ if (unisono_event_)
+ scm_gc_mark (unisono_event_->self_scm ());
+ if (mmrest_event_)
+ scm_gc_mark (mmrest_event_->self_scm ());
+ if (solo_one_event_)
+ scm_gc_mark (solo_one_event_->self_scm ());
+ if (solo_two_event_)
+ scm_gc_mark (solo_two_event_->self_scm ());
}
void
save hair_thickness, thick_thickness, width, depth, height, padding;
hair# = 1.9 linethickness#;
thick# = 6.0 linethickness#;
- width = .8 staff_space;
+ width# = 1.0 staff_space#;
height# + depth# = 4 staff_space#;
- depth# = height# + hair# / 2;
- padding = .2 staff_space;
+ depth# = height# + hair#;
+ padding# = .2 staff_space#;
- set_char_box (0, 0, depth#, height#);
- define_pixels (hair, thick);
+ set_char_box (0, width# + 3 padding#, depth#, height# + staff_space#);
+ define_pixels (hair, thick, width, padding, depth, height);
- x1r - x2l = width;
- y1 - y3r = d + h + linethickness / 2;
+ x7r - x2l = width;
+ y1 - y3r = depth + height + linethickness / 2;
z3 = z2;
z4 = .5 [z1, z2]
= (width / 2 + padding, hair / 8);
# Translation of LilyPond.
# Copyright (C) 1998--2012 Han-Wen Nienhuys, Jan Nieuwenhuizen
# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
+#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: 2.15.28\n"
+"Project-Id-Version: 2.15.37\n"
"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2012-02-04 15:42+0100\n"
+"POT-Creation-Date: 2012-04-19 20:35+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"If the given filename is -, musicxml2ly reads from the command line.\n"
msgstr ""
-#: musicxml2ly.py:2570 midi2ly.py:1060 abc2ly.py:1387 lilypond-book.py:141
+#: musicxml2ly.py:2570 midi2ly.py:1062 abc2ly.py:1388 lilypond-book.py:140
#: convert-ly.py:92 etf2ly.py:1204 main.cc:153
msgid "show this help and exit"
msgstr ""
" Reinhold Kainhofer <reinhold@kainhofer.com>\n"
msgstr ""
-#: musicxml2ly.py:2588 midi2ly.py:1091 abc2ly.py:1383 lilypond-book.py:232
+#: musicxml2ly.py:2588 midi2ly.py:1095 abc2ly.py:1385 lilypond-book.py:231
#: convert-ly.py:88 etf2ly.py:1208 main.cc:174
msgid "show version number and exit"
msgstr ""
-#: musicxml2ly.py:2594 midi2ly.py:1085 lilypond-book.py:224
+#: musicxml2ly.py:2594 midi2ly.py:1090 lilypond-book.py:223
msgid "be verbose"
msgstr ""
msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German"
msgstr ""
-#: musicxml2ly.py:2625 lilypond-book.py:180 convert-ly.py:105
+#: musicxml2ly.py:2625 lilypond-book.py:179 convert-ly.py:105
msgid ""
"Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS "
"(default), DEBUG)"
msgstr ""
-#: musicxml2ly.py:2627 lilypond-book.py:164 lilypond-book.py:182
+#: musicxml2ly.py:2627 lilypond-book.py:163 lilypond-book.py:181
#: convert-ly.py:107 main.cc:167
msgid "LOGLEVEL"
msgstr ""
"do not convert beaming information, use lilypond's automatic beaming instead"
msgstr ""
-#: musicxml2ly.py:2657 midi2ly.py:1065 midi2ly.py:1070 etf2ly.py:1210
+#: musicxml2ly.py:2657 midi2ly.py:1067 midi2ly.py:1072 etf2ly.py:1210
#: main.cc:159 main.cc:171
msgid "FILE"
msgstr ""
#. "Report bugs in English via %s",
#. or if there is a LilyPond users list or forum in your language
#. "Report bugs in English via %s or in YOUR_LANG via URI"
-#: musicxml2ly.py:2672 midi2ly.py:1104 abc2ly.py:1396 lilypond-book.py:259
+#: musicxml2ly.py:2672 midi2ly.py:1107 abc2ly.py:1403 lilypond-book.py:258
#: convert-ly.py:146 etf2ly.py:1218 main.cc:285
#, c-format, python-format
msgid "Report bugs via %s"
msgid "Unable to find input file %s"
msgstr ""
-#: midi2ly.py:81 lilypond-book.py:116 convert-ly.py:75 etf2ly.py:1191
+#: midi2ly.py:81 lilypond-book.py:115 convert-ly.py:75 etf2ly.py:1191
#, python-format
msgid "Copyright (c) %s by"
msgstr ""
-#: midi2ly.py:83 lilypond-book.py:118 convert-ly.py:77 etf2ly.py:1193
+#: midi2ly.py:83 lilypond-book.py:117 convert-ly.py:77 etf2ly.py:1193
msgid "Distributed under terms of the GNU General Public License."
msgstr ""
-#: midi2ly.py:84 lilypond-book.py:119 convert-ly.py:78 etf2ly.py:1194
+#: midi2ly.py:84 lilypond-book.py:118 convert-ly.py:78 etf2ly.py:1194
msgid "It comes with NO WARRANTY."
msgstr ""
msgid "warning: "
msgstr ""
-#: midi2ly.py:93 midi2ly.py:1121
+#: midi2ly.py:93 midi2ly.py:1124
msgid "error: "
msgstr ""
msgid "Exiting... "
msgstr ""
-#: midi2ly.py:834
+#: midi2ly.py:835
msgid "found more than 5 voices on a staff, expect bad output"
msgstr ""
-#: midi2ly.py:1030
+#: midi2ly.py:1032
#, python-format
msgid "%s output to `%s'..."
msgstr ""
-#: midi2ly.py:1042 abc2ly.py:1374 lilypond-book.py:123 convert-ly.py:81
+#: midi2ly.py:1044 abc2ly.py:1376 lilypond-book.py:122 convert-ly.py:81
#, python-format
msgid "%s [OPTION]... FILE"
msgstr ""
-#: midi2ly.py:1043
+#: midi2ly.py:1045
#, python-format
msgid "Convert %s to LilyPond input.\n"
msgstr ""
-#: midi2ly.py:1048
+#: midi2ly.py:1050
msgid "print absolute pitches"
msgstr ""
-#: midi2ly.py:1050 midi2ly.py:1075
+#: midi2ly.py:1052 midi2ly.py:1080
msgid "DUR"
msgstr ""
-#: midi2ly.py:1051
+#: midi2ly.py:1053
msgid "quantise note durations on DUR"
msgstr ""
-#: midi2ly.py:1054
+#: midi2ly.py:1056
msgid "debug printing"
msgstr ""
-#: midi2ly.py:1057
+#: midi2ly.py:1059
msgid "print explicit durations"
msgstr ""
-#: midi2ly.py:1062
+#: midi2ly.py:1064
msgid "prepend FILE to output"
msgstr ""
-#: midi2ly.py:1066
+#: midi2ly.py:1068
msgid "set key: ALT=+sharps|-flats; MINOR=1"
msgstr ""
-#: midi2ly.py:1067
+#: midi2ly.py:1069
msgid "ALT[:MINOR]"
msgstr ""
-#: midi2ly.py:1069 abc2ly.py:1389 etf2ly.py:1209
+#: midi2ly.py:1071 abc2ly.py:1391 etf2ly.py:1209
msgid "write output to FILE"
msgstr ""
-#: midi2ly.py:1072
+#: midi2ly.py:1074
msgid "preview of first 4 bars"
msgstr ""
-#: midi2ly.py:1074
+#: midi2ly.py:1078
+msgid "suppress progress messages and warnings about excess voices"
+msgstr ""
+
+#: midi2ly.py:1079
msgid "quantise note starts on DUR"
msgstr ""
-#: midi2ly.py:1078
+#: midi2ly.py:1083
msgid "use s instead of r for rests"
msgstr ""
-#: midi2ly.py:1080
+#: midi2ly.py:1085
msgid "DUR*NUM/DEN"
msgstr ""
-#: midi2ly.py:1083
+#: midi2ly.py:1088
msgid "allow tuplet durations DUR*NUM/DEN"
msgstr ""
-#: midi2ly.py:1092 lilypond-book.py:235 convert-ly.py:141 etf2ly.py:1212
+#: midi2ly.py:1096 lilypond-book.py:234 convert-ly.py:141 etf2ly.py:1212
#: main.cc:176
msgid "show warranty and copyright"
msgstr ""
-#: midi2ly.py:1095
+#: midi2ly.py:1098
msgid "treat every text as a lyric"
msgstr ""
-#: midi2ly.py:1098
+#: midi2ly.py:1101
msgid "Examples"
msgstr ""
-#: midi2ly.py:1122
+#: midi2ly.py:1125
msgid "no files specified on command line."
msgstr ""
-#: abc2ly.py:1375
+#: abc2ly.py:1377
#, python-format
msgid ""
"abc2ly converts ABC music files (see\n"
"%s) to LilyPond input.\n"
msgstr ""
-#: abc2ly.py:1391
+#: abc2ly.py:1394
msgid "be strict about success"
msgstr ""
-#: abc2ly.py:1393
+#: abc2ly.py:1397
msgid "preserve ABC's notion of beams"
msgstr ""
+#: abc2ly.py:1400
+msgid "suppress progress messages"
+msgstr ""
+
#: lilypond-book.py:80
msgid ""
"Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
msgid "Exiting (%d)..."
msgstr ""
-#: lilypond-book.py:128
+#: lilypond-book.py:127
msgid "FILTER"
msgstr ""
-#: lilypond-book.py:131
+#: lilypond-book.py:130
msgid "pipe snippets through FILTER [default: `convert-ly -n -']"
msgstr ""
-#: lilypond-book.py:135
+#: lilypond-book.py:134
msgid ""
"use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
msgstr ""
-#: lilypond-book.py:136
+#: lilypond-book.py:135
msgid "FORMAT"
msgstr ""
-#: lilypond-book.py:143
+#: lilypond-book.py:142
msgid "add DIR to include path"
msgstr ""
-#: lilypond-book.py:144 lilypond-book.py:151 lilypond-book.py:170
-#: lilypond-book.py:188 lilypond-book.py:209 lilypond-book.py:215 main.cc:158
+#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:169
+#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:158
msgid "DIR"
msgstr ""
-#: lilypond-book.py:149
+#: lilypond-book.py:148
msgid "format Texinfo output so that Info will look for images of music in DIR"
msgstr ""
-#: lilypond-book.py:156
+#: lilypond-book.py:155
msgid "PAD"
msgstr ""
-#: lilypond-book.py:158
+#: lilypond-book.py:157
msgid ""
"pad left side of music to align music inspite of uneven bar numbers (in mm)"
msgstr ""
-#: lilypond-book.py:163
+#: lilypond-book.py:162
msgid "Print lilypond log messages according to LOGLEVEL"
msgstr ""
-#: lilypond-book.py:169
+#: lilypond-book.py:168
msgid "write lily-XXX files to DIR, link into --output dir"
msgstr ""
-#: lilypond-book.py:174
+#: lilypond-book.py:173
msgid ""
"Load the additional python PACKAGE (containing e.g. a custom output format)"
msgstr ""
-#: lilypond-book.py:175
+#: lilypond-book.py:174
msgid "PACKAGE"
msgstr ""
-#: lilypond-book.py:187
+#: lilypond-book.py:186
msgid "write output to DIR"
msgstr ""
-#: lilypond-book.py:192
+#: lilypond-book.py:191
msgid "COMMAND"
msgstr ""
-#: lilypond-book.py:193
+#: lilypond-book.py:192
msgid "process ly_files using COMMAND FILE..."
msgstr ""
-#: lilypond-book.py:198
+#: lilypond-book.py:197
msgid "Redirect the lilypond output"
msgstr ""
-#: lilypond-book.py:202
+#: lilypond-book.py:201
msgid "Compile snippets in safe mode"
msgstr ""
-#: lilypond-book.py:208
+#: lilypond-book.py:207
msgid "do not fail if no lilypond output is found"
msgstr ""
-#: lilypond-book.py:214
+#: lilypond-book.py:213
msgid "do not fail if no PNG images are found for EPS files"
msgstr ""
-#: lilypond-book.py:220
+#: lilypond-book.py:219
msgid "write snippet output files with the same base name as their source file"
msgstr ""
-#: lilypond-book.py:240
+#: lilypond-book.py:239
msgid ""
"run executable PROG instead of latex, or in\n"
"case --pdf option is set instead of pdflatex"
msgstr ""
-#: lilypond-book.py:242 lilypond-book.py:247
+#: lilypond-book.py:241 lilypond-book.py:246
msgid "PROG"
msgstr ""
-#: lilypond-book.py:246
+#: lilypond-book.py:245
msgid "run executable PROG instead of texi2pdf"
msgstr ""
-#: lilypond-book.py:253
+#: lilypond-book.py:252
msgid "create PDF files for use with PDFTeX"
msgstr ""
-#: lilypond-book.py:456
+#: lilypond-book.py:455
msgid "Writing snippets..."
msgstr ""
-#: lilypond-book.py:461
+#: lilypond-book.py:460
msgid "Processing..."
msgstr ""
-#: lilypond-book.py:466
+#: lilypond-book.py:465
msgid "All snippets are up to date..."
msgstr ""
-#: lilypond-book.py:485
+#: lilypond-book.py:484
#, python-format
msgid "cannot determine format for: %s"
msgstr ""
-#: lilypond-book.py:494
+#: lilypond-book.py:493
#, python-format
msgid "%s is up to date."
msgstr ""
-#: lilypond-book.py:507
+#: lilypond-book.py:506
#, python-format
msgid "Writing `%s'..."
msgstr ""
-#: lilypond-book.py:568
+#: lilypond-book.py:567
msgid "Output would overwrite input file; use --output."
msgstr ""
-#: lilypond-book.py:572
+#: lilypond-book.py:571
#, python-format
msgid "Reading %s..."
msgstr ""
-#: lilypond-book.py:579
+#: lilypond-book.py:578
msgid "Dissecting..."
msgstr ""
-#: lilypond-book.py:590
+#: lilypond-book.py:589
#, python-format
msgid "Compiling %s..."
msgstr ""
-#: lilypond-book.py:598
+#: lilypond-book.py:597
#, python-format
msgid "Processing include: %s"
msgstr ""
-#: lilypond-book.py:609
+#: lilypond-book.py:608
#, python-format
msgid "Removing `%s'"
msgstr ""
-#: lilypond-book.py:676
+#: lilypond-book.py:699
#, python-format
msgid "Setting LilyPond's loglevel to %s"
msgstr ""
-#: lilypond-book.py:680
+#: lilypond-book.py:703
#, python-format
msgid ""
"Setting LilyPond's loglevel to %s (from environment variable "
"LILYPOND_LOGLEVEL)"
msgstr ""
-#: lilypond-book.py:683
+#: lilypond-book.py:706
msgid ""
"Setting LilyPond's output to --verbose, implied by lilypond-book's setting"
msgstr ""
msgid "Other languages"
msgstr ""
+#: website_post.py:127
+#, python-format
+msgid "About <a href=\"%s\">automatic language selection</a>."
+msgstr ""
+
#: warn.cc:56
#, c-format
msgid "Log level set to %d\n"
msgid "invalid argument `%s' to option `%s'"
msgstr ""
-#: flag.cc:110
+#: flag.cc:113
#, c-format
msgid "flag `%s' not found"
msgstr ""
-#: flag.cc:130
+#: flag.cc:133
#, c-format
msgid "flag stroke `%s' not found"
msgstr ""
msgid "cannot find or create: `%s'"
msgstr ""
-#: dispatcher.cc:82
+#: dispatcher.cc:83
msgid "Event class should be a symbol"
msgstr ""
-#: dispatcher.cc:89
+#: dispatcher.cc:90
#, c-format
msgid "Unknown event class %s"
msgstr ""
-#: dispatcher.cc:171
+#: dispatcher.cc:172
#, c-format
msgid "Junking event: %s"
msgstr ""
msgid "MIDI output to `%s'..."
msgstr ""
-#: note-collision.cc:504
+#: note-collision.cc:506
msgid "ignoring too many clashing note columns"
msgstr ""
msgid "giving up"
msgstr ""
-#: page-layout-problem.cc:709
+#: page-layout-problem.cc:721
msgid ""
"cannot fit music on page: ragged-spacing was requested, but page was "
"compressed"
msgstr ""
-#: page-layout-problem.cc:712
+#: page-layout-problem.cc:724
#, c-format
msgid "cannot fit music on page: overflow is %f"
msgstr ""
-#: page-layout-problem.cc:714
+#: page-layout-problem.cc:726
msgid "compressing music to fit"
msgstr ""
-#: page-layout-problem.cc:1176
+#: page-layout-problem.cc:1188
msgid "staff-affinities should only decrease"
msgstr ""
msgid "mark label must be a markup object"
msgstr ""
-#: stem-engraver.cc:105
+#: stem-engraver.cc:110
msgid "tremolo duration is too long"
msgstr ""
-#: stem-engraver.cc:157
+#: stem-engraver.cc:162
#, c-format
msgid "adding note head to incompatible stem (type = %d/%d)"
msgstr ""
-#: stem-engraver.cc:160
+#: stem-engraver.cc:165
msgid "maybe input should specify polyphonic voices"
msgstr ""
msgid "cannot have note heads and rests together on a stem"
msgstr ""
-#: beam.cc:180
+#: beam.cc:181
msgid "removing beam with no stems"
msgstr ""
msgid "unterminated percent repeat"
msgstr ""
-#: note-head.cc:85
+#: note-head.cc:86
#, c-format
msgid "none of note heads `%s' or `%s' found"
msgstr ""
msgid "Conversion of string `%s' to UTF-16be failed: %s"
msgstr ""
-#: rest.cc:171
+#: rest.cc:193
#, c-format
msgid "rest `%s' not found"
msgstr ""
msgid "unterminated slur"
msgstr ""
-#: slur-engraver.cc:191
+#: slur-engraver.cc:199
msgid "cannot end slur"
msgstr ""
#. We already have a slur, so give a warning and completely ignore
#. the new slur.
-#: slur-engraver.cc:208
+#: slur-engraver.cc:216
msgid "already have slur"
msgstr ""
msgid "Parsing..."
msgstr ""
-#: score.cc:176
+#: score.cc:172
msgid "already have music in score"
msgstr ""
-#: score.cc:177
+#: score.cc:173
msgid "this is the previous music"
msgstr ""
-#: score.cc:182
+#: score.cc:178
msgid "errors found, ignoring music expression"
msgstr ""
msgid "Too much lookahead"
msgstr ""
-#: parser.yy:827 parser.yy:1193 parser.yy:1226
+#: parser.yy:828 parser.yy:1229
msgid "not a context mod"
msgstr ""
-#: parser.yy:995
+#: parser.yy:1013
msgid "\\paper cannot be used in \\score, use \\layout instead"
msgstr ""
-#: parser.yy:1019
+#: parser.yy:1037
msgid "need \\paper for paper block"
msgstr ""
-#: parser.yy:1943
-msgid "only \\consists takes non-string argument."
+#: parser.yy:1979
+msgid "only \\consists and \\remove take non-string argument."
msgstr ""
-#: parser.yy:1956
+#: parser.yy:1992
msgid "Grob name should be alphanumeric"
msgstr ""
-#: parser.yy:2150
+#: parser.yy:2194
msgid "not a rhythmic event"
msgstr ""
-#: parser.yy:2246 parser.yy:2251
+#: parser.yy:2290 parser.yy:2295
msgid "have to be in Lyric mode for lyrics"
msgstr ""
-#: parser.yy:2366
+#: parser.yy:2410
msgid "expecting string as script definition"
msgstr ""
-#: parser.yy:2518 parser.yy:2569
+#: parser.yy:2570 parser.yy:2621
#, c-format
msgid "not a duration: %d"
msgstr ""
-#: parser.yy:2688
+#: parser.yy:2740
msgid "have to be in Note mode for notes"
msgstr ""
-#: parser.yy:2737
+#: parser.yy:2795
msgid "have to be in Chord mode for chords"
msgstr ""
-#: parser.yy:2997
+#: parser.yy:3055
msgid "not a markup"
msgstr ""
msgid "invalid character: `%s'"
msgstr ""
-#: lexer.ll:868 lexer.ll:869
+#: lexer.ll:878 lexer.ll:879
#, c-format
msgid "unknown escaped string: `\\%s'"
msgstr ""
-#: lexer.ll:1117 lexer.ll:1118
+#: lexer.ll:1127 lexer.ll:1128
msgid "non-UTF-8 input"
msgstr ""
-#: lexer.ll:1161 lexer.ll:1162
+#: lexer.ll:1171 lexer.ll:1172
#, c-format
msgid "file too old: %s (oldest supported: %s)"
msgstr ""
-#: lexer.ll:1162 lexer.ll:1163
+#: lexer.ll:1172 lexer.ll:1173
msgid "consider updating the input with the convert-ly script"
msgstr ""
-#: lexer.ll:1168 lexer.ll:1169
+#: lexer.ll:1178 lexer.ll:1179
#, c-format
msgid "program too old: %s (file requires: %s)"
msgstr ""
-#: parser-clef.scm:141 parser-clef.scm:181
+#: parser-clef.scm:143 parser-clef.scm:183
#, scheme-format
msgid "unknown clef type `~a'"
msgstr ""
-#: parser-clef.scm:142 parser-clef.scm:182
+#: parser-clef.scm:144 parser-clef.scm:184
#, scheme-format
msgid "supported clefs: ~a"
msgstr ""
msgid "Found infinity or nan in output. Substituting 0.0"
msgstr ""
-#: output-ps.scm:313 output-svg.scm:556
+#: output-ps.scm:277 output-svg.scm:524
#, scheme-format
msgid "unknown line-cap-style: ~S"
msgstr ""
-#: output-ps.scm:318 output-svg.scm:562
+#: output-ps.scm:282 output-svg.scm:530
#, scheme-format
msgid "unknown line-join-style: ~S"
msgstr ""
msgid "set-global-staff-size: not in toplevel scope"
msgstr ""
-#: paper.scm:304
+#: paper.scm:314
#, scheme-format
msgid "This is not a \\layout {} object, ~S"
msgstr ""
-#: paper.scm:316
+#: paper.scm:326
#, scheme-format
msgid "Unknown paper size: ~a"
msgstr ""
#. TODO: should raise (generic) exception with throw, and catch
#. that in parse-scm.cc
-#: paper.scm:331
+#: paper.scm:341
msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
msgstr ""
msgid "cannot find: ~A"
msgstr ""
-#: lily.scm:701
+#: lily.scm:707
msgid "Success: compilation successfully completed"
msgstr ""
-#: lily.scm:702
+#: lily.scm:708
msgid "Compilation completed with warnings or errors"
msgstr ""
-#: lily.scm:764
+#: lily.scm:770
#, scheme-format
msgid "job ~a terminated with signal: ~a"
msgstr ""
-#: lily.scm:767
+#: lily.scm:773
#, scheme-format
msgid ""
"logfile ~a (exit ~a):\n"
"~a"
msgstr ""
-#: lily.scm:789 lily.scm:869
+#: lily.scm:795 lily.scm:881
#, scheme-format
msgid "failed files: ~S"
msgstr ""
-#: lily.scm:860
+#: lily.scm:872
#, scheme-format
msgid "Redirecting output to ~a..."
msgstr ""
-#: lily.scm:879 ps-to-png.scm:66
+#: lily.scm:891 ps-to-png.scm:66
#, scheme-format
msgid "Invoking `~a'...\n"
msgstr ""
-#: lily-library.scm:761
+#: lily-library.scm:299
+msgid "Music unsuitable for context-mod"
+msgstr ""
+
+#: lily-library.scm:349
+#, scheme-format
+msgid "Cannot find context-def \\~a"
+msgstr ""
+
+#: lily-library.scm:365
+msgid "Music unsuitable for output-def"
+msgstr ""
+
+#: lily-library.scm:888
msgid ""
"Find the index between @var{start} and @var{end} (an integer)\n"
"which produces the closest match to @var{target-val} if\n"
"applied to function @var{getter}."
msgstr ""
-#: lily-library.scm:835
+#: lily-library.scm:962
#, scheme-format
msgid "unknown unit: ~S"
msgstr ""
-#: lily-library.scm:860
+#: lily-library.scm:987
#, scheme-format
msgid "no \\version statement found, please add~afor future compatibility"
msgstr ""
-#: lily-library.scm:866
+#: lily-library.scm:993
msgid "old relative compatibility not used"
msgstr ""
msgid "quoted music `~a' is empty"
msgstr ""
-#: music-functions.scm:273
+#: music-functions.scm:274
msgid "More alternatives than repeats. Junking excess alternatives"
msgstr ""
-#: music-functions.scm:302
+#: music-functions.scm:303
#, scheme-format
msgid "invalid tremolo repeat count: ~a"
msgstr ""
-#: music-functions.scm:634
+#: music-functions.scm:662
msgid "Bad chord repetition"
msgstr ""
-#: music-functions.scm:669
+#: music-functions.scm:697
#, scheme-format
msgid "music expected: ~S"
msgstr ""
-#: music-functions.scm:985
+#: music-functions.scm:1013
#, scheme-format
msgid "cannot find quoted music: `~S'"
msgstr ""
-#: music-functions.scm:1123
+#: music-functions.scm:1151
msgid "Add @var{octave-shift} to the octave of @var{pitch}."
msgstr ""
-#: music-functions.scm:1183
+#: music-functions.scm:1211
#, scheme-format
msgid "Unknown octaveness type: ~S "
msgstr ""
-#: music-functions.scm:1184
+#: music-functions.scm:1212
msgid "Defaulting to 'any-octave."
msgstr ""
-#: music-functions.scm:1521
+#: music-functions.scm:1549
#, scheme-format
msgid "unknown accidental style: ~S"
msgstr ""
msgid "Error in beam quanting. Expected ~S 0, found ~S."
msgstr ""
-#: define-music-types.scm:752
+#: define-music-types.scm:765
#, scheme-format
msgid "symbol expected: ~S"
msgstr ""
-#: define-music-types.scm:755
+#: define-music-types.scm:768
#, scheme-format
msgid "cannot find music object: ~S"
msgstr ""
-#: define-music-types.scm:774
+#: define-music-types.scm:787
#, scheme-format
msgid "unknown repeat type `~S'"
msgstr ""
-#: define-music-types.scm:775
+#: define-music-types.scm:788
msgid "See define-music-types.scm for supported repeats"
msgstr ""
-#: translation-functions.scm:351
+#: translation-functions.scm:358
#, scheme-format
msgid "Negative fret for pitch ~a on string ~a"
msgstr ""
-#: translation-functions.scm:402
+#: translation-functions.scm:409
#, scheme-format
msgid "No open string for pitch ~a"
msgstr ""
-#: translation-functions.scm:417 translation-functions.scm:429
+#: translation-functions.scm:424 translation-functions.scm:436
#, scheme-format
msgid "Requested string for pitch requires negative fret: string ~a pitch ~a"
msgstr ""
-#: translation-functions.scm:420
+#: translation-functions.scm:427
msgid "Ignoring string request and recalculating."
msgstr ""
-#: translation-functions.scm:432
+#: translation-functions.scm:439
msgid "Ignoring note in tablature."
msgstr ""
-#: translation-functions.scm:455
+#: translation-functions.scm:462
#, scheme-format
msgid "No string for pitch ~a (given frets ~a)"
msgstr ""
-#: translation-functions.scm:560
+#: translation-functions.scm:567
#, scheme-format
msgid ""
"No label for fret ~a (on string ~a);\n"
msgid "cannot find description for property ~S (~S)"
msgstr ""
-#: ly-syntax-constructors.scm:65
+#: ly-syntax-constructors.scm:66
#, scheme-format
msgid "~a function cannot return ~a"
msgstr ""
-#: ly-syntax-constructors.scm:74
+#: ly-syntax-constructors.scm:75
#, scheme-format
msgid "wrong type for argument ~a. Expecting ~a, found ~s"
msgstr ""
-#: ly-syntax-constructors.scm:187
+#: ly-syntax-constructors.scm:188
#, scheme-format
msgid "Invalid property operation ~a"
msgstr ""
sys.stderr.write (USAGE)
sys.exit (n)
+TAGS = []
+
if len (sys.argv) >= 2:
in_dir = sys.argv[1]
if not (os.path.isdir (in_dir)):
exit_with_usage (2)
if not (os.path.isdir (DEST) and os.path.isdir (NEW_LYS)):
exit_with_usage (3)
+ TAGS = os.listdir (in_dir)
else:
in_dir = ''
-TAGS = os.listdir (in_dir)
-
# which convert-ly to use
if os.path.isfile("out/bin/convert-ly"):
conv_path='out/bin/'