From 94e76b06e4adca3d93294569bcb3dddc7ad4e296 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Tue, 20 Nov 2001 18:43:00 +0100 Subject: [PATCH] release: 1.4.9 ========== * More flexible lyric alignment: - new properties "alignment", "ignore-length-mismatch", "begin-alignment" an\d "end-alignment" to control non-centered lyric alignment 1.4.8.h --- CHANGES | 73 +- Documentation/footer.html.in | 1 - Documentation/header.html.in | 5 +- Documentation/topdocs/INSTALL.texi | 20 +- Documentation/user/refman.itely | 246 ++-- Documentation/windows/installing.texi | 8 +- INSTALL.txt | 16 +- VERSION | 4 +- buildscripts/lilypond-login.sh | 13 +- configure | 184 +-- debian/changelog | 41 + debian/control | 13 +- debian/control.foka | 17 +- debian/control.potato | 15 +- debian/lilypond1.3.copyright | 21 - debian/rules | 1 - input/emacs-lily.fly | 2 - input/regression/lyric_align.ly | 73 ++ input/test/beam-pos.ly | 1 + input/test/beams.ly | 4 +- lily/lily-guile.cc | 2 +- lily/lookup.cc | 15 +- lily/musical-request.cc | 9 +- lily/my-lily-parser.cc | 5 - lily/paper-outputter.cc | 3 +- lily/parser.yy | 6 +- lily/syllable-group.cc | 32 +- lily/text-engraver.cc | 3 +- lilypond-font-lock.el | 136 ++- lilypond-init.el | 8 +- lilypond-mode.el | 129 +- ly/init-as.fly | 43 - ly/init.fly | 14 - ly/init.sly | 17 - make/lilypond-vars.make | 5 +- make/lilypond.redhat.spec.in | 3 + make/mutopia-targets.make | 2 +- make/mutopia-vars.make | 17 +- make/out/lilypond.lsm | 8 +- make/out/lilypond.redhat.spec | 7 +- make/out/lilypond.suse.spec | 4 +- mf/GNUmakefile | 2 + po/da.po | 344 +++--- po/de.po | 130 +-- po/fr.po | 130 +-- po/it.po | 130 +-- po/ja.po | 130 +-- po/lilypond.pot | 130 +-- po/nl.po | 142 +-- po/ru.po | 130 +-- po/sv.po | 1423 +++++++++++++++++++++++ scm/basic-properties.scm | 1 + scm/beam.scm | 2 + scm/grob-description.scm | 4 +- scm/grob-property-description.scm | 5 +- scm/interface-description.scm | 3 + scm/lily.scm | 2 +- scm/translator-description.scm | 7 + scripts/abc2ly.py | 53 +- scripts/as2text.scm | 4 +- scripts/etf2ly.py | 633 +++++----- scripts/lilypond-book.py | 90 +- scripts/ly2dvi.py | 284 +++-- scripts/update-lily.py | 1 - stepmake/bin/add-html-footer.py | 10 +- stepmake/stepmake/metafont-rules.make | 6 + stepmake/stepmake/metafont-targets.make | 3 + tex/lily-ps-defs.tex | 1 + tex/lilyponddefs.tex | 10 +- 69 files changed, 3519 insertions(+), 1517 deletions(-) delete mode 100644 input/emacs-lily.fly create mode 100644 input/regression/lyric_align.ly delete mode 100644 ly/init-as.fly delete mode 100644 ly/init.fly delete mode 100644 ly/init.sly create mode 100644 po/sv.po diff --git a/CHANGES b/CHANGES index 0d33625930..e397b74e5a 100644 --- a/CHANGES +++ b/CHANGES @@ -1,46 +1,55 @@ ---- ../lilypond-1.4.8.jcn2/CHANGES Mon Nov 12 15:35:25 2001 -++ b/CHANGES Wed Nov 14 09:11:12 2001 -@@ -1,5 +1,7 @@ --1.4.8.jcn2 -1.4.8.jcn3 - ========== +1.4.8.moh2 +========== -* Dropped-in fixed c++ midi2ly from 1.5. - - * Backported lilypond-login.sh fixes. - --- ../lilypond-1.4.8.jcn1/CHANGES Mon Oct 1 13:45:09 2001 -++ b/CHANGES Mon Nov 12 15:35:25 2001 -@@ -1,7 +1,11 @@ --1.4.8.jcn1 -1.4.8.jcn2 - ========== - -* Backported lilypond-login.sh fixes. +* More flexible lyric alignment: + - new properties "alignment", "ignore-length-mismatch", "begin-alignment" an\d "end-alignment" to control non-centered lyric alignment - * Backported more guile > 1.4 compatibility stuff. -* Backported ly2dvi resource fix for windows. - - 1.4.8 - =====--- ../lilypond-1.4.8/CHANGES Wed Oct 17 09:25:04 2001 -++ b/CHANGES Wed Oct 17 10:55:11 2001 -@@ -1,3 +1,12 @@ -1.4.8.moh1 +1.4.8.hwn2 ========== -* new property "end-alignment" to control non-centered lyric alignment +* Bugfix: neutral direction of Beam +* Makefile rules for pktrace. -1.4.8 -===== +* logout message for redhat spec + +* links from refman to internal doco. + +* search link on the webpage. + +* Fast pixmap crop for lilypond-book. + +* Add Percent_repeat_engraver description. + +* Guile 1.5.4 compatibility now working. - 1.4.7.jcn2 - ========== - 1.4.8.jcn1 +* ly2dvi.py: resource import. + +* Mats' fixes for Miktex and PS output. + +* Bugfix for scriptHorizontal. + +* Change default duration behavior: copy duration fraction fields as +well. Incompatible change: \tempo doesn't set default duration + +* Updates from 1.5 for ly2dvi, etf2ly, abc2ly, emacs, rest/skip documentation + +* Bugfix: be strict about slur dimensions. + +* Bugfix: insert extra margin around pixmaps in lilpyond-book. + +* lilypond-book: magnification option for EPS + +1.4.8.jcn3 ========== +* Dropped-in fixed c++ midi2ly from 1.5. + * Backported more guile > 1.4 compatibility stuff. +* Danish and Swedish .po files + 1.4.8 ===== @@ -71,7 +80,7 @@ * Backported compatibility fixes for GUILE 1.5 -* default-neutral-direction -> neutral-direction +* Change default-neutral-direction to neutral-direction everywhere. * Danish .po file. diff --git a/Documentation/footer.html.in b/Documentation/footer.html.in index cfb235d277..e29ed04960 100644 --- a/Documentation/footer.html.in +++ b/Documentation/footer.html.in @@ -25,7 +25,6 @@ Please send GNU LilyPond questions and comments to Please send comments on these web pages to @MAILADDRESS@ -

Copyright (c) 1997--2001 Han-Wen Nienhuys and Jan Nieuwenhuizen. diff --git a/Documentation/header.html.in b/Documentation/header.html.in index 481ad838c6..7e33d9b002 100644 --- a/Documentation/header.html.in +++ b/Documentation/header.html.in @@ -49,8 +49,8 @@ which substitutes some @AT_VARIABLES@ as well. Download - Linux
- Windows
+ GNU/Linux binaries
+ Windows binaries
Source code
@@ -68,6 +68,7 @@ which substitutes some @AT_VARIABLES@ as well. Mailing lists
+ Search
WikiWiki
FAQs

diff --git a/Documentation/topdocs/INSTALL.texi b/Documentation/topdocs/INSTALL.texi index ed10f24052..96886c203c 100644 --- a/Documentation/topdocs/INSTALL.texi +++ b/Documentation/topdocs/INSTALL.texi @@ -481,7 +481,7 @@ interfere with your build, you may want to do this before the build too: @end example - +@c Why isn't this in BUGS (where it belongs?) @section Problems For help and questions use @email{lilypond-user@@gnu.org}. Please @@ -493,15 +493,31 @@ Bugs that are not fault of LilyPond are documented here. @unnumberedsubsec Debian GNU/Linux unstable gcc-3.0 Flex (2.5.4a-11) in unstable does not produce g++-3.0 compliant C++ -code. To compile LilyPond with gcc-3.0 you may do: +code. To compile LilyPond with gcc-3.0, please first upgrade to +flex_2.5.4a-13 or newer. Otherwise, you may do: @example + rm -f config.cache CC=gcc-3.0 CXX=g++-3.0 ./configure --enable-config=gcc-3.0 make conf=gcc-3.0 -C lily out-gcc-3.0/lexer.cc patch -p1 < lexer-gcc-3.0.patch make conf=gcc-3.0 -C lily @end example + +@unnumberedsubsec Linux-2.4.0, Guile-1.4 --with-threads + +There's a bug in certain kernels around version 2.4.0, that is +triggered when using Guile 1.4 compiled with pthreads. You'll see +random segmentation fault craches of LilyPond. Upgrade to a newer +version of Linux. If you can't do that, you may try to recompiling +Guile without threads (YMMV): + +@example + guile-1.4$ ./configure --without-threads; make all install +@end example + + @unnumberedsubsec NetBSD @itemize @bullet diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely index 4df8e41c5a..25e1c229de 100644 --- a/Documentation/user/refman.itely +++ b/Documentation/user/refman.itely @@ -14,6 +14,26 @@ @end macro +@ifhtml +@macro internalsref{NAME} +@uref{../lilypond-internals/\NAME\.html,\NAME\} +@cindex \NAME\ +@end macro +@macro seeinternals{NAME} +See @internalsref{\NAME\} +@end macro +@end ifhtml + + +@ifnothtml +@macro seeinternals{NAME} +@end macro +@macro internalsref{NAME} +\NAME\ +@cindex \NAME\ + +@end macro +@end ifnothtml @c .{Reference Manual} @@ -151,6 +171,8 @@ question mark `@code{?}' after the pitch. cis' d' e' cis' c'? d' e' c'! @end lilypond +The grob for a note head is called @internalsref{NoteHead}. + @c . {Pitches} @node Pitches @@ -219,26 +241,51 @@ octave; each @code{,} lowers the pitch by an octave. @subsection Rests @cindex Rests -Rests are entered like notes, with note name `@code{r}'. The grob is -@code{Rest}. Whole bar rests centered in the bar are specified using -@code{R}, see @ref{Multi measure rests}. +A rest is entered like a note, with note name `@code{r}': +@lilypond[singleline,verbatim] +r1 r2 r4 r8 +@end lilypond + +The grob is @internalsref{Rest}. Whole bar rests centered in the bar are +specified using @code{R}, see @ref{Multi measure rests}. @c . {Skips} @node Skips @subsection Skips @cindex Skip +An invisible rest, or skip, can be entered like a note with note name +`@code{s}': -@example - \skip @var{duration} - s@var{duration} -@end example -@cindex @code{\skip} +@lilypond[singleline,verbatim] +a2 s4 a4 s1 a4 +@end lilypond -Skips the amount of time specified by @var{duration}. If no other music -is played, a gap will be left for the skipped time without any notes -printed. The shorthand is only available in Note and Chord mode. +Actually, this is a shorthand for the @code{\skip} command, and it is +only available in Note mode and Chord mode. + +@c FIXME: in lyrics mode, we have " " and _ + +In Lyrics mode, you can use `@code{" "}' and `@code{_}': +@lilypond[singleline,verbatim] +< + \context Lyrics \lyrics { lah2 di4 " " dah2 _4 di } + \notes\relative c'' { a2 a4 a a2 a4 a } +> +@end lilypond + +The unabbreviated `@code{\skip} @var{duration}' also works outside of +note mode: + +@lilypond[singleline,verbatim] +\score { + \context Staff < + { \time 4/8 \skip 2 \time 4/4 } + \notes\relative c'' { a2 a1 } + > +} +@end lilypond @c . {Durations} @node Durations @@ -271,7 +318,7 @@ r1 r2 r4 r8 r16 r32 r64 r64 @lilypond[] \score { \notes \relative c'' { - a\breve \autoBeamOff + a\breve \autoBeamOff a1 a2 a4 a8 a16 a32 a64 a64 r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r64 @@ -351,7 +398,8 @@ exactly the same concept. \time 3/4 c'2. c'2 ~ c'4 @end lilypond -The name of the tie grob is @code{Voice.Tie}. +The name of the tie grob is @internalsref{Tie}. It is usually created +in the @internalsref{Voice} context. @refbugs @@ -423,7 +471,7 @@ The typesetting of brackets and numbers is controlled by the properties @cindex @code{tupletNumberFormatFunction} @cindex tuplet formatting -Tuplet brackets are printed as @code{TupletBracket} grobs +Tuplet brackets are printed as @internalsref{TupletBracket} grobs @c . {Defining pitch names} @node Defining pitch names @@ -459,12 +507,12 @@ Hal-Leonard Inc. music publishers. @lilypond[singleline,verbatim] \include "paper23.ly" \score { - \notes { c'2 e'4 f' | g'1 } - \paper { \translator { \EasyNotation } } + \notes { c'2 e'4 f' | g'1 } + \paper { \translator { \EasyNotation } } } @end lilypond -Note that @code{EasyNotation} overrides a @code{Score} context. You +Note that @code{EasyNotation} overrides a @internalsref{Score} context. You probably will want to print it with magnification to make it more readable, see @ref{Output scaling}. @@ -525,7 +573,7 @@ This command sets the context property @code{Staff.keySignature}. Non-standard key signatures can be specified by setting this property directly, see the generated documentation for @rgrob{KeySignature}. -The printed signature is a @code{KeySignature} grob. +The printed signature is a @internalsref{KeySignature} grob. @cindex @code{keySignature} @@ -547,7 +595,7 @@ Shortcut for \property Staff.clefOctavation = @var{extra transposition of clefname} @end example -Any change in these properties creates a clef (a @code{Clef} grob). +Any change in these properties creates a clef (a @internalsref{Clef} grob). Supported clef-names include @@ -653,7 +701,7 @@ should be inserted, and how automatic beams should be generated. Changing the value of @code{timeSignatureFraction} also causes a -fraction to be printed. This grob is @code{TimeSignature}. +fraction to be printed. This grob is @internalsref{TimeSignature}. The actual symbol that's printed can be customized with the style property. @@ -771,7 +819,7 @@ a measure it is set to @code{defaultBarType}. The contents of @code{\bar }. These settings take precedence over the automatic @code{whichBar} settings. -@code{BarLine} grobs are created by the @code{Bar_engraver}. +@internalsref{BarLine} grobs are created by the @internalsref{Bar_engraver}. @c . {Polyphony} @node Polyphony @@ -791,7 +839,7 @@ When there are more than two voices on a staff, you must also indicate which voice should moved horizontally in case of a collision. This can be done with the identifiers @code{\shiftOff}, @code{\shiftOn}, @code{\shiftOnn}, etc. (which sets the grob property @code{horizontal-shift} -in @code{NoteColumn}). +in @internalsref{NoteColumn}). @lilypond[fragment, verbatim] \context Staff \notes\relative c''< @@ -845,11 +893,9 @@ LilyPond also vertically shifts rests that are opposite of a stem. @end lilypond Note head collisions (horizontal shifting of note heads) are handled by -the @code{NoteCollision} grob. @code{RestCollision} handles vertical -shifting of rests. +the @internalsref{NoteCollision} grob. @internalsref{RestCollision} +handles vertical shifting of rests. -@cindex @code{NoteCollision} -@cindex @code{RestCollision} @refbugs @@ -996,7 +1042,7 @@ property, it's value will be used only once, and then it is erased. @end lilypond @cindex @code{stemRightBeamCount} -The beam symbol (grob @code{Voice.Beam}, both for automatic and manual +The beam symbol (grob @internalsref{Beam}, both for automatic and manual beams) can be tweaked through grob-properties @code{height} and @code{staff-position}. These specify vertical location and vertical span. Both are measured in half staff-spaces, @code{staff-position=0} @@ -1048,8 +1094,9 @@ They are entered using parentheses: Slurs avoid crossing stems, and are generally attached to note heads. However, in some situations with beams, slurs may be attached to stem ends. If you want to override this layout you can do this through the -@code{Voice.Slur}'s grob-property @code{attachment}. It's value is a -pair of symbols, specifying the attachment type of the left and right end points. +@internalsref{Slur}'s grob-property @code{attachment}. It's value is a +pair of symbols, specifying the attachment type of the left and right +end points. @lilypond[fragment,relative,verbatim] \property Voice.Slur \set #'direction = #1 @@ -1075,11 +1122,12 @@ stems might look better: Similarly, the curvature of a slur is adjusted to stay clear of note heads and stems. When that would increase the curvature too much, the slur is reverted to its default shape. The threshold for this decision -is in @code{Voice.Slur}'s grob-property @code{beautiful}. It is loosely -related to the enclosed area between the slur and the notes. Usually, -the default setting works well, but in some cases you may prefer a -curved slur when LilyPond decides for a vertically moved one. You can -indicate this preference by increasing the @code{beautiful} value: +is in @internalsref{Slur}'s grob-property @code{beautiful}. It is +loosely related to the enclosed area between the slur and the notes. +Usually, the default setting works well, but in some cases you may +prefer a curved slur when LilyPond decides for a vertically moved one. +You can indicate this preference by increasing the @code{beautiful} +value: @lilypond[verbatim,singleline,relative] \property Voice.Beam \override #'direction = #-1 @@ -1112,18 +1160,19 @@ respectively. @end lilypond Typographically, the phrasing slur behaves almost exactly like a normal -slur. The grob associated with it is @code{Voice.PhrasingSlur}. +slur. The grob associated with it is @internalsref{PhrasingSlur}. @node Breath marks @subsection Breath marks Breath marks are entered using @code{\breathe}. The result is a -@code{Voice.BreathingSign} grob. +@internalsref{BreathingSign} grob. @lilypond[fragment,relative] c'4 \breathe d4 @end lilypond +Note that the skip does not produce any output, not even transparent output. @@ -1169,9 +1218,9 @@ is as follows: \spanrequest \start "text" \spanrequest \stop "text" @end example -LilyPond will respond by creating a @code{Voice.TextSpanner} grob. The -string to be printed, as well as the style is set through grob -properties. +LilyPond will respond by creating a @internalsref{TextSpanner} grob (typically +in @internalsref{Voice} context). The string to be printed, as well as the +style is set through grob properties. An application---or rather, a hack---is to fake octavation indications. @lilypond[fragment,relative,verbatim] @@ -1287,7 +1336,7 @@ accesses a script definition from the table: Usually the @code{\script} keyword is not used directly. Various helpful identifier definitions appear in @file{script.ly}. -Grobs for these objects are @code{Script} and @code{Fingering}. +Grobs for these objects are @internalsref{Script} and @internalsref{Fingering}. @refbugs @@ -1316,7 +1365,8 @@ includes. \relative c' { c4^"longtext" \fatText c4_"longlongtext" c4 } @end lilypond -Text scripts are created in form of @code{Voice.TextScript} grobs. +Text scripts are created in form of @internalsref{TextScript} grobs, in +@internalsref{Voice} context. @ref{Text markup} describes how to change the font or access special symbols in text scripts. @@ -1395,8 +1445,8 @@ also be implemented. @cindex @code{\glissando} -A glissando line (grob @code{Voice.Glissando}) can be requested by attaching a -@code{\glissando} to a note: +A glissando line (grob @internalsref{Glissando}) can be requested by +attaching a @code{\glissando} to a notte: @lilypond[fragment,relative,verbatim] c'-\glissando c' @@ -1488,9 +1538,9 @@ For everyday use, we recommend the identifiers @code{\cresc}, @cindex diminuendo -Dynamics are grobs of @code{Voice.DynamicText} and -@code{Voice.Hairpin}. They are put together on -@code{Voice.DynamicLineSpanner} to align them vertically. +Dynamics are grobs of @internalsref{DynamicText} and +@internalsref{Hairpin}. They are put together on +@internalsref{DynamicLineSpanner} to align them vertically. @c . {Repeats} @@ -1642,7 +1692,7 @@ command can be @end lilypond -Repeats brackets are @code{Staff.VoltaBracket} grobs. +Repeats brackets are @internalsref{VoltaBracket} grobs. @node Tremolo repeats @subsection Tremolo repeats @@ -1661,8 +1711,8 @@ style. } @end lilypond -Tremolo beams are @code{Voice.Beam} grobs. Single stem tremolos are -@code{Voice.StemTremolo}. +Tremolo beams are @internalsref{Beam} grobs. Single stem tremolos are +@internalsref{StemTremolo}. @refbugs @@ -1708,8 +1758,8 @@ patterns that divide the measure length are replaced by slashes. } @end lilypond -The signs are represented by these grobs: @code{Voice.RepeatSlash} and -@code{Voice.PercentRepeat} and @code{Voice.DoublePercentRepeat}. +The signs are represented by these grobs: @internalsref{RepeatSlash} and +@internalsref{PercentRepeat} and @internalsref{DoublePercentRepeat}. @refbugs @@ -1746,8 +1796,8 @@ are squashed, and the staff itself looks has a single staff line: Piano music is an odd type of notation. Piano staffs are two normal staffs coupled with a brace. The staffs are largely independent, but sometimes voices can cross between the two staffs. The -@code{PianoStaff} is especially built to handle this cross-staffing -behavior. In this section we discuss the @code{PianoStaff} and some +@internalsref{PianoStaff} is especially built to handle this cross-staffing +behavior. In this section we discuss the @internalsref{PianoStaff} and some other pianistic peculiarities. @menu @@ -1771,7 +1821,7 @@ staff. The syntax for this is @end example This will switch the interpretation context of @var{musicexp} between a @var{contexttype} named @code{up} and @code{down}. Typically, you use -@code{Staff} for @var{contexttype}. The autochanger switches on basis +@internalsref{Staff} for @var{contexttype}. The autochanger switches on basis of pitch (central C is the turning point), and it looks ahead skipping over rests to switch rests in advance. @@ -1827,7 +1877,7 @@ Piano pedal instruction can be expressed using @code{\treCorde}, @code{\sostenutoDown} and @code{\sostenutoUp}. These identifiers are shorthands for spanner commands of the types -@code{Sustain}, @code{UnaCorda} and @code{Sostenuto}: +@internalsref{Sustain}, @internalsref{UnaCorda} and @internalsref{Sostenuto}: @lilypond[fragment,verbatim] c''4 \spanrequest \start "Sustain" c''4 @@ -1874,8 +1924,8 @@ to the chords in both staffs, and set > @end lilypond -This command creates @code{Voice.Arpeggio} grobs. Cross staff arpeggios -are @code{PianoStaff.Arpeggio}. +This command creates @internalsref{Arpeggio} grobs. Cross staff arpeggios +are @code{PianoStaff.Arpeggio}. @internalsref{Arpeggio} @refbugs @@ -1909,7 +1959,7 @@ can be printed automatically. This is enabled if the property > @end lilypond -The associated grob is @code{Voice.VoiceFollower}. +The associated grob is @internalsref{VoiceFollower}. @node Lyrics @@ -1958,7 +2008,7 @@ definition}. @subsection Printing lyrics @cindex lyrics -Lyrics are printed by interpreting them in the @code{Lyrics} context. +Lyrics are printed by interpreting them in the @internalsref{Lyrics} context. @c Maybe more pedagogical to avoid \addlyrics in this first example? /MB @@ -2263,10 +2313,8 @@ adds a fourth, but also removes the third. @cindex printing chord names @cindex chord names @cindex chords -@cindex @code{ChordNames} - -For displaying printed chord names, use the @code{ChordNames} context. +For displaying printed chord names, use the @internalsref{ChordNames} context. The chords may be entered either using the notation described above, or directly using simultaneous music. @@ -2383,7 +2431,7 @@ problems in orchestral music. @cindex Rehearsal marks @cindex mark @cindex @code{\mark} -@cindex @code{Mark_engraver} + @example \mark @var{unsigned} @@ -2407,13 +2455,13 @@ automatically incremented. } @end lilypond -The grob is @code{Score.RehearsalMark}. See +The grob is @internalsref{RehearsalMark} in @internalsref{Score} context. See @code{input/test/boxed-molecule.ly} if you need boxes around the marks. @node Bar numbers @subsection Bar numbers -Bar numbers (grob: @code{BarNumber}) are printed at the start of the +Bar numbers (grob: @internalsref{BarNumber}) are printed at the start of the line. See @code{input/test/boxed-molecule.ly} for boxed bar numbers. @refbugs @@ -2529,6 +2577,8 @@ measure. @cindex whole rests for a full measure +The grob for this object is @internalsref{MultiMeasureRest}. + @refbugs Currently, there is no way to automatically condense multiple rests into @@ -2601,8 +2651,8 @@ There are a number of other properties that you can use to tweak the behavior of part combining, refer to the automatically generated documentation of @reng{Thread_devnull_engraver} and @reng{Voice_devnull_engraver}. Look at the documentation of the -responsible engravers, @code{Thread_devnull_engraver}, -@code{Voice_devnull_engraver} and @code{A2_engraver}. +responsible engravers, @internalsref{Thread_devnull_engraver}, +@internalsref{Voice_devnull_engraver} and @internalsref{A2_engraver}. @refbugs @@ -2622,9 +2672,6 @@ measure. > @end lilypond -@cindex @code{Thread_devnull_engraver} -@cindex @code{Voice_engraver} -@cindex @code{A2_engraver} @node Hara kiri staffs @subsection Hara kiri staffs @@ -2637,10 +2684,10 @@ it finds itself to be empty after the line-breaking process. It will not disappear when it contains normal rests, you must use multi measure rests. -The hara kiri staff is specialized version of the Staff context. It is -available as the context identifier @code{\HaraKiriStaffContext}. -Observe how the second staff in this example disappears in the second -line. +The hara kiri staff is specialized version of the @internalsref{Staff} +context. It is available as the context identifier +@code{\HaraKiriStaffContext}. Observe how the second staff in this +example disappears in the second line. @lilypond[verbatim] \score { @@ -2689,8 +2736,8 @@ Nowadays, they have survived only in special forms of musical notation such as via the @emph{editio vaticana} dating back to the beginning of the 20th century. -For typesetting custodes, just put a @code{Custos_engraver} into the -@code{StaffContext} when declaring the @code{\paper} block. In this +For typesetting custodes, just put a @internalsref{Custos_engraver} into the +@internalsref{Staff} context when declaring the @code{\paper} block. In this block, you can also globally control the appearance of the custos symbol by setting the custos @code{style} property. Currently supported styles are @code{vaticana}, @code{medicaea}, @code{hufnagel} and @@ -2782,7 +2829,7 @@ mechanism. The definition of a grob is actually a list of default grob properties. For example, the definition of the Stem grob (available in @file{scm/grob-description.scm}), defines the following values for -@code{Stem} +@internalsref{Stem} @example (thickness . 0.8) @@ -2888,7 +2935,7 @@ feature. The syntax is as follows: @end example Here @code{predicate} is a Scheme function taking a grob argument, and returning a boolean. This statement is processed by the -@code{Output_property_engraver}. It instructs the engraver to feed all +@internalsref{Output_property_engraver}. It instructs the engraver to feed all grobs that it sees to @var{predicate}. Whenever the predicate returns true, the grob property @var{symbol} will be set to @var{value}. @@ -3035,8 +3082,8 @@ There are also pre-cooked font selection qualifiers. These are selected through the grob property @code{font-style}. For example, the style @code{finger} selects family @code{number} and relative size @code{-3}. Styles available include @code{volta}, @code{finger}, @code{tuplet}, -@code{timesig}, @code{mmrest}, @code{script}, @code{large}, @code{Large} -and @code{dynamic}. +@code{timesig}, @code{mmrest}, @code{script}, @code{large}, +@code{Large} and @code{dynamic}. The style sheets and tables for selecting fonts are located in @file{scm/font.scm}. Refer to this file for more information. @@ -4003,10 +4050,10 @@ like the measure, etc.? @end itemize -Contexts are grouped hierarchically: A @code{Voice} context is -contained in a @code{Staff} context (because a staff can contain -multiple voices at any point), a @code{Staff} context is contained in -@code{Score}, @code{StaffGroup}, or @code{ChoirStaff} context. +Contexts are grouped hierarchically: A @internalsref{Voice} context is +contained in a @internalsref{Staff} context (because a staff can contain +multiple voices at any point), a @internalsref{Staff} context is contained in +@internalsref{Score}, @internalsref{StaffGroup}, or @internalsref{ChoirStaff} context. Contexts associated with sheet music output are called @emph{notation contexts}, those for sound output are called @emph{performance @@ -4093,6 +4140,10 @@ This is a convenient mechanism, but do not expect opening chords to work without @code{\context}. For every note, a separate staff is instantiated. +@cindex explicit context +@cindex starting with chords +@cindex chords, starting with + @lilypond[verbatim, singleline] \score { \notes } @end lilypond @@ -4122,8 +4173,8 @@ specified Scheme expression @var{value}. All @var{propname} and Properties that are set in one context are inherited by all of the contained contexts. This means that a property valid for the -@code{Voice} context can be set in the @code{Score} context (for -example) and thus take effect in all @code{Voice} contexts. +@internalsref{Voice} context can be set in the @internalsref{Score} context (for +example) and thus take effect in all @internalsref{Voice} contexts. Properties can be unset using the following expression: @example @@ -4235,25 +4286,20 @@ This is an example: The argument of @code{\type} is the name for a special engraver that handles cooperation between simple engravers such as -@code{Note_head_engraver} and @code{Staff_symbol_engraver}. Alternatives +@internalsref{Note_head_engraver} and @internalsref{Staff_symbol_engraver}. Alternatives for this engraver are the following: @table @code -@cindex @code{Engraver_group_engraver} - @item @code{Engraver_group_engraver} + @item @internalsref{Engraver_group_engraver} The standard cooperation engraver. -@cindex @code{Score_engraver} + @item @internalsref{Score_engraver} - @item @code{Score_engraver} - This is cooperation module that should be in the top level context, + This is cooperation module that should be in the top level context, and only the top level context. -@cindex @code{Grace_engraver_group} - - @item @code{Grace_engraver_group} - This is a special cooperation module (resembling - @code{Score_engraver}) that is used to create an embedded - `miniscore'. + @item @internalsref{Grace_engraver_group} This is a special +cooperation module (resembling @internalsref{Score_engraver}) that is +used to create an embedded `miniscore'. @end table Other modifiers are @@ -4282,8 +4328,8 @@ completeness, but is never used in practice. @item @code{\name} @var{contextname} - This sets the type name of the context, e.g. @code{Staff}, - @code{Voice}. If the name is not specified, the translator won't do + This sets the type name of the context, e.g. @internalsref{Staff}, + @internalsref{Voice}. If the name is not specified, the translator won't do anything. @end itemize diff --git a/Documentation/windows/installing.texi b/Documentation/windows/installing.texi index 18f9949792..085fb63e8d 100644 --- a/Documentation/windows/installing.texi +++ b/Documentation/windows/installing.texi @@ -11,10 +11,10 @@ This document explains how to install the binary release for windows on a Microsoft Windows 95, 98, NT or 2000 machine. This release is a free extra service of the developers to assist windows -users. Please remember that we (the developers) rather dislike windows, -and none of us use it. Don't complain to us that installing LilyPond is -too difficult; rather, if you know something about your Windows, send us -code that works better (see @uref{compiling.html,compiling}). +users. When reporting problems, please keep in mind that we (the developers) +do not use Windows. In fact, if you know something about Windows, and +are able to write code, please send us code that works better (see +@uref{compiling.html,compiling}). @section Windows binary setup diff --git a/INSTALL.txt b/INSTALL.txt index 7df4df6cb2..c82132525f 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -27,6 +27,7 @@ INSTALL - compiling and installing GNU LilyPond Debian GNU/Linux Problems Debian GNU/Linux unstable gcc-3.0 + Linux-2.4.0, Guile-1.4 -with-threads NetBSD Solaris: AIX @@ -467,13 +468,26 @@ Debian GNU/Linux unstable gcc-3.0 --------------------------------- Flex (2.5.4a-11) in unstable does not produce g++-3.0 compliant C++ -code. To compile LilyPond with gcc-3.0 you may do: +code. To compile LilyPond with gcc-3.0, please first upgrade to +flex_2.5.4a-13 or newer. Otherwise, you may do: + rm -f config.cache CC=gcc-3.0 CXX=g++-3.0 ./configure --enable-config=gcc-3.0 make conf=gcc-3.0 -C lily out-gcc-3.0/lexer.cc patch -p1 < lexer-gcc-3.0.patch make conf=gcc-3.0 -C lily +Linux-2.4.0, Guile-1.4 -with-threads +------------------------------------ + + There's a bug in certain kernels around version 2.4.0, that is +triggered when using Guile 1.4 compiled with pthreads. You'll see +random segmentation fault craches of LilyPond. Upgrade to a newer +version of Linux. If you can't do that, you may try to recompiling +Guile without threads (YMMV): + + guile-1.4$ ./configure --without-threads; make all install + NetBSD ------ diff --git a/VERSION b/VERSION index ca27b24fd3..aa75071590 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=4 -PATCH_LEVEL=8 -MY_PATCH_LEVEL=jcn3 +PATCH_LEVEL=9 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/buildscripts/lilypond-login.sh b/buildscripts/lilypond-login.sh index e809b66224..ec2dac64df 100755 --- a/buildscripts/lilypond-login.sh +++ b/buildscripts/lilypond-login.sh @@ -7,17 +7,8 @@ # strange shell, this C set datadir="@datadir@" -if ( $?GS_FONTPATH ) then - setenv GS_FONTPATH "$datadir/afm:/usr/share/lilypond/pfa:$GS_FONTPATH" - else - setenv GS_FONTPATH "$datadir/afm:/usr/share/lilypond/pfa" - endif - if ( $?GS_LIB ) then - setenv GS_LIB "$datadir/ps:$GS_LIB" - else - setenv GS_LIB "$datadir/ps" - endif - +setenv GS_FONTPATH "$datadir/afm:@datadir@/pfa:$GS_FONTPATH" +setenv GS_LIB "$datadir/ps:$GS_LIB" # setenv LILYPONDPREFIX "$datadir" diff --git a/configure b/configure index 08ddca3adb..0e09423923 100755 --- a/configure +++ b/configure @@ -1886,20 +1886,71 @@ else fi fi +for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat > conftest.$ac_ext < +$ac_declaration +int main() { +exit (42); +; return 0; } +EOF +if { (eval echo configure:1908: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + continue +fi +rm -f conftest* + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + break +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +done +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + + ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6 -echo "configure:1893: checking for FlexLexer.h" >&5 +echo "configure:1944: checking for FlexLexer.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1903: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1954: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1936,7 +1987,7 @@ fi echo $ac_n "checking "g++ version"""... $ac_c" 1>&6 -echo "configure:1940: checking "g++ version"" >&5 +echo "configure:1991: checking "g++ version"" >&5 cxx_version=`$CXX --version` echo "$ac_t"""$cxx_version"" 1>&6 # urg, egcs: how to check for egcs >= 1.1? @@ -1954,12 +2005,12 @@ echo "configure:1940: checking "g++ version"" >&5 echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6 -echo "configure:1958: checking whether explicit instantiation is needed" >&5 +echo "configure:2009: checking whether explicit instantiation is needed" >&5 if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < struct foo { static int baz; }; @@ -1969,7 +2020,7 @@ int main() { return foo::baz; ; return 0; } EOF -if { (eval echo configure:1973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2024: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lily_cv_need_explicit_instantiation=no else @@ -1996,7 +2047,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2000: checking for $ac_word" >&5 +echo "configure:2051: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2039,7 +2090,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2043: checking for $ac_word" >&5 +echo "configure:2094: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2074,7 +2125,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2078: checking for $ac_word" >&5 +echo "configure:2129: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2142,7 +2193,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2146: checking for $ac_word" >&5 +echo "configure:2197: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2175,7 +2226,7 @@ test -n "$AR" || AR="error" # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2179: checking for $ac_word" >&5 +echo "configure:2230: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2230,7 +2281,7 @@ fi echo $ac_n "checking language""... $ac_c" 1>&6 -echo "configure:2234: checking language" >&5 +echo "configure:2285: checking language" >&5 case "$language" in En* | en* | Am* | am* | US* | us*) lang=English;; @@ -2266,7 +2317,7 @@ EOF echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 -echo "configure:2270: checking for gettext in -lintl" >&5 +echo "configure:2321: checking for gettext in -lintl" >&5 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2274,7 +2325,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2318,12 +2369,12 @@ fi for ac_func in gettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2322: checking for $ac_func" >&5 +echo "configure:2373: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2404: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2381,7 +2432,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2385: checking for $ac_word" >&5 +echo "configure:2436: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2412,7 +2463,7 @@ done test -n "$MSGFMT" || MSGFMT="\$(SHELL) \$(step-bindir)/fake-msgfmt.sh " echo $ac_n "checking whether msgfmt accepts -o""... $ac_c" 1>&6 -echo "configure:2416: checking whether msgfmt accepts -o" >&5 +echo "configure:2467: checking whether msgfmt accepts -o" >&5 msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`" if test "$msgfmt_output" = ""; then echo "$ac_t""yes" 1>&6 @@ -2440,7 +2491,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2444: checking for $ac_word" >&5 +echo "configure:2495: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_METAFONT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2476,7 +2527,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2480: checking for $ac_word" >&5 +echo "configure:2531: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MFONT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2514,7 +2565,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2518: checking for $ac_word" >&5 +echo "configure:2569: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_METAPOST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2550,7 +2601,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2554: checking for $ac_word" >&5 +echo "configure:2605: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MPOST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2589,7 +2640,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2593: checking for $ac_word" >&5 +echo "configure:2644: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_INIMETAFONT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2625,7 +2676,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2629: checking for $ac_word" >&5 +echo "configure:2680: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_INIMFONT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2663,7 +2714,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2667: checking for $ac_word" >&5 +echo "configure:2718: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_INIMETAPOST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2699,7 +2750,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2703: checking for $ac_word" >&5 +echo "configure:2754: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_INIMPOST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2733,7 +2784,7 @@ test -n "$INIMPOST" || INIMPOST="-echo no inimp or inimpost" fi echo $ac_n "checking for working metafont mode""... $ac_c" 1>&6 -echo "configure:2737: checking for working metafont mode" >&5 +echo "configure:2788: checking for working metafont mode" >&5 modelist='ljfour lj4 lj3 lj2 ljet laserjet' for MFMODE in $modelist; do $METAFONT "\mode:=$MFMODE; mode_setup; end." > /dev/null 2>&1 @@ -2744,7 +2795,7 @@ echo "configure:2737: checking for working metafont mode" >&5 echo "$ac_t""$MFMODE" 1>&6 echo $ac_n "checking for mfplain.mp""... $ac_c" 1>&6 -echo "configure:2748: checking for mfplain.mp" >&5 +echo "configure:2799: checking for mfplain.mp" >&5 # # For now let people define these in their environments # @@ -2752,7 +2803,7 @@ echo "configure:2748: checking for mfplain.mp" >&5 echo "$ac_t""$MFPLAIN_MP" 1>&6 echo $ac_n "checking for inimetapost flags""... $ac_c" 1>&6 -echo "configure:2756: checking for inimetapost flags" >&5 +echo "configure:2807: checking for inimetapost flags" >&5 if test ${INIMETAPOST} = "inimp" ; then : ${INIMETAPOST_FLAGS=''} else @@ -2785,7 +2836,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2789: checking for $ac_word" >&5 +echo "configure:2840: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_KPSEWHICH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2816,7 +2867,7 @@ done test -n "$KPSEWHICH" || KPSEWHICH="no" echo $ac_n "checking for tfm path""... $ac_c" 1>&6 -echo "configure:2820: checking for tfm path" >&5 +echo "configure:2871: checking for tfm path" >&5 TFM_FONTS="cmr msam" @@ -2844,13 +2895,13 @@ echo "configure:2820: checking for tfm path" >&5 ## First, let's just see if we can find Guile at all. echo $ac_n "checking "for guile-config"""... $ac_c" 1>&6 -echo "configure:2848: checking "for guile-config"" >&5 +echo "configure:2899: checking "for guile-config"" >&5 for guile_config in guile-config $target-guile-config $build-guile-config; do echo "$ac_t"""$guile_config"" 1>&6 if ! $guile_config --version > /dev/null 2>&1 ; then echo "configure: warning: "cannot execute $guile_config"" 1>&2 echo $ac_n "checking "if we are cross compiling"""... $ac_c" 1>&6 -echo "configure:2854: checking "if we are cross compiling"" >&5 +echo "configure:2905: checking "if we are cross compiling"" >&5 guile_config=error else break @@ -2861,7 +2912,7 @@ echo "configure:2854: checking "if we are cross compiling"" >&5 exit 1 fi echo $ac_n "checking "Guile version"""... $ac_c" 1>&6 -echo "configure:2865: checking "Guile version"" >&5 +echo "configure:2916: checking "Guile version"" >&5 need_guile_version="1.3.4" need_guile_version_numeric=100304 guile_version=`$guile_config --version 2>&1 | awk '{print $NF}'` @@ -2882,7 +2933,7 @@ else {last =0}} ## The GUILE_FLAGS macro. echo $ac_n "checking for Guile""... $ac_c" 1>&6 -echo "configure:2886: checking for Guile" >&5 +echo "configure:2937: checking for Guile" >&5 if ! $guile_config link > /dev/null ; then echo "$ac_t"""cannot execute $guile_config"" 1>&6 { echo "configure: error: "cannot find guile-config; is Guile installed?"" 1>&2; exit 1; } @@ -2897,7 +2948,7 @@ echo "configure:2886: checking for Guile" >&5 # Extract the first word of "guile", so it can be a program name with args. set dummy guile; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2901: checking for $ac_word" >&5 +echo "configure:2952: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GUILE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2958,17 +3009,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2962: checking for $ac_hdr" >&5 +echo "configure:3013: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2972: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3023: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2995,7 +3046,7 @@ fi done echo $ac_n "checking for kpse_find_file in -lkpathsea""... $ac_c" 1>&6 -echo "configure:2999: checking for kpse_find_file in -lkpathsea" >&5 +echo "configure:3050: checking for kpse_find_file in -lkpathsea" >&5 ac_lib_var=`echo kpathsea'_'kpse_find_file | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3003,7 +3054,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lkpathsea $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3047,12 +3098,12 @@ fi for ac_func in kpse_find_file do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3051: checking for $ac_func" >&5 +echo "configure:3102: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3105,7 +3156,7 @@ done fi echo $ac_n "checking whether to use kpathsea""... $ac_c" 1>&6 -echo "configure:3109: checking whether to use kpathsea" >&5 +echo "configure:3160: checking whether to use kpathsea" >&5 if test "$kpathsea_b" != no; then echo "$ac_t""yes" 1>&6 KPATHSEA=1 @@ -3126,7 +3177,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3130: checking for $ac_word" >&5 +echo "configure:3181: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_BIBTEX2HTML'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3167,7 +3218,7 @@ test -n "$BIBTEX2HTML" || BIBTEX2HTML="error" echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:3171: checking for 8-bit clean memcmp" >&5 +echo "configure:3222: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3175,11 +3226,8 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3240: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -3206,12 +3254,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -echo "configure:3210: checking for vprintf" >&5 +echo "configure:3258: checking for vprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3289: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else @@ -3261,12 +3309,12 @@ fi if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:3265: checking for _doprnt" >&5 +echo "configure:3313: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3344: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else @@ -3319,12 +3367,12 @@ fi for ac_func in memmem snprintf vsnprintf gettext isinf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3323: checking for $ac_func" >&5 +echo "configure:3371: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3390,7 +3438,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3394: checking for $ac_word" >&5 +echo "configure:3442: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3422,7 +3470,7 @@ test -n "$MAKEINFO" || MAKEINFO="error" if test "$MAKEINFO" != "error"; then echo $ac_n "checking whether makeinfo can split html by @node""... $ac_c" 1>&6 -echo "configure:3426: checking whether makeinfo can split html by @node" >&5 +echo "configure:3474: checking whether makeinfo can split html by @node" >&5 mkdir -p out makeinfo --html --output=out/split <&6 -echo "configure:3454: checking for $ac_word" >&5 +echo "configure:3502: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else diff --git a/debian/changelog b/debian/changelog index 37cfe0df1a..7329576d36 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,44 @@ +lilypond (1.4.8-1) unstable; urgency=high + + * New upstream release. (Closes: Bug#111132) + * Stopped using $(PWD) in make, as it doesn't seems to work on + potato systems with older "make". Reverted to `pwd`. + Thanks to Wolfgang Schnitker for notifying me this problem. + * Changed the lilypond1.3 dummy package's Architecture from "all" + to "arm i386 m68k powerpc sparc". Also, as upstream updated + config.sub and config.guess to recognize ia64 and hppa. + Thanks to Anthony Towns for the bug report. (Closes: Bug#114266) + * Versioned Build-Depends: flex (>= 2.5.4a-14) to ensure gcc-3.0 + compatibility. + + -- Anthony Fok Sun, 14 Oct 2001 18:28:45 +0800 + +lilypond (1.4.5-1) unstable; urgency=low + + * New upstream release. + * Upstream includes lexer-gcc-3.0.patch which should fix compilation + problems with g++-3.0. (Closes: Bug#105001) + * Hurray! texinfo-4.0b is finally in Debian! Thanks, Josip! :-) + Updated Build-Depends. + + -- Anthony Fok Wed, 25 Jul 2001 03:04:37 +0800 + +lilypond (1.4.3-1) unstable; urgency=high + + * New upstream release. + * Urgency high because Lilypond-1.2.17 is too buggy and yet it has + been stuck in testing forever. Lilypond-1.4.x fixes multiple + serious bugs. :-) + * Ah, silly me, lilypond was conflicting against itself! I forgot + to remove this relics during the switch from lilypond1.3 to lilypond. + * Fixed a new bug in lily/main.cc which caused lilypond to skip over every + other command-line argument. + * [configure.in]: Added -mieee to CFLAGS and CXXFLAGS when building on + Alpha to prevent FP exception. Thanks to Christopher C. Chimelis + for the fix! + + -- Anthony Fok Fri, 15 Jun 2001 00:42:46 -0600 + lilypond (1.4.2-1) unstable; urgency=low * New upstream release. diff --git a/debian/control b/debian/control index 7998422c27..c856770ec1 100644 --- a/debian/control +++ b/debian/control @@ -1,10 +1,10 @@ Source: lilypond -Build-Depends: debhelper (>= 3.0.5), python-base (>= 1.5.2-4), libguile-dev (>= 1:1.4-9), tetex-bin, libkpathsea-dev, tetex-extra, flex, bison, texinfo (>= 4.0-1), groff, m4, gettext (>= 0.10.36-1) +Build-Depends: debhelper (>= 3.0.5), python-base (>= 1.5.2-4), libguile-dev (>= 1:1.4-9), tetex-bin, libkpathsea-dev, tetex-extra, flex (>= 2.5.4a-14), bison, texinfo (>= 4.0b-2), groff, m4, gettext (>= 0.10.36-1) Build-Depends-Indep: bibtex2html, gs | gs-aladdin, netpbm (>= 2:9.10-1) Section: tex Priority: optional Maintainer: Anthony Fok -Standards-Version: 3.5.4 +Standards-Version: 3.5.5 Package: lilypond Architecture: any @@ -12,7 +12,7 @@ Replaces: lilypond1.3 Provides: lilypond1.3 Depends: ${shlibs:Depends}, tetex-bin (>= 1.0.5-1), python-base (>= 1.5.2-4), guile Recommends: lilypond-doc, tetex-extra (>= 1.0-1) -Conflicts: lilypond, lilypond1.3 (<= 1.3.132-1), musixtex-fonts +Conflicts: lilypond1.3 (<= 1.3.132-1), musixtex-fonts Description: A program for printing sheet music. LilyPond is a music typesetter. It produces beautiful sheet music using a high level description file as input. LilyPond is part of @@ -28,15 +28,14 @@ Description: A program for printing sheet music. Package: lilypond-doc Section: doc Architecture: all -Suggests: lilypond (>= 1.4.1-1) -Suggests: postscript-viewer, www-browser +Suggests: lilypond (>= 1.4.8-1), postscript-viewer, www-browser Description: LilyPond Documentation in HTML, PS and DVI formats This package contains the HTML, PostScript and DVI documentation for the LilyPond music typestting software. Package: lilypond1.3 -Architecture: all -Depends: lilypond (>= 1.3.150-1) +Architecture: arm i386 m68k powerpc sparc +Depends: lilypond (>= 1.4.8-1) Description: Dummy package for transition to new stable lilypond. This dummy package provides a transition from the previous lilypond1.3 package back to a newer lilypond because the stable 1.4 series has arrived. diff --git a/debian/control.foka b/debian/control.foka index 78f5b60f09..c856770ec1 100644 --- a/debian/control.foka +++ b/debian/control.foka @@ -1,10 +1,10 @@ Source: lilypond -Build-Depends: debhelper (>= 3.0.5), python-base (>= 1.5.2-4), libguile-dev (>= 1:1.4-9), tetex-bin, libkpathsea-dev, tetex-extra, flex, bison, texinfo (>= 4.0-1), groff, m4, gettext (>= 0.10.36-1) +Build-Depends: debhelper (>= 3.0.5), python-base (>= 1.5.2-4), libguile-dev (>= 1:1.4-9), tetex-bin, libkpathsea-dev, tetex-extra, flex (>= 2.5.4a-14), bison, texinfo (>= 4.0b-2), groff, m4, gettext (>= 0.10.36-1) Build-Depends-Indep: bibtex2html, gs | gs-aladdin, netpbm (>= 2:9.10-1) Section: tex Priority: optional Maintainer: Anthony Fok -Standards-Version: 3.5.4 +Standards-Version: 3.5.5 Package: lilypond Architecture: any @@ -12,7 +12,7 @@ Replaces: lilypond1.3 Provides: lilypond1.3 Depends: ${shlibs:Depends}, tetex-bin (>= 1.0.5-1), python-base (>= 1.5.2-4), guile Recommends: lilypond-doc, tetex-extra (>= 1.0-1) -Conflicts: lilypond, lilypond1.3 (<= 1.3.132-1), musixtex-fonts +Conflicts: lilypond1.3 (<= 1.3.132-1), musixtex-fonts Description: A program for printing sheet music. LilyPond is a music typesetter. It produces beautiful sheet music using a high level description file as input. LilyPond is part of @@ -28,15 +28,14 @@ Description: A program for printing sheet music. Package: lilypond-doc Section: doc Architecture: all -Suggests: lilypond (>= 1.4.1-1) -Suggests: postscript-viewer, www-browser -Description: LilyPond Documentation in HTML and PS formats - This package contains the HTML and PostScript documentation for the +Suggests: lilypond (>= 1.4.8-1), postscript-viewer, www-browser +Description: LilyPond Documentation in HTML, PS and DVI formats + This package contains the HTML, PostScript and DVI documentation for the LilyPond music typestting software. Package: lilypond1.3 -Architecture: all -Depends: lilypond (>= 1.3.150-1) +Architecture: arm i386 m68k powerpc sparc +Depends: lilypond (>= 1.4.8-1) Description: Dummy package for transition to new stable lilypond. This dummy package provides a transition from the previous lilypond1.3 package back to a newer lilypond because the stable 1.4 series has arrived. diff --git a/debian/control.potato b/debian/control.potato index 0a3ff854e5..c7bd20e761 100644 --- a/debian/control.potato +++ b/debian/control.potato @@ -12,7 +12,7 @@ Replaces: lilypond1.3 Provides: lilypond1.3 Depends: ${shlibs:Depends}, tetex-bin (>= 1.0.5-1), python-base (>= 1.5.2-4), guile Recommends: lilypond-doc, tetex-extra (>= 1.0-1) -Conflicts: lilypond, lilypond1.3 (<= 1.3.132-1), musixtex-fonts +Conflicts: lilypond1.3 (<= 1.3.132-1), musixtex-fonts Description: A program for printing sheet music. LilyPond is a music typesetter. It produces beautiful sheet music using a high level description file as input. LilyPond is part of @@ -28,18 +28,7 @@ Description: A program for printing sheet music. Package: lilypond-doc Section: doc Architecture: all -Suggests: lilypond (>= 1.4.1-1) -Suggests: postscript-viewer, www-browser +Suggests: lilypond (>= 1.4.8-1), postscript-viewer, www-browser Description: LilyPond Documentation in HTML, PS and DVI formats This package contains the HTML, PostScript and DVI documentation for the LilyPond music typestting software. - -Package: lilypond1.3 -Architecture: all -Depends: lilypond (>= 1.3.150-1) -Description: Dummy package for transition to new stable lilypond. - This dummy package provides a transition from the previous lilypond1.3 - package back to a newer lilypond because the stable 1.4 series has arrived. - . - Please feel free to remove this dummy package after you have upgraded - to the latest lilypond. diff --git a/debian/lilypond1.3.copyright b/debian/lilypond1.3.copyright index 0366d2af74..29e3390e68 100644 --- a/debian/lilypond1.3.copyright +++ b/debian/lilypond1.3.copyright @@ -3,27 +3,6 @@ This is a dummy package to aid the transition from the old It was created by Anthony Fok Mon, 16 Apr 2001 22:17:10 -0600 -Copyright: - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License with - the Debian GNU/Linux distribution in file /usr/share/common-licenses/GPL; - if not, write to the Free Software Foundation, Inc., 59 Temple Place, - Suite 330, Boston, MA 02111-1307 USA -This is a dummy package to aid the transition from the old -"lilypond1.3" package to the newer "lilypond" package. -It was created by Anthony Fok -Mon, 16 Apr 2001 22:17:10 -0600 - Copyright: This program is free software; you can redistribute it and/or modify diff --git a/debian/rules b/debian/rules index 15dbc650d6..d854c688eb 100755 --- a/debian/rules +++ b/debian/rules @@ -64,7 +64,6 @@ clean: # Still not clean enough? Let's use... BRUTE STRENGTH! :-) find . -type d -name 'out' -o -name 'out-www' | xargs rm -rf - rm -f debian/doc-base debian/TODO dh_clean diff --git a/input/emacs-lily.fly b/input/emacs-lily.fly deleted file mode 100644 index fefa8e317e..0000000000 --- a/input/emacs-lily.fly +++ /dev/null @@ -1,2 +0,0 @@ -\ -cpp -P -traditional -o l-fake.ly -DFAKE_GRACE les-nereides.ly diff --git a/input/regression/lyric_align.ly b/input/regression/lyric_align.ly new file mode 100644 index 0000000000..a660e4ce7e --- /dev/null +++ b/input/regression/lyric_align.ly @@ -0,0 +1,73 @@ +\version "1.3.146" +\header{ + texidoc="Lyric alignment + + Lyric alignment is adjustable both interms of alignment between stanzas and on notehead. + + If the property alignment is not set, there is automatic determination of alignment type based on punctuation. (ee lyric-phrasing.ly) + +" +} + +%\paper { linewidth = -1. } +\score { + \addlyrics + \context Voice = "v" \notes \relative c'' { + \property Staff.automaticMelismata = ##t + \cadenzaOn + a\breve \bar "||" a1 \bar "|" a \bar "|" a \bar "||" \break a \bar "|" a \bar "|" a \bar "|" a \bar "||" \break a \bar "|" a \bar "|." + } + \context Lyrics < + \context LyricsVoice = "v-1" \lyrics { +% \property LyricsVoice . stanza = "1:" + \property Lyrics . LyricText \override #'ignore-length-mismatch = ##t + \property Lyrics . LyricText \override #'alignment = #-1 + \property Lyrics . LyricText \override #'begin-alignment = #8 + + "Particularly useful for reciting notes " + left + + \property Lyrics . LyricText \override #'alignment = #0 + + centered + + \property Lyrics . LyricText \override #'alignment = #1 + + right + + \property Lyrics . LyricText \override #'alignment = #-1 + \property Lyrics . LyricText \override #'begin-alignment = #2 + + left_half_way + + \property Lyrics . LyricText \override #'begin-alignment = #4 + + left_one_quarter + + \property Lyrics . LyricText \override #'begin-alignment = #10 + + left_one_tenth + + \property Lyrics . LyricText \override #'begin-alignment = #1 + + left_one_whole + + \property Lyrics . LyricText \override #'ignore-length-mismatch = ##f + \property Lyrics . LyricText \override #'begin-alignment = #4 + + Very_short_lyrics_remain_in_touch_with_their_note + + \property Lyrics . LyricText \override #'alignment = #1 + \property Lyrics . LyricText \override #'end-alignment = #1.1 + \property Lyrics . LyricText \override #'ignore-length-mismatch = ##t + + + Unless_ignore-length-mismatch_is_true + + } + \context LyricsVoice = "v-2" \lyrics { +% \property LyricsVoice . stanza = "2:" + " with many syllables under them." l c r l l l x x x note' true' + } + > +} diff --git a/input/test/beam-pos.ly b/input/test/beam-pos.ly index 14b92742d8..2917db77dd 100644 --- a/input/test/beam-pos.ly +++ b/input/test/beam-pos.ly @@ -5,6 +5,7 @@ filename = "beam-pos.ly" composer = "jcn" enteredby = "jcn" copyright = "PD" +title = "Beam quantization" TestedFeatures = "beam quant positions" } diff --git a/input/test/beams.ly b/input/test/beams.ly index 0c96547772..1ed95c0c80 100644 --- a/input/test/beams.ly +++ b/input/test/beams.ly @@ -12,7 +12,8 @@ TestedFeatures = "beams and beamflags" \score{ < % \property Score.beamQuantisation = #'none - \context GrandStaff < + \context GrandStaff < + \context Staff = SA \notes\transpose c' { \time 8/4 @@ -39,6 +40,7 @@ TestedFeatures = "beams and beamflags" } > < + \context Staff = SB \notes { \transpose c' { \time 8/4 diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index da3193526e..53b0105064 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -396,7 +396,7 @@ ly_number2string (SCM s) char str[400]; // ugh. - if (scm_integer_p (s) == SCM_BOOL_F) + if (scm_exact_p (s) == SCM_BOOL_F) { Real r (gh_scm2double (s)); diff --git a/lily/lookup.cc b/lily/lookup.cc index b01db45413..42b49417ca 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -125,11 +125,14 @@ Lookup::slur (Bezier curve, Real curvethick, Real linethick) { Real alpha = (curve.control_[3] - curve.control_[0]).arg (); Bezier back = curve; - + Offset perp = curvethick * complex_exp (Offset (0, alpha + M_PI/2)) * 0.5; back.reverse (); - back.control_[1] += curvethick * complex_exp (Offset (0, alpha + M_PI/2)); - back.control_[2] += curvethick * complex_exp (Offset (0, alpha + M_PI/2)); + back.control_[1] += perp; + back.control_[2] += perp; + curve.control_[1] -= perp; + curve.control_[2] -= perp; + SCM scontrols[8]; for (int i=4; i--;) @@ -152,8 +155,12 @@ Lookup::slur (Bezier curve, Real curvethick, Real linethick) ly_quote_scm (list), gh_double2scm (linethick), SCM_UNDEFINED)); + Box b(curve.extent (X_AXIS), + curve.extent (Y_AXIS)); + + b[X_AXIS].unite (back.extent (X_AXIS)); + b[Y_AXIS].unite (back.extent (Y_AXIS)); - Box b (curve.extent (X_AXIS), curve.extent (Y_AXIS)); return Molecule (b, at); } diff --git a/lily/musical-request.cc b/lily/musical-request.cc index 71a04ef12a..ec9e50a3ab 100644 --- a/lily/musical-request.cc +++ b/lily/musical-request.cc @@ -52,8 +52,13 @@ Rhythmic_req::do_equal_b (Request const* r) const Moment Rhythmic_req::length_mom () const { - return unsmob_duration (get_mus_property ("duration"))->length_mom (); - + Duration *d = unsmob_duration (get_mus_property ("duration")); + if (!d){ + Moment m ; + programming_error("Rhythmic_req has no duration"); + return m; + } + return d->length_mom (); } void diff --git a/lily/my-lily-parser.cc b/lily/my-lily-parser.cc index 4a44f5919a..cf2497c0e3 100644 --- a/lily/my-lily-parser.cc +++ b/lily/my-lily-parser.cc @@ -83,11 +83,6 @@ My_lily_parser::parser_error (String s) exit_status_global = 1; } -void -My_lily_parser::set_last_duration (Duration const *d) -{ - default_duration_ = *d; -} Input diff --git a/lily/paper-outputter.cc b/lily/paper-outputter.cc index 59d4fb4ba5..5f34e73951 100644 --- a/lily/paper-outputter.cc +++ b/lily/paper-outputter.cc @@ -162,7 +162,8 @@ Paper_outputter::output_scope (Scope *scope, String prefix) { output_String_def (prefix + s, ly_scm2string (v)); } - else if (scm_integer_p (v) == SCM_BOOL_T) + else if (scm_exact_p (v) == SCM_BOOL_T + && scm_integer_p (v) == SCM_BOOL_T) { output_int_def (prefix + s, gh_scm2int (v)); } diff --git a/lily/parser.yy b/lily/parser.yy index 591cfe1d42..464826db50 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -1567,9 +1567,11 @@ optional_notemode_duration: } | multiplied_duration { $$ = $1; + THIS->default_duration_ = *unsmob_duration ($$); } | explicit_duration { $$ = $1; + THIS->default_duration_ = *unsmob_duration ($$); } ; @@ -1582,15 +1584,11 @@ steno_duration: l = intlog2 ($1); $$ = Duration (l, $2).smobbed_copy (); - - THIS->set_last_duration (unsmob_duration ($$)); } | DURATION_IDENTIFIER dots { Duration *d =unsmob_duration ($1); Duration k (d->duration_log (),d->dot_count () + $2); $$ = k.smobbed_copy (); - - THIS->set_last_duration (unsmob_duration ($$)); } ; diff --git a/lily/syllable-group.cc b/lily/syllable-group.cc index 9016333fb1..2c37426c21 100644 --- a/lily/syllable-group.cc +++ b/lily/syllable-group.cc @@ -104,7 +104,7 @@ Syllable_group::set_lyric_align (const char *punc, Grob *default_notehead_l) Grob * lyric; alignment_i_ = appropriate_alignment (punc); - + // If there was no notehead in the matching voice context, use the first // notehead caught from any voice context (any port in a storm). if (!notehead_l_) { @@ -131,7 +131,7 @@ Syllable_group::set_lyric_align (const char *punc, Grob *default_notehead_l) /** determine the distance to translate lyrics to get correct alignment Rules: If alignment is centre, translate = 0 Otherwise, - If (length of longest lyric) < property("end-alignment") * (length of shortest lyric), + If (length of longest lyric) < (property {begin,end}-alignment) * (length of shortest lyric), - centre longest lyric on notehead Otherwise - move so shortest lyric just reaches notehead centre @@ -141,11 +141,20 @@ Syllable_group::amount_to_translate () { Real translate = 0.0; if (alignment_i_ != CENTER) { - // FIXME: do we really know the lyric extent here? Some font sizing comes later? - Real l1 = longest_lyric_l_->extent (longest_lyric_l_, X_AXIS).length () / gh_scm2double (longest_lyric_l_->get_grob_property("end-alignment")); - Real l2 = shortest_lyric_l_->extent (shortest_lyric_l_, X_AXIS).length (); - - translate = l1 extent (longest_lyric_l_, X_AXIS).length () / gh_scm2double (longest_lyric_l_->get_grob_property("begin-alignment")); + break; + case RIGHT: + translate = longest_lyric_l_->extent (longest_lyric_l_, X_AXIS).length () / gh_scm2double (longest_lyric_l_->get_grob_property("end-alignment")); + break; + } + if (!gh_scm2bool(longest_lyric_l_->get_grob_property("ignore-length-mismatch"))) { + Real l = shortest_lyric_l_->extent (shortest_lyric_l_, X_AXIS).length (); + translate = l longest_lyric_l_->get_grob_property ("alignment"); + if (s!=SCM_EOL) { + return gh_scm2int (s); + } + if (first_in_phrase_b_) return LEFT; diff --git a/lily/text-engraver.cc b/lily/text-engraver.cc index ed9473e000..7757efcfad 100644 --- a/lily/text-engraver.cc +++ b/lily/text-engraver.cc @@ -145,7 +145,8 @@ Text_engraver::stop_translation_timestep () for (int i=0; i < texts_.size (); i++) { Item *ti = texts_[i]; - Side_position_interface::add_staff_support (ti); + if (!to_boolean (get_property ("scriptHorizontal"))) + Side_position_interface::add_staff_support (ti); typeset_grob (ti); } texts_.clear (); diff --git a/lilypond-font-lock.el b/lilypond-font-lock.el index ee0b3c7553..166db820be 100644 --- a/lilypond-font-lock.el +++ b/lilypond-font-lock.el @@ -1,13 +1,16 @@ -;; lilypond-font-lock.el +;;; lilypond-font-lock.el --- syntax coloring for LilyPond mode ;; Copyright (C) 1992,1993,1994 Tim Peters +;; Author: 2001: Heikki Junes +;; * Emacs-mode: new keywords, reserved words, identifiers, notenames, +;; some dynamics and brackets are font-lock-keywords ;; Author: 1997: Han-Wen Nienhuys ;; Author: 1995-1996 Barry A. Warsaw ;; 1992-1994 Tim Peters ;; Created: Feb 1992 ;; Version: 0.0 -;; Last Modified: 12SEP97 +;; Last Modified: 14SEP2001 ;; Keywords: lilypond languages music notation ;; This software is provided as-is, without express or implied @@ -19,35 +22,124 @@ ;; This started out as a cannabalised version of python-mode.el, by hwn ;; For changes see the LilyPond ChangeLog ;; + ;; TODO: ;; - should handle block comments too. ;; - handle lexer modes (\header, \melodic, \lyric) etc. ;; - indentation -;; - notenames? -;; - fontlock: \melodic \melodic (defconst LilyPond-font-lock-keywords - (let* ((keywords '( - -"apply" "arpeggio" "autochange" "spanrequest" "commandspanrequest" -"simultaneous" "sequential" "accepts" "alternative" "bar" "breathe" -"char" "chordmodifiers" "chords" "clef" "cm" "consists" "consistsend" -"context" "denies" "duration" "dynamicscript" "elementdescriptions" -"font" "grace" "header" "in" "lyrics" "key" "mark" "musicalpitch" -"time" "times" "midi" "mm" "name" "notenames" "notes" "outputproperty" -"override" "set" "revert" "partial" "paper" "penalty" "property" "pt" -"relative" "remove" "repeat" "addlyrics" "partcombine" "score" -"script" "stylesheet" "skip" "textscript" "tempo" "translator" -"transpose" "type" "unset" + (let* ((keywords '( ; need special order due to over[lapping] of words + +;; all letters are lowercase +"accepts" "accompany" "addlyrics" "aeolian" "alias" "alternative" +"apply" "arpeggio" "autochange" "bar" "break" "breathe" "breve" +"beamintervals" "broken" "blend" "bcincipit" "char" "ch" "cg" +"chord\\(s\\|stest\\|chordmodifiers\\)?" +"clef \\(bass\\|treble\\|violin\\|tenor\\)?" +"clipping" "cm" "coda" "complex" "commandspanrequest" "consists\\(end\\)?" +"context" "contrabasso" "decr" "default" "denies" "different" "dirs" +"down\\(bow\\|prall\\)?" "dorian" "duration" "dynamicscript" +"eccentric" "eg" "embeddedps" "endincipit" "elementdescriptions" +"ex\\(treme\\)?" "fermata" "f+" "font" "flageolet" "fp" "fragment" "fz" +"gliss\\(ando\\)?" "global" "gg" "gmsus" "grace" "gr\\(and\\)?staff" +"header" "hsize" "in\\(clude\\|versions\\|visible\\)?" "ionian" +"key\\(s\\(ignature\\)?\\)?" "lag" "lheel" "line\\(break\\|prall\\)" +"locrian" "longa" "lower" "ltoe" "lydian" "lyrics" +"maintainer" "mark" "maxima" "mel\\(isma\\|ody\\)?" "midi" "major" +"minor" "mixolydian" "mordent" "monstrous" "multipart" "music" +"musicalpitch" "m\\(p\\|f\\|m\\)?" "name" "newpage" "noise\\(beat\\)?" +"normal\\(key\\|size\\)" "note\\(name\\)?s" "nt?" +"one\\(staff\\)?" "open" "outputproperty" "over\\(ride\\)?" +"paper" "partcombine" "partial" "penalty" "phrygian" "pitch" "p+" +"property" "pt" "prall\\(mordent\\|prall\\|up\\)?" "quickmeasure" +"relative" "remove" "repeat" "rever\\(t\\|seturn\\)" "rf" "rheel" "rhythm" +"right" "rtoe" "scales?" "scheme" "score" "scpaper" "script" "scscore" "sd" +"segno" "sequential" "set\\(tings\\)?" "sf\\(f\\|z\\)?" "shortlong" +"simultaneous" "singlepart" "skip" "small" "smarttranspose" "spanrequest" +"staccato" "staff\\(height\\|space\\)" "start" "stop\\(ped\\)?" +"st\\(paper\\|score\\)" "stuff" "stylesheet" "su" "tab" "tempo" "tenuto" +"textscript" "thenotes" "thrd" "threevoice" "thumb" "tilt\\(down\\|up\\)" +"timb" "times?" "timpani" "tiny" "toeters" "touch" "trans\\(lator\\|pose\\)" +"trill" "trombe" "turn" "type" "t\\(wo\\(voice\\(steminvert\\)?\\)?\\)?" +"un\\(der\\|set\\)" "up\\(bow\\|per\\|prall\\)?" "version" +"viol\\(a\\|in\\(incipit\\)?\\|oncello\\)" "visible" "voicedefault" "vsize" +"x" "zagers?" "z\\(eu\\|o\\)ger" + )) - (kwregex (mapconcat (lambda (x) (concat "\\\\" x)) keywords "\\|"))) + + (identifiers '( + +;; in principle, have one or more uppercase letters +"\\(\\(BarNumbering\\|Choir\\|Grand\\|HaraKiri\\|OrchestralPart\\|Piano\\|Rhythmic\\)Staff\\|\\(Cue\\|Lyrics\\)?Voice\\|\\(Orchestral\\)?Score\\|ChordNames\\|Grace\\|Lyrics\\|StaffGroup\\|Thread\\)Context" ; *Context +"\\(script\\|dots\\|dynamic\\|slur\\|stem\\|sustain\\|tie\\|tuplet\\)\\(Both\\|Down\\|Up\\)" ; *(Both/Down/Up) +"\\(slur\\|tie\\)\\(Dotted\\|Solid\\)" ; *(Dotted/Solid) +"\\(autoBeam\\|cadenza\\|impro\\|turn\\)\\(Off\\|On\\)" ; *(On/Off) +"\\(empty\\|fat\\)Text" ; *Text +"shift\\(On+\\|Off\\|I\\|II\\|III\\|IV\\|V\\)" ; shift* +"EasyNotation" +"\\(hide\\|show\\)StaffSwitch" +"\\(lower\\|upper\\)Voice" +"voice\\(One\\|Two\\|Three\\|Four\\|B\\|C\\|D\\|E\\)" ; voice* +"paper\\(Eleven\\|Sixteen\\|Thirteen\\|TwentySix\\)" ; paper* +"\\(lower\\|upper\\)\\(Octave\\|One\\)" ; (lower/upper)* +"hairyChord" +"\\(Piano\\|Rhythmic\\)\\(Staff\\)?" +"\\(clarinetti\\|fagotti\\|flauti\\|melodic\\|oboi\\|\\(quite\\|rather\\|somewhat\\)LongLyrics\\|violinoII?\\)?\\(Staff\\)?" ; *Staff +"\\(archi\\|bassi\\|legni\\|ottoni\\|timpani\\|viole\\|violini\\)\\(Group\\)" ; *Group +"melisma\\(End\\)?" "staff\\(One\\|Two\\)?" "rests\\(II\\)?" "specialKey" +"noBreak" "paperTwentysix" "endHorizScript" "FontBody" "text(I)+" + + )) + + (reservedwords '( + +;; Other words which look nicer when colored +"Accidentals" "autoBeamSettings" "BarLine" "Beam" +"ChordName\\([s]?\\|s.[a-zA-Z]*\\)" "Grace\\(.[a-zA-Z]*\\)?" +"\\(Grand\\|Piano\\)Staff" "Lyrics\\(.[a-zA-Z]*\\)?" "NoteHead" +"Score\\(.[a-zA-Z]*\\)" "Stem" "Staff\\(Symbol\\)?" "TextScript" +"TimeSignature" "Voice\\(.[a-zA-Z]*\\)?" + + )) + + (kwregex (mapconcat (lambda (x) (concat "\\\\" x)) keywords "\\|")) + (iregex (mapconcat (lambda (x) (concat "\\\\" x)) identifiers "\\|")) + (rwregex (mapconcat (lambda (x) (concat "" x)) reservedwords "\\|")) +) (list - (concat ".\\(" kwregex "\\)[^a-zA-Z]") - (concat "^\\(" kwregex "\\)[^a-zA-Z]") - '(".\\(\\\\[a-zA-Z][a-zA-Z]*\\)" 1 font-lock-variable-name-face) - '("^[\t ]*\\([a-zA-Z][_a-zA-Z]*\\) *=" 1 font-lock-variable-name-face) - )) +;; Fonts in use (from GNU Emacs Lisp Reference Manual, elisp.ps): +;; font-lock- comment / string / keyword / builtin / function-name / +;; variable-name / type / constant / warning -face + + '("\\([_^]?\\\\[a-zA-Z][a-zA-Z]*\\)" 1 font-lock-constant-face) + '("\\(\\(#'\\)?[a-zA-Z][_a-zA-Z.\-]*[ \t]*=[ \t]*#\\)" 1 font-lock-variable-name-face) + '("\\([a-zA-Z][_a-zA-Z.\-]*\\)[ \t]*=[ \t]*" 1 font-lock-variable-name-face) + '("[ \t]*=[ \t]*\\([a-zA-Z][_a-zA-Z]*\\)" 1 font-lock-variable-name-face) + + +;; other reserved words + (cons (concat "\\(" rwregex "\\)") 'font-lock-variable-name-face) + +;; highlight note names; separate notes from (other than ')'-type) brackets + '("[ <\{[~()\t]\\(\\(\\(\\(do\\|re\\|mi\\|fa\\|sol\\|la\\|si\\)\\(bb?\\|dd?\\|ss?\\)?\\)\\|\\([a-hsr]\\(flat\\(flat\\)?\\|sharp\\(sharp\\)?\\|ff?\\|ss?\\|is\\(siss\\|s\\|is\\)?\\|es\\(sess\\|s\\|es\\)?\\)?\\)\\|\\(as\\(as\\|es\\)?\\)\\|\\(es\\(es\\)?\\)\\|\\(bb\\)\\)[,']*\\(64\\|32\\|16\\|8\\|4\\|2\\|1\\)?[.]*\\)" 1 font-lock-type-face) + +;; highlight identifiers + (cons (concat "\\([_^]?\\(" iregex "\\)\\)+\\($\\|[] \t(~{}>\\\\]\\)") '(0 font-lock-function-name-face t)) + +;; highlight keywords + (cons (concat "\\([_^]?\\(" kwregex "\\)\\)+\\($\\|[] \t(~{}>\\\\]\\)") '(0 font-lock-keyword-face t)) + + '("\\([][><}{]\\)" 0 font-lock-warning-face t) + + '("\\([(~)]\\|\\\\<\\|\\\\!\\|\\\\>\\)" 0 font-lock-builtin-face t) + +;; highlight comments (again) + '("\\(%.*\\)" 0 font-lock-comment-face t) + + ) + ) "Additional expressions to highlight in LilyPond mode.") ;; define a mode-specific abbrev table for those who use such things diff --git a/lilypond-init.el b/lilypond-init.el index 98beddabc5..b92bed22d3 100644 --- a/lilypond-init.el +++ b/lilypond-init.el @@ -1,4 +1,7 @@ -;; install this into emacs site-start.d/ +;;; lilypond-init.el --- Startup code for LilyPond mode +;;; +;;; Add this to your ~/.emacs or ~/.emacs.el, or +;;; install this file into Emacs' site-start.d (autoload 'LilyPond-mode "lilypond-mode") (setq auto-mode-alist @@ -6,6 +9,3 @@ (add-hook 'LilyPond-mode-hook (lambda () (turn-on-font-lock))) - - - diff --git a/lilypond-mode.el b/lilypond-mode.el index bf72c82cfa..60e1a9c2cf 100644 --- a/lilypond-mode.el +++ b/lilypond-mode.el @@ -4,11 +4,16 @@ ;;; source file of the GNU LilyPond music typesetter ;;; ;;; (c) 1999--2001 Jan Nieuwenhuizen +;;; +;;; Changed 2001 Heikki Junes +;;; * Add PS-compilation, PS-viewing and MIDI-play (29th Aug 2001) +;;; * Keyboard shortcuts (12th Sep 2001) +;;; * Inserting tags, inspired on sgml-mode (11th Oct 2001) ;;; Inspired on auctex ;;; -;;; Add this to your .emacs.el +;;; Add this to your ~/.emacs or ~/.emacs.el ;;; (load-library "lilypond-mode.el") ;;; (setq auto-mode-alist ;;; (append '(("\\.ly$" . LilyPond-mode) auto-mode-alist))) @@ -31,6 +36,9 @@ (defvar LilyPond-kick-xdvi nil "If true, no simultaneous xdvi's are started, but reload signal is sent.") +(defvar LilyPond-command-history nil + "Command history list.") + (defvar LilyPond-regexp-alist '(("\\([a-zA-Z]?:?[^:( \t\n]+\\)[:( \t]+\\([0-9]+\\)[:) \t]" 1 2)) "Regexp used to match LilyPond errors. See `compilation-error-regexp-alist'.") @@ -129,6 +137,18 @@ in LilyPond-include-path." :group 'LilyPond :type 'string) +(defcustom LilyPond-gv-command "gv -watch" + "Command used to display PS files." + + :group 'LilyPond + :type 'string) + +(defcustom LilyPond-midi-command "timidity" + "Command used to play MIDI files." + + :group 'LilyPond + :type 'string) + ;; This is the major configuration variable. (defcustom LilyPond-command-alist `( @@ -136,6 +156,7 @@ in LilyPond-include-path." ("TeX" . ("tex '\\nonstopmode\\input %t'" . "View")) ("2Dvi" . ("ly2dvi %s" . "View")) + ("2PS" . ("ly2dvi -P %s" . "View")) ("Book" . ("lilypond-book %x" . "LaTeX")) ("LaTeX" . ("latex '\\nonstopmode\\input %l'" . "View")) @@ -145,6 +166,10 @@ in LilyPond-include-path." ;; refreshes when kicked USR1 ("View" . (,(concat LilyPond-xdvi-command " %d") . "LilyPond")) + + ("ViewPS" . (,(concat LilyPond-gv-command " %p") . "LilyPond")) + + ("Midi" . (,(concat LilyPond-midi-command " %m") . "LilyPond")) ) "AList of commands to execute on the current document. @@ -177,6 +202,7 @@ LilyPond-expand-list. ("%p" . ".ps") ("%l" . ".latex") ("%x" . ".tely") + ("%m" . ".midi") ) "Alist of expansion strings for LilyPond command names." @@ -228,7 +254,7 @@ Must be the car of an entry in `LilyPond-command-alist'." (answer (or LilyPond-command-force (completing-read (concat "Command: (default " default ") ") - LilyPond-command-alist nil t)))) + LilyPond-command-alist nil t nil 'LilyPond-command-history)))) ;; If the answer is "LilyPond" it will not be expanded to "LilyPond" (let ((answer (car-safe (assoc answer LilyPond-command-alist)))) @@ -249,6 +275,42 @@ Must be the car of an entry in `LilyPond-command-alist'." (LilyPond-command (LilyPond-command-query (LilyPond-master-file)) 'LilyPond-master-file)) +(defun LilyPond-command-formatdvi () + "Format the dvi output of the current document." + (interactive) + (LilyPond-command (LilyPond-command-menu "2Dvi") 'LilyPond-master-file) +) + +(defun LilyPond-command-formatps () + "Format the ps output of the current document." + (interactive) + (LilyPond-command (LilyPond-command-menu "2PS") 'LilyPond-master-file) +) + +(defun LilyPond-command-smartview () + "View the dvi output of current document." + (interactive) + (LilyPond-command (LilyPond-command-menu "SmartView") 'LilyPond-master-file) +) + +(defun LilyPond-command-view () + "View the dvi output of current document." + (interactive) + (LilyPond-command (LilyPond-command-menu "View") 'LilyPond-master-file) +) + +(defun LilyPond-command-viewps () + "View the ps output of current document." + (interactive) + (LilyPond-command (LilyPond-command-menu "ViewPS") 'LilyPond-master-file) +) + +(defun LilyPond-command-midi () + "View the ps output of current document." + (interactive) + (LilyPond-command (LilyPond-command-menu "Midi") 'LilyPond-master-file) +) + ;; FIXME, this is broken (defun LilyPond-region-file (begin end) (let ( @@ -358,10 +420,46 @@ command." (define-key LilyPond-mode-map "\C-c\C-b" 'LilyPond-command-buffer) (define-key LilyPond-mode-map "\C-c\C-k" 'LilyPond-kill-job) (define-key LilyPond-mode-map "\C-c\C-c" 'LilyPond-command-master) + (define-key LilyPond-mode-map "\C-c\C-d" 'LilyPond-command-formatdvi) + (define-key LilyPond-mode-map "\C-c\C-f" 'LilyPond-command-formatps) + (define-key LilyPond-mode-map "\C-c\C-s" 'LilyPond-command-smartview) + (define-key LilyPond-mode-map "\C-c\C-v" 'LilyPond-command-view) + (define-key LilyPond-mode-map "\C-c\C-p" 'LilyPond-command-viewps) + (define-key LilyPond-mode-map "\C-c\C-m" 'LilyPond-command-midi) + (define-key LilyPond-mode-map "\C-cn" 'lilypond-notes) + (define-key LilyPond-mode-map "\C-cs" 'lilypond-score) ) ;;; Menu Support +(define-skeleton lilypond-notes + "Lilypond notes tag." + nil +; (if (bolp) nil ?\n) + "\\notes" + (if (y-or-n-p "Set \"\\relative\" attribute? ") + (concat " \\relative " (skeleton-read "Relative: " "" str))) + " { " _ " }") + +(define-skeleton lilypond-score + "Lilypond score tag." + nil + (if (bolp) nil ?\n) + "\\score {\n" + " " _ "\n" + " \\paper { }\n" + (if (y-or-n-p "Insert \"\\header\" field? ") + (concat " \\header {\n " + (skeleton-read "Piece: " "piece = " str) "\n" + (if (y-or-n-p "Insert \"opus\" field? ") + (concat " " (skeleton-read "Opus: " "opus = " str) "\n")) + " }\n")) + (if (y-or-n-p "Insert \"\\midi\" field? ") + (concat " \\midi { " + (skeleton-read "Midi: " "\\tempo 4 = " str) + " }\n")) + "}\n") + (defun LilyPond-command-menu-entry (entry) ;; Return LilyPond-command-alist ENTRY as a menu item. (let ((name (car entry))) @@ -390,9 +488,26 @@ command." [ "Region" LilyPond-command-select-region :keys "C-c C-r" :style radio :selected (eq LilyPond-command-current 'LilyPond-command-region) ])) - (let ((file 'LilyPond-command-on-current)) - (mapcar 'LilyPond-command-menu-entry LilyPond-command-alist)))) - + '(("Insert" + [ "\\notes..." lilypond-notes + :keys "C-c n" ] + [ "\\score..." lilypond-score + :keys "C-c s" ] + )) +; (let ((file 'LilyPond-command-on-current)) +; (mapcar 'LilyPond-command-menu-entry LilyPond-command-alist)) +;;; Some kind of mapping which includes :keys might be more elegant + '([ "LilyPond" (LilyPond-command (LilyPond-command-menu "ViewPS") 'LilyPond-master-file) ]) + '([ "TeX" (LilyPond-command (LilyPond-command-menu "TeX") 'LilyPond-master-file) ]) + '([ "2Dvi" (LilyPond-command (LilyPond-command-menu "2Dvi") 'LilyPond-master-file) :keys "C-c C-d"]) + '([ "2PS" (LilyPond-command (LilyPond-command-menu "2PS") 'LilyPond-master-file) :keys "C-c C-f"]) + '([ "Book" (LilyPond-command (LilyPond-command-menu "Book") 'LilyPond-master-file) ]) + '([ "LaTeX" (LilyPond-command (LilyPond-command-menu "LaTeX") 'LilyPond-master-file) ]) + '([ "SmartView" (LilyPond-command (LilyPond-command-menu "SmartView") 'LilyPond-master-file) :keys "C-c C-s"]) + '([ "View" (LilyPond-command (LilyPond-command-menu "View") 'LilyPond-master-file) :keys "C-c C-v"]) + '([ "ViewPS" (LilyPond-command (LilyPond-command-menu "ViewPS") 'LilyPond-master-file) :keys "C-c C-p"]) + '([ "Midi" (LilyPond-command (LilyPond-command-menu "Midi") 'LilyPond-master-file) :keys "C-c C-m"]) + )) (defconst LilyPond-imenu-generic-re "^\\([a-zA-Z_][a-zA-Z0-9_]*\\) *=" "Regexp matching Identifier definitions.") @@ -414,7 +529,7 @@ command." (defun LilyPond-command-select-region () (interactive) (message "Next command will be on the region") - (setq LilyPond-command-current 'LilPond-command-region)) + (setq LilyPond-command-current 'LilyPond-command-region)) (defun LilyPond-command-menu (name) ;; Execute LilyPond-command-alist NAME from a menu. @@ -454,7 +569,7 @@ LilyPond-xdvi-command\t\tcommand to display dvi files -- bit superfluous" (setq comment-start-skip "%{? *") (make-local-variable 'comment-end) - (setq comment-end "\n") + (setq comment-end "") (make-local-variable 'block-comment-start) (setq block-comment-start "%{") diff --git a/ly/init-as.fly b/ly/init-as.fly deleted file mode 100644 index 757ca7c47e..0000000000 --- a/ly/init-as.fly +++ /dev/null @@ -1,43 +0,0 @@ -% Toplevel AsciiScript initialisation file. - -\version "1.3.146" - -\include "declarations-as.ly" - -% burp. need to override lily.scm -#(define cmr-alist - '(("bold" . "as-dummy") - ("brace" . "as-braces") - ("default" . "as-dummy") - ("dynamic" . "as-dummy") - ("feta" . "feta") - ("feta-1" . "feta") - ("feta-2" . "feta") - ("finger" . "as-number") - ("typewriter" . "as-dummy") - ("italic" . "as-dummy") - ("roman" . "as-dummy") - ("script" . "as-dummy") - ("large" . "as-dummy") - ("Large" . "as-dummy") - ("mark" . "as-number") - ("number" . "as-number") - ("timesig" . "as-number") - ("volta" . "as-number")) -) - -\score { - \context Voice \notes\relative c { - \maininput - } - \paper { - \paper_as_nine - %linewidth=-1.0 - %indent = 0.0 - \translator { \StaffContext barSize = \staffheight } - - % no beam-slope - %\translator { \VoiceContext beamHeight = #0 } - } - %\midi{ } -} diff --git a/ly/init.fly b/ly/init.fly deleted file mode 100644 index 640f13692f..0000000000 --- a/ly/init.fly +++ /dev/null @@ -1,14 +0,0 @@ -% Toplevel initialisation file. - -\version "1.3.146" - - -\include "declarations.ly" - -\score { - \context Voice \notes\relative c { - \maininput - } - \paper { } - \midi { } -} diff --git a/ly/init.sly b/ly/init.sly deleted file mode 100644 index 497dfd8daa..0000000000 --- a/ly/init.sly +++ /dev/null @@ -1,17 +0,0 @@ -% Toplevel initialisation file. - -\version "1.3.146" - - -\include "declarations.ly" - -\score { - \context Voice \notes\relative c { - \maininput - } - \paper { - - % indent = 0.0 - } - \midi{ } -} diff --git a/make/lilypond-vars.make b/make/lilypond-vars.make index 1634bdbcf0..4e03962016 100644 --- a/make/lilypond-vars.make +++ b/make/lilypond-vars.make @@ -12,11 +12,12 @@ export MT_DESTROOT := $(topdir)/mf/out export DVIPSMAKEPK := mktexpk --destdir $(topdir)/mf/out endif -export LILYPONDPREFIX:=$(depth)/ +# LilyPond is often run from within $(outdir), making a relative +# PREFIX incorrect. +export LILYPONDPREFIX:=$(shell cd $(depth)/ ; pwd) export PYTHONPATH:=$(buildscript-dir)/$(outdir):$(PYTHONPATH) # guile load path? - the-script-dir=$(wildcard $(script-dir)) ifneq ($(the-script-dir),) diff --git a/make/lilypond.redhat.spec.in b/make/lilypond.redhat.spec.in index 6eeba3c36d..1b4342f66e 100644 --- a/make/lilypond.redhat.spec.in +++ b/make/lilypond.redhat.spec.in @@ -86,6 +86,9 @@ rm `find /var/lib/texmf -name 'feta*pk -print' -or -name 'feta*tfm -print'` /tmp /sbin/install-info %{_prefix}/info/lilypond.info.gz %{_prefix}/info/dir %endif + +echo 'Please logout first before using LilyPond.' + %preun %if info=="yes" diff --git a/make/mutopia-targets.make b/make/mutopia-targets.make index 09168cb9cd..1b041638a4 100644 --- a/make/mutopia-targets.make +++ b/make/mutopia-targets.make @@ -10,7 +10,7 @@ include $(stepdir)/www-targets.make all: $(OUT_FILES) -local-WWW: $(ly_examples) $(fly_examples) $(ps_examples) $(png_examples) +local-WWW: $(ly_examples) $(ps_examples) $(png_examples) $(dvi_examples) tar: mkdir -p $(outdir)/$(tarball) diff --git a/make/mutopia-vars.make b/make/mutopia-vars.make index edecfad30b..7e2362e634 100644 --- a/make/mutopia-vars.make +++ b/make/mutopia-vars.make @@ -5,22 +5,17 @@ include $(make-dir)/lilypond-vars.make LY_FILES = $(wildcard *.ly) SCORE_LY_FILES = $(shell fgrep -l score *.ly) -FLY_FILES = $(wildcard *.fly) -SLY_FILES = $(wildcard *.sly) M4_FILES = $(wildcard *.m4) LYM4_FILES = $(wildcard *.lym4) -EXTRA_DIST_FILES += $(FLY_FILES) $(SLY_FILES) $(LY_FILES) $(M4_FILES) $(LYM4_FILES) +EXTRA_DIST_FILES += $(LY_FILES) $(M4_FILES) $(LYM4_FILES) ly_examples=$(addprefix $(outdir)/, $(addsuffix .ly.txt, $(examples))) -fly_examples=$(addprefix $(outdir)/, $(addsuffix .fly.txt, $(flexamples))) -sly_examples=$(addprefix $(outdir)/, $(addsuffix .sly.txt, $(slexamples))) -all_examples=$(flexamples) $(slexamples) $(examples) - -ps_examples=$(addprefix $(outdir)/, $(addsuffix .ps.gz, $(all_examples))) -gif_examples=$(addprefix $(outdir)/, $(addsuffix .gif, $(all_examples))) -png_examples=$(addprefix $(outdir)/, $(addsuffix .png, $(all_examples))) +ps_examples=$(addprefix $(outdir)/, $(addsuffix .ps.gz, $(examples))) +dvi_examples=$(addprefix $(outdir)/, $(addsuffix .dvi, $(examples))) +gif_examples=$(addprefix $(outdir)/, $(addsuffix .gif, $(examples))) +png_examples=$(addprefix $(outdir)/, $(addsuffix .png, $(examples))) html_subdirs=$(addprefix --subdirs ,$(SUBDIRS)) @@ -30,4 +25,4 @@ name-stem= $(notdir $(basename $<)) OUT_FILES = $(addprefix $(outdir)/,$(M4_FILES:%.m4=%)) \ $(addprefix $(outdir)/,$(LYM4_FILES:%.lym4=%.ly)) -score_ps = $(addprefix $(outdir)/, $(addsuffix .ps.gz, $($SCORE_LY_FILES))) \ No newline at end of file +score_ps = $(addprefix $(outdir)/, $(addsuffix .ps.gz, $($SCORE_LY_FILES))) diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 9ecf27559d..67127499c7 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,15 +1,15 @@ Begin3 Title: LilyPond -Version: 1.4.8 -Entered-date: 24SEP01 +Version: 1.4.9 +Entered-date: 20NOV01 Description: @BLURB@ Keywords: music notation typesetting midi fonts engraving Author: hanwen@cs.uu.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 1000k lilypond-1.4.8.tar.gz + 1000k lilypond-1.4.9.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 1000k lilypond-1.4.8.tar.gz + 1000k lilypond-1.4.9.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.redhat.spec b/make/out/lilypond.redhat.spec index ba1f430871..d98202de42 100644 --- a/make/out/lilypond.redhat.spec +++ b/make/out/lilypond.redhat.spec @@ -1,11 +1,11 @@ %define info yes Name: lilypond -Version: 1.4.8 +Version: 1.4.9 Release: 1 License: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.4.8.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.4.9.tar.gz Summary: Create and print music notation URL: http://www.cs.uu.nl/~hanwen/lilypond BuildRoot: /tmp/lilypond-install @@ -86,6 +86,9 @@ rm `find /var/lib/texmf -name 'feta*pk -print' -or -name 'feta*tfm -print'` /tmp /sbin/install-info %{_prefix}/info/lilypond.info.gz %{_prefix}/info/dir %endif + +echo 'Please logout first before using LilyPond.' + %preun %if info=="yes" diff --git a/make/out/lilypond.suse.spec b/make/out/lilypond.suse.spec index 7b46cd9b29..41e5b2ccaa 100644 --- a/make/out/lilypond.suse.spec +++ b/make/out/lilypond.suse.spec @@ -14,11 +14,11 @@ Distribution: SuSE Linux 7.0 (i386) Name: lilypond -Version: 1.4.8 +Version: 1.4.9 Release: 2 Copyright: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.4.8.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.4.9.tar.gz # music notation software for.. ? Summary: A program for printing sheet music. URL: http://www.lilypond.org/ diff --git a/mf/GNUmakefile b/mf/GNUmakefile index a2a9463991..0c34abafe0 100644 --- a/mf/GNUmakefile +++ b/mf/GNUmakefile @@ -26,6 +26,8 @@ TEXTABLES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.tex)) AFM_FILES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.afm) $(AF_FILES:.af=.afm) $(addsuffix .afm, $(CM_AFM_FILES))) TFM_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.tfm)) PFA_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.pfa)) +PFB_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.pfb)) + # Make tfm files first, log files last, # so that normally log files aren't made twice diff --git a/po/da.po b/po/da.po index 932804b83d..2089c55f3d 100644 --- a/po/da.po +++ b/po/da.po @@ -1,64 +1,64 @@ # Danish translation of lilypond # Copyright (C) 2001 Free Software Foundation, Inc. # Keld Simonsen , 2001. +# Reviewed 2001-09-28 Rune Zedeler # msgid "" msgstr "" "Project-Id-Version: lilypond 1.4.6\n" -"POT-Creation-Date: 2001-10-09 19:29+0200\n" -"PO-Revision-Date: 2001-09-22 21:00+0200\n" +"POT-Creation-Date: 2001-06-14 13:22+0200\n" +"PO-Revision-Date: 2001-09-28 21:00+0200\n" "Last-Translator: Keld Simonsen \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -#: ly2dvi.py:109 +#: ly2dvi.py:105 msgid "Generate .dvi with LaTeX for LilyPond" msgstr "Generér .dvi med LaTeX for LilyPond" -#: data-file.cc:118 input.cc:85 ly2dvi.py:191 midi-parser.cc:100 mup2ly.py:93 -#: update-lily.py:119 warn.cc:23 +#: data-file.cc:118 input.cc:85 ly2dvi.py:190 midi-parser.cc:100 mup2ly.py:93 +#: update-lily.py:118 warn.cc:23 msgid "warning: " msgstr "advarsel: " -#: input.cc:90 ly2dvi.py:206 ly2dvi.py:638 ly2dvi.py:656 ly2dvi.py:847 -#: mup2ly.py:98 mup2ly.py:188 update-lily.py:124 update-lily.py:212 warn.cc:9 -#: warn.cc:17 +#: input.cc:90 ly2dvi.py:205 ly2dvi.py:804 mup2ly.py:98 mup2ly.py:188 +#: update-lily.py:123 update-lily.py:211 warn.cc:9 warn.cc:17 msgid "error: " msgstr "fejl: " -#: ly2dvi.py:207 mup2ly.py:100 update-lily.py:126 +#: ly2dvi.py:206 mup2ly.py:100 update-lily.py:125 msgid "Exiting ... " msgstr "Afslutter... " -#: ly2dvi.py:265 mup2ly.py:158 update-lily.py:184 +#: ly2dvi.py:264 mup2ly.py:158 update-lily.py:183 #, c-format msgid "Usage: %s [OPTION]... FILE" msgstr "Brug: %s [FLAG]... FIL" -#: ly2dvi.py:269 main.cc:120 main.cc:149 mup2ly.py:162 update-lily.py:188 +#: ly2dvi.py:268 main.cc:120 main.cc:148 mup2ly.py:162 update-lily.py:187 msgid "Options:" msgstr "Flag:" -#: ly2dvi.py:273 main.cc:124 main.cc:172 mup2ly.py:168 update-lily.py:192 +#: ly2dvi.py:272 main.cc:124 main.cc:171 mup2ly.py:168 update-lily.py:191 #, c-format msgid "Report bugs to %s" msgstr "" "Rapportér programfejl til %s\n" "Rapportér fejl i oversættelsen til " -#: ly2dvi.py:305 mup2ly.py:185 update-lily.py:209 +#: ly2dvi.py:305 mup2ly.py:185 update-lily.py:208 #, c-format msgid "Invoking `%s'" msgstr "Starter \"%s\"" -#: ly2dvi.py:309 mup2ly.py:188 update-lily.py:212 +#: ly2dvi.py:309 mup2ly.py:188 update-lily.py:211 #, c-format msgid "command exited with value %d" msgstr "kommandoen afsluttede med værdi %d" -#: ly2dvi.py:311 mup2ly.py:190 update-lily.py:214 +#: ly2dvi.py:311 mup2ly.py:190 update-lily.py:213 msgid "(ignored)" msgstr "(ignoreret)" @@ -68,21 +68,21 @@ msgstr "(ignoreret)" msgid "Cleaning %s..." msgstr "Renser %s..." -#: ly2dvi.py:336 mup2ly.py:214 update-lily.py:238 +#: ly2dvi.py:336 mup2ly.py:214 update-lily.py:237 #, c-format msgid "no such setting: %s" msgstr "indstillingen findes ikke: %s" -#: ly2dvi.py:349 main.cc:113 +#: ly2dvi.py:349 main.cc:112 msgid "write Makefile dependencies for every input file" msgstr "skriv Makefile-afhængigheder for hver inddatafil" # forklaring af flag -h -#: ly2dvi.py:350 main.cc:96 main.cc:109 mup2ly.py:1117 update-lily.py:252 +#: ly2dvi.py:350 main.cc:96 main.cc:108 mup2ly.py:1117 update-lily.py:251 msgid "this help" msgstr "denne hjælp" -#: ly2dvi.py:351 main.cc:111 main.cc:116 +#: ly2dvi.py:351 main.cc:110 main.cc:115 msgid "DIR" msgstr "KATALOG" @@ -100,11 +100,11 @@ msgstr "behold al uddata, og navngiv kataloget %s.dir" msgid "don't run LilyPond" msgstr "kør ikke LilyPond" -#: ly2dvi.py:354 main.cc:114 +#: ly2dvi.py:354 main.cc:113 msgid "produce MIDI output only" msgstr "lav kun MIDI-uddata" -#: ly2dvi.py:355 ly2dvi.py:356 main.cc:99 main.cc:112 main.cc:115 +#: ly2dvi.py:355 main.cc:99 main.cc:111 main.cc:114 msgid "FILE" msgstr "FIL" @@ -112,85 +112,71 @@ msgstr "FIL" msgid "write ouput to FILE" msgstr "skriv uddata til FIL" -#: ly2dvi.py:356 -msgid "find pfa fonts used in FILE" -msgstr "" - -#: ly2dvi.py:358 +#: ly2dvi.py:357 msgid "generate PostScript output" msgstr "lav PostScript-uddata" -#: ly2dvi.py:359 +#: ly2dvi.py:358 msgid "KEY=VAL" msgstr "NØGLE=VÆRDI" -#: ly2dvi.py:359 +#: ly2dvi.py:358 msgid "change global setting KEY to VAL" msgstr "ændr global indstilling NØGLE til VÆRDI" # Førklaring til --verbose (borde være længre) -#: ly2dvi.py:360 main.cc:119 mup2ly.py:1120 update-lily.py:256 +#: ly2dvi.py:359 main.cc:118 mup2ly.py:1120 update-lily.py:255 msgid "verbose" msgstr "udførlig uddata" -#: ly2dvi.py:361 main.cc:105 main.cc:118 mup2ly.py:1121 update-lily.py:257 +#: ly2dvi.py:360 main.cc:105 main.cc:117 mup2ly.py:1121 update-lily.py:256 msgid "print version number" msgstr "vis versionsnummer" -#: ly2dvi.py:362 main.cc:107 main.cc:120 mup2ly.py:1122 update-lily.py:259 +#: ly2dvi.py:361 main.cc:107 main.cc:119 mup2ly.py:1122 update-lily.py:258 msgid "show warranty and copyright" msgstr "vis garanti og copyright" -#: ly2dvi.py:384 ly2dvi.py:579 ly2dvi.py:604 +#: ly2dvi.py:383 ly2dvi.py:578 ly2dvi.py:603 #, c-format msgid "Running %s..." msgstr "Kør %s..." -#: ly2dvi.py:397 +#: ly2dvi.py:396 #, c-format msgid "Analyzing %s..." msgstr "Analyserer %s..." -#: ly2dvi.py:453 +#: ly2dvi.py:452 #, c-format msgid "no lilypond output found for %s" msgstr "ingen lilyponduddata fundet for %s" -#: ly2dvi.py:495 +#: ly2dvi.py:494 #, c-format msgid "invalid value: %s" msgstr "ugyldigt værdi: %s" -#: ly2dvi.py:638 -#, fuzzy, c-format -msgid "not a PostScript file: `%s'" -msgstr "kan ikke åbne fil: \"%s\"" - -#: ly2dvi.py:656 -#, c-format -msgid "getopt says: `%s'" -msgstr "" - # hær er det spørg om skrivning til en fil -#: ly2dvi.py:823 scores.cc:44 +#: ly2dvi.py:781 scores.cc:44 #, c-format msgid "dependencies output to `%s'..." msgstr "afhængigheder udskrevet til \"%s\"..." # hær er det spørg om skrivning til en fil (første parametern er t.ex # DVI, LATEX, MIDI, TEX) -#: ly2dvi.py:834 +#: ly2dvi.py:791 #, c-format msgid "%s output to `%s'..." msgstr "%s udskrevet til \"%s\"..." -#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:836 +#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:793 #: midi-score-parser.cc:24 scores.cc:136 scores.cc:142 #, c-format msgid "can't find file: `%s'" msgstr "kan ikke finde fil: \"%s\"" -#: ly2dvi.py:847 +#: ly2dvi.py:804 msgid "no files specified on command line." msgstr "ingen filer angivne på kommandolinjen." @@ -217,7 +203,7 @@ msgstr "fejls msgid "define macro NAME [optional expansion EXP]" msgstr "definér makro NAVN [valfri makroudvidelse EXP]" -#: main.cc:115 mup2ly.py:1118 +#: main.cc:114 mup2ly.py:1118 msgid "write output to FILE" msgstr "skriv uddata til FIL" @@ -239,80 +225,80 @@ msgstr "Skriver \"%s\"..." msgid "Fetch and rebuild from latest source package" msgstr "Hent og byg om fra seneste kildekodepakke" -#: update-lily.py:224 +#: update-lily.py:223 #, c-format msgid "Cleaning `%s'..." msgstr "Renser \"%s\"..." -#: update-lily.py:244 +#: update-lily.py:243 #, c-format msgid "unpack and build in DIR [%s]" msgstr "udpak og byg i DIR [%s]" -#: update-lily.py:245 +#: update-lily.py:244 msgid "execute COMMAND, subtitute:" msgstr "kør COMMAND, erstat:" -#: update-lily.py:246 +#: update-lily.py:245 msgid "%b: build root" msgstr "%b: rod for opbygning" -#: update-lily.py:247 +#: update-lily.py:246 #, c-format msgid "%n: package name" msgstr "%n: pakkenavn" -#: update-lily.py:248 +#: update-lily.py:247 msgid "%r: release directory" msgstr "%r: katalog for programudgivelse" -#: update-lily.py:249 +#: update-lily.py:248 msgid "%t: tarball" msgstr "%t: tarball" -#: update-lily.py:250 +#: update-lily.py:249 msgid "%v: package version" msgstr "%v: pakkeversion" -#: update-lily.py:253 +#: update-lily.py:252 #, c-format msgid "keep all output, and name the directory %s" msgstr "behold al uddata, og døb kataloget til %s" -#: update-lily.py:254 +#: update-lily.py:253 msgid "upon failure notify EMAIL[,EMAIL]" msgstr "ved fejl, underret EMAIL[,EMAIL]" -#: update-lily.py:255 +#: update-lily.py:254 msgid "remove previous build" msgstr "fjern foregående bygning" -#: update-lily.py:258 +#: update-lily.py:257 #, c-format msgid "fetch and build URL [%s]" msgstr "hent og byg URL [%s]" -#: update-lily.py:366 +#: update-lily.py:365 #, c-format msgid "Listing `%s'..." msgstr "Lister \"%s\"..." -#: update-lily.py:427 +#: update-lily.py:426 #, c-format msgid "latest is: %s" msgstr "seneste er: %s" -#: update-lily.py:428 +#: update-lily.py:427 #, c-format msgid "relax, %s is up to date" msgstr "slap af, %s er seneste version" -#: update-lily.py:436 update-lily.py:449 +#: update-lily.py:435 update-lily.py:448 #, c-format msgid "Fetching `%s'..." msgstr "Henter \"%s\"..." -#: update-lily.py:458 +#: update-lily.py:457 #, c-format msgid "Building `%s'..." msgstr "Bygger \"%s\"..." @@ -403,12 +389,8 @@ msgid "does not match: `%s'" msgstr "matcher ikke: \"%s\"" #: all-font-metrics.cc:102 -msgid "" -" Rebuild all .afm files, and remove all .pk and .tfm files. Rerun with -V " -"to show font paths." -msgstr "" -" Genopbyg alle .afm-filer, og fjern alle .pk- og .tfm-filer. Kør igen med -V " -"for at vise skrifttypesøgestier." +msgid " Rebuild all .afm files, and remove all .pk and .tfm files. Rerun with -V to show font paths." +msgstr " Genopbyg alle .afm-filer, og fjern alle .pk- og .tfm-filer. Kør igen med -V for at vise skrifttypesøgestier." #: all-font-metrics.cc:167 #, c-format @@ -438,6 +420,14 @@ msgstr "Giver op" msgid "Can't switch translators, I'm there already" msgstr "Kan ikke skifte oversætter, jeg er her allerede" +#: beam.cc:86 +msgid "beam has less than two stems" +msgstr "bjælke har mindre end to nodehalse" + +#: beam.cc:637 +msgid "weird beam vertical offset" +msgstr "underlig lodret afstand for bjælke" + #: beam-engraver.cc:91 beam-engraver.cc:124 msgid "can't find start of beam" msgstr "kan ikke finde start på bjælke" @@ -462,14 +452,6 @@ msgstr "nodehalsen passer ikke i bj msgid "beam was started here" msgstr "bjælken startede her" -#: beam.cc:86 -msgid "beam has less than two stems" -msgstr "bjælke har mindre end to nodehalse" - -#: beam.cc:637 -msgid "weird beam vertical offset" -msgstr "underligt lodret afstand for bjælke" - #: break-align-item.cc:136 #, c-format msgid "unknown spacing pair `%s', `%s'" @@ -494,28 +476,28 @@ msgstr "Jeg er selv msgid "none of these in my family" msgstr "ingen af disse i min familie" -#: chord-tremolo-engraver.cc:141 percent-repeat-engraver.cc:192 -msgid "unterminated chord tremolo" -msgstr "ikke-afsluttet akkordtremolo" - -#: chord-tremolo-iterator.cc:48 -msgid "no one to print a tremolos" -msgstr "der er ingen som kan skrive en tremolo" - -#: chord.cc:376 +#: chord.cc:369 #, c-format msgid "invalid subtraction: not part of chord: %s" msgstr "ugyldig subtraktion: ikke del af akkord: %s" # "pitch" hær skal alltså være en ton i et akkord -#: chord.cc:405 +#: chord.cc:398 #, c-format msgid "invalid inversion pitch: not part of chord: %s" msgstr "ugyldig tone for inversion: ikke del af en akkord: %s" +#: chord-tremolo-engraver.cc:141 percent-repeat-engraver.cc:192 +msgid "unterminated chord tremolo" +msgstr "ikke-afsluttet akkordtremolo" + +#: chord-tremolo-iterator.cc:48 +msgid "no one to print a tremolos" +msgstr "der er ingen som kan skrive en tremolo" + #: collision.cc:127 msgid "Too many clashing notecolumns. Ignoring them." -msgstr "For mange sammenhængende nodekolonner. Ignorerer dem." +msgstr "For mange overlappende nodekolonner. Ignorerer dem." #: dimensions.cc:13 msgid "NaN" @@ -543,13 +525,11 @@ msgstr "uafsluttet udvider" #: extender-engraver.cc:109 msgid "Nothing to connect extender to on the left. Ignoring extender request." -msgstr "" -"Der er ingenting at forbinde udvideren mod til venstre. Ignorerer ønsket om " -"udvider" +msgstr "Der er ingenting at forbinde udvideren mod til venstre. Ignorerer ønsket om udvider" #: folded-repeat-iterator.cc:78 msgid "no one to print a repeat brace" -msgstr "det er ingen som kan skrive et gentagelsestegn" +msgstr "der er ingen som kan skrive et gentagelsestegn" #: font-interface.cc:237 msgid "couldn't find any font satisfying " @@ -561,11 +541,11 @@ msgstr "Ingen mulig linjebrydning fandtes" #: grace-iterator.cc:43 msgid "no Grace context available" -msgstr "ingen prydomgivelse tilgængelig" +msgstr "ingen forslagsnodeomgivelse (Grace) tilgængelig" #: grace-position-engraver.cc:96 msgid "Unattached grace notes. Attaching to last musical column." -msgstr "Ikke-fæstede prydsnoder. Fæster ved sidste musikkolonne." +msgstr "Ikke-fæstede forslagsnoder. Fæster ved sidste musikkolonne." #: hairpin.cc:93 msgid "decrescendo too small" @@ -581,9 +561,7 @@ msgstr "uafsluttet bindestreg" #: hyphen-engraver.cc:102 msgid "Nothing to connect hyphen to on the left. Ignoring hyphen request." -msgstr "" -"Det er ingenting at forbinde bindestregen mod til venstre. Ignorerer " -"bindestregsforespørgslen." +msgstr "Der er ingenting at forbinde bindestregen med til venstre. Ignorerer bindestregsforespørgslen." #: key-engraver.cc:99 msgid "Conflicting key signatures found." @@ -600,7 +578,7 @@ msgstr "FIX: tonartsskiftsfletning" #: lily-guile.cc:141 #, c-format msgid "(load path: `%s')" -msgstr "(indlæsningssøgesti: \"%s\"" +msgstr "(indlæsningssøgesti: \"%s\")" #: line-of-score.cc:96 #, c-format @@ -618,68 +596,67 @@ msgstr "Beregner kolonnepositioner..." #: lyric-phrasing-engraver.cc:284 msgid "lyrics found without any matching notehead" -msgstr "tekst fundet uden noget matchende nodehoved" +msgstr "tekst fundet uden noget tilhørende nodehoved" #: lyric-phrasing-engraver.cc:289 msgid "Huh? Melismatic note found to have associated lyrics." msgstr "Øh? Melismatisk node har tilhørende tekst." -#. print example usage: lilypond -e "(set-lily-option 'help 0)" ? -#: main.cc:105 +#: main.cc:104 msgid "EXPR" msgstr "UDTR" -#: main.cc:105 +#: main.cc:104 msgid "evalute EXPR as Scheme after .scm init is read" msgstr "evaluér UDTR som Scheme efter .scm-init er læst" #. another bug in option parser: --output=foe is taken as an abbreviation #. for --output-format -#: main.cc:108 +#: main.cc:107 msgid "EXT" msgstr "FMT" -#: main.cc:108 +#: main.cc:107 msgid "use output format EXT (scm, ps, tex or as)" msgstr "brug uddataformat FMT (scm, ps, tex eller as)" -#: main.cc:110 +#: main.cc:109 msgid "FIELD" msgstr "FELT" -#: main.cc:110 +#: main.cc:109 msgid "write header field to BASENAME.FIELD" -msgstr "skriv rubrikfælt til BASNAVN.FELT" +msgstr "skriv rubrikfelt til BASENAVN.FELT" -#: main.cc:111 +#: main.cc:110 msgid "add DIR to search path" msgstr "tilføj KATALOG til søgestien" -#: main.cc:112 +#: main.cc:111 msgid "use FILE as init file" msgstr "brug FIL som init-fil" -#: main.cc:116 +#: main.cc:115 msgid "prepend DIR to dependencies" msgstr "tilføj KATALOG efter afhængigheder" -#: main.cc:117 +#: main.cc:116 msgid "inhibit file output naming and exporting" msgstr "hindr navngivning af filuddata og eksportering" #. #. No version number or newline here. It confuses help2man #. -#: main.cc:137 +#: main.cc:136 #, c-format msgid "Usage: %s [OPTION]... FILE..." msgstr "Brug: %s [FLAG]... FIL..." -#: main.cc:139 +#: main.cc:138 msgid "Typeset music and or play MIDI from FILE" msgstr "Typesæt musik og/eller afspil MIDI fra FIL" -#: main.cc:143 +#: main.cc:142 msgid "" "LilyPond is a music typesetter. It produces beautiful sheet music\n" "using a high level description file as input. LilyPond is part of \n" @@ -689,11 +666,11 @@ msgstr "" "højniveaubeskrivning af musikken i en fil. LilyPond er en del af\n" "GNU-projektet.\n" -#: main.cc:153 +#: main.cc:152 msgid "This binary was compiled with the following options:" msgstr "Dette program blev oversat med følgende flag:" -#: main.cc:56 main.cc:180 +#: main.cc:56 main.cc:179 #, c-format msgid "" "This is free software. It is covered by the GNU General Public License,\n" @@ -704,16 +681,16 @@ msgstr "" "og du må ændre og/eller distribuere kopier af det under visse\n" "betingelser. Kør \"%s --warranty\" for mere information.\n" -#: main.cc:63 main.cc:187 main.cc:199 +#: main.cc:63 main.cc:186 main.cc:198 #, c-format msgid "Copyright (c) %s by" msgstr "Copyright © %s af" -#: main.cc:197 +#: main.cc:196 msgid "GNU LilyPond -- The music typesetter" msgstr "GNU Lilypond -- Musiktypesætteren" -#: main.cc:72 main.cc:205 +#: main.cc:72 main.cc:204 msgid "" " This program is free software; you can redistribute it and/or\n" "modify it under the terms of the GNU General Public License version 2\n" @@ -755,10 +732,10 @@ msgstr "t msgid "silly pitch" msgstr "tåbelig tone" -#: music-output-def.cc:115 +#: musical-request.cc:28 #, c-format -msgid "can't find `%s' context" -msgstr "kan ikke finde omgivelsen \"%s\"" +msgid "Transposition by %s makes accidental larger than two" +msgstr "Transponering med %s medfører løst fortegn større end to" #: music.cc:232 msgid "ly_get_mus_property (): Not a Music" @@ -780,10 +757,10 @@ msgstr "ly_make_music (): Ikke en streng" msgid "ly_music_name (): Not a music expression" msgstr "ly_music_name (): Ikke et musikudtryk" -#: musical-request.cc:28 +#: music-output-def.cc:115 #, c-format -msgid "Transposition by %s makes accidental larger than two" -msgstr "Transponering med %s gør accicental større end to" +msgid "can't find `%s' context" +msgstr "kan ikke finde omgivelsen \"%s\"" #: my-lily-lexer.cc:139 #, c-format @@ -801,7 +778,7 @@ msgstr "Tolker..." #: my-lily-parser.cc:57 msgid "Braces don't match" -msgstr "Krølleparenteser passer ikke" +msgstr "Klammer passer ikke" #: output-property-music-iterator.cc:20 request-chord-iterator.cc:76 #, c-format @@ -857,11 +834,11 @@ msgstr "ingen af disse i min familie: \"%s\"" #: percent-repeat-engraver.cc:117 msgid "Don't know how to handle a percent repeat of this length." -msgstr "Véd ikke hvordan en procentgentagelse af denne længde skal håndteres." +msgstr "Véd ikke hvordan en procenttegnsgentagelse (percent) af denne længde skal håndteres." #: percent-repeat-iterator.cc:53 msgid "no one to print a percent" -msgstr "der er ingen som kan skrive en procent" +msgstr "der er ingen som kan skrive et procent-tegn" #: performance.cc:51 msgid "Track ... " @@ -890,7 +867,7 @@ msgid "can't find start of phrasing slur" msgstr "kan ikke finde start på fraseringsbue" #: piano-pedal-engraver.cc:142 piano-pedal-engraver.cc:154 -#: piano-pedal-performer.cc:86 +#: piano-pedal-performer.cc:87 #, c-format msgid "can't find start of piano pedal: `%s'" msgstr "kan ikke finde start på pianopedal: \"%s\"" @@ -921,15 +898,10 @@ msgstr "for mange kolliderende pauser" msgid "too many notes for rest collision" msgstr "for mange noder for pausesammenstød" -#: scm-option.cc:63 +#: scm-option.cc:59 msgid "Scheme options:" msgstr "Scheme-flag:" -#: score-engraver.cc:188 -#, c-format -msgid "unbound spanner `%s'" -msgstr "ubunden bro \"%s\"" - #: score.cc:78 msgid "Interpreting music..." msgstr "Tolker musik..." @@ -948,6 +920,11 @@ msgstr "Fejl fundne/*, behandler ikke partitur*/" msgid "elapsed time: %.2f seconds" msgstr "tidsforbrug: %.2f sekunder" +#: score-engraver.cc:188 +#, c-format +msgid "unbound spanner `%s'" +msgstr "ubunden bro \"%s\"" + #: scores.cc:106 msgid "Score contains errors; will not process it" msgstr "Partitur indholder fejl; vil ikke behandle det" @@ -967,32 +944,36 @@ msgstr "Kan ikke tolke artikulering \"%s\"" msgid "Separation_item: I've been drinking too much" msgstr "Separation_item: Jeg har drukket for meget" +#: slur.cc:48 +msgid "Putting slur over rest. Ignoring." +msgstr "Sætter legatobue over pause. Ignorerer." + +#: slur.cc:383 +msgid "Slur over rest?" +msgstr "Legatobue over pause?" + #: slur-engraver.cc:127 msgid "unterminated slur" -msgstr "uafsluttet bue" +msgstr "uafsluttet legatobue" #. How to shut up this warning, when Voice_devnull_engraver has #. eaten start request? #: slur-engraver.cc:144 msgid "can't find start of slur" -msgstr "kan ikke finde start på bue" +msgstr "kan ikke finde start på legatobue" -#: slur.cc:48 -msgid "Putting slur over rest. Ignoring." -msgstr "Sætter bue over pause. Ignorerer." - -#: slur.cc:383 -msgid "Slur over rest?" -msgstr "Bue over pause?" +#: stem.cc:116 +msgid "Weird stem size; check for narrow beams" +msgstr "Mærkelig nodehalsstørrelse; tjek for smalle bjælker" #: stem-engraver.cc:115 #, c-format msgid "Adding note head to incompatible stem (type = %d)" -msgstr "Tilføjer nodehoved til inkompatibel bue (type = %d)" +msgstr "Tilføjer nodehoved til inkompatibel nodehals (type = %d)" -#: stem.cc:116 -msgid "Weird stem size; check for narrow beams" -msgstr "Mærkelig nodehalsstørrelse; tjek for smalle bjælker" +#: text-spanner.cc:121 +msgid "Text_spanner too small" +msgstr "Tekst_bro for lille" #: text-spanner-engraver.cc:94 msgid "can't find start of text spanner" @@ -1006,9 +987,10 @@ msgstr "har allerede en tekstbro" msgid "unterminated text spanner" msgstr "uafsluttet tekstbro" -#: text-spanner.cc:121 -msgid "Text_spanner too small" -msgstr "Tekst_bro for lille" +#: tfm.cc:77 +#, c-format +msgid "can't find ascii character: %d" +msgstr "kan ikke finde ASCII-tegn: %d" #: tfm-reader.cc:106 #, c-format @@ -1018,27 +1000,21 @@ msgstr "TFM-rubrik i \"%s\" har kun %u ord" #: tfm-reader.cc:140 #, c-format msgid "%s: TFM file has %u parameters, which is more than the %u I can handle" -msgstr "" -"%s: TFM-fil har %u parametre, hvilket er mere end de %u jeg kan håndtere" - -#: tfm.cc:77 -#, c-format -msgid "can't find ascii character: %d" -msgstr "kan ikke finde ASCII-tegn: %d" +msgstr "%s: TFM-fil har %u parametre, hvilket er mere end de %u jeg kan håndtere" #. How to shut up this warning, when no notes appeared because #. they were suicided by Thread_devnull_engraver? #: tie-engraver.cc:220 tie-performer.cc:173 msgid "No ties were created!" -msgstr "Ingen buer blev lavet!" +msgstr "Ingen bindebuer blev lavet!" #: tie-engraver.cc:240 msgid "lonely tie" -msgstr "ensom bue" +msgstr "ensom bindebue" #: time-scaled-music-iterator.cc:25 msgid "no one to print a tuplet start bracket" -msgstr "der findes ingen som kan skrive en startparentes for tuppel" +msgstr "der findes ingen som kan skrive en startklamme for tuppel" #: timing-translator.cc:38 #, c-format @@ -1081,18 +1057,13 @@ msgstr "kan ikke finde eller oprette: \"%s\"" #: translator-group.cc:414 #, c-format -msgid "" -"Can't find property type-check for `%s'. Perhaps you made a typing error? " -"Doing assignment anyway." -msgstr "" -"Kan ikke finde egenskabstypekontrol for \"%s\". Måske har du lavet en " -"tastefejl? Laver tildeling alligevel." +msgid "Can't find property type-check for `%s'. Perhaps you made a typing error? Doing assignment anyway." +msgstr "Kan ikke finde egenskabstypekontrol for \"%s\". Måske har du lavet en tastefejl? Laver tildeling alligevel." #: translator-group.cc:428 #, c-format msgid "Type check for `%s' failed; value `%s' must be of type `%s'" -msgstr "" -"Typekontrol for \"%s\" mislykkedes; værdi \"%s\" skal have typen \"%s\"" +msgstr "Typekontrol for \"%s\" mislykkedes; værdi \"%s\" skal have typen \"%s\"" #. programming_error? #: translator-group.cc:447 @@ -1101,11 +1072,11 @@ msgstr "ly-get-trans-property: forventede et Translator_group-argument" #: volta-engraver.cc:87 msgid "No volta spanner to end" -msgstr "Ingen reprisebro til slut" +msgstr "Ingen volte-bro at afslutte" #: volta-engraver.cc:104 msgid "Already have a volta spanner. Stopping that one prematurely." -msgstr "Har allerede en reprisebro. Stopper denne for tidligt." +msgstr "Har allerede en volte-bro. Stopper denne for tidligt." #: volta-engraver.cc:108 msgid "Also have a stopped spanner. Giving up." @@ -1122,7 +1093,7 @@ msgstr "Identificerer m #: parser.yy:697 msgid "More alternatives than repeats. Junking excess alternatives." -msgstr "Flere alternativer end repriser. Stryger tiloversblevne alternativer." +msgstr "Flere alternativer end gentagelser. Stryger tiloversblevne alternativer." #: parser.yy:761 msgid "Second argument must be a symbol" @@ -1132,32 +1103,32 @@ msgstr "Andet argument skal v msgid "First argument must be a procedure taking 1 argument" msgstr "Første argument skal være en procedure som tager 1 argument" -#: parser.yy:1264 +#: parser.yy:1263 msgid "Expecting string as script definition" msgstr "Forventer streng som skriptdefinition" -#: parser.yy:1274 +#: parser.yy:1273 msgid "Can't specify direction for this request" msgstr "Kan ikke angive retning for denne forespørgsel" -#: parser.yy:1399 +#: parser.yy:1398 msgid "Expecting musical-pitch value" msgstr "Forventer nodeværdi" -#: parser.yy:1410 +#: parser.yy:1409 msgid "Must have duration object" msgstr "Skal have tidslængdeobjekt" -#: parser.yy:1419 parser.yy:1427 +#: parser.yy:1418 parser.yy:1426 msgid "Have to be in Lyric mode for lyrics" msgstr "Skal være i teksttilstand (Lyric mode) for tekst" -#: parser.yy:1580 parser.yy:1637 +#: parser.yy:1579 parser.yy:1636 #, c-format msgid "not a duration: %d" msgstr "ikke en tidslængde: %d" -#: parser.yy:1648 +#: parser.yy:1645 msgid "Have to be in Note mode for notes" msgstr "Skal være i nodetilstand (Note mode) for noder" @@ -1165,7 +1136,7 @@ msgstr "Skal v msgid "Have to be in Chord mode for chords" msgstr "Skal være i akkordtilstand (Chord mode) for akkord" -#: parser.yy:1911 +#: parser.yy:1910 msgid "need integer number arg" msgstr "behøver heltalsargument" @@ -1309,9 +1280,8 @@ msgid "ACC[:MINOR]" msgstr "TONE[:MOL]" #: main.cc:97 -#, fuzzy -msgid "set key: ACC +sharps/-flats; :1 minor" -msgstr "sæt tonart: TONE +forhøjelser/-sænkninger; :1 mol" +msgid "set key: ACC +sharps/-flads; :1 minor" +msgstr "sæt toneart: TONE +forhøjelser/-sænkninger; :1 mol" #: main.cc:98 msgid "don't output tuplets, double dots or rests, smallest is 32" diff --git a/po/de.po b/po/de.po index 4f736b4a91..e40f655d1c 100644 --- a/po/de.po +++ b/po/de.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Lilypond 1.2.8\n" -"POT-Creation-Date: 2001-10-09 19:29+0200\n" +"POT-Creation-Date: 2001-09-09 17:30+0200\n" "PO-Revision-Date: 1999-09-18 01:30+0200\n" "Last-Translator: Erwin Dieterich \n" "Language-Team: LANGUAGE \n" @@ -13,181 +13,181 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: ENCODING\n" -#: ly2dvi.py:109 +#: ly2dvi.py:106 msgid "Generate .dvi with LaTeX for LilyPond" msgstr "" #: data-file.cc:118 input.cc:85 ly2dvi.py:191 midi-parser.cc:100 mup2ly.py:93 -#: update-lily.py:119 warn.cc:23 +#: update-lily.py:118 warn.cc:23 msgid "warning: " msgstr "Warnung: " -#: input.cc:90 ly2dvi.py:206 ly2dvi.py:638 ly2dvi.py:656 ly2dvi.py:847 -#: mup2ly.py:98 mup2ly.py:188 update-lily.py:124 update-lily.py:212 warn.cc:9 +#: input.cc:90 ly2dvi.py:206 ly2dvi.py:639 ly2dvi.py:657 ly2dvi.py:848 +#: mup2ly.py:98 mup2ly.py:188 update-lily.py:123 update-lily.py:211 warn.cc:9 #: warn.cc:17 msgid "error: " msgstr "Fehler: " -#: ly2dvi.py:207 mup2ly.py:100 update-lily.py:126 +#: ly2dvi.py:207 mup2ly.py:100 update-lily.py:125 #, fuzzy msgid "Exiting ... " msgstr "Linie ... " -#: ly2dvi.py:265 mup2ly.py:158 update-lily.py:184 +#: ly2dvi.py:265 mup2ly.py:158 update-lily.py:183 #, fuzzy, c-format msgid "Usage: %s [OPTION]... FILE" msgstr "Verwendung: %s [OPTIONEN] ... [DATEI]" -#: ly2dvi.py:269 main.cc:120 main.cc:149 mup2ly.py:162 update-lily.py:188 +#: ly2dvi.py:269 main.cc:120 main.cc:149 mup2ly.py:162 update-lily.py:187 msgid "Options:" msgstr "Optionen:" -#: ly2dvi.py:273 main.cc:124 main.cc:172 mup2ly.py:168 update-lily.py:192 +#: ly2dvi.py:273 main.cc:124 main.cc:172 mup2ly.py:168 update-lily.py:191 #, fuzzy, c-format msgid "Report bugs to %s" msgstr "Melde Fehler an" -#: ly2dvi.py:305 mup2ly.py:185 update-lily.py:209 +#: ly2dvi.py:306 mup2ly.py:185 update-lily.py:208 #, fuzzy, c-format msgid "Invoking `%s'" msgstr "Uralt-Bitte: `%s'" -#: ly2dvi.py:309 mup2ly.py:188 update-lily.py:212 +#: ly2dvi.py:310 mup2ly.py:188 update-lily.py:211 #, c-format msgid "command exited with value %d" msgstr "" -#: ly2dvi.py:311 mup2ly.py:190 update-lily.py:214 +#: ly2dvi.py:312 mup2ly.py:190 update-lily.py:213 msgid "(ignored)" msgstr "" -#: ly2dvi.py:321 +#: ly2dvi.py:322 #, fuzzy, c-format msgid "Cleaning %s..." msgstr "Uralt-Bitte: `%s'" -#: ly2dvi.py:336 mup2ly.py:214 update-lily.py:238 +#: ly2dvi.py:337 mup2ly.py:214 update-lily.py:237 #, fuzzy, c-format msgid "no such setting: %s" msgstr "Kein solches instrument: `%s'" -#: ly2dvi.py:349 main.cc:113 +#: ly2dvi.py:350 main.cc:113 msgid "write Makefile dependencies for every input file" msgstr "Schreibe Makefile-Abhängigkeiten für jede Eingabedatei" -#: ly2dvi.py:350 main.cc:96 main.cc:109 mup2ly.py:1117 update-lily.py:252 +#: ly2dvi.py:351 main.cc:96 main.cc:109 mup2ly.py:1117 update-lily.py:251 msgid "this help" msgstr "Diese Hilfe" -#: ly2dvi.py:351 main.cc:111 main.cc:116 +#: ly2dvi.py:352 main.cc:111 main.cc:116 msgid "DIR" msgstr "DIR" -#: ly2dvi.py:351 +#: ly2dvi.py:352 #, fuzzy msgid "add DIR to LilyPond's search path" msgstr "Hänge DIR an den Suchpfad an" -#: ly2dvi.py:352 +#: ly2dvi.py:353 #, c-format msgid "keep all output, and name the directory %s.dir" msgstr "" -#: ly2dvi.py:353 +#: ly2dvi.py:354 msgid "don't run LilyPond" msgstr "" -#: ly2dvi.py:354 main.cc:114 +#: ly2dvi.py:355 main.cc:114 #, fuzzy msgid "produce MIDI output only" msgstr "Nur Midiausgabe" -#: ly2dvi.py:355 ly2dvi.py:356 main.cc:99 main.cc:112 main.cc:115 +#: ly2dvi.py:356 ly2dvi.py:357 main.cc:99 main.cc:112 main.cc:115 msgid "FILE" msgstr "DATEI" -#: ly2dvi.py:355 +#: ly2dvi.py:356 #, fuzzy msgid "write ouput to FILE" msgstr "Schreibe die Ausgabe in BASENAME[-x].Erweiterung" -#: ly2dvi.py:356 +#: ly2dvi.py:357 msgid "find pfa fonts used in FILE" msgstr "" -#: ly2dvi.py:358 +#: ly2dvi.py:359 #, fuzzy msgid "generate PostScript output" msgstr "Degenerierte Zwangsbedingungen" -#: ly2dvi.py:359 +#: ly2dvi.py:360 msgid "KEY=VAL" msgstr "" -#: ly2dvi.py:359 +#: ly2dvi.py:360 msgid "change global setting KEY to VAL" msgstr "" -#: ly2dvi.py:360 main.cc:119 mup2ly.py:1120 update-lily.py:256 +#: ly2dvi.py:361 main.cc:119 mup2ly.py:1120 update-lily.py:255 #, fuzzy msgid "verbose" msgstr "Sei geschwätzig" -#: ly2dvi.py:361 main.cc:105 main.cc:118 mup2ly.py:1121 update-lily.py:257 +#: ly2dvi.py:362 main.cc:105 main.cc:118 mup2ly.py:1121 update-lily.py:256 msgid "print version number" msgstr "Zeige die Versionsnummer" -#: ly2dvi.py:362 main.cc:107 main.cc:120 mup2ly.py:1122 update-lily.py:259 +#: ly2dvi.py:363 main.cc:107 main.cc:120 mup2ly.py:1122 update-lily.py:258 msgid "show warranty and copyright" msgstr "Zeige Garantie und Urheberrechte" -#: ly2dvi.py:384 ly2dvi.py:579 ly2dvi.py:604 +#: ly2dvi.py:385 ly2dvi.py:580 ly2dvi.py:605 #, fuzzy, c-format msgid "Running %s..." msgstr "Uralt-Bitte: `%s'" -#: ly2dvi.py:397 +#: ly2dvi.py:398 #, fuzzy, c-format msgid "Analyzing %s..." msgstr "Uralt-Bitte: `%s'" -#: ly2dvi.py:453 +#: ly2dvi.py:454 #, c-format msgid "no lilypond output found for %s" msgstr "" -#: ly2dvi.py:495 +#: ly2dvi.py:496 #, fuzzy, c-format msgid "invalid value: %s" msgstr "Ungültiger Buchstabe `%c'" -#: ly2dvi.py:638 +#: ly2dvi.py:639 #, fuzzy, c-format msgid "not a PostScript file: `%s'" msgstr "Kann die Datei %s nicht öffnen" -#: ly2dvi.py:656 +#: ly2dvi.py:657 #, c-format msgid "getopt says: `%s'" msgstr "" -#: ly2dvi.py:823 scores.cc:44 +#: ly2dvi.py:824 scores.cc:44 #, fuzzy, c-format msgid "dependencies output to `%s'..." msgstr "Ausgabe auf Papier auf %s..." -#: ly2dvi.py:834 +#: ly2dvi.py:835 #, fuzzy, c-format msgid "%s output to `%s'..." msgstr "MIDI-Ausgabe nach %s..." -#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:836 +#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:837 #: midi-score-parser.cc:24 scores.cc:136 scores.cc:142 #, c-format msgid "can't find file: `%s'" msgstr "Kann Datei `%s' nicht finden" -#: ly2dvi.py:847 +#: ly2dvi.py:848 msgid "no files specified on command line." msgstr "" @@ -236,81 +236,81 @@ msgstr "Linie ... " msgid "Fetch and rebuild from latest source package" msgstr "" -#: update-lily.py:224 +#: update-lily.py:223 #, fuzzy, c-format msgid "Cleaning `%s'..." msgstr "Uralt-Bitte: `%s'" -#: update-lily.py:244 +#: update-lily.py:243 #, c-format msgid "unpack and build in DIR [%s]" msgstr "" -#: update-lily.py:245 +#: update-lily.py:244 msgid "execute COMMAND, subtitute:" msgstr "" -#: update-lily.py:246 +#: update-lily.py:245 msgid "%b: build root" msgstr "" -#: update-lily.py:247 +#: update-lily.py:246 #, c-format msgid "%n: package name" msgstr "" -#: update-lily.py:248 +#: update-lily.py:247 #, fuzzy msgid "%r: release directory" msgstr "Kann ein `%s' weder finden noch erzeugen" -#: update-lily.py:249 +#: update-lily.py:248 msgid "%t: tarball" msgstr "" -#: update-lily.py:250 +#: update-lily.py:249 msgid "%v: package version" msgstr "" -#: update-lily.py:253 +#: update-lily.py:252 #, c-format msgid "keep all output, and name the directory %s" msgstr "" -#: update-lily.py:254 +#: update-lily.py:253 msgid "upon failure notify EMAIL[,EMAIL]" msgstr "" -#: update-lily.py:255 +#: update-lily.py:254 msgid "remove previous build" msgstr "" -#: update-lily.py:258 +#: update-lily.py:257 #, c-format msgid "fetch and build URL [%s]" msgstr "" -#: update-lily.py:366 +#: update-lily.py:365 #, fuzzy, c-format msgid "Listing `%s'..." msgstr "Linie ... " -#: update-lily.py:427 +#: update-lily.py:426 #, c-format msgid "latest is: %s" msgstr "" -#: update-lily.py:428 +#: update-lily.py:427 #, c-format msgid "relax, %s is up to date" msgstr "" -#: update-lily.py:436 update-lily.py:449 +#: update-lily.py:435 update-lily.py:448 #, fuzzy, c-format msgid "Fetching `%s'..." msgstr "Uralt-Bitte: `%s'" -#: update-lily.py:458 +#: update-lily.py:457 #, fuzzy, c-format msgid "Building `%s'..." msgstr "Uralt-Bitte: `%s'" @@ -914,7 +914,7 @@ msgid "can't find start of phrasing slur" msgstr "Kann nicht beide Enden von %s finden" #: piano-pedal-engraver.cc:142 piano-pedal-engraver.cc:154 -#: piano-pedal-performer.cc:86 +#: piano-pedal-performer.cc:87 #, fuzzy, c-format msgid "can't find start of piano pedal: `%s'" msgstr "Kann keine kürzeste Note bei %s finden" @@ -1165,34 +1165,34 @@ msgstr "" msgid "First argument must be a procedure taking 1 argument" msgstr "" -#: parser.yy:1264 +#: parser.yy:1263 msgid "Expecting string as script definition" msgstr "" -#: parser.yy:1274 +#: parser.yy:1273 msgid "Can't specify direction for this request" msgstr "" -#: parser.yy:1399 +#: parser.yy:1398 msgid "Expecting musical-pitch value" msgstr "" -#: parser.yy:1410 +#: parser.yy:1409 #, fuzzy msgid "Must have duration object" msgstr "Setze kürzeste Dauer (?)" -#: parser.yy:1419 parser.yy:1427 +#: parser.yy:1418 parser.yy:1426 #, fuzzy msgid "Have to be in Lyric mode for lyrics" msgstr "Um Text zu verarbeiten, muß ich im Text-(Lyrics)-Modus sein" -#: parser.yy:1580 parser.yy:1637 +#: parser.yy:1579 parser.yy:1636 #, c-format msgid "not a duration: %d" msgstr "Keine Dauer: %d" -#: parser.yy:1648 +#: parser.yy:1645 #, fuzzy msgid "Have to be in Note mode for notes" msgstr "Für Noten muß ich im Noten-(Note)-Modus sein" diff --git a/po/fr.po b/po/fr.po index 1def9ca869..feffb80143 100644 --- a/po/fr.po +++ b/po/fr.po @@ -6,184 +6,184 @@ msgid "" msgstr "" "Project-Id-Version: lilypond 1.3.18\n" -"POT-Creation-Date: 2001-10-09 19:29+0200\n" +"POT-Creation-Date: 2001-09-09 17:30+0200\n" "PO-Revision-Date: 1999-12-28 00:32 +1\n" "Last-Translator: Laurent Martelli \n" "Language-Team: \n" "MIME-Version: 1.0\n" -#: ly2dvi.py:109 +#: ly2dvi.py:106 msgid "Generate .dvi with LaTeX for LilyPond" msgstr "" #: data-file.cc:118 input.cc:85 ly2dvi.py:191 midi-parser.cc:100 mup2ly.py:93 -#: update-lily.py:119 warn.cc:23 +#: update-lily.py:118 warn.cc:23 msgid "warning: " msgstr "avertissement: " -#: input.cc:90 ly2dvi.py:206 ly2dvi.py:638 ly2dvi.py:656 ly2dvi.py:847 -#: mup2ly.py:98 mup2ly.py:188 update-lily.py:124 update-lily.py:212 warn.cc:9 +#: input.cc:90 ly2dvi.py:206 ly2dvi.py:639 ly2dvi.py:657 ly2dvi.py:848 +#: mup2ly.py:98 mup2ly.py:188 update-lily.py:123 update-lily.py:211 warn.cc:9 #: warn.cc:17 msgid "error: " msgstr "erreur: " -#: ly2dvi.py:207 mup2ly.py:100 update-lily.py:126 +#: ly2dvi.py:207 mup2ly.py:100 update-lily.py:125 #, fuzzy msgid "Exiting ... " msgstr "Ligne ..." -#: ly2dvi.py:265 mup2ly.py:158 update-lily.py:184 +#: ly2dvi.py:265 mup2ly.py:158 update-lily.py:183 #, fuzzy, c-format msgid "Usage: %s [OPTION]... FILE" msgstr "Usage: %s [OPTION... [FICHIER]" -#: ly2dvi.py:269 main.cc:120 main.cc:149 mup2ly.py:162 update-lily.py:188 +#: ly2dvi.py:269 main.cc:120 main.cc:149 mup2ly.py:162 update-lily.py:187 msgid "Options:" msgstr "Options: " -#: ly2dvi.py:273 main.cc:124 main.cc:172 mup2ly.py:168 update-lily.py:192 +#: ly2dvi.py:273 main.cc:124 main.cc:172 mup2ly.py:168 update-lily.py:191 #, fuzzy, c-format msgid "Report bugs to %s" msgstr "Rapporter les bugs " -#: ly2dvi.py:305 mup2ly.py:185 update-lily.py:209 +#: ly2dvi.py:306 mup2ly.py:185 update-lily.py:208 #, c-format msgid "Invoking `%s'" msgstr "" -#: ly2dvi.py:309 mup2ly.py:188 update-lily.py:212 +#: ly2dvi.py:310 mup2ly.py:188 update-lily.py:211 #, c-format msgid "command exited with value %d" msgstr "" -#: ly2dvi.py:311 mup2ly.py:190 update-lily.py:214 +#: ly2dvi.py:312 mup2ly.py:190 update-lily.py:213 msgid "(ignored)" msgstr "" -#: ly2dvi.py:321 +#: ly2dvi.py:322 #, fuzzy, c-format msgid "Cleaning %s..." msgstr "Cration des voix..." -#: ly2dvi.py:336 mup2ly.py:214 update-lily.py:238 +#: ly2dvi.py:337 mup2ly.py:214 update-lily.py:237 #, fuzzy, c-format msgid "no such setting: %s" msgstr "Pas d'instrument tel: `%s'" -#: ly2dvi.py:349 main.cc:113 +#: ly2dvi.py:350 main.cc:113 msgid "write Makefile dependencies for every input file" msgstr "" -#: ly2dvi.py:350 main.cc:96 main.cc:109 mup2ly.py:1117 update-lily.py:252 +#: ly2dvi.py:351 main.cc:96 main.cc:109 mup2ly.py:1117 update-lily.py:251 msgid "this help" msgstr "cette aide" -#: ly2dvi.py:351 main.cc:111 main.cc:116 +#: ly2dvi.py:352 main.cc:111 main.cc:116 msgid "DIR" msgstr "REP" -#: ly2dvi.py:351 +#: ly2dvi.py:352 #, fuzzy msgid "add DIR to LilyPond's search path" msgstr "ajoute REP au chemin de recherche" -#: ly2dvi.py:352 +#: ly2dvi.py:353 #, c-format msgid "keep all output, and name the directory %s.dir" msgstr "" -#: ly2dvi.py:353 +#: ly2dvi.py:354 msgid "don't run LilyPond" msgstr "" -#: ly2dvi.py:354 main.cc:114 +#: ly2dvi.py:355 main.cc:114 #, fuzzy msgid "produce MIDI output only" msgstr "produit seulement la sortie MIDI" -#: ly2dvi.py:355 ly2dvi.py:356 main.cc:99 main.cc:112 main.cc:115 +#: ly2dvi.py:356 ly2dvi.py:357 main.cc:99 main.cc:112 main.cc:115 msgid "FILE" msgstr "FICHIER" -#: ly2dvi.py:355 +#: ly2dvi.py:356 msgid "write ouput to FILE" msgstr "" -#: ly2dvi.py:356 +#: ly2dvi.py:357 msgid "find pfa fonts used in FILE" msgstr "" -#: ly2dvi.py:358 +#: ly2dvi.py:359 msgid "generate PostScript output" msgstr "" -#: ly2dvi.py:359 +#: ly2dvi.py:360 msgid "KEY=VAL" msgstr "" -#: ly2dvi.py:359 +#: ly2dvi.py:360 msgid "change global setting KEY to VAL" msgstr "" -#: ly2dvi.py:360 main.cc:119 mup2ly.py:1120 update-lily.py:256 +#: ly2dvi.py:361 main.cc:119 mup2ly.py:1120 update-lily.py:255 msgid "verbose" msgstr "" -#: ly2dvi.py:361 main.cc:105 main.cc:118 mup2ly.py:1121 update-lily.py:257 +#: ly2dvi.py:362 main.cc:105 main.cc:118 mup2ly.py:1121 update-lily.py:256 msgid "print version number" msgstr "afficher le numro de version" -#: ly2dvi.py:362 main.cc:107 main.cc:120 mup2ly.py:1122 update-lily.py:259 +#: ly2dvi.py:363 main.cc:107 main.cc:120 mup2ly.py:1122 update-lily.py:258 msgid "show warranty and copyright" msgstr "" -#: ly2dvi.py:384 ly2dvi.py:579 ly2dvi.py:604 +#: ly2dvi.py:385 ly2dvi.py:580 ly2dvi.py:605 #, fuzzy, c-format msgid "Running %s..." msgstr "Cration des voix..." -#: ly2dvi.py:397 +#: ly2dvi.py:398 #, fuzzy, c-format msgid "Analyzing %s..." msgstr "Cration des voix..." -#: ly2dvi.py:453 +#: ly2dvi.py:454 #, c-format msgid "no lilypond output found for %s" msgstr "" -#: ly2dvi.py:495 +#: ly2dvi.py:496 #, fuzzy, c-format msgid "invalid value: %s" msgstr "caractres illgal: `%c'" -#: ly2dvi.py:638 +#: ly2dvi.py:639 #, fuzzy, c-format msgid "not a PostScript file: `%s'" msgstr "impossible d'ouvrir le fichier: `%s'" -#: ly2dvi.py:656 +#: ly2dvi.py:657 #, c-format msgid "getopt says: `%s'" msgstr "" -#: ly2dvi.py:823 scores.cc:44 +#: ly2dvi.py:824 scores.cc:44 #, fuzzy, c-format msgid "dependencies output to `%s'..." msgstr "Sortie papier vers %s..." -#: ly2dvi.py:834 +#: ly2dvi.py:835 #, fuzzy, c-format msgid "%s output to `%s'..." msgstr "Sortie de Lily vers %s..." -#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:836 +#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:837 #: midi-score-parser.cc:24 scores.cc:136 scores.cc:142 #, c-format msgid "can't find file: `%s'" msgstr "ne peut pas trouver le fichier: `%s'" -#: ly2dvi.py:847 +#: ly2dvi.py:848 msgid "no files specified on command line." msgstr "" @@ -231,81 +231,81 @@ msgstr "Ligne ..." msgid "Fetch and rebuild from latest source package" msgstr "" -#: update-lily.py:224 +#: update-lily.py:223 #, fuzzy, c-format msgid "Cleaning `%s'..." msgstr "Cration des voix..." -#: update-lily.py:244 +#: update-lily.py:243 #, c-format msgid "unpack and build in DIR [%s]" msgstr "" -#: update-lily.py:245 +#: update-lily.py:244 msgid "execute COMMAND, subtitute:" msgstr "" -#: update-lily.py:246 +#: update-lily.py:245 msgid "%b: build root" msgstr "" -#: update-lily.py:247 +#: update-lily.py:246 #, c-format msgid "%n: package name" msgstr "" -#: update-lily.py:248 +#: update-lily.py:247 #, fuzzy msgid "%r: release directory" msgstr "ne peut pas trouver ou crer `%s'" -#: update-lily.py:249 +#: update-lily.py:248 msgid "%t: tarball" msgstr "" -#: update-lily.py:250 +#: update-lily.py:249 msgid "%v: package version" msgstr "" -#: update-lily.py:253 +#: update-lily.py:252 #, c-format msgid "keep all output, and name the directory %s" msgstr "" -#: update-lily.py:254 +#: update-lily.py:253 msgid "upon failure notify EMAIL[,EMAIL]" msgstr "" -#: update-lily.py:255 +#: update-lily.py:254 msgid "remove previous build" msgstr "" -#: update-lily.py:258 +#: update-lily.py:257 #, c-format msgid "fetch and build URL [%s]" msgstr "" -#: update-lily.py:366 +#: update-lily.py:365 #, fuzzy, c-format msgid "Listing `%s'..." msgstr "Ligne ..." -#: update-lily.py:427 +#: update-lily.py:426 #, c-format msgid "latest is: %s" msgstr "" -#: update-lily.py:428 +#: update-lily.py:427 #, c-format msgid "relax, %s is up to date" msgstr "" -#: update-lily.py:436 update-lily.py:449 +#: update-lily.py:435 update-lily.py:448 #, fuzzy, c-format msgid "Fetching `%s'..." msgstr "Cration des voix..." -#: update-lily.py:458 +#: update-lily.py:457 #, fuzzy, c-format msgid "Building `%s'..." msgstr "Cration des voix..." @@ -888,7 +888,7 @@ msgid "can't find start of phrasing slur" msgstr "impossible de trouver le caractres numro %d" #: piano-pedal-engraver.cc:142 piano-pedal-engraver.cc:154 -#: piano-pedal-performer.cc:86 +#: piano-pedal-performer.cc:87 #, fuzzy, c-format msgid "can't find start of piano pedal: `%s'" msgstr "ne peut pas trouver le fichier: `%s'" @@ -1130,34 +1130,34 @@ msgstr "" msgid "First argument must be a procedure taking 1 argument" msgstr "" -#: parser.yy:1264 +#: parser.yy:1263 msgid "Expecting string as script definition" msgstr "" -#: parser.yy:1274 +#: parser.yy:1273 msgid "Can't specify direction for this request" msgstr "" -#: parser.yy:1399 +#: parser.yy:1398 msgid "Expecting musical-pitch value" msgstr "" -#: parser.yy:1410 +#: parser.yy:1409 #, fuzzy msgid "Must have duration object" msgstr "Positionne la plus petite dure (?)" -#: parser.yy:1419 parser.yy:1427 +#: parser.yy:1418 parser.yy:1426 #, fuzzy msgid "Have to be in Lyric mode for lyrics" msgstr "il fayt tre en mode Parole pour les paroles" -#: parser.yy:1580 parser.yy:1637 +#: parser.yy:1579 parser.yy:1636 #, c-format msgid "not a duration: %d" msgstr "pas une dure: %d" -#: parser.yy:1648 +#: parser.yy:1645 #, fuzzy msgid "Have to be in Note mode for notes" msgstr "il faut tre en mode Note pour les notes" diff --git a/po/it.po b/po/it.po index 8bc2fefd77..af424e7b1e 100644 --- a/po/it.po +++ b/po/it.po @@ -5,7 +5,7 @@ #, fuzzy msgid "" msgstr "" -"POT-Creation-Date: 2001-10-09 19:29+0200\n" +"POT-Creation-Date: 2001-09-09 17:30+0200\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Date: 1998-05-30 00:17:12+0200\n" "From: \n" @@ -13,182 +13,182 @@ msgstr "" "out --add-comments --keyword=_ --keyword=_f\n" "Files: bow.cc int.cc\n" -#: ly2dvi.py:109 +#: ly2dvi.py:106 msgid "Generate .dvi with LaTeX for LilyPond" msgstr "" #: data-file.cc:118 input.cc:85 ly2dvi.py:191 midi-parser.cc:100 mup2ly.py:93 -#: update-lily.py:119 warn.cc:23 +#: update-lily.py:118 warn.cc:23 msgid "warning: " msgstr "attenzione: " -#: input.cc:90 ly2dvi.py:206 ly2dvi.py:638 ly2dvi.py:656 ly2dvi.py:847 -#: mup2ly.py:98 mup2ly.py:188 update-lily.py:124 update-lily.py:212 warn.cc:9 +#: input.cc:90 ly2dvi.py:206 ly2dvi.py:639 ly2dvi.py:657 ly2dvi.py:848 +#: mup2ly.py:98 mup2ly.py:188 update-lily.py:123 update-lily.py:211 warn.cc:9 #: warn.cc:17 msgid "error: " msgstr "errore: " -#: ly2dvi.py:207 mup2ly.py:100 update-lily.py:126 +#: ly2dvi.py:207 mup2ly.py:100 update-lily.py:125 msgid "Exiting ... " msgstr "" -#: ly2dvi.py:265 mup2ly.py:158 update-lily.py:184 +#: ly2dvi.py:265 mup2ly.py:158 update-lily.py:183 #, fuzzy, c-format msgid "Usage: %s [OPTION]... FILE" msgstr "Uso: %s [OPZIONE... [FILE]" -#: ly2dvi.py:269 main.cc:120 main.cc:149 mup2ly.py:162 update-lily.py:188 +#: ly2dvi.py:269 main.cc:120 main.cc:149 mup2ly.py:162 update-lily.py:187 msgid "Options:" msgstr "Opzioni: " -#: ly2dvi.py:273 main.cc:124 main.cc:172 mup2ly.py:168 update-lily.py:192 +#: ly2dvi.py:273 main.cc:124 main.cc:172 mup2ly.py:168 update-lily.py:191 #, c-format msgid "Report bugs to %s" msgstr "" -#: ly2dvi.py:305 mup2ly.py:185 update-lily.py:209 +#: ly2dvi.py:306 mup2ly.py:185 update-lily.py:208 #, c-format msgid "Invoking `%s'" msgstr "" -#: ly2dvi.py:309 mup2ly.py:188 update-lily.py:212 +#: ly2dvi.py:310 mup2ly.py:188 update-lily.py:211 #, c-format msgid "command exited with value %d" msgstr "" -#: ly2dvi.py:311 mup2ly.py:190 update-lily.py:214 +#: ly2dvi.py:312 mup2ly.py:190 update-lily.py:213 msgid "(ignored)" msgstr "" -#: ly2dvi.py:321 +#: ly2dvi.py:322 #, fuzzy, c-format msgid "Cleaning %s..." msgstr "Genero le voci..." -#: ly2dvi.py:336 mup2ly.py:214 update-lily.py:238 +#: ly2dvi.py:337 mup2ly.py:214 update-lily.py:237 #, fuzzy, c-format msgid "no such setting: %s" msgstr "% strumento:" -#: ly2dvi.py:349 main.cc:113 +#: ly2dvi.py:350 main.cc:113 #, fuzzy msgid "write Makefile dependencies for every input file" msgstr "" " -d, --dependencies scrive le dependenze del Makefile per ogni file di " "input\n" -#: ly2dvi.py:350 main.cc:96 main.cc:109 mup2ly.py:1117 update-lily.py:252 +#: ly2dvi.py:351 main.cc:96 main.cc:109 mup2ly.py:1117 update-lily.py:251 msgid "this help" msgstr "" -#: ly2dvi.py:351 main.cc:111 main.cc:116 +#: ly2dvi.py:352 main.cc:111 main.cc:116 msgid "DIR" msgstr "" -#: ly2dvi.py:351 +#: ly2dvi.py:352 #, fuzzy msgid "add DIR to LilyPond's search path" msgstr " -I, --include=DIR aggiunge DIR ai path di ricerca\n" -#: ly2dvi.py:352 +#: ly2dvi.py:353 #, c-format msgid "keep all output, and name the directory %s.dir" msgstr "" -#: ly2dvi.py:353 +#: ly2dvi.py:354 msgid "don't run LilyPond" msgstr "" -#: ly2dvi.py:354 main.cc:114 +#: ly2dvi.py:355 main.cc:114 #, fuzzy msgid "produce MIDI output only" msgstr " -M, --no-paper produce solo output midi\n" -#: ly2dvi.py:355 ly2dvi.py:356 main.cc:99 main.cc:112 main.cc:115 +#: ly2dvi.py:356 ly2dvi.py:357 main.cc:99 main.cc:112 main.cc:115 msgid "FILE" msgstr "" -#: ly2dvi.py:355 +#: ly2dvi.py:356 msgid "write ouput to FILE" msgstr "" -#: ly2dvi.py:356 +#: ly2dvi.py:357 msgid "find pfa fonts used in FILE" msgstr "" -#: ly2dvi.py:358 +#: ly2dvi.py:359 #, fuzzy msgid "generate PostScript output" msgstr "vincoli degenerati" -#: ly2dvi.py:359 +#: ly2dvi.py:360 msgid "KEY=VAL" msgstr "" -#: ly2dvi.py:359 +#: ly2dvi.py:360 msgid "change global setting KEY to VAL" msgstr "" -#: ly2dvi.py:360 main.cc:119 mup2ly.py:1120 update-lily.py:256 +#: ly2dvi.py:361 main.cc:119 mup2ly.py:1120 update-lily.py:255 msgid "verbose" msgstr "" -#: ly2dvi.py:361 main.cc:105 main.cc:118 mup2ly.py:1121 update-lily.py:257 +#: ly2dvi.py:362 main.cc:105 main.cc:118 mup2ly.py:1121 update-lily.py:256 msgid "print version number" msgstr "" -#: ly2dvi.py:362 main.cc:107 main.cc:120 mup2ly.py:1122 update-lily.py:259 +#: ly2dvi.py:363 main.cc:107 main.cc:120 mup2ly.py:1122 update-lily.py:258 #, fuzzy msgid "show warranty and copyright" msgstr " -w, --warranty mostra la garanzia e il copyright\n" -#: ly2dvi.py:384 ly2dvi.py:579 ly2dvi.py:604 +#: ly2dvi.py:385 ly2dvi.py:580 ly2dvi.py:605 #, fuzzy, c-format msgid "Running %s..." msgstr "Genero le voci..." -#: ly2dvi.py:397 +#: ly2dvi.py:398 #, fuzzy, c-format msgid "Analyzing %s..." msgstr "Genero le voci..." -#: ly2dvi.py:453 +#: ly2dvi.py:454 #, c-format msgid "no lilypond output found for %s" msgstr "" -#: ly2dvi.py:495 +#: ly2dvi.py:496 #, fuzzy, c-format msgid "invalid value: %s" msgstr "carattere illegale: `%c'" -#: ly2dvi.py:638 +#: ly2dvi.py:639 #, fuzzy, c-format msgid "not a PostScript file: `%s'" msgstr "non posso aprire il file: `%s'" -#: ly2dvi.py:656 +#: ly2dvi.py:657 #, c-format msgid "getopt says: `%s'" msgstr "" -#: ly2dvi.py:823 scores.cc:44 +#: ly2dvi.py:824 scores.cc:44 #, fuzzy, c-format msgid "dependencies output to `%s'..." msgstr "L'output stampato è inviato a %s..." -#: ly2dvi.py:834 +#: ly2dvi.py:835 #, fuzzy, c-format msgid "%s output to `%s'..." msgstr "L'output MIDI è inviato a %s..." -#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:836 +#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:837 #: midi-score-parser.cc:24 scores.cc:136 scores.cc:142 #, c-format msgid "can't find file: `%s'" msgstr "non trovo il file: `%s'" -#: ly2dvi.py:847 +#: ly2dvi.py:848 msgid "no files specified on command line." msgstr "" @@ -236,81 +236,81 @@ msgstr "Genero le voci..." msgid "Fetch and rebuild from latest source package" msgstr "" -#: update-lily.py:224 +#: update-lily.py:223 #, fuzzy, c-format msgid "Cleaning `%s'..." msgstr "Genero le voci..." -#: update-lily.py:244 +#: update-lily.py:243 #, c-format msgid "unpack and build in DIR [%s]" msgstr "" -#: update-lily.py:245 +#: update-lily.py:244 msgid "execute COMMAND, subtitute:" msgstr "" -#: update-lily.py:246 +#: update-lily.py:245 msgid "%b: build root" msgstr "" -#: update-lily.py:247 +#: update-lily.py:246 #, c-format msgid "%n: package name" msgstr "" -#: update-lily.py:248 +#: update-lily.py:247 #, fuzzy msgid "%r: release directory" msgstr "non trovo e non posso creare `%s'" -#: update-lily.py:249 +#: update-lily.py:248 msgid "%t: tarball" msgstr "" -#: update-lily.py:250 +#: update-lily.py:249 msgid "%v: package version" msgstr "" -#: update-lily.py:253 +#: update-lily.py:252 #, c-format msgid "keep all output, and name the directory %s" msgstr "" -#: update-lily.py:254 +#: update-lily.py:253 msgid "upon failure notify EMAIL[,EMAIL]" msgstr "" -#: update-lily.py:255 +#: update-lily.py:254 msgid "remove previous build" msgstr "" -#: update-lily.py:258 +#: update-lily.py:257 #, c-format msgid "fetch and build URL [%s]" msgstr "" -#: update-lily.py:366 +#: update-lily.py:365 #, fuzzy, c-format msgid "Listing `%s'..." msgstr "Genero le voci..." -#: update-lily.py:427 +#: update-lily.py:426 #, c-format msgid "latest is: %s" msgstr "" -#: update-lily.py:428 +#: update-lily.py:427 #, c-format msgid "relax, %s is up to date" msgstr "" -#: update-lily.py:436 update-lily.py:449 +#: update-lily.py:435 update-lily.py:448 #, fuzzy, c-format msgid "Fetching `%s'..." msgstr "Genero le voci..." -#: update-lily.py:458 +#: update-lily.py:457 #, fuzzy, c-format msgid "Building `%s'..." msgstr "Genero le voci..." @@ -906,7 +906,7 @@ msgid "can't find start of phrasing slur" msgstr "non trovo le estremità di %s" #: piano-pedal-engraver.cc:142 piano-pedal-engraver.cc:154 -#: piano-pedal-performer.cc:86 +#: piano-pedal-performer.cc:87 #, fuzzy, c-format msgid "can't find start of piano pedal: `%s'" msgstr "non risco a trovare una ruling note a %s" @@ -1154,34 +1154,34 @@ msgstr "" msgid "First argument must be a procedure taking 1 argument" msgstr "" -#: parser.yy:1264 +#: parser.yy:1263 msgid "Expecting string as script definition" msgstr "" -#: parser.yy:1274 +#: parser.yy:1273 msgid "Can't specify direction for this request" msgstr "" -#: parser.yy:1399 +#: parser.yy:1398 msgid "Expecting musical-pitch value" msgstr "" -#: parser.yy:1410 +#: parser.yy:1409 #, fuzzy msgid "Must have duration object" msgstr "indicazione durata priva di senso" -#: parser.yy:1419 parser.yy:1427 +#: parser.yy:1418 parser.yy:1426 #, fuzzy msgid "Have to be in Lyric mode for lyrics" msgstr "bisogna essere in Lyric mode per i testi" -#: parser.yy:1580 parser.yy:1637 +#: parser.yy:1579 parser.yy:1636 #, c-format msgid "not a duration: %d" msgstr "non è una durata: %d" -#: parser.yy:1648 +#: parser.yy:1645 #, fuzzy msgid "Have to be in Note mode for notes" msgstr "bisogna essere in Note mode per le note" diff --git a/po/ja.po b/po/ja.po index dac25c1b5d..c62e927173 100644 --- a/po/ja.po +++ b/po/ja.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: lilypond 1.2.17\n" -"POT-Creation-Date: 2001-10-09 19:29+0200\n" +"POT-Creation-Date: 2001-09-09 17:30+0200\n" "PO-Revision-Date: 2000-03-29 20:50+0900\n" "Last-Translator: Daisuke Yamashita \n" "Language-Team: Japanese \n" @@ -13,180 +13,180 @@ msgstr "" "Content-Type: text/plain; charset=EUC-JP\n" "Content-Transfer-Encoding: 8bit\n" -#: ly2dvi.py:109 +#: ly2dvi.py:106 msgid "Generate .dvi with LaTeX for LilyPond" msgstr "" #: data-file.cc:118 input.cc:85 ly2dvi.py:191 midi-parser.cc:100 mup2ly.py:93 -#: update-lily.py:119 warn.cc:23 +#: update-lily.py:118 warn.cc:23 msgid "warning: " msgstr "·Ù¹ð: " -#: input.cc:90 ly2dvi.py:206 ly2dvi.py:638 ly2dvi.py:656 ly2dvi.py:847 -#: mup2ly.py:98 mup2ly.py:188 update-lily.py:124 update-lily.py:212 warn.cc:9 +#: input.cc:90 ly2dvi.py:206 ly2dvi.py:639 ly2dvi.py:657 ly2dvi.py:848 +#: mup2ly.py:98 mup2ly.py:188 update-lily.py:123 update-lily.py:211 warn.cc:9 #: warn.cc:17 msgid "error: " msgstr "¥¨¥é¡¼: " -#: ly2dvi.py:207 mup2ly.py:100 update-lily.py:126 +#: ly2dvi.py:207 mup2ly.py:100 update-lily.py:125 #, fuzzy msgid "Exiting ... " msgstr "¹Ô ..." -#: ly2dvi.py:265 mup2ly.py:158 update-lily.py:184 +#: ly2dvi.py:265 mup2ly.py:158 update-lily.py:183 #, fuzzy, c-format msgid "Usage: %s [OPTION]... FILE" msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]" -#: ly2dvi.py:269 main.cc:120 main.cc:149 mup2ly.py:162 update-lily.py:188 +#: ly2dvi.py:269 main.cc:120 main.cc:149 mup2ly.py:162 update-lily.py:187 msgid "Options:" msgstr "¥ª¥×¥·¥ç¥ó:" -#: ly2dvi.py:273 main.cc:124 main.cc:172 mup2ly.py:168 update-lily.py:192 +#: ly2dvi.py:273 main.cc:124 main.cc:172 mup2ly.py:168 update-lily.py:191 #, c-format msgid "Report bugs to %s" msgstr "¥Ð¥°¥ì¥Ý¡¼¥È¤Ï %s ¤Ø" -#: ly2dvi.py:305 mup2ly.py:185 update-lily.py:209 +#: ly2dvi.py:306 mup2ly.py:185 update-lily.py:208 #, fuzzy, c-format msgid "Invoking `%s'" msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'" -#: ly2dvi.py:309 mup2ly.py:188 update-lily.py:212 +#: ly2dvi.py:310 mup2ly.py:188 update-lily.py:211 #, c-format msgid "command exited with value %d" msgstr "" -#: ly2dvi.py:311 mup2ly.py:190 update-lily.py:214 +#: ly2dvi.py:312 mup2ly.py:190 update-lily.py:213 msgid "(ignored)" msgstr "" -#: ly2dvi.py:321 +#: ly2dvi.py:322 #, fuzzy, c-format msgid "Cleaning %s..." msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'" -#: ly2dvi.py:336 mup2ly.py:214 update-lily.py:238 +#: ly2dvi.py:337 mup2ly.py:214 update-lily.py:237 #, fuzzy, c-format msgid "no such setting: %s" msgstr "¤½¤ÎÍͤʳڴï¤Ï¤¢¤ê¤Þ¤»¤ó: `%s'" -#: ly2dvi.py:349 main.cc:113 +#: ly2dvi.py:350 main.cc:113 msgid "write Makefile dependencies for every input file" msgstr "Á´¤Æ¤ÎÆþÎÏ¥Õ¥¡¥¤¥ë¤Î Makefile °Í¸´Ø·¸¤ò½ñ¤­¹þ¤à" -#: ly2dvi.py:350 main.cc:96 main.cc:109 mup2ly.py:1117 update-lily.py:252 +#: ly2dvi.py:351 main.cc:96 main.cc:109 mup2ly.py:1117 update-lily.py:251 msgid "this help" msgstr "¤³¤Î¥Ø¥ë¥×" -#: ly2dvi.py:351 main.cc:111 main.cc:116 +#: ly2dvi.py:352 main.cc:111 main.cc:116 msgid "DIR" msgstr "DIR" -#: ly2dvi.py:351 +#: ly2dvi.py:352 #, fuzzy msgid "add DIR to LilyPond's search path" msgstr "DIR ¤ò¸¡º÷¥Ñ¥¹¤ËÄɲÃ" -#: ly2dvi.py:352 +#: ly2dvi.py:353 #, c-format msgid "keep all output, and name the directory %s.dir" msgstr "" -#: ly2dvi.py:353 +#: ly2dvi.py:354 msgid "don't run LilyPond" msgstr "" -#: ly2dvi.py:354 main.cc:114 +#: ly2dvi.py:355 main.cc:114 msgid "produce MIDI output only" msgstr "MIDI ½ÐÎϤÎÀ¸À®¤Î¤ß" -#: ly2dvi.py:355 ly2dvi.py:356 main.cc:99 main.cc:112 main.cc:115 +#: ly2dvi.py:356 ly2dvi.py:357 main.cc:99 main.cc:112 main.cc:115 msgid "FILE" msgstr "FILE" -#: ly2dvi.py:355 +#: ly2dvi.py:356 #, fuzzy msgid "write ouput to FILE" msgstr "BASENAME[-x].³ÈÄ¥»Ò ¤Ø½ÐÎϤò½ñ¤­¹þ¤à" -#: ly2dvi.py:356 +#: ly2dvi.py:357 msgid "find pfa fonts used in FILE" msgstr "" -#: ly2dvi.py:358 +#: ly2dvi.py:359 #, fuzzy msgid "generate PostScript output" msgstr "À©¸Â¤ò´ËÏÂ" -#: ly2dvi.py:359 +#: ly2dvi.py:360 msgid "KEY=VAL" msgstr "" -#: ly2dvi.py:359 +#: ly2dvi.py:360 msgid "change global setting KEY to VAL" msgstr "" -#: ly2dvi.py:360 main.cc:119 mup2ly.py:1120 update-lily.py:256 +#: ly2dvi.py:361 main.cc:119 mup2ly.py:1120 update-lily.py:255 #, fuzzy msgid "verbose" msgstr "¾ÜºÙ¤Ê¾ðÊó¤òɽ¼¨¤·¤Þ¤¹" -#: ly2dvi.py:361 main.cc:105 main.cc:118 mup2ly.py:1121 update-lily.py:257 +#: ly2dvi.py:362 main.cc:105 main.cc:118 mup2ly.py:1121 update-lily.py:256 msgid "print version number" msgstr "¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨" -#: ly2dvi.py:362 main.cc:107 main.cc:120 mup2ly.py:1122 update-lily.py:259 +#: ly2dvi.py:363 main.cc:107 main.cc:120 mup2ly.py:1122 update-lily.py:258 msgid "show warranty and copyright" msgstr "ÊݾڤÈÃøºî¸¢¤Ë¤Ä¤¤¤ÆÉ½¼¨¤¹¤ë" -#: ly2dvi.py:384 ly2dvi.py:579 ly2dvi.py:604 +#: ly2dvi.py:385 ly2dvi.py:580 ly2dvi.py:605 #, fuzzy, c-format msgid "Running %s..." msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'" -#: ly2dvi.py:397 +#: ly2dvi.py:398 #, fuzzy, c-format msgid "Analyzing %s..." msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'" -#: ly2dvi.py:453 +#: ly2dvi.py:454 #, c-format msgid "no lilypond output found for %s" msgstr "" -#: ly2dvi.py:495 +#: ly2dvi.py:496 #, fuzzy, c-format msgid "invalid value: %s" msgstr "̵¸ú¤Êʸ»ú: `%c'" -#: ly2dvi.py:638 +#: ly2dvi.py:639 #, fuzzy, c-format msgid "not a PostScript file: `%s'" msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: `%s'" -#: ly2dvi.py:656 +#: ly2dvi.py:657 #, c-format msgid "getopt says: `%s'" msgstr "" -#: ly2dvi.py:823 scores.cc:44 +#: ly2dvi.py:824 scores.cc:44 #, fuzzy, c-format msgid "dependencies output to `%s'..." msgstr "%s ¤Ø paper ½ÐÎÏ..." -#: ly2dvi.py:834 +#: ly2dvi.py:835 #, fuzzy, c-format msgid "%s output to `%s'..." msgstr "%s ¤Ø¤Î MIDI ½ÐÎÏ" -#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:836 +#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:837 #: midi-score-parser.cc:24 scores.cc:136 scores.cc:142 #, fuzzy, c-format msgid "can't find file: `%s'" msgstr "¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" -#: ly2dvi.py:847 +#: ly2dvi.py:848 msgid "no files specified on command line." msgstr "" @@ -235,81 +235,81 @@ msgstr " msgid "Fetch and rebuild from latest source package" msgstr "" -#: update-lily.py:224 +#: update-lily.py:223 #, fuzzy, c-format msgid "Cleaning `%s'..." msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'" -#: update-lily.py:244 +#: update-lily.py:243 #, c-format msgid "unpack and build in DIR [%s]" msgstr "" -#: update-lily.py:245 +#: update-lily.py:244 msgid "execute COMMAND, subtitute:" msgstr "" -#: update-lily.py:246 +#: update-lily.py:245 msgid "%b: build root" msgstr "" -#: update-lily.py:247 +#: update-lily.py:246 #, c-format msgid "%n: package name" msgstr "" -#: update-lily.py:248 +#: update-lily.py:247 #, fuzzy msgid "%r: release directory" msgstr "¸«¤Ä¤«¤é¤Ê¤¤¤«ºî¤ì¤Þ¤»¤ó: `%s'" -#: update-lily.py:249 +#: update-lily.py:248 msgid "%t: tarball" msgstr "" -#: update-lily.py:250 +#: update-lily.py:249 msgid "%v: package version" msgstr "" -#: update-lily.py:253 +#: update-lily.py:252 #, c-format msgid "keep all output, and name the directory %s" msgstr "" -#: update-lily.py:254 +#: update-lily.py:253 msgid "upon failure notify EMAIL[,EMAIL]" msgstr "" -#: update-lily.py:255 +#: update-lily.py:254 msgid "remove previous build" msgstr "" -#: update-lily.py:258 +#: update-lily.py:257 #, c-format msgid "fetch and build URL [%s]" msgstr "" -#: update-lily.py:366 +#: update-lily.py:365 #, fuzzy, c-format msgid "Listing `%s'..." msgstr "¹Ô ..." -#: update-lily.py:427 +#: update-lily.py:426 #, c-format msgid "latest is: %s" msgstr "" -#: update-lily.py:428 +#: update-lily.py:427 #, c-format msgid "relax, %s is up to date" msgstr "" -#: update-lily.py:436 update-lily.py:449 +#: update-lily.py:435 update-lily.py:448 #, fuzzy, c-format msgid "Fetching `%s'..." msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'" -#: update-lily.py:458 +#: update-lily.py:457 #, fuzzy, c-format msgid "Building `%s'..." msgstr "Í×µá¤ò¼Î¤Æ¤Þ¤¹: `%s'" @@ -924,7 +924,7 @@ msgid "can't find start of phrasing slur" msgstr "ËöÈø¤Ø¤Î(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" #: piano-pedal-engraver.cc:142 piano-pedal-engraver.cc:154 -#: piano-pedal-performer.cc:86 +#: piano-pedal-performer.cc:87 #, fuzzy, c-format msgid "can't find start of piano pedal: `%s'" msgstr "¸Æ¤Ó½Ð¤µ¤ì¤¿Ê¸»ú¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: `%s'" @@ -1166,33 +1166,33 @@ msgstr "" msgid "First argument must be a procedure taking 1 argument" msgstr "" -#: parser.yy:1264 +#: parser.yy:1263 msgid "Expecting string as script definition" msgstr "" -#: parser.yy:1274 +#: parser.yy:1273 msgid "Can't specify direction for this request" msgstr "¤³¤ÎÍ×µá¤ËÂФ¹¤ëÊý¸þ¤ò»ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó" -#: parser.yy:1399 +#: parser.yy:1398 msgid "Expecting musical-pitch value" msgstr "" -#: parser.yy:1410 +#: parser.yy:1409 #, fuzzy msgid "Must have duration object" msgstr "²»Ä¹¤òºÇ¾®¤ËÀßÄꤷ¤Þ¤¹" -#: parser.yy:1419 parser.yy:1427 +#: parser.yy:1418 parser.yy:1426 msgid "Have to be in Lyric mode for lyrics" msgstr "²Î»ì¤Ï Lyric ¥â¡¼¥ÉÆâ¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤" -#: parser.yy:1580 parser.yy:1637 +#: parser.yy:1579 parser.yy:1636 #, c-format msgid "not a duration: %d" msgstr "²»Ä¹¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó: %d" -#: parser.yy:1648 +#: parser.yy:1645 msgid "Have to be in Note mode for notes" msgstr "²»Éä¤Ï Note ¥â¡¼¥ÉÆâ¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤" diff --git a/po/lilypond.pot b/po/lilypond.pot index eeb3072b20..6f6e3e2a1e 100644 --- a/po/lilypond.pot +++ b/po/lilypond.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2001-10-09 19:29+0200\n" +"POT-Creation-Date: 2001-09-09 17:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -14,175 +14,175 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: ly2dvi.py:109 +#: ly2dvi.py:106 msgid "Generate .dvi with LaTeX for LilyPond" msgstr "" #: data-file.cc:118 input.cc:85 ly2dvi.py:191 midi-parser.cc:100 mup2ly.py:93 -#: update-lily.py:119 warn.cc:23 +#: update-lily.py:118 warn.cc:23 msgid "warning: " msgstr "" -#: input.cc:90 ly2dvi.py:206 ly2dvi.py:638 ly2dvi.py:656 ly2dvi.py:847 -#: mup2ly.py:98 mup2ly.py:188 update-lily.py:124 update-lily.py:212 warn.cc:9 +#: input.cc:90 ly2dvi.py:206 ly2dvi.py:639 ly2dvi.py:657 ly2dvi.py:848 +#: mup2ly.py:98 mup2ly.py:188 update-lily.py:123 update-lily.py:211 warn.cc:9 #: warn.cc:17 msgid "error: " msgstr "" -#: ly2dvi.py:207 mup2ly.py:100 update-lily.py:126 +#: ly2dvi.py:207 mup2ly.py:100 update-lily.py:125 msgid "Exiting ... " msgstr "" -#: ly2dvi.py:265 mup2ly.py:158 update-lily.py:184 +#: ly2dvi.py:265 mup2ly.py:158 update-lily.py:183 #, c-format msgid "Usage: %s [OPTION]... FILE" msgstr "" -#: ly2dvi.py:269 main.cc:120 main.cc:149 mup2ly.py:162 update-lily.py:188 +#: ly2dvi.py:269 main.cc:120 main.cc:149 mup2ly.py:162 update-lily.py:187 msgid "Options:" msgstr "" -#: ly2dvi.py:273 main.cc:124 main.cc:172 mup2ly.py:168 update-lily.py:192 +#: ly2dvi.py:273 main.cc:124 main.cc:172 mup2ly.py:168 update-lily.py:191 #, c-format msgid "Report bugs to %s" msgstr "" -#: ly2dvi.py:305 mup2ly.py:185 update-lily.py:209 +#: ly2dvi.py:306 mup2ly.py:185 update-lily.py:208 #, c-format msgid "Invoking `%s'" msgstr "" -#: ly2dvi.py:309 mup2ly.py:188 update-lily.py:212 +#: ly2dvi.py:310 mup2ly.py:188 update-lily.py:211 #, c-format msgid "command exited with value %d" msgstr "" -#: ly2dvi.py:311 mup2ly.py:190 update-lily.py:214 +#: ly2dvi.py:312 mup2ly.py:190 update-lily.py:213 msgid "(ignored)" msgstr "" -#: ly2dvi.py:321 +#: ly2dvi.py:322 #, c-format msgid "Cleaning %s..." msgstr "" -#: ly2dvi.py:336 mup2ly.py:214 update-lily.py:238 +#: ly2dvi.py:337 mup2ly.py:214 update-lily.py:237 #, c-format msgid "no such setting: %s" msgstr "" -#: ly2dvi.py:349 main.cc:113 +#: ly2dvi.py:350 main.cc:113 msgid "write Makefile dependencies for every input file" msgstr "" -#: ly2dvi.py:350 main.cc:96 main.cc:109 mup2ly.py:1117 update-lily.py:252 +#: ly2dvi.py:351 main.cc:96 main.cc:109 mup2ly.py:1117 update-lily.py:251 msgid "this help" msgstr "" -#: ly2dvi.py:351 main.cc:111 main.cc:116 +#: ly2dvi.py:352 main.cc:111 main.cc:116 msgid "DIR" msgstr "" -#: ly2dvi.py:351 +#: ly2dvi.py:352 msgid "add DIR to LilyPond's search path" msgstr "" -#: ly2dvi.py:352 +#: ly2dvi.py:353 #, c-format msgid "keep all output, and name the directory %s.dir" msgstr "" -#: ly2dvi.py:353 +#: ly2dvi.py:354 msgid "don't run LilyPond" msgstr "" -#: ly2dvi.py:354 main.cc:114 +#: ly2dvi.py:355 main.cc:114 msgid "produce MIDI output only" msgstr "" -#: ly2dvi.py:355 ly2dvi.py:356 main.cc:99 main.cc:112 main.cc:115 +#: ly2dvi.py:356 ly2dvi.py:357 main.cc:99 main.cc:112 main.cc:115 msgid "FILE" msgstr "" -#: ly2dvi.py:355 +#: ly2dvi.py:356 msgid "write ouput to FILE" msgstr "" -#: ly2dvi.py:356 +#: ly2dvi.py:357 msgid "find pfa fonts used in FILE" msgstr "" -#: ly2dvi.py:358 +#: ly2dvi.py:359 msgid "generate PostScript output" msgstr "" -#: ly2dvi.py:359 +#: ly2dvi.py:360 msgid "KEY=VAL" msgstr "" -#: ly2dvi.py:359 +#: ly2dvi.py:360 msgid "change global setting KEY to VAL" msgstr "" -#: ly2dvi.py:360 main.cc:119 mup2ly.py:1120 update-lily.py:256 +#: ly2dvi.py:361 main.cc:119 mup2ly.py:1120 update-lily.py:255 msgid "verbose" msgstr "" -#: ly2dvi.py:361 main.cc:105 main.cc:118 mup2ly.py:1121 update-lily.py:257 +#: ly2dvi.py:362 main.cc:105 main.cc:118 mup2ly.py:1121 update-lily.py:256 msgid "print version number" msgstr "" -#: ly2dvi.py:362 main.cc:107 main.cc:120 mup2ly.py:1122 update-lily.py:259 +#: ly2dvi.py:363 main.cc:107 main.cc:120 mup2ly.py:1122 update-lily.py:258 msgid "show warranty and copyright" msgstr "" -#: ly2dvi.py:384 ly2dvi.py:579 ly2dvi.py:604 +#: ly2dvi.py:385 ly2dvi.py:580 ly2dvi.py:605 #, c-format msgid "Running %s..." msgstr "" -#: ly2dvi.py:397 +#: ly2dvi.py:398 #, c-format msgid "Analyzing %s..." msgstr "" -#: ly2dvi.py:453 +#: ly2dvi.py:454 #, c-format msgid "no lilypond output found for %s" msgstr "" -#: ly2dvi.py:495 +#: ly2dvi.py:496 #, c-format msgid "invalid value: %s" msgstr "" -#: ly2dvi.py:638 +#: ly2dvi.py:639 #, c-format msgid "not a PostScript file: `%s'" msgstr "" -#: ly2dvi.py:656 +#: ly2dvi.py:657 #, c-format msgid "getopt says: `%s'" msgstr "" -#: ly2dvi.py:823 scores.cc:44 +#: ly2dvi.py:824 scores.cc:44 #, c-format msgid "dependencies output to `%s'..." msgstr "" -#: ly2dvi.py:834 +#: ly2dvi.py:835 #, c-format msgid "%s output to `%s'..." msgstr "" -#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:836 +#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:837 #: midi-score-parser.cc:24 scores.cc:136 scores.cc:142 #, c-format msgid "can't find file: `%s'" msgstr "" -#: ly2dvi.py:847 +#: ly2dvi.py:848 msgid "no files specified on command line." msgstr "" @@ -230,80 +230,80 @@ msgstr "" msgid "Fetch and rebuild from latest source package" msgstr "" -#: update-lily.py:224 +#: update-lily.py:223 #, c-format msgid "Cleaning `%s'..." msgstr "" -#: update-lily.py:244 +#: update-lily.py:243 #, c-format msgid "unpack and build in DIR [%s]" msgstr "" -#: update-lily.py:245 +#: update-lily.py:244 msgid "execute COMMAND, subtitute:" msgstr "" -#: update-lily.py:246 +#: update-lily.py:245 msgid "%b: build root" msgstr "" -#: update-lily.py:247 +#: update-lily.py:246 #, c-format msgid "%n: package name" msgstr "" -#: update-lily.py:248 +#: update-lily.py:247 msgid "%r: release directory" msgstr "" -#: update-lily.py:249 +#: update-lily.py:248 msgid "%t: tarball" msgstr "" -#: update-lily.py:250 +#: update-lily.py:249 msgid "%v: package version" msgstr "" -#: update-lily.py:253 +#: update-lily.py:252 #, c-format msgid "keep all output, and name the directory %s" msgstr "" -#: update-lily.py:254 +#: update-lily.py:253 msgid "upon failure notify EMAIL[,EMAIL]" msgstr "" -#: update-lily.py:255 +#: update-lily.py:254 msgid "remove previous build" msgstr "" -#: update-lily.py:258 +#: update-lily.py:257 #, c-format msgid "fetch and build URL [%s]" msgstr "" -#: update-lily.py:366 +#: update-lily.py:365 #, c-format msgid "Listing `%s'..." msgstr "" -#: update-lily.py:427 +#: update-lily.py:426 #, c-format msgid "latest is: %s" msgstr "" -#: update-lily.py:428 +#: update-lily.py:427 #, c-format msgid "relax, %s is up to date" msgstr "" -#: update-lily.py:436 update-lily.py:449 +#: update-lily.py:435 update-lily.py:448 #, c-format msgid "Fetching `%s'..." msgstr "" -#: update-lily.py:458 +#: update-lily.py:457 #, c-format msgid "Building `%s'..." msgstr "" @@ -855,7 +855,7 @@ msgid "can't find start of phrasing slur" msgstr "" #: piano-pedal-engraver.cc:142 piano-pedal-engraver.cc:154 -#: piano-pedal-performer.cc:86 +#: piano-pedal-performer.cc:87 #, c-format msgid "can't find start of piano pedal: `%s'" msgstr "" @@ -1091,32 +1091,32 @@ msgstr "" msgid "First argument must be a procedure taking 1 argument" msgstr "" -#: parser.yy:1264 +#: parser.yy:1263 msgid "Expecting string as script definition" msgstr "" -#: parser.yy:1274 +#: parser.yy:1273 msgid "Can't specify direction for this request" msgstr "" -#: parser.yy:1399 +#: parser.yy:1398 msgid "Expecting musical-pitch value" msgstr "" -#: parser.yy:1410 +#: parser.yy:1409 msgid "Must have duration object" msgstr "" -#: parser.yy:1419 parser.yy:1427 +#: parser.yy:1418 parser.yy:1426 msgid "Have to be in Lyric mode for lyrics" msgstr "" -#: parser.yy:1580 parser.yy:1637 +#: parser.yy:1579 parser.yy:1636 #, c-format msgid "not a duration: %d" msgstr "" -#: parser.yy:1648 +#: parser.yy:1645 msgid "Have to be in Note mode for notes" msgstr "" diff --git a/po/nl.po b/po/nl.po index 9c6db9b935..a979126749 100644 --- a/po/nl.po +++ b/po/nl.po @@ -9,9 +9,9 @@ # msgid "" msgstr "" -"Project-Id-Version: lilypond 1.4.8\n" -"POT-Creation-Date: 2001-10-09 19:29+0200\n" -"PO-Revision-Date: 2001-10-09 19:30+0200\n" +"Project-Id-Version: lilypond 1.4.6\n" +"POT-Creation-Date: 2001-09-09 17:30+0200\n" +"PO-Revision-Date: 2001-09-09 17:34+0200\n" "Last-Translator: Jan Nieuwenhuizen \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" @@ -19,181 +19,180 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Date: 2001-05-09 23:29+0200\n" "From: \n" -"Xgettext-Options: --c++ --default-domain=lilypond --join --output-dir=../po " -"--add-comments --keyword=_\n" +"Xgettext-Options: --c++ --default-domain=lilypond --join --output-dir=../po --add-comments --keyword=_\n" "Files: bow.cc int.cc\n" -#: ly2dvi.py:109 +#: ly2dvi.py:106 msgid "Generate .dvi with LaTeX for LilyPond" msgstr "Genereer .dvi met LaTeX voor LilyPond" #: data-file.cc:118 input.cc:85 ly2dvi.py:191 midi-parser.cc:100 mup2ly.py:93 -#: update-lily.py:119 warn.cc:23 +#: update-lily.py:118 warn.cc:23 msgid "warning: " msgstr "waarschuwing: " -#: input.cc:90 ly2dvi.py:206 ly2dvi.py:638 ly2dvi.py:656 ly2dvi.py:847 -#: mup2ly.py:98 mup2ly.py:188 update-lily.py:124 update-lily.py:212 warn.cc:9 +#: input.cc:90 ly2dvi.py:206 ly2dvi.py:639 ly2dvi.py:657 ly2dvi.py:848 +#: mup2ly.py:98 mup2ly.py:188 update-lily.py:123 update-lily.py:211 warn.cc:9 #: warn.cc:17 msgid "error: " msgstr "fout: " -#: ly2dvi.py:207 mup2ly.py:100 update-lily.py:126 +#: ly2dvi.py:207 mup2ly.py:100 update-lily.py:125 msgid "Exiting ... " -msgstr "Beëidigen ..." +msgstr "Beëindigen ..." -#: ly2dvi.py:265 mup2ly.py:158 update-lily.py:184 +#: ly2dvi.py:265 mup2ly.py:158 update-lily.py:183 #, c-format msgid "Usage: %s [OPTION]... FILE" -msgstr "Gebruik: %s [OPTIE]... BESTAND" +msgstr "" -#: ly2dvi.py:269 main.cc:120 main.cc:149 mup2ly.py:162 update-lily.py:188 +#: ly2dvi.py:269 main.cc:120 main.cc:149 mup2ly.py:162 update-lily.py:187 msgid "Options:" msgstr "Opties:" -#: ly2dvi.py:273 main.cc:124 main.cc:172 mup2ly.py:168 update-lily.py:192 +#: ly2dvi.py:273 main.cc:124 main.cc:172 mup2ly.py:168 update-lily.py:191 #, c-format msgid "Report bugs to %s" msgstr "" "Meld luizen in het programma aan %s;\n" "meld onjuistheden in de vertaling aan of " -#: ly2dvi.py:305 mup2ly.py:185 update-lily.py:209 +#: ly2dvi.py:306 mup2ly.py:185 update-lily.py:208 #, c-format msgid "Invoking `%s'" msgstr "Uitvoeren `%s'" -#: ly2dvi.py:309 mup2ly.py:188 update-lily.py:212 +#: ly2dvi.py:310 mup2ly.py:188 update-lily.py:211 #, c-format msgid "command exited with value %d" msgstr "opdracht eindigde met waarde %d" -#: ly2dvi.py:311 mup2ly.py:190 update-lily.py:214 +#: ly2dvi.py:312 mup2ly.py:190 update-lily.py:213 msgid "(ignored)" msgstr "(genegeerd)" -#: ly2dvi.py:321 +#: ly2dvi.py:322 #, c-format msgid "Cleaning %s..." msgstr "Schoonmaken %s..." -#: ly2dvi.py:336 mup2ly.py:214 update-lily.py:238 +#: ly2dvi.py:337 mup2ly.py:214 update-lily.py:237 #, c-format msgid "no such setting: %s" msgstr "geen dergelijke instelling: %s" -#: ly2dvi.py:349 main.cc:113 +#: ly2dvi.py:350 main.cc:113 msgid "write Makefile dependencies for every input file" msgstr "schrijf Makefile afhankelijkheden voor elk invoerbestand" -#: ly2dvi.py:350 main.cc:96 main.cc:109 mup2ly.py:1117 update-lily.py:252 +#: ly2dvi.py:351 main.cc:96 main.cc:109 mup2ly.py:1117 update-lily.py:251 msgid "this help" msgstr "deze hulp" -#: ly2dvi.py:351 main.cc:111 main.cc:116 +#: ly2dvi.py:352 main.cc:111 main.cc:116 msgid "DIR" msgstr "DIR" -#: ly2dvi.py:351 +#: ly2dvi.py:352 msgid "add DIR to LilyPond's search path" msgstr "voeg DIR toe aan LilyPonds zoekpad" -#: ly2dvi.py:352 +#: ly2dvi.py:353 #, c-format msgid "keep all output, and name the directory %s.dir" msgstr "bewaar alle uitvoer, en noem de directory %s.dir" -#: ly2dvi.py:353 +#: ly2dvi.py:354 msgid "don't run LilyPond" msgstr "draai LilyPond niet" -#: ly2dvi.py:354 main.cc:114 +#: ly2dvi.py:355 main.cc:114 msgid "produce MIDI output only" msgstr "produceer alleen MIDI uitvoer" -#: ly2dvi.py:355 ly2dvi.py:356 main.cc:99 main.cc:112 main.cc:115 +#: ly2dvi.py:356 ly2dvi.py:357 main.cc:99 main.cc:112 main.cc:115 msgid "FILE" msgstr "BESTAND" -#: ly2dvi.py:355 +#: ly2dvi.py:356 msgid "write ouput to FILE" msgstr "schrijf uitvoer naar BESTAND" -#: ly2dvi.py:356 +#: ly2dvi.py:357 msgid "find pfa fonts used in FILE" msgstr "zoek pfa fonts gebruikt in BESTAND" -#: ly2dvi.py:358 +#: ly2dvi.py:359 msgid "generate PostScript output" msgstr "genereer PostScipt uitvoer" -#: ly2dvi.py:359 +#: ly2dvi.py:360 msgid "KEY=VAL" msgstr "SEUTEL=WAARDE" -#: ly2dvi.py:359 +#: ly2dvi.py:360 msgid "change global setting KEY to VAL" msgstr "verander globale instelling SLEUTEL in WAARDE" -#: ly2dvi.py:360 main.cc:119 mup2ly.py:1120 update-lily.py:256 +#: ly2dvi.py:361 main.cc:119 mup2ly.py:1120 update-lily.py:255 msgid "verbose" msgstr "breedsprakig" -#: ly2dvi.py:361 main.cc:105 main.cc:118 mup2ly.py:1121 update-lily.py:257 +#: ly2dvi.py:362 main.cc:105 main.cc:118 mup2ly.py:1121 update-lily.py:256 msgid "print version number" msgstr "druk versienummer af" -#: ly2dvi.py:362 main.cc:107 main.cc:120 mup2ly.py:1122 update-lily.py:259 +#: ly2dvi.py:363 main.cc:107 main.cc:120 mup2ly.py:1122 update-lily.py:258 msgid "show warranty and copyright" msgstr "toon garantie en auteursrechten" -#: ly2dvi.py:384 ly2dvi.py:579 ly2dvi.py:604 +#: ly2dvi.py:385 ly2dvi.py:580 ly2dvi.py:605 #, c-format msgid "Running %s..." msgstr "Uitvoeren %s..." -#: ly2dvi.py:397 +#: ly2dvi.py:398 #, c-format msgid "Analyzing %s..." msgstr "Analyseer %s..." -#: ly2dvi.py:453 +#: ly2dvi.py:454 #, c-format msgid "no lilypond output found for %s" msgstr "geen lilypond uitvoer gevonden voor %s" -#: ly2dvi.py:495 +#: ly2dvi.py:496 #, c-format msgid "invalid value: %s" msgstr "ongeldige waarde: %s" -#: ly2dvi.py:638 +#: ly2dvi.py:639 #, c-format msgid "not a PostScript file: `%s'" msgstr "geen PostScript bestand: `%s'" -#: ly2dvi.py:656 +#: ly2dvi.py:657 #, c-format msgid "getopt says: `%s'" msgstr "getopt zegt: `%s'" -#: ly2dvi.py:823 scores.cc:44 +#: ly2dvi.py:824 scores.cc:44 #, c-format msgid "dependencies output to `%s'..." msgstr "afhankelijkheden uitvoer naar `%s'..." -#: ly2dvi.py:834 +#: ly2dvi.py:835 #, c-format msgid "%s output to `%s'..." msgstr "%s uitvoer naar `%s'..." -#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:836 +#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:837 #: midi-score-parser.cc:24 scores.cc:136 scores.cc:142 #, c-format msgid "can't find file: `%s'" msgstr "kan bestand niet vinden: `%s'" -#: ly2dvi.py:847 +#: ly2dvi.py:848 msgid "no files specified on command line." msgstr "geen bestanden gespecificeerd op de commandoregel." @@ -241,80 +240,80 @@ msgstr "Schrijven van `%s'..." msgid "Fetch and rebuild from latest source package" msgstr "Grijp en herbouw van meest recente source pakket" -#: update-lily.py:224 +#: update-lily.py:223 #, c-format msgid "Cleaning `%s'..." msgstr "Schoonmaken van `%s'..." -#: update-lily.py:244 +#: update-lily.py:243 #, c-format msgid "unpack and build in DIR [%s]" msgstr "pak uit en bouw in DIR [%s]" -#: update-lily.py:245 +#: update-lily.py:244 msgid "execute COMMAND, subtitute:" msgstr "voer COMMAND uit, substitueer:" -#: update-lily.py:246 +#: update-lily.py:245 msgid "%b: build root" msgstr "%b: bouw-root" -#: update-lily.py:247 +#: update-lily.py:246 #, c-format msgid "%n: package name" msgstr "%n: pakketnaam" -#: update-lily.py:248 +#: update-lily.py:247 msgid "%r: release directory" msgstr "%r: uitgave directory" -#: update-lily.py:249 +#: update-lily.py:248 msgid "%t: tarball" msgstr "%t: tar-bal" -#: update-lily.py:250 +#: update-lily.py:249 msgid "%v: package version" msgstr "%v: pakketversie" -#: update-lily.py:253 +#: update-lily.py:252 #, c-format msgid "keep all output, and name the directory %s" msgstr "bewaar alle uitvoer, en noem de directory %s" -#: update-lily.py:254 +#: update-lily.py:253 msgid "upon failure notify EMAIL[,EMAIL]" msgstr "bij fout bericht EMAIL[,EMAIL]" -#: update-lily.py:255 +#: update-lily.py:254 msgid "remove previous build" msgstr "verwijder vorige bouw" -#: update-lily.py:258 +#: update-lily.py:257 #, c-format msgid "fetch and build URL [%s]" msgstr "grijp en bouw URL [%s]" -#: update-lily.py:366 +#: update-lily.py:365 #, c-format msgid "Listing `%s'..." msgstr "Lijst van `%s'" -#: update-lily.py:427 +#: update-lily.py:426 #, c-format msgid "latest is: %s" msgstr "meest recente is: %s" -#: update-lily.py:428 +#: update-lily.py:427 #, c-format msgid "relax, %s is up to date" msgstr "ontspan, %s is bij de tijd" -#: update-lily.py:436 update-lily.py:449 +#: update-lily.py:435 update-lily.py:448 #, c-format msgid "Fetching `%s'..." msgstr "Grijpen van `%s'..." -#: update-lily.py:458 +#: update-lily.py:457 #, c-format msgid "Building `%s'..." msgstr "Bouwen van `%s'..." @@ -890,7 +889,7 @@ msgid "can't find start of phrasing slur" msgstr "kan start van fraseringsboog niet vinden" #: piano-pedal-engraver.cc:142 piano-pedal-engraver.cc:154 -#: piano-pedal-performer.cc:86 +#: piano-pedal-performer.cc:87 #, c-format msgid "can't find start of piano pedal: `%s'" msgstr "kan start van piano pedaal niet vinden: `%s'" @@ -1131,32 +1130,32 @@ msgstr "Tweede argument moet een symbool zijn" msgid "First argument must be a procedure taking 1 argument" msgstr "Eerste argument moet een procedure zijn met 1 argument" -#: parser.yy:1264 +#: parser.yy:1263 msgid "Expecting string as script definition" msgstr "Verwacht string voor script definitie" -#: parser.yy:1274 +#: parser.yy:1273 msgid "Can't specify direction for this request" msgstr "Kan richting voor dit verzoek niet specificeren" -#: parser.yy:1399 +#: parser.yy:1398 msgid "Expecting musical-pitch value" msgstr "Verwacht musical-pitch waarde" -#: parser.yy:1410 +#: parser.yy:1409 msgid "Must have duration object" msgstr "Moet duur object hebben" -#: parser.yy:1419 parser.yy:1427 +#: parser.yy:1418 parser.yy:1426 msgid "Have to be in Lyric mode for lyrics" msgstr "Moet in Lyric modus zijn voor liedteksten" -#: parser.yy:1580 parser.yy:1637 +#: parser.yy:1579 parser.yy:1636 #, c-format msgid "not a duration: %d" msgstr "geen duur: %d" -#: parser.yy:1648 +#: parser.yy:1645 msgid "Have to be in Note mode for notes" msgstr "Moet in Note modus zijn voor noten" @@ -1289,6 +1288,7 @@ msgid "% Automatically generated" msgstr "% Automatisch gegenereerd" #: lilypond-stream.cc:97 +#, c-format msgid "% from input file: " msgstr "% van invoerbestand: " diff --git a/po/ru.po b/po/ru.po index 1845dc3200..a1b406243f 100644 --- a/po/ru.po +++ b/po/ru.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2001-10-09 19:29+0200\n" +"POT-Creation-Date: 2001-09-09 17:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: August S.Sigov \n" "Language-Team: Russian \n" @@ -14,178 +14,178 @@ msgstr "" "Content-Type: text/plain; charset=koi8-r\n" "Content-Transfer-Encoding: ENCODING\n" -#: ly2dvi.py:109 +#: ly2dvi.py:106 msgid "Generate .dvi with LaTeX for LilyPond" msgstr "" #: data-file.cc:118 input.cc:85 ly2dvi.py:191 midi-parser.cc:100 mup2ly.py:93 -#: update-lily.py:119 warn.cc:23 +#: update-lily.py:118 warn.cc:23 msgid "warning: " msgstr "ÐÒÅÄÕÐÒÅÖÄÁÀ: " -#: input.cc:90 ly2dvi.py:206 ly2dvi.py:638 ly2dvi.py:656 ly2dvi.py:847 -#: mup2ly.py:98 mup2ly.py:188 update-lily.py:124 update-lily.py:212 warn.cc:9 +#: input.cc:90 ly2dvi.py:206 ly2dvi.py:639 ly2dvi.py:657 ly2dvi.py:848 +#: mup2ly.py:98 mup2ly.py:188 update-lily.py:123 update-lily.py:211 warn.cc:9 #: warn.cc:17 msgid "error: " msgstr "ÏÛÉÂËÁ: " -#: ly2dvi.py:207 mup2ly.py:100 update-lily.py:126 +#: ly2dvi.py:207 mup2ly.py:100 update-lily.py:125 msgid "Exiting ... " msgstr "" -#: ly2dvi.py:265 mup2ly.py:158 update-lily.py:184 +#: ly2dvi.py:265 mup2ly.py:158 update-lily.py:183 #, fuzzy, c-format msgid "Usage: %s [OPTION]... FILE" msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ïðãéñ]... [æáêì]" -#: ly2dvi.py:269 main.cc:120 main.cc:149 mup2ly.py:162 update-lily.py:188 +#: ly2dvi.py:269 main.cc:120 main.cc:149 mup2ly.py:162 update-lily.py:187 msgid "Options:" msgstr "ïÐÃÉÉ:" -#: ly2dvi.py:273 main.cc:124 main.cc:172 mup2ly.py:168 update-lily.py:192 +#: ly2dvi.py:273 main.cc:124 main.cc:172 mup2ly.py:168 update-lily.py:191 #, c-format msgid "Report bugs to %s" msgstr "óÏÏÂÝÁÊÔÅ Ï ÏÛÉÂËÁÈ ÐÏ %s" -#: ly2dvi.py:305 mup2ly.py:185 update-lily.py:209 +#: ly2dvi.py:306 mup2ly.py:185 update-lily.py:208 #, fuzzy, c-format msgid "Invoking `%s'" msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'" -#: ly2dvi.py:309 mup2ly.py:188 update-lily.py:212 +#: ly2dvi.py:310 mup2ly.py:188 update-lily.py:211 #, c-format msgid "command exited with value %d" msgstr "" -#: ly2dvi.py:311 mup2ly.py:190 update-lily.py:214 +#: ly2dvi.py:312 mup2ly.py:190 update-lily.py:213 msgid "(ignored)" msgstr "" -#: ly2dvi.py:321 +#: ly2dvi.py:322 #, fuzzy, c-format msgid "Cleaning %s..." msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'" -#: ly2dvi.py:336 mup2ly.py:214 update-lily.py:238 +#: ly2dvi.py:337 mup2ly.py:214 update-lily.py:237 #, fuzzy, c-format msgid "no such setting: %s" msgstr "ÎÅÔ ÔÁËÏÇÏ ÉÎÓÔÒÕÍÅÎÔÁ: `%s'" -#: ly2dvi.py:349 main.cc:113 +#: ly2dvi.py:350 main.cc:113 msgid "write Makefile dependencies for every input file" msgstr "ÚÁÐÉÓÙ×ÁÔØ ÚÁ×ÉÓÉÍÏÓÔÉ Makefile ÄÌÑ ËÁÖÄÏÇÏ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ" -#: ly2dvi.py:350 main.cc:96 main.cc:109 mup2ly.py:1117 update-lily.py:252 +#: ly2dvi.py:351 main.cc:96 main.cc:109 mup2ly.py:1117 update-lily.py:251 msgid "this help" msgstr "ÜÔÁ ÓÐÒÁ×ËÁ" -#: ly2dvi.py:351 main.cc:111 main.cc:116 +#: ly2dvi.py:352 main.cc:111 main.cc:116 msgid "DIR" msgstr "ëáô" -#: ly2dvi.py:351 +#: ly2dvi.py:352 #, fuzzy msgid "add DIR to LilyPond's search path" msgstr "ÄÏÂÁ×ÉÔØ ëáô Ë ÐÕÔÉ ÐÏÉÓËÁ" -#: ly2dvi.py:352 +#: ly2dvi.py:353 #, c-format msgid "keep all output, and name the directory %s.dir" msgstr "" -#: ly2dvi.py:353 +#: ly2dvi.py:354 msgid "don't run LilyPond" msgstr "" -#: ly2dvi.py:354 main.cc:114 +#: ly2dvi.py:355 main.cc:114 msgid "produce MIDI output only" msgstr "ÐÒÏÉÚ×ÏÄÉÔØ ×Ù×ÏÄ ÔÏÌØËÏ MIDI" -#: ly2dvi.py:355 ly2dvi.py:356 main.cc:99 main.cc:112 main.cc:115 +#: ly2dvi.py:356 ly2dvi.py:357 main.cc:99 main.cc:112 main.cc:115 msgid "FILE" msgstr "æáêì" -#: ly2dvi.py:355 +#: ly2dvi.py:356 #, fuzzy msgid "write ouput to FILE" msgstr "ÚÁÐÉÓÙ×ÁÔØ ×Ù×ÏÄ × ïóîï÷á[-x].ÒÁÓÛÉÒÅÎÉÅ" -#: ly2dvi.py:356 +#: ly2dvi.py:357 msgid "find pfa fonts used in FILE" msgstr "" -#: ly2dvi.py:358 +#: ly2dvi.py:359 msgid "generate PostScript output" msgstr "" -#: ly2dvi.py:359 +#: ly2dvi.py:360 msgid "KEY=VAL" msgstr "" -#: ly2dvi.py:359 +#: ly2dvi.py:360 msgid "change global setting KEY to VAL" msgstr "" -#: ly2dvi.py:360 main.cc:119 mup2ly.py:1120 update-lily.py:256 +#: ly2dvi.py:361 main.cc:119 mup2ly.py:1120 update-lily.py:255 #, fuzzy msgid "verbose" msgstr "ÂÙÔØ ÂÏÌÔÌÉ×ÙÍ" -#: ly2dvi.py:361 main.cc:105 main.cc:118 mup2ly.py:1121 update-lily.py:257 +#: ly2dvi.py:362 main.cc:105 main.cc:118 mup2ly.py:1121 update-lily.py:256 msgid "print version number" msgstr "×Ù×ÏÄÉÔØ ÎÏÍÅÒ ×ÅÒÓÉÉ" -#: ly2dvi.py:362 main.cc:107 main.cc:120 mup2ly.py:1122 update-lily.py:259 +#: ly2dvi.py:363 main.cc:107 main.cc:120 mup2ly.py:1122 update-lily.py:258 msgid "show warranty and copyright" msgstr "ÐÏËÁÚÁÔØ ÇÁÒÁÎÔÉÀ É copyright" -#: ly2dvi.py:384 ly2dvi.py:579 ly2dvi.py:604 +#: ly2dvi.py:385 ly2dvi.py:580 ly2dvi.py:605 #, fuzzy, c-format msgid "Running %s..." msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'" -#: ly2dvi.py:397 +#: ly2dvi.py:398 #, fuzzy, c-format msgid "Analyzing %s..." msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'" -#: ly2dvi.py:453 +#: ly2dvi.py:454 #, c-format msgid "no lilypond output found for %s" msgstr "" -#: ly2dvi.py:495 +#: ly2dvi.py:496 #, fuzzy, c-format msgid "invalid value: %s" msgstr "ÎÅ×ÅÒÎÙÊ ÓÉÍ×ÏÌ: `%c'" -#: ly2dvi.py:638 +#: ly2dvi.py:639 #, fuzzy, c-format msgid "not a PostScript file: `%s'" msgstr "ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ÆÁÊÌ: `%s'" -#: ly2dvi.py:656 +#: ly2dvi.py:657 #, c-format msgid "getopt says: `%s'" msgstr "" -#: ly2dvi.py:823 scores.cc:44 +#: ly2dvi.py:824 scores.cc:44 #, fuzzy, c-format msgid "dependencies output to `%s'..." msgstr "\"ÂÕÍÁÖÎÙÊ\" ×Ù×ÏÄ × %s..." -#: ly2dvi.py:834 +#: ly2dvi.py:835 #, fuzzy, c-format msgid "%s output to `%s'..." msgstr "×Ù×ÏÄ MIDI × %s..." -#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:836 +#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:837 #: midi-score-parser.cc:24 scores.cc:136 scores.cc:142 #, c-format msgid "can't find file: `%s'" msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÆÁÊÌ: `%s'" -#: ly2dvi.py:847 +#: ly2dvi.py:848 msgid "no files specified on command line." msgstr "" @@ -234,81 +234,81 @@ msgstr " msgid "Fetch and rebuild from latest source package" msgstr "" -#: update-lily.py:224 +#: update-lily.py:223 #, fuzzy, c-format msgid "Cleaning `%s'..." msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'" -#: update-lily.py:244 +#: update-lily.py:243 #, c-format msgid "unpack and build in DIR [%s]" msgstr "" -#: update-lily.py:245 +#: update-lily.py:244 msgid "execute COMMAND, subtitute:" msgstr "" -#: update-lily.py:246 +#: update-lily.py:245 msgid "%b: build root" msgstr "" -#: update-lily.py:247 +#: update-lily.py:246 #, c-format msgid "%n: package name" msgstr "" -#: update-lily.py:248 +#: update-lily.py:247 #, fuzzy msgid "%r: release directory" msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ ÉÌÉ ÓÏÚÄÁÔØ: `%s'" -#: update-lily.py:249 +#: update-lily.py:248 msgid "%t: tarball" msgstr "" -#: update-lily.py:250 +#: update-lily.py:249 msgid "%v: package version" msgstr "" -#: update-lily.py:253 +#: update-lily.py:252 #, c-format msgid "keep all output, and name the directory %s" msgstr "" -#: update-lily.py:254 +#: update-lily.py:253 msgid "upon failure notify EMAIL[,EMAIL]" msgstr "" -#: update-lily.py:255 +#: update-lily.py:254 msgid "remove previous build" msgstr "" -#: update-lily.py:258 +#: update-lily.py:257 #, c-format msgid "fetch and build URL [%s]" msgstr "" -#: update-lily.py:366 +#: update-lily.py:365 #, fuzzy, c-format msgid "Listing `%s'..." msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'" -#: update-lily.py:427 +#: update-lily.py:426 #, c-format msgid "latest is: %s" msgstr "" -#: update-lily.py:428 +#: update-lily.py:427 #, c-format msgid "relax, %s is up to date" msgstr "" -#: update-lily.py:436 update-lily.py:449 +#: update-lily.py:435 update-lily.py:448 #, fuzzy, c-format msgid "Fetching `%s'..." msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'" -#: update-lily.py:458 +#: update-lily.py:457 #, fuzzy, c-format msgid "Building `%s'..." msgstr "÷ÙÂÒÁÓÙ×ÁÀ ÍÕÚÙËÕ: `%s'" @@ -876,7 +876,7 @@ msgid "can't find start of phrasing slur" msgstr "ÞÔÏ-ÔÏ ÎÅ ÎÁÊÄÕ ÎÁÞÁÌÏ ÇÒÕÐÐÉÒÏ×ËÉ ÛÔÉÌÅÊ" #: piano-pedal-engraver.cc:142 piano-pedal-engraver.cc:154 -#: piano-pedal-performer.cc:86 +#: piano-pedal-performer.cc:87 #, fuzzy, c-format msgid "can't find start of piano pedal: `%s'" msgstr "ÞÔÏ-ÔÏ ÎÅ ÎÁÊÄÕ ÎÁÞÁÌÏ ÇÒÕÐÐÉÒÏ×ËÉ ÛÔÉÌÅÊ" @@ -1118,33 +1118,33 @@ msgstr " msgid "First argument must be a procedure taking 1 argument" msgstr "" -#: parser.yy:1264 +#: parser.yy:1263 msgid "Expecting string as script definition" msgstr "" -#: parser.yy:1274 +#: parser.yy:1273 msgid "Can't specify direction for this request" msgstr "îÅ ÍÏÇÕ ÕËÁÚÁÔØ ÎÁÐÒÁ×ÌÅÎÉÅ ÄÌÑ ÜÔÏÇÏ ÚÁÐÒÏÓÁ" -#: parser.yy:1399 +#: parser.yy:1398 msgid "Expecting musical-pitch value" msgstr "" -#: parser.yy:1410 +#: parser.yy:1409 #, fuzzy msgid "Must have duration object" msgstr "ÕÓÔÁÎÏ×ÉÔØ ÎÁÉÍÅÎØÛÕÀ ÐÒÏÄÏÌÖÉÔÅÌØÎÏÓÔØ" -#: parser.yy:1419 parser.yy:1427 +#: parser.yy:1418 parser.yy:1426 msgid "Have to be in Lyric mode for lyrics" msgstr "äÏÌÖÅÎ ÂÙÔØ × ìÉÒÉÞÅÓËÏÍ ÒÅÖÉÍÅ ÄÌÑ ÌÉÒÉËÉ" -#: parser.yy:1580 parser.yy:1637 +#: parser.yy:1579 parser.yy:1636 #, c-format msgid "not a duration: %d" msgstr "ÎÅ ÐÒÏÄÏÌÖÉÔÅÌØÎÏÓÔØ: %d" -#: parser.yy:1648 +#: parser.yy:1645 msgid "Have to be in Note mode for notes" msgstr "äÏÌÖÅÎ ÂÙÔØ × îÏÔÎÏÍ ÒÅÖÉÍÅ ÄÌÑ ÎÏÔ" diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 0000000000..1c33f80049 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,1423 @@ +# Swedish translation of lilypond +# Copyright (C) 2001 Free Software Foundation, Inc. +# Martin Norbäck , 2001. +# +msgid "" +msgstr "" +"Project-Id-Version: lilypond 1.4.8\n" +"POT-Creation-Date: 2001-09-09 17:30+0200\n" +"PO-Revision-Date: 2001-09-29 11:20+0200\n" +"Last-Translator: Martin Norbäck \n" +"Language-Team: Swedish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ly2dvi.py:106 +msgid "Generate .dvi with LaTeX for LilyPond" +msgstr "Generera .dvi med LaTeX för LilyPond" + +#: data-file.cc:118 input.cc:85 ly2dvi.py:191 midi-parser.cc:100 mup2ly.py:93 +#: update-lily.py:118 warn.cc:23 +msgid "warning: " +msgstr "varning: " + +#: input.cc:90 ly2dvi.py:206 ly2dvi.py:639 ly2dvi.py:657 ly2dvi.py:848 +#: mup2ly.py:98 mup2ly.py:188 update-lily.py:123 update-lily.py:211 warn.cc:9 +#: warn.cc:17 +msgid "error: " +msgstr "fel: " + +#: ly2dvi.py:207 mup2ly.py:100 update-lily.py:125 +msgid "Exiting ... " +msgstr "Avslutar... " + +#: ly2dvi.py:265 mup2ly.py:158 update-lily.py:183 +#, c-format +msgid "Usage: %s [OPTION]... FILE" +msgstr "Användning: %s [FLAGGA]... FIL" + +#: ly2dvi.py:269 main.cc:120 main.cc:149 mup2ly.py:162 update-lily.py:187 +msgid "Options:" +msgstr "Flaggor:" + +#: ly2dvi.py:273 main.cc:124 main.cc:172 mup2ly.py:168 update-lily.py:191 +#, c-format +msgid "Report bugs to %s" +msgstr "" +"Rapportera programfel till %s\n" +"Rapportera fel i översättningen till " + +#: ly2dvi.py:306 mup2ly.py:185 update-lily.py:208 +#, c-format +msgid "Invoking `%s'" +msgstr "Startar \"%s\"" + +#: ly2dvi.py:310 mup2ly.py:188 update-lily.py:211 +#, c-format +msgid "command exited with value %d" +msgstr "kommandot avslutade med värde %d" + +#: ly2dvi.py:312 mup2ly.py:190 update-lily.py:213 +msgid "(ignored)" +msgstr "(ignorerat)" + +# här är det fråga om rensning av en temporärkatalog +#: ly2dvi.py:322 +#, c-format +msgid "Cleaning %s..." +msgstr "Rensar %s..." + +#: ly2dvi.py:337 mup2ly.py:214 update-lily.py:237 +#, c-format +msgid "no such setting: %s" +msgstr "inställningen finns inte: %s" + +#: ly2dvi.py:350 main.cc:113 +msgid "write Makefile dependencies for every input file" +msgstr "skriv Makefile-beroenden för varje indatafil" + +# förklaring av flaggan -h +#: ly2dvi.py:351 main.cc:96 main.cc:109 mup2ly.py:1117 update-lily.py:251 +msgid "this help" +msgstr "denna hjälp" + +#: ly2dvi.py:352 main.cc:111 main.cc:116 +msgid "DIR" +msgstr "KATALOG" + +#: ly2dvi.py:352 +msgid "add DIR to LilyPond's search path" +msgstr "lägg till KATALOG till LilyPonds sökväg" + +# %s är programmets namn +#: ly2dvi.py:353 +#, c-format +msgid "keep all output, and name the directory %s.dir" +msgstr "behåll all utdata, och namnge katalogen %s.dir" + +#: ly2dvi.py:354 +msgid "don't run LilyPond" +msgstr "kör inte LilyPond" + +#: ly2dvi.py:355 main.cc:114 +msgid "produce MIDI output only" +msgstr "skapa enbart MIDI-utdata" + +#: ly2dvi.py:356 ly2dvi.py:357 main.cc:99 main.cc:112 main.cc:115 +msgid "FILE" +msgstr "FIL" + +#: ly2dvi.py:356 +msgid "write ouput to FILE" +msgstr "skriv utdata till FIL" + +#: ly2dvi.py:357 +msgid "find pfa fonts used in FILE" +msgstr "hitta pfa-typsnitt som används i FIL" + +#: ly2dvi.py:359 +msgid "generate PostScript output" +msgstr "skapa PostScript-utdata" + +#: ly2dvi.py:360 +msgid "KEY=VAL" +msgstr "NYCKEL=VÄRDE" + +#: ly2dvi.py:360 +msgid "change global setting KEY to VAL" +msgstr "ändra global inställning NYCKEL till VÄRDE" + +# Förklaring till --verbose (borde vara längre) +#: ly2dvi.py:361 main.cc:119 mup2ly.py:1120 update-lily.py:255 +msgid "verbose" +msgstr "utförlig utdata" + +#: ly2dvi.py:362 main.cc:105 main.cc:118 mup2ly.py:1121 update-lily.py:256 +msgid "print version number" +msgstr "visa versionsnummer" + +#: ly2dvi.py:363 main.cc:107 main.cc:120 mup2ly.py:1122 update-lily.py:258 +msgid "show warranty and copyright" +msgstr "visa garanti och copyright" + +#: ly2dvi.py:385 ly2dvi.py:580 ly2dvi.py:605 +#, c-format +msgid "Running %s..." +msgstr "Kör %s..." + +#: ly2dvi.py:398 +#, c-format +msgid "Analyzing %s..." +msgstr "Analyserar %s..." + +#: ly2dvi.py:454 +#, c-format +msgid "no lilypond output found for %s" +msgstr "ingen lilypondutdata funnen för %s" + +#: ly2dvi.py:496 +#, c-format +msgid "invalid value: %s" +msgstr "ogiltigt värde: %s" + +#: ly2dvi.py:639 +#, c-format +msgid "not a PostScript file: `%s'" +msgstr "inte en PostScript-fil: \"%s\"" + +#: ly2dvi.py:657 +#, c-format +msgid "getopt says: `%s'" +msgstr "getopt säger: \"%s\"" + +# här är det fråga om skrivning till en fil +#: ly2dvi.py:824 scores.cc:44 +#, c-format +msgid "dependencies output to `%s'..." +msgstr "beroenden skrivna till \"%s\"..." + +# här är det fråga om skrivning till en fil (första parametern är t.ex +# DVI, LATEX, MIDI, TEX) +#: ly2dvi.py:835 +#, c-format +msgid "%s output to `%s'..." +msgstr "%s skrivet till \"%s\"..." + +#: includable-lexer.cc:49 lily-guile.cc:139 ly2dvi.py:837 +#: midi-score-parser.cc:24 scores.cc:136 scores.cc:142 +#, c-format +msgid "can't find file: `%s'" +msgstr "kan inte hitta fil: \"%s\"" + +#: ly2dvi.py:848 +msgid "no files specified on command line." +msgstr "inga filer angivna på kommandoraden." + +#: mup2ly.py:51 +msgid "Convert mup to ly" +msgstr "Konvertera mup till ly" + +# %s är programnamnet (mup2ly) +#: mup2ly.py:166 +#, c-format +msgid "%s is far from completed. Not all constructs are recognised." +msgstr "%s är långt ifrån färdig, och kan inte alla konstruktioner." + +#: mup2ly.py:964 +#, c-format +msgid "no such context: %s" +msgstr "omgivning finns inte: %s" + +#: mup2ly.py:1115 +msgid "debug" +msgstr "felsökningsutdata" + +#: mup2ly.py:1116 +msgid "define macro NAME [optional expansion EXP]" +msgstr "definiera makro NAME [valfri makroersättning EXP]" + +#: main.cc:115 mup2ly.py:1118 +msgid "write output to FILE" +msgstr "skriv utdata till FIL" + +#: mup2ly.py:1119 +msgid "only pre-process" +msgstr "förbehandla enbart" + +#: mup2ly.py:1200 +#, c-format +msgid "Processing `%s'..." +msgstr "Behandlar \"%s\"..." + +#: mup2ly.py:1219 +#, c-format +msgid "Writing `%s'..." +msgstr "Skriver \"%s\"..." + +#: update-lily.py:51 +msgid "Fetch and rebuild from latest source package" +msgstr "Hämta och bygg om från senaste källkodspaketet" + +#: update-lily.py:223 +#, c-format +msgid "Cleaning `%s'..." +msgstr "Rensar \"%s\"..." + +#: update-lily.py:243 +#, c-format +msgid "unpack and build in DIR [%s]" +msgstr "packa upp och bygg i DIR [%s]" + +#: update-lily.py:244 +msgid "execute COMMAND, subtitute:" +msgstr "kör COMMAND, ersätt:" + +#: update-lily.py:245 +msgid "%b: build root" +msgstr "%b: byggrot" + +#: update-lily.py:246 +#, c-format +msgid "%n: package name" +msgstr "%n: paketnamn" + +#: update-lily.py:247 +msgid "%r: release directory" +msgstr "%r: programsläppskatalog" + +#: update-lily.py:248 +msgid "%t: tarball" +msgstr "%t: tarboll" + +#: update-lily.py:249 +msgid "%v: package version" +msgstr "%v: paketversion" + +#: update-lily.py:252 +#, c-format +msgid "keep all output, and name the directory %s" +msgstr "behåll all utdata, och döp katalogen till %s" + +#: update-lily.py:253 +msgid "upon failure notify EMAIL[,EMAIL]" +msgstr "vid fel, meddela EMAIL[,EMAIL]" + +#: update-lily.py:254 +msgid "remove previous build" +msgstr "ta bort föregående bygge" + +#: update-lily.py:257 +#, c-format +msgid "fetch and build URL [%s]" +msgstr "hämta och bygg URL [%s]" + +#: update-lily.py:365 +#, c-format +msgid "Listing `%s'..." +msgstr "Listar \"%s\"..." + +#: update-lily.py:426 +#, c-format +msgid "latest is: %s" +msgstr "senaste är: %s" + +#: update-lily.py:427 +#, c-format +msgid "relax, %s is up to date" +msgstr "lugn, %s är senaste versionen" + +#: update-lily.py:435 update-lily.py:448 +#, c-format +msgid "Fetching `%s'..." +msgstr "Hämtar \"%s\"..." + +#: update-lily.py:457 +#, c-format +msgid "Building `%s'..." +msgstr "Bygger \"%s\"..." + +#: data-file.cc:54 +msgid "EOF in a string" +msgstr "EOF i en sträng" + +#: getopt-long.cc:145 +#, c-format +msgid "option `%s' requires an argument" +msgstr "flaggan \"%s\" kräver ett argument" + +#: getopt-long.cc:149 +#, c-format +msgid "option `%s' doesn't allow an argument" +msgstr "flaggan \"%s\" tillåter inget argument" + +#: getopt-long.cc:153 +#, c-format +msgid "unrecognized option: `%s'" +msgstr "okänd flagga: \"%s\"" + +#: getopt-long.cc:160 +#, c-format +msgid "invalid argument `%s' to option `%s'" +msgstr "ogiltigt argument \"%s\" till flaggan \"%s\"" + +#: input.cc:96 +msgid "non fatal error: " +msgstr "icke-fatalt fel: " + +#: input.cc:104 source-file.cc:63 source-file.cc:156 +msgid "position unknown" +msgstr "okänd position" + +# det handlar om mmap här +#: mapped-file-storage.cc:74 +msgid "can't map file" +msgstr "kan inte göra \"mmap\" på filen" + +#: lilypond-stream.cc:111 mapped-file-storage.cc:87 paper-stream.cc:45 +#: scores.cc:48 simple-file-storage.cc:44 text-stream.cc:23 +#, c-format +msgid "can't open file: `%s'" +msgstr "kan inte öppna fil: \"%s\"" + +#: simple-file-storage.cc:56 +#, c-format +msgid "Huh? Got %d, expected %d characters" +msgstr "Öh? Fick %d, väntade %d tecken" + +#: text-stream.cc:10 +msgid "" +msgstr "" + +#: warn.cc:36 +msgid "programming error: " +msgstr "programmeringsfel: " + +#: warn.cc:36 +msgid " (Continuing; cross thumbs)" +msgstr " (Fortsätter, håll tummarna)" + +#: afm.cc:59 +#, c-format +msgid "can't find character number: %d" +msgstr "kan inte hitta teckennummer: %d" + +#: afm.cc:74 +#, c-format +msgid "can't find character called: `%s'" +msgstr "kan inte hitta tecken som heter: \"%s\"" + +#: afm.cc:124 +#, c-format +msgid "Error parsing AFM file: `%s'" +msgstr "Fel vid tolkning av AFM-fil: \"%s\"" + +#: all-font-metrics.cc:95 +#, c-format +msgid "checksum mismatch for font file: `%s'" +msgstr "felaktig checksumma för typsnittsfil: \"%s\"" + +#: all-font-metrics.cc:97 +#, c-format +msgid "does not match: `%s'" +msgstr "matchar inte: \"%s\"" + +#: all-font-metrics.cc:102 +msgid " Rebuild all .afm files, and remove all .pk and .tfm files. Rerun with -V to show font paths." +msgstr " Bygg om alla .afm-filer, och ta bort alla .pk- och .tfm-filer. Kör igen med -V för att visa typsnittssökvägar." + +#: all-font-metrics.cc:167 +#, c-format +msgid "can't find font: `%s'" +msgstr "kan inte hitta typsnitt: \"%s\"" + +#: all-font-metrics.cc:168 +msgid "Loading default font" +msgstr "Läser in standardtypsnitt" + +#: all-font-metrics.cc:183 +#, c-format +msgid "can't find default font: `%s'" +msgstr "kan inte hitta standardtypsnitt: \"%s\"" + +#: all-font-metrics.cc:184 includable-lexer.cc:51 scores.cc:137 +#, c-format +msgid "(search path: `%s')" +msgstr "(sökväg: \"%s\")" + +#: all-font-metrics.cc:185 +msgid "Giving up" +msgstr "Ger upp" + +#: auto-change-iterator.cc:43 change-iterator.cc:59 +#: part-combine-music-iterator.cc:97 +msgid "Can't switch translators, I'm there already" +msgstr "Kan inte byta översättare, jag är redan där" + +#: beam-engraver.cc:91 beam-engraver.cc:124 +msgid "can't find start of beam" +msgstr "kan inte hitta start på balk" + +#: beam-engraver.cc:158 +msgid "already have a beam" +msgstr "har redan en balk" + +#: beam-engraver.cc:222 +msgid "unterminated beam" +msgstr "oavslutad balk" + +#: beam-engraver.cc:260 chord-tremolo-engraver.cc:195 +msgid "stem must have Rhythmic structure" +msgstr "skaft måste ha en rytmisk struktur" + +#: beam-engraver.cc:272 +msgid "stem doesn't fit in beam" +msgstr "skaftet passar inte i balken" + +#: beam-engraver.cc:273 +msgid "beam was started here" +msgstr "balken startade här" + +#: beam.cc:86 +msgid "beam has less than two stems" +msgstr "balk har mindre än två skaft" + +#: beam.cc:637 +msgid "weird beam vertical offset" +msgstr "underligt vertikalt avstånd för balk" + +#: break-align-item.cc:136 +#, c-format +msgid "unknown spacing pair `%s', `%s'" +msgstr "okänt avståndspar \"%s\", \"%s\"" + +#: change-iterator.cc:21 +#, c-format +msgid "can't change `%s' to `%s'" +msgstr "kan inte ändra \"%s\" till \"%s\"" + +#. +#. We could change the current translator's id, but that would make +#. errors hard to catch +#. +#. last->translator_id_str_ = change_l ()->change_to_id_str_; +#. +#: change-iterator.cc:78 +msgid "I'm one myself" +msgstr "Jag är en själv" + +#: change-iterator.cc:81 +msgid "none of these in my family" +msgstr "ingen av dessa i min familj" + +#: chord-tremolo-engraver.cc:141 percent-repeat-engraver.cc:192 +msgid "unterminated chord tremolo" +msgstr "icke avslutat ackordtremolo" + +#: chord-tremolo-iterator.cc:48 +msgid "no one to print a tremolos" +msgstr "det finns ingen som kan skriva tremolon" + +#: chord.cc:376 +#, c-format +msgid "invalid subtraction: not part of chord: %s" +msgstr "ogiltig subtraktion: inte del av ackord: %s" + +# "pitch" här ska alltså vara en ton i ett ackord +#: chord.cc:405 +#, c-format +msgid "invalid inversion pitch: not part of chord: %s" +msgstr "ogiltig ton för inversion: inte del av ett ackord: %s" + +#: collision.cc:127 +msgid "Too many clashing notecolumns. Ignoring them." +msgstr "För många krockande notkolumner. Ignorerar dem." + +#: dimensions.cc:13 +msgid "NaN" +msgstr "-" + +#: dynamic-engraver.cc:197 span-dynamic-performer.cc:86 +msgid "can't find start of (de)crescendo" +msgstr "kan inte hitta start på crescendo/diminuendo" + +#: dynamic-engraver.cc:222 +msgid "already have a crescendo" +msgstr "har redan ett crescendo" + +#: dynamic-engraver.cc:223 +msgid "already have a decrescendo" +msgstr "har redan ett diminuendo" + +#: dynamic-engraver.cc:317 +msgid "unterminated (de)crescendo" +msgstr "oavslutat crescendo/diminuendo" + +#: extender-engraver.cc:97 +msgid "unterminated extender" +msgstr "oavslutad utökare" + +#: extender-engraver.cc:109 +msgid "Nothing to connect extender to on the left. Ignoring extender request." +msgstr "Det finns inget att koppla utökaren mot till vänster. Ignorerar utökarförfrågan" + +#: folded-repeat-iterator.cc:78 +msgid "no one to print a repeat brace" +msgstr "det finns ingen som kan skriva ett repristecken" + +#: font-interface.cc:237 +msgid "couldn't find any font satisfying " +msgstr "kunde inte hitta något typsnitt som uppfyller " + +#: gourlay-breaking.cc:157 +msgid "No feasible line breaking found" +msgstr "Ingen lämplig radbrytning hittades" + +#: grace-iterator.cc:43 +msgid "no Grace context available" +msgstr "ingen prydnadsomgivning tillgänglig" + +#: grace-position-engraver.cc:96 +msgid "Unattached grace notes. Attaching to last musical column." +msgstr "Ej fastsatta prydnadsnoter. Fäster vid sista musikkolumnen." + +#: hairpin.cc:93 +msgid "decrescendo too small" +msgstr "diminuendo för litet" + +#: hairpin.cc:94 +msgid "crescendo too small" +msgstr "crescendo för litet" + +#: hyphen-engraver.cc:90 +msgid "unterminated hyphen" +msgstr "oavslutat bindestreck" + +#: hyphen-engraver.cc:102 +msgid "Nothing to connect hyphen to on the left. Ignoring hyphen request." +msgstr "Det finns inget att koppla bindestrecket mot till vänster. Ignorerar bindestrecksförfrågan." + +#: key-engraver.cc:99 +msgid "Conflicting key signatures found." +msgstr "Motsägande tonartssignaturer funna." + +#: key-engraver.cc:100 +msgid "This was the other key definition." +msgstr "Detta var den andra tonartsdefinitionen." + +#: key-performer.cc:77 +msgid "FIXME: key change merge" +msgstr "FIXA: tonartsbytessammanslagning" + +#: lily-guile.cc:141 +#, c-format +msgid "(load path: `%s')" +msgstr "(inläsningssökväg: \"%s\"" + +#: line-of-score.cc:96 +#, c-format +msgid "Element count %d." +msgstr "Elementantal %d." + +#: line-of-score.cc:253 paper-score.cc:77 +#, c-format +msgid "Element count %d " +msgstr "Elementantal %d " + +#: line-of-score.cc:267 +msgid "Calculating column positions..." +msgstr "Beräknar kolumnpositioner..." + +#: lyric-phrasing-engraver.cc:284 +msgid "lyrics found without any matching notehead" +msgstr "text hittad utan något matchande nothuvud" + +#: lyric-phrasing-engraver.cc:289 +msgid "Huh? Melismatic note found to have associated lyrics." +msgstr "Öh? Melismatisk not har tillhörande text." + +#. print example usage: lilypond -e "(set-lily-option 'help 0)" ? +#: main.cc:105 +msgid "EXPR" +msgstr "UTTR" + +#: main.cc:105 +msgid "evalute EXPR as Scheme after .scm init is read" +msgstr "evaluera UTTR som Scheme efter .scm-init har lästs" + +#. another bug in option parser: --output=foe is taken as an abbreviation +#. for --output-format +#: main.cc:108 +msgid "EXT" +msgstr "FMT" + +#: main.cc:108 +msgid "use output format EXT (scm, ps, tex or as)" +msgstr "använd utdataformat FMT (scm, ps, tex eller as)" + +#: main.cc:110 +msgid "FIELD" +msgstr "FÄLT" + +#: main.cc:110 +msgid "write header field to BASENAME.FIELD" +msgstr "skriv rubrikfält till BASNAMN.FÄLT" + +#: main.cc:111 +msgid "add DIR to search path" +msgstr "lägg till KATALOG till sökvägen" + +#: main.cc:112 +msgid "use FILE as init file" +msgstr "använd FIL som init-fil" + +#: main.cc:116 +msgid "prepend DIR to dependencies" +msgstr "lägg till KATALOG efter beroenden" + +#: main.cc:117 +msgid "inhibit file output naming and exporting" +msgstr "hindra namngivning av filutdata och exportering" + +#. +#. No version number or newline here. It confuses help2man +#. +#: main.cc:137 +#, c-format +msgid "Usage: %s [OPTION]... FILE..." +msgstr "Användning: %s [FLAGGA]... FIL..." + +#: main.cc:139 +msgid "Typeset music and or play MIDI from FILE" +msgstr "Typsätt musik och/eller spela MIDI från FIL" + +#: main.cc:143 +msgid "" +"LilyPond is a music typesetter. It produces beautiful sheet music\n" +"using a high level description file as input. LilyPond is part of \n" +"the GNU Project.\n" +msgstr "" +"LilyPond är en musiktypsättare. Den producerar vackra noter från en\n" +"högnivåbeskrivning av musiken i en fil. LilyPond är en del av\n" +"GNU-projektet.\n" + +#: main.cc:153 +msgid "This binary was compiled with the following options:" +msgstr "Detta program kompilerades med följande alternativ:" + +#: main.cc:56 main.cc:180 +#, c-format +msgid "" +"This is free software. It is covered by the GNU General Public License,\n" +"and you are welcome to change it and/or distribute copies of it under\n" +"certain conditions. Invoke as `%s --warranty' for more information.\n" +msgstr "" +"Det här är fri programvara. Den täcks av \"GNU General Public License\",\n" +"och du får ändra och/eller distribuera kopior av den under vissa\n" +"villkor. Kör \"%s --warranty\" för mer information.\n" + +#: main.cc:63 main.cc:187 main.cc:199 +#, c-format +msgid "Copyright (c) %s by" +msgstr "Copyright © %s av" + +#: main.cc:197 +msgid "GNU LilyPond -- The music typesetter" +msgstr "GNU Lilypond -- Musiktypsättaren" + +#: main.cc:72 main.cc:205 +msgid "" +" This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License version 2\n" +"as published by the Free Software Foundation.\n" +"\n" +" This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" +"General Public License for more details.\n" +"\n" +" You should have received a copy (refer to the file COPYING) of the\n" +"GNU General Public License along with this program; if not, write to\n" +"the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n" +"USA.\n" +msgstr "" +"Detta program är fri programvara. Du kan distribuera det och/eller\n" +"modifiera det under villkoren i GNU General Public License, publicerad\n" +"av Free Software Foundation, antingen version 2 eller (om du så vill)\n" +"någon senare version. \n" +"\n" +"Detta program distribueras i hopp om att det ska vara användbart, men\n" +"UTAN NÅGON SOM HELST GARANTI, även utan underförstådd garanti om\n" +"SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT ÄNDAMÅL. Se GNU General\n" +"Public License för ytterligare information.\n" +"\n" +"Du bör ha fått en kopia av GNU General Public License tillsammans med\n" +"detta program. Om inte, skriv till Free Software Foundation, Inc., 59\n" +"Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" + +#: midi-item.cc:139 +#, c-format +msgid "no such instrument: `%s'" +msgstr "instrumentet finns inte: \"%s\"" + +#: midi-item.cc:228 +msgid "silly duration" +msgstr "tokig längd" + +#: midi-item.cc:241 +msgid "silly pitch" +msgstr "tokig ton" + +#: music-output-def.cc:115 +#, c-format +msgid "can't find `%s' context" +msgstr "kan inte hitta omgivningen \"%s\"" + +#: music.cc:232 +msgid "ly_get_mus_property (): Not a Music" +msgstr "ly_get_mus_property (): Inte en \"Music\"" + +#: music.cc:246 +msgid "ly_set_mus_property (): Not a symbol" +msgstr "ly_set_mus_property (): inte en symbol" + +#: music.cc:258 +msgid "ly_set_mus_property (): not of type Music" +msgstr "ly_set_mus_property (): inte av typen \"Music\"" + +#: music.cc:272 +msgid "ly_make_music (): Not a string" +msgstr "ly_make_music (): Inte en sträng" + +#: music.cc:292 +msgid "ly_music_name (): Not a music expression" +msgstr "ly_music_name (): Inte ett musikuttryck" + +#: musical-request.cc:28 +#, c-format +msgid "Transposition by %s makes accidental larger than two" +msgstr "Transponering med %s gör höjning/sänkning större än två" + +#: my-lily-lexer.cc:139 +#, c-format +msgid "Identifier name is a keyword: `%s'" +msgstr "Identifierarnamn är ett nyckelord: \"%s\"" + +#: my-lily-lexer.cc:159 +#, c-format +msgid "error at EOF: %s" +msgstr "fel vid filslut: %s" + +#: midi-score-parser.cc:94 my-lily-parser.cc:47 +msgid "Parsing..." +msgstr "Tolkar..." + +#: my-lily-parser.cc:57 +msgid "Braces don't match" +msgstr "Krullparenteser matchar inte" + +#: output-property-music-iterator.cc:20 request-chord-iterator.cc:76 +#, c-format +msgid "Junking request: `%s'" +msgstr "Slänger förfrågan: \"%s\"" + +#: paper-def.cc:109 +#, c-format +msgid "paper output to `%s'..." +msgstr "pappersutdata till \"%s\"..." + +#: lilypond-stream.cc:93 paper-outputter.cc:85 performance.cc:99 +msgid ", at " +msgstr ", vid " + +#: paper-outputter.cc:232 +#, c-format +msgid "writing header field `%s' to `%s'..." +msgstr "skriver rubrikfält \"%s\" till \"%s\"..." + +#: paper-score.cc:80 +msgid "Preprocessing elements..." +msgstr "Förbehandlar element..." + +#: paper-score.cc:114 +msgid "Outputting Score, defined at: " +msgstr "Matar ut partitur, definierade vid: " + +#: paper-stream.cc:41 +#, c-format +msgid "can't create directory: `%s'" +msgstr "kan inte skapa katalog: \"%s\"" + +#: paper-stream.cc:55 +msgid "Error syncing file (disk full?)" +msgstr "Fel vid synkning av fil (disken full?)" + +#. +#. We could change the current translator's id, but that would make +#. errors hard to catch +#. +#. last->translator_id_str_ = change_l ()->change_to_id_str_; +#. +#: part-combine-music-iterator.cc:116 +#, c-format +msgid "I'm one myself: `%s'" +msgstr "Jag är en själv: \"%s\"" + +#: part-combine-music-iterator.cc:119 +#, c-format +msgid "none of these in my family: `%s'" +msgstr "ingen av dessa i min familj: \"%s\"" + +#: percent-repeat-engraver.cc:117 +msgid "Don't know how to handle a percent repeat of this length." +msgstr "Vet inte hur en procentupprepning av denna längd ska hanteras." + +#: percent-repeat-iterator.cc:53 +msgid "no one to print a percent" +msgstr "det finns ingen som kan skriva procent" + +#: performance.cc:51 +msgid "Track ... " +msgstr "Spår... " + +#: performance.cc:83 +msgid "Creator: " +msgstr "Skapare: " + +#: performance.cc:113 +#, c-format +msgid "from musical definition: %s" +msgstr "från musikdefinition: %s" + +#: performance.cc:168 +#, c-format +msgid "MIDI output to `%s'..." +msgstr "MIDI-utdata till \"%s\"..." + +#: phrasing-slur-engraver.cc:119 +msgid "unterminated phrasing slur" +msgstr "oavslutad fraseringsbåge" + +#: phrasing-slur-engraver.cc:134 +msgid "can't find start of phrasing slur" +msgstr "kan inte hitta start på fraseringsbåge" + +#: piano-pedal-engraver.cc:142 piano-pedal-engraver.cc:154 +#: piano-pedal-performer.cc:87 +#, c-format +msgid "can't find start of piano pedal: `%s'" +msgstr "kan inte hitta start på pianopedal: \"%s\"" + +#: pitch.cc:25 +msgid "Pitch arguments out of range" +msgstr "Tonargument utanför intervallet" + +#: property-engraver.cc:121 +#, c-format +msgid "" +"`%s' is deprecated. Use\n" +" \\property %s.%s \\override #'%s = #%s" +msgstr "" +"\"%s\" är föråldrat. Använd\n" +" \\property %s.%s \\override #'%s = #%s" + +#: property-engraver.cc:145 +#, c-format +msgid "Wrong type for property: %s, type: %s, value found: %s, type: %s" +msgstr "Fel typ för egenskap: %s, typ: %s, värde funnet: %s, typ: %s" + +#: rest-collision.cc:194 +msgid "too many colliding rests" +msgstr "för många krockande pauser" + +#: rest-collision.cc:198 +msgid "too many notes for rest collision" +msgstr "för många toner för pauskrock" + +#: scm-option.cc:63 +msgid "Scheme options:" +msgstr "Scheme-alternativ:" + +#: score-engraver.cc:188 +#, c-format +msgid "unbound spanner `%s'" +msgstr "obunden bryggare \"%s\"" + +#: score.cc:78 +msgid "Interpreting music..." +msgstr "Tolkar musik..." + +#: score.cc:92 +msgid "Need music in a score" +msgstr "Behöver musik i partitur" + +#. should we? hampers debugging. +#: score.cc:105 +msgid "Errors found/*, not processing score*/" +msgstr "Fel funna/*, behandlar inte partitur*/" + +#: score.cc:112 +#, c-format +msgid "elapsed time: %.2f seconds" +msgstr "tidsåtgång: %.2f sekunder" + +#: scores.cc:106 +msgid "Score contains errors; will not process it" +msgstr "Partitur innehåller fel; kommer inte behandla det" + +#: scores.cc:152 +#, c-format +msgid "Now processing: `%s'" +msgstr "Behandlar nu: \"%s\"" + +#: script-engraver.cc:66 +#, c-format +msgid "Don't know how to interpret articulation `%s'" +msgstr "Kan inte tolka artikulering \"%s\"" + +#. this shouldn't happen, but let's continue anyway. +#: separation-item.cc:47 +msgid "Separation_item: I've been drinking too much" +msgstr "Separation_item: Jag har druckit för mycket" + +#: slur-engraver.cc:127 +msgid "unterminated slur" +msgstr "oavslutat båge" + +#. How to shut up this warning, when Voice_devnull_engraver has +#. eaten start request? +#: slur-engraver.cc:144 +msgid "can't find start of slur" +msgstr "kan inte hitta start på båge" + +#: slur.cc:48 +msgid "Putting slur over rest. Ignoring." +msgstr "Sätter båge över paus. Ignorerar." + +#: slur.cc:383 +msgid "Slur over rest?" +msgstr "Båge över paus?" + +#: stem-engraver.cc:115 +#, c-format +msgid "Adding note head to incompatible stem (type = %d)" +msgstr "Lägger till nothuvud till inkompatibel båge (typ = %d)" + +#: stem.cc:116 +msgid "Weird stem size; check for narrow beams" +msgstr "Konstig skaftstorlek; kolla efter smala balkar" + +#: text-spanner-engraver.cc:94 +msgid "can't find start of text spanner" +msgstr "kan inte hitta start på textbryggare" + +#: text-spanner-engraver.cc:114 +msgid "already have a text spanner" +msgstr "har redan en textbryggare" + +#: text-spanner-engraver.cc:169 +msgid "unterminated text spanner" +msgstr "oavslutad textbryggare" + +#: text-spanner.cc:121 +msgid "Text_spanner too small" +msgstr "Textbryggare för liten" + +#: tfm-reader.cc:106 +#, c-format +msgid "TFM header of `%s' has only %u word (s)" +msgstr "TFM-rubrik i \"%s\" har bara %u ord" + +#: tfm-reader.cc:140 +#, c-format +msgid "%s: TFM file has %u parameters, which is more than the %u I can handle" +msgstr "%s: TFM-fil har %u parametrar, vilket är mer än de %u jag kan hantera" + +#: tfm.cc:77 +#, c-format +msgid "can't find ascii character: %d" +msgstr "kan inte hitta ASCII-tecken: %d" + +#. How to shut up this warning, when no notes appeared because +#. they were suicided by Thread_devnull_engraver? +#: tie-engraver.cc:220 tie-performer.cc:173 +msgid "No ties were created!" +msgstr "Inga bågar skapades!" + +#: tie-engraver.cc:240 +msgid "lonely tie" +msgstr "ensam båge" + +#: time-scaled-music-iterator.cc:25 +msgid "no one to print a tuplet start bracket" +msgstr "det finns ingen som kan skriva en starthake för tupel" + +#: timing-translator.cc:38 +#, c-format +msgid "barcheck failed at: %s" +msgstr "taktkontroll misslyckades vid: %s" + +#: translator-ctors.cc:40 +#, c-format +msgid "unknown translator: `%s'" +msgstr "okänd översättare: \"%s\"" + +#: translator-def.cc:99 +msgid "Program has no such type" +msgstr "Programmet har ingen sådan typ" + +#: translator-def.cc:105 +#, c-format +msgid "Already contains: `%s'" +msgstr "Innehåller redan: \"%s\"" + +#: translator-def.cc:106 +#, c-format +msgid "Not adding translator: `%s'" +msgstr "Lägger inte till översättare: \"%s\"" + +#: translator-def.cc:224 +#, c-format +msgid "can't find: `%s'" +msgstr "kan inte hitta: \"%s\"" + +#: translator-group.cc:146 +#, c-format +msgid "can't find or create `%s' called `%s'" +msgstr "kan inte hitta eller skapa \"%s\" kallad \"%s\"" + +#: translator-group.cc:231 +#, c-format +msgid "can't find or create: `%s'" +msgstr "kan inte hitta eller skapa: \"%s\"" + +#: translator-group.cc:414 +#, c-format +msgid "Can't find property type-check for `%s'. Perhaps you made a typing error? Doing assignment anyway." +msgstr "Kan inte hitta egenskapstypkontroll för \"%s\". Kanske har du gjort ett typfel? Gör tilldelning i alla fall." + +#: translator-group.cc:428 +#, c-format +msgid "Type check for `%s' failed; value `%s' must be of type `%s'" +msgstr "Typkontroll för \"%s\" misslyckades. Värde \"%s\" måste ha typen \"%s\"" + +#. programming_error? +#: translator-group.cc:447 +msgid "ly-get-trans-property: expecting a Translator_group argument" +msgstr "ly-get-trans-property: väntade ett Translator_group-argument" + +#: volta-engraver.cc:87 +msgid "No volta spanner to end" +msgstr "Ingen reprisbryggare till slutet" + +#: volta-engraver.cc:104 +msgid "Already have a volta spanner. Stopping that one prematurely." +msgstr "Har redan en reprisbryggare. Stoppar den tidigare." + +#: volta-engraver.cc:108 +msgid "Also have a stopped spanner. Giving up." +msgstr "Har också en stoppad bryggare. Ger upp." + +#: parser.yy:121 +#, c-format +msgid "Expecting %d arguments" +msgstr "Väntade %d argument" + +#: parser.yy:423 +msgid "Identifier should have alphabetic characters only" +msgstr "Identifierare får bara innehålla alfabetiska tecken" + +#: parser.yy:697 +msgid "More alternatives than repeats. Junking excess alternatives." +msgstr "Fler alternativ än repriser. Slänger överblivna alternativ." + +#: parser.yy:761 +msgid "Second argument must be a symbol" +msgstr "Andra argumentet måste vara en symbol" + +#: parser.yy:766 +msgid "First argument must be a procedure taking 1 argument" +msgstr "Första argumentet måste vara en procedur som tar 1 argument" + +#: parser.yy:1263 +msgid "Expecting string as script definition" +msgstr "Väntade sträng som skriptdefinition" + +#: parser.yy:1273 +msgid "Can't specify direction for this request" +msgstr "Kan inte ange riktning för denna förfrågan" + +#: parser.yy:1398 +msgid "Expecting musical-pitch value" +msgstr "Väntade notvärde" + +#: parser.yy:1409 +msgid "Must have duration object" +msgstr "Måste ha längdobjekt" + +#: parser.yy:1418 parser.yy:1426 +msgid "Have to be in Lyric mode for lyrics" +msgstr "Måste vara i textläge (Lyric mode) för text" + +#: parser.yy:1579 parser.yy:1636 +#, c-format +msgid "not a duration: %d" +msgstr "inte en längd: %d" + +#: parser.yy:1645 +msgid "Have to be in Note mode for notes" +msgstr "Måste vara i notläge (Note mode) för noter" + +#: parser.yy:1731 +msgid "Have to be in Chord mode for chords" +msgstr "Måste vara i ackordläge (Chord mode) för ackord" + +#: parser.yy:1911 +msgid "need integer number arg" +msgstr "behöver heltalsargument" + +#: lexer.ll:174 +msgid "EOF found inside a comment" +msgstr "filslut hittat inuti en kommentar" + +#: lexer.ll:188 +msgid "\\maininput disallowed outside init files" +msgstr "\\maininput förbjudet utanför init-filer" + +#: lexer.ll:212 +#, c-format +msgid "wrong or undefined identifier: `%s'" +msgstr "felaktig eller odefinierad identifierare: \"%s\"" + +#. backup rule +#: lexer.ll:221 +msgid "Missing end quote" +msgstr "Saknat slutcitationstecken" + +#. backup rule +#: lexer.ll:243 lexer.ll:247 +msgid "white expected" +msgstr "väntade tomrum" + +#: lexer.ll:256 +msgid "Can't evaluate Scheme in safe mode" +msgstr "Kan inte evaluera Scheme i säkert läge" + +#: lexer.ll:349 +msgid "Brace found at end of lyric. Did you forget a space?" +msgstr "Krullparentes funnen i slutet på text. Glömde du ett mellanslag?" + +#: lexer.ll:457 +#, c-format +msgid "invalid character: `%c'" +msgstr "ogiltigt tecken: \"%c\"" + +#: lexer.ll:538 +#, c-format +msgid "unknown escaped string: `\\%s'" +msgstr "okänd \"escaped\" sträng: \"\\%s\"" + +#: lexer.ll:617 +#, c-format +msgid "Oldest supported input version: %s" +msgstr "Äldsta indataversion som stöds: %s" + +#: lexer.ll:629 +#, c-format +msgid "incorrect lilypond version: %s (%s, %s)" +msgstr "felaktig lilypond-version: %s (%s, %s)" + +#: lexer.ll:630 +msgid "Consider converting the input with the convert-ly script" +msgstr "Fundera på att konvertera indata med skriptet \"convert-ly\"" + +#: lilypond-item.cc:161 +#, c-format +msgid "#32 in quarter: %d" +msgstr "#32 i fjärdedel: %d" + +#: lilypond-score.cc:108 +#, c-format +msgid "LY output to `%s'..." +msgstr "LY-utdata till \"%s\"..." + +#: lilypond-score.cc:119 +#, c-format +msgid "track %d:" +msgstr "spår %d:" + +#: lilypond-score.cc:155 +msgid "Processing..." +msgstr "Behandlar..." + +#: lilypond-score.cc:164 +msgid "Creating voices..." +msgstr "Skapar stämmor..." + +#: lilypond-score.cc:168 +msgid "track " +msgstr "spår " + +#: lilypond-score.cc:177 +msgid "NOT Filtering tempo..." +msgstr "Filtrerar INTE tempo..." + +#: lilypond-score.cc:186 +msgid "NOT Quantifying columns..." +msgstr "Kvantifierar INTE kolumner..." + +#: lilypond-score.cc:190 +msgid "Quantifying columns..." +msgstr "Kvantifierar kolumner..." + +#: lilypond-score.cc:223 +msgid "Settling columns..." +msgstr "Bestämmer kolumner..." + +#: lilypond-staff.cc:209 +msgid "% MIDI copyright:" +msgstr "% MIDI-copyright:" + +#: lilypond-staff.cc:210 +msgid "% MIDI instrument:" +msgstr "% MIDI-instrument:" + +#: lilypond-stream.cc:37 +#, c-format +msgid "lily indent level: %d" +msgstr "indenteringsnivå för lily: %d" + +# Kanske man inte ska översätta, men då får de ta bort _() i stället för +# att skriva en fånig kommentar +#. Maybe better not to translate these? +#: lilypond-stream.cc:83 +msgid "% Creator: " +msgstr "% Skapare: " + +#: lilypond-stream.cc:88 +msgid "% Automatically generated" +msgstr "% Automatgenererad" + +#: lilypond-stream.cc:97 +#, c-format +msgid "% from input file: " +msgstr "% från indatafil: " + +#: main.cc:94 +msgid "write exact durations, e.g.: a4*385/384" +msgstr "skriv exakta länger, t.ex: a4*385/384" + +#: main.cc:95 +msgid "enable debugging output" +msgstr "slå på felsökningsutdata" + +#: main.cc:97 +msgid "ACC[:MINOR]" +msgstr "TON[:MOLL]" + +#: main.cc:97 +msgid "set key: ACC +sharps/-flats; :1 minor" +msgstr "sätt tonart: TON +höjningar/-sänkningar; :1 moll" + +#: main.cc:98 +msgid "don't output tuplets, double dots or rests, smallest is 32" +msgstr "mata inte ut tupler, dubbelpunkteringar eller pauser, minsta är 32" + +#: main.cc:99 +msgid "set FILE as default output" +msgstr "sätt FIL som standardutdata" + +#: main.cc:100 +msgid "don't output tuplets" +msgstr "mata inte ut tupler" + +#: main.cc:101 +msgid "be quiet" +msgstr "var tyst" + +#: main.cc:102 +msgid "don't output rests or skips" +msgstr "mata inte ut pauser eller hopp" + +#: main.cc:103 +msgid "DUR" +msgstr "LÄNGD" + +#: main.cc:103 +msgid "set smallest duration" +msgstr "ställ in minsta längd" + +#: main.cc:104 +msgid "don't timestamp the output" +msgstr "tidsstämpla inte utdata" + +#: main.cc:106 +msgid "be verbose" +msgstr "var utförlig" + +#: main.cc:108 +msgid "assume no double dotted notes" +msgstr "anta inga dubbelpunkterade noter" + +#: main.cc:115 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]" +msgstr "Användning: %s [FLAGGA]... [FIL]" + +#: main.cc:117 +msgid "Translate MIDI-file to lilypond" +msgstr "Översätt MIDI-fil till lilypond" + +#: main.cc:131 +#, c-format +msgid "no_double_dots: %d\n" +msgstr "no_double_dots: %d\n" + +#: main.cc:133 +#, c-format +msgid "no_rests: %d\n" +msgstr "no_rests: %d\n" + +#: main.cc:135 +#, c-format +msgid "no_quantify_b_s: %d\n" +msgstr "no_quantify_b_s: %d\n" + +#: main.cc:137 +#, c-format +msgid "no_smaller_than: %d (1/%d)\n" +msgstr "no_smaller_than: %d (1/%d)\n" + +#: main.cc:140 +#, c-format +msgid "no_tuplets: %d\n" +msgstr "no_tuplets: %d\n" + +#: midi-parser.cc:64 +msgid "zero length string encountered" +msgstr "sträng med längd noll påträffad" + +#: midi-score-parser.cc:44 +msgid "MIDI header expected" +msgstr "väntade MIDI-rubrik" + +#: midi-score-parser.cc:49 +msgid "invalid header length" +msgstr "felaktig rubriklängd" + +#: midi-score-parser.cc:52 +msgid "invalid MIDI format" +msgstr "ogiltigt MIDI-format" + +#: midi-score-parser.cc:55 +msgid "invalid number of tracks" +msgstr "ogiltigt antal spår" + +#: midi-score-parser.cc:58 +msgid "can't handle non-metrical time" +msgstr "kan inte hantera icke-metrisk tid" + +#: midi-track-parser.cc:68 +#, c-format +msgid "Junking note-end event: channel = %d, pitch = %d" +msgstr "Slänger notslutshändelse: kanal = %d, ton = %d" + +#: midi-track-parser.cc:124 +msgid "invalid running status" +msgstr "ogiltig körstatus" + +#: midi-track-parser.cc:328 +msgid "unimplemented MIDI meta-event" +msgstr "oimplementerad MIDI-metahändelse" + +#: midi-track-parser.cc:333 +msgid "invalid MIDI event" +msgstr "ogiltig MIDI-händelse" + +#: midi-track-parser.cc:348 +msgid "MIDI track expected" +msgstr "väntade MIDI-spår" + +#: midi-track-parser.cc:353 +msgid "invalid track length" +msgstr "ogiltig spårlängd" diff --git a/scm/basic-properties.scm b/scm/basic-properties.scm index e76878cf5f..38f5b974bf 100644 --- a/scm/basic-properties.scm +++ b/scm/basic-properties.scm @@ -26,6 +26,7 @@ (let ((result (assoc glyph '((":|:" . (":|" . "|:")) ("|" . ("|" . "")) + ("||:" . ("||" . "|:")) ("|s" . (nil . "|")) ("|:" . ("|" . "|:")) ("|." . ("|." . nil)) diff --git a/scm/beam.scm b/scm/beam.scm index f7afad28fc..b0feb6008f 100644 --- a/scm/beam.scm +++ b/scm/beam.scm @@ -95,6 +95,8 @@ (define (beam-dir-majority count total) (dir-compare (car count) (cdr count))) +(beam-dir-majority '(0 . 0) '(0 . 0)) + (define (beam-dir-mean count total) (dir-compare (car total) (cdr total))) diff --git a/scm/grob-description.scm b/scm/grob-description.scm index 9090ee659c..059f564213 100644 --- a/scm/grob-description.scm +++ b/scm/grob-description.scm @@ -304,7 +304,9 @@ (self-alignment-X . 0) (non-rhythmic . #t) (word-space . 0.6) - (end-alignment . 5) + (ignore-length-mismatch . #f) + (begin-alignment . 4) + (end-alignment . 2) (font-family . roman) (font-shape . upright) (meta . ,(grob-description "LyricText" lyric-syllable-interface text-interface font-interface )) diff --git a/scm/grob-property-description.scm b/scm/grob-property-description.scm index 63526597ce..b03c1cd9b1 100644 --- a/scm/grob-property-description.scm +++ b/scm/grob-property-description.scm @@ -360,7 +360,10 @@ function of type (beam multiplicity dy staff-line-thickness) -> real. Default v (grob-property-description 'visibility-lambda procedure? "a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY).") (grob-property-description 'when moment? "when does this column happen?.") (grob-property-description 'word-space number? "elongate left by this much (FIXME: cumbersome semantics).") -(grob-property-description 'end-alignment number? "proportion of lyric length to align with note-head for non-centered lyrics.") +(grob-property-description 'alignment number? "alignment of lyrics on notehead, -1 is LEFT, 0 is CENTRE, 1 is RIGHT .") +(grob-property-description 'ignore-length-mismatch boolean? "if #t, stanzas with shorter lyrics can be moved away from their respective note-head by the lyric alignment code.") +(grob-property-description 'begin-alignment number? "proportion of lyric length from beginning to align with note-head for left-aligned lyrics.") +(grob-property-description 'end-alignment number? "proportion of lyric length from end to align with note-head for right-aligned lyrics.") (grob-property-description 'x-gap number? "horizontal gap between notehead and tie.") (grob-property-description 'y-free number? "minimal vertical gap between slur and noteheads or stems.") (grob-property-description 'y-offset number? "extra vertical offset for ties away from the center line.") diff --git a/scm/interface-description.scm b/scm/interface-description.scm index 7f64966647..d8d7101247 100644 --- a/scm/interface-description.scm +++ b/scm/interface-description.scm @@ -533,6 +533,9 @@ that helps show the length of a melissima (tied/slurred note)." "a single piece of lyrics" '( word-space + alignment + ignore-length-mismatch + begin-alignment end-alignment )) diff --git a/scm/lily.scm b/scm/lily.scm index b8f28858fe..f9f7a17bae 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -60,7 +60,7 @@ (define (sign x) (if (= x 0) - 1 + 0 (if (< x 0) -1 1))) (define (write-me n x) diff --git a/scm/translator-description.scm b/scm/translator-description.scm index b56382bfe9..24441828ef 100644 --- a/scm/translator-description.scm +++ b/scm/translator-description.scm @@ -449,6 +449,13 @@ to any Graphic objects that satisfies the predicate." '(SostenutoPedal SustainPedal UnaCordaPedal) '(pedalSostenutoStrings pedalSustainStrings pedalUnaCordaStrings ))) + (cons + 'Percent_repeat_engraver + (engraver-description + "Percent_repeat_engraver" + "Engrave percent repeats." + '(PercentRepeat DoublePercentRepeat RepeatSlash) + '( ))) (cons 'Pitch_squash_engraver diff --git a/scripts/abc2ly.py b/scripts/abc2ly.py index b4295e933f..af8cbf877c 100644 --- a/scripts/abc2ly.py +++ b/scripts/abc2ly.py @@ -32,7 +32,8 @@ # the default placement for text in abc is above the staff. # %%LY now supported. # \breve and \longa supported. - +# M:none doesn't crash lily. + # Limitations # # Multiple tunes in single file not supported @@ -67,6 +68,7 @@ import os UNDEF = 255 state = UNDEF +strict = 0 voice_idx_dict = {} header = {} header['footnotes'] = '' @@ -88,6 +90,13 @@ DIGITS='0123456789' alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ" HSPACE=' \t' midi_specs = '' + + +def error (msg): + sys.stderr.write (msg) + if strict: + sys.exit (1) + def check_clef(s): if not s: @@ -155,6 +164,7 @@ def dump_header (outf,hdr): ks = hdr.keys () ks.sort () for k in ks: + hdr[k] = re.sub('"', '\\"', hdr[k]) outf.write ('\t%s = "%s"\n'% (k,hdr[k])) outf.write ('}') @@ -217,7 +227,7 @@ def try_parse_q(a): array2=string.split(array[1],'=') denominator=array2[0] perminute=array2[1] - duration=str(string.atof(denominator)/string.atoi(numerator)) + duration=str(string.atoi(denominator)/string.atoi(numerator)) midi_specs=string.join(["\\tempo", duration, "=", perminute]) else: sys.stderr.write("abc2ly: Warning, unable to parse Q specification: %s\n" % a) @@ -457,6 +467,7 @@ def compute_key (k): key_count = flat_key_seq.index (keytup) accseq = map (lambda x: (3*x + 3 ) % 7, range (1, key_count + 1)) else: + error ("Huh?") raise "Huh" key_table = [0] * 7 @@ -480,8 +491,10 @@ def try_parse_tuplet_begin (str, state): if re.match ('\([2-9]', str): dig = str[1] str = str[2:] - state.parsing_tuplet = string.atoi (dig[0]) - + prev_tuplet_state = state.parsing_tuplet + state.parsing_tuplet = string.atoi (dig[0]) + if prev_tuplet_state: + voices_append ("}") voices_append ("\\times %s {" % tup_lookup[dig]) return str @@ -576,7 +589,10 @@ def try_parse_header_line (ln, state): a = re.sub('[ \t]*$','', a) #strip trailing blanks if header.has_key('title'): if a: - header['title'] = header['title'] + '\\\\\\\\' + a + if len(header['title']): + header['title'] = header['title'] + '\\\\\\\\' + a + else: + header['subtitle'] = a else: header['title'] = a if g == 'M': # Meter @@ -594,7 +610,8 @@ def try_parse_header_line (ln, state): set_default_len_from_time_sig (a) else: length_specified = 0 - voices_append ('\\time %s' % a) + if not a == 'none': + voices_append ('\\time %s' % a) state.next_bar = '' if g == 'K': # KEY a = check_clef(a) @@ -703,6 +720,9 @@ def duration_to_lilypond_duration (multiply_tup, defaultlen, dots): if base == 1: if (multiply_tup[0] / multiply_tup[1]) == 2: base = '\\breve' + if (multiply_tup[0] / multiply_tup[1]) == 3: + base = '\\breve' + dots = 1 if (multiply_tup[0] / multiply_tup[1]) == 4: base = '\longa' return '%s%s' % ( base, '.'* dots) @@ -1226,8 +1246,7 @@ def parse_file (fn): ln = junk_space (ln) if ln: - msg = "%s: %d: Huh? Don't understand\n" % (fn, lineno) - sys.stderr.write (msg) + error ("%s: %d: Huh? Don't understand\n" % (fn, lineno)) left = orig_ln[0:-len (ln)] sys.stderr.write (left + '\n') sys.stderr.write (' ' * len (left) + ln + '\n') @@ -1246,9 +1265,16 @@ Options: -h, --help this help -o, --output=FILE set output filename to FILE -v, --version version information - + -s, --strict be strict about succes. + This program converts ABC music files (see http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt) To LilyPond input. + + +Report bugs to bug-gnu-music@gnu.org + +Written by Han-Wen Nienhuys , Laura Conrad +, Roy Rankin """ def print_version (): @@ -1256,7 +1282,7 @@ def print_version (): -(options, files) = getopt.getopt (sys.argv[1:], 'vo:h', ['help','version', 'output=']) +(options, files) = getopt.getopt (sys.argv[1:], 'vo:hs', ['help','version', 'output=', 'strict']) out_filename = '' for opt in options: @@ -1265,11 +1291,12 @@ for opt in options: if o== '--help' or o == '-h': help () sys.exit (0) - if o == '--version' or o == '-v': + elif o == '--version' or o == '-v': print_version () sys.exit(0) - - if o == '--output' or o == '-o': + elif o == '--strict' or o == '-s': + strict = 1 + elif o == '--output' or o == '-o': out_filename = a else: print o diff --git a/scripts/as2text.scm b/scripts/as2text.scm index d9a41a0834..6fa3d6ae4b 100644 --- a/scripts/as2text.scm +++ b/scripts/as2text.scm @@ -162,12 +162,14 @@ Options: ;;; Helper functions + + (define (af-gulp-file name) ;; urg (let ((old-load-path %load-path)) (set! %load-path (cons (string-append - (or (getenv 'LILYPONDPREFIX) ".") "/mf") + (or (getenv "LILYPONDPREFIX") ".") "/mf") (cons (string-append lily-home "/mf") %load-path))) (let* ((path (%search-load-path name)) (text (if path diff --git a/scripts/etf2ly.py b/scripts/etf2ly.py index 731b061d2a..36976017a4 100644 --- a/scripts/etf2ly.py +++ b/scripts/etf2ly.py @@ -1,7 +1,7 @@ #!@PYTHON@ # info mostly taken from looking at files. See also -# http://www.cs.uu.nl/~hanwen/lily-devel/etf.html +# http://lilypond.org/wiki/?EnigmaTransportFormat # This supports # @@ -13,7 +13,7 @@ # * articulation # * grace notes # * tuplets - +# # todo: # * slur/stem directions @@ -22,7 +22,7 @@ # * beams (better use autobeam?) # * more robust: try entertainer.etf (freenote) # * dynamics -# * automatic `deletion' of invalid items +# * empty measures (eg. twopt03.etf from freenote) # @@ -174,16 +174,7 @@ def lily_notename (tuple2): (n, a) = tuple2 nn = chr ((n+ 2)%7 + ord ('a')) - if a == -1: - nn = nn + 'es' - elif a == -2: - nn = nn + 'eses' - elif a == 1: - nn = nn + 'is' - elif a == 2: - nn = nn + 'isis' - - return nn + return nn + {-2:'eses', -1:'es', 0:'', 1:'is', 2:'isis'}[a] class Tuplet: @@ -225,16 +216,16 @@ class Tuplet: sys.stderr.write ("\nHuh? Tuplet starting at entry %d was too short." % self.start_note) class Slur: - def __init__ (self, number): + def __init__ (self, number, params): self.number = number - self.finale = [] + self.finale = params def append_entry (self, finale_e): self.finale.append (finale_e) def calculate (self, chords): - startnote = self.finale[0][5] - endnote = self.finale[3][2] + startnote = self.finale[5] + endnote = self.finale[3*6 + 2] try: cs = chords[startnote] ce = chords[endnote] @@ -254,7 +245,9 @@ class Global_measure: self.number = number self.keysignature = None self.scale = None - + self.force_break = 0 + + self.repeats = [] self.finale = [] def __str__ (self): @@ -263,7 +256,8 @@ class Global_measure: def set_timesig (self, finale): (beats, fdur) = finale (log, dots) = EDU_to_duration (fdur) - assert dots == 0 + if dots <> 0: + sys.stderr.write ("\nHuh? Beat duration has a dot? (EDU Duration = %d)" % fdur) self.timesig = (beats, log) def length (self): @@ -274,32 +268,60 @@ class Global_measure: self.keysignature = k self.scale = find_scale (k) + def set_flags (self,flag1, flag2): + + # flag1 isn't all that interesting. + if flag2 & 0x8000: + self.force_break = 1 + + if flag2 & 0x0008: + self.repeats.append ('start') + if flag2 & 0x0004: + self.repeats.append ('stop') + + if flag2 & 0x0002: + if flag2 & 0x0004: + self.repeats.append ('bracket') articulation_dict ={ - 11: '\\prall', - 12: '\\mordent', - 8: '\\fermata', - 4: '^', - 1: '.', - 3: '>', - 18: '"arp"' , # arpeggio + 94: '^', + 109: '\\prall', + 84: '\\turn', + 62: '\\mordent', + 85: '\\fermata', + 46: '.', +# 3: '>', +# 18: '\arpeggio' , } +class Articulation_def: + def __init__ (self, n, a, b): + self.finale_glyph = a & 0xff + self.number = n + + def dump (self): + try: + return articulation_dict[self.finale_glyph] + except KeyError: + sys.stderr.write ("\nUnknown articulation no. %d" % self.finale_glyph) + sys.stderr.write ("\nPlease add an entry to articulation_dict in the Python source") + return None + class Articulation: def __init__ (self, a,b, finale): - self.type = finale[0] + self.definition = finale[0] self.notenumber = b - def calculate (self, chords): + + def calculate (self, chords, defs): c = chords[self.notenumber] - try: - a = articulation_dict[self.type] - except KeyError: - sys.stderr.write ("\nUnknown articulation no. %d on note no. %d" % (self.type, self.notenumber)) - sys.stderr.write ("\nPlease add an entry to articulation_dict in the Python source") - a = '"art"' - - c.note_suffix = '-' + a + c.note_suffix + adef = defs[self.definition] + lystr =adef.dump() + if lystr == None: + lystr = '"art"' + sys.stderr.write ("\nThis happened on note %d" % self.notenumber) + + c.note_suffix = '-' + lystr class Syllable: def __init__ (self, a,b , finale): @@ -355,8 +377,6 @@ class Measure: self.staff = None self.valid = 1 - def add_finale_entry (self, entry): - self.finale.append (entry) def valid (self): return self.valid @@ -365,13 +385,11 @@ class Measure: if len (self.finale) < 2: fs = self.finale[0] - fs = map (string.atoi, list (fs)) + self.clef = fs[1] self.frames = [fs[0]] else: - fs = self.finale[0] + self.finale[1] - - fs = map (string.atoi, list (fs)) + fs = self.finale self.clef = fs[0] self.flags = fs[1] self.frames = fs[2:] @@ -438,15 +456,13 @@ class Staff: self.measures = [] def get_measure (self, no): - if len (self.measures) <= no: - self.measures = self.measures + [None]* (1 + no - len (self.measures)) + fill_list_to (self.measures, no) if self.measures[no] == None: m = Measure (no) self.measures [no] =m m.staff = self - return self.measures[no] def staffid (self): return 'staff' + encodeint (self.number - 1) @@ -465,13 +481,35 @@ class Staff: g = m.global_measure e = '' - if g and last_key <> g.keysignature: - e = e + "\\key %s \\major " % lily_notename (g.keysignature) - last_key = g.keysignature - if g and last_time <> g.timesig : - e = e + "\\time %d/%d " % g.timesig - last_time = g.timesig + + if g: + if last_key <> g.keysignature: + e = e + "\\key %s \\major " % lily_notename (g.keysignature) + last_key = g.keysignature + if last_time <> g.timesig : + e = e + "\\time %d/%d " % g.timesig + last_time = g.timesig + + if 'start' in g.repeats: + e = e + ' \\bar "|:" ' + + # we don't attempt voltas since they fail easily. + if 0 : # and g.repeat_bar == '|:' or g.repeat_bar == ':|:' or g.bracket: + strs = [] + if g.repeat_bar == '|:' or g.repeat_bar == ':|:' or g.bracket == 'end': + strs.append ('#f') + + + if g.bracket == 'start': + strs.append ('"0."') + + str = string.join (map (lambda x: '(volta %s)' % x, strs)) + + e = e + ' \\property Score.repeatCommands = #\'(%s) ' % str + + if g.force_break: + e = e + ' \\break ' if last_clef <> m.clef : e = e + '\\clef "%s"' % lily_clef (m.clef) @@ -484,7 +522,8 @@ class Staff: if g: gap = rat_add (gap, g.length ()) - + if 'stop' in g.repeats: + k = k + ' \\bar ":|" ' k = '%sglobal = \\notes { %s }\n\n ' % (self.staffid (), k) return k @@ -501,17 +540,15 @@ class Staff: gap = (0,1) for m in self.measures[1:]: if not m or not m.valid: - sys.stderr.write ("Skipping non-existant measure") + sys.stderr.write ("Skipping non-existant or invalid measure\n") continue fr = None try: fr = m.frames[x] except IndexError: - - sys.stderr.write ("Skipping nonexistent frame") - laystr = laystr + "% FOOBAR ! \n" - print laystr + sys.stderr.write ("Skipping nonexistent frame %d\n" % x) + laystr = laystr + "%% non existent frame %d (skipped) \n" % x if fr: first_frame = fr if gap <> (0,1): @@ -543,15 +580,24 @@ class Staff: +def ziplist (l): + if len (l) < 2: + return [] + else: + return [(l[0], l[1])] + ziplist (l[2:]) + class Chord: - def __init__ (self, finale_entry): + def __init__ (self, number, contents): self.pitches = [] self.frame = None - self.finale = finale_entry + self.finale = contents[:7] + + self.notelist = ziplist (contents[7:]) self.duration = None self.next = None self.prev = None + self.number = number self.note_prefix= '' self.note_suffix = '' self.chord_suffix = '' @@ -579,37 +625,37 @@ class Chord: mylen = rat_multiply (mylen, self.tuplet.factor()) return mylen - def number (self): - return self.finale[0][0] def EDU_duration (self): - return self.finale[0][3] + return self.finale[2] def set_duration (self): self.duration = EDU_to_duration(self.EDU_duration ()) + def calculate (self): self.find_realpitch () self.set_duration () - flag = self.finale[0][5] + flag = self.finale[4] if Chord.GRACE_MASK & flag: self.grace = 1 - + def find_realpitch (self): - - ((no, prev, next, dur, pos, entryflag, extended, follow), notelist) = self.finale meas = self.measure () tiestart = 0 if not meas or not meas.global_measure : - print 'note %d not in measure' % self.number () + sys.stderr.write ('note %d not in measure\n' % self.number) elif not meas.global_measure.scale: - print 'note %d: no scale in this measure.' % self.number () + sys.stderr.write ('note %d: no scale in this measure.' % self.number) else: - for p in notelist: + + for p in self.notelist: (pitch, flag) = p - + + nib1 = pitch & 0x0f + if nib1 > 8: nib1 = -(nib1 - 8) rest = pitch / 16 @@ -632,7 +678,8 @@ class Chord: rest = '' - if not (self.finale[0][5] & Chord.REST_MASK): + + if not (self.finale[4] & Chord.REST_MASK): rest = 'r' for p in self.pitches: @@ -664,40 +711,141 @@ class Chord: s = self.chord_prefix + s + self.chord_suffix return s -GFre = re.compile(r"""^\^GF\(([0-9-]+),([0-9-]+)\) ([0-9-]+) ([0-9-]+) ([0-9-]+) ([0-9-]+) ([0-9-]+)""") -BCre = re.compile (r"""^\^BC\(([0-9-]+)\) ([0-9-]+) .*$""") -eEre = re.compile(r"""^\^eE\(([0-9-]+)\) ([0-9-]+) ([0-9-]+) ([0-9-]+) ([0-9-]+) \$([0-9A-Fa-f]+) ([0-9-]+) ([0-9-]+)""") -FRre = re.compile (r"""^\^FR\(([0-9-]+)\) ([0-9-]+) ([0-9-]+) ([0-9-]+) ([0-9-]+)""") -MSre = re.compile (r"""^\^MS\(([0-9-]+)\) ([0-9-]+) ([0-9-]+) ([0-9-]+) ([0-9-]+) ([0-9-]+)""") -note_re = re.compile (r"""^ +([0-9-]+) \$([A-Fa-f0-9]+)""") -Sxre = re.compile (r"""^\^Sx\(([0-9-]+)\) ([0-9-]+) ([0-9-]+) ([0-9-]+) ([0-9-]+) ([0-9-]+) ([0-9-]+)""") -IMre = re.compile (r"""^\^IM\(([0-9-]+),([0-9-]+)\) ([0-9-]+) ([0-9-]+) ([0-9-]+) ([0-9-]+) ([0-9-]+)""") -vere = re.compile(r"""^\^(ve|ch|se)\(([0-9-]+),([0-9-]+)\) ([0-9-]+) ([0-9-]+) ([0-9-]+) ([0-9-]+) ([0-9-]+)""") -versere = re.compile(r"""^\^verse\(([0-9]+)\)(.*)\^end""") -TPre = re.compile(r"""^\^TP\(([0-9]+),([0-9]+)\) *([0-9-]+) ([0-9-]+) ([0-9-]+) ([0-9-]+)""") +def fill_list_to (list, no): + """ +Add None to LIST until it contains entry number NO. + """ + while len (list) <= no: + list.extend ([None] * (no - len(list) + 1)) + return list + +def read_finale_value (str): + """ +Pry off one value from STR. The value may be $hex, decimal, or "string". +Return: (value, rest-of-STR) + """ + while str and str[0] in ' \t\n': + str = str[1:] + + if not str: + return (None,str) + + if str[0] == '$': + str = str [1:] + + hex = '' + while str and str[0] in '0123456789ABCDEF': + hex = hex + str[0] + str = str[1:] + + + return (string.atol (hex, 16), str) + elif str[0] == '"': + str = str[1:] + s = '' + while str and str[0] <> '"': + s = s + str[0] + str = str[1:] + + return (s,str) + elif str[0] in '-0123456789': + dec = '' + while str and str[0] in '-0123456789': + dec = dec + str[0] + str = str[1:] + + return (string.atoi (dec), str) + else: + sys.stderr.write ("Can't convert `%s'\n" % str) + return (None, str) + + + + +def parse_etf_file (fn, tag_dict): + + """ Read FN, putting ETF info into + a giant dictionary. The keys of TAG_DICT indicate which tags + to put into the dict. + """ + + sys.stderr.write ('parsing ... ' ) + f = open (fn) + + gulp = re.sub ('[\n\r]+', '\n', f.read ()) + ls = string.split (gulp, '\n^') + + etf_file_dict = {} + for k in tag_dict.keys (): + etf_file_dict[k] = {} + + last_tag = None + last_numbers = None + + + for l in ls: + m = re.match ('^([a-zA-Z0-9&]+)\(([^)]+)\)', l) + if m and tag_dict.has_key (m.group (1)): + tag = m.group (1) + + indices = tuple (map (string.atoi, string.split (m.group (2), ','))) + content = l[m.end (2)+1:] + + + tdict = etf_file_dict[tag] + if not tdict.has_key (indices): + tdict[indices] = [] + + + parsed = [] + + if tag == 'verse' or tag == 'block': + m2 = re.match ('(.*)\^end', content) + if m2: + parsed = [m2.group (1)] + else: + while content: + (v, content) = read_finale_value (content) + if v <> None: + parsed.append (v) + + tdict [indices].extend (parsed) + + last_indices = indices + last_tag = tag + + continue + +# let's not do this: this really confuses when eE happens to be before a ^text. +# if last_tag and last_indices: +# etf_file_dict[last_tag][last_indices].append (l) + + sys.stderr.write ('\n') + return etf_file_dict + + + class Etf_file: def __init__ (self, name): self.measures = [None] - self.entries = [None] self.chords = [None] self.frames = [None] self.tuplets = [None] self.staffs = [None] - self.slur_dict = {} + self.slurs = [None] self.articulations = [None] self.syllables = [None] self.verses = [None] - + self.articulation_defs = [None] + ## do it self.parse (name) def get_global_measure (self, no): - if len (self.measures) <= no: - self.measures = self.measures + [None]* (1 + no - len (self.measures)) - + fill_list_to (self.measures, no) if self.measures[no] == None: self.measures [no] = Global_measure (no) @@ -705,178 +853,124 @@ class Etf_file: def get_staff(self,staffno): - if len (self.staffs) <= staffno: - self.staffs = self.staffs + [None] * (1 + staffno - len (self.staffs)) - + fill_list_to (self.staffs, staffno) if self.staffs[staffno] == None: self.staffs[staffno] = Staff (staffno) return self.staffs[staffno] # staff-spec - def try_IS (self, l): + def try_IS (self, indices, contents): pass - def try_BC (self, l): - m = BCre.match (l) - if m: - bn = string.atoi (m.group (1)) - where = string.atoi (m.group (2)) / 1024.0 - return m - def try_TP(self, l): - m = TPre.match (l) - if m: - (nil, num) = map (string.atoi, (m.groups ()[0:2])) - entries = map (string.atoi, (m.groups ()[2:])) - - if self.tuplets[-1] == None or num <> self.tuplets[-1].start_note: - self.tuplets.append (Tuplet (num)) - - self.tuplets[-1].append_finale (entries) - - def try_IM (self, l): - m = IMre.match (l) - if m: - a = string.atoi (m.group (1)) - b = string.atoi (m.group (2)) - - fin = map (string.atoi, m.groups ()[2:]) - - self.articulations.append (Articulation (a,b,fin)) - return m - def try_verse (self,l): - m = versere .match (l) - if m: - a = string.atoi (m.group (1)) - body =m.group (2) - - body = re.sub (r"""\^[a-z]+\([^)]+\)""", "", body) - body = re.sub ("\^[a-z]+", "", body) - self.verses.append (Verse (a, body)) - - return m - def try_ve (self,l): - m = vere .match (l) - if m: - a = string.atoi (m.group (1)) - b = string.atoi (m.group (2)) - - fin = map (string.atoi, m.groups ()[2:]) - - self.syllables.append (Syllable (a,b,fin)) - return m - def try_eE (self, l): - m = eEre.match (l) - if m: - tup = m.groups() - (no, prev, next, dur, pos, entryflag, extended, follow) = tup - (no, prev, next, dur, pos,extended, follow) \ - = tuple (map (string.atoi, [no,prev,next,dur,pos,extended,follow])) - - entryflag = string.atol (entryflag,16) - if len (self.entries) <= no: - # missing entries seem to be quite common. - # we fill'em up with None. - self.entries = self.entries + [None] * (no - len (self.entries) + 1) - - current_entry = ((no, prev, next, dur, pos, entryflag, extended, follow), []) - self.entries[no] = current_entry - return m - - def try_Sx(self,l): - m = Sxre.match (l) - if m: - slurno = string.atoi (m.group (1)) - - sl = None - try: - sl = self.slur_dict[slurno] - except KeyError: - sl = Slur (slurno) - self.slur_dict[slurno] = sl - - params = list (m.groups ()[1:]) - params = map (string.atoi, params) - sl.append_entry (params) - - return m - def try_GF(self, l): - m = GFre.match (l) - if m: - (staffno,measno) = m.groups ()[0:2] - s = string.atoi (staffno) - me = string.atoi (measno) - - entry = m.groups () [2:] - st = self.get_staff (s) - meas = st.get_measure (me) - meas.add_finale_entry (entry) - - # frame ? - def try_FR(self, l): - m = FRre.match (l) - if m: - (frameno, startnote, endnote, foo, bar) = m.groups () - (frameno, startnote, endnote) = tuple (map (string.atoi, [frameno, startnote, endnote])) - if len (self.frames) <= frameno: - self.frames = self.frames + [None] * (frameno - len(self.frames) + 1) - - self.frames[frameno] = Frame ((frameno, startnote, endnote)) - - return m - - def try_MS (self, l): - m = MSre.match (l) - if m: - measno = string.atoi (m.group (1)) - keynum = string.atoi (m.group (3)) - meas =self. get_global_measure (measno) - meas.set_keysig (keynum) - - beats = string.atoi (m.group (4)) - beatlen = string.atoi (m.group (5)) - meas.set_timesig ((beats, beatlen)) - - return m - - def try_note (self, l): - m = note_re.match (l) - if m: - (pitch, flag) = m.groups () - pitch = string.atoi (pitch) - flag = string.atol (flag,16) - self.entries[-1][1].append ((pitch,flag)) - - def parse (self, name): - sys.stderr.write ('parsing ...') - sys.stderr.flush () + def try_BC (self, indices, contents): + bn = indices[0] + where = contents[0] / 1024.0 + def try_TP(self, indices, contents): + (nil, num) = indices + + if self.tuplets[-1] == None or num <> self.tuplets[-1].start_note: + self.tuplets.append (Tuplet (num)) + + self.tuplets[-1].append_finale (contents) + + def try_IM (self, indices, contents): + (a,b) = indices + fin = contents + self.articulations.append (Articulation (a,b,fin)) + def try_verse (self, indices, contents): + a = indices[0] + body = contents[0] + + body = re.sub (r"""\^[a-z]+\([^)]+\)""", "", body) + body = re.sub ("\^[a-z]+", "", body) + self.verses.append (Verse (a, body)) + def try_ve (self,indices, contents): + (a,b) = indices + self.syllables.append (Syllable (a,b,contents)) + + def try_eE (self,indices, contents): + no = indices[0] + (prev, next, dur, pos, entryflag, extended, follow) = contents[:7] + + fill_list_to (self.chords, no) + self.chords[no] =Chord (no, contents) + + def try_Sx(self,indices, contents): + slurno = indices[0] + fill_list_to (self.slurs, slurno) + self.slurs[slurno] = Slur(slurno, contents) + + def try_IX (self, indices, contents): + n = indices[0] + a = contents[0] + b = contents[1] + + ix= None + try: + ix = self.articulation_defs[n] + except IndexError: + ix = Articulation_def (n,a,b) + self.articulation_defs.append (Articulation_def (n, a, b)) - gulp = open (name).read () + def try_GF(self, indices, contents): + (staffno,measno) = indices - gulp = re.sub ('[\n\r]+', '\n', gulp) - ls = string.split (gulp, '\n') + st = self.get_staff (staffno) + meas = st.get_measure (measno) + meas.finale = contents - for l in ls: - m = None - if not m: - m = self.try_MS (l) - if not m: - m = self.try_FR (l) - if not m: - m = self.try_GF (l) - if not m: - m = self.try_note (l) - if not m: - m = self.try_eE (l) - if not m: - m = self.try_IM (l) - if not m: - m = self.try_Sx (l) - if not m: - m = self.try_TP (l) - if not m: - m = self.try_verse (l) + def try_FR(self, indices, contents): + frameno = indices [0] + + startnote = contents[0] + endnote = contents[1] + fill_list_to (self.frames, frameno) + + self.frames[frameno] = Frame ((frameno, startnote, endnote)) + + def try_MS (self, indices, contents): + measno = indices[0] + keynum = contents[1] + meas =self. get_global_measure (measno) + meas.set_keysig (keynum) + + beats = contents[2] + beatlen = contents[3] + meas.set_timesig ((beats, beatlen)) + + meas_flag1 = contents[4] + meas_flag2 = contents[5] + + meas.set_flags (meas_flag1, meas_flag2); + + + routine_dict = { + 'MS': try_MS, + 'FR': try_FR, + 'GF': try_GF, + 'IX': try_IX, + 'Sx' : try_Sx, + 'eE' : try_eE, + 'verse' : try_verse, + 've' : try_ve, + 'IM' : try_IM, + 'TP' : try_TP, + 'BC' : try_BC, + 'IS' : try_IS, + } + + def parse (self, etf_dict): + sys.stderr.write ('reconstructing ...') + sys.stderr.flush () + + for (tag,routine) in Etf_file.routine_dict.items (): + ks = etf_dict[tag].keys () + ks.sort () + for k in ks: + routine (self, k, etf_dict[tag][k]) + sys.stderr.write ('processing ...') sys.stderr.flush () @@ -899,8 +993,11 @@ class Etf_file: frame_obj_list = [None] for frno in m.frames: - fr = self.frames[frno] - frame_obj_list.append (fr) + try: + fr = self.frames[frno] + frame_obj_list.append (fr) + except IndexError: + sys.stderr.write ("\nNon-existent frame %d" % frno) m.frames = frame_obj_list for fr in frame_obj_list[1:]: @@ -925,10 +1022,12 @@ class Etf_file: for t in self.tuplets[1:]: t.calculate (self.chords) - for s in self.slur_dict.values(): - s.calculate (self.chords) + for s in self.slurs[1:]: + if s: + s.calculate (self.chords) + for s in self.articulations[1:]: - s.calculate (self.chords) + s.calculate (self.chords, self.articulation_defs) def get_thread (self, startno, endno): @@ -942,7 +1041,7 @@ class Etf_file: return [] - while c and c.number () <> endno: + while c and c.number <> endno: thread.append (c) c = c.next @@ -978,24 +1077,18 @@ class Etf_file: return 'ETF FILE %s %s' % (self.measures, self.entries) def unthread_entries (self): - self.chords = [None] - for e in self.entries[1:]: - ch = None - if e: - ch = Chord (e) - self.chords.append (ch) - for e in self.chords[1:]: if not e: continue - e.prev = self.chords[e.finale[0][1]] - e.next = self.chords[e.finale[0][2]] + + e.prev = self.chords[e.finale[0]] + e.next = self.chords[e.finale[1]] def identify(): sys.stderr.write ("%s from LilyPond %s\n" % (program_name, version)) def help (): - print """Usage: etf2ly [OPTION]... ETF-FILE + sys.stdout.write("""Usage: etf2ly [OPTION]... ETF-FILE Convert ETF to LilyPond. @@ -1008,20 +1101,20 @@ Enigma Transport Format is a format used by Coda Music Technology's Finale product. This program will convert a subset of ETF to a ready-to-use lilypond file. -Report bugs to bug-lilypond@gnu.org +Report bugs to bug-gnu-music@gnu.org Written by Han-Wen Nienhuys -""" +""") def print_version (): - print r"""etf2ly (GNU lilypond) %s + sys.stdout.write (r"""etf2ly (GNU lilypond) %s This is free software. It is covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Invoke as `midi2ly --warranty' for more information. Copyright (c) 2000 by Han-Wen Nienhuys -""" % version +""" % version) @@ -1052,7 +1145,9 @@ for f in files: f = '' sys.stderr.write ('Processing `%s\'\n' % f) - e = Etf_file(f) + + dict = parse_etf_file (f, Etf_file.routine_dict) + e = Etf_file(dict) if not out_filename: out_filename = os.path.basename (re.sub ('(?i).etf$', '.ly', f)) diff --git a/scripts/lilypond-book.py b/scripts/lilypond-book.py index 96a29680f7..caf8efc2fc 100644 --- a/scripts/lilypond-book.py +++ b/scripts/lilypond-book.py @@ -12,6 +12,10 @@ # geometry.sty and article.cls. Give me a hint, and I'll # fix it.) +# +# TODO: magnification support should also work for texinfo -> html: eg. add as option to dvips. +# + # This is was the idea for handling of comments: # Multiline comments, @ignore .. @end ignore is scanned for # in read_doc_file, and the chunks are marked as 'ignore', so @@ -31,6 +35,8 @@ # The the rest of the rexeces are searched for. They don't have to test # if they are on a commented out line. + + import os import stat import string @@ -43,7 +49,7 @@ import operator program_version = '@TOPLEVEL_VERSION@' if program_version == '@' + 'TOPLEVEL_VERSION' + '@': - program_version = '1.4pre' + program_version = '1.4.9' # # Try to cater for bad installations of LilyPond, that have @@ -365,8 +371,8 @@ output_dict= { 'output-verbatim': "\\begin{verbatim}%s\\end{verbatim}", 'output-default-post': "\\def\postLilypondExample{}\n", 'output-default-pre': "\\def\preLilypondExample{}\n", - 'usepackage-graphics': '\\usepackage{graphics}\n', - 'output-eps': '\\noindent\\parbox{\\lilypondepswidth{%(fn)s.eps}}{\includegraphics{%(fn)s.eps}}', + 'usepackage-graphics': '\\usepackage{graphicx}\n', + 'output-eps': '\\noindent\\parbox{\\lilypondepswidth{%(fn)s.eps}}{\includegraphics[width=\\lilypondepswidth{%(fn)s.eps}]{%(fn)s.eps}}', 'output-tex': '\\preLilypondExample \\input %(fn)s.tex \\postLilypondExample\n', 'pagebreak': r'\pagebreak', }, @@ -927,16 +933,6 @@ def process_lilypond_blocks(outname, chunks):#ugh rename return newchunks -def find_eps_dims (match): - "Fill in dimensions of EPS files." - - fn =match.group (1) - dims = bounding_box_dimensions (fn) - if g_outdir: - fn = os.path.join(g_outdir, fn) - - return '%ipt' % dims[0] - def system (cmd): sys.stderr.write ("invoking `%s'\n" % cmd) @@ -945,6 +941,40 @@ def system (cmd): error ('Error command exited with value %d\n' % st) return st + +def get_bbox (filename): + f = open (filename) + gr = [] + while 1: + l =f.readline () + m = re.match ('^%%BoundingBox: ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)', l) + if m: + gr = map (string.atoi, m.groups ()) + break + + return gr + +def make_pixmap (name): + bbox = get_bbox (name + '.eps') + margin = 3 + fo = open (name + '.trans.eps' , 'w') + fo.write ('%d %d translate\n' % (-bbox[0]+margin, -bbox[1]+margin)) + fo.close () + + res = 90 + + x = (2* margin + bbox[2] - bbox[0]) * res / 72. + y = (2* margin + bbox[3] - bbox[1]) * res / 72. + + cmd = r"""gs -g%dx%d -sDEVICE=pgm -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -q -sOutputFile=- -r%d -dNOPAUSE %s %s -c quit | pnmtopng > %s""" + + cmd = cmd % (x, y, res, name + '.trans.eps', name + '.eps',name + '.png') + try: + status = system (cmd) + except: + os.unlink (name + '.png') + error ("Removing output file") + def compile_all_files (chunks): global foutn eps = [] @@ -1001,14 +1031,9 @@ def compile_all_files (chunks): for e in eps: system(r"tex '\nonstopmode \input %s'" % e) system(r"dvips -E -o %s %s" % (e + '.eps', e)) + for g in png: - cmd = r"""gs -sDEVICE=pgm -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -q -sOutputFile=- -r90 -dNOPAUSE %s -c quit | pnmcrop | pnmtopng > %s""" - cmd = cmd % (g + '.eps', g + '.png') - try: - status = system (cmd) - except: - os.unlink (g + '.png') - error ("Removing output file") + make_pixmap (g) os.chdir (d) @@ -1159,14 +1184,31 @@ def check_texidoc (chunks): n.append (c) return n + +## what's this? Docme --hwn +## def fix_epswidth (chunks): newchunks = [] for c in chunks: - if c[0] == 'lilypond' and 'eps' in c[2]: - body = re.sub (r"""\\lilypondepswidth{(.*?)}""", find_eps_dims, c[1]) - newchunks.append(('lilypond', body, c[2], c[3], c[4])) - else: + if c[0] <> 'lilypond' or 'eps' not in c[2]: newchunks.append (c) + continue + + mag = 1.0 + for o in c[2]: + m = re.match ('magnification=([0-9.]+)', o) + if m: + mag = string.atof (m.group (1)) + + def replace_eps_dim (match, lmag = mag): + filename = match.group (1) + dims = bounding_box_dimensions (filename) + + return '%fpt' % (dims[0] *lmag) + + body = re.sub (r"""\\lilypondepswidth{(.*?)}""", replace_eps_dim, c[1]) + newchunks.append(('lilypond', body, c[2], c[3], c[4])) + return newchunks diff --git a/scripts/ly2dvi.py b/scripts/ly2dvi.py index 5c49dbc344..22a9a2245b 100644 --- a/scripts/ly2dvi.py +++ b/scripts/ly2dvi.py @@ -55,6 +55,9 @@ TODO: ''' + + + import os import stat import string @@ -67,111 +70,24 @@ import operator import tempfile import traceback -# Attempt to fix problems with limited stack size set by Python! -# Sets unlimited stack size. Note that the resource module only -# is available on UNIX. -try: - import resource - resource.setrlimit (resource.RLIMIT_STACK, (-1, -1)) -except: - pass +################################################################ +# lilylib.py -- options and stuff +# +# source file of the GNU LilyPond music typesetter -datadir = '@datadir@' -sys.path.append (datadir + '/python') try: import gettext - gettext.bindtextdomain ('lilypond', '@localedir@') - gettext.textdomain('lilypond') + gettext.bindtextdomain ('lilypond', localedir) + gettext.textdomain ('lilypond') _ = gettext.gettext except: def _ (s): return s - -layout_fields = ['dedication', 'title', 'subtitle', 'subsubtitle', - 'footer', 'head', 'composer', 'arranger', 'instrument', - 'opus', 'piece', 'metre', 'meter', 'poet', 'texttranslator'] - - -# init to empty; values here take precedence over values in the file - -## TODO: change name. -extra_init = { - 'language' : [], - 'latexheaders' : [], - 'latexpackages' : ['geometry'], - 'latexoptions' : [], - 'papersize' : [], - 'pagenumber' : [1], - 'textheight' : [], - 'linewidth' : [], - 'orientation' : [] -} - -extra_fields = extra_init.keys () - -fields = layout_fields + extra_fields -program_name = 'ly2dvi' -help_summary = _ ("Generate .dvi with LaTeX for LilyPond") - -include_path = ['.'] -lily_p = 1 -paper_p = 1 -cache_pks_p = 1 - -PK_PATTERN='feta.*\.[0-9]+pk' - -output_name = '' -targets = { - 'DVI' : 0, - 'LATEX' : 0, - 'MIDI' : 0, - 'TEX' : 0, - } - -track_dependencies_p = 0 -dependency_files = [] - - -# lily_py.py -- options and stuff -# -# source file of the GNU LilyPond music typesetter - -# BEGIN Library for these? -# cut-n-paste from ly2dvi - program_version = '@TOPLEVEL_VERSION@' if program_version == '@' + 'TOPLEVEL_VERSION' + '@': - program_version = '1.3.148' - - -original_dir = os.getcwd () -temp_dir = os.path.join (original_dir, '%s.dir' % program_name) - -keep_temp_dir_p = 0 -verbose_p = 0 - -# -# Try to cater for bad installations of LilyPond, that have -# broken TeX setup. Just hope this doesn't hurt good TeX -# setups. Maybe we should check if kpsewhich can find -# feta16.{afm,mf,tex,tfm}, and only set env upon failure. -# -environment = { - 'MFINPUTS' : datadir + '/mf' + ':', - 'TEXINPUTS': datadir + '/tex:' + datadir + '/ps' + ':', - 'TFMFONTS' : datadir + '/tfm' + ':', - 'GS_FONTPATH' : datadir + '/afm:' + datadir + '/pfa', - 'GS_LIB' : datadir + '/ps', -} - -def setup_environment (): - for key in environment.keys (): - val = environment[key] - if os.environ.has_key (key): - val = os.environ[key] + os.pathsep + val - os.environ[key] = val + program_version = '1.5.17' def identify (): sys.stdout.write ('%s (GNU LilyPond) %s\n' % (program_name, program_version)) @@ -189,8 +105,6 @@ Distributed under terms of the GNU General Public License. It comes with NO WARRANTY.''')) sys.stdout.write ('\n') -errorport=sys.stderr - def progress (s): errorport.write (s + '\n') @@ -303,10 +217,6 @@ def system (cmd, ignore_error = 0): Exit status of CMD """ - - # Attempt to fix problems with limited stack size set by Python! - # Sets unlimited stack size. - resource.setrlimit(resource.RLIMIT_STACK, (-1,-1)) if verbose_p: progress (_ ("Invoking `%s\'") % cmd) @@ -329,29 +239,64 @@ def cleanup_temp (): shutil.rmtree (temp_dir) -#what a name. -def set_setting (dict, key, val): - try: - val = string.atof (val) - except ValueError: - #warning (_ ("invalid value: %s") % `val`) - pass - - try: - dict[key].append (val) - except KeyError: - warning (_ ("no such setting: %s") % `key`) - dict[key] = [val] - - def strip_extension (f, ext): (p, e) = os.path.splitext (f) if e == ext: e = '' return p + e +################################################################ # END Library + + + + + +# if set, LILYPONDPREFIX must take prevalence +# if datadir is not set, we're doing a build and LILYPONDPREFIX +datadir = '@datadir@' + + +if os.environ.has_key ('LILYPONDPREFIX') : +# huh ? this always leads to exception. +# or '@datadir@' == '@' + 'datadir' + '@': + datadir = os.environ['LILYPONDPREFIX'] +else: + datadir = '@datadir@' + + +while datadir[-1] == os.sep: + datadir= datadir[:-1] + +program_name = 'ly2dvi' + +original_dir = os.getcwd () +temp_dir = os.path.join (original_dir, '%s.dir' % program_name) +errorport = sys.stderr +keep_temp_dir_p = 0 +verbose_p = 0 + +try: + import gettext + gettext.bindtextdomain ('lilypond', '@localedir@') + gettext.textdomain ('lilypond') + _ = gettext.gettext +except: + def _ (s): + return s + +# Attempt to fix problems with limited stack size set by Python! +# Sets unlimited stack size. Note that the resource module only +# is available on UNIX. +try: + import resource + resource.setrlimit (resource.RLIMIT_STACK, (-1, -1)) +except: + pass + +help_summary = _ ("Generate .dvi with LaTeX for LilyPond") + option_definitions = [ ('', 'd', 'dependencies', _ ("write Makefile dependencies for every input file")), ('', 'h', 'help', _ ("this help")), @@ -369,6 +314,90 @@ option_definitions = [ ('', 'w', 'warranty', _ ("show warranty and copyright")), ] +layout_fields = ['dedication', 'title', 'subtitle', 'subsubtitle', + 'footer', 'head', 'composer', 'arranger', 'instrument', + 'opus', 'piece', 'metre', 'meter', 'poet', 'texttranslator'] + + +# init to empty; values here take precedence over values in the file + +## TODO: change name. +extra_init = { + 'language' : [], + 'latexheaders' : [], + 'latexpackages' : ['geometry'], + 'latexoptions' : [], + 'papersize' : [], + 'pagenumber' : [1], + 'textheight' : [], + 'linewidth' : [], + 'orientation' : [] +} + +extra_fields = extra_init.keys () +fields = layout_fields + extra_fields + +include_path = ['.'] +lily_p = 1 +paper_p = 1 +cache_pks_p = 1 + +PK_PATTERN='feta.*\.[0-9]+pk' + +output_name = '' +targets = { + 'DVI' : 0, + 'LATEX' : 0, + 'MIDI' : 0, + 'TEX' : 0, + } + +track_dependencies_p = 0 +dependency_files = [] + + +# +# Try to cater for bad installations of LilyPond, that have +# broken TeX setup. Just hope this doesn't hurt good TeX +# setups. Maybe we should check if kpsewhich can find +# feta16.{afm,mf,tex,tfm}, and only set env upon failure. +# +environment = { + 'MFINPUTS' : datadir + '/mf' + ':', + 'TEXINPUTS': datadir + '/tex:' + datadir + '/ps:' + '.:' + + os.getcwd() + ':', + 'TFMFONTS' : datadir + '/tfm' + ':', + 'GS_FONTPATH' : datadir + '/afm:' + datadir + '/pfa', + 'GS_LIB' : datadir + '/ps', +} + + +def setup_environment (): + for key in environment.keys (): + val = environment[key] + if os.environ.has_key (key): + val = os.environ[key] + os.pathsep + val + os.environ[key] = val + +#what a name. +def set_setting (dict, key, val): + try: + val = string.atof (val) + except ValueError: + #warning (_ ("invalid value: %s") % `val`) + pass + + try: + dict[key].append (val) + except KeyError: + warning (_ ("no such setting: %s") % `key`) + dict[key] = [val] + + +def print_environment (): + for (k,v) in os.environ.items (): + sys.stderr.write ("%s=\"%s\"\n" % (k,v)) + def run_lilypond (files, outbase, dep_prefix): opts = '' # opts = opts + '--output=%s.tex' % outbase @@ -388,11 +417,14 @@ def run_lilypond (files, outbase, dep_prefix): fs = string.join (files) if not verbose_p: - progress ( _("Running %s...") % 'LilyPond') # cmd = cmd + ' 1> /dev/null 2> /dev/null' + progress ( _("Running %s...") % 'LilyPond') else: opts = opts + ' --verbose' - + + # for better debugging! + print_environment () + print opts, fs system ('lilypond %s %s ' % (opts, fs)) def analyse_lilypond_output (filename, extra): @@ -544,7 +576,8 @@ lily output file in TFILES after that, and return the Latex file constructed. ' ''' if extra['pagenumber'] and extra['pagenumber'][-1] and extra['pagenumber'][-1] != 'no': - s = s + '\\pagestyle{plain}\n' + s = s + '\setcounter{page}{%s}\n' % (extra['pagenumber'][-1]) + s = s + '\\pagestyle{plain}\n' else: s = s + '\\pagestyle{empty}\n' @@ -655,12 +688,12 @@ def find_pfa_fonts (name): return pfa -(sh, long) = getopt_args (__main__.option_definitions) +(sh, long) = getopt_args (option_definitions) try: (options, files) = getopt.getopt(sys.argv[1:], sh, long) except getopt.error, s: errorport.write ('\n') - errorport.write (_( "error: ") + _ ("getopt says: `%s\'" % s)) + errorport.write (_ ("error: ") + _ ("getopt says: `%s\'" % s)) errorport.write ('\n') errorport.write ('\n') help () @@ -751,6 +784,9 @@ if files and files[0] != '-': # Ugh, maybe make a setup () function files = map (lambda x: strip_extension (x, '.ly'), files) + # hmmm. Wish I'd 've written comments when I wrote this. + # now it looks complicated. + (outdir, outbase) = ('','') if not output_name: outbase = os.path.basename (files[0]) @@ -763,8 +799,8 @@ if files and files[0] != '-': for i in ('.dvi', '.latex', '.ly', '.ps', '.tex'): output_name = strip_extension (output_name, i) - - files = map (abspath, files) + outbase = strip_extension (outbase, i) + files = map (abspath, files) if os.path.dirname (output_name) != '.': dep_prefix = os.path.dirname (output_name) @@ -781,6 +817,8 @@ if files and files[0] != '-': os.chdir (outdir) cp_to_dir (PK_PATTERN, tmpdir) + # to be sure, add tmpdir *in front* of inclusion path. + #os.environ['TEXINPUTS'] = tmpdir + ':' + os.environ['TEXINPUTS'] os.chdir (tmpdir) if lily_p: @@ -851,7 +889,7 @@ if files and files[0] != '-': else: # FIXME: read from stdin when files[0] = '-' help () - errorport.write ("ly2dvi: " + _ ("error: ") + _ ("no files specified on command line.") + '\n') + errorport.write (program_name + ":" + _ ("error: ") + _ ("no files specified on command line.") + '\n') sys.exit (2) diff --git a/scripts/update-lily.py b/scripts/update-lily.py index 178a62a9a2..15920ab109 100644 --- a/scripts/update-lily.py +++ b/scripts/update-lily.py @@ -64,7 +64,6 @@ tar xzf %r/%t && rm -f building && ln -s %n-%v building && cd %n-%v && -rm -f config.cache && ./configure --prefix=$HOME/usr && make all web ) >> %n-%v/log.txt 2>&1 && rm -f %n && diff --git a/stepmake/bin/add-html-footer.py b/stepmake/bin/add-html-footer.py index 4e23ef714c..fbbfe3ecbd 100644 --- a/stepmake/bin/add-html-footer.py +++ b/stepmake/bin/add-html-footer.py @@ -38,9 +38,10 @@ default_footer = r"""


Please take me back to the index of @PACKAGE_NAME@ """ + built = r"""

-This page was built from @PACKAGE_NAME@-@PACKAGE_VERSION@ by
+This page was built from @PACKAGE_NAME@-@PACKAGE_VERSION@ (@BRANCH@) by

@GCOS@ <@MAILADDRESS@>, @LOCALTIME@.
""" @@ -188,6 +189,12 @@ def do_file (f): # index = "./index.html" # top = "./" + + versiontup = string.split(package_version, '.') + branch_str = 'stable-branch' + if string.atoi ( versiontup[1]) % 2: + branch_str = 'development-branch' + s = re.sub ('@INDEX@', index, s) s = re.sub ('@TOP@', top, s) s = re.sub ('@PACKAGE_NAME@', package_name, s) @@ -196,6 +203,7 @@ def do_file (f): s = re.sub ('@GCOS@', gcos, s) s = re.sub ('@LOCALTIME@', localtime, s) s = re.sub ('@MAILADDRESS@', mail_address, s) + s = re.sub ('@BRANCH@', branch_str, s) open (f, 'w').write (s) diff --git a/stepmake/stepmake/metafont-rules.make b/stepmake/stepmake/metafont-rules.make index 01feec1d1b..de8bb4da4c 100644 --- a/stepmake/stepmake/metafont-rules.make +++ b/stepmake/stepmake/metafont-rules.make @@ -26,6 +26,12 @@ $(outdir)/%.$(XPM_RESOLUTION)gf: %.mf $(outdir)/%.$(XPM_RESOLUTION)pk: $(outdir)/%.$(XPM_RESOLUTION)gf gftopk $< $@ + + +$(outdir)/%.pfb: + pktrace $(basename $(@F)) + mv $(basename $(@F)).pfb $(outdir) + #%.afm: # $(SHELL) $(depth)/buildscripts/tfmtoafm.sh $(shell basename $@ .afm) # mv $@ $@.in diff --git a/stepmake/stepmake/metafont-targets.make b/stepmake/stepmake/metafont-targets.make index 5dffa45820..b24d08f2ec 100644 --- a/stepmake/stepmake/metafont-targets.make +++ b/stepmake/stepmake/metafont-targets.make @@ -8,3 +8,6 @@ pks: $(addprefix $(outdir)/, $(XPM_FONTS:%=%.$(XPM_RESOLUTION)pk)) xpms: $(addprefix $(outdir)/, $(XPM_FONTS:%=%.afm)) pks $(foreach i, $(XPM_FONTS), $(SHELL) $(depth)/buildscripts/mf-to-xpms.sh $(i) && ) true + + +pfb: $(PFB_FILES) diff --git a/tex/lily-ps-defs.tex b/tex/lily-ps-defs.tex index 6cae405e8a..7bd36b8e77 100644 --- a/tex/lily-ps-defs.tex +++ b/tex/lily-ps-defs.tex @@ -9,6 +9,7 @@ % % escape the colon with \string to avoid problems with french babel % +\def\PSsetTeXdimen#1{\expandafter\special{! /#1 (\csname #1\endcsname) set_tex_dimen}} \def\lilySpace{ } \def\turnOnPostScript{% % This sets CTM so that you get to the currentpoint diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex index 78efb4bc8b..433fab126a 100644 --- a/tex/lilyponddefs.tex +++ b/tex/lilyponddefs.tex @@ -55,11 +55,17 @@ \botalign{\hbox{\raise #1\leftalign{\kern #2{}#3}}}}% % Are we using PDFTeX? If so, use pdf definitions. +% MiKTeX checks \pdfoutput the wrong way, makes our +% check more complicated. \ifx\pdfoutput\undefined \input lily-ps-defs \else - \pdfoutput=1 - \input lily-pdf-defs + \ifx\pdfoutput\relax + \input lily-ps-defs + \else + \pdfoutput=1 + \input lily-pdf-defs + \fi \fi \def\EndLilyPondOutput{% -- 2.39.5