diff options
author | Jan Nieuwenhuizen <janneke@gnu.org> | 2001-03-21 16:06:42 +0100 |
---|---|---|
committer | Jan Nieuwenhuizen <janneke@gnu.org> | 2001-03-21 16:06:42 +0100 |
commit | 136a3c6f6c871b2365ca625554a0230980779b21 (patch) | |
tree | c935c732bbf1e6074511ea1134f9bc115f3825a8 | |
parent | 79d916d1fa2a921732f7432e87b25058693be370 (diff) |
patch::: 1.3.140.jcn6
1.3.140.jcn6
============
* po update.
* Renamed remaining mudela -> lilypond (except for old change logs).
* Dropped Solo-Cello-Suite II and gnossienne-4 from ./mutopia, as
they're now accessible throug the ports.
* Fixed compilation of lots of examples.
* Convert-ly: added and fixed some conversions.
* Doco updates.
* Ly2dvi: don't hang compilation process: run latex in batchmode.
105 files changed, 3445 insertions, 4657 deletions
@@ -1,3 +1,21 @@ +1.3.140.jcn6 +============ + +* po update. + +* Renamed remaining mudela -> lilypond (except for old change logs). + +* Dropped Solo-Cello-Suite II and gnossienne-4 from ./mutopia, as +they're now accessible throug the ports. + +* Fixed compilation of lots of examples. + +* Convert-ly: added and fixed some conversions. + +* Doco updates. + +* Ly2dvi: don't hang compilation process: run latex in batchmode. + 1.3.140.jcn4 ============ diff --git a/Documentation/topdocs/FAQ.texi b/Documentation/topdocs/FAQ.texi index 1f7d909a99..97d93cb614 100644 --- a/Documentation/topdocs/FAQ.texi +++ b/Documentation/topdocs/FAQ.texi @@ -83,4 +83,12 @@ The website is usually made from the latest snapshots. Binary releases, in particular the windows32 binaries, are only made every once in a while. They may lag several versions behind the latest version. +@subsection Beams, slurs and crescendi are not displayed at all! + +XDvi uses GhostScript for displaying PostScript, check that you have +GhostScript installed. If you use a different DVI viewer (eg, on +Windows), check if it will display embedded PostScript. Don't worry, +the symbols should appear on the printout. + + @bye diff --git a/Documentation/user/invoking.itexi b/Documentation/user/invoking.itexi index a082f4df5d..9d23b38f20 100644 --- a/Documentation/user/invoking.itexi +++ b/Documentation/user/invoking.itexi @@ -8,10 +8,10 @@ @example - lilypond [OPTION]... [MUDELA-FILE]... + lilypond [OPTION]... [FILE]... @end example -@unnumberedsec Command Options +@unnumberedsec Options @table @code diff --git a/Documentation/user/latex-example.latex b/Documentation/user/latex-example.latex new file mode 100644 index 0000000000..022a4c8368 --- /dev/null +++ b/Documentation/user/latex-example.latex @@ -0,0 +1,49 @@ +\documentclass[a4paper]{article} + + + +%\def\preLilypondExample{}} +%\def\postLilypondExample{} + + +\begin{document} + +\begin{lilypond} +\score { + \notes\relative c' { c d e f g a b c } +} +\end{lilypond} + + +\begin[fragment]{lilypond} +c d e +\end{lilypond} + + +% generate standard lilypond titles +\input titledefs.tex +\def\preLilypondExample{\def\mustmakelilypondtitle{}} + +\begin{lilypond} +\header { + title = "Title"; + subtitle = "Subtitle"; + subsubtitle = "Subsubtitle"; + opus = "Opus 1"; + piece = "Piece"; + composer = "Composer"; + enteredby = "JCN"; + instrument = "instrument"; +} +\paper { linewidth = -1.; } +\score { + \notes \relative c'' { a b c d } +} +\end{lilypond} + +\begin{enumerate} +\item Vers one. aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa +\item Vers two. bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb +\end{enumerate} + +\end{document} diff --git a/Documentation/user/latex-lilypond-example.latex b/Documentation/user/latex-lilypond-example.latex index d155917b56..155795a526 100644 --- a/Documentation/user/latex-lilypond-example.latex +++ b/Documentation/user/latex-lilypond-example.latex @@ -1,15 +1,23 @@ -% kommentar +% +% This is way too long and hairy +% +% + + + \documentclass[a4paper, 12pt]{article} -%\def\preMudelaExample{} -%\def\postMudelaExample{} + +%\def\preLilypondExample{} +%\def\postLilypondExample{} %\usepackage{graphics} %\usepackage{landscape} + \begin{document} %uncomment this to try twocolumn mode %\twocolumn -\section{Mudelabook + LaTeX} +\section{Lilypond-book + LaTeX} This is an examplefile for mixing Lilypond and Latex. It is also used to test lilypond-book. View the source to see how it is done. diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely index ebf3898768..96efdb7c4e 100644 --- a/Documentation/user/refman.itely +++ b/Documentation/user/refman.itely @@ -859,7 +859,6 @@ beaming algorithm. For example, the auto beamer will not beam over rests or bar lines, so if you want that, specify the begin and end point manually using @code{[} and @code{]}: -@quotation @lilypond[fragment,relative,verbatim] \context Staff { r4 [r8 g'' a r8] r8 [g | a] r8 @@ -880,7 +879,6 @@ control the number of beams through the properties [f8 r16 \property Voice.stemLeftBeamCount = #1 f g a] } @end lilypond -@end quotation @cindex @code{stemRightBeamCount} The beam symbol can be tweaked through @code{Voice.Beam}'s @@ -889,24 +887,20 @@ in staff-spaces. Set @code{height} to zero, to get horizontal beams: -@quotation @lilypond[fragment,relative,verbatim] \property Voice.Beam \set #'direction = #1 \property Voice.Beam \set #'height = #0 [a''8 e' d c] @end lilypond -@end quotation Here's how you'd specify a weird looking beam that instead of being horizontal, falls two staff spaces: -@quotation @lilypond[fragment,relative,verbatim] \property Voice.Beam \set #'staff-position = #2 \property Voice.Beam \set #'height = #-2 [c'8 c] @end lilypond -@end quotation @cindex @code{default-neutral-direction} @node Expressive marks @@ -940,7 +934,6 @@ stem end. If you want to override this layout you can do this through Maybe reinclude other slur features and move back to tricks? Esp. the second example, how to fix, can be very helpful. -@quotation @lilypond[fragment,relative,verbatim] \property Voice.Slur \set #'direction = #1 \property Voice.Stem \set #'length = #5.5 @@ -948,13 +941,11 @@ second example, how to fix, can be very helpful. \property Voice.Slur \set #'attachment = #'(stem . stem) g8(g)g4 @end lilypond -@end quotation If a slur would strike through a stem or beam, the slur will be moved away upward or downward. If this happens, attaching the slur to the stems might look better: -@quotation @lilypond[fragment,relative,verbatim] \property Voice.Stem \set #'direction = #1 \property Voice.Slur \set #'direction = #1 @@ -962,7 +953,6 @@ stems might look better: \property Voice.Slur \set #'attachment = #'(stem . stem) d,32( d'4 )d8.. @end lilypond -@end quotation Similarly, the curvature of a slur is adjusted to stay clear of note @@ -1083,6 +1073,8 @@ An application---or rather, a hack---is to fake octavation indications. * Articulation:: * Text scripts:: * Grace notes:: +* Glissando :: +* Dynamics:: @end menu @c . {Articulation} @@ -1256,15 +1248,12 @@ Unbeamed eighth notes and shorter by default have a slash through the stem. This behavior can be controlled with the @code{Stem}.@code{flag-style} property. -@quotation @lilypond[fragment,verbatim] \relative c'' { \grace c8 c4 \grace { [c16 c16] } c4 \grace { \property Grace.Stem \override #'flag-style = #'() c16 } c4 } - @end lilypond -@end quotation At present, nesting @code{\grace} notes is not supported. The following @@ -1300,7 +1289,7 @@ also be implemented. @c . {Glissando} @node Glissando -@subsubsection Glissando +@subsection Glissando @cindex Glissando @cindex @code{\glissando} @@ -1308,11 +1297,9 @@ also be implemented. A glissando line can be requested by attaching a @code{\glissando} to a note: -@quotation @lilypond[fragment,relative,verbatim] c'' \glissando c' @end lilypond -@end quotation @refbugs @@ -1323,7 +1310,7 @@ manually. @c . {Dynamics} @node Dynamics -@subsubsection Dynamics +@subsection Dynamics @cindex Dynamics @@ -1352,6 +1339,10 @@ note: @code{c4-\ff}. The available dynamic marks are: @code{\ppp}, @code{\fff}, @code{\fff}, @code{\fp}, @code{\sf}, @code{\sff}, @code{\sp}, @code{\spp}, @code{\sfz}, and @code{\rfz}. +@lilypond[verbatim,singleline,fragment,relative] + c''\ppp c\pp c \p c\mp c\mf c\f c\ff c\fff + c2\sf c\rfz +@end lilypond @cindex Crescendo and Decrescendo @cindex crescendo @@ -1464,34 +1455,28 @@ Normal notation repeats are used like this: @end lilypond With alternative endings: -@quotation @lilypond[fragment,verbatim] c'1 \repeat volta 2 {c'4 d' e' f'} \alternative { {d'2 d'} {f' f} } @end lilypond -@end quotation Folded repeats look like this:@footnote{Folded repeats offer little more over simultaneous music. However, it is to be expected that more functionality -- especially for the MIDI backend -- will be implemented at some point in the future.} -@quotation @lilypond[fragment,verbatim] c'1 \repeat fold 2 {c'4 d' e' f'} \alternative { {d'2 d'} {f' f} } @end lilypond -@end quotation - If you don't give enough alternatives for all of the repeats, then the first alternative is assumed to be repeated often enough to equal the specified number of repeats. -@quotation @lilypond[fragment,verbatim] \context Staff { \relative c' { @@ -1501,7 +1486,6 @@ the specified number of repeats. } } @end lilypond -@end quotation @refbugs @@ -1740,17 +1724,14 @@ You can specify an arpeggio sign on a chord by attaching an @code{\arpeggio} to a note of the chord. -@quotation @lilypond[fragment,relative,verbatim] \context Voice <c'\arpeggio e g c> @end lilypond -@end quotation When an arpeggio crosses staffs in piano music, you attach an arpeggio to the chords in both staffs, and set @code{PianoStaff.connectArpeggios}. -@quotation @lilypond[fragment,relative,verbatim] \context PianoStaff < \property PianoStaff.connectArpeggios = ##t @@ -1758,7 +1739,6 @@ to the chords in both staffs, and set \context Voice = other { \clef bass; <c,,\arpeggio e g>} > @end lilypond -@end quotation This command creates @code{Arpeggio} grobs. @@ -1782,7 +1762,6 @@ Whenever a voice switches to another staff a line connecting the notes can be printed automatically. This is enabled if the property @code{PianoStaff.followVoice} is set to true: -@quotation @lilypond[fragment,relative,verbatim] \context PianoStaff < \property PianoStaff.followVoice = ##t @@ -1794,7 +1773,6 @@ can be printed automatically. This is enabled if the property \context Staff=two {\clef bass; \skip 1*2;} > @end lilypond -@end quotation @c . {Lyrics} @@ -2054,9 +2032,6 @@ must be separated by a dot (@code{.}). Throughout these examples, chords have been shifted around the staff using @code{\transpose}. - -@quotation - @lilypond[fragment,verbatim] \transpose c'' { \chords { @@ -2064,9 +2039,7 @@ using @code{\transpose}. c:9 c:9-.5+.7+ c:3-.5- c:4.6.8 } } - @end lilypond -@end quotation @cindex @code{aug} @cindex @code{dim} @@ -2081,17 +2054,13 @@ raises the 5th, `@code{dim}' which lowers the 5th, `@code{maj}' which adds a raised 7th, and `@code{sus}' which replaces the 5th with a 4th. -@quotation - @lilypond[fragment,verbatim] \transpose c'' { \chords { c1:m c:min7 c:maj c:aug c:dim c:sus } } - @end lilypond -@end quotation Chord subtractions are used to eliminate notes from a chord. The @@ -2153,7 +2122,6 @@ For displaying printed chord names, use the @code{ChordNames} context. The chords may be entered either using the notation described above, or directly using simultaneous music. -@quotation @lilypond[verbatim,singleline] scheme = \notes { \chords {a1 b c} <d f g> <e g b> @@ -2165,14 +2133,12 @@ scheme = \notes { > } @end lilypond -@end quotation You can make the chord changes stand out by setting property @code{ChordNames.chordChanges} to true. This will only display chord names when there's a change in the chords scheme and at the start of the line. -@quotation @lilypond[verbatim] scheme = \chords { c1:m \break c:m c:m c:m d @@ -2186,7 +2152,6 @@ scheme = \chords { \context Staff \transpose c'' \scheme > } @end lilypond -@end quotation LilyPond examines chords specified as lists of notes to determine a name to give the chord. LilyPond will not try to identify chord inversions or @@ -2195,7 +2160,6 @@ entered as a list of pitches: [base vs. bass ?] -@quotation @lilypond[verbatim,center,singleline] scheme = \notes { <c'1 e' g'> @@ -2210,7 +2174,6 @@ scheme = \notes { > } @end lilypond -@end quotation By default LilyPond uses chord name system proposed by Harald Banter @@ -2328,7 +2291,6 @@ This means that middle C in @var{musicexpr} is transposed to a tone. The first version will print sharps and the second version will print flats. -@quotation @lilypond[fragment,verbatim] \context Staff { \clef "F"; @@ -2337,9 +2299,7 @@ will print flats. \transpose des'' { \key e \major; c d e f } \transpose cis'' { \key e \major; c d e f } } - @end lilypond -@end quotation If you want to use both @code{\transpose} and @code{\relative}, then you must use @code{\transpose} first. @code{\relative} will have no @@ -2516,7 +2476,6 @@ anticipates the pitch of the first note(s) of the following line and thus helps the player or singer to manage line breaks during performance, thus enhancing readability of a score. -@quotation @lilypond[verbatim] \score { \notes { c'1 d' e' d' \break c' d' e' d' } @@ -2529,7 +2488,6 @@ performance, thus enhancing readability of a score. } } @end lilypond -@end quotation Custodes were frequently used in music notation until the 16th century. There were different appearences for different notation styles. @@ -2827,8 +2785,6 @@ the @TeX{} family. @cindex font magnification @cindex @code{font-interface} -@refbugs - @node Text markup @subsection Text markup @@ -3543,8 +3499,6 @@ This instructs lilypond to interpret @var{musicexpr} within the context of type @var{contexttype} and with name @var{contextname}. If this context does not exist, it will be created. -@quotation - @lilypond[verbatim,singleline] \score { \notes \relative c'' { @@ -3553,7 +3507,6 @@ context does not exist, it will be created. } @end lilypond -@end quotation In this example, the @code{c} and @code{d} are printed on the default staff. For the @code{e}, a context Staff called @@ -3806,7 +3759,6 @@ be used as the very first item of a translator. In order to define such an identifier outside of @code{\score}, you must do @quotation - @example \paper @{ foo = \translator @{ @dots{} @} diff --git a/Documentation/user/tutorial.itely b/Documentation/user/tutorial.itely index db10ca4a27..e225639dc9 100644 --- a/Documentation/user/tutorial.itely +++ b/Documentation/user/tutorial.itely @@ -182,6 +182,9 @@ manual was written using lilypond-book. lilypond-book is discussed in [TODO] +* setting of env vars (TFMINPUTS,MFINPUTS,TEXINPUTS) +* dvi viewer doesn't display postscript + @node The first tune @section The first tune @@ -1,8 +1,16 @@ +New features in 1.4 + * Finale (.etf), PMX (.pmx) and musedata import tools. * Point and click functionality using emacs and Xdvi. +* Comprehensive documentation, including tutorial. + +* Self-documenting: generated internal documentation. + +* Includes an extensive glossary of musical terms. + * Improved design and implementation: Complete rewrite of the internals: LilyPond is smaller, cleaner, more flexible, etc. @@ -29,21 +37,24 @@ internals: LilyPond is smaller, cleaner, more flexible, etc. and stanza numbering. * Part combining for orchestral scores and hymns: two voices are - combined into a staff automatically, including Solo/`a2 + combined into a staff automatically, including Solo/a2 indications as appropriate. * Chordnames are now configurable in every respect -* Includes an extensive glossary of musical terms. - -* Many bugfixes. +* Easy-play notation * Finished ouverture Coriolan as full orchestral score example. -* Self-documenting: generated internal documentation. +* Mutopia ports collection: easy accessible music archive. * AsciiScript: ASCII-art output * Translations into Japanese, French and Russian -* EZ play notation +* Many bugfixes. + + +Removed features + +* margin shape @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 PATCH_LEVEL=140 -MY_PATCH_LEVEL=jcn5 +MY_PATCH_LEVEL=jcn6 # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/buildscripts/mutopia-index.py b/buildscripts/mutopia-index.py index a79e99cc6e..4cb45eae1e 100755 --- a/buildscripts/mutopia-index.py +++ b/buildscripts/mutopia-index.py @@ -65,7 +65,7 @@ These images are generated at approximately 180dpi. If you want a better impress # # FIXME breaks on multiple strings. # -def read_mudela_header (fn): +def read_lilypond_header (fn): s = open(fn).read () s = re.sub('%.*$', '', s) s = re.sub('\n', ' ', s) @@ -126,7 +126,7 @@ def gen_list(inputs, filename): ext = ext2 + ext print '%s, ' % ex - header = read_mudela_header(ex) + header = read_lilypond_header(ex) def read_dict(s, default, h =header): try: diff --git a/flower/input.cc b/flower/input.cc index 8ec33cf882..d45f81b9d3 100644 --- a/flower/input.cc +++ b/flower/input.cc @@ -37,8 +37,8 @@ Input::set_spot (Input const &i) } /* - Produce GNU-compliant error message. Correcting mudela is such a - breeze if you ('re edidor) know (s) the error column too + Produce GNU-compliant error message. Correcting lilypond source is + such a breeze if you ('re edidor) know (s) the error column too Format: diff --git a/input/bugs/denneboom.ly b/input/bugs/denneboom.ly new file mode 100644 index 0000000000..5f368a7d56 --- /dev/null +++ b/input/bugs/denneboom.ly @@ -0,0 +1,115 @@ +\header{ +filename = "denneboom.ly"; +enteredby = "jcn"; +copyright = "public domain"; +} +%{ file tests silly line shapes %} + +\include "paper20.ly" + + + +oden = \lyrics{ + O | + den- ne- boom, o | + den- ne- boom Wat | + zijn uw tak- ken | + won- der- schoon +} + +ikheb = \lyrics{ + Ik | + heb u laatst in_'t | + bos zien staan toen | + zat- en er geen | + kaars- jes aan +} + +ugloeit = \lyrics{ + U | + gloeit in bar- re | + win- ter- tijd, als | + sneeuw op aar- de | + licht ge- spreid +} + +oboom = \notes\transpose c''{ + g,8 | + c8. c16 c4. d8 | + e8. e16 e4. e8 | + d e f4 b, | + d8. c16 c4 r8 +} + +bos = \notes\transpose c''{ + g8 | + g e a4. g8 | + g8. f16 f4 r8 f8 | + f d g4. f8 | + f8. e16 e4 r8 +} + + +melody = \notes{ + \oboom + \oboom + \bos + \oboom +} + + +verseOne = \notes{ + \oden + \oden + \ikheb + \oden +} + +verseOneStaff = \context Lyrics = one + \$verse_one + + +verseTwo = \notes{ + \oden + \oden + \ugloeit + \oden +} + +verseTwoStaff = \context Lyrics = two + \$verse_two + + +denneboomShape = \paper{ + \paperTwenty + indent = 20. \mm; + + % UGH -- THIS IS HAIRY + #'margin-shape = #(map + (lambda (x) (cons-map mm-to-pt x)) + '((70.0 . 20.) + (65.0 . 30.0) + (57.5 . 45.0) + (50.0 . 60.0) + (42.5 . 75.) + (35.0 . 90.) + (27.5 . 105.) + (20.0 . 120.0) + (10.0 . 140.0) + (65.0 . 30.0)) + ) + + gourlay_maxmeasures = 30.; + arithmetic_basicspace = 3.8; + arithmetic_multiplier = 8.\pt; +} + +\score{ + \addlyrics + \context Staff { \time 3/4; \melody } + \context Lyrics \$verse_one + \paper{ + \$denneboom_shape + } + \midi{ \tempo 4 = 90; } +} diff --git a/input/bugs/minimal.ly b/input/bugs/minimal.ly new file mode 100644 index 0000000000..489cbd14e8 --- /dev/null +++ b/input/bugs/minimal.ly @@ -0,0 +1,12 @@ +% minimal what? +% dumps core + + +\score { + \sequential {\clef bass ; } + \paper { +% \translator { \context Score_engraver ; \name "Score"; } + \translator { \type "Score_engraver"; \name "Score"; } + linewidth = 30 * \staffspace; + } +} diff --git a/input/bugs/multiply.ly b/input/bugs/multiply.ly new file mode 100644 index 0000000000..85c02dc5c8 --- /dev/null +++ b/input/bugs/multiply.ly @@ -0,0 +1,24 @@ +% ugh: strange order of things, this: +% a16 * 1/2 ( +% must be +% a16 ( * 1/2 + + +\score { + \context Voice \notes\relative c { + % to see the magic: uncomment size stuff in init/paper20.ly + + c'4 c4 + + \property Voice.fontSize= -2 + % ugh ugh + b16 * 1 / 2 ( + \property Voice.fontSize= 0 ) + g4 *31/32 + + a a g2 + + } + \paper { } + \midi { } +} diff --git a/input/denneboom.ly b/input/denneboom.ly index a68d3f565e..5f368a7d56 100644 --- a/input/denneboom.ly +++ b/input/denneboom.ly @@ -66,7 +66,7 @@ verseOne = \notes{ } verseOneStaff = \context Lyrics = one - \verse_one + \$verse_one verseTwo = \notes{ @@ -77,7 +77,7 @@ verseTwo = \notes{ } verseTwoStaff = \context Lyrics = two - \verse_two + \$verse_two denneboomShape = \paper{ @@ -107,9 +107,9 @@ denneboomShape = \paper{ \score{ \addlyrics \context Staff { \time 3/4; \melody } - \context Lyrics \verse_one + \context Lyrics \$verse_one \paper{ - \denneboom_shape + \$denneboom_shape } \midi{ \tempo 4 = 90; } } diff --git a/input/les-nereides.ly b/input/les-nereides.ly index dc4e04f823..d4efc7d037 100644 --- a/input/les-nereides.ly +++ b/input/les-nereides.ly @@ -36,7 +36,7 @@ global = \notes{ \skip 2; \skip 1*2; -#ifndef FAKE_GRACE +#ifndef FAKE_GRACE /* First run this through cpp. See head les-nereides.ly */ \skip 1; #else % FAKE_GRACE \skip 2.; \partial 32*24; diff --git a/input/regression/arpeggio-collision.ly b/input/regression/arpeggio-collision.ly index 6425b98217..7a8d7f0aee 100644 --- a/input/regression/arpeggio-collision.ly +++ b/input/regression/arpeggio-collision.ly @@ -1,5 +1,5 @@ -xheader = { +header = { texidoc = "arpeggio stays clear of accidentals and flipped note heads. Since Arpeggio engraver is Voice, it does nothing for voice collisions." }; diff --git a/input/test/ac-extra-voice.ly b/input/test/ac-extra-voice.ly index 316dee02c6..ca1dc4e8b0 100644 --- a/input/test/ac-extra-voice.ly +++ b/input/test/ac-extra-voice.ly @@ -65,7 +65,7 @@ accompany = \notes \relative c{ slurVerticalDirection = #1 verticalDirection = -1 - autoBeamSettings \override (end * * * *) = #(make-moment 1 2) + autoBeamSettings \override #'(end * * * *) = #(make-moment 1 2) } } \midi { diff --git a/input/test/auto-beam-override.ly b/input/test/auto-beam-override.ly index e03f7867ef..c99c614770 100644 --- a/input/test/auto-beam-override.ly +++ b/input/test/auto-beam-override.ly @@ -28,7 +28,7 @@ c8 c c4 r8 c c c % no autobeaming - \property Voice.beamAuto = ##f + \property Voice.noAutoBeaming = ##t c8 c c c } \paper{ diff --git a/input/test/bar-break.ly b/input/test/bar-break.ly index 139597f9cb..e69de29bb2 100644 --- a/input/test/bar-break.ly +++ b/input/test/bar-break.ly @@ -1,2 +0,0 @@ - - diff --git a/input/test/font.ly b/input/test/font.ly index 241d195fcb..e69de29bb2 100644 --- a/input/test/font.ly +++ b/input/test/font.ly @@ -1,27 +0,0 @@ -\header{ -title= "The Feta Font"; -subtitle = "proofsheet"; -enteredby = "jcn & hwn"; -copyright = "public domain"; -description = "This file tests the Feta music font"; -% "(Feta definitively is not an abbreviation of Font-En-TjA)"; -} - - - -\include "font-body.ly" -\score{ - \paper{ - % don't change this. - % otherwise 16pt and 20pt layouts differ. - linewidth = 12.5 \cm; - gourlay_maxmeasures =5.; - } - \paper{ - \paperTwenty - linewidth = 17.5 \cm; - gourlay_maxmeasures =5.; - output = "font20.tex"; - } -} - diff --git a/input/test/harmonics.ly b/input/test/harmonics.ly index 6c25e77507..e69de29bb2 100644 --- a/input/test/harmonics.ly +++ b/input/test/harmonics.ly @@ -1,8 +0,0 @@ - -\score { - \context Voice \notes\relative c { - - } - \paper { } - \midi { } -} diff --git a/input/test/part-combine-mmrest.ly b/input/test/part-combine-mmrest.ly index 7e035af3c9..e69de29bb2 100644 --- a/input/test/part-combine-mmrest.ly +++ b/input/test/part-combine-mmrest.ly @@ -1,4 +0,0 @@ -\header { - texidoc = "" - - }
\ No newline at end of file diff --git a/input/test/top-staff-volta.ly b/input/test/top-staff-volta.ly index 5a1f20d4f7..e69de29bb2 100644 --- a/input/test/top-staff-volta.ly +++ b/input/test/top-staff-volta.ly @@ -1,6 +0,0 @@ - - -voltaCommands = \notes { - s1 \property Staff.repeatCommands = #((volta . "1")) - c4 c4 c4 c4 - s1 diff --git a/input/tutorial/wss.ly b/input/tutorial/wss.ly index cd51984d24..e69de29bb2 100644 --- a/input/tutorial/wss.ly +++ b/input/tutorial/wss.ly @@ -1,9 +0,0 @@ - - -\score { - -\notes {\notes \reletive c' { - \times 2/3 { [fis8 fis8 fis8] } - \times 2/3 { [b b b] } - bes4 -} diff --git a/ly/dynamic-scripts.ly b/ly/dynamic-scripts.ly index 7ccd8d8e64..bf6c3e74f9 100644 --- a/ly/dynamic-scripts.ly +++ b/ly/dynamic-scripts.ly @@ -3,6 +3,7 @@ % declare the standard dynamic identifiers. % +pppp = \dynamicscript #"pppp" ppp = \dynamicscript #"ppp" pp = \dynamicscript #"pp" p = \dynamicscript #"p" @@ -11,6 +12,7 @@ mf = \dynamicscript #"mf" f = \dynamicscript #"e" % see feta-din layout ff = \dynamicscript #"ff" fff = \dynamicscript #"fff" +ffff = \dynamicscript #"ffff" fp = \dynamicscript #"fp" sf = \dynamicscript #"sf" diff --git a/ly/params-as.ly b/ly/params-as.ly index 5ed66e729d..78deb13655 100644 --- a/ly/params-as.ly +++ b/ly/params-as.ly @@ -26,18 +26,17 @@ outputscale = \staffheight / 4.0; \translator { \NoteNamesContext } \translator { \ScoreContext } -\translator { \ChoirStaffContext} -\translator { \GraceContext} +\translator { \ChoirStaffContext } +\translator { \GraceContext } \translator { \RhythmicStaffContext} \translator { \StaffContext } -\translator { \VoiceContext} +\translator { \VoiceContext } \translator { \StaffGroupContext } \translator { \ChordNamesContext } -\translator { \ChordNamesVoiceContext} -\translator { \GrandStaffContext} +\translator { \GrandStaffContext } \translator { \LyricsContext } -\translator { \ThreadContext} -\translator { \PianoStaffContext} +\translator { \ThreadContext } +\translator { \PianoStaffContext } \translator { \LyricsVoiceContext } \translator { \StaffContainerContext } diff --git a/ly/property.ly b/ly/property.ly index 3029e49e94..5a413798b6 100644 --- a/ly/property.ly +++ b/ly/property.ly @@ -7,8 +7,8 @@ stemDown = \property Voice.Stem \override #'direction = #-1 stemBoth= \property Voice.Stem \revert #'direction slurUp = \property Voice.Slur \override #'direction = #1 -slurBoth = \property Voice.Slur \revert #'direction slurDown = \property Voice.Slur \override #'direction = #-1 +slurBoth = \property Voice.Slur \revert #'direction shiftOn = \property Voice.NoteColumn \override #'horizontal-shift = #1 shiftOnn = \property Voice.NoteColumn \override #'horizontal-shift = #2 shiftOnnn = \property Voice.NoteColumn \override #'horizontal-shift = #3 @@ -31,6 +31,20 @@ dynamicBoth = { \property Voice.DynamicLineSpanner \revert #'direction } +scriptUp = { + \property Voice.TextScript \override #'direction = #1 + \property Voice.Script \override #'direction = #1 +} +scriptDown = { + \property Voice.TextScript \override #'direction = #-1 + \property Voice.Script \override #'direction = #-1 +} +scriptBoth = { + \property Voice.TextScript \revert #'direction + \property Voice.Script \revert #'direction +} + + cadenzaOn = \property Score.timing = ##f cadenzaOff = { \property Score.timing = ##t diff --git a/make/ly.make b/make/ly.make index 4d2f7b1d3f..8355a3dc65 100644 --- a/make/ly.make +++ b/make/ly.make @@ -26,7 +26,7 @@ make-root?=$(wildcard /usr/local/share/lilypond/make) ifneq ($(make-root),) ### some versions apparently choke on $(message) ### $(message running from $(make-root)) -depth=$(make-root)/.. +depth:=$(make-root)/.. LOCALSTEPMAKE_TEMPLATES=ly mutopia include $(make-root)/stepmake.make else diff --git a/make/ports-rules.make b/make/ports-rules.make index b819f0747b..5e509eeb33 100644 --- a/make/ports-rules.make +++ b/make/ports-rules.make @@ -7,7 +7,7 @@ else wget $(MUTOPIA_MIRROR)/$(mutopia-dir)/$@ %.ly: %-lys.zip - unzip $< + unzip -n $< $(MAKE) local-convert-ly endif diff --git a/midi2ly/include/duration-convert.hh b/midi2ly/include/duration-convert.hh index 683c6eb19b..db6818e2f2 100644 --- a/midi2ly/include/duration-convert.hh +++ b/midi2ly/include/duration-convert.hh @@ -48,7 +48,7 @@ struct Duration_convert { /// Return Rational representation (fraction of whole note). static Rational dur2_mom (Duration dur ); - /// Return Mudela string representation. + /// Return Lilypond string representation. static String dur2_str (Duration dur ); /// Return duration from Rational (fraction of whole) representation. diff --git a/midi2ly/include/lilypond-column.hh b/midi2ly/include/lilypond-column.hh new file mode 100644 index 0000000000..15a9097e9d --- /dev/null +++ b/midi2ly/include/lilypond-column.hh @@ -0,0 +1,29 @@ +// +// lilypond-column.hh -- declare Lilypond_column +// +// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> + +#ifndef LILYPOND_COLUMN_HH +#define LILYPOND_COLUMN_HH + +#include "flower-proto.hh" +#include "midi2ly-proto.hh" +#include "rational.hh" +#include "cons.hh" + +/// (lilypond_column) +class Lilypond_column +{ +public: + Lilypond_column (Lilypond_score* lilypond_score_l, Rational mom); + + void add_item (Lilypond_item* lilypond_item_l); + Rational at_mom (); + + Cons_list<Lilypond_item> lilypond_item_l_list_; + Rational at_mom_; + Lilypond_score* lilypond_score_l_; +}; + +#endif // LILYPOND_COLUMN_HH + diff --git a/midi2ly/include/lilypond-item.hh b/midi2ly/include/lilypond-item.hh new file mode 100644 index 0000000000..039280c91e --- /dev/null +++ b/midi2ly/include/lilypond-item.hh @@ -0,0 +1,130 @@ +// +// lilypond-item.hh -- declare lilypond_item +// +// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> + +#ifndef LILYPOND_ITEM_HH +#define LILYPOND_ITEM_HH + +#include "midi2ly-proto.hh" +#include "string.hh" +#include "rational.hh" +#include "duration.hh" + +// should these: +// * be Lilypond_items +// * be Voice_elements/requests +// * get a name-change +// ? + +/// (lilypond_item) +class Lilypond_item +{ +public: + Lilypond_item (Lilypond_column* lilypond_column_l); + virtual ~Lilypond_item (); + + virtual Rational at_mom (); + virtual Rational duration_mom (); + void output (Lilypond_stream& lilypond_stream_r); + virtual String str () = 0; + + Lilypond_column* lilypond_column_l_; +}; + +class Lilypond_key : public Lilypond_item +{ +public: + Lilypond_key (int accidentals_i, int minor_i); + + String notename_str (int pitch_i); + virtual String str (); + + //private: + int accidentals_i_; + int minor_i_; +}; + +class Lilypond_time_signature : public Lilypond_item +{ +public: + Lilypond_time_signature (int num_i, int den_i, int division_4_i, int count_32_i); + + Duration i2_dur (int time_i, int division_1_i); + int clocks_1_i (); + int den_i (); + int num_i (); + virtual String str (); + Rational bar_mom (); + +private: + Real sync_f_; + Duration sync_dur_; + int clocks_1_i_; + int num_i_; + int den_i_; +}; + +class Lilypond_note : public Lilypond_item +{ +public: + Lilypond_note (Lilypond_column* lilypond_column_l, int channel_i, int pitch_i, int dyn_i); + + Duration duration (); + virtual Rational duration_mom (); + virtual String str (); + + // int const c0_pitch_i_c_ = 60; // huh? + static int const c0_pitch_i_c_ = 48; + + static bool const simple_plet_b_s = false; + int channel_i_; + int pitch_i_; + Lilypond_column* end_column_l_; +}; + +class Lilypond_skip : public Lilypond_item +{ +public: + Lilypond_skip (Lilypond_column* lilypond_column_l, Rational skip_mom); + + Duration duration (); + virtual Rational duration_mom (); + virtual String str (); + +private: + Rational mom_; +}; + + +class Lilypond_tempo : public Lilypond_item +{ +public: + Lilypond_tempo (int useconds_per_4_i); + + int get_tempo_i (Rational rational); + virtual String str (); + int useconds_per_4_i (); + +private: + int useconds_per_4_i_; + Rational seconds_per_1_mom_; +}; + +class Lilypond_text : public Lilypond_item +{ +public: + enum Type { + TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, + MARKER, CUE_POINT + }; + Lilypond_text (Lilypond_text::Type type, String str); + virtual String str (); + + //private: + Type type_; + String text_str_; +}; + +#endif // LILYPOND_ITEM_HH + diff --git a/midi2ly/include/lilypond-score.hh b/midi2ly/include/lilypond-score.hh new file mode 100644 index 0000000000..9076384ac5 --- /dev/null +++ b/midi2ly/include/lilypond-score.hh @@ -0,0 +1,51 @@ +// +// lilypond-score.hh -- declare Lilypond_score +// +// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> + +#ifndef LILYPOND_SCORE_HH +#define LILYPOND_SCORE_HH + +#include "midi2ly-proto.hh" +#include "flower-proto.hh" +#include "cons.hh" +#include "parray.hh" + +/// (lilypond_score) +class Lilypond_score { +public: + Lilypond_score (int format_i, int tracks_i, int tempo_i); + ~Lilypond_score (); + + void add_item (Lilypond_item* lilypond_item_p); + void add_staff (Lilypond_staff* lilypond_staff_p); + + Lilypond_column* find_column_l (Rational mom); + Lilypond_column* get_column_l (Rational mom); + + void output (String filename_str); + void process (); + + // ugh + Lilypond_key* lilypond_key_l_; + Lilypond_time_signature* lilypond_time_signature_l_; + Lilypond_tempo* lilypond_tempo_l_; + Lilypond_staff * last_staff_l_; +private: + void filter_tempo (); + void quantify_columns (); + void quantify_durations (); + void settle_columns (); + + Cons_list<Lilypond_staff> lilypond_staff_p_list_; + Link_array<Lilypond_column> column_l_array_; + + // ugh, ugh, ugh +public: + int format_i_; + int tracks_i_; + int tempo_i_; +}; + +#endif // LILYPOND_SCORE_HH + diff --git a/midi2ly/include/lilypond-staff.hh b/midi2ly/include/lilypond-staff.hh new file mode 100644 index 0000000000..ceba267b4b --- /dev/null +++ b/midi2ly/include/lilypond-staff.hh @@ -0,0 +1,43 @@ +// +// lilypond-staff.hh -- declare lilypond_staff +// +// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> + +#ifndef LILYPOND_STAFF_HH +#define LILYPOND_STAFF_HH + +#include "midi2ly-proto.hh" +#include "flower-proto.hh" +#include "cons.hh" +#include "string.hh" + +/// (lilypond_staff) +class Lilypond_staff +{ +public: + Lilypond_staff (int number_i, String copyright_str, String track_name_str, String instrument_str); + + void add_item (Lilypond_item* lilypond_item_p); + void eat_voice (Cons_list<Lilypond_item>& items); + String id_str (); + String name_str (); + void output (Lilypond_stream& lilypond_stream_r); + void process (); + + String copyright_str_; + String instrument_str_; + String name_str_; + Lilypond_key* lilypond_key_l_; + Lilypond_time_signature* lilypond_time_signature_l_; + Lilypond_tempo* lilypond_tempo_l_; + int number_i_; + +private: + void output_lilypond_begin_bar (Lilypond_stream& lilypond_stream_r, Rational now_mom, int bar_i); + + Cons_list<Lilypond_voice> lilypond_voice_p_list_; + Cons_list<Lilypond_item> lilypond_item_p_list_; +}; + +#endif // LILYPOND_STAFF_HH + diff --git a/midi2ly/include/lilypond-stream.hh b/midi2ly/include/lilypond-stream.hh new file mode 100644 index 0000000000..29c1c8cf3a --- /dev/null +++ b/midi2ly/include/lilypond-stream.hh @@ -0,0 +1,42 @@ +// +// lilypond-stream.hh -- part of LilyPond +// +// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> + +// should i be named Lilypond_stream? + +#ifndef LILYPOND_STREAM_HH +#define LILYPOND_STREAM_HH + +#include "midi2ly-proto.hh" +#include "string.hh" +//#include "scalar.hh" + +/// Lily output +class Lilypond_stream { +public: + Lilypond_stream (String filename_str); + ~Lilypond_stream(); + + Lilypond_stream& operator << (char c); + Lilypond_stream& operator << (String s); + Lilypond_stream& operator << (Lilypond_item& lilypond_item_r); + +private: + void handle_pending_indent(); + void header(); + void open(); + void output (String str); + void output_wrapped (String str); + + ostream* os_p_; + String filename_str_; + int indent_i_; + int column_i_; + int pending_indent_i_; + int wrap_column_i_; + bool comment_mode_b_; +}; + +#endif // LILYPOND_STREAM_HH + diff --git a/midi2ly/include/lilypond-voice.hh b/midi2ly/include/lilypond-voice.hh new file mode 100644 index 0000000000..b64882f6fb --- /dev/null +++ b/midi2ly/include/lilypond-voice.hh @@ -0,0 +1,29 @@ +// +// lilypond-voice.hh -- declare Lilypond_voice +// +// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> + +#ifndef LILYPOND_VOICE_HH +#define LILYPOND_VOICE_HH + +#include "midi2ly-proto.hh" +#include "cons.hh" + +/// (lilypond_voice) +class Lilypond_voice +{ +public: + Lilypond_voice (Lilypond_staff* lilypond_staff_l); + void add_item (Lilypond_item* lilypond_item_l); + void output (Lilypond_stream& lilypond_stream_r); + String get_clef () const; + Lilypond_item * last_item_l_; + Lilypond_note * last_note_l_; +private: + Lilypond_staff* lilypond_staff_l_; + Cons_list<Lilypond_item> lilypond_item_l_list_; + +}; + +#endif // LILYPOND_VOICE_HH + diff --git a/midi2ly/include/midi-parser.hh b/midi2ly/include/midi-parser.hh index d4b498dc0f..670ff5ea7e 100644 --- a/midi2ly/include/midi-parser.hh +++ b/midi2ly/include/midi-parser.hh @@ -49,7 +49,7 @@ struct Midi_parser_info Byte const* byte_L_; Byte const* end_byte_L_; Source_file* source_l_; - Mudela_score* score_l_; + Lilypond_score* score_l_; Rational bar_mom_; }; diff --git a/midi2ly/include/midi-score-parser.hh b/midi2ly/include/midi-score-parser.hh index de2e1db51e..2fca257ec3 100644 --- a/midi2ly/include/midi-score-parser.hh +++ b/midi2ly/include/midi-score-parser.hh @@ -18,14 +18,14 @@ class Midi_score_parser : public Midi_parser { public: - Mudela_score* parse (String filename_str, Sources*); + Lilypond_score* parse (String filename_str, Sources*); private: void open (String filename_str, Sources*); void parse_header (); int find_earliest_i (Link_array<Midi_track_parser>& tracks); - Mudela_score* parse_score (); + Lilypond_score* parse_score (); }; #endif // MIDI_SCORE_PARSER_HH diff --git a/midi2ly/include/midi-track-parser.hh b/midi2ly/include/midi-track-parser.hh index 21d6988a3b..89e6363d3d 100644 --- a/midi2ly/include/midi-track-parser.hh +++ b/midi2ly/include/midi-track-parser.hh @@ -24,20 +24,20 @@ public: ~Midi_track_parser (); Rational at_mom (); - Mudela_staff* parse (Mudela_column* col_l); + Lilypond_staff* parse (Lilypond_column* col_l); private: bool eot (); - void note_end (Mudela_column* col_l, int channel_i, int pitch_i, int aftertouch_i ); - void note_end_all (Mudela_column* col_l) ; + void note_end (Lilypond_column* col_l, int channel_i, int pitch_i, int aftertouch_i ); + void note_end_all (Lilypond_column* col_l) ; void parse_delta_time (); - Mudela_item* parse_event (Mudela_column* col_l); + Lilypond_item* parse_event (Lilypond_column* col_l); void parse_header (); Rational at_mom_; Byte running_byte_; - Cons_list<Mudela_note> open_note_l_list_; - Mudela_staff* mudela_staff_p_; + Cons_list<Lilypond_note> open_note_l_list_; + Lilypond_staff* lilypond_staff_p_; Midi_parser_info* track_info_p_; }; diff --git a/midi2ly/include/midi2ly-proto.hh b/midi2ly/include/midi2ly-proto.hh index 5ac345ae94..dac1d8d1a1 100644 --- a/midi2ly/include/midi2ly-proto.hh +++ b/midi2ly/include/midi2ly-proto.hh @@ -14,16 +14,16 @@ class Midi_parser; struct Midi_parser_info; class Midi_score_parser; class Midi_track_parser; -class Mudela_stream; -class Mudela_item; -class Mudela_key; -class Mudela_time_signature; -class Mudela_note; -class Mudela_tempo; -class Mudela_text; -class Mudela_score; -class Mudela_staff; -class Mudela_voice; -class Mudela_column; +class Lilypond_stream; +class Lilypond_item; +class Lilypond_key; +class Lilypond_time_signature; +class Lilypond_note; +class Lilypond_tempo; +class Lilypond_text; +class Lilypond_score; +class Lilypond_staff; +class Lilypond_voice; +class Lilypond_column; #endif // MIDI2LY_PROTO_HH diff --git a/midi2ly/include/mudela-column.hh b/midi2ly/include/mudela-column.hh index ca682b29e4..e69de29bb2 100644 --- a/midi2ly/include/mudela-column.hh +++ b/midi2ly/include/mudela-column.hh @@ -1,29 +0,0 @@ -// -// mudela-column.hh -- declare Mudela_column -// -// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> - -#ifndef MUDELA_COLUMN_HH -#define MUDELA_COLUMN_HH - -#include "flower-proto.hh" -#include "midi2ly-proto.hh" -#include "rational.hh" -#include "cons.hh" - -/// (mudela_column) -class Mudela_column -{ -public: - Mudela_column (Mudela_score* mudela_score_l, Rational mom); - - void add_item (Mudela_item* mudela_item_l); - Rational at_mom (); - - Cons_list<Mudela_item> mudela_item_l_list_; - Rational at_mom_; - Mudela_score* mudela_score_l_; -}; - -#endif // MUDELA_COLUMN_HH - diff --git a/midi2ly/include/mudela-item.hh b/midi2ly/include/mudela-item.hh index 02c726b317..e69de29bb2 100644 --- a/midi2ly/include/mudela-item.hh +++ b/midi2ly/include/mudela-item.hh @@ -1,130 +0,0 @@ -// -// mudela-item.hh -- declare mudela_item -// -// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> - -#ifndef MUDELA_ITEM_HH -#define MUDELA_ITEM_HH - -#include "midi2ly-proto.hh" -#include "string.hh" -#include "rational.hh" -#include "duration.hh" - -// should these: -// * be Mudela_items -// * be Voice_elements/requests -// * get a name-change -// ? - -/// (mudela_item) -class Mudela_item -{ -public: - Mudela_item (Mudela_column* mudela_column_l); - virtual ~Mudela_item (); - - virtual Rational at_mom (); - virtual Rational duration_mom (); - void output (Mudela_stream& mudela_stream_r); - virtual String str () = 0; - - Mudela_column* mudela_column_l_; -}; - -class Mudela_key : public Mudela_item -{ -public: - Mudela_key (int accidentals_i, int minor_i); - - String notename_str (int pitch_i); - virtual String str (); - - //private: - int accidentals_i_; - int minor_i_; -}; - -class Mudela_time_signature : public Mudela_item -{ -public: - Mudela_time_signature (int num_i, int den_i, int division_4_i, int count_32_i); - - Duration i2_dur (int time_i, int division_1_i); - int clocks_1_i (); - int den_i (); - int num_i (); - virtual String str (); - Rational bar_mom (); - -private: - Real sync_f_; - Duration sync_dur_; - int clocks_1_i_; - int num_i_; - int den_i_; -}; - -class Mudela_note : public Mudela_item -{ -public: - Mudela_note (Mudela_column* mudela_column_l, int channel_i, int pitch_i, int dyn_i); - - Duration duration (); - virtual Rational duration_mom (); - virtual String str (); - - // int const c0_pitch_i_c_ = 60; // huh? - static int const c0_pitch_i_c_ = 48; - - static bool const simple_plet_b_s = false; - int channel_i_; - int pitch_i_; - Mudela_column* end_column_l_; -}; - -class Mudela_skip : public Mudela_item -{ -public: - Mudela_skip (Mudela_column* mudela_column_l, Rational skip_mom); - - Duration duration (); - virtual Rational duration_mom (); - virtual String str (); - -private: - Rational mom_; -}; - - -class Mudela_tempo : public Mudela_item -{ -public: - Mudela_tempo (int useconds_per_4_i); - - int get_tempo_i (Rational rational); - virtual String str (); - int useconds_per_4_i (); - -private: - int useconds_per_4_i_; - Rational seconds_per_1_mom_; -}; - -class Mudela_text : public Mudela_item -{ -public: - enum Type { - TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, - MARKER, CUE_POINT - }; - Mudela_text (Mudela_text::Type type, String str); - virtual String str (); - - //private: - Type type_; - String text_str_; -}; - -#endif // MUDELA_ITEM_HH - diff --git a/midi2ly/include/mudela-score.hh b/midi2ly/include/mudela-score.hh index 27162e4938..e69de29bb2 100644 --- a/midi2ly/include/mudela-score.hh +++ b/midi2ly/include/mudela-score.hh @@ -1,51 +0,0 @@ -// -// mudela-score.hh -- declare Mudela_score -// -// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> - -#ifndef MUDELA_SCORE_HH -#define MUDELA_SCORE_HH - -#include "midi2ly-proto.hh" -#include "flower-proto.hh" -#include "cons.hh" -#include "parray.hh" - -/// (mudela_score) -class Mudela_score { -public: - Mudela_score (int format_i, int tracks_i, int tempo_i); - ~Mudela_score (); - - void add_item (Mudela_item* mudela_item_p); - void add_staff (Mudela_staff* mudela_staff_p); - - Mudela_column* find_column_l (Rational mom); - Mudela_column* get_column_l (Rational mom); - - void output (String filename_str); - void process (); - - // ugh - Mudela_key* mudela_key_l_; - Mudela_time_signature* mudela_time_signature_l_; - Mudela_tempo* mudela_tempo_l_; - Mudela_staff * last_staff_l_; -private: - void filter_tempo (); - void quantify_columns (); - void quantify_durations (); - void settle_columns (); - - Cons_list<Mudela_staff> mudela_staff_p_list_; - Link_array<Mudela_column> column_l_array_; - - // ugh, ugh, ugh -public: - int format_i_; - int tracks_i_; - int tempo_i_; -}; - -#endif // MUDELA_SCORE_HH - diff --git a/midi2ly/include/mudela-staff.hh b/midi2ly/include/mudela-staff.hh index 38be04823c..e69de29bb2 100644 --- a/midi2ly/include/mudela-staff.hh +++ b/midi2ly/include/mudela-staff.hh @@ -1,43 +0,0 @@ -// -// mudela-staff.hh -- declare mudela_staff -// -// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> - -#ifndef MUDELA_STAFF_HH -#define MUDELA_STAFF_HH - -#include "midi2ly-proto.hh" -#include "flower-proto.hh" -#include "cons.hh" -#include "string.hh" - -/// (mudela_staff) -class Mudela_staff -{ -public: - Mudela_staff (int number_i, String copyright_str, String track_name_str, String instrument_str); - - void add_item (Mudela_item* mudela_item_p); - void eat_voice (Cons_list<Mudela_item>& items); - String id_str (); - String name_str (); - void output (Mudela_stream& mudela_stream_r); - void process (); - - String copyright_str_; - String instrument_str_; - String name_str_; - Mudela_key* mudela_key_l_; - Mudela_time_signature* mudela_time_signature_l_; - Mudela_tempo* mudela_tempo_l_; - int number_i_; - -private: - void output_mudela_begin_bar (Mudela_stream& mudela_stream_r, Rational now_mom, int bar_i); - - Cons_list<Mudela_voice> mudela_voice_p_list_; - Cons_list<Mudela_item> mudela_item_p_list_; -}; - -#endif // MUDELA_STAFF_HH - diff --git a/midi2ly/include/mudela-stream.hh b/midi2ly/include/mudela-stream.hh index 04ddbd86e9..e69de29bb2 100644 --- a/midi2ly/include/mudela-stream.hh +++ b/midi2ly/include/mudela-stream.hh @@ -1,42 +0,0 @@ -// -// mudela-stream.hh -- part of LilyPond -// -// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> - -// should i be named Mudela_stream? - -#ifndef MUDELA_STREAM_HH -#define MUDELA_STREAM_HH - -#include "midi2ly-proto.hh" -#include "string.hh" -//#include "scalar.hh" - -/// Lily output -class Mudela_stream { -public: - Mudela_stream (String filename_str); - ~Mudela_stream(); - - Mudela_stream& operator << (char c); - Mudela_stream& operator << (String s); - Mudela_stream& operator << (Mudela_item& mudela_item_r); - -private: - void handle_pending_indent(); - void header(); - void open(); - void output (String str); - void output_wrapped (String str); - - ostream* os_p_; - String filename_str_; - int indent_i_; - int column_i_; - int pending_indent_i_; - int wrap_column_i_; - bool comment_mode_b_; -}; - -#endif // MUDELA_STREAM_HH - diff --git a/midi2ly/include/mudela-voice.hh b/midi2ly/include/mudela-voice.hh index a3fff8bdc5..e69de29bb2 100644 --- a/midi2ly/include/mudela-voice.hh +++ b/midi2ly/include/mudela-voice.hh @@ -1,29 +0,0 @@ -// -// mudela-voice.hh -- declare Mudela_voice -// -// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> - -#ifndef MUDELA_VOICE_HH -#define MUDELA_VOICE_HH - -#include "midi2ly-proto.hh" -#include "cons.hh" - -/// (mudela_voice) -class Mudela_voice -{ -public: - Mudela_voice (Mudela_staff* mudela_staff_l); - void add_item (Mudela_item* mudela_item_l); - void output (Mudela_stream& mudela_stream_r); - String get_clef () const; - Mudela_item * last_item_l_; - Mudela_note * last_note_l_; -private: - Mudela_staff* mudela_staff_l_; - Cons_list<Mudela_item> mudela_item_l_list_; - -}; - -#endif // MUDELA_VOICE_HH - diff --git a/midi2ly/lilypond-column.cc b/midi2ly/lilypond-column.cc new file mode 100644 index 0000000000..136f10a06d --- /dev/null +++ b/midi2ly/lilypond-column.cc @@ -0,0 +1,24 @@ +// +// lilypond-column.cc -- implement Lilypond_column +// +// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> + +#include "lilypond-column.hh" + +Lilypond_column::Lilypond_column (Lilypond_score* lilypond_score_l, Rational mom) +{ + lilypond_score_l_ = lilypond_score_l; + at_mom_ = mom; +} + +void +Lilypond_column::add_item (Lilypond_item* lilypond_item_l) +{ + lilypond_item_l_list_.append (new Cons<Lilypond_item> (lilypond_item_l, 0)); +} + +Rational +Lilypond_column::at_mom() +{ + return at_mom_; +} diff --git a/midi2ly/lilypond-item.cc b/midi2ly/lilypond-item.cc new file mode 100644 index 0000000000..2f70f5d4be --- /dev/null +++ b/midi2ly/lilypond-item.cc @@ -0,0 +1,364 @@ +// +// lilypond-item.cc -- implement Lilypond_item +// +// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> + +#include <string.h> +#include <assert.h> +#include "midi2ly-global.hh" +#include "string-convert.hh" +#include "duration-convert.hh" +#include "lilypond-column.hh" +#include "lilypond-item.hh" +#include "lilypond-stream.hh" +#include "lilypond-score.hh" + +Lilypond_item::Lilypond_item (Lilypond_column* lilypond_column_l) +{ + lilypond_column_l_ = lilypond_column_l; +} + +Lilypond_item::~Lilypond_item () +{ +} + +Rational +Lilypond_item::at_mom () +{ + return lilypond_column_l_->at_mom (); +} + +Rational +Lilypond_item::duration_mom () +{ + return Rational (0); +} + +void +Lilypond_item::output (Lilypond_stream& lilypond_stream_r) +{ + lilypond_stream_r << str () << " "; +} + +Lilypond_key::Lilypond_key (int accidentals_i, int minor_i) + : Lilypond_item (0) +{ + accidentals_i_ = accidentals_i; + minor_i_ = minor_i; +} + +char const *accname[] = {"eses", "es", "", "is" , "isis"}; + +String +Lilypond_key::str () +{ + int key_i = accidentals_i_ >= 0 + ? ((accidentals_i_ % 7) ["cgdaebf"] - 'a' - 2 -2 * minor_i_ + 7) % 7 + : ((-accidentals_i_ % 7) ["cfbeadg"] - 'a' - 2 -2 * minor_i_ + 7) % 7; + + String notename_str = !minor_i_ + ? to_str ((char) ((key_i + 2) % 7 + 'a')) + : to_str ((char) ((key_i + 2) % 7 + 'a')); + + // fis cis gis dis ais eis bis + static int sharps_i_a [7] = { 2, 4, 6, 1, 3, 5, 7 }; + // bes es as des ges ces fes + static int flats_i_a [7] = { 6, 4, 2, 7, 5, 3, 1 }; + int accidentals_i = accidentals_i_ >= 0 + ? sharps_i_a [key_i] <= accidentals_i_ ? 1 : 0 + : flats_i_a [key_i] <= -accidentals_i_ ? -1 : 0; + + if (accidentals_i) + notename_str += String (accname [accidentals_i + 2]); + + return "\\key " + notename_str + (minor_i_ ? "\\minor" : "\\major") + ";\n"; +} + +String +Lilypond_key::notename_str (int pitch_i) +{ + // this may seem very smart, + // but it-s only an excuse not to read a notename table + + // major scale: do-do + // minor scale: la-la (= + 5) + static int notename_i_a [12] = { 0, 0, 1, 1, 2, 3, 3, 4, 4, 5, 5, 6 }; + int notename_i = notename_i_a [pitch_i % 12]; + + static int accidentals_i_a [12] = { 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0 }; + int accidental_i = accidentals_i_a [(minor_i_ * 5 + pitch_i) % 12]; + if (accidental_i && (accidentals_i_ < 0)) + { + accidental_i *= -1; + notename_i = (notename_i + 1) % 7; + } + + String notename_str = to_str ((char)(((notename_i + 2) % 7) + 'a')); + if (accidental_i) + notename_str += String (accname [accidental_i + 2]); + + /* + By tradition, all scales now consist of a sequence of 7 notes each + with a distinct name, from amongst a b c d e f g. But, minor scales + have a wide second interval at the top - the 'leading note' is + sharped. (Why? it just works that way! Anything else doesn't sound as + good and isn't as flexible at saying things. In medieval times, + scales only had 6 notes to avoid this problem - the hexachords.) + + So, the d minor scale is d e f g a b-flat c-sharp d - using d-flat + for the leading note would skip the name c and duplicate the name d. + Why isn't c-sharp put in the key signature? Tradition. (It's also + supposedly based on the Pythagorean theory of the cycle of fifths, + but that really only applies to major scales...) + + Anyway, g minor is g a b-flat c d e-flat f-sharp g, and all the other + flat minor keys end up with a natural leading note. And there you + have it. + + John Sankey <bf250@freenet.carleton.ca> + + Let's also do a-minor: a b c d e f gis a + + --jcn + + */ + + /* ok, bit ugly, but here we go -- jcn */ + + + if (minor_i_) + { + if ((accidentals_i_ == 0) && (notename_str == "as")) + notename_str = "gis"; + else if ((accidentals_i_ == -1) && (notename_str == "des")) + notename_str = "cis"; + else if ((accidentals_i_ == -2) && (notename_str == "ges")) + notename_str = "fis"; + else if ((accidentals_i_ == 5) && (notename_str == "g")) + notename_str = "fisis"; + else if ((accidentals_i_ == 6) && (notename_str == "d")) + notename_str = "cisis"; + else if ((accidentals_i_ == 7) && (notename_str == "a")) + notename_str = "gisis"; + + if ((accidentals_i_ <= -6) && (notename_str == "b")) + notename_str = "ces"; + if ((accidentals_i_ <= -7) && (notename_str == "e")) + notename_str = "fes"; + } + + String de_octavate_str = to_str (',', (Lilypond_note::c0_pitch_i_c_ + 11 - pitch_i) / 12); + String octavate_str = to_str ('\'', (pitch_i - Lilypond_note::c0_pitch_i_c_) / 12); + return notename_str +de_octavate_str + octavate_str; +} + +Lilypond_time_signature::Lilypond_time_signature (int num_i, int den_i, int clocks_4_i, int count_32_i) + : Lilypond_item (0) +{ + sync_dur_.durlog_i_ = 3; + sync_f_ = 1.0; + if (count_32_i != 8) + warning (_f ("#32 in quarter: %d", count_32_i)); + num_i_ = num_i; + den_i_ = den_i; + clocks_1_i_ = clocks_4_i * 4; +} + +Rational +Lilypond_time_signature::bar_mom () +{ + Duration d; + d.durlog_i_ = den_i_; + return Rational (num_i_) * Duration_convert::dur2_mom (d); +} + +int +Lilypond_time_signature::clocks_1_i () +{ + return clocks_1_i_; +} + +int +Lilypond_time_signature::den_i () +{ + return den_i_; +} + +int +Lilypond_time_signature::num_i () +{ + return num_i_; +} + +String +Lilypond_time_signature::str () +{ + String str = "\\time " + + to_str (num_i_) + "/" + to_str (1 << den_i_) + + ";\n"; + return str; +} + + +// statics Lilypond_note +/* + this switch can be used to write simple plets like + c4*2/3 + as + \plet 2/3; c4 \plet 1/1; + */ +/* + UGH: .hh says false, .cc says true. + FIXME. + */ +bool const Lilypond_note::simple_plet_b_s; + +Lilypond_note::Lilypond_note (Lilypond_column* lilypond_column_l, + int channel_i, int pitch_i, int dyn_i) + : Lilypond_item (lilypond_column_l) +{ + // junk dynamics + (void)dyn_i; + channel_i_ = channel_i; + pitch_i_ = pitch_i; + end_column_l_ = 0; +} + +Duration +Lilypond_note::duration () +{ + assert (end_column_l_); + Rational mom = end_column_l_->at_mom () - at_mom (); + return Duration_convert::mom2_dur (mom); +} + +Rational +Lilypond_note::duration_mom () +{ + assert (end_column_l_); + return end_column_l_->at_mom () - at_mom (); +} + +String +Lilypond_note::str () +{ + Duration dur = duration (); + if (dur.durlog_i_ < -10) + return ""; + + String name_str + = lilypond_column_l_->lilypond_score_l_->lilypond_key_l_->notename_str (pitch_i_); + + if (simple_plet_b_s) + return name_str + Duration_convert::dur2_str (dur) + " "; + + String str; + + //ugh + if (dur.plet_b ()) + str += String ("\\times ") + + String_convert::i2dec_str (dur.plet_.iso_i_, 0, 0) + + "/" + + String_convert::i2dec_str (dur.plet_.type_i_, 0, 0) + + " { "; + + + str += name_str; + + Duration tmp = dur; + tmp.set_plet (1,1); + str += Duration_convert::dur2_str (tmp); + + if (dur.plet_b ()) + str += String (" }"); + + /* + note of zero duration is nonsense, + but let's output anyway for convenient debugging + */ + if (!duration_mom ()) + return String ("\n% ") + str + "\n"; + + return str + " "; +} + +Lilypond_skip::Lilypond_skip (Lilypond_column* lilypond_column_l, Rational skip_mom) + : Lilypond_item (lilypond_column_l) +{ + mom_ = skip_mom; +} + +Duration +Lilypond_skip::duration () +{ + return Duration_convert::mom2_dur (mom_); +} + +Rational +Lilypond_skip::duration_mom () +{ + return Duration_convert::dur2_mom (duration ()); +} + +String +Lilypond_skip::str () +{ + if (!mom_) + return String (""); + + Duration dur = duration (); + if (dur.durlog_i_<-10) + return ""; + + String str = "\\skip "; + str += Duration_convert::dur2_str (dur) + "; "; + + return str; +} + +Lilypond_tempo::Lilypond_tempo (int useconds_per_4_i) + : Lilypond_item (0) +{ + useconds_per_4_i_ = useconds_per_4_i; + seconds_per_1_mom_ = Rational(useconds_per_4_i_ *4, 1e6); +} + +String +Lilypond_tempo::str () +{ + String str = "\\tempo 4="; + str += to_str (get_tempo_i (Rational (1, 4))); + str += ";\n"; + return str; +} + +int +Lilypond_tempo::useconds_per_4_i () +{ + return useconds_per_4_i_; +} + +int +Lilypond_tempo::get_tempo_i (Rational rational) +{ + Rational m1 = Rational (60) / rational; + Rational m2 = seconds_per_1_mom_; + return m1 / m2; +} + +Lilypond_text::Lilypond_text (Lilypond_text::Type type, String text_str) + : Lilypond_item (0) +{ + type_ = type; + text_str_ = text_str; +} + +String +Lilypond_text::str () +{ + if (!text_str_.length_i () + || (text_str_.length_i () != (int)strlen (text_str_.ch_C ()))) + return ""; + + return "% " + text_str_ + "\n"; +} diff --git a/midi2ly/lilypond-score.cc b/midi2ly/lilypond-score.cc new file mode 100644 index 0000000000..066f09d704 --- /dev/null +++ b/midi2ly/lilypond-score.cc @@ -0,0 +1,256 @@ +// +// lilypond-score.cc -- implement Lilypond_score +// +// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> + +#include <assert.h> +#include "rational.hh" +#include "duration.hh" +#include "duration-convert.hh" +#include "midi2ly-global.hh" +#include "lilypond-column.hh" +#include "lilypond-item.hh" +#include "lilypond-score.hh" +#include "lilypond-staff.hh" +#include "lilypond-stream.hh" + +#include "killing-cons.tcc" + +//static Lilypond_key key_c (0, 0); +static Lilypond_time_signature time_sig_4 (4, 2, 24, 8); +// useconds per 4: 250000 === 60 4 per minute +static Lilypond_tempo tempo_60 (1000000); + +Lilypond_score::Lilypond_score (int format_i, int tracks_i, int tempo_i) +{ + last_staff_l_ =0; + format_i_ = format_i; + tracks_i_ = tracks_i; + tempo_i_ = tempo_i; + column_l_array_.push (new Lilypond_column (this, Rational (0))); + // lilypond_key_l_ = &key_c; + lilypond_key_l_ = 0; + lilypond_time_signature_l_ = &time_sig_4; + lilypond_tempo_l_ = &tempo_60; +} + +Lilypond_score::~Lilypond_score () +{ +} + +void +Lilypond_score::add_item (Lilypond_item* lilypond_item_p) +{ + last_staff_l_->add_item (lilypond_item_p); +} + +void +Lilypond_score::add_staff (Lilypond_staff* lilypond_staff_p) +{ + lilypond_staff_p_list_.append (new Killing_cons<Lilypond_staff> (lilypond_staff_p, 0)); + last_staff_l_ = lilypond_staff_p; +} + +Lilypond_column* +Lilypond_score::find_column_l (Rational mom) +{ + int upper_i = max (0, column_l_array_.size () - 1); + int lower_i = 0; + int i = 0; //upper_i; + while (1) + { + Rational i_mom = column_l_array_ [i]->at_mom (); + if (i_mom == mom) + return column_l_array_ [i]; + if (mom < i_mom) + upper_i = i; + else + lower_i = i; + if ( (upper_i == lower_i) || (i == column_l_array_.size () - 1)) + { + // we don't do inserts + assert (0); + Lilypond_column* col_p = new Lilypond_column (this, mom); + column_l_array_.push (col_p); + return col_p; + } + i = (upper_i + lower_i + 1 ) / 2; + } + assert (0); + return 0; +} + +Lilypond_column* +Lilypond_score::get_column_l (Rational mom) +{ + int i; + Lilypond_column *c=0; + for (i=column_l_array_.size () - 1; !c && i >=0; i--) + { + if (column_l_array_ [i]->at_mom () == mom ) + c = column_l_array_[i]; + else if (column_l_array_[i]->at_mom () < mom) + break; + } + if (!c) + { + c = new Lilypond_column (this, mom); + column_l_array_.insert (c, i+1); + } + + assert (c->at_mom () == mom); + return c; +} + +void +Lilypond_score::output (String filename_str) +{ + LOGOUT (NORMAL_ver) << _f ("Lily output to %s...", filename_str) << endl; + + // ugh, ugly midi type 1 fix + if ( (lilypond_staff_p_list_.size_i () == 1) + && !lilypond_staff_p_list_.head_->car_->number_i_) + lilypond_staff_p_list_.head_->car_->number_i_ = 1; + + int track_i = 0; + Lilypond_stream lilypond_stream (filename_str); + for (Cons<Lilypond_staff>* i = lilypond_staff_p_list_.head_; i; i = i->next_) + { + LOGOUT (NORMAL_ver) << _f ("track %d:", track_i++) << flush; + i->car_->output (lilypond_stream); + lilypond_stream << '\n'; + LOGOUT (NORMAL_ver) << endl; + } + + lilypond_stream << "\\score{\n"; + if (lilypond_staff_p_list_.size_i () > 1) + lilypond_stream << "< \n"; + for (Cons<Lilypond_staff>* i = lilypond_staff_p_list_.head_; i; i = i->next_) + { + if ( (lilypond_staff_p_list_.size_i () != 1) + && (i->car_ == lilypond_staff_p_list_.head_->car_)) + continue; + lilypond_stream << "\\context Staff = \"" << i->car_->id_str () << "\" "; + lilypond_stream << String ("\\" + i->car_->id_str ()) << '\n'; + } + if (lilypond_staff_p_list_.size_i () > 1) + lilypond_stream << ">\n"; + + lilypond_stream << "\\paper{}\n"; + +#if 1 + lilypond_stream << "\\midi{\n"; + + // let's not use silly 0 track + last_cons (lilypond_staff_p_list_.head_)->car_->lilypond_tempo_l_->output (lilypond_stream); + lilypond_stream << "}\n"; +#endif + + lilypond_stream << "}\n"; +} + +void +Lilypond_score::process () +{ + LOGOUT (NORMAL_ver) << '\n' << _ ("Processing...") << endl; + + LOGOUT (DEBUG_ver) << "columns\n"; + + settle_columns (); + filter_tempo (); + quantify_columns (); + quantify_durations (); + + LOGOUT (NORMAL_ver) << '\n' << _ ("Creating voices...") << endl; + int track_i = 0; + for (Cons<Lilypond_staff>* i = lilypond_staff_p_list_.head_; i; i = i->next_) + { + LOGOUT (NORMAL_ver) << _ ("track ") << track_i++ << ": " << flush; + i->car_->process (); + LOGOUT (NORMAL_ver) << endl; + } +} + +void +Lilypond_score::filter_tempo () +{ + LOGOUT (NORMAL_ver) << '\n' << _ ("NOT Filtering tempo...") << endl; +} + +void +Lilypond_score::quantify_columns () +{ + // ugh + if (Duration_convert::no_quantify_b_s) + { + LOGOUT (NORMAL_ver) << '\n' << _ ("NOT Quantifying columns...") << endl; + return; + } + + LOGOUT (NORMAL_ver) << '\n' << _ ("Quantifying columns...") << endl; + + int current_bar_i = 0; + Rational bar_mom = lilypond_time_signature_l_->bar_mom (); + + int n = 5 >? Duration_convert::no_smaller_than_i_s; + n = Duration_convert::type2_i (n); + Rational s = Rational (1, n); + for (int i = 0; i < column_l_array_.size (); i++) + { + column_l_array_ [i]->at_mom_ = + s * Rational ( (int) ( (column_l_array_ [i]->at_mom ()) / s)); + + int bar_i = (int) (column_l_array_ [i]->at_mom () / bar_mom) + 1; + if (bar_i > current_bar_i) + + { + LOGOUT (NORMAL_ver) << "[" << bar_i << "]" << flush; + current_bar_i = bar_i; + } + } + LOGOUT (NORMAL_ver) << endl; +} + +void +Lilypond_score::quantify_durations () +{ + +} + +void +Lilypond_score::settle_columns () +{ + LOGOUT (NORMAL_ver) << '\n' << _ ("Settling columns...") << endl; + + int n = column_l_array_.size (); + + int start_i = 0; + int end_i = 0; + Rational start_mom = 0; + + Duration smallest_dur; + smallest_dur.durlog_i_ = 6; + Rational const noise_mom = Duration_convert::dur2_mom (smallest_dur) + / Rational (2); + for (int i = 0; i < n; i++) + { + if (!start_i) + { + start_i = end_i = i; + start_mom = column_l_array_ [i]->at_mom (); + continue; + } + + // find all columns within noise's distance + while ( (i < n) + && (column_l_array_ [i]->at_mom () - start_mom < noise_mom)) + end_i = ++i; + + // bluntly set all to time of first in group + for (int j = start_i; j < end_i; j++) + column_l_array_ [j]->at_mom_ = start_mom; + + start_i = end_i = 0; + } +} + diff --git a/midi2ly/lilypond-staff.cc b/midi2ly/lilypond-staff.cc new file mode 100644 index 0000000000..0e79b7f4e2 --- /dev/null +++ b/midi2ly/lilypond-staff.cc @@ -0,0 +1,339 @@ +// +// lilypond-staff.cc -- implement Lilypond_staff +// +// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> + +#include <assert.h> +#include <ctype.h> +#include "rational.hh" +#include "duration-convert.hh" +#include "string-convert.hh" +#include "midi2ly-proto.hh" +#include "midi2ly-global.hh" +#include "lilypond-column.hh" +#include "lilypond-item.hh" +#include "lilypond-staff.hh" +#include "lilypond-stream.hh" +#include "lilypond-voice.hh" +#include "lilypond-score.hh" + +#include "killing-cons.tcc" + +extern Lilypond_score* lilypond_score_l_g; + +Lilypond_staff::Lilypond_staff (int number_i, String copyright_str, String track_name_str, String instrument_str) +{ + number_i_ = number_i; + copyright_str_ = copyright_str; + instrument_str_ = instrument_str; + name_str_ = track_name_str; + lilypond_key_l_ = 0; + lilypond_time_signature_l_ = 0; + lilypond_tempo_l_ = 0; +} + +void +Lilypond_staff::add_item (Lilypond_item* lilypond_item_p) +{ + lilypond_item_p_list_.append (new Killing_cons <Lilypond_item> (lilypond_item_p, 0)); + if (lilypond_item_p->lilypond_column_l_) + lilypond_item_p->lilypond_column_l_->add_item (lilypond_item_p); +} +/** + Walk ITEMS and find voices. Remove categorised items. + + TODO: + + * collect all channels into separate voices. Use chords for sim + notes on same channel. + * assume voices/assume chords modes. + + */ +void +Lilypond_staff::eat_voice (Cons_list<Lilypond_item>& items) +{ + Lilypond_voice* voice_p = new Lilypond_voice (this); + lilypond_voice_p_list_.append (new Killing_cons<Lilypond_voice> (voice_p, 0)); + + // Rational mom = items.top ()->at_mom (); + Rational mom = 0; + + for (Cons<Lilypond_item>** pp = &items.head_; *pp;) + { + Cons<Lilypond_item>* i = *pp; + if (i->car_->at_mom () > mom) + { + if (no_rests_b_g && voice_p->last_note_l_) + { + voice_p->last_note_l_->end_column_l_ = i->car_->lilypond_column_l_; + } + else + { + /* uh, what about quantisation? This should probably + use mom2standardised_dur () + arg, urg: skip should get duration from start/end columns! + */ + + Rational r = i->car_->at_mom () - mom; + // ugh, need score + Lilypond_column* start = lilypond_score_l_g->find_column_l (mom); + voice_p->add_item (new Lilypond_skip (start, r)); + } + + mom = i->car_->at_mom (); + continue; // unnecessary + } + + Link_array<Lilypond_item> now_items; + for (Cons<Lilypond_item> *cp = i; cp && cp->car_->at_mom () == mom; cp = cp->next_) + now_items.push (i->car_); + +#if 0 + /* + Why don't we use <note>, if voice has: + + <note> <key-change> + + we'd get last_item == key_change -> last_note == 0; + */ + Lilypond_note * last_note = dynamic_cast<Lilypond_note*> (voice_p->last_item_l_); +#else + /* + Not sure, is this better? + */ + Lilypond_note * last_note = voice_p->last_note_l_; +#endif + + Link_array<Lilypond_item> candidates; + + for (int i=0; last_note && i < now_items.size (); i++) + { + Lilypond_note * now_note = dynamic_cast<Lilypond_note*> (now_items[i]); + if (now_note && last_note->channel_i_ != now_note->channel_i_) + candidates.push (now_note); + } + + if (candidates.size()) + { + now_items = candidates; + } + + Lilypond_item * which = 0; + if (now_items.size () > 1) + { + int mindiff = 100000; // ugh + for (int i=0; last_note && i < now_items.size (); i++) + { + Lilypond_note *nt = dynamic_cast<Lilypond_note*> (now_items[i]); + if (!nt) + continue; + int diff = abs (last_note->pitch_i_ - nt->pitch_i_ ); + if(diff < mindiff) + { + mindiff = diff; + which = now_items [i]; + } + } + + if (which && mindiff > 18) // more than 1.5 octaves apart. Don't put in same voice. + { + which =0; + } + } + else if (now_items.size () == 1) + which = now_items[0]; + + if (which) + { + while ((*pp)->car_ != which) + pp = &(*pp)->next_; + + mom += (*pp)->car_->duration_mom (); + Cons<Lilypond_item>* c = items.remove_cons (pp); + voice_p->add_item (c->car_); + delete c; + } + else + { + pp = &(*pp)->next_; + continue; + } + } +} + +String +Lilypond_staff::id_str () +{ + String id (name_str ()); + char *cp = id.ch_l (); + char *end = cp + id.length_i (); + for (;cp < end; cp++) + { + if (!isalpha (*cp)) + { + *cp = 'X'; + } + } + return id; +} + +String +Lilypond_staff::name_str () +{ + if (name_str_.length_i ()) + return name_str_; + return String ("track") + to_str (char ('A' - 1 + number_i_)); +} + + + +void +Lilypond_staff::output (Lilypond_stream& lilypond_stream_r) +{ + int c =0; + + String trackbody = ""; + for (Cons<Lilypond_voice>* i = lilypond_voice_p_list_.head_; i; i = i->next_) + { + String voicename = id_str () + "voice" + to_str (char (c + 'A')); + + lilypond_stream_r << voicename << " = \\notes "; + + trackbody += "\\" + voicename + "\n"; + + lilypond_stream_r << '\n'; + i->car_->output (lilypond_stream_r); + c++; + } + + lilypond_stream_r << _ ("% MIDI copyright:") << copyright_str_ << '\n'; + lilypond_stream_r << _ ("% MIDI instrument:") << instrument_str_ << '\n'; + lilypond_stream_r << id_str () << " = "; + lilypond_stream_r << "<\n " << trackbody << " >\n"; + + lilypond_stream_r << " % " << name_str () << '\n'; +} + +void +Lilypond_staff::output_lilypond_begin_bar (Lilypond_stream& lilypond_stream_r, Rational now_mom, int bar_i) +{ + Rational bar_mom = lilypond_time_signature_l_->bar_mom (); + Rational into_bar_mom = now_mom - Rational (bar_i - 1) * bar_mom; + if (bar_i > 1) + { + if (!into_bar_mom) + lilypond_stream_r << "|\n"; + } + lilypond_stream_r << "% " << String_convert::i2dec_str (bar_i, 0, ' '); + if (into_bar_mom) + lilypond_stream_r << ":" << Duration_convert::dur2_str (Duration_convert::mom2_dur (into_bar_mom)); + lilypond_stream_r << '\n'; +} + + +#if 0 // not used for now +void +Lilypond_staff::output_lilypond_rest (Lilypond_stream& lilypond_stream_r, Rational begin_mom, Rational end_mom) +{ + Rational bar_mom = lilypond_time_signature_l_->bar_mom (); + Rational now_mom = begin_mom; + + int begin_bar_i = (int) (now_mom / bar_mom) + 1; + int end_bar_i = (int) (end_mom / bar_mom) + 1; + + if (end_bar_i == begin_bar_i) + { + output_lilypond_rest_remain (lilypond_stream_r, end_mom - begin_mom); + return; + } + + // multiple bars involved + int bar_i = (int) (now_mom / bar_mom) + 1; + + //fill current bar + Rational begin_bar_mom = Rational (begin_bar_i - 1) * bar_mom; + if (now_mom > begin_bar_mom) + { + int next_bar_i = (int) (now_mom / bar_mom) + 2; + Rational next_bar_mom = Rational (next_bar_i - 1) * bar_mom; + assert (next_bar_mom <= end_mom); + + Rational remain_mom = next_bar_mom - now_mom; + if (remain_mom > Rational (0)) + { + output_lilypond_rest_remain (lilypond_stream_r, remain_mom); + now_mom += remain_mom; + } + + bar_i = check_end_bar_i (now_mom, bar_i); + } + + // fill whole bars + int count_i = end_bar_i - bar_i; + for (int i = 0; i < count_i; i++) + { + int begin_bar_i = check_begin_bar_i (now_mom, bar_i); + if (begin_bar_i) + output_lilypond_begin_bar (lilypond_stream_r, now_mom, begin_bar_i); + lilypond_stream_r << "r1 "; + // *lilypond_stream_r.os_p_ << flush; + if (begin_bar_i) + LOGOUT (NORMAL_ver) << begin_bar_i << flush; + bar_i = check_end_bar_i (now_mom, bar_i); + now_mom += bar_mom; + } + + // use "int i" here, and gcc 2.7.2 hits internal compiler error + int ii = check_begin_bar_i (now_mom, bar_i); + if (ii) + output_lilypond_begin_bar (lilypond_stream_r, now_mom, ii); + + // bar_i = check_end_bar_i (now_mom, bar_i); + + Rational remain_mom = end_mom - Rational (end_bar_i - 1) * bar_mom; + if (remain_mom > Rational (0)) + { + output_lilypond_rest_remain (lilypond_stream_r, remain_mom); + now_mom += remain_mom; + } + assert (now_mom == end_mom); +} + +void +Lilypond_staff::output_lilypond_rest_remain (Lilypond_stream& lilypond_stream_r, Rational mom) +{ + if (Duration_convert::no_quantify_b_s) + { + Duration dur = Duration_convert::mom2_dur (mom); + lilypond_stream_r << "r" << dur.str () << " "; + // assert (mom == dur.mom ()); + assert (mom == dur.length ()); + return; + } + + Duration dur = Duration_convert::mom2standardised_dur (mom); + if (dur.type_i_>-10) + lilypond_stream_r << "r" << dur.str () << " "; +} +#endif + + +void +Lilypond_staff::process () +{ + /* + group items into voices + */ + + assert (lilypond_score_l_g); + lilypond_key_l_ = lilypond_score_l_g->lilypond_key_l_; + lilypond_time_signature_l_ = lilypond_score_l_g->lilypond_time_signature_l_; + lilypond_tempo_l_ = lilypond_score_l_g->lilypond_tempo_l_; + + Cons_list<Lilypond_item> items; + for (Cons<Lilypond_item>* i = lilypond_item_p_list_.head_; i; i = i->next_) + items.append (new Cons<Lilypond_item> (i->car_, 0)); + + while (items.size_i ()) + eat_voice (items); +} diff --git a/midi2ly/lilypond-stream.cc b/midi2ly/lilypond-stream.cc new file mode 100644 index 0000000000..f7ee15839b --- /dev/null +++ b/midi2ly/lilypond-stream.cc @@ -0,0 +1,192 @@ +// +// lilypond-stream.cc +// +// source file of the LilyPond music typesetter +// +// (c) 1997--1998, 1998 Jan Nieuwenhuizen <janneke@gnu.org> + +#include <assert.h> +#include <time.h> +#include <fstream.h> +#include "midi2ly-global.hh" +#include "lilypond-item.hh" +#include "lilypond-stream.hh" +#include "string-convert.hh" + +extern String filename_str_g; + +static int const INDENT_i = 8; + +Lilypond_stream::Lilypond_stream (String filename_str) +{ + filename_str_ = filename_str; + pending_indent_i_ = 0; + os_p_ = 0; + indent_i_ = 0; + comment_mode_b_ = false; + column_i_ = 0; + wrap_column_i_ = 68; + open(); + header(); +} + +Lilypond_stream::~Lilypond_stream () +{ + delete os_p_; + if (indent_i_) + warning (_f ("lily indent level: %d", indent_i_)); +} + +Lilypond_stream& +Lilypond_stream::operator << (char c) +{ + *this << to_str (c); + return *this; +} + +Lilypond_stream& +Lilypond_stream::operator << (String s) +{ + static String word_sep_str = "{} \t\n"; + while (s.length_i()) + { + int i = s.index_any_i (word_sep_str) + 1; + if (!i) + i = s.length_i(); + String word = s.left_str (i); + s = s.cut_str (i, s.length_i()); + output_wrapped (word); + } + return *this; +} + +Lilypond_stream& +Lilypond_stream::operator << (Lilypond_item& lilypond_item_r) +{ + lilypond_item_r.output (*this); + *os_p_ << flush; + return *this; +} + +void +Lilypond_stream::handle_pending_indent() +{ + *os_p_ << String_convert::char_str ('\t', pending_indent_i_); + column_i_ += pending_indent_i_ * INDENT_i; + pending_indent_i_ = 0; +} + +void +Lilypond_stream::header() +{ + /* Maybe better not to translate these? */ + *os_p_ << _ ("% Creator: "); + if (no_timestamps_b_g) + *os_p_ << "GNU LilyPond\n"; + else + *os_p_ << midi2ly_version_str() << '\n'; + *os_p_ << _ ("% Automatically generated"); + if (no_timestamps_b_g) + *os_p_ << ".\n"; + else + { + *os_p_ << _ (", at "); + time_t t (time (0)); + *os_p_ << ctime (&t) << "%\n"; + } + *os_p_ << _ ("% from input file: "); + // *os_p_ << midi_parser_l_g->filename_str_; + // ugh + *os_p_ << filename_str_g; + *os_p_ << "\n\n"; + // ugh + *os_p_ << "\\version \"1.3.76\";\n"; +} + +void +Lilypond_stream::open() +{ + os_p_ = new ofstream (filename_str_.ch_C ()); + if (!*os_p_) + error (_f ("can't open file: `%s'", filename_str_)); +} + +void +Lilypond_stream::output (String str) +{ + for (int i = 0; i < str.length_i(); i++) + { + char c = str[ i ]; + switch (c) + { + case '{' : + case '<' : + handle_pending_indent(); + if (column_i_ == indent_i_ * INDENT_i) + output ("\t"); + indent_i_++; + *os_p_ << c; + column_i_++; + break; + case '}' : + case '>' : + assert (indent_i_); + indent_i_--; + if (pending_indent_i_) + pending_indent_i_--; + handle_pending_indent(); + *os_p_ << c; + column_i_++; + break; + case '%' : + handle_pending_indent(); + comment_mode_b_ = true; + *os_p_ << c; + column_i_++; + break; + case '\t' : + handle_pending_indent(); + *os_p_ << c; + column_i_ += INDENT_i; + break; + case '\n' : + *os_p_ << endl; + pending_indent_i_ = indent_i_; + column_i_ = 0; + comment_mode_b_ = false; + break; + default : + handle_pending_indent(); + *os_p_ << c; + column_i_++; + break; + } + } +} + +void +Lilypond_stream::output_wrapped (String str) +{ + // enough room left -> doit + if (column_i_ + str.length_i() <= wrap_column_i_) + { + output (str); + return; + } + + // we're at BOL already; this will never fit -> doit + if (column_i_ == indent_i_ * INDENT_i) + { + output (str); + return; + } + + // ok, let's wrap + // preserve comment mode + if (comment_mode_b_) + output (String ("\n%")); + else + output (String ("\n")); + + output (str); +} diff --git a/midi2ly/lilypond-voice.cc b/midi2ly/lilypond-voice.cc new file mode 100644 index 0000000000..9595b93569 --- /dev/null +++ b/midi2ly/lilypond-voice.cc @@ -0,0 +1,105 @@ +// +// lilypond-voice.cc -- implement Lilypond_voice +// +// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> + +#include "string-convert.hh" +#include "midi2ly-global.hh" +#include "lilypond-column.hh" +#include "lilypond-item.hh" +#include "lilypond-staff.hh" +#include "lilypond-stream.hh" +#include "lilypond-voice.hh" +#include "lilypond-score.hh" + +extern Lilypond_score* lilypond_score_l_g; + +Lilypond_voice::Lilypond_voice (Lilypond_staff* lilypond_staff_l) +{ + lilypond_staff_l_ = lilypond_staff_l; + last_item_l_ =0; + last_note_l_ =0; +} + +void +Lilypond_voice::add_item (Lilypond_item* lilypond_item_l) +{ + last_item_l_ = lilypond_item_l; + if (Lilypond_note* n = dynamic_cast<Lilypond_note*> (lilypond_item_l)) + { + last_note_l_ = n; + } + lilypond_item_l_list_.append (new Cons<Lilypond_item> (lilypond_item_l, 0)); +} + +/** + analyse pitches to determine clef. + */ +String +Lilypond_voice::get_clef () const +{ + Lilypond_note * n =0; + + for (Cons<Lilypond_item> *cp = lilypond_item_l_list_.head_; !n && cp; cp = cp->next_) + { + n = dynamic_cast<Lilypond_note*> (cp->car_); + } + + if (!n) + return ""; + + int p = n->pitch_i_; + + if (p < 56) + return "\\clef \"bass\";\n"; + else if (p > 67) + return "\\clef \"treble\";\n"; + else + return ""; +} + +static int const FAIRLY_LONG_VOICE_i = 6; + +void +Lilypond_voice::output (Lilypond_stream& lilypond_stream_r) +{ + lilypond_stream_r << "{ "; + if (lilypond_item_l_list_.size_i () > FAIRLY_LONG_VOICE_i) + lilypond_stream_r << '\n'; + + + lilypond_stream_r << get_clef () << '\n'; + + int current_bar_i = 0; + Rational bar_mom = lilypond_staff_l_->lilypond_time_signature_l_->bar_mom (); + + for (Cons<Lilypond_item>* i = lilypond_item_l_list_.head_; i; i = i->next_) + { + Rational at_mom = i->car_->lilypond_column_l_->at_mom (); + int bar_i = (int) (at_mom / bar_mom) + 1; + if (bar_i > current_bar_i) + { + if (current_bar_i) + { + if (at_mom == Rational (bar_i - 1) * bar_mom) + lilypond_stream_r << "|"; + lilypond_stream_r << "\n% "; + lilypond_stream_r << String_convert::i2dec_str (bar_i, 0, ' '); + lilypond_stream_r << '\n'; + } + LOGOUT (NORMAL_ver) << "[" << bar_i << "]" << flush; + current_bar_i = bar_i; + } + + lilypond_stream_r << *i->car_; + if (Lilypond_key* k = dynamic_cast<Lilypond_key*> (i->car_)) + lilypond_staff_l_->lilypond_key_l_ = lilypond_score_l_g->lilypond_key_l_ = k; + } + + if (lilypond_item_l_list_.size_i () > FAIRLY_LONG_VOICE_i) + lilypond_stream_r << '\n'; + + lilypond_stream_r << "} "; +} + + diff --git a/midi2ly/main.cc b/midi2ly/main.cc index 38ce2703a6..d48b8739f0 100644 --- a/midi2ly/main.cc +++ b/midi2ly/main.cc @@ -16,8 +16,8 @@ #include "midi2ly-global.hh" #include "midi-score-parser.hh" -#include "mudela-item.hh" -#include "mudela-score.hh" +#include "lilypond-item.hh" +#include "lilypond-score.hh" #if HAVE_GETTEXT #include <libintl.h> @@ -28,7 +28,7 @@ String filename_str_g; // ugh -Mudela_score* mudela_score_l_g = 0; +Lilypond_score* lilypond_score_l_g = 0; bool no_timestamps_b_g = false; bool no_rests_b_g = false; @@ -113,7 +113,7 @@ usage() { cout << _f ("Usage: %s [OPTION]... [FILE]", "midi2ly"); cout << '\n'; - cout << _ ("Translate MIDI-file to mudela"); + cout << _ ("Translate MIDI-file to lilypond"); cout << '\n'; cout << '\n'; cout << _ ("Options:"); @@ -154,7 +154,7 @@ main (int argc_i, char* argv_sz_a[]) #endif bool key_override_b = false; - Mudela_key key (0, 0); + Lilypond_key key (0, 0); Getopt_long getopt_long (argc_i, argv_sz_a, long_option_init_a); @@ -254,15 +254,15 @@ main (int argc_i, char* argv_sz_a[]) show_settings (); filename_str_g = arg_sz; Midi_score_parser midi_parser; - Mudela_score* score_p = midi_parser.parse (arg_sz, &source); + Lilypond_score* score_p = midi_parser.parse (arg_sz, &source); if (!score_p) return 1; // if given on command line: override - if (key_override_b || !score_p->mudela_key_l_) - score_p->mudela_key_l_ = &key; - mudela_score_l_g = score_p; + if (key_override_b || !score_p->lilypond_key_l_) + score_p->lilypond_key_l_ = &key; + lilypond_score_l_g = score_p; score_p->process(); if (!output_str.length_i ()) diff --git a/midi2ly/midi-score-parser.cc b/midi2ly/midi-score-parser.cc index e80e85740b..a09f28fce4 100644 --- a/midi2ly/midi-score-parser.cc +++ b/midi2ly/midi-score-parser.cc @@ -12,8 +12,8 @@ #include "midi2ly-global.hh" #include "midi-score-parser.hh" #include "midi-track-parser.hh" -#include "mudela-item.hh" -#include "mudela-score.hh" +#include "lilypond-item.hh" +#include "lilypond-score.hh" void @@ -26,7 +26,7 @@ Midi_score_parser::open (String filename_str, Sources* sources_l) info_l_->end_byte_L_ = info_l_->byte_L_ + info_l_->source_l_->length_i () + 1; } -Mudela_score* +Lilypond_score* Midi_score_parser::parse (String filename_str, Sources* sources_l) { Midi_parser_info info; @@ -77,14 +77,14 @@ Midi_score_parser::find_earliest_i (Link_array<Midi_track_parser>& tracks) return earliest_i; } -Mudela_score* +Lilypond_score* Midi_score_parser::parse_score () { int current_bar_i = 0; - Mudela_time_signature m4 (4, 2, 24, 8); + Lilypond_time_signature m4 (4, 2, 24, 8); Rational bar4_mom = m4.bar_mom (); - Mudela_score* score_p = new Mudela_score( 1, 1, 1 ); + Lilypond_score* score_p = new Lilypond_score( 1, 1, 1 ); info_l_->score_l_ = score_p; Link_array<Midi_track_parser> tracks; @@ -97,8 +97,8 @@ Midi_score_parser::parse_score () { int i = find_earliest_i (tracks); Rational at_mom = tracks [i]->at_mom (); - Mudela_column* column_l = score_p->get_column_l (at_mom); - Mudela_staff* staff_p = tracks [i]->parse (column_l); + Lilypond_column* column_l = score_p->get_column_l (at_mom); + Lilypond_staff* staff_p = tracks [i]->parse (column_l); if ( staff_p ) { score_p->add_staff (staff_p); diff --git a/midi2ly/midi-track-parser.cc b/midi2ly/midi-track-parser.cc index 69c7ed080e..3b62ffc106 100644 --- a/midi2ly/midi-track-parser.cc +++ b/midi2ly/midi-track-parser.cc @@ -10,24 +10,24 @@ #include "string-convert.hh" #include "midi2ly-global.hh" #include "midi-track-parser.hh" -#include "mudela-column.hh" -#include "mudela-item.hh" -#include "mudela-score.hh" -#include "mudela-staff.hh" +#include "lilypond-column.hh" +#include "lilypond-item.hh" +#include "lilypond-score.hh" +#include "lilypond-staff.hh" Midi_track_parser::Midi_track_parser (Midi_parser_info* info_l, int i) { info_l_ = info_l; at_mom_ = 0; track_info_p_ = 0; - mudela_staff_p_ = new Mudela_staff (i, "", "", ""); + lilypond_staff_p_ = new Lilypond_staff (i, "", "", ""); parse_header (); parse_delta_time (); } Midi_track_parser::~Midi_track_parser () { - delete mudela_staff_p_; + delete lilypond_staff_p_; delete track_info_p_; } @@ -46,16 +46,16 @@ Midi_track_parser::eot () } void -Midi_track_parser::note_end (Mudela_column* col_l, int channel_i, int pitch_i, int aftertouch_i ) +Midi_track_parser::note_end (Lilypond_column* col_l, int channel_i, int pitch_i, int aftertouch_i ) { // junk dynamics (void)aftertouch_i; assert (col_l); - for (Cons<Mudela_note>** pp = &open_note_l_list_.head_; *pp;) + for (Cons<Lilypond_note>** pp = &open_note_l_list_.head_; *pp;) { - Cons<Mudela_note>* i = *pp; + Cons<Lilypond_note>* i = *pp; if ((i->car_->pitch_i_ == pitch_i) && (i->car_->channel_i_ == channel_i)) { i->car_->end_column_l_ = col_l; @@ -70,11 +70,11 @@ Midi_track_parser::note_end (Mudela_column* col_l, int channel_i, int pitch_i, i } void -Midi_track_parser::note_end_all (Mudela_column* col_l) +Midi_track_parser::note_end_all (Lilypond_column* col_l) { // find assert (col_l); - for (Cons<Mudela_note>* i = open_note_l_list_.head_; i; i = i->next_) + for (Cons<Lilypond_note>* i = open_note_l_list_.head_; i; i = i->next_) { i->car_->end_column_l_ = col_l; } @@ -82,15 +82,15 @@ Midi_track_parser::note_end_all (Mudela_column* col_l) open_note_l_list_.init (); } -Mudela_staff* -Midi_track_parser::parse (Mudela_column* col_l) +Lilypond_staff* +Midi_track_parser::parse (Lilypond_column* col_l) { Rational mom = at_mom (); while (!eot () && (mom == at_mom ())) { - Mudela_item* p = parse_event (col_l); + Lilypond_item* p = parse_event (col_l); if (p) - mudela_staff_p_->add_item (p); + lilypond_staff_p_->add_item (p); } if (!eot()) @@ -99,8 +99,8 @@ Midi_track_parser::parse (Mudela_column* col_l) // catch-all note_end_all (col_l); - Mudela_staff* p = mudela_staff_p_; - mudela_staff_p_ = 0; + Lilypond_staff* p = lilypond_staff_p_; + lilypond_staff_p_ = 0; return p; } @@ -113,8 +113,8 @@ Midi_track_parser::parse_delta_time () at_mom_ += Rational (delta_i, info_l_->division_1_i_); } -Mudela_item* -Midi_track_parser::parse_event (Mudela_column* col_l) +Lilypond_item* +Midi_track_parser::parse_event (Lilypond_column* col_l) { Byte byte = peek_byte (); // RUNNING_STATUS [\x00-\x5f] @@ -131,7 +131,7 @@ Midi_track_parser::parse_event (Mudela_column* col_l) else byte = next_byte (); - Mudela_item* item_p = 0; + Lilypond_item* item_p = 0; // DATA_ENTRY [\x60-\x79] if ((byte >= 0x60) && (byte <= 0x79)) { @@ -166,9 +166,9 @@ Midi_track_parser::parse_event (Mudela_column* col_l) */ if (dyn_i) { - Mudela_note* p = new Mudela_note (col_l, channel_i, pitch_i, dyn_i); + Lilypond_note* p = new Lilypond_note (col_l, channel_i, pitch_i, dyn_i); item_p = p; - open_note_l_list_.append (new Cons<Mudela_note> (p, 0)); + open_note_l_list_.append (new Cons<Lilypond_note> (p, 0)); } else { @@ -245,15 +245,15 @@ Midi_track_parser::parse_event (Mudela_column* col_l) int length_i = get_var_i (); String str = get_str (length_i); // LOGOUT (DEBUG_ver) << str << endl; - Mudela_text::Type t = (Mudela_text::Type)byte; - Mudela_text* p = new Mudela_text (t, str); + Lilypond_text::Type t = (Lilypond_text::Type)byte; + Lilypond_text* p = new Lilypond_text (t, str); item_p = p; - if (t == Mudela_text::COPYRIGHT) - mudela_staff_p_->copyright_str_ = p->text_str_; - else if (t == Mudela_text::TRACK_NAME) - mudela_staff_p_->name_str_ = p->text_str_; - else if (t == Mudela_text::INSTRUMENT_NAME) - mudela_staff_p_->instrument_str_ = p->text_str_; + if (t == Lilypond_text::COPYRIGHT) + lilypond_staff_p_->copyright_str_ = p->text_str_; + else if (t == Lilypond_text::TRACK_NAME) + lilypond_staff_p_->name_str_ = p->text_str_; + else if (t == Lilypond_text::INSTRUMENT_NAME) + lilypond_staff_p_->instrument_str_ = p->text_str_; } // END_OF_TRACK [\x2f][\x00] else @@ -269,12 +269,12 @@ Midi_track_parser::parse_event (Mudela_column* col_l) { next_byte (); unsigned useconds_per_4_u = get_u (3); - // $$ = new Mudela_tempo ( ($2 << 16) + ($3 << 8) + $4); + // $$ = new Lilypond_tempo ( ($2 << 16) + ($3 << 8) + $4); // LOGOUT (DEBUG_ver) << $$->str() << endl; - Mudela_tempo* p = new Mudela_tempo ( useconds_per_4_u ); + Lilypond_tempo* p = new Lilypond_tempo ( useconds_per_4_u ); item_p = p; - info_l_->score_l_->mudela_tempo_l_ = p; - mudela_staff_p_->mudela_tempo_l_ = p; + info_l_->score_l_->lilypond_tempo_l_ = p; + lilypond_staff_p_->lilypond_tempo_l_ = p; } // SMPTE_OFFSET [\x54][\x05] else if ((byte == 0x54) && (next == 0x05)) @@ -294,11 +294,11 @@ Midi_track_parser::parse_event (Mudela_column* col_l) int den_i = (int)next_byte (); int clocks_4_i = (int)next_byte (); int count_32_i = (int)next_byte (); - Mudela_time_signature* p = new Mudela_time_signature ( num_i, den_i, clocks_4_i, count_32_i ); + Lilypond_time_signature* p = new Lilypond_time_signature ( num_i, den_i, clocks_4_i, count_32_i ); item_p = p; - info_l_->score_l_->mudela_time_signature_l_ = p; + info_l_->score_l_->lilypond_time_signature_l_ = p; info_l_->bar_mom_ = p->bar_mom (); - mudela_staff_p_->mudela_time_signature_l_ = p; + lilypond_staff_p_->lilypond_time_signature_l_ = p; } // KEY [\x59][\x02] else if ((byte == 0x59) && (next == 0x02)) @@ -306,11 +306,11 @@ Midi_track_parser::parse_event (Mudela_column* col_l) next_byte (); int accidentals_i = (int)(signed char)next_byte (); int minor_i = (int)(bool)next_byte (); - Mudela_key* p = new Mudela_key (accidentals_i, minor_i); + Lilypond_key* p = new Lilypond_key (accidentals_i, minor_i); item_p = p; #if 0 - info_l_->score_l_->mudela_key_l_ = p; - mudela_staff_p_->mudela_key_l_ = p; + info_l_->score_l_->lilypond_key_l_ = p; + lilypond_staff_p_->lilypond_key_l_ = p; #endif } // SSME [\0x7f][\x03] @@ -319,7 +319,7 @@ Midi_track_parser::parse_event (Mudela_column* col_l) next_byte (); int length_i = get_var_i (); String str = get_str (length_i); - item_p = new Mudela_text ((Mudela_text::Type)byte, str); + item_p = new Lilypond_text ((Lilypond_text::Type)byte, str); } else { @@ -333,7 +333,7 @@ Midi_track_parser::parse_event (Mudela_column* col_l) exit (_ ("invalid MIDI event")); if (item_p) - item_p->mudela_column_l_ = col_l; + item_p->lilypond_column_l_ = col_l; parse_delta_time (); diff --git a/midi2ly/mudela-column.cc b/midi2ly/mudela-column.cc index e45e985c0e..e69de29bb2 100644 --- a/midi2ly/mudela-column.cc +++ b/midi2ly/mudela-column.cc @@ -1,24 +0,0 @@ -// -// mudela-column.cc -- implement Mudela_column -// -// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> - -#include "mudela-column.hh" - -Mudela_column::Mudela_column (Mudela_score* mudela_score_l, Rational mom) -{ - mudela_score_l_ = mudela_score_l; - at_mom_ = mom; -} - -void -Mudela_column::add_item (Mudela_item* mudela_item_l) -{ - mudela_item_l_list_.append (new Cons<Mudela_item> (mudela_item_l, 0)); -} - -Rational -Mudela_column::at_mom() -{ - return at_mom_; -} diff --git a/midi2ly/mudela-item.cc b/midi2ly/mudela-item.cc index 1415acd933..e69de29bb2 100644 --- a/midi2ly/mudela-item.cc +++ b/midi2ly/mudela-item.cc @@ -1,364 +0,0 @@ -// -// mudela-item.cc -- implement Mudela_item -// -// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> - -#include <string.h> -#include <assert.h> -#include "midi2ly-global.hh" -#include "string-convert.hh" -#include "duration-convert.hh" -#include "mudela-column.hh" -#include "mudela-item.hh" -#include "mudela-stream.hh" -#include "mudela-score.hh" - -Mudela_item::Mudela_item (Mudela_column* mudela_column_l) -{ - mudela_column_l_ = mudela_column_l; -} - -Mudela_item::~Mudela_item () -{ -} - -Rational -Mudela_item::at_mom () -{ - return mudela_column_l_->at_mom (); -} - -Rational -Mudela_item::duration_mom () -{ - return Rational (0); -} - -void -Mudela_item::output (Mudela_stream& mudela_stream_r) -{ - mudela_stream_r << str () << " "; -} - -Mudela_key::Mudela_key (int accidentals_i, int minor_i) - : Mudela_item (0) -{ - accidentals_i_ = accidentals_i; - minor_i_ = minor_i; -} - -char const *accname[] = {"eses", "es", "", "is" , "isis"}; - -String -Mudela_key::str () -{ - int key_i = accidentals_i_ >= 0 - ? ((accidentals_i_ % 7) ["cgdaebf"] - 'a' - 2 -2 * minor_i_ + 7) % 7 - : ((-accidentals_i_ % 7) ["cfbeadg"] - 'a' - 2 -2 * minor_i_ + 7) % 7; - - String notename_str = !minor_i_ - ? to_str ((char) ((key_i + 2) % 7 + 'a')) - : to_str ((char) ((key_i + 2) % 7 + 'a')); - - // fis cis gis dis ais eis bis - static int sharps_i_a [7] = { 2, 4, 6, 1, 3, 5, 7 }; - // bes es as des ges ces fes - static int flats_i_a [7] = { 6, 4, 2, 7, 5, 3, 1 }; - int accidentals_i = accidentals_i_ >= 0 - ? sharps_i_a [key_i] <= accidentals_i_ ? 1 : 0 - : flats_i_a [key_i] <= -accidentals_i_ ? -1 : 0; - - if (accidentals_i) - notename_str += String (accname [accidentals_i + 2]); - - return "\\key " + notename_str + (minor_i_ ? "\\minor" : "\\major") + ";\n"; -} - -String -Mudela_key::notename_str (int pitch_i) -{ - // this may seem very smart, - // but it-s only an excuse not to read a notename table - - // major scale: do-do - // minor scale: la-la (= + 5) - static int notename_i_a [12] = { 0, 0, 1, 1, 2, 3, 3, 4, 4, 5, 5, 6 }; - int notename_i = notename_i_a [pitch_i % 12]; - - static int accidentals_i_a [12] = { 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0 }; - int accidental_i = accidentals_i_a [(minor_i_ * 5 + pitch_i) % 12]; - if (accidental_i && (accidentals_i_ < 0)) - { - accidental_i *= -1; - notename_i = (notename_i + 1) % 7; - } - - String notename_str = to_str ((char)(((notename_i + 2) % 7) + 'a')); - if (accidental_i) - notename_str += String (accname [accidental_i + 2]); - - /* - By tradition, all scales now consist of a sequence of 7 notes each - with a distinct name, from amongst a b c d e f g. But, minor scales - have a wide second interval at the top - the 'leading note' is - sharped. (Why? it just works that way! Anything else doesn't sound as - good and isn't as flexible at saying things. In medieval times, - scales only had 6 notes to avoid this problem - the hexachords.) - - So, the d minor scale is d e f g a b-flat c-sharp d - using d-flat - for the leading note would skip the name c and duplicate the name d. - Why isn't c-sharp put in the key signature? Tradition. (It's also - supposedly based on the Pythagorean theory of the cycle of fifths, - but that really only applies to major scales...) - - Anyway, g minor is g a b-flat c d e-flat f-sharp g, and all the other - flat minor keys end up with a natural leading note. And there you - have it. - - John Sankey <bf250@freenet.carleton.ca> - - Let's also do a-minor: a b c d e f gis a - - --jcn - - */ - - /* ok, bit ugly, but here we go -- jcn */ - - - if (minor_i_) - { - if ((accidentals_i_ == 0) && (notename_str == "as")) - notename_str = "gis"; - else if ((accidentals_i_ == -1) && (notename_str == "des")) - notename_str = "cis"; - else if ((accidentals_i_ == -2) && (notename_str == "ges")) - notename_str = "fis"; - else if ((accidentals_i_ == 5) && (notename_str == "g")) - notename_str = "fisis"; - else if ((accidentals_i_ == 6) && (notename_str == "d")) - notename_str = "cisis"; - else if ((accidentals_i_ == 7) && (notename_str == "a")) - notename_str = "gisis"; - - if ((accidentals_i_ <= -6) && (notename_str == "b")) - notename_str = "ces"; - if ((accidentals_i_ <= -7) && (notename_str == "e")) - notename_str = "fes"; - } - - String de_octavate_str = to_str (',', (Mudela_note::c0_pitch_i_c_ + 11 - pitch_i) / 12); - String octavate_str = to_str ('\'', (pitch_i - Mudela_note::c0_pitch_i_c_) / 12); - return notename_str +de_octavate_str + octavate_str; -} - -Mudela_time_signature::Mudela_time_signature (int num_i, int den_i, int clocks_4_i, int count_32_i) - : Mudela_item (0) -{ - sync_dur_.durlog_i_ = 3; - sync_f_ = 1.0; - if (count_32_i != 8) - warning (_f ("#32 in quarter: %d", count_32_i)); - num_i_ = num_i; - den_i_ = den_i; - clocks_1_i_ = clocks_4_i * 4; -} - -Rational -Mudela_time_signature::bar_mom () -{ - Duration d; - d.durlog_i_ = den_i_; - return Rational (num_i_) * Duration_convert::dur2_mom (d); -} - -int -Mudela_time_signature::clocks_1_i () -{ - return clocks_1_i_; -} - -int -Mudela_time_signature::den_i () -{ - return den_i_; -} - -int -Mudela_time_signature::num_i () -{ - return num_i_; -} - -String -Mudela_time_signature::str () -{ - String str = "\\time " - + to_str (num_i_) + "/" + to_str (1 << den_i_) - + ";\n"; - return str; -} - - -// statics Mudela_note -/* - this switch can be used to write simple plets like - c4*2/3 - as - \plet 2/3; c4 \plet 1/1; - */ -/* - UGH: .hh says false, .cc says true. - FIXME. - */ -bool const Mudela_note::simple_plet_b_s; - -Mudela_note::Mudela_note (Mudela_column* mudela_column_l, - int channel_i, int pitch_i, int dyn_i) - : Mudela_item (mudela_column_l) -{ - // junk dynamics - (void)dyn_i; - channel_i_ = channel_i; - pitch_i_ = pitch_i; - end_column_l_ = 0; -} - -Duration -Mudela_note::duration () -{ - assert (end_column_l_); - Rational mom = end_column_l_->at_mom () - at_mom (); - return Duration_convert::mom2_dur (mom); -} - -Rational -Mudela_note::duration_mom () -{ - assert (end_column_l_); - return end_column_l_->at_mom () - at_mom (); -} - -String -Mudela_note::str () -{ - Duration dur = duration (); - if (dur.durlog_i_ < -10) - return ""; - - String name_str - = mudela_column_l_->mudela_score_l_->mudela_key_l_->notename_str (pitch_i_); - - if (simple_plet_b_s) - return name_str + Duration_convert::dur2_str (dur) + " "; - - String str; - - //ugh - if (dur.plet_b ()) - str += String ("\\times ") - + String_convert::i2dec_str (dur.plet_.iso_i_, 0, 0) - + "/" - + String_convert::i2dec_str (dur.plet_.type_i_, 0, 0) - + " { "; - - - str += name_str; - - Duration tmp = dur; - tmp.set_plet (1,1); - str += Duration_convert::dur2_str (tmp); - - if (dur.plet_b ()) - str += String (" }"); - - /* - note of zero duration is nonsense, - but let's output anyway for convenient debugging - */ - if (!duration_mom ()) - return String ("\n% ") + str + "\n"; - - return str + " "; -} - -Mudela_skip::Mudela_skip (Mudela_column* mudela_column_l, Rational skip_mom) - : Mudela_item (mudela_column_l) -{ - mom_ = skip_mom; -} - -Duration -Mudela_skip::duration () -{ - return Duration_convert::mom2_dur (mom_); -} - -Rational -Mudela_skip::duration_mom () -{ - return Duration_convert::dur2_mom (duration ()); -} - -String -Mudela_skip::str () -{ - if (!mom_) - return String (""); - - Duration dur = duration (); - if (dur.durlog_i_<-10) - return ""; - - String str = "\\skip "; - str += Duration_convert::dur2_str (dur) + "; "; - - return str; -} - -Mudela_tempo::Mudela_tempo (int useconds_per_4_i) - : Mudela_item (0) -{ - useconds_per_4_i_ = useconds_per_4_i; - seconds_per_1_mom_ = Rational(useconds_per_4_i_ *4, 1e6); -} - -String -Mudela_tempo::str () -{ - String str = "\\tempo 4="; - str += to_str (get_tempo_i (Rational (1, 4))); - str += ";\n"; - return str; -} - -int -Mudela_tempo::useconds_per_4_i () -{ - return useconds_per_4_i_; -} - -int -Mudela_tempo::get_tempo_i (Rational rational) -{ - Rational m1 = Rational (60) / rational; - Rational m2 = seconds_per_1_mom_; - return m1 / m2; -} - -Mudela_text::Mudela_text (Mudela_text::Type type, String text_str) - : Mudela_item (0) -{ - type_ = type; - text_str_ = text_str; -} - -String -Mudela_text::str () -{ - if (!text_str_.length_i () - || (text_str_.length_i () != (int)strlen (text_str_.ch_C ()))) - return ""; - - return "% " + text_str_ + "\n"; -} diff --git a/midi2ly/mudela-score.cc b/midi2ly/mudela-score.cc index 05d570f4fd..e69de29bb2 100644 --- a/midi2ly/mudela-score.cc +++ b/midi2ly/mudela-score.cc @@ -1,256 +0,0 @@ -// -// mudela-score.cc -- implement Mudela_score -// -// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> - -#include <assert.h> -#include "rational.hh" -#include "duration.hh" -#include "duration-convert.hh" -#include "midi2ly-global.hh" -#include "mudela-column.hh" -#include "mudela-item.hh" -#include "mudela-score.hh" -#include "mudela-staff.hh" -#include "mudela-stream.hh" - -#include "killing-cons.tcc" - -//static Mudela_key key_c (0, 0); -static Mudela_time_signature time_sig_4 (4, 2, 24, 8); -// useconds per 4: 250000 === 60 4 per minute -static Mudela_tempo tempo_60 (1000000); - -Mudela_score::Mudela_score (int format_i, int tracks_i, int tempo_i) -{ - last_staff_l_ =0; - format_i_ = format_i; - tracks_i_ = tracks_i; - tempo_i_ = tempo_i; - column_l_array_.push (new Mudela_column (this, Rational (0))); - // mudela_key_l_ = &key_c; - mudela_key_l_ = 0; - mudela_time_signature_l_ = &time_sig_4; - mudela_tempo_l_ = &tempo_60; -} - -Mudela_score::~Mudela_score () -{ -} - -void -Mudela_score::add_item (Mudela_item* mudela_item_p) -{ - last_staff_l_->add_item (mudela_item_p); -} - -void -Mudela_score::add_staff (Mudela_staff* mudela_staff_p) -{ - mudela_staff_p_list_.append (new Killing_cons<Mudela_staff> (mudela_staff_p, 0)); - last_staff_l_ = mudela_staff_p; -} - -Mudela_column* -Mudela_score::find_column_l (Rational mom) -{ - int upper_i = max (0, column_l_array_.size () - 1); - int lower_i = 0; - int i = 0; //upper_i; - while (1) - { - Rational i_mom = column_l_array_ [i]->at_mom (); - if (i_mom == mom) - return column_l_array_ [i]; - if (mom < i_mom) - upper_i = i; - else - lower_i = i; - if ( (upper_i == lower_i) || (i == column_l_array_.size () - 1)) - { - // we don't do inserts - assert (0); - Mudela_column* col_p = new Mudela_column (this, mom); - column_l_array_.push (col_p); - return col_p; - } - i = (upper_i + lower_i + 1 ) / 2; - } - assert (0); - return 0; -} - -Mudela_column* -Mudela_score::get_column_l (Rational mom) -{ - int i; - Mudela_column *c=0; - for (i=column_l_array_.size () - 1; !c && i >=0; i--) - { - if (column_l_array_ [i]->at_mom () == mom ) - c = column_l_array_[i]; - else if (column_l_array_[i]->at_mom () < mom) - break; - } - if (!c) - { - c = new Mudela_column (this, mom); - column_l_array_.insert (c, i+1); - } - - assert (c->at_mom () == mom); - return c; -} - -void -Mudela_score::output (String filename_str) -{ - LOGOUT (NORMAL_ver) << _f ("Lily output to %s...", filename_str) << endl; - - // ugh, ugly midi type 1 fix - if ( (mudela_staff_p_list_.size_i () == 1) - && !mudela_staff_p_list_.head_->car_->number_i_) - mudela_staff_p_list_.head_->car_->number_i_ = 1; - - int track_i = 0; - Mudela_stream mudela_stream (filename_str); - for (Cons<Mudela_staff>* i = mudela_staff_p_list_.head_; i; i = i->next_) - { - LOGOUT (NORMAL_ver) << _f ("track %d:", track_i++) << flush; - i->car_->output (mudela_stream); - mudela_stream << '\n'; - LOGOUT (NORMAL_ver) << endl; - } - - mudela_stream << "\\score{\n"; - if (mudela_staff_p_list_.size_i () > 1) - mudela_stream << "< \n"; - for (Cons<Mudela_staff>* i = mudela_staff_p_list_.head_; i; i = i->next_) - { - if ( (mudela_staff_p_list_.size_i () != 1) - && (i->car_ == mudela_staff_p_list_.head_->car_)) - continue; - mudela_stream << "\\context Staff = \"" << i->car_->id_str () << "\" "; - mudela_stream << String ("\\" + i->car_->id_str ()) << '\n'; - } - if (mudela_staff_p_list_.size_i () > 1) - mudela_stream << ">\n"; - - mudela_stream << "\\paper{}\n"; - -#if 1 - mudela_stream << "\\midi{\n"; - - // let's not use silly 0 track - last_cons (mudela_staff_p_list_.head_)->car_->mudela_tempo_l_->output (mudela_stream); - mudela_stream << "}\n"; -#endif - - mudela_stream << "}\n"; -} - -void -Mudela_score::process () -{ - LOGOUT (NORMAL_ver) << '\n' << _ ("Processing...") << endl; - - LOGOUT (DEBUG_ver) << "columns\n"; - - settle_columns (); - filter_tempo (); - quantify_columns (); - quantify_durations (); - - LOGOUT (NORMAL_ver) << '\n' << _ ("Creating voices...") << endl; - int track_i = 0; - for (Cons<Mudela_staff>* i = mudela_staff_p_list_.head_; i; i = i->next_) - { - LOGOUT (NORMAL_ver) << _ ("track ") << track_i++ << ": " << flush; - i->car_->process (); - LOGOUT (NORMAL_ver) << endl; - } -} - -void -Mudela_score::filter_tempo () -{ - LOGOUT (NORMAL_ver) << '\n' << _ ("NOT Filtering tempo...") << endl; -} - -void -Mudela_score::quantify_columns () -{ - // ugh - if (Duration_convert::no_quantify_b_s) - { - LOGOUT (NORMAL_ver) << '\n' << _ ("NOT Quantifying columns...") << endl; - return; - } - - LOGOUT (NORMAL_ver) << '\n' << _ ("Quantifying columns...") << endl; - - int current_bar_i = 0; - Rational bar_mom = mudela_time_signature_l_->bar_mom (); - - int n = 5 >? Duration_convert::no_smaller_than_i_s; - n = Duration_convert::type2_i (n); - Rational s = Rational (1, n); - for (int i = 0; i < column_l_array_.size (); i++) - { - column_l_array_ [i]->at_mom_ = - s * Rational ( (int) ( (column_l_array_ [i]->at_mom ()) / s)); - - int bar_i = (int) (column_l_array_ [i]->at_mom () / bar_mom) + 1; - if (bar_i > current_bar_i) - - { - LOGOUT (NORMAL_ver) << "[" << bar_i << "]" << flush; - current_bar_i = bar_i; - } - } - LOGOUT (NORMAL_ver) << endl; -} - -void -Mudela_score::quantify_durations () -{ - -} - -void -Mudela_score::settle_columns () -{ - LOGOUT (NORMAL_ver) << '\n' << _ ("Settling columns...") << endl; - - int n = column_l_array_.size (); - - int start_i = 0; - int end_i = 0; - Rational start_mom = 0; - - Duration smallest_dur; - smallest_dur.durlog_i_ = 6; - Rational const noise_mom = Duration_convert::dur2_mom (smallest_dur) - / Rational (2); - for (int i = 0; i < n; i++) - { - if (!start_i) - { - start_i = end_i = i; - start_mom = column_l_array_ [i]->at_mom (); - continue; - } - - // find all columns within noise's distance - while ( (i < n) - && (column_l_array_ [i]->at_mom () - start_mom < noise_mom)) - end_i = ++i; - - // bluntly set all to time of first in group - for (int j = start_i; j < end_i; j++) - column_l_array_ [j]->at_mom_ = start_mom; - - start_i = end_i = 0; - } -} - diff --git a/midi2ly/mudela-staff.cc b/midi2ly/mudela-staff.cc index 284cc5ef0f..e69de29bb2 100644 --- a/midi2ly/mudela-staff.cc +++ b/midi2ly/mudela-staff.cc @@ -1,339 +0,0 @@ -// -// mudela-staff.cc -- implement Mudela_staff -// -// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> - -#include <assert.h> -#include <ctype.h> -#include "rational.hh" -#include "duration-convert.hh" -#include "string-convert.hh" -#include "midi2ly-proto.hh" -#include "midi2ly-global.hh" -#include "mudela-column.hh" -#include "mudela-item.hh" -#include "mudela-staff.hh" -#include "mudela-stream.hh" -#include "mudela-voice.hh" -#include "mudela-score.hh" - -#include "killing-cons.tcc" - -extern Mudela_score* mudela_score_l_g; - -Mudela_staff::Mudela_staff (int number_i, String copyright_str, String track_name_str, String instrument_str) -{ - number_i_ = number_i; - copyright_str_ = copyright_str; - instrument_str_ = instrument_str; - name_str_ = track_name_str; - mudela_key_l_ = 0; - mudela_time_signature_l_ = 0; - mudela_tempo_l_ = 0; -} - -void -Mudela_staff::add_item (Mudela_item* mudela_item_p) -{ - mudela_item_p_list_.append (new Killing_cons <Mudela_item> (mudela_item_p, 0)); - if (mudela_item_p->mudela_column_l_) - mudela_item_p->mudela_column_l_->add_item (mudela_item_p); -} -/** - Walk ITEMS and find voices. Remove categorised items. - - TODO: - - * collect all channels into separate voices. Use chords for sim - notes on same channel. - * assume voices/assume chords modes. - - */ -void -Mudela_staff::eat_voice (Cons_list<Mudela_item>& items) -{ - Mudela_voice* voice_p = new Mudela_voice (this); - mudela_voice_p_list_.append (new Killing_cons<Mudela_voice> (voice_p, 0)); - - // Rational mom = items.top ()->at_mom (); - Rational mom = 0; - - for (Cons<Mudela_item>** pp = &items.head_; *pp;) - { - Cons<Mudela_item>* i = *pp; - if (i->car_->at_mom () > mom) - { - if (no_rests_b_g && voice_p->last_note_l_) - { - voice_p->last_note_l_->end_column_l_ = i->car_->mudela_column_l_; - } - else - { - /* uh, what about quantisation? This should probably - use mom2standardised_dur () - arg, urg: skip should get duration from start/end columns! - */ - - Rational r = i->car_->at_mom () - mom; - // ugh, need score - Mudela_column* start = mudela_score_l_g->find_column_l (mom); - voice_p->add_item (new Mudela_skip (start, r)); - } - - mom = i->car_->at_mom (); - continue; // unnecessary - } - - Link_array<Mudela_item> now_items; - for (Cons<Mudela_item> *cp = i; cp && cp->car_->at_mom () == mom; cp = cp->next_) - now_items.push (i->car_); - -#if 0 - /* - Why don't we use <note>, if voice has: - - <note> <key-change> - - we'd get last_item == key_change -> last_note == 0; - */ - Mudela_note * last_note = dynamic_cast<Mudela_note*> (voice_p->last_item_l_); -#else - /* - Not sure, is this better? - */ - Mudela_note * last_note = voice_p->last_note_l_; -#endif - - Link_array<Mudela_item> candidates; - - for (int i=0; last_note && i < now_items.size (); i++) - { - Mudela_note * now_note = dynamic_cast<Mudela_note*> (now_items[i]); - if (now_note && last_note->channel_i_ != now_note->channel_i_) - candidates.push (now_note); - } - - if (candidates.size()) - { - now_items = candidates; - } - - Mudela_item * which = 0; - if (now_items.size () > 1) - { - int mindiff = 100000; // ugh - for (int i=0; last_note && i < now_items.size (); i++) - { - Mudela_note *nt = dynamic_cast<Mudela_note*> (now_items[i]); - if (!nt) - continue; - int diff = abs (last_note->pitch_i_ - nt->pitch_i_ ); - if(diff < mindiff) - { - mindiff = diff; - which = now_items [i]; - } - } - - if (which && mindiff > 18) // more than 1.5 octaves apart. Don't put in same voice. - { - which =0; - } - } - else if (now_items.size () == 1) - which = now_items[0]; - - if (which) - { - while ((*pp)->car_ != which) - pp = &(*pp)->next_; - - mom += (*pp)->car_->duration_mom (); - Cons<Mudela_item>* c = items.remove_cons (pp); - voice_p->add_item (c->car_); - delete c; - } - else - { - pp = &(*pp)->next_; - continue; - } - } -} - -String -Mudela_staff::id_str () -{ - String id (name_str ()); - char *cp = id.ch_l (); - char *end = cp + id.length_i (); - for (;cp < end; cp++) - { - if (!isalpha (*cp)) - { - *cp = 'X'; - } - } - return id; -} - -String -Mudela_staff::name_str () -{ - if (name_str_.length_i ()) - return name_str_; - return String ("track") + to_str (char ('A' - 1 + number_i_)); -} - - - -void -Mudela_staff::output (Mudela_stream& mudela_stream_r) -{ - int c =0; - - String trackbody = ""; - for (Cons<Mudela_voice>* i = mudela_voice_p_list_.head_; i; i = i->next_) - { - String voicename = id_str () + "voice" + to_str (char (c + 'A')); - - mudela_stream_r << voicename << " = \\notes "; - - trackbody += "\\" + voicename + "\n"; - - mudela_stream_r << '\n'; - i->car_->output (mudela_stream_r); - c++; - } - - mudela_stream_r << _ ("% MIDI copyright:") << copyright_str_ << '\n'; - mudela_stream_r << _ ("% MIDI instrument:") << instrument_str_ << '\n'; - mudela_stream_r << id_str () << " = "; - mudela_stream_r << "<\n " << trackbody << " >\n"; - - mudela_stream_r << " % " << name_str () << '\n'; -} - -void -Mudela_staff::output_mudela_begin_bar (Mudela_stream& mudela_stream_r, Rational now_mom, int bar_i) -{ - Rational bar_mom = mudela_time_signature_l_->bar_mom (); - Rational into_bar_mom = now_mom - Rational (bar_i - 1) * bar_mom; - if (bar_i > 1) - { - if (!into_bar_mom) - mudela_stream_r << "|\n"; - } - mudela_stream_r << "% " << String_convert::i2dec_str (bar_i, 0, ' '); - if (into_bar_mom) - mudela_stream_r << ":" << Duration_convert::dur2_str (Duration_convert::mom2_dur (into_bar_mom)); - mudela_stream_r << '\n'; -} - - -#if 0 // not used for now -void -Mudela_staff::output_mudela_rest (Mudela_stream& mudela_stream_r, Rational begin_mom, Rational end_mom) -{ - Rational bar_mom = mudela_time_signature_l_->bar_mom (); - Rational now_mom = begin_mom; - - int begin_bar_i = (int) (now_mom / bar_mom) + 1; - int end_bar_i = (int) (end_mom / bar_mom) + 1; - - if (end_bar_i == begin_bar_i) - { - output_mudela_rest_remain (mudela_stream_r, end_mom - begin_mom); - return; - } - - // multiple bars involved - int bar_i = (int) (now_mom / bar_mom) + 1; - - //fill current bar - Rational begin_bar_mom = Rational (begin_bar_i - 1) * bar_mom; - if (now_mom > begin_bar_mom) - { - int next_bar_i = (int) (now_mom / bar_mom) + 2; - Rational next_bar_mom = Rational (next_bar_i - 1) * bar_mom; - assert (next_bar_mom <= end_mom); - - Rational remain_mom = next_bar_mom - now_mom; - if (remain_mom > Rational (0)) - { - output_mudela_rest_remain (mudela_stream_r, remain_mom); - now_mom += remain_mom; - } - - bar_i = check_end_bar_i (now_mom, bar_i); - } - - // fill whole bars - int count_i = end_bar_i - bar_i; - for (int i = 0; i < count_i; i++) - { - int begin_bar_i = check_begin_bar_i (now_mom, bar_i); - if (begin_bar_i) - output_mudela_begin_bar (mudela_stream_r, now_mom, begin_bar_i); - mudela_stream_r << "r1 "; - // *mudela_stream_r.os_p_ << flush; - if (begin_bar_i) - LOGOUT (NORMAL_ver) << begin_bar_i << flush; - bar_i = check_end_bar_i (now_mom, bar_i); - now_mom += bar_mom; - } - - // use "int i" here, and gcc 2.7.2 hits internal compiler error - int ii = check_begin_bar_i (now_mom, bar_i); - if (ii) - output_mudela_begin_bar (mudela_stream_r, now_mom, ii); - - // bar_i = check_end_bar_i (now_mom, bar_i); - - Rational remain_mom = end_mom - Rational (end_bar_i - 1) * bar_mom; - if (remain_mom > Rational (0)) - { - output_mudela_rest_remain (mudela_stream_r, remain_mom); - now_mom += remain_mom; - } - assert (now_mom == end_mom); -} - -void -Mudela_staff::output_mudela_rest_remain (Mudela_stream& mudela_stream_r, Rational mom) -{ - if (Duration_convert::no_quantify_b_s) - { - Duration dur = Duration_convert::mom2_dur (mom); - mudela_stream_r << "r" << dur.str () << " "; - // assert (mom == dur.mom ()); - assert (mom == dur.length ()); - return; - } - - Duration dur = Duration_convert::mom2standardised_dur (mom); - if (dur.type_i_>-10) - mudela_stream_r << "r" << dur.str () << " "; -} -#endif - - -void -Mudela_staff::process () -{ - /* - group items into voices - */ - - assert (mudela_score_l_g); - mudela_key_l_ = mudela_score_l_g->mudela_key_l_; - mudela_time_signature_l_ = mudela_score_l_g->mudela_time_signature_l_; - mudela_tempo_l_ = mudela_score_l_g->mudela_tempo_l_; - - Cons_list<Mudela_item> items; - for (Cons<Mudela_item>* i = mudela_item_p_list_.head_; i; i = i->next_) - items.append (new Cons<Mudela_item> (i->car_, 0)); - - while (items.size_i ()) - eat_voice (items); -} diff --git a/midi2ly/mudela-stream.cc b/midi2ly/mudela-stream.cc index d8c67bcf24..e69de29bb2 100644 --- a/midi2ly/mudela-stream.cc +++ b/midi2ly/mudela-stream.cc @@ -1,192 +0,0 @@ -// -// mudela-stream.cc -// -// source file of the LilyPond music typesetter -// -// (c) 1997--1998, 1998 Jan Nieuwenhuizen <janneke@gnu.org> - -#include <assert.h> -#include <time.h> -#include <fstream.h> -#include "midi2ly-global.hh" -#include "mudela-item.hh" -#include "mudela-stream.hh" -#include "string-convert.hh" - -extern String filename_str_g; - -static int const INDENT_i = 8; - -Mudela_stream::Mudela_stream (String filename_str) -{ - filename_str_ = filename_str; - pending_indent_i_ = 0; - os_p_ = 0; - indent_i_ = 0; - comment_mode_b_ = false; - column_i_ = 0; - wrap_column_i_ = 68; - open(); - header(); -} - -Mudela_stream::~Mudela_stream () -{ - delete os_p_; - if (indent_i_) - warning (_f ("lily indent level: %d", indent_i_)); -} - -Mudela_stream& -Mudela_stream::operator << (char c) -{ - *this << to_str (c); - return *this; -} - -Mudela_stream& -Mudela_stream::operator << (String s) -{ - static String word_sep_str = "{} \t\n"; - while (s.length_i()) - { - int i = s.index_any_i (word_sep_str) + 1; - if (!i) - i = s.length_i(); - String word = s.left_str (i); - s = s.cut_str (i, s.length_i()); - output_wrapped (word); - } - return *this; -} - -Mudela_stream& -Mudela_stream::operator << (Mudela_item& mudela_item_r) -{ - mudela_item_r.output (*this); - *os_p_ << flush; - return *this; -} - -void -Mudela_stream::handle_pending_indent() -{ - *os_p_ << String_convert::char_str ('\t', pending_indent_i_); - column_i_ += pending_indent_i_ * INDENT_i; - pending_indent_i_ = 0; -} - -void -Mudela_stream::header() -{ - /* Maybe better not to translate these? */ - *os_p_ << _ ("% Creator: "); - if (no_timestamps_b_g) - *os_p_ << "GNU LilyPond\n"; - else - *os_p_ << midi2ly_version_str() << '\n'; - *os_p_ << _ ("% Automatically generated"); - if (no_timestamps_b_g) - *os_p_ << ".\n"; - else - { - *os_p_ << _ (", at "); - time_t t (time (0)); - *os_p_ << ctime (&t) << "%\n"; - } - *os_p_ << _ ("% from input file: "); - // *os_p_ << midi_parser_l_g->filename_str_; - // ugh - *os_p_ << filename_str_g; - *os_p_ << "\n\n"; - // ugh - *os_p_ << "\\version \"1.3.76\";\n"; -} - -void -Mudela_stream::open() -{ - os_p_ = new ofstream (filename_str_.ch_C ()); - if (!*os_p_) - error (_f ("can't open file: `%s'", filename_str_)); -} - -void -Mudela_stream::output (String str) -{ - for (int i = 0; i < str.length_i(); i++) - { - char c = str[ i ]; - switch (c) - { - case '{' : - case '<' : - handle_pending_indent(); - if (column_i_ == indent_i_ * INDENT_i) - output ("\t"); - indent_i_++; - *os_p_ << c; - column_i_++; - break; - case '}' : - case '>' : - assert (indent_i_); - indent_i_--; - if (pending_indent_i_) - pending_indent_i_--; - handle_pending_indent(); - *os_p_ << c; - column_i_++; - break; - case '%' : - handle_pending_indent(); - comment_mode_b_ = true; - *os_p_ << c; - column_i_++; - break; - case '\t' : - handle_pending_indent(); - *os_p_ << c; - column_i_ += INDENT_i; - break; - case '\n' : - *os_p_ << endl; - pending_indent_i_ = indent_i_; - column_i_ = 0; - comment_mode_b_ = false; - break; - default : - handle_pending_indent(); - *os_p_ << c; - column_i_++; - break; - } - } -} - -void -Mudela_stream::output_wrapped (String str) -{ - // enough room left -> doit - if (column_i_ + str.length_i() <= wrap_column_i_) - { - output (str); - return; - } - - // we're at BOL already; this will never fit -> doit - if (column_i_ == indent_i_ * INDENT_i) - { - output (str); - return; - } - - // ok, let's wrap - // preserve comment mode - if (comment_mode_b_) - output (String ("\n%")); - else - output (String ("\n")); - - output (str); -} diff --git a/midi2ly/mudela-voice.cc b/midi2ly/mudela-voice.cc index c0236be33b..e69de29bb2 100644 --- a/midi2ly/mudela-voice.cc +++ b/midi2ly/mudela-voice.cc @@ -1,105 +0,0 @@ -// -// mudela-voice.cc -- implement Mudela_voice -// -// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org> - -#include "string-convert.hh" -#include "midi2ly-global.hh" -#include "mudela-column.hh" -#include "mudela-item.hh" -#include "mudela-staff.hh" -#include "mudela-stream.hh" -#include "mudela-voice.hh" -#include "mudela-score.hh" - -extern Mudela_score* mudela_score_l_g; - -Mudela_voice::Mudela_voice (Mudela_staff* mudela_staff_l) -{ - mudela_staff_l_ = mudela_staff_l; - last_item_l_ =0; - last_note_l_ =0; -} - -void -Mudela_voice::add_item (Mudela_item* mudela_item_l) -{ - last_item_l_ = mudela_item_l; - if (Mudela_note* n = dynamic_cast<Mudela_note*> (mudela_item_l)) - { - last_note_l_ = n; - } - mudela_item_l_list_.append (new Cons<Mudela_item> (mudela_item_l, 0)); -} - -/** - analyse pitches to determine clef. - */ -String -Mudela_voice::get_clef () const -{ - Mudela_note * n =0; - - for (Cons<Mudela_item> *cp = mudela_item_l_list_.head_; !n && cp; cp = cp->next_) - { - n = dynamic_cast<Mudela_note*> (cp->car_); - } - - if (!n) - return ""; - - int p = n->pitch_i_; - - if (p < 56) - return "\\clef \"bass\";\n"; - else if (p > 67) - return "\\clef \"treble\";\n"; - else - return ""; -} - -static int const FAIRLY_LONG_VOICE_i = 6; - -void -Mudela_voice::output (Mudela_stream& mudela_stream_r) -{ - mudela_stream_r << "{ "; - if (mudela_item_l_list_.size_i () > FAIRLY_LONG_VOICE_i) - mudela_stream_r << '\n'; - - - mudela_stream_r << get_clef () << '\n'; - - int current_bar_i = 0; - Rational bar_mom = mudela_staff_l_->mudela_time_signature_l_->bar_mom (); - - for (Cons<Mudela_item>* i = mudela_item_l_list_.head_; i; i = i->next_) - { - Rational at_mom = i->car_->mudela_column_l_->at_mom (); - int bar_i = (int) (at_mom / bar_mom) + 1; - if (bar_i > current_bar_i) - { - if (current_bar_i) - { - if (at_mom == Rational (bar_i - 1) * bar_mom) - mudela_stream_r << "|"; - mudela_stream_r << "\n% "; - mudela_stream_r << String_convert::i2dec_str (bar_i, 0, ' '); - mudela_stream_r << '\n'; - } - LOGOUT (NORMAL_ver) << "[" << bar_i << "]" << flush; - current_bar_i = bar_i; - } - - mudela_stream_r << *i->car_; - if (Mudela_key* k = dynamic_cast<Mudela_key*> (i->car_)) - mudela_staff_l_->mudela_key_l_ = mudela_score_l_g->mudela_key_l_ = k; - } - - if (mudela_item_l_list_.size_i () > FAIRLY_LONG_VOICE_i) - mudela_stream_r << '\n'; - - mudela_stream_r << "} "; -} - - diff --git a/mutopia/E.Satie/gnossienne-4.ly b/mutopia/E.Satie/gnossienne-4.ly index 7d9de3631e..e69de29bb2 100644 --- a/mutopia/E.Satie/gnossienne-4.ly +++ b/mutopia/E.Satie/gnossienne-4.ly @@ -1,144 +0,0 @@ -\header { - filename = "gnossienne-4.ly"; - title = "Gnossienne"; - subtitle = "4"; - composer = "Erik Satie (1866-1925)"; - enteredby = "jcn"; - copyright = "Public Domain"; -} - -%{ - Tested Features: cross staff auto beams and slurs, grace notes, no bars -%} - -\version "1.3.117"; - -global = \notes { - \key a \minor; - \time 6/4; - \skip 1.*34; - \bar "|."; -} - -melody = \notes\relative c''{ - \clef violin; - \property Voice.verticalDirection = #1 - \property Voice.graceFraction = #(make-moment 1 4) - r2 r r - r2 r r - r4 a'8--(\< a-- a-- a-- c-- \!b-- a--\> gis f \!e - es8 \grace b( ))c r4 r2 r - r2 r r - r4 a'8--(\< a-- a-- a-- c-- \!b-- a--\> gis f \!e - es8 \grace b( ))c r4 r2 r - r4 g16( a bes a g a bes a g a bes a g a bes a g fis es fis - )d4 \grace fis8()gis4 ~ gis8 r r4 r2 - r4 g16( a bes a g a bes a g a bes a g a bes a g fis es fis - )d4 \grace fis8()gis4 ~ gis8 r r4 r2 - \grace a8()f4 ~ f8 r r2 r - r2 r4 a8( b c d c b \grace b8()e \grace a,())g r4 r2 r - r2 r4 a8( b c d c b a b c d c b a b c d c b - \grace b8()e \grace a,())g r4 r2 r - a2( \grace e'8()f4 ~ )f8 r r2 - r2 r r - fis,4( \grace dis8<)cis4 ais> r2 r - \grace b'8()a \grace b()a r4 r2 r - r4 a'8--(\< a-- a-- a-- c-- \!b-- a--\> gis f \!e - es8 \grace b())c r4 r2 r - d,4( \grace fis8()gis4 ~ )gis8 r r4 r2 - f4 ~ f8 r r2 r - f'8( g a b a g f g a b a g - \grace f8()g \grace d)e r4 r2 r - f8( g a b a g f g a b a g - \grace f8()g8 \grace d())e r4 r2 r - a,2( \grace e'8() f4 ~ )f8 r r2 - r2 r r - fis,4( \grace dis8<)cis4 ais> r2 r - <e1*6/4 g b e> ~ <e g b e> -} - -basloopje = \notes\relative c{ - d,8( a' d f a d f d a f d )a -} - -accompany = \notes \relative c { - % snapnie, hoevaak relative c heeft ze nodig? - \basloopje - \basloopje - \basloopje - \transpose bes \basloopje - \transpose bes \basloopje - \basloopje - \transpose bes \basloopje - \transpose bes \basloopje - \transpose a \basloopje - \transpose bes \basloopje - \transpose a \basloopje - \basloopje - \basloopje - % huh? d' - \transpose d' \basloopje - \basloopje - \basloopje - \transpose d' \basloopje - \basloopje - \basloopje - \transpose e' \basloopje - \basloopje - \basloopje - \transpose bes \basloopje - \transpose a \basloopje - \basloopje - \basloopje - \transpose d' \basloopje - \basloopje - \transpose d' \basloopje - \basloopje - \basloopje - \transpose e' \basloopje - < e1*6/4 b' e> ~ < e b' e> -} - -\score{ - \notes \context PianoStaff < - \context Staff=up < - \global - \context Voice=foo { - \stemUp - \property Voice.Script \override #'direction = #1 - - \melody - } - > - \context Staff=down < - \global - \clef bass; - \autochange Staff \context Voice \accompany - > - > - - \paper { - gourlay_maxmeasures = 4.; - indent = 8.\mm; - textheight = 295.\mm; - - % ugly is beautiful - slur_beautiful = 5.0; - - \translator{ - \StaffContext - % don't auto-generate bars: not a good idea: -> no breakpoints - % barAuto = #f - defaultBarType = #"" - \remove "Time_signature_engraver"; - - slurVerticalDirection = #1 - verticalDirection = #-1 - autoBeamSettings \override #'(end * * * *) = #(make-moment 1 2) - } - } - \midi { - \tempo 4 = 54; - } -} - diff --git a/mutopia/J.S.Bach/GNUmakefile b/mutopia/J.S.Bach/GNUmakefile index bb33ed42dd..ebf1c3432c 100644 --- a/mutopia/J.S.Bach/GNUmakefile +++ b/mutopia/J.S.Bach/GNUmakefile @@ -2,7 +2,7 @@ depth = ../.. -SUBDIRS = Petites-Preludes Solo-Cello-Suites Cembalo-Partitas Duette +SUBDIRS = Petites-Preludes Cembalo-Partitas Duette EXTRA_DIST_FILES= diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/GNUmakefile b/mutopia/J.S.Bach/Solo-Cello-Suites/GNUmakefile index 9a412fa114..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/GNUmakefile +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/GNUmakefile @@ -1,15 +0,0 @@ -# mutopia/J.S.Bach/Solo-Cello-Suites/Makefile - -depth = ../../.. - -EXTRA_DIST_FILES= - -examples=scsii-cello -LOCALSTEPMAKE_TEMPLATES=mutopia - -include $(depth)/make/stepmake.make - -tarball=solo-cello-suite-ii -mutopia-examples=scsii-cello scsii-viola -mutopia-letter=$(mutopia-examples:%=out-letter/%.ps.gz) - diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly index 0784c3fda0..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly @@ -1,40 +0,0 @@ - - -\version "1.3.117"; - -\include "allemande-urtext.ly"; - -allemandeCelloGlobal = \notes{ - \time 4/4; - \key f \major; - \clef bass; - \repeat "volta" 2 { - \partial 16; - s16 - s1*11 | - s2 s4 s8. - } \repeat "volta" 2 { - s16 - s1*11 - s16*15 - } -} - -allemandeCelloScripts = \notes{ -} - -allemandeCelloStaff = \context Staff < - \allemande - \allemandeCelloGlobal - \allemandeCelloScripts -> - -\score{ - \allemandeCelloStaff - \paper{ } - \midi{ \tempo 4 = 45; } - \header{ piece = "Allemande"; - opus = ""; - - } -} diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly index 679501b975..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly @@ -1,103 +0,0 @@ -% allemande-urtext.ly -% belongs together with -cello.ly and -viola.ly -% (who is going to make a -violin.ly?) - -%{ -Well, there are still some scripts in this "urtext". -But merging melodic and scripts doen't work too well yet (see viola_scripts). -%} - -allemandeA = \context Staff \notes \relative c { - \context Voice=i - \stemUp - a'16 | - a8 bes16()a \stemBoth - g()f e()d d()cis d()e a,8 bes16()g | - f( a )d f, e8 cis' \stemUp d8. e16 \stemBoth f g a bes! | - %3 - \stemUp c8 d16()es \stemBoth d()c bes()a c()bes a()g d'8. f,16 | - e( g )bes d c()bes a()g bes()a g()f - < f8. a> <f16 a > | - % urg fix - b f( e )d e cis' d cis \stemUp d8. e16 \stemBoth - f( e d)e | - %6 - d( c b )c b( a gis)a gis8-\prall fis16()e e' c( a )g | - \stemUp e' a, f d d f d b \stemBoth - gis( b e )gis b d c b | - %8 - c( a f )e d( f e )d gis8.-\trill()a16 b d e, d | - % urg - c e a d \stemUp b8.-\trill a16 a8 s4 s8 \stemBoth | - %10 - d,!16 gis( a b a gis fis )e \stemUp e8 f16()e \stemBoth - d()c b()a | - \stemUp d8 e16()f \stemBoth e d c b - \stemUp d'16()b c()a \stemBoth e8 gis | - a,8. cis16 e g! f! e f a d gis, [ a8. ] - %13 - e16 \stemUp e8. f16 \stemBoth - g!()e f()a cis,( d )e bes a8.-\trill()g16 | - f a'(f)d g b,()cis a' g(f e)d fis d()es c( | - %15 - )bes g'(a, )g fis a d c' bes(fis)g bes d()a bes()g | - es(d)es g c()a bes()g d c d g bes()fis g()es | - %17 - c(bes)c bes' a(c)es g, \stemUp fis8-\trill g16 a \stemBoth - d,8 es16 c | - bes d g bes, d,8 fis' \stemUp g8. a16 \stemBoth bes d g, f | - %19 - \stemUp e8.-\trill f16 \stemBoth g e c bes - a()f' g,()f e g'( a )bes | - bes( a g )f - a()e f()d bes d(f)a d()a bes()g | - %21 - a,()g'cis()d e()g, a()e f()d bes()d gis, f' e d | - d( cis b )a - c(a)fis d' c a( b )d - f!(d )gis, d' | - %23 - cis(e g!)bes e()a, bes()g f()cis d()gis, a8 cis! | - % knee - \stemUp d,16 \stemBoth d''(c!)a bes!(g)e cis' d a f d d,8. - \bar "|."; -} - -allemandeB = \notes \relative c { - \context Voice=ii - \stemDown - s16 | - % <d'8 g' f'> s8 s2. | - <f8 g, d> s8 s2. | - s2 <a,8. d,> s16 s4 | - <fis'8 a, d,> s8 s2. | - s1 | - %5 - s2 d8. s16 s4 | - s1 | - f!16 s16*3 b, s16*3 s2 | - s1 | - \slurDown - s4 e [dis8 ~ dis32 e( fis gis] [a b c d! c b c )a] | - \slurBoth - %10 - s2 <a8 c,> s8 s4 | - <b8 gis,> s8 s4 <e,8 a,> s8 s4 | - s2 s4 s8. - s16 - <cis'8 g,> s8 s2. | - %15 - s1*3 | - s2 c,8 s8 s4 | - s2 g8. s16 s4 | - bes8. -% } -} - -allemande = \context Staff \notes< - \allemandeA - \allemandeB -> - - -\version "1.3.117"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-viola.ly index c6ac0d371d..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-viola.ly @@ -1,39 +0,0 @@ - -\version "1.3.117"; - -\include "allemande-urtext.ly"; - -allemandeViolaGlobal = \notes{ - \time 4/4; - \key f \major; - \clef alto; - \repeat "volta" 2 { - \partial 16; - s16 - s1*11 | - s2 s4 s8. - } \repeat "volta" 2 { - s16 - s1*11 - s16*15 - } -} - -allemandeViolaScripts = \notes{ -} - -allemandeViolaStaff = \context Staff < - \notes \transpose c'' \allemande - \allemandeViolaGlobal - \allemandeViolaScripts -> - -\score{ - \allemandeViolaStaff - \paper{ } - \midi{ \tempo 4 = 45; } - \header{ piece = "Allemande"; - opus = ""; - } -} - diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly index f563e3f735..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly @@ -1,39 +0,0 @@ - -\version "1.3.117"; - -\include "courante-urtext.ly"; - -couranteCelloGlobal = \notes{ - \time 3/4; - \key f \major; - \clef bass; - \repeat "volta" 2 { - \partial 16; - s16 - s2.*15 - s2 s8. - } \repeat "volta" 2 { - s16 - s2.*15 - s16*11 - } -} - -couranteCelloScripts = \notes{ -} - -couranteCelloStaff = \context Staff < - \courante - \couranteCelloGlobal - \couranteCelloScripts -> - -\score{ - \couranteCelloStaff - \paper {} - \midi{ \tempo 4 = 55; } - \header{ piece = "Courante"; - opus = ""; - } -} - diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-urtext.ly index 09a67d6225..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-urtext.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-urtext.ly @@ -1,92 +0,0 @@ -% courante-urtext.ly -% belongs together with -cello.ly and -viola.ly -% (who is going to make a -violin.ly?) - -%{ -Well, there are still some scripts in this "urtext". -But merging melodic and scripts doen't work too well yet (see viola_scripts). -%} - -couranteA = \context Staff \notes \relative c { - \context Voice=i - d'16 | - d a f a d, f g a bes a bes g | - \stemUp <g4 a> s4 \stemBoth g16 f g e | - % urg, a good case for mean-distance-beam-dir-algorithm! - f d e c! bes(a)bes a' g f e d | - %4 - cis e a,(b cis d e f )g bes-- a e | - f a d,( e f g a bes )c bes-- d c | - \stemUp <c4 f,> ~ < c16 f,> bes a g \stemBoth f()es d()es | - %7 - d bes(a)bes d bes e! bes f' bes, g' bes, | - e, g c d e f g a bes a bes g | - a f(e)f a f bes f c' f, d' f, | - %10 - cis( e )a b cis d e f g()f g()e | - d,( a' )f' e d()c d()c b()a b()a | - gis( a )b e, f()e f()d e()c d()b | - %13 - c a'( b c b a gis)a d, a' e a | - f a( b c b a gis)a f a e a | - dis, a'( b c b a gis)a e a e gis | - a e cis e a, cis e gis [ a8. ] - e'16 - %17 - e cis a cis e, f g a bes()g cis()g | - \stemUp d'4 ~ d16 a d e f d a c! \stemBoth | - b16 f(d)f g, d' f g b f d' f, | - %20 - e g c, d e f g a bes! d c g | - \stemUp a s16*3 s4 s4 - d, ~ d16 e! f g \stemBoth a bes c d | - %23 - e, bes a g a f' g,()f c g' f' e | - f a bes a g f e f g e f d | - cis g' b, g' a, g' b, g' cis, g' a, g' | - %26 - f d f a d a d e f a, f d | - g, d' g a bes g' a, f' g, e' f, d' | - cis(d)e cis a cis bes cis a cis g cis | - %29 - f, d'(e f e d cis)d g, d' a d | - bes d e f e d cis d bes d a d | - gis, d'(e f e d cis)d a d a cis | - d a f a d, f a, d - d,8. - \bar "|."; -} - -couranteB = \notes \relative c { - \context Voice=ii - \stemDown - s16 | - s2. | - %2 - cis4 ~ cis16 d e f s4 | - s2.*3 | - %6 - a,4 s2 - s2.*9 - % 16 - s2 s8. - s16 - s2. - %18 - f'4 s s | - s2.*2 - %21 - \slurUp - f16 c'(bes a g f es d )es c' f, es | - \slurBoth - bes4 s s - s2.*9 - s2 s8. -} - -courante = \context Staff \notes< - \couranteA - \couranteB -> - -\version "1.3.117"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly index dd7a0392d6..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly @@ -1,42 +0,0 @@ - - - -\version "1.3.117"; - -\include "courante-urtext.ly"; - -couranteViolaGlobal = \notes{ - \time 3/4; - \key f \major; - \clef alto; - \repeat "volta" 2 { - \partial 16; - s16 - s2.*15 - s2 s8. - } \repeat "volta" 2 { - s16 - s2.*15 - s16*11 - } -} - -couranteViolaScripts = \notes{ -} - -couranteViolaStaff = \context Staff < - \notes \transpose c'' \courante - \couranteViolaGlobal - \couranteViolaScripts -> - -\score{ - \couranteViolaStaff - \paper{ } - \midi{ \tempo 4 = 55; } - \header{ - opus= "" ; - piece ="Courante"; - } -} - diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly index 6b937b7895..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly @@ -1,51 +0,0 @@ - - - -\version "1.3.117"; - -\include "gigue-urtext.ly"; - -gigueCelloGlobal = \notes{ - \time 3/8; - \key f \major; - \clef bass; - \repeat "volta" 2 { - \partial 8; - s8 - s4.*31 - s4 - %\partial 4; - } \repeat "volta" 2 { - % urg - %s16 \partial 8; s16 - s8 - s4.*43 - s4 - %\partial 4; - } -} - -gigueCelloScripts = \notes{ -} - -gigueCelloStaff = \context Staff < - \gigue - \gigueCelloGlobal - \gigueCelloScripts -> - -\score{ - \gigueCelloStaff - \paper{ - \translator{ - \VoiceContext - autoBeamSettings \override #'(end 1 8 * *) = #(make-moment 3 4) - autoBeamSettings \override #'(end 1 16 * *) = #(make-moment 3 4) - } - } - \midi{ \tempo 4 = 60; } - \header{ - opus= "" ; -piece = "Gigue"; } -} - diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-urtext.ly index 8ca129d245..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-urtext.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-urtext.ly @@ -1,106 +0,0 @@ -% gigue-urtext.ly -% belongs together with -cello.ly and -viola.ly -% (who is going to make a -violin.ly?) - -%{ -Well, there are still some scripts in this "urtext". -But merging melodic and scripts doen't work too well yet (see viola_scripts). -%} - -% -% this must be redone a bit: -% -% * slurs/ties in two different threads (like beams): urtext, and additionals -% - -gigueNotes = \context Staff \notes \relative c { - \context Voice=i - a'8 | - d,4 bes'8 | cis,4 g'8 | f16 e f g a8 | - d,4 d'8 | e,16(f)g8 bes | c,16(d)e8 c' | a16 g a bes c a | - %8 - f4-\trill a8 | b,()g' cis, | d f16( c bes )a | g8()es' a, | - bes d16( a g )f | e!8()cis' bes' a g16( f e)d | - %15 - \stemUp e(f g e f)d \stemBoth e8()a, c'! | - \stemUp c16(d es c d)a bes8 r bes | - bes16(c d bes c)g a8 r a | - %21 - b16()c d()b c()a | d()e f()d e()c | b()c d()b c()a | e'4 gis,8 | - a16()b c()a d()b | - a()b c()a d()b | - %27 - a()b c()a d()b | - a()b c()a d()b | - f'8 e16()d c()b \stemBoth | - e,, e''(d)c b()gis | a f(e)d e()cis | a4 - %33 - c'!8 | - f,4 d'8 | e,4 bes'8 | a16 g a bes c8 | f,4 a8 | - d,16(e)f d(c)b | g' a g f e d | - %39 - e(d)e f(g)e | c4 e8 | fis16(g)a c, bes a | - bes(d)g bes, a g | fis(a)c es d c | bes(a)bes d g bes | - %45 - as(g)as fis g es' | d,8 g fis | g16 es(d)c d()bes | g4 bes'8 - % what about this? - \stemUp\stemDown e,!16(f)g e f d\stemBoth - c(d e) c d bes | a(bes)c a bes g | f4 a'8 - % what about this? - \stemUp\stemDown d,16(e)f d e c\stemBoth bes(c)d bes c a - g16(a)bes g a f | e4 g'8 - %57 - a,16(b cis d)e g-. | f(g a cis )d f, | e(f g a)bes d,-. | - cis(d)e a, bes g - \stemUp - d'()e f()d g()e | - %62 - d()e f()d g()e | - d()e f()d g()e | - d()e f()d g()e | - \stemBoth - cis bes'(a g f)e | f, a' g f e cis | - %67 - d bes a g a f | d a' d e f d | - \stemUp es()f g()es f()d | g()a bes()g a()f es()f g()es f()d | - %72 - cis'4 \stemBoth d16()c | bes(a g f e)d | cis(b a g f)e | d f a d f a | - d4 - \bar "|."; -} - -gigueB = \context Staff \notes \relative c { - \context Voice=ii - \stemDown - s8 - s4.*14 - a4. | s d | d8 g, d' | e4. | f8 f, f' | - %21 - d d d d d d d d d | - % one could type r here... - d4 s8 | <e c> s s | d s s | e s s | f s s | gis s4 | - s4. s s4 - %33 - s8 - s4.*16 - \stemUp bes4 s8 - s4. s s - a8 s4 \stemDown - s4.*7 - <a,8 f> s s g s s a s s bes s s - s4.*4 - g8 g g g g g g g g - %72 - <g4 e'> -} - -gigueA = \context Voice \notes< - \gigueNotes -> - -gigue = \notes< - \gigueA - \gigueB -> - -\version "1.3.117"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly index d8efcf4288..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly @@ -1,49 +0,0 @@ - - -\version "1.3.117"; - -\include "gigue-urtext.ly"; - -gigueViolaGlobal = \notes{ - \time 3/8; - \key f \major; - \clef alto; - \repeat "volta" 2 { - \partial 8; - s8 - s4.*31 - s4 - \partial 4; - } \repeat "volta" 2 { - % urg - s16 \partial 8; s16 - s4.*43 - s4 - \partial 4; - } -} - -gigueViolaScripts = \notes{ -} - -gigueViolaStaff = \context Staff < - \notes \transpose c'' \gigue - \gigueViolaGlobal - \gigueViolaScripts -> - -\score{ - \gigueViolaStaff - \paper{ - \translator{ - \VoiceContext - autoBeamSettings \override #'(end 1 8 * *) = #(make-moment 3 4) - autoBeamSettings \override #'(end 1 16 * *) = #(make-moment 3 4) - } - } - \midi{ \tempo 4 = 60; } - \header{ - opus= "" ; - piece ="Gigue"; } -} - diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/header.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/header.ly index 537082799a..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/header.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/header.ly @@ -1,41 +0,0 @@ -%{ -Header for Solo Cello Suite no. 2. - -This is the 2nd cello suite by Bach, in versions for both cello and -viola. It was coded by JCN following a Baerenreiter -urtext. Optionally you can add or remove slurs etc. to taste. - -The setup of the files is slightly complicated, because sharing of -information is taken to the extreme. - -%} - -\header{ - title = "Solo Cello Suites"; - subtitle = "Suite II"; - opus = "BWV 1008"; - composer = "Johann Sebastian Bach (1685-1750)"; - enteredby = "JCN"; - instrument = \instrument; - - % mutopia headers. - mutopiatitle = "Solo Cello Suites, Suite II"; - mutopiacomposer = "J.S.Bach (1685-1750)"; - mutopiaopus = "BWV1008"; - mutopiainstrument = \intrument; - date = "1710s, 1720s"; - source = "Baerenreiter urtext"; - style = "Baroque"; - copyright = "Public Domain"; - maintainer = "Jan Nieuwenhuizen"; - maintainer_email = "janneke@gnu.org"; - lastupdated = "2001/Jan/31"; - mutopiapublicdomain = "\\parbox{\hsize}{\\thefooter\\quad\\small - \\\\This music is part of the Mutopia project, - \\texttt{http://www.mutopiaproject.org/}\\\\It has been typeset - and placed in the public domain by " + \maintainer + - ".\\\\Unrestricted modification and redistribution is permitted - and encouraged---copy this music and share it.}"; - tagline = \mutopiapublicdomain; - footer = "Mutopia-2001/01/31-2"; -} diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly index 087edfd4ea..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly @@ -1,105 +0,0 @@ - - - -\version "1.3.117"; - -\include "menuetto-urtext.ly"; - -menuettoICelloGlobal = \notes{ - \context Voice=i - \time 3/4; - \key f \major; - \clef bass; - \repeat "volta" 2 { - \skip 2.*8; - } - \repeat "volta" 2 { - \skip 2.*1; - %\slurDotted - \skip 2.*14; - \emptyText - s2._"Fine" - } -} - -menuettoICelloScripts = \notes{ - \context Voice=i - s2. - s8^"~"^1_2_4 s8 s4 s^4 - s4^0_1 s_4 s - s2.*5 - s2^3 s4 - s4 s8_1 s s4 - s2. - s2 s8^4 s - s2. - s8 s^2 s^4 - s_2 s s s_0 s_4 s_1 - s2.*2 - s4^3_1 - s^1_3 s4 - s2. - s4_2 s2 - s8^2_3 s s s^1 s4^1 -} - -menuettoICelloStaff = \context Staff < - \menuettoI - \menuettoICelloGlobal -% \menuettoICelloScripts -> - -\score{ - \menuettoICelloStaff - \paper{ - \translator{ - \VoiceContext - autoBeamSettings \override #'(end 1 8 * *) = #(make-moment 3 4) - } - } - \midi{ \tempo 4 = 110; } - \header{ - opus= "" ; - piece ="Menuetto I"; } -} - -menuettoIiCelloGlobal = \notes{ - \context Voice=i - \time 3/4; - \key d \major; - \clef bass; - \repeat "volta" 2 { - \skip 2.*8; - } - \repeat "volta" 2 { - \skip 2.*1; - %\slurDotted - \skip 2.*14; - \emptyText - s2._"Menuetto I da Capo" - } - -} - -menuettoIiCelloStaff = \context Staff < - \menuettoIi - \menuettoIiCelloGlobal -% \menuettoIiCelloScripts -> - -\score{ - \menuettoIiCelloStaff - \paper{ - \translator{ - \VoiceContext - autoBeamSettings \override #'(end 1 8 * *) = #(make-moment 3 4) - - } - } - \midi{ \tempo 4 = 130; } - \header{ - piece = "Menuetto II"; - opus = ""; - } -} - diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-urtext.ly index 33b8dc2f10..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-urtext.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-urtext.ly @@ -1,153 +0,0 @@ -% menuetto-urtext.ly -% belongs together with -cello.ly and -viola.ly -% (who is going to make a -violin.ly?) - -%{ -Well, there are still some scripts in this "urtext". -But merging melodic and scripts doen't work too well yet (see viola_scripts). -%} - -menuettoIA = \context Staff \notes \relative c { - \context Voice=i - <d2\f f a> bes'4 | - bes8 a bes g a4 | - <d,4 bes> g f8 e | - f8( e )d cis b a | - <d2 f a> bes'!4 | - bes8 a bes g c!4 | - %7 - <a f> <d f, bes,> <e g, g,> | - <cis2. e, a,> | - <a2\f e'> d8 e16 f | - e8 d cis e a, g | - a4 d cis | - g'8 f e f d c | - %13 - bes2 c4 | - a8 g a f <d'4 e, bes> | - <c f, a,> bes8 a g a | - f8 e f a g bes | - <a2^\trill fis> bes4 | - c8 bes c a fis4^\trill | - %19 -% dispute -% <bes,4 g' d'> <c, g' c> < d,8 bes'(> )a | - <d'4 g, bes,> <c g c,> bes8 a | - c8 bes a bes g bes | - d4 cis d | - g,8 f g e f4 | - g,8 g' <{e4.^\trill d8 } a4.> ~ | - <d2. a d,> | -} - -menuettoIB = \context Staff \notes \relative c { - \context Voice = ii - \stemDown - \skip 2.*1; | - <e8 c> \skip 8*5; | - \skip 2.*1; | - a,8 \skip 8*5; | - \skip 2.*1; | - e'8 \skip 8*5; | - \stemBoth - s2.*2 | - s2. - g8 \skip 8*5; | - f2 e4 - d8 \skip 8*5; | - g4 () f e - f8 \skip 8*5; | - \skip 2.*3; | - es8 \skip 8*3; d4 | - \skip 4*2; d4 | - <d8 g,> \skip 8*5; | -% dispute -% g2 f4 | - g4 \skip 4*1; f4 | - cis8 \skip 8*3; d4 | - s2.*2 - \bar "|."; -} - -% UGH, fix this like in sarabande -menuettoIAVoiceUrg = \notes{ - \context Voice = i - \skip 2.*1; \stemUp - \skip 2.*1; \stemBoth - \skip 2.*1; \stemUp - \skip 2.*1; \stemBoth - \skip 2.*1; \stemUp - \skip 2.*1; \stemBoth - \skip 2.*3; \stemUp - \skip 2.*1; \stemUp - \skip 2.*3; - \skip 4*2; \stemBoth - \skip 4*2; \stemUp - \skip2.*1; \stemUp - \skip 4*2; \stemBoth - \skip2.*1; \stemUp - \skip 2.*1; \stemBoth - \skip 2*1; \stemUp - \skip 4*1; - \skip 2.*4; \stemBoth - \skip 2.*1; -} - -menuettoIAVoiceUrgUrg = \notes< - \menuettoIAVoiceUrg - \menuettoIA -> - -menuettoIBVoiceUrg = \notes{ - \context Voice=ii - \stemDown - % urg urg, huh? - \skip 2.*8; \stemDown -} - -menuettoIBVoiceUrgUrg = \notes< - \menuettoIBVoiceUrg - \menuettoIB -> - -menuettoI = \context Staff \notes< - \repeat "volta" 2 { \menuettoIAVoiceUrgUrg } - \repeat "volta" 2 { \menuettoIBVoiceUrgUrg } -> - -menuettoIi = \context Staff\notes \relative c { - \context Voice=i - fis4^\trill d8 e fis g | - a4 fis, a' | - g,8 b e4 g | - d8( cis )b cis a g | - % ugh, forcing knee - % Lily's not yet smart enough to decide for herself. - \stemUp fis \stemBoth d''( cis b a )g | - b( a g fis e )d | - %7 - cis d g4 fis8( g16 )a | - <\stemDown a,2. \stemUp e'> | - \stemBoth - cis4^\prall e8( d cis )b | - cis4 g, cis' | - fis,8()a d4 fis | - b,8()a g()fis g b | - %13 - e, d'( cis )b cis()ais | - d, b'( a! g fis )e | - g( fis e d cis )d | - b( cis d e fis )g | - a( g fis g a )b | - c4 dis,, c'' | - %19 - b8()a c( b a )g | - fis() g a()fis g()e | - cis4^\trill a8 b cis d | - e( fis g )b a4 | - g8()fis e()d e()cis | - d2. - \bar "|."; -} - -\version "1.3.117"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly index 990842621a..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly @@ -1,102 +0,0 @@ - - - -\version "1.3.117"; - -\include "menuetto-urtext.ly"; - -menuettoIViolaGlobal = \notes{ - \context Voice=i - \time 3/4; - \key f \major; - \clef alto; - \repeat "volta" 2 { - \skip 2.*8; - \clef violin; - \skip 2.*1; - } \repeat "volta" 2 { - %\slurDotted - \skip 2.*3; - \clef alto; - \skip 2.*11; - \emptyText - s2._"Fine" - } -} - -menuettoIViolaScripts = \notes{ - \context Voice=i - s2. - s8^"~"^1_2_4 s8*5 - s2.*5 - s4 s-\upbow s-\downbow - s2.-\upbow - s2.*5 - s2 s4-\upbow - s4-\downbow s2 - s2.*1 - s2^0 s4 - s2.*1 - s4-\downbow s4-\upbow -} - -menuettoIViolaStaff = \context Staff < - \notes \transpose c'' \menuettoI - \menuettoIViolaGlobal -% \menuettoIViolaScripts -> - -\score{ - \menuettoIViolaStaff - \paper{ - gourlay_maxmeasures = 7.0; - \translator{ - \VoiceContext - autoBeamSettings \override #'(end 1 8 * *) = #(make-moment 3 4) - - } - } - \midi{ \tempo 4 = 110; } - \header{ - opus= "" ; - piece ="Menuetto I"; - } -} - -menuettoIiViolaGlobal = \notes{ - \context Voice=i - \time 3/4; - \key d \major; - \clef alto; - \repeat "volta" 2 { - \skip 2.*8; - } \repeat "volta" 2 { - \skip 2.*1; - %\slurDotted - \skip 2.*14; - \emptyText - s2._"Menuetto I da Capo" - } -} - -menuettoIiViolaStaff = \context Staff < - \notes \transpose c'' \menuettoIi - \menuettoIiViolaGlobal -% \menuettoIiViolaScripts -> - -\score{ - \menuettoIiViolaStaff - \paper{ - \translator{ - \VoiceContext - autoBeamSettings \override #'(end 1 8 * *) = #(make-moment 3 4) - - } - } - \midi{ \tempo 4 = 130; } - \header{ - opus= "" ; - piece ="Menuetto II"; } -} - diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly index d85d5a703a..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly @@ -1,33 +0,0 @@ - - - -\version "1.3.117"; - -\include "prelude-urtext.ly"; - -preludeCelloGlobal = \notes{ - \time 3/4; - \key f \major; - \clef bass; - \skip 2.*63; - \bar "|."; -} - -preludeCelloScripts = \notes{ -} - -preludeCelloStaff = \context Staff < - \prelude - \preludeCelloGlobal - \preludeCelloScripts -> - -\score{ - \preludeCelloStaff - \paper{ } - \midi{ \tempo 4 = 40; } - \header{ - opus= "" ; - piece ="Pr\\'elude"; } -} - diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-urtext.ly index 701327fce3..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-urtext.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-urtext.ly @@ -1,197 +0,0 @@ -% prelude-urtext.ly -% belongs together with -cello.ly and -viola.ly -% who is going to make a -violin.ly? - -%{ -Well, there are still some scripts in this "urtext". -But merging melodic and scripts doen't work too well yet see viola_scripts . -%} - -preludeNotes = \notes \relative c { - \context Voice=i - d8 f a4 ~ a16 f e d | - cis e g a bes4 ~ bes16 a g f | - e g bes cis e8. bes16 a16 g f e | - f g a f d8 c! bes a | - %5 - bes16 d f a d8. c16 bes a g f | - e g bes d c a bes g f e g bes, | - a c e g c8. bes16 a g f e | - d f a c bes g a f e f a f | - %9 - g, bes d f bes8. a16 g f e g | - a, c e g c a e g f a d, es | - d a bes d g bes a c bes g d' f, | - %12 - e b c e g d e c bes g e' bes | - f8 a c4 ~ c16 bes a g | - fis a bes c d, c' bes a fis' es d c | - bes a g bes d4 ~ d16 c bes a | - %16 - gis b c d e, d' c b gis' f e d | - c b a c f e f gis a f d c | - b d gis b d8. c16 b a gis a | - %19 - c, e a c e8. c16 b a gis a | - d, f a d f8. e16 d c b d | - e, d' c b a c b a d, b' a gis | - %22 - c, a' g! f cis g' f e d f e d | - gis, d' e f b f e d gis, d' c b | - a b c e a b c a e c a g! | - % 25 - % B"arenreiter and Chester say "c bes c" - fis a c d es8. d16 c bes c a' | - bes, a bes d g, es' f g a, g' f es | - d c d f bes, g' a bes cis, bes' a g | - % 28 - f e f a d, bes' c! d e,! d' c bes | - a g a c f, d' e f g, f' e d | - cis g f e a, e' f g cis bes! a g | - %31 - f g a cis d a g f a f e d | - gis d e f a, f' e d gis f! e d | - cis b cis e a e cis e a, g'! f e | - %34 - f e f a d a f a d, c'! bes a | - g f g cis e cis g cis a, g' f e | - d a' d e f d a f d c'! bes a | - %37 - g a bes d, es f g a bes g es' g, | - f g a cis, d e! f g a f d' f, | - e f g bes, a b cis d e bes g' bes, | - %40 - cis,8 a' g'4 ~ g16 bes a g | - f e d e f d a' f d' a f d | - gis,8 f' d'4 ~ d16 f e d | - cis b a b cis a d a e' a, f' a, | - %44 - g' e cis e a, cis e f g f g e | - f d cis d a cis d e f e f d | - e cis b cis a b cis d e d e cis | - %47 - d b a b f gis b cis d cis d b | - \stemUp <cis4^\fermata e,> \stemBoth r r | - bes16 g fis g es g d g es g bes d, | - cis-- e! g a bes8. a16 g fis g e' | - %51 - f,! d' bes g a f e g f d cis e | - d bes a g fis-- a c! es d c bes a | - bes g fis g es g d g es g bes d, | - %54 - \stemUp g'8. f16 - e!16 d cis b a g f e \stemBoth | - d-- a' d e f e d c! bes! a g f | - e-- a cis e g f e d cis b a g | - f a d f a d, f a d bes! c! a | - g, d' g a bes g fis g es' g, d' g, | - \stemUp <cis2. g> | <d f,> | <d e,> | <cis e,> | <d f,> -} - -preludeB = \notes \relative c { - \context Voice=ii - \stemDown - s2.*47 - %48 - g4 s2 | - s2.*5 - %54 - <cis,4 bes'> s2 | - s2.*4 - a'2. a a a <a d,> -} - - -figB = \notes{ s16( s s )s } -figC = \notes{ s16( s ) s s } -figD = \notes{ s16 s( s )s } -figE = \notes{ s16( s s s s s s )s } -figF = \notes{ s8.()s16 } - -% of course, i just type fig1, and add the \ and the silly $ later -preludeSlurs = \notes{ - \context Voice=i - s4 s4 \figD | - \figB s4 \figD | - \figB s4 \figD | - \figB s8( s s )s | - %5 - \figD s2 | - s2. | - s2 \figB | - s2 \figB | - s2 \figB | - %10 - \figD \figD \figB | - \figD \figD s4 | - \figD s2 | - s4 s4 \figD | - \figD \figD \figD | - %15 - s4 s s16 s s8 | - \figD \figD s4 | - s2. | - \figB s4 \figB | - s2 \figB | - %20 - \figB s4 \figB | - s4 \figD \figD | - \figD \figD \figD | - s2 \figB | - s2. | - %25 - \figD s4 \figB | - \figC \figD \figD | - \figC \figD \figD | - \figC \figD s4 | - \figC \figD \figD | - %30 - \figD \figD \figB | - \figC \figD \figD | - s2. | - s4 \figD \figD | - \figC \figD \figD | - %35 - \figC s2 | - s2. | - s2. | - s2. | - s2. | - %40 - s4 s4 \figD | - \figB s2 | - s2 \figD | - \figC s2 | - s2. | - %45 - s2. | - s4 \figC s4 | - \figD \figC s4 | - s2. | - \figD s2 | - %50 - \figD s4 \figC | - s2. | - s4 \figD s4 | - s2 \figC | -% s8()s \figE | -% s8.()s16 \figE | - \figF \figE | - %55 - \figD \figE | - \figD \figE | - \figD \figD s4 | - s4 \figD s4 | -} - -preludeA = \notes< - \preludeNotes - \preludeSlurs -> - -prelude = \context Staff \notes< - \preludeA - \preludeB -> - -\version "1.3.117"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly index cf17a8bb71..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly @@ -1,33 +0,0 @@ - - - -\version "1.3.117"; - -\include "prelude-urtext.ly"; - -preludeViolaGlobal = \notes{ - \time 3/4; - \key f \major; - \clef alto; - \skip 2.*63; - \bar "|."; -} - -preludeViolaScripts = \notes{ -} - -preludeViolaStaff = \context Staff < - \notes \transpose c'' \prelude - \preludeViolaGlobal - \preludeViolaScripts -> - -\score{ - \preludeViolaStaff - \paper{ } - \midi{ \tempo 4 = 40; } - \header{ - opus= "" ; - piece ="Pr\\'elude"; } -} - diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly index c63c2693f8..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly @@ -1,36 +0,0 @@ - - - -\version "1.3.117"; - -\include "sarabande-urtext.ly"; - -sarabandeCelloGlobal = \notes{ - \time 3/4; - \key f \major; - \clef bass; - \repeat "volta" 2 { - s2.*12 - } \repeat "volta" 2 { - s2.*16 - } -} - -sarabandeCelloScripts = \notes{ -} - -sarabandeCelloStaff = \context Staff < - \sarabande - \sarabandeCelloGlobal - \sarabandeCelloScripts -> - -\score{ - \sarabandeCelloStaff - \paper{ } - \midi{ \tempo 4 = 40; } - \header{ - opus= "" ; - piece ="Sarabande"; } -} - diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-urtext.ly index eaf25ee969..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-urtext.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-urtext.ly @@ -1,93 +0,0 @@ -% sarabande-urtext.ly -% belongs together with -cello.ly and -viola.ly -% (who is going to make a -violin.ly?) - -%{ -Well, there are still some scripts in this "urtext". -But merging melodic and scripts doen't work too well yet (see viola_scripts). -%} - -sarabandeA = \context Staff \notes \relative c { - \context Voice=i - \stemUp d8. e16 e4.-\trill d16 e | - f4. \stemBoth e8 d c | - [bes g'] f e16(f g a bes)d, | - cis4.-\trill b8 a g | - % copy bar 1, half bar 2 - \stemUp d'8. e16 f4.-\trill d16 e | - %5 - f4. \stemBoth d8 e f | - g bes16()a c()bes a()g d'8 f, | - \stemUp e4.-\trill \stemBoth d8 c bes | - %8 - \stemUp f' g16()a a4. g16()f | - g8 a16()bes bes4. c16()d | - % 11 - \stemBoth e,8 f c, g' f' e | - f4 f,2 | - \stemUp a'4 a4.-\trill bes8 | - c bes16 a \stemBoth fis8.-\trill es16 d8 c | - bes g' a, fis' es' d | - %16 - \stemUp bes4.-\trill \stemBoth a8 g f! | - e bes a f' g a | - d, as g es' f g | - cis, bes' a g16 f e!8 f16 d | - cis8 e16 a a,8. g'16 f8()e | - %21 - \stemUp d e16()f f4. e16()d | - e8 f16()g g4. a16()bes | - a8 cis16 d d,8 e16 f32 g f8-\trill e16()d | - d4 d,16 a'( b cis d e f )g | - %25 - a(b c)b c4. b16()a | - b cis d cis d4. e16()f | - \stemBoth d(cis)d f, a,8 e' d' cis | - d4 d,,2 | -} - -sarabandeB = \context Staff \notes \relative c { - \context Voice=ii - \stemDown -% dispute -% d4 a2 | -% this avoids the clash bug - d8. s16 a2 | - <a4. d,> s8*3 | - s2.*2 - %5 -%disp -% <a4 f> a2 | - <a8. f> s16 a2 | - <a4. d,> s8*3 | - s2. | - % 8 - <g4. c,> s8*3 | - a4 <bes4. d> r8 | - %10 - bes4 <g2 f'> | - s2.*2 | - f'8 es es4. r8 | - d4 s2 | - %15 - s2. | - <d4. g,> s8*3 | - s2.*4 | - %21 - bes4 g2 | - g4 <bes4. cis,> s8 | - <d8 a f> r r g, a4 | - s2. | - f'4 fis4. s8 | - <d4 g,> gis4. s8 | - s2.*2 - \bar "|."; -} - - -sarabande = \context Staff \notes< - \sarabandeA - \sarabandeB -> - -\version "1.3.117"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly index a797f92027..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly @@ -1,33 +0,0 @@ -\version "1.3.117"; - -\include "sarabande-urtext.ly"; - -sarabandeViolaGlobal = \notes{ - \time 3/4; - \key f \major; - \clef alto; - \repeat "volta" 2 { - s2.*12 - } \repeat "volta" 2 { - s2.*16 - } -} - -sarabandeViolaScripts = \notes{ -} - -sarabandeViolaStaff = \context Staff < - \notes \transpose c'' \sarabande - \sarabandeViolaGlobal - \sarabandeViolaScripts -> - -\score{ - \sarabandeViolaStaff - \paper{ } - \midi{ \tempo 4 = 40; } - \header{ - opus= "" ; - piece ="Sarabande"; } -} - diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-cello.ly index 12474c7766..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-cello.ly @@ -1,4 +0,0 @@ -instr="cello" -instrument="Violoncello" -\include "solo-cello-suite-ii.ly" - diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-viola.ly index 09e45eabc8..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-viola.ly @@ -1,4 +0,0 @@ -instr="viola" -instrument="Viola" -\include "solo-cello-suite-ii.ly" - diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/solo-cello-suite-ii.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/solo-cello-suite-ii.ly index 04f1bf6d1f..e69de29bb2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/solo-cello-suite-ii.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/solo-cello-suite-ii.ly @@ -1,21 +0,0 @@ -\include "header.ly" - -\paper { -linewidth = 180.\mm; -% \translator { \BarNumberingStaffContext } -} - -% \include "prelude-" + \instr + ".ly"; -i = "prelude-" + \instr + ".ly" -ii = "allemande-" + \instr + ".ly" -iii = "courante-" + \instr + ".ly" -iv = "sarabande-" + \instr + ".ly" -v = "menuetto-" + \instr + ".ly" -vi = "gigue-" + \instr + ".ly" - -\include \i -\include \ii -\include \iii -\include \iv -\include \v -\include \vi @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Lilypond 1.2.8\n" -"POT-Creation-Date: 2001-03-06 12:36+0100\n" +"POT-Creation-Date: 2001-03-21 16:06+0100\n" "PO-Revision-Date: 1999-09-18 01:30+0200\n" "Last-Translator: Erwin Dieterich <bamse@gmx.de>\n" "Language-Team: LANGUAGE <de@li.org>\n" @@ -13,117 +13,137 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: ENCODING\n" -#: ly2dvi.py:67 main.cc:95 main.cc:109 +#: ly2dvi.py:86 main.cc:95 main.cc:105 msgid "this help" msgstr "Diese Hilfe" -#: ly2dvi.py:68 +#: ly2dvi.py:87 msgid "change global setting KEY to VAL" msgstr "" -#: ly2dvi.py:69 +#: ly2dvi.py:88 #, fuzzy msgid "generate PostScript output" msgstr "Degenerierte Zwangsbedingungen" -#: ly2dvi.py:70 +#: ly2dvi.py:89 msgid "keep all output, and name the directory ly2dvi.dir" msgstr "" -#: ly2dvi.py:71 +#: ly2dvi.py:90 msgid "don't run LilyPond" msgstr "" -#: ly2dvi.py:72 main.cc:104 main.cc:119 +#: ly2dvi.py:91 main.cc:115 +#, fuzzy +msgid "verbose" +msgstr "Sei geschwДtzig" + +#: ly2dvi.py:92 main.cc:104 main.cc:114 msgid "print version number" msgstr "Zeige die Versionsnummer" -#: ly2dvi.py:73 main.cc:106 main.cc:121 +#: ly2dvi.py:93 main.cc:106 main.cc:116 msgid "show warranty and copyright" msgstr "Zeige Garantie und Urheberrechte" -#: ly2dvi.py:74 +#: ly2dvi.py:94 msgid "dump all final output into DIR" msgstr "" -#: ly2dvi.py:75 main.cc:113 +#: ly2dvi.py:95 main.cc:109 msgid "write Makefile dependencies for every input file" msgstr "Schreibe Makefile-AbhДngigkeiten fЭr jede Eingabedatei" -#: ly2dvi.py:101 +#: data-file.cc:118 input.cc:85 ly2dvi.py:123 midi-parser.cc:100 warn.cc:23 +msgid "warning: " +msgstr "Warnung: " + +#: input.cc:90 ly2dvi.py:128 ly2dvi.py:263 warn.cc:9 warn.cc:17 +msgid "error: " +msgstr "Fehler: " + +#: ly2dvi.py:130 #, fuzzy msgid "Exiting ... " msgstr "Linie ... " -#: ly2dvi.py:120 +#: ly2dvi.py:149 #, fuzzy, c-format -msgid "Reading `%s'" +msgid "Reading %s..." msgstr "Uralt-Bitte: `%s'" -#: ly2dvi.py:124 mapped-file-storage.cc:87 mudela-stream.cc:111 +#: lilypond-stream.cc:111 ly2dvi.py:153 mapped-file-storage.cc:87 #: paper-stream.cc:40 scores.cc:48 simple-file-storage.cc:44 text-stream.cc:23 #, c-format msgid "can't open file: `%s'" msgstr "Kann die Datei %s nicht Жffnen" -#: ly2dvi.py:187 +#: ly2dvi.py:216 #, fuzzy, c-format msgid "Usage: %s [OPTION]... FILE" msgstr "Verwendung: %s [OPTIONEN] ... [DATEI]" -#: ly2dvi.py:189 +#: ly2dvi.py:218 msgid "Generate .dvi with LaTeX for LilyPond" msgstr "" -#: ly2dvi.py:191 main.cc:119 main.cc:151 +#: ly2dvi.py:220 main.cc:119 main.cc:146 msgid "Options:" msgstr "Optionen:" -#: data-file.cc:118 input.cc:85 ly2dvi.py:195 midi-parser.cc:100 warn.cc:23 -msgid "warning: " -msgstr "Warnung: " - -#: ly2dvi.py:196 +#: ly2dvi.py:224 msgid "all output is written in the CURRENT directory" msgstr "" -#: ly2dvi.py:198 main.cc:123 main.cc:174 +#: ly2dvi.py:226 main.cc:123 main.cc:169 #, fuzzy, c-format msgid "Report bugs to %s" msgstr "Melde Fehler an" -#: ly2dvi.py:230 +#: ly2dvi.py:260 #, fuzzy, c-format msgid "Invoking `%s'" msgstr "Uralt-Bitte: `%s'" -#: input.cc:90 ly2dvi.py:234 warn.cc:9 warn.cc:17 -msgid "error: " -msgstr "Fehler: " - -#: ly2dvi.py:234 +#: ly2dvi.py:263 #, c-format msgid "command exited with value %d" msgstr "" -#: ly2dvi.py:236 +#: ly2dvi.py:265 msgid "(ignored)" msgstr "" -#: ly2dvi.py:277 +#: ly2dvi.py:301 +#, fuzzy, c-format +msgid "no such setting: %s" +msgstr "Kein solches instrument: `%s'" + +#: ly2dvi.py:309 #, c-format msgid "Analyzing `%s'" msgstr "" -#: ly2dvi.py:539 scores.cc:44 +#: ly2dvi.py:353 +#, c-format +msgid "no lilypond output found for %s" +msgstr "" + +#: ly2dvi.py:395 +#, fuzzy, c-format +msgid "invalid value: %s" +msgstr "UngЭltiger Buchstabe `%c'" + +#: ly2dvi.py:602 scores.cc:44 #, fuzzy, c-format msgid "dependencies output to %s..." msgstr "Ausgabe auf Papier auf %s..." -#: ly2dvi.py:540 -#, c-format -msgid "%s file left in `%s'" -msgstr "" +#: ly2dvi.py:603 +#, fuzzy, c-format +msgid "%s output to %s..." +msgstr "MIDI-Ausgabe nach %s..." #: data-file.cc:54 msgid "EOF in a string" @@ -232,12 +252,12 @@ msgstr "Kann die Schrift %s nicht finden, lade die Standardschrift." msgid "can't find default font: `%s'" msgstr "Kann Schrift `%s' nicht finden" -#: all-font-metrics.cc:172 includable-lexer.cc:50 scores.cc:137 +#: all-font-metrics.cc:172 includable-lexer.cc:51 scores.cc:137 #, c-format msgid "(search path: `%s')" msgstr "(Suchpfad: `%s')" -#: all-font-metrics.cc:173 parser.yy:1663 +#: all-font-metrics.cc:173 parser.yy:1681 msgid "Giving up" msgstr "" @@ -317,7 +337,7 @@ msgstr "Unerlaubte Subtraktion: nicht Teil eines Akkords: %s" msgid "invalid inversion pitch: not part of chord: %s" msgstr "Unerlaubter Baъton: gehЖrt nicht zum Akkord: %s" -#: chord-tremolo-engraver.cc:141 +#: chord-tremolo-engraver.cc:141 percent-repeat-engraver.cc:162 #, fuzzy msgid "unterminated chord tremolo" msgstr "Unbeendeter Bindestrich" @@ -327,7 +347,7 @@ msgstr "Unbeendeter Bindestrich" msgid "no one to print a tremolos" msgstr "Keiner darf eine Wiederholungsklammer drucken" -#: collision.cc:116 +#: collision.cc:118 msgid "Too many clashing notecolumns. Ignoring them." msgstr "Zu viele aneinanderstoъende Notenspalten. Ich ignoriere sie." @@ -360,7 +380,7 @@ msgstr "Habe schon einen Balken" msgid "already have a decrescendo" msgstr "Habe schon einen Balken" -#: dynamic-engraver.cc:307 +#: dynamic-engraver.cc:318 #, fuzzy msgid "unterminated (de)crescendo" msgstr "Nichtbeendetes Crescendo" @@ -378,7 +398,7 @@ msgstr "" msgid "no one to print a repeat brace" msgstr "Keiner darf eine Wiederholungsklammer drucken" -#: font-interface.cc:220 +#: font-interface.cc:237 msgid "couldn't find any font satisfying " msgstr "" @@ -414,7 +434,7 @@ msgstr "Unbeendeter Bindestrich" msgid "Nothing to connect hyphen to on the left. Ignoring hyphen request." msgstr "" -#: includable-lexer.cc:48 lily-guile.cc:139 midi-score-parser.cc:24 +#: includable-lexer.cc:49 lily-guile.cc:139 midi-score-parser.cc:24 #: scores.cc:136 scores.cc:142 #, c-format msgid "can't find file: `%s'" @@ -451,90 +471,85 @@ msgstr "" msgid "Huh? Melismatic note found to have associated lyrics." msgstr "" -#: main.cc:108 +#: main.cc:104 msgid "EXT" msgstr "EXT" -#: main.cc:108 +#: main.cc:104 #, fuzzy msgid "use output format EXT (scm, ps, tex or as)" msgstr "Benutze das Ausgabeformat EXT" -#: main.cc:110 +#: main.cc:106 #, fuzzy msgid "FIELD" msgstr "DATEI" -#: main.cc:110 +#: main.cc:106 msgid "write header field to BASENAME.FIELD" msgstr "" -#: main.cc:111 main.cc:114 +#: main.cc:107 main.cc:110 msgid "DIR" msgstr "DIR" -#: main.cc:111 +#: main.cc:107 msgid "add DIR to search path" msgstr "HДnge DIR an den Suchpfad an" -#: main.cc:98 main.cc:112 +#: main.cc:98 main.cc:108 msgid "FILE" msgstr "DATEI" -#: main.cc:112 +#: main.cc:108 msgid "use FILE as init file" msgstr "Verwende FILE als Initialisierungsdatei" -#: main.cc:114 +#: main.cc:110 msgid "prepend DIR to dependencies" msgstr "" -#: main.cc:115 +#: main.cc:111 #, fuzzy msgid "produce MIDI output only" msgstr "Nur Midiausgabe" -#: main.cc:116 +#: main.cc:112 #, fuzzy msgid "NAME" msgstr "BASENAME" -#: main.cc:116 +#: main.cc:112 #, fuzzy msgid "write output to NAME" msgstr "Schreibe die Ausgabe in BASENAME[-x].Erweiterung" -#: main.cc:117 +#: main.cc:113 msgid "inhibit file output naming and exporting" msgstr "UnterdrЭcke die automatische Benennung von Ausgabedateien und Export" -#: main.cc:103 main.cc:118 -msgid "don't timestamp the output" -msgstr "Keine Datumsangabe auf der Ausgabe" - -#: main.cc:120 -#, fuzzy -msgid "verbose" -msgstr "Sei geschwДtzig" +#: main.cc:117 +msgid "EXPR" +msgstr "" -#: main.cc:122 -msgid "write midi ouput in formatted ascii" +#: main.cc:117 +msgid "evalute EXPR as Scheme after .scm init is read" msgstr "" #. #. No version number or newline here. It confuses help2man #. -#: main.cc:139 +#: main.cc:134 #, c-format msgid "Usage: %s [OPTION]... [FILE]..." msgstr "Benutzung: %s [OPTIONEN] ... [DATEI] ..." -#: main.cc:141 +#: main.cc:136 #, fuzzy msgid "Typeset music and or play MIDI from FILE" msgstr "Setze Musik oder spiele MIDI von DATEI" -#: main.cc:145 +#: main.cc:140 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" @@ -544,11 +559,11 @@ msgstr "" "NotenblДtter erzeugen. Dazu verwendet es eine eigene Beschreibungssprache.\n" "lilyPond ist Teil des GNU-Projekts\n" -#: main.cc:155 +#: main.cc:150 msgid "This binary was compiled with the following options:" msgstr "Diese Programm wurde mit den folgenden Optionen Эbersetzt:" -#: main.cc:55 main.cc:182 +#: main.cc:55 main.cc:177 #, c-format msgid "" "This is free software. It is covered by the GNU General Public License,\n" @@ -561,17 +576,17 @@ msgstr "" "einhalten. Wenn Sie das Programm mit `%s --warranty starten, bekommen\n" "Sie mehr Informationen.\n" -#: main.cc:62 main.cc:189 main.cc:201 +#: main.cc:62 main.cc:184 main.cc:196 #, c-format msgid "Copyright (c) %s by" msgstr "Urheberrechte (Copyright) (c) %s bei" -#: main.cc:199 +#: main.cc:194 #, fuzzy msgid "GNU LilyPond -- The music typesetter" msgstr "GNU LilyPond -- Der Notensatz des GNU-Projekts" -#: main.cc:71 main.cc:207 +#: main.cc:71 main.cc:202 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" @@ -619,29 +634,37 @@ msgstr "unsinnige TonhЖhe" msgid "Transposition by %s makes accidental larger than two" msgstr "Transponieren um %s macht Vorzecihen grЖъer als zwei" -#: music.cc:222 +#: music.cc:224 msgid "ly_get_mus_property (): Not a Music" msgstr "" -#: music.cc:236 +#: music.cc:238 msgid "ly_set_mus_property (): Not a symbol" msgstr "" -#: music.cc:248 +#: music.cc:250 msgid "ly_set_mus_property (): not of type Music" msgstr "" +#: music.cc:264 +msgid "ly_make_music (): Not a string" +msgstr "" + +#: music.cc:284 +msgid "ly_music_name (): Not a music expression" +msgstr "" + #: music-output-def.cc:115 #, fuzzy, c-format msgid "can't find `%s' context" msgstr "Kann Partiturkontext nicht finden" -#: my-lily-lexer.cc:137 +#: my-lily-lexer.cc:138 #, fuzzy, c-format msgid "Identifier name is a keyword: `%s'" msgstr "name ist ein SchlЭsselbegriff (keyword) (`%s')" -#: my-lily-lexer.cc:157 +#: my-lily-lexer.cc:158 #, c-format msgid "error at EOF: %s" msgstr "Fehler am Dateiende(EOF): %s" @@ -650,7 +673,7 @@ msgstr "Fehler am Dateiende(EOF): %s" msgid "Parsing..." msgstr "Verarbeite..." -#: my-lily-parser.cc:55 +#: my-lily-parser.cc:57 #, fuzzy msgid "Braces don't match" msgstr "Klammern passen nicht zusammen" @@ -665,11 +688,11 @@ msgstr "Uralt-Bitte: `%s'" msgid "paper output to %s..." msgstr "Ausgabe auf Papier auf %s..." -#: mudela-stream.cc:93 paper-outputter.cc:94 performance.cc:102 +#: lilypond-stream.cc:93 paper-outputter.cc:85 performance.cc:95 msgid ", at " msgstr ", bei " -#: paper-outputter.cc:245 +#: paper-outputter.cc:232 #, fuzzy, c-format msgid "writing header field %s to %s..." msgstr "Schreibe Datei mit AbhДngigkeiten: `%s'..." @@ -678,7 +701,7 @@ msgstr "Schreibe Datei mit AbhДngigkeiten: `%s'..." msgid "Preprocessing elements..." msgstr "Verarbeite Element vor..." -#: paper-score.cc:113 +#: paper-score.cc:114 #, fuzzy msgid "Outputting Score, defined at: " msgstr "Gebe Partitur aus, definiert bei: " @@ -709,6 +732,16 @@ msgstr "" msgid "none of these in my family: `%s'" msgstr "" +#: percent-repeat-engraver.cc:108 +#, fuzzy +msgid "Don't know yet how to handle this percent repeat." +msgstr "Weiъ nicht, wie ich eine fehlende Tonart behandeln soll" + +#: percent-repeat-iterator.cc:53 +#, fuzzy +msgid "no one to print a percent" +msgstr "Keiner darf eine Wiederholungsklammer drucken" + #: performance.cc:51 msgid "Track ... " msgstr "StЭck ... " @@ -717,12 +750,12 @@ msgstr "StЭck ... " msgid "Creator: " msgstr "Erstellt von: " -#: performance.cc:116 +#: performance.cc:109 #, c-format msgid "from musical definition: %s" msgstr "von der musiaklischen Definition: %s" -#: performance.cc:171 +#: performance.cc:164 #, c-format msgid "MIDI output to %s..." msgstr "MIDI-Ausgabe nach %s..." @@ -789,7 +822,7 @@ msgstr "Habe Fehler gefunden, /* die Partitur wird nicht verarbeitet */" msgid "elapsed time: %.2f seconds" msgstr "verstrichene Zeit %.2f Sekunden" -#: score-engraver.cc:177 +#: score-engraver.cc:183 #, fuzzy, c-format msgid "unbound spanner `%s'" msgstr "UnbeschrДnkter Abstand `%s'" @@ -828,7 +861,9 @@ msgstr "Bindebogen Эbe den Rest?" msgid "unterminated slur" msgstr "Unbeendeter Bindebogen" -#: slur-engraver.cc:142 +#. How to shut up this warning, when Voice_devnull_engraver has +#. eaten start request? +#: slur-engraver.cc:144 #, fuzzy msgid "can't find start of slur" msgstr "Kann nicht beide Enden von %s finden" @@ -868,21 +903,23 @@ msgstr "Unbeendete LinienfortfЭhrung" msgid "can't find ascii character: %d" msgstr "Kann ASCII-Zeichen `%d' nicht finden" -#: tfm-reader.cc:105 -#, c-format -msgid "TFM header of `%s' has only %u word(s)" +#: tfm-reader.cc:106 +#, fuzzy, c-format +msgid "TFM header of `%s' has only %u word (s)" msgstr "TFM header von `%s' hat nur %u Wort(e)" -#: tfm-reader.cc:139 +#: tfm-reader.cc:140 #, fuzzy, c-format msgid "%s: TFM file has %u parameters, which is more than the %u I can handle" msgstr "%s: TFM-Datei hat %u Parameter. Das ist mehr als die" -#: tie-engraver.cc:211 tie-performer.cc:173 +#. How to shut up this warning, when no notes appeared because +#. they were suicided by Thread_devnull_engraver? +#: tie-engraver.cc:215 tie-performer.cc:173 msgid "No ties were created!" msgstr "Es wurden keine HaltebЖgen erzeugt!" -#: tie-engraver.cc:230 +#: tie-engraver.cc:234 msgid "lonely tie" msgstr "Einsamer Haltebogen" @@ -901,21 +938,21 @@ msgstr "эberprЭfung der Takte is fehlgeschlagen bei: %s" msgid "unknown translator: `%s'" msgstr "unbekannter эbersetzer `%s'" -#: translator-def.cc:96 +#: translator-def.cc:99 msgid "Program has no such type" msgstr "" -#: translator-def.cc:102 +#: translator-def.cc:105 #, fuzzy, c-format msgid "Already contains: `%s'" msgstr "EnthДlt schon ein `%s'" -#: translator-def.cc:103 +#: translator-def.cc:106 #, fuzzy, c-format msgid "Not adding translator: `%s'" msgstr "unbekannter эbersetzer `%s'" -#: translator-def.cc:215 +#: translator-def.cc:224 #, fuzzy, c-format msgid "can't find: `%s'" msgstr "Kann `%s' nicht finden" @@ -930,19 +967,19 @@ msgstr "Kann ein `%s', genannt `%s' weder finden noch erzeugen" msgid "can't find or create: `%s'" msgstr "Kann ein `%s' weder finden noch erzeugen" -#: translator-group.cc:403 +#: translator-group.cc:414 #, c-format msgid "" "Can't find property type-check for `%s'. Perhaps you made a typing error?" msgstr "" -#: translator-group.cc:417 +#: translator-group.cc:428 #, c-format msgid "Type check for `%s' failed; value `%s' must be of type `%s'" msgstr "" #. programming_error? -#: translator-group.cc:436 +#: translator-group.cc:447 msgid "ly-get-trans-property: expecting a Translator_group argument" msgstr "" @@ -963,119 +1000,191 @@ msgstr "" msgid "Oldest supported input version: %s" msgstr "дlteste noch unterstЭtze Version der Eingabe: %s" -#: parser.yy:471 +#: parser.yy:473 msgid "Wrong type for property value" msgstr "Falsche Type fЭr Besitz-Wert" -#: parser.yy:666 +#: parser.yy:672 msgid "More alternatives than repeats. Junking excess alternatives." msgstr "" -#: parser.yy:730 +#: parser.yy:736 msgid "Second argument must be a symbol" msgstr "" -#: parser.yy:735 +#: parser.yy:741 msgid "First argument must be a procedure taking 1 argument" msgstr "" -#: parser.yy:1211 +#: parser.yy:1236 msgid "Expecting string as script definition" msgstr "" -#: parser.yy:1221 +#: parser.yy:1246 msgid "Can't specify direction for this request" msgstr "" -#: parser.yy:1353 +#: parser.yy:1371 msgid "Expecting musical-pitch value" msgstr "" -#: parser.yy:1364 +#: parser.yy:1382 #, fuzzy msgid "Must have duration object" msgstr "Setze kЭrzeste Dauer (?)" -#: parser.yy:1373 parser.yy:1381 parser.yy:1661 +#: parser.yy:1391 parser.yy:1399 parser.yy:1679 #, fuzzy msgid "Have to be in Lyric mode for lyrics" msgstr "Um Text zu verarbeiten, muъ ich im Text-(Lyrics)-Modus sein" -#: parser.yy:1546 parser.yy:1575 +#: parser.yy:1564 parser.yy:1593 #, c-format msgid "not a duration: %d" msgstr "Keine Dauer: %d" -#: parser.yy:1584 +#: parser.yy:1602 #, fuzzy msgid "Have to be in Note mode for notes" msgstr "FЭr Noten muъ ich im Noten-(Note)-Modus sein" -#: parser.yy:1680 +#: parser.yy:1698 #, fuzzy msgid "Have to be in Chord mode for chords" msgstr "FЭr Akkorde muъ ich im Akkord-(Chord)-Modus sein" -#: parser.yy:1842 parser.yy:1860 +#: parser.yy:1860 parser.yy:1878 msgid "need integer number arg" msgstr "" -#: parser.yy:1846 +#: parser.yy:1864 msgid "Must be positive integer" msgstr "" -#: lexer.ll:165 +#: lexer.ll:166 msgid "EOF found inside a comment" msgstr "WДhrend eines Kommentar war die Datei zu Ende (EOF gefunden)" -#: lexer.ll:179 +#: lexer.ll:180 msgid "\\maininput disallowed outside init files" msgstr "" -#: lexer.ll:203 +#: lexer.ll:204 #, fuzzy, c-format msgid "wrong or undefined identifier: `%s'" msgstr "Unbekannter Identifier: `%s'" #. backup rule -#: lexer.ll:208 +#: lexer.ll:209 #, fuzzy msgid "Missing end quote" msgstr "Endnote fehlt" #. backup rule -#: lexer.ll:230 lexer.ll:234 +#: lexer.ll:231 lexer.ll:235 msgid "white expected" msgstr "Erwarte Weiъ" -#: lexer.ll:243 +#: lexer.ll:244 #, fuzzy msgid "Can't evaluate Scheme in safe mode" msgstr "Kann Scheme nicht interpretieren, wenn ich im sicheren Modus bin" -#: lexer.ll:335 +#: lexer.ll:336 msgid "Brace found at end of lyric. Did you forget a space?" msgstr "" -#: lexer.ll:439 +#: lexer.ll:440 #, c-format msgid "invalid character: `%c'" msgstr "UngЭltiger Buchstabe `%c'" -#: lexer.ll:520 +#: lexer.ll:521 #, c-format msgid "unknown escaped string: `\\%s'" msgstr "Unbekannte Sonder-Zeichenkette" -#: lexer.ll:602 +#: lexer.ll:603 #, fuzzy, c-format msgid "incorrect lilypond version: %s (%s, %s)" -msgstr "Falsche Version von Mudela: (s /%s, %s)" +msgstr "Falsche Version von Lilypond: %s (%s, %s)" -#: lexer.ll:603 +#: lexer.ll:604 msgid "Consider converting the input with the convert-ly script" msgstr "" +#: lilypond-item.cc:161 +#, c-format +msgid "#32 in quarter: %d" +msgstr "#32 in Vierteln: %d" + +#: lilypond-score.cc:108 +#, c-format +msgid "Lily output to %s..." +msgstr "Lily-Ausgabe nach %s..." + +#: lilypond-score.cc:119 +#, fuzzy, c-format +msgid "track %d:" +msgstr "Spur " + +#: lilypond-score.cc:155 +msgid "Processing..." +msgstr "Verarbeite..." + +#: lilypond-score.cc:164 +msgid "Creating voices..." +msgstr "Erzeuge Stimmen..." + +#: lilypond-score.cc:168 +msgid "track " +msgstr "Spur " + +#: lilypond-score.cc:177 +msgid "NOT Filtering tempo..." +msgstr "Ich filtere das Tempo NICHT..." + +#: lilypond-score.cc:186 +msgid "NOT Quantifying columns..." +msgstr "ich quantifiziere die Spalten NICHT..." + +#: lilypond-score.cc:190 +msgid "Quantifying columns..." +msgstr "Quantifiziere Spalten..." + +#: lilypond-score.cc:223 +msgid "Settling columns..." +msgstr "Erledige Spalten..." + +#: lilypond-staff.cc:209 +#, fuzzy +msgid "% MIDI copyright:" +msgstr "% Midi Urheberrecht:" + +#: lilypond-staff.cc:210 +#, fuzzy +msgid "% MIDI instrument:" +msgstr "% Instrument:" + +#: lilypond-stream.cc:37 +#, c-format +msgid "lily indent level: %d" +msgstr "lily EinrЭcklevel: %d" + +#. Maybe better not to translate these? +#: lilypond-stream.cc:83 +msgid "% Creator: " +msgstr "% erstellt von: " + +#: lilypond-stream.cc:88 +msgid "% Automatically generated" +msgstr "% Automatisch generiert" + +#: lilypond-stream.cc:97 +#, c-format +msgid "% from input file: " +msgstr "% aus Eingabedatei: " + #: main.cc:93 msgid "write exact durations, e.g.: a4*385/384" msgstr "Schreibe genaue Dauer, z.B.: a4*385/384" @@ -1124,6 +1233,10 @@ msgstr "DUR" msgid "set smallest duration" msgstr "Setze kЭrzeste Dauer (?)" +#: main.cc:103 +msgid "don't timestamp the output" +msgstr "Keine Datumsangabe auf der Ausgabe" + #: main.cc:105 msgid "be verbose" msgstr "Sei geschwДtzig" @@ -1139,8 +1252,8 @@ msgstr "Verwendung: %s [OPTIONEN] ... [DATEI]" #: main.cc:116 #, fuzzy -msgid "Translate MIDI-file to mudela" -msgstr "эbersetze MIDI in mudela" +msgid "Translate MIDI-file to lilypond" +msgstr "эbersetze MIDI in Lilypond" #: main.cc:130 #, c-format @@ -1220,78 +1333,6 @@ msgstr "Erwarte MIDI-StЭck" msgid "invalid track length" msgstr "UnzulДssige LДnge fЭr ein StЭck" -#: mudela-item.cc:161 -#, c-format -msgid "#32 in quarter: %d" -msgstr "#32 in Vierteln: %d" - -#: mudela-score.cc:108 -#, c-format -msgid "Lily output to %s..." -msgstr "Lily-Ausgabe nach %s..." - -#: mudela-score.cc:119 -#, fuzzy, c-format -msgid "track %d:" -msgstr "Spur " - -#: mudela-score.cc:155 -msgid "Processing..." -msgstr "Verarbeite..." - -#: mudela-score.cc:164 -msgid "Creating voices..." -msgstr "Erzeuge Stimmen..." - -#: mudela-score.cc:168 -msgid "track " -msgstr "Spur " - -#: mudela-score.cc:177 -msgid "NOT Filtering tempo..." -msgstr "Ich filtere das Tempo NICHT..." - -#: mudela-score.cc:186 -msgid "NOT Quantifying columns..." -msgstr "ich quantifiziere die Spalten NICHT..." - -#: mudela-score.cc:190 -msgid "Quantifying columns..." -msgstr "Quantifiziere Spalten..." - -#: mudela-score.cc:223 -msgid "Settling columns..." -msgstr "Erledige Spalten..." - -#: mudela-staff.cc:209 -#, fuzzy -msgid "% MIDI copyright:" -msgstr "% Midi Urheberrecht:" - -#: mudela-staff.cc:210 -#, fuzzy -msgid "% MIDI instrument:" -msgstr "% Instrument:" - -#: mudela-stream.cc:37 -#, c-format -msgid "lily indent level: %d" -msgstr "lily EinrЭcklevel: %d" - -#. Maybe better not to translate these? -#: mudela-stream.cc:83 -msgid "% Creator: " -msgstr "% erstellt von: " - -#: mudela-stream.cc:88 -msgid "% Automatically generated" -msgstr "% Automatisch generiert" - -#: mudela-stream.cc:97 -#, c-format -msgid "% from input file: " -msgstr "% aus Eingabedatei: " - #, fuzzy #~ msgid "Dependency file left in `%s'" #~ msgstr "Schreibe Datei mit AbhДngigkeiten: `%s'..." @@ -1375,10 +1416,6 @@ msgstr "% aus Eingabedatei: " #~ msgstr "Keine Tonart: ich nehme `C' an" #, fuzzy -#~ msgid "Don't know how handle empty keys" -#~ msgstr "Weiъ nicht, wie ich eine fehlende Tonart behandeln soll" - -#, fuzzy #~ msgid "out of tune:" #~ msgstr "Verstimmt" @@ -6,122 +6,141 @@ msgid "" msgstr "" "Project-Id-Version: lilypond 1.3.18\n" -"POT-Creation-Date: 2001-03-06 12:36+0100\n" +"POT-Creation-Date: 2001-03-21 16:06+0100\n" "PO-Revision-Date: 1999-12-28 00:32 +1\n" "Last-Translator: Laurent Martelli <laurent@linuxfan.com>\n" "Language-Team: \n" "MIME-Version: 1.0\n" -#: ly2dvi.py:67 main.cc:95 main.cc:109 +#: ly2dvi.py:86 main.cc:95 main.cc:105 msgid "this help" msgstr "cette aide" -#: ly2dvi.py:68 +#: ly2dvi.py:87 msgid "change global setting KEY to VAL" msgstr "" -#: ly2dvi.py:69 +#: ly2dvi.py:88 msgid "generate PostScript output" msgstr "" -#: ly2dvi.py:70 +#: ly2dvi.py:89 msgid "keep all output, and name the directory ly2dvi.dir" msgstr "" -#: ly2dvi.py:71 +#: ly2dvi.py:90 msgid "don't run LilyPond" msgstr "" -#: ly2dvi.py:72 main.cc:104 main.cc:119 +#: ly2dvi.py:91 main.cc:115 +msgid "verbose" +msgstr "" + +#: ly2dvi.py:92 main.cc:104 main.cc:114 msgid "print version number" msgstr "afficher le numИro de version" -#: ly2dvi.py:73 main.cc:106 main.cc:121 +#: ly2dvi.py:93 main.cc:106 main.cc:116 msgid "show warranty and copyright" msgstr "" -#: ly2dvi.py:74 +#: ly2dvi.py:94 msgid "dump all final output into DIR" msgstr "" -#: ly2dvi.py:75 main.cc:113 +#: ly2dvi.py:95 main.cc:109 msgid "write Makefile dependencies for every input file" msgstr "" -#: ly2dvi.py:101 +#: data-file.cc:118 input.cc:85 ly2dvi.py:123 midi-parser.cc:100 warn.cc:23 +msgid "warning: " +msgstr "avertissement: " + +#: input.cc:90 ly2dvi.py:128 ly2dvi.py:263 warn.cc:9 warn.cc:17 +msgid "error: " +msgstr "erreur: " + +#: ly2dvi.py:130 #, fuzzy msgid "Exiting ... " msgstr "Ligne ..." -#: ly2dvi.py:120 -#, c-format -msgid "Reading `%s'" -msgstr "" +#: ly2dvi.py:149 +#, fuzzy, c-format +msgid "Reading %s..." +msgstr "CrИation des voix..." -#: ly2dvi.py:124 mapped-file-storage.cc:87 mudela-stream.cc:111 +#: lilypond-stream.cc:111 ly2dvi.py:153 mapped-file-storage.cc:87 #: paper-stream.cc:40 scores.cc:48 simple-file-storage.cc:44 text-stream.cc:23 #, c-format msgid "can't open file: `%s'" msgstr "impossible d'ouvrir le fichier: `%s'" -#: ly2dvi.py:187 +#: ly2dvi.py:216 #, fuzzy, c-format msgid "Usage: %s [OPTION]... FILE" msgstr "Usage: %s [OPTION... [FICHIER]" -#: ly2dvi.py:189 +#: ly2dvi.py:218 msgid "Generate .dvi with LaTeX for LilyPond" msgstr "" -#: ly2dvi.py:191 main.cc:119 main.cc:151 +#: ly2dvi.py:220 main.cc:119 main.cc:146 msgid "Options:" msgstr "Options: " -#: data-file.cc:118 input.cc:85 ly2dvi.py:195 midi-parser.cc:100 warn.cc:23 -msgid "warning: " -msgstr "avertissement: " - -#: ly2dvi.py:196 +#: ly2dvi.py:224 msgid "all output is written in the CURRENT directory" msgstr "" -#: ly2dvi.py:198 main.cc:123 main.cc:174 +#: ly2dvi.py:226 main.cc:123 main.cc:169 #, fuzzy, c-format msgid "Report bugs to %s" msgstr "Rapporter les bugs Ю" -#: ly2dvi.py:230 +#: ly2dvi.py:260 #, c-format msgid "Invoking `%s'" msgstr "" -#: input.cc:90 ly2dvi.py:234 warn.cc:9 warn.cc:17 -msgid "error: " -msgstr "erreur: " - -#: ly2dvi.py:234 +#: ly2dvi.py:263 #, c-format msgid "command exited with value %d" msgstr "" -#: ly2dvi.py:236 +#: ly2dvi.py:265 msgid "(ignored)" msgstr "" -#: ly2dvi.py:277 +#: ly2dvi.py:301 +#, fuzzy, c-format +msgid "no such setting: %s" +msgstr "Pas d'instrument tel: `%s'" + +#: ly2dvi.py:309 #, c-format msgid "Analyzing `%s'" msgstr "" -#: ly2dvi.py:539 scores.cc:44 +#: ly2dvi.py:353 +#, c-format +msgid "no lilypond output found for %s" +msgstr "" + +#: ly2dvi.py:395 +#, fuzzy, c-format +msgid "invalid value: %s" +msgstr "caractХres illИgal: `%c'" + +#: ly2dvi.py:602 scores.cc:44 #, fuzzy, c-format msgid "dependencies output to %s..." msgstr "Sortie papier vers %s..." -#: ly2dvi.py:540 -#, c-format -msgid "%s file left in `%s'" -msgstr "" +#: ly2dvi.py:603 +#, fuzzy, c-format +msgid "%s output to %s..." +msgstr "Sortie de Lily vers %s..." #: data-file.cc:54 #, fuzzy @@ -231,12 +250,12 @@ msgstr "Impossible de trouver la police `%s', chargement la police par dИfaut" msgid "can't find default font: `%s'" msgstr "Impossible de trouver la fonte par dИfaut `%s', abandon." -#: all-font-metrics.cc:172 includable-lexer.cc:50 scores.cc:137 +#: all-font-metrics.cc:172 includable-lexer.cc:51 scores.cc:137 #, fuzzy, c-format msgid "(search path: `%s')" msgstr "chemin de recherche= %s" -#: all-font-metrics.cc:173 parser.yy:1663 +#: all-font-metrics.cc:173 parser.yy:1681 msgid "Giving up" msgstr "" @@ -316,7 +335,7 @@ msgstr "soustraction invalide: ne fait pas partie de l'accord: %s" msgid "invalid inversion pitch: not part of chord: %s" msgstr "renversement invalide: ne fait pas partie de l'accord: %s" -#: chord-tremolo-engraver.cc:141 +#: chord-tremolo-engraver.cc:141 percent-repeat-engraver.cc:162 msgid "unterminated chord tremolo" msgstr "" @@ -324,7 +343,7 @@ msgstr "" msgid "no one to print a tremolos" msgstr "" -#: collision.cc:116 +#: collision.cc:118 #, fuzzy msgid "Too many clashing notecolumns. Ignoring them." msgstr "Trop de colonnes de notes superposИes. Je les ignore." @@ -358,7 +377,7 @@ msgstr "Il y a dИjЮ une barre" msgid "already have a decrescendo" msgstr "Il y a dИjЮ une barre" -#: dynamic-engraver.cc:307 +#: dynamic-engraver.cc:318 #, fuzzy msgid "unterminated (de)crescendo" msgstr "crescendo non terminИ" @@ -375,7 +394,7 @@ msgstr "" msgid "no one to print a repeat brace" msgstr "" -#: font-interface.cc:220 +#: font-interface.cc:237 msgid "couldn't find any font satisfying " msgstr "" @@ -409,7 +428,7 @@ msgstr "" msgid "Nothing to connect hyphen to on the left. Ignoring hyphen request." msgstr "" -#: includable-lexer.cc:48 lily-guile.cc:139 midi-score-parser.cc:24 +#: includable-lexer.cc:49 lily-guile.cc:139 midi-score-parser.cc:24 #: scores.cc:136 scores.cc:142 #, c-format msgid "can't find file: `%s'" @@ -446,87 +465,83 @@ msgstr "" msgid "Huh? Melismatic note found to have associated lyrics." msgstr "" -#: main.cc:108 +#: main.cc:104 msgid "EXT" msgstr "" -#: main.cc:108 +#: main.cc:104 msgid "use output format EXT (scm, ps, tex or as)" msgstr "" -#: main.cc:110 +#: main.cc:106 #, fuzzy msgid "FIELD" msgstr "FICHIER" -#: main.cc:110 +#: main.cc:106 msgid "write header field to BASENAME.FIELD" msgstr "" -#: main.cc:111 main.cc:114 +#: main.cc:107 main.cc:110 msgid "DIR" msgstr "REP" -#: main.cc:111 +#: main.cc:107 #, fuzzy msgid "add DIR to search path" msgstr "ajoute REP au chemin de recherche" -#: main.cc:98 main.cc:112 +#: main.cc:98 main.cc:108 msgid "FILE" msgstr "FICHIER" -#: main.cc:112 +#: main.cc:108 #, fuzzy msgid "use FILE as init file" msgstr "utilise FICHIER comme fichier d'initialisation" -#: main.cc:114 +#: main.cc:110 msgid "prepend DIR to dependencies" msgstr "" -#: main.cc:115 +#: main.cc:111 #, fuzzy msgid "produce MIDI output only" msgstr "produit seulement la sortie MIDI" -#: main.cc:116 +#: main.cc:112 msgid "NAME" msgstr "" -#: main.cc:116 +#: main.cc:112 msgid "write output to NAME" msgstr "" -#: main.cc:117 +#: main.cc:113 msgid "inhibit file output naming and exporting" msgstr "" -#: main.cc:103 main.cc:118 -msgid "don't timestamp the output" -msgstr "" - -#: main.cc:120 -msgid "verbose" +#: main.cc:117 +msgid "EXPR" msgstr "" -#: main.cc:122 -msgid "write midi ouput in formatted ascii" +#: main.cc:117 +msgid "evalute EXPR as Scheme after .scm init is read" msgstr "" #. #. No version number or newline here. It confuses help2man #. -#: main.cc:139 +#: main.cc:134 #, c-format msgid "Usage: %s [OPTION]... [FILE]..." msgstr "Usage: %s [OPTION]... [FICHIER]..." -#: main.cc:141 +#: main.cc:136 msgid "Typeset music and or play MIDI from FILE" msgstr "" -#: main.cc:145 +#: main.cc:140 #, fuzzy msgid "" "LilyPond is a music typesetter. It produces beautiful sheet music\n" @@ -537,12 +552,12 @@ msgstr "" "paritions Ю partir de description de gaut niveau en entrИe. Lilypond\n" "fait partie du projet GNU.\n" -#: main.cc:155 +#: main.cc:150 #, fuzzy msgid "This binary was compiled with the following options:" msgstr "Cet exИcutable a ИtИ compilИ avec les options suivantes:" -#: main.cc:55 main.cc:182 +#: main.cc:55 main.cc:177 #, c-format msgid "" "This is free software. It is covered by the GNU General Public License,\n" @@ -550,17 +565,17 @@ msgid "" "certain conditions. Invoke as `%s --warranty' for more information.\n" msgstr "" -#: main.cc:62 main.cc:189 main.cc:201 +#: main.cc:62 main.cc:184 main.cc:196 #, c-format msgid "Copyright (c) %s by" msgstr "Copyright (c) %s par" -#: main.cc:199 +#: main.cc:194 #, fuzzy msgid "GNU LilyPond -- The music typesetter" msgstr "GNU LilyPond -- Il tipografo musicale del progetto GNU" -#: main.cc:71 main.cc:207 +#: main.cc:71 main.cc:202 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" @@ -595,29 +610,37 @@ msgstr "" msgid "Transposition by %s makes accidental larger than two" msgstr "" -#: music.cc:222 +#: music.cc:224 msgid "ly_get_mus_property (): Not a Music" msgstr "" -#: music.cc:236 +#: music.cc:238 msgid "ly_set_mus_property (): Not a symbol" msgstr "" -#: music.cc:248 +#: music.cc:250 msgid "ly_set_mus_property (): not of type Music" msgstr "" +#: music.cc:264 +msgid "ly_make_music (): Not a string" +msgstr "" + +#: music.cc:284 +msgid "ly_music_name (): Not a music expression" +msgstr "" + #: music-output-def.cc:115 #, fuzzy, c-format msgid "can't find `%s' context" msgstr "ne peut pas trouver `%s'" -#: my-lily-lexer.cc:137 +#: my-lily-lexer.cc:138 #, c-format msgid "Identifier name is a keyword: `%s'" msgstr "" -#: my-lily-lexer.cc:157 +#: my-lily-lexer.cc:158 #, c-format msgid "error at EOF: %s" msgstr "" @@ -626,7 +649,7 @@ msgstr "" msgid "Parsing..." msgstr "Analyse..." -#: my-lily-parser.cc:55 +#: my-lily-parser.cc:57 msgid "Braces don't match" msgstr "" @@ -640,11 +663,11 @@ msgstr "" msgid "paper output to %s..." msgstr "Sortie papier vers %s..." -#: mudela-stream.cc:93 paper-outputter.cc:94 performance.cc:102 +#: lilypond-stream.cc:93 paper-outputter.cc:85 performance.cc:95 msgid ", at " msgstr ", Ю " -#: paper-outputter.cc:245 +#: paper-outputter.cc:232 #, fuzzy, c-format msgid "writing header field %s to %s..." msgstr "impossible d'ouvrir le fichier: `%s'" @@ -653,7 +676,7 @@ msgstr "impossible d'ouvrir le fichier: `%s'" msgid "Preprocessing elements..." msgstr "" -#: paper-score.cc:113 +#: paper-score.cc:114 msgid "Outputting Score, defined at: " msgstr "" @@ -683,6 +706,15 @@ msgstr "" msgid "none of these in my family: `%s'" msgstr "" +#: percent-repeat-engraver.cc:108 +#, fuzzy +msgid "Don't know yet how to handle this percent repeat." +msgstr "ne sait pas traiter les clИs vides" + +#: percent-repeat-iterator.cc:53 +msgid "no one to print a percent" +msgstr "" + #: performance.cc:51 #, fuzzy msgid "Track ... " @@ -692,12 +724,12 @@ msgstr "Piste ... " msgid "Creator: " msgstr "Auteur: " -#: performance.cc:116 +#: performance.cc:109 #, c-format msgid "from musical definition: %s" msgstr "" -#: performance.cc:171 +#: performance.cc:164 #, c-format msgid "MIDI output to %s..." msgstr "" @@ -760,7 +792,7 @@ msgstr "" msgid "elapsed time: %.2f seconds" msgstr "temps ecoulИ: %.2f secondes" -#: score-engraver.cc:177 +#: score-engraver.cc:183 #, fuzzy, c-format msgid "unbound spanner `%s'" msgstr "traducteur inconnu `%s'" @@ -796,7 +828,9 @@ msgstr "" msgid "unterminated slur" msgstr "" -#: slur-engraver.cc:142 +#. How to shut up this warning, when Voice_devnull_engraver has +#. eaten start request? +#: slur-engraver.cc:144 #, fuzzy msgid "can't find start of slur" msgstr "impossible de trouver le caractХres numИro %d" @@ -835,21 +869,23 @@ msgstr "Barre non terminИe" msgid "can't find ascii character: %d" msgstr "ne peut pas trouver le caractХre ascii `%d'" -#: tfm-reader.cc:105 +#: tfm-reader.cc:106 #, c-format -msgid "TFM header of `%s' has only %u word(s)" +msgid "TFM header of `%s' has only %u word (s)" msgstr "" -#: tfm-reader.cc:139 +#: tfm-reader.cc:140 #, c-format msgid "%s: TFM file has %u parameters, which is more than the %u I can handle" msgstr "" -#: tie-engraver.cc:211 tie-performer.cc:173 +#. How to shut up this warning, when no notes appeared because +#. they were suicided by Thread_devnull_engraver? +#: tie-engraver.cc:215 tie-performer.cc:173 msgid "No ties were created!" msgstr "Aucune liaison n'a ИtИ crИe" -#: tie-engraver.cc:230 +#: tie-engraver.cc:234 msgid "lonely tie" msgstr "liaison solitaire" @@ -867,21 +903,21 @@ msgstr "" msgid "unknown translator: `%s'" msgstr "traducteur inconnu `%s'" -#: translator-def.cc:96 +#: translator-def.cc:99 msgid "Program has no such type" msgstr "" -#: translator-def.cc:102 +#: translator-def.cc:105 #, fuzzy, c-format msgid "Already contains: `%s'" msgstr "Contient dИjЮ un `%s'" -#: translator-def.cc:103 +#: translator-def.cc:106 #, fuzzy, c-format msgid "Not adding translator: `%s'" msgstr "traducteur inconnu `%s'" -#: translator-def.cc:215 +#: translator-def.cc:224 #, fuzzy, c-format msgid "can't find: `%s'" msgstr "ne peut pas trouver `%s'" @@ -896,19 +932,19 @@ msgstr "ne peut pas trouver ou crИer `%s' nommИ `%s'" msgid "can't find or create: `%s'" msgstr "ne peut pas trouver ou crИer `%s'" -#: translator-group.cc:403 +#: translator-group.cc:414 #, c-format msgid "" "Can't find property type-check for `%s'. Perhaps you made a typing error?" msgstr "" -#: translator-group.cc:417 +#: translator-group.cc:428 #, c-format msgid "Type check for `%s' failed; value `%s' must be of type `%s'" msgstr "" #. programming_error? -#: translator-group.cc:436 +#: translator-group.cc:447 msgid "ly-get-trans-property: expecting a Translator_group argument" msgstr "" @@ -929,117 +965,188 @@ msgstr "" msgid "Oldest supported input version: %s" msgstr "Plus ancienne version supportИe: %s" -#: parser.yy:471 +#: parser.yy:473 msgid "Wrong type for property value" msgstr "Mauvais type pour la valeur de la propriИtИ" -#: parser.yy:666 +#: parser.yy:672 msgid "More alternatives than repeats. Junking excess alternatives." msgstr "" -#: parser.yy:730 +#: parser.yy:736 msgid "Second argument must be a symbol" msgstr "" -#: parser.yy:735 +#: parser.yy:741 msgid "First argument must be a procedure taking 1 argument" msgstr "" -#: parser.yy:1211 +#: parser.yy:1236 msgid "Expecting string as script definition" msgstr "" -#: parser.yy:1221 +#: parser.yy:1246 msgid "Can't specify direction for this request" msgstr "" -#: parser.yy:1353 +#: parser.yy:1371 msgid "Expecting musical-pitch value" msgstr "" -#: parser.yy:1364 +#: parser.yy:1382 #, fuzzy msgid "Must have duration object" msgstr "Positionne la plus petite durИe (?)" -#: parser.yy:1373 parser.yy:1381 parser.yy:1661 +#: parser.yy:1391 parser.yy:1399 parser.yy:1679 #, fuzzy msgid "Have to be in Lyric mode for lyrics" msgstr "il fayt Йtre en mode Parole pour les paroles" -#: parser.yy:1546 parser.yy:1575 +#: parser.yy:1564 parser.yy:1593 #, c-format msgid "not a duration: %d" msgstr "pas une durИe: %d" -#: parser.yy:1584 +#: parser.yy:1602 #, fuzzy msgid "Have to be in Note mode for notes" msgstr "il faut Йtre en mode Note pour les notes" -#: parser.yy:1680 +#: parser.yy:1698 #, fuzzy msgid "Have to be in Chord mode for chords" msgstr "il faut Йtre en mode Accord pour les accords" -#: parser.yy:1842 parser.yy:1860 +#: parser.yy:1860 parser.yy:1878 msgid "need integer number arg" msgstr "" -#: parser.yy:1846 +#: parser.yy:1864 msgid "Must be positive integer" msgstr "" -#: lexer.ll:165 +#: lexer.ll:166 msgid "EOF found inside a comment" msgstr "EOF trouvИ dans un commentaire" -#: lexer.ll:179 +#: lexer.ll:180 msgid "\\maininput disallowed outside init files" msgstr "" -#: lexer.ll:203 +#: lexer.ll:204 #, fuzzy, c-format msgid "wrong or undefined identifier: `%s'" msgstr "indentifiant non dИfini: `%s'" #. backup rule -#: lexer.ll:208 +#: lexer.ll:209 msgid "Missing end quote" msgstr "" #. backup rule -#: lexer.ll:230 lexer.ll:234 +#: lexer.ll:231 lexer.ll:235 msgid "white expected" msgstr "blanche attendue" -#: lexer.ll:243 +#: lexer.ll:244 msgid "Can't evaluate Scheme in safe mode" msgstr "" -#: lexer.ll:335 +#: lexer.ll:336 msgid "Brace found at end of lyric. Did you forget a space?" msgstr "" -#: lexer.ll:439 +#: lexer.ll:440 #, fuzzy, c-format msgid "invalid character: `%c'" msgstr "caractХres illИgal: `%c'" -#: lexer.ll:520 +#: lexer.ll:521 #, c-format msgid "unknown escaped string: `\\%s'" msgstr "chaНne d'Иchappement inconnue: `\\%s'" -#: lexer.ll:602 +#: lexer.ll:603 #, fuzzy, c-format msgid "incorrect lilypond version: %s (%s, %s)" msgstr "version de mudela incorrecte: %s (%s, %s)" -#: lexer.ll:603 +#: lexer.ll:604 msgid "Consider converting the input with the convert-ly script" msgstr "" +#: lilypond-item.cc:161 +#, c-format +msgid "#32 in quarter: %d" +msgstr "" + +#: lilypond-score.cc:108 +#, c-format +msgid "Lily output to %s..." +msgstr "Sortie de Lily vers %s..." + +#: lilypond-score.cc:119 +#, fuzzy, c-format +msgid "track %d:" +msgstr "piste " + +#: lilypond-score.cc:155 +msgid "Processing..." +msgstr "Traitement..." + +#: lilypond-score.cc:164 +msgid "Creating voices..." +msgstr "CrИation des voix..." + +#: lilypond-score.cc:168 +msgid "track " +msgstr "piste " + +#: lilypond-score.cc:177 +msgid "NOT Filtering tempo..." +msgstr "PAS de filtrage du tempo..." + +#: lilypond-score.cc:186 +msgid "NOT Quantifying columns..." +msgstr "PAS de quantification des colonnes..." + +#: lilypond-score.cc:190 +msgid "Quantifying columns..." +msgstr "Quantification des colonnes..." + +#: lilypond-score.cc:223 +msgid "Settling columns..." +msgstr "" + +#: lilypond-staff.cc:209 +msgid "% MIDI copyright:" +msgstr "" + +#: lilypond-staff.cc:210 +#, fuzzy +msgid "% MIDI instrument:" +msgstr "Pas d'instrument tel: `%s'" + +#: lilypond-stream.cc:37 +#, c-format +msgid "lily indent level: %d" +msgstr "Niveau d'indentation de lily: %d" + +#. Maybe better not to translate these? +#: lilypond-stream.cc:83 +msgid "% Creator: " +msgstr "% Auteur: " + +#: lilypond-stream.cc:88 +msgid "% Automatically generated" +msgstr "% GИnИrИ automatiquement" + +#: lilypond-stream.cc:97 +#, c-format +msgid "% from input file: " +msgstr "% dal file di input: " + #: main.cc:93 msgid "write exact durations, e.g.: a4*385/384" msgstr "" @@ -1086,6 +1193,10 @@ msgstr "" msgid "set smallest duration" msgstr "Positionne la plus petite durИe (?)" +#: main.cc:103 +msgid "don't timestamp the output" +msgstr "" + #: main.cc:105 msgid "be verbose" msgstr "" @@ -1101,7 +1212,7 @@ msgstr "Usage: %s [OPTION... [FICHIER]" #: main.cc:116 #, fuzzy -msgid "Translate MIDI-file to mudela" +msgid "Translate MIDI-file to lilypond" msgstr "Traduction du fichier MIDI en mudela" #: main.cc:130 @@ -1182,77 +1293,6 @@ msgstr "piste MIDI attendue" msgid "invalid track length" msgstr "taille de piste invalide" -#: mudela-item.cc:161 -#, c-format -msgid "#32 in quarter: %d" -msgstr "" - -#: mudela-score.cc:108 -#, c-format -msgid "Lily output to %s..." -msgstr "Sortie de Lily vers %s..." - -#: mudela-score.cc:119 -#, fuzzy, c-format -msgid "track %d:" -msgstr "piste " - -#: mudela-score.cc:155 -msgid "Processing..." -msgstr "Traitement..." - -#: mudela-score.cc:164 -msgid "Creating voices..." -msgstr "CrИation des voix..." - -#: mudela-score.cc:168 -msgid "track " -msgstr "piste " - -#: mudela-score.cc:177 -msgid "NOT Filtering tempo..." -msgstr "PAS de filtrage du tempo..." - -#: mudela-score.cc:186 -msgid "NOT Quantifying columns..." -msgstr "PAS de quantification des colonnes..." - -#: mudela-score.cc:190 -msgid "Quantifying columns..." -msgstr "Quantification des colonnes..." - -#: mudela-score.cc:223 -msgid "Settling columns..." -msgstr "" - -#: mudela-staff.cc:209 -msgid "% MIDI copyright:" -msgstr "" - -#: mudela-staff.cc:210 -#, fuzzy -msgid "% MIDI instrument:" -msgstr "Pas d'instrument tel: `%s'" - -#: mudela-stream.cc:37 -#, c-format -msgid "lily indent level: %d" -msgstr "Niveau d'indentation de lily: %d" - -#. Maybe better not to translate these? -#: mudela-stream.cc:83 -msgid "% Creator: " -msgstr "% Auteur: " - -#: mudela-stream.cc:88 -msgid "% Automatically generated" -msgstr "% GИnИrИ automatiquement" - -#: mudela-stream.cc:97 -#, c-format -msgid "% from input file: " -msgstr "% dal file di input: " - #, fuzzy #~ msgid "Dependency file left in `%s'" #~ msgstr "impossible d'ouvrir le fichier: `%s'" @@ -1292,10 +1332,6 @@ msgstr "% dal file di input: " #~ msgstr "Pas de nom de clИ: Do assumИ" #, fuzzy -#~ msgid "Don't know how handle empty keys" -#~ msgstr "ne sait pas traiter les clИs vides" - -#, fuzzy #~ msgid "out of tune:" #~ msgstr "hors de la tonalitИ" @@ -5,7 +5,7 @@ #, fuzzy msgid "" msgstr "" -"POT-Creation-Date: 2001-03-06 12:36+0100\n" +"POT-Creation-Date: 2001-03-21 16:06+0100\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Date: 1998-05-30 00:17:12+0200\n" "From: <jantien@xs4all.nl>\n" @@ -13,120 +13,139 @@ msgstr "" "--output-dir=../po/out --add-comments --keyword=_ --keyword=_f\n" "Files: bow.cc int.cc\n" -#: ly2dvi.py:67 main.cc:95 main.cc:109 +#: ly2dvi.py:86 main.cc:95 main.cc:105 msgid "this help" msgstr "" -#: ly2dvi.py:68 +#: ly2dvi.py:87 msgid "change global setting KEY to VAL" msgstr "" -#: ly2dvi.py:69 +#: ly2dvi.py:88 #, fuzzy msgid "generate PostScript output" msgstr "vincoli degenerati" -#: ly2dvi.py:70 +#: ly2dvi.py:89 msgid "keep all output, and name the directory ly2dvi.dir" msgstr "" -#: ly2dvi.py:71 +#: ly2dvi.py:90 msgid "don't run LilyPond" msgstr "" -#: ly2dvi.py:72 main.cc:104 main.cc:119 +#: ly2dvi.py:91 main.cc:115 +msgid "verbose" +msgstr "" + +#: ly2dvi.py:92 main.cc:104 main.cc:114 msgid "print version number" msgstr "" -#: ly2dvi.py:73 main.cc:106 main.cc:121 +#: ly2dvi.py:93 main.cc:106 main.cc:116 #, fuzzy msgid "show warranty and copyright" msgstr " -w, --warranty mostra la garanzia e il copyright\n" -#: ly2dvi.py:74 +#: ly2dvi.py:94 msgid "dump all final output into DIR" msgstr "" -#: ly2dvi.py:75 main.cc:113 +#: ly2dvi.py:95 main.cc:109 #, 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:101 +#: data-file.cc:118 input.cc:85 ly2dvi.py:123 midi-parser.cc:100 warn.cc:23 +msgid "warning: " +msgstr "attenzione: " + +#: input.cc:90 ly2dvi.py:128 ly2dvi.py:263 warn.cc:9 warn.cc:17 +msgid "error: " +msgstr "errore: " + +#: ly2dvi.py:130 msgid "Exiting ... " msgstr "" -#: ly2dvi.py:120 -#, c-format -msgid "Reading `%s'" -msgstr "" +#: ly2dvi.py:149 +#, fuzzy, c-format +msgid "Reading %s..." +msgstr "Genero le voci..." -#: ly2dvi.py:124 mapped-file-storage.cc:87 mudela-stream.cc:111 +#: lilypond-stream.cc:111 ly2dvi.py:153 mapped-file-storage.cc:87 #: paper-stream.cc:40 scores.cc:48 simple-file-storage.cc:44 text-stream.cc:23 #, c-format msgid "can't open file: `%s'" msgstr "non posso aprire il file: `%s'" -#: ly2dvi.py:187 +#: ly2dvi.py:216 #, fuzzy, c-format msgid "Usage: %s [OPTION]... FILE" msgstr "Uso: %s [OPZIONE... [FILE]" -#: ly2dvi.py:189 +#: ly2dvi.py:218 msgid "Generate .dvi with LaTeX for LilyPond" msgstr "" -#: ly2dvi.py:191 main.cc:119 main.cc:151 +#: ly2dvi.py:220 main.cc:119 main.cc:146 msgid "Options:" msgstr "Opzioni: " -#: data-file.cc:118 input.cc:85 ly2dvi.py:195 midi-parser.cc:100 warn.cc:23 -msgid "warning: " -msgstr "attenzione: " - -#: ly2dvi.py:196 +#: ly2dvi.py:224 msgid "all output is written in the CURRENT directory" msgstr "" -#: ly2dvi.py:198 main.cc:123 main.cc:174 +#: ly2dvi.py:226 main.cc:123 main.cc:169 #, c-format msgid "Report bugs to %s" msgstr "" -#: ly2dvi.py:230 +#: ly2dvi.py:260 #, c-format msgid "Invoking `%s'" msgstr "" -#: input.cc:90 ly2dvi.py:234 warn.cc:9 warn.cc:17 -msgid "error: " -msgstr "errore: " - -#: ly2dvi.py:234 +#: ly2dvi.py:263 #, c-format msgid "command exited with value %d" msgstr "" -#: ly2dvi.py:236 +#: ly2dvi.py:265 msgid "(ignored)" msgstr "" -#: ly2dvi.py:277 +#: ly2dvi.py:301 +#, fuzzy, c-format +msgid "no such setting: %s" +msgstr "% strumento:" + +#: ly2dvi.py:309 #, c-format msgid "Analyzing `%s'" msgstr "" -#: ly2dvi.py:539 scores.cc:44 +#: ly2dvi.py:353 +#, c-format +msgid "no lilypond output found for %s" +msgstr "" + +#: ly2dvi.py:395 +#, fuzzy, c-format +msgid "invalid value: %s" +msgstr "carattere illegale: `%c'" + +#: ly2dvi.py:602 scores.cc:44 #, fuzzy, c-format msgid "dependencies output to %s..." msgstr "L'output stampato Х inviato a %s..." -#: ly2dvi.py:540 -#, c-format -msgid "%s file left in `%s'" -msgstr "" +#: ly2dvi.py:603 +#, fuzzy, c-format +msgid "%s output to %s..." +msgstr "L'output MIDI Х inviato a %s..." #: data-file.cc:54 msgid "EOF in a string" @@ -232,12 +251,12 @@ msgstr "" msgid "can't find default font: `%s'" msgstr "non trovo il file: `%s'" -#: all-font-metrics.cc:172 includable-lexer.cc:50 scores.cc:137 +#: all-font-metrics.cc:172 includable-lexer.cc:51 scores.cc:137 #, fuzzy, c-format msgid "(search path: `%s')" msgstr "(Il path di caricamento Х `%s'" -#: all-font-metrics.cc:173 parser.yy:1663 +#: all-font-metrics.cc:173 parser.yy:1681 msgid "Giving up" msgstr "" @@ -316,7 +335,7 @@ msgstr "" msgid "invalid inversion pitch: not part of chord: %s" msgstr "" -#: chord-tremolo-engraver.cc:141 +#: chord-tremolo-engraver.cc:141 percent-repeat-engraver.cc:162 #, fuzzy msgid "unterminated chord tremolo" msgstr "beam non terminato" @@ -325,7 +344,7 @@ msgstr "beam non terminato" msgid "no one to print a tremolos" msgstr "" -#: collision.cc:116 +#: collision.cc:118 #, fuzzy msgid "Too many clashing notecolumns. Ignoring them." msgstr "Troppe collisioni tra colonne di note. Le ignoro." @@ -359,7 +378,7 @@ msgstr "crescendo non terminato" msgid "already have a decrescendo" msgstr "crescendo non terminato" -#: dynamic-engraver.cc:307 +#: dynamic-engraver.cc:318 #, fuzzy msgid "unterminated (de)crescendo" msgstr "crescendo non terminato" @@ -376,7 +395,7 @@ msgstr "" msgid "no one to print a repeat brace" msgstr "" -#: font-interface.cc:220 +#: font-interface.cc:237 msgid "couldn't find any font satisfying " msgstr "" @@ -411,7 +430,7 @@ msgstr "beam non terminato" msgid "Nothing to connect hyphen to on the left. Ignoring hyphen request." msgstr "" -#: includable-lexer.cc:48 lily-guile.cc:139 midi-score-parser.cc:24 +#: includable-lexer.cc:49 lily-guile.cc:139 midi-score-parser.cc:24 #: scores.cc:136 scores.cc:142 #, c-format msgid "can't find file: `%s'" @@ -448,104 +467,98 @@ msgstr "" msgid "Huh? Melismatic note found to have associated lyrics." msgstr "" -#: main.cc:108 +#: main.cc:104 msgid "EXT" msgstr "" -#: main.cc:108 +#: main.cc:104 msgid "use output format EXT (scm, ps, tex or as)" msgstr "" -#: main.cc:110 +#: main.cc:106 msgid "FIELD" msgstr "" -#: main.cc:110 +#: main.cc:106 msgid "write header field to BASENAME.FIELD" msgstr "" -#: main.cc:111 main.cc:114 +#: main.cc:107 main.cc:110 msgid "DIR" msgstr "" -#: main.cc:111 +#: main.cc:107 #, fuzzy msgid "add DIR to search path" msgstr " -I, --include=DIR aggiunge DIR ai path di ricerca\n" -#: main.cc:98 main.cc:112 +#: main.cc:98 main.cc:108 msgid "FILE" msgstr "" -#: main.cc:112 +#: main.cc:108 #, fuzzy msgid "use FILE as init file" msgstr " -i, --init=NOMEFILE usa NOMEFILE come file iniziale\n" -#: main.cc:114 +#: main.cc:110 msgid "prepend DIR to dependencies" msgstr "" -#: main.cc:115 +#: main.cc:111 #, fuzzy msgid "produce MIDI output only" msgstr " -M, --no-paper produce solo output midi\n" -#: main.cc:116 +#: main.cc:112 msgid "NAME" msgstr "" -#: main.cc:116 +#: main.cc:112 msgid "write output to NAME" msgstr "" -#: main.cc:117 +#: main.cc:113 #, fuzzy msgid "inhibit file output naming and exporting" msgstr "" " -s, --safe inibisce la rinomina dei file di output e " "l'esportazione di macro di TeX\n" -#: main.cc:103 main.cc:118 -#, fuzzy -msgid "don't timestamp the output" -msgstr "" -" -T, --no-timestamps non inserisce marcatori temporali nell'output\n" - -#: main.cc:120 -msgid "verbose" +#: main.cc:117 +msgid "EXPR" msgstr "" -#: main.cc:122 -msgid "write midi ouput in formatted ascii" +#: main.cc:117 +msgid "evalute EXPR as Scheme after .scm init is read" msgstr "" #. #. No version number or newline here. It confuses help2man #. -#: main.cc:139 +#: main.cc:134 #, c-format msgid "Usage: %s [OPTION]... [FILE]..." msgstr "Uso: %s [OPZIONE]... [FILE]..." -#: main.cc:141 +#: main.cc:136 #, fuzzy msgid "Typeset music and or play MIDI from FILE" msgstr "Stampa partitura oppure suona una song MIDI da FILE o <stdin>" -#: main.cc:145 +#: main.cc:140 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 "" -#: main.cc:155 +#: main.cc:150 #, fuzzy msgid "This binary was compiled with the following options:" msgstr "GNU LilyPond Х stata compilata con le seguenti impostazioni:" -#: main.cc:55 main.cc:182 +#: main.cc:55 main.cc:177 #, c-format msgid "" "This is free software. It is covered by the GNU General Public License,\n" @@ -553,17 +566,17 @@ msgid "" "certain conditions. Invoke as `%s --warranty' for more information.\n" msgstr "" -#: main.cc:62 main.cc:189 main.cc:201 +#: main.cc:62 main.cc:184 main.cc:196 #, c-format msgid "Copyright (c) %s by" msgstr "Copyright (c) %s di" -#: main.cc:199 +#: main.cc:194 #, fuzzy msgid "GNU LilyPond -- The music typesetter" msgstr "GNU LilyPond -- Il tipografo musicale del progetto GNU" -#: main.cc:71 main.cc:207 +#: main.cc:71 main.cc:202 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" @@ -613,29 +626,37 @@ msgstr "indicazione altezza priva di senso" msgid "Transposition by %s makes accidental larger than two" msgstr "la trasposizine di %s rende le alterazioni piЫ che doppie" -#: music.cc:222 +#: music.cc:224 msgid "ly_get_mus_property (): Not a Music" msgstr "" -#: music.cc:236 +#: music.cc:238 msgid "ly_set_mus_property (): Not a symbol" msgstr "" -#: music.cc:248 +#: music.cc:250 msgid "ly_set_mus_property (): not of type Music" msgstr "" +#: music.cc:264 +msgid "ly_make_music (): Not a string" +msgstr "" + +#: music.cc:284 +msgid "ly_music_name (): Not a music expression" +msgstr "" + #: music-output-def.cc:115 #, fuzzy, c-format msgid "can't find `%s' context" msgstr "non trovo `%s'" -#: my-lily-lexer.cc:137 +#: my-lily-lexer.cc:138 #, fuzzy, c-format msgid "Identifier name is a keyword: `%s'" msgstr "Il nome dell'identificatore Х una parola chiave (`%s')" -#: my-lily-lexer.cc:157 +#: my-lily-lexer.cc:158 #, c-format msgid "error at EOF: %s" msgstr "errore alla fine del file: %s" @@ -644,7 +665,7 @@ msgstr "errore alla fine del file: %s" msgid "Parsing..." msgstr "Analisi..." -#: my-lily-parser.cc:55 +#: my-lily-parser.cc:57 #, fuzzy msgid "Braces don't match" msgstr "le bretelle no si accoppiano" @@ -659,11 +680,11 @@ msgstr "Cosa? Non Х una richiesta: `%s'" msgid "paper output to %s..." msgstr "L'output stampato Х inviato a %s..." -#: mudela-stream.cc:93 paper-outputter.cc:94 performance.cc:102 +#: lilypond-stream.cc:93 paper-outputter.cc:85 performance.cc:95 msgid ", at " msgstr ", a " -#: paper-outputter.cc:245 +#: paper-outputter.cc:232 #, fuzzy, c-format msgid "writing header field %s to %s..." msgstr "scrivo il file delle dipendenze: `%s'..." @@ -672,7 +693,7 @@ msgstr "scrivo il file delle dipendenze: `%s'..." msgid "Preprocessing elements..." msgstr "Pre-elaborazione..." -#: paper-score.cc:113 +#: paper-score.cc:114 #, fuzzy msgid "Outputting Score, defined at: " msgstr "emetto lo Score, definito a: " @@ -703,6 +724,15 @@ msgstr "" msgid "none of these in my family: `%s'" msgstr "" +#: percent-repeat-engraver.cc:108 +#, fuzzy +msgid "Don't know yet how to handle this percent repeat." +msgstr "non so manipolare tasti vuoti" + +#: percent-repeat-iterator.cc:53 +msgid "no one to print a percent" +msgstr "" + #: performance.cc:51 #, fuzzy msgid "Track ... " @@ -712,12 +742,12 @@ msgstr "traccia " msgid "Creator: " msgstr "Autore: " -#: performance.cc:116 +#: performance.cc:109 #, c-format msgid "from musical definition: %s" msgstr "della definizione musicale: %s" -#: performance.cc:171 +#: performance.cc:164 #, c-format msgid "MIDI output to %s..." msgstr "L'output MIDI Х inviato a %s..." @@ -783,7 +813,7 @@ msgstr "ho trovato un errore, /*non sto elaborando lo spartito*/" msgid "elapsed time: %.2f seconds" msgstr "durata: %.2f secondi" -#: score-engraver.cc:177 +#: score-engraver.cc:183 #, fuzzy, c-format msgid "unbound spanner `%s'" msgstr "Spanner non legato `%s'" @@ -822,7 +852,9 @@ msgstr "Metto uno slur sulla pausa." msgid "unterminated slur" msgstr "slur non terminato" -#: slur-engraver.cc:142 +#. How to shut up this warning, when Voice_devnull_engraver has +#. eaten start request? +#: slur-engraver.cc:144 #, fuzzy msgid "can't find start of slur" msgstr "non trovo le estremitЮ di %s" @@ -861,21 +893,23 @@ msgstr "extender non terminato" msgid "can't find ascii character: %d" msgstr "non riesco a trovare il carattere `%s'" -#: tfm-reader.cc:105 +#: tfm-reader.cc:106 #, c-format -msgid "TFM header of `%s' has only %u word(s)" +msgid "TFM header of `%s' has only %u word (s)" msgstr "" -#: tfm-reader.cc:139 +#: tfm-reader.cc:140 #, c-format msgid "%s: TFM file has %u parameters, which is more than the %u I can handle" msgstr "" -#: tie-engraver.cc:211 tie-performer.cc:173 +#. How to shut up this warning, when no notes appeared because +#. they were suicided by Thread_devnull_engraver? +#: tie-engraver.cc:215 tie-performer.cc:173 msgid "No ties were created!" msgstr "" -#: tie-engraver.cc:230 +#: tie-engraver.cc:234 msgid "lonely tie" msgstr "" @@ -893,21 +927,21 @@ msgstr "controllo del battute fallito: %s" msgid "unknown translator: `%s'" msgstr "traduttore sconosciuto `%s'" -#: translator-def.cc:96 +#: translator-def.cc:99 msgid "Program has no such type" msgstr "" -#: translator-def.cc:102 +#: translator-def.cc:105 #, c-format msgid "Already contains: `%s'" msgstr "" -#: translator-def.cc:103 +#: translator-def.cc:106 #, fuzzy, c-format msgid "Not adding translator: `%s'" msgstr "traduttore sconosciuto `%s'" -#: translator-def.cc:215 +#: translator-def.cc:224 #, fuzzy, c-format msgid "can't find: `%s'" msgstr "non trovo `%s'" @@ -922,19 +956,19 @@ msgstr "non trovo e non posso creare '%s' chiamato '%s'" msgid "can't find or create: `%s'" msgstr "non trovo e non posso creare `%s'" -#: translator-group.cc:403 +#: translator-group.cc:414 #, c-format msgid "" "Can't find property type-check for `%s'. Perhaps you made a typing error?" msgstr "" -#: translator-group.cc:417 +#: translator-group.cc:428 #, c-format msgid "Type check for `%s' failed; value `%s' must be of type `%s'" msgstr "" #. programming_error? -#: translator-group.cc:436 +#: translator-group.cc:447 msgid "ly-get-trans-property: expecting a Translator_group argument" msgstr "" @@ -955,118 +989,189 @@ msgstr "" msgid "Oldest supported input version: %s" msgstr "" -#: parser.yy:471 +#: parser.yy:473 msgid "Wrong type for property value" msgstr "Tipo sbagliato per il valore di una proprietЮ" -#: parser.yy:666 +#: parser.yy:672 msgid "More alternatives than repeats. Junking excess alternatives." msgstr "" -#: parser.yy:730 +#: parser.yy:736 msgid "Second argument must be a symbol" msgstr "" -#: parser.yy:735 +#: parser.yy:741 msgid "First argument must be a procedure taking 1 argument" msgstr "" -#: parser.yy:1211 +#: parser.yy:1236 msgid "Expecting string as script definition" msgstr "" -#: parser.yy:1221 +#: parser.yy:1246 msgid "Can't specify direction for this request" msgstr "" -#: parser.yy:1353 +#: parser.yy:1371 msgid "Expecting musical-pitch value" msgstr "" -#: parser.yy:1364 +#: parser.yy:1382 #, fuzzy msgid "Must have duration object" msgstr "indicazione durata priva di senso" -#: parser.yy:1373 parser.yy:1381 parser.yy:1661 +#: parser.yy:1391 parser.yy:1399 parser.yy:1679 #, fuzzy msgid "Have to be in Lyric mode for lyrics" msgstr "bisogna essere in Lyric mode per i testi" -#: parser.yy:1546 parser.yy:1575 +#: parser.yy:1564 parser.yy:1593 #, c-format msgid "not a duration: %d" msgstr "non Х una durata: %d" -#: parser.yy:1584 +#: parser.yy:1602 #, fuzzy msgid "Have to be in Note mode for notes" msgstr "bisogna essere in Note mode per le note" -#: parser.yy:1680 +#: parser.yy:1698 #, fuzzy msgid "Have to be in Chord mode for chords" msgstr "bisogna essere in Chord mode per gli accordi" -#: parser.yy:1842 parser.yy:1860 +#: parser.yy:1860 parser.yy:1878 msgid "need integer number arg" msgstr "" -#: parser.yy:1846 +#: parser.yy:1864 msgid "Must be positive integer" msgstr "" -#: lexer.ll:165 +#: lexer.ll:166 msgid "EOF found inside a comment" msgstr "ho trovato un EOF in un commento" -#: lexer.ll:179 +#: lexer.ll:180 msgid "\\maininput disallowed outside init files" msgstr "" -#: lexer.ll:203 +#: lexer.ll:204 #, fuzzy, c-format msgid "wrong or undefined identifier: `%s'" msgstr "indentificatore non definito: `%s'" #. backup rule -#: lexer.ll:208 +#: lexer.ll:209 #, fuzzy msgid "Missing end quote" msgstr "apice finale mancante" #. backup rule -#: lexer.ll:230 lexer.ll:234 +#: lexer.ll:231 lexer.ll:235 msgid "white expected" msgstr "aspettavo uno spazio bianco" -#: lexer.ll:243 +#: lexer.ll:244 msgid "Can't evaluate Scheme in safe mode" msgstr "" -#: lexer.ll:335 +#: lexer.ll:336 msgid "Brace found at end of lyric. Did you forget a space?" msgstr "" -#: lexer.ll:439 +#: lexer.ll:440 #, fuzzy, c-format msgid "invalid character: `%c'" msgstr "carattere illegale: `%c'" -#: lexer.ll:520 +#: lexer.ll:521 #, c-format msgid "unknown escaped string: `\\%s'" msgstr "stringa di escape sconosciuta: `\\%s'" -#: lexer.ll:602 +#: lexer.ll:603 #, fuzzy, c-format msgid "incorrect lilypond version: %s (%s, %s)" msgstr "versione di mudela errata: %s (%s, %s)" -#: lexer.ll:603 +#: lexer.ll:604 msgid "Consider converting the input with the convert-ly script" msgstr "" +#: lilypond-item.cc:161 +#, c-format +msgid "#32 in quarter: %d" +msgstr "#32 in un quarto: %d" + +#: lilypond-score.cc:108 +#, c-format +msgid "Lily output to %s..." +msgstr "Output di Lily in %s..." + +#: lilypond-score.cc:119 +#, fuzzy, c-format +msgid "track %d:" +msgstr "traccia " + +#: lilypond-score.cc:155 +msgid "Processing..." +msgstr "Elaboro..." + +#: lilypond-score.cc:164 +msgid "Creating voices..." +msgstr "Genero le voci..." + +#: lilypond-score.cc:168 +msgid "track " +msgstr "traccia " + +#: lilypond-score.cc:177 +msgid "NOT Filtering tempo..." +msgstr "NON filtro il tempo..." + +#: lilypond-score.cc:186 +msgid "NOT Quantifying columns..." +msgstr "NON quantifico le colonne..." + +#: lilypond-score.cc:190 +msgid "Quantifying columns..." +msgstr "Quantifico le colonne..." + +#: lilypond-score.cc:223 +msgid "Settling columns..." +msgstr "Sistemo le colonne..." + +#: lilypond-staff.cc:209 +msgid "% MIDI copyright:" +msgstr "" + +#: lilypond-staff.cc:210 +#, fuzzy +msgid "% MIDI instrument:" +msgstr "% strumento:" + +#: lilypond-stream.cc:37 +#, c-format +msgid "lily indent level: %d" +msgstr "livello di indentazione di lili: %d" + +#. Maybe better not to translate these? +#: lilypond-stream.cc:83 +msgid "% Creator: " +msgstr "% Autore: " + +#: lilypond-stream.cc:88 +msgid "% Automatically generated" +msgstr "% Generato automaticamente" + +#: lilypond-stream.cc:97 +#, c-format +msgid "% from input file: " +msgstr "% dal file di input: " + #: main.cc:93 #, fuzzy msgid "write exact durations, e.g.: a4*385/384" @@ -1120,6 +1225,12 @@ msgstr "" msgid "set smallest duration" msgstr "indicazione durata priva di senso" +#: main.cc:103 +#, fuzzy +msgid "don't timestamp the output" +msgstr "" +" -T, --no-timestamps non inserisce marcatori temporali nell'output\n" + #: main.cc:105 msgid "be verbose" msgstr "" @@ -1137,7 +1248,7 @@ msgstr "Uso: %s [OPZIONE... [FILE]" #: main.cc:116 #, fuzzy -msgid "Translate MIDI-file to mudela" +msgid "Translate MIDI-file to lilypond" msgstr "Traduce un file midi in mudela" #: main.cc:130 @@ -1218,77 +1329,6 @@ msgstr "mi spettavo una traccia MIDI" msgid "invalid track length" msgstr "lunghezza della traccia non valida" -#: mudela-item.cc:161 -#, c-format -msgid "#32 in quarter: %d" -msgstr "#32 in un quarto: %d" - -#: mudela-score.cc:108 -#, c-format -msgid "Lily output to %s..." -msgstr "Output di Lily in %s..." - -#: mudela-score.cc:119 -#, fuzzy, c-format -msgid "track %d:" -msgstr "traccia " - -#: mudela-score.cc:155 -msgid "Processing..." -msgstr "Elaboro..." - -#: mudela-score.cc:164 -msgid "Creating voices..." -msgstr "Genero le voci..." - -#: mudela-score.cc:168 -msgid "track " -msgstr "traccia " - -#: mudela-score.cc:177 -msgid "NOT Filtering tempo..." -msgstr "NON filtro il tempo..." - -#: mudela-score.cc:186 -msgid "NOT Quantifying columns..." -msgstr "NON quantifico le colonne..." - -#: mudela-score.cc:190 -msgid "Quantifying columns..." -msgstr "Quantifico le colonne..." - -#: mudela-score.cc:223 -msgid "Settling columns..." -msgstr "Sistemo le colonne..." - -#: mudela-staff.cc:209 -msgid "% MIDI copyright:" -msgstr "" - -#: mudela-staff.cc:210 -#, fuzzy -msgid "% MIDI instrument:" -msgstr "% strumento:" - -#: mudela-stream.cc:37 -#, c-format -msgid "lily indent level: %d" -msgstr "livello di indentazione di lili: %d" - -#. Maybe better not to translate these? -#: mudela-stream.cc:83 -msgid "% Creator: " -msgstr "% Autore: " - -#: mudela-stream.cc:88 -msgid "% Automatically generated" -msgstr "% Generato automaticamente" - -#: mudela-stream.cc:97 -#, c-format -msgid "% from input file: " -msgstr "% dal file di input: " - #, fuzzy #~ msgid "Dependency file left in `%s'" #~ msgstr "scrivo il file delle dipendenze: `%s'..." @@ -1347,10 +1387,6 @@ msgstr "% dal file di input: " #~ msgstr "Nessuna armatura di chiave: assumo Do'" #, fuzzy -#~ msgid "Don't know how handle empty keys" -#~ msgstr "non so manipolare tasti vuoti" - -#, fuzzy #~ msgid "out of tune:" #~ msgstr "stonato" @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: lilypond 1.2.17\n" -"POT-Creation-Date: 2001-03-06 12:36+0100\n" +"POT-Creation-Date: 2001-03-21 16:06+0100\n" "PO-Revision-Date: 2000-03-29 20:50+0900\n" "Last-Translator: Daisuke Yamashita <yamad@mb.infoweb.ne.jp>\n" "Language-Team: Japanese <ja@li.org>\n" @@ -13,117 +13,137 @@ msgstr "" "Content-Type: text/plain; charset=EUC-JP\n" "Content-Transfer-Encoding: 8bit\n" -#: ly2dvi.py:67 main.cc:95 main.cc:109 +#: ly2dvi.py:86 main.cc:95 main.cc:105 msgid "this help" msgstr "╓Ё╓н╔ь╔К╔в" -#: ly2dvi.py:68 +#: ly2dvi.py:87 msgid "change global setting KEY to VAL" msgstr "" -#: ly2dvi.py:69 +#: ly2dvi.py:88 #, fuzzy msgid "generate PostScript output" msgstr "ю╘╦б╓Р╢коб" -#: ly2dvi.py:70 +#: ly2dvi.py:89 msgid "keep all output, and name the directory ly2dvi.dir" msgstr "" -#: ly2dvi.py:71 +#: ly2dvi.py:90 msgid "don't run LilyPond" msgstr "" -#: ly2dvi.py:72 main.cc:104 main.cc:119 +#: ly2dvi.py:91 main.cc:115 +#, fuzzy +msgid "verbose" +msgstr "╬э╨ы╓й╬ПйС╓Ри╫╪╗╓╥╓ч╓╧" + +#: ly2dvi.py:92 main.cc:104 main.cc:114 msgid "print version number" msgstr "╔п║╪╔╦╔Г╔Схж╧Ф╓Ри╫╪╗" -#: ly2dvi.py:73 main.cc:106 main.cc:121 +#: ly2dvi.py:93 main.cc:106 main.cc:116 msgid "show warranty and copyright" msgstr "йщ╬з╓хцЬ╨Н╦╒╓к╓д╓╓╓фи╫╪╗╓╧╓К" -#: ly2dvi.py:74 +#: ly2dvi.py:94 msgid "dump all final output into DIR" msgstr "" -#: ly2dvi.py:75 main.cc:113 +#: ly2dvi.py:95 main.cc:109 msgid "write Makefile dependencies for every input file" msgstr "а╢╓ф╓нфЧно╔у╔║╔╓╔К╓н Makefile ╟мб╦╢ь╥╦╓Р╫Я╓╜╧Ч╓Ю" -#: ly2dvi.py:101 +#: data-file.cc:118 input.cc:85 ly2dvi.py:123 midi-parser.cc:100 warn.cc:23 +msgid "warning: " +msgstr "╥ы╧П: " + +#: input.cc:90 ly2dvi.py:128 ly2dvi.py:263 warn.cc:9 warn.cc:17 +msgid "error: " +msgstr "╔╗╔И║╪: " + +#: ly2dvi.py:130 #, fuzzy msgid "Exiting ... " msgstr "╧т ..." -#: ly2dvi.py:120 +#: ly2dvi.py:149 #, fuzzy, c-format -msgid "Reading `%s'" +msgid "Reading %s..." msgstr "мв╣А╓Р╪н╓ф╓ч╓╧: `%s'" -#: ly2dvi.py:124 mapped-file-storage.cc:87 mudela-stream.cc:111 +#: lilypond-stream.cc:111 ly2dvi.py:153 mapped-file-storage.cc:87 #: paper-stream.cc:40 scores.cc:48 simple-file-storage.cc:44 text-stream.cc:23 #, fuzzy, c-format msgid "can't open file: `%s'" msgstr "╔у╔║╔╓╔К╓РЁ╚╓╠╓ч╓╩╓С: `%s'" -#: ly2dvi.py:187 +#: ly2dvi.py:216 #, fuzzy, c-format msgid "Usage: %s [OPTION]... FILE" msgstr "╩х╓╓йЩ: %s [╔╙╔в╔╥╔Г╔С]... [╔у╔║╔╓╔К]" -#: ly2dvi.py:189 +#: ly2dvi.py:218 msgid "Generate .dvi with LaTeX for LilyPond" msgstr "" -#: ly2dvi.py:191 main.cc:119 main.cc:151 +#: ly2dvi.py:220 main.cc:119 main.cc:146 msgid "Options:" msgstr "╔╙╔в╔╥╔Г╔С:" -#: data-file.cc:118 input.cc:85 ly2dvi.py:195 midi-parser.cc:100 warn.cc:23 -msgid "warning: " -msgstr "╥ы╧П: " - -#: ly2dvi.py:196 +#: ly2dvi.py:224 msgid "all output is written in the CURRENT directory" msgstr "" -#: ly2dvi.py:198 main.cc:123 main.cc:174 +#: ly2dvi.py:226 main.cc:123 main.cc:169 #, c-format msgid "Report bugs to %s" msgstr "╔п╔╟╔Л╔щ║╪╔х╓о %s ╓ь" -#: ly2dvi.py:230 +#: ly2dvi.py:260 #, fuzzy, c-format msgid "Invoking `%s'" msgstr "мв╣А╓Р╪н╓ф╓ч╓╧: `%s'" -#: input.cc:90 ly2dvi.py:234 warn.cc:9 warn.cc:17 -msgid "error: " -msgstr "╔╗╔И║╪: " - -#: ly2dvi.py:234 +#: ly2dvi.py:263 #, c-format msgid "command exited with value %d" msgstr "" -#: ly2dvi.py:236 +#: ly2dvi.py:265 msgid "(ignored)" msgstr "" -#: ly2dvi.py:277 +#: ly2dvi.py:301 +#, fuzzy, c-format +msgid "no such setting: %s" +msgstr "╓╫╓нмм╓йЁз╢О╓о╓╒╓Й╓ч╓╩╓С: `%s'" + +#: ly2dvi.py:309 #, c-format msgid "Analyzing `%s'" msgstr "" -#: ly2dvi.py:539 scores.cc:44 +#: ly2dvi.py:353 +#, c-format +msgid "no lilypond output found for %s" +msgstr "" + +#: ly2dvi.py:395 +#, fuzzy, c-format +msgid "invalid value: %s" +msgstr "л╣╦З╓йй╦╩З: `%c'" + +#: ly2dvi.py:602 scores.cc:44 #, fuzzy, c-format msgid "dependencies output to %s..." msgstr "%s ╓ь paper ╫пно..." -#: ly2dvi.py:540 -#, c-format -msgid "%s file left in `%s'" -msgstr "" +#: ly2dvi.py:603 +#, fuzzy, c-format +msgid "%s output to %s..." +msgstr "%s ╓ь╓н MIDI ╫пно" #: data-file.cc:54 msgid "EOF in a string" @@ -229,12 +249,12 @@ msgstr "╔г╔у╔╘╔К╔х╔у╔╘╔С╔х╓Р╔М║╪╔и╓╥╓ч╓╧" msgid "can't find default font: `%s'" msgstr "╔г╔у╔╘╔К╔х╔у╔╘╔С╔х╓╛╦╚╓д╓╚╓Й╓ч╓╩╓С: `%s'" -#: all-font-metrics.cc:172 includable-lexer.cc:50 scores.cc:137 +#: all-font-metrics.cc:172 includable-lexer.cc:51 scores.cc:137 #, c-format msgid "(search path: `%s')" msgstr "(╦║╨В╔я╔╧: `%s')" -#: all-font-metrics.cc:173 parser.yy:1663 +#: all-font-metrics.cc:173 parser.yy:1681 msgid "Giving up" msgstr "дЭ╓А╓ч╓╥╓©" @@ -315,7 +335,7 @@ msgstr "л╣╦З╓й╟З╓╜╩╩: ╔Ё║╪╔и╓н╟ЛиТ╓г╓о╓╒╓Й╓ч╓╩╓С: %s" msgid "invalid inversion pitch: not part of chord: %s" msgstr "л╣╦З╓йе╬╡С╔т╔ц╔а: ╔Ё║╪╔и╓н╟ЛиТ╓г╓о╓╒╓Й╓ч╓╩╓С: %s" -#: chord-tremolo-engraver.cc:141 +#: chord-tremolo-engraver.cc:141 percent-repeat-engraver.cc:162 #, fuzzy msgid "unterminated chord tremolo" msgstr "╫╙ц╪╓н╓й╓╓╔о╔╓╔у╔С" @@ -325,7 +345,7 @@ msgstr "╫╙ц╪╓н╓й╓╓╔о╔╓╔у╔С" msgid "no one to print a tremolos" msgstr "х©иЭ╣╜╧Ф╓Ри╫╪╗╓╧╓К╓Б╓н╓╛╓╒╓Й╓ч╓╩╓С" -#: collision.cc:116 +#: collision.cc:118 msgid "Too many clashing notecolumns. Ignoring them." msgstr "дЮ╓Й╧Г╓О╓й╓╓╡╩иД╓╛б©╓╧╓╝╓ч╓╧║ё╓╫╓Л╓И╓Рл╣╩К╓╥╓ч╓╧║ё" @@ -357,7 +377,7 @@ msgstr "╢Ш╓кЁц╓╛╓╒╓Й╓ч╓╧" msgid "already have a decrescendo" msgstr "╢Ш╓кЁц╓╛╓╒╓Й╓ч╓╧" -#: dynamic-engraver.cc:307 +#: dynamic-engraver.cc:318 #, fuzzy msgid "unterminated (de)crescendo" msgstr "╫╙н╩╓╥╓ф╓╓╓й╓╓╔╞╔Л╔ц╔╥╔╖╔С╔и" @@ -374,7 +394,7 @@ msgstr "╔╗╔╞╔╧╔ф╔С╔ю╓╛╨╦б╕╓к╓д╓й╓╛╓Й╓ч╓╩╓С║ё╔╗╔╞╔╧╔ф╔С╔юмв╣А╓Рл╣╩К╓╥╓ч╓╧║ё" msgid "no one to print a repeat brace" msgstr "х©иЭ╣╜╧Ф╓Ри╫╪╗╓╧╓К╓Б╓н╓╛╓╒╓Й╓ч╓╩╓С" -#: font-interface.cc:220 +#: font-interface.cc:237 msgid "couldn't find any font satisfying " msgstr "" @@ -407,7 +427,7 @@ msgstr "╫╙ц╪╓н╓й╓╓╔о╔╓╔у╔С" msgid "Nothing to connect hyphen to on the left. Ignoring hyphen request." msgstr "╨╦б╕╓к╥р╓╡╓К╔о╔╓╔у╔С╓╛╓╒╓Й╓ч╓╩╓С║ё╔о╔╓╔у╔С╓нмв╣А╓Рл╣╩К╓╥╓ч╓╧" -#: includable-lexer.cc:48 lily-guile.cc:139 midi-score-parser.cc:24 +#: includable-lexer.cc:49 lily-guile.cc:139 midi-score-parser.cc:24 #: scores.cc:136 scores.cc:142 #, fuzzy, c-format msgid "can't find file: `%s'" @@ -444,88 +464,83 @@ msgstr "" msgid "Huh? Melismatic note found to have associated lyrics." msgstr "" -#: main.cc:108 +#: main.cc:104 msgid "EXT" msgstr "EXT" -#: main.cc:108 +#: main.cc:104 #, fuzzy msgid "use output format EXT (scm, ps, tex or as)" msgstr "╫пно╔у╔╘║╪╔ч╔ц╔х EXT ╓Р╩х╓╕" -#: main.cc:110 +#: main.cc:106 #, fuzzy msgid "FIELD" msgstr "FILE" -#: main.cc:110 +#: main.cc:106 msgid "write header field to BASENAME.FIELD" msgstr "" -#: main.cc:111 main.cc:114 +#: main.cc:107 main.cc:110 msgid "DIR" msgstr "DIR" -#: main.cc:111 +#: main.cc:107 msgid "add DIR to search path" msgstr "DIR ╓Р╦║╨В╔я╔╧╓кди╡ц" -#: main.cc:98 main.cc:112 +#: main.cc:98 main.cc:108 msgid "FILE" msgstr "FILE" -#: main.cc:112 +#: main.cc:108 msgid "use FILE as init file" msgstr "FILE ╓Р╫И╢Э╡╫╔у╔║╔╓╔К╓х╓╥╓ф╩хмя" -#: main.cc:114 +#: main.cc:110 msgid "prepend DIR to dependencies" msgstr "" -#: main.cc:115 +#: main.cc:111 msgid "produce MIDI output only" msgstr "MIDI ╫пно╓ню╦ю╝╓н╓ъ" -#: main.cc:116 +#: main.cc:112 #, fuzzy msgid "NAME" msgstr "BASENAME" -#: main.cc:116 +#: main.cc:112 #, fuzzy msgid "write output to NAME" msgstr "BASENAME[-x].Ёхд╔╩р ╓ь╫пно╓Р╫Я╓╜╧Ч╓Ю" -#: main.cc:117 +#: main.cc:113 msgid "inhibit file output naming and exporting" msgstr "л╬а╟иу╓╠╓х╔╗╔╞╔╧╔щ║╪╔х╓н╫пно╔у╔║╔╓╔К╓Рмчю╘╓╧╓К" -#: main.cc:103 main.cc:118 -msgid "don't timestamp the output" -msgstr "╫пно╓к╔©╔╓╔Ю╔╧╔©╔С╔в╓Р╓д╓╠╓й╓╓" - -#: main.cc:120 -#, fuzzy -msgid "verbose" -msgstr "╬э╨ы╓й╬ПйС╓Ри╫╪╗╓╥╓ч╓╧" +#: main.cc:117 +msgid "EXPR" +msgstr "" -#: main.cc:122 -msgid "write midi ouput in formatted ascii" +#: main.cc:117 +msgid "evalute EXPR as Scheme after .scm init is read" msgstr "" #. #. No version number or newline here. It confuses help2man #. -#: main.cc:139 +#: main.cc:134 #, c-format msgid "Usage: %s [OPTION]... [FILE]..." msgstr "╩х╓╓йЩ: %s [╔╙╔в╔╥╔Г╔С]... [╔у╔║╔╓╔К]..." -#: main.cc:141 +#: main.cc:136 msgid "Typeset music and or play MIDI from FILE" msgstr "╔у╔║╔╓╔К╓нЁз╤й╓Раххг╓╥╓©╓Й║╒MIDI ╠Иау╓╥╓©╓Й╓╧╓К" -#: main.cc:145 +#: main.cc:140 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" @@ -535,11 +550,11 @@ msgstr "" "хЧ╓╥╓╓иХлл╓Р╨Ню╝╓╧╓К╓Ё╓х╓╛╓г╓╜╓ч╓╧║ёLilyPond ╓о GNU " "╔в╔М╔╦╔╖╔╞╔х╓н╟ЛиТ╓г╓╧║ё\n" -#: main.cc:155 +#: main.cc:150 msgid "This binary was compiled with the following options:" msgstr "╓Ё╓н╔п╔╓╔й╔Й╓о╟й╡╪╓н╔╙╔в╔╥╔Г╔Сиу╓╜╓г╔Ё╔С╔я╔╓╔К╓╣╓Л╓ч╓╥╓©" -#: main.cc:55 main.cc:182 +#: main.cc:55 main.cc:177 #, c-format msgid "" "This is free software. It is covered by the GNU General Public License,\n" @@ -555,17 +570,17 @@ msgstr "" "╓Ё╓Л╓Р╡Чйя╓╥╓©╓Й║╒йёю╫╓Ргшиш╓╥╓©╓Й╓╧╓К╩Ж╓о╢©╥ч╓╣╓Л╓ч╓╧║ё\n" "`--warranty' ╔╙╔в╔╥╔Г╔Сиу╓╜╓г╣╞ф╟╓╧╓К╓х║╒╓Х╓Й╬э╨ы╓й╬ПйС╓╛фю╓И╓Л╓ч╓╧║ё\n" -#: main.cc:62 main.cc:189 main.cc:201 +#: main.cc:62 main.cc:184 main.cc:196 #, c-format msgid "Copyright (c) %s by" msgstr "Copyright (c) %s by" -#: main.cc:199 +#: main.cc:194 #, fuzzy msgid "GNU LilyPond -- The music typesetter" msgstr "GNU LilyPond -- The GNU Project music typesetter" -#: main.cc:71 main.cc:207 +#: main.cc:71 main.cc:202 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" @@ -630,29 +645,37 @@ msgstr "го╪╞╓╡╓©╔т╔ц╔а" msgid "Transposition by %s makes accidental larger than two" msgstr "%s ╓нйяд╢╓к╓Х╓ц╓ф║╒фС╓д╓Рд╤╓╗╓Кгию╦╡╩╓╛╨Н╓И╓Л╓ч╓╥╓©" -#: music.cc:222 +#: music.cc:224 msgid "ly_get_mus_property (): Not a Music" msgstr "" -#: music.cc:236 +#: music.cc:238 msgid "ly_set_mus_property (): Not a symbol" msgstr "" -#: music.cc:248 +#: music.cc:250 msgid "ly_set_mus_property (): not of type Music" msgstr "" +#: music.cc:264 +msgid "ly_make_music (): Not a string" +msgstr "" + +#: music.cc:284 +msgid "ly_music_name (): Not a music expression" +msgstr "" + #: music-output-def.cc:115 #, fuzzy, c-format msgid "can't find `%s' context" msgstr "`%s' ╔Ё╔С╔ф╔╜╔╧╔х╓╛╦╚╓д╓╚╓Й╓ч╓╩╓С" -#: my-lily-lexer.cc:137 +#: my-lily-lexer.cc:138 #, c-format msgid "Identifier name is a keyword: `%s'" msgstr "╪╠йл╩рл╬╓о╔╜║╪╔О║╪╔и╓г╓╧: `%s'" -#: my-lily-lexer.cc:157 +#: my-lily-lexer.cc:158 #, c-format msgid "error at EOF: %s" msgstr "EOF ╓н╓х╓Ё╓М╓г╔╗╔И║╪: %s" @@ -661,7 +684,7 @@ msgstr "EOF ╓н╓х╓Ё╓М╓г╔╗╔И║╪: %s" msgid "Parsing..." msgstr "╧╫й╦╡РюоцФ..." -#: my-lily-parser.cc:55 +#: my-lily-parser.cc:57 msgid "Braces don't match" msgstr "╔ж╔Л║╪╔╧╓╛╟Лцв╓╥╓ч╓╩╓С" @@ -675,11 +698,11 @@ msgstr "мв╣А╓Р╪н╓ф╓ч╓╧: `%s'" msgid "paper output to %s..." msgstr "%s ╓ь paper ╫пно..." -#: mudela-stream.cc:93 paper-outputter.cc:94 performance.cc:102 +#: lilypond-stream.cc:93 paper-outputter.cc:85 performance.cc:95 msgid ", at " msgstr ", at " -#: paper-outputter.cc:245 +#: paper-outputter.cc:232 #, fuzzy, c-format msgid "writing header field %s to %s..." msgstr "╟мб╦╢ь╥╦╔у╔║╔╓╔К╓н╫Я╓╜╧Ч╓ъ: `%s'..." @@ -688,7 +711,7 @@ msgstr "╟мб╦╢ь╥╦╔у╔║╔╓╔К╓н╫Я╓╜╧Ч╓ъ: `%s'..." msgid "Preprocessing elements..." msgstr "мваг╓Ра╟╫ХмЩцФ..." -#: paper-score.cc:113 +#: paper-score.cc:114 msgid "Outputting Score, defined at: " msgstr "иХлл╓Р╫пно╓╥╓ч╓╧║ё╓Ё╓Ё╓гдЙ╣а: " @@ -717,6 +740,16 @@ msgstr "╔х╔И╔С╔╧╔Л║╪╔©╓╫╓н╓Б╓н╓г╓╧" msgid "none of these in my family: `%s'" msgstr "╔у╔║╔ъ╔Й╓нцФ╓к╓╒╓Й╓ч╓╩╓С" +#: percent-repeat-engraver.cc:108 +#, fuzzy +msgid "Don't know yet how to handle this percent repeat." +msgstr "╤У╓н╔╜║╪╓н╟╥╓╓йЩ╓╛х╫╓Й╓ч╓╩╓С" + +#: percent-repeat-iterator.cc:53 +#, fuzzy +msgid "no one to print a percent" +msgstr "х©иЭ╣╜╧Ф╓Ри╫╪╗╓╧╓К╓Б╓н╓╛╓╒╓Й╓ч╓╩╓С" + #: performance.cc:51 msgid "Track ... " msgstr "╔х╔И╔ц╔╞ ..." @@ -725,12 +758,12 @@ msgstr "╔х╔И╔ц╔╞ ..." msgid "Creator: " msgstr "╨Н╤й╪т: " -#: performance.cc:116 +#: performance.cc:109 #, c-format msgid "from musical definition: %s" msgstr "╡╩Ёзе╙дЙ╣а╓Х╓Й: %s" -#: performance.cc:171 +#: performance.cc:164 #, c-format msgid "MIDI output to %s..." msgstr "%s ╓ь╓н MIDI ╫пно" @@ -793,7 +826,7 @@ msgstr "╔╗╔И║╪╓Рх╞╦╚/*, ЁзиХ╓Р╫ХмЩ╓╥╓ч╓╩╓С*/" msgid "elapsed time: %.2f seconds" msgstr "╥п╡А╩Ч╢ж: %.2f иц" -#: score-engraver.cc:177 +#: score-engraver.cc:183 #, c-format msgid "unbound spanner `%s'" msgstr "йд╓╦╓ф╓╓╓й╓╓╔╧╔я╔й `%s'" @@ -830,7 +863,9 @@ msgstr "╔╧╔И║╪╓╛╣ыиД╓Р╓ч╓©╓╓╓г╓╓╓К?" msgid "unterminated slur" msgstr "╫╙ц╪╓╣╓Л╓ф╓╓╓й╓╓╔╧╔И║╪" -#: slur-engraver.cc:142 +#. How to shut up this warning, when Voice_devnull_engraver has +#. eaten start request? +#: slur-engraver.cc:144 #, fuzzy msgid "can't find start of slur" msgstr "кЖхЬ╓ь╓н(╔г)╔╞╔Л╔ц╔╥╔╖╔С╔и╓╛╦╚╓д╓╚╓Й╓ч╓╩╓С" @@ -868,21 +903,23 @@ msgstr "╫╙ц╪╓н╓й╓╓╔╗╔╞╔╧╔ф╔С╔ю" msgid "can't find ascii character: %d" msgstr "ascii й╦╩З╓╛╦╚╓д╓╚╓Й╓ч╓╩╓С: `%d'" -#: tfm-reader.cc:105 -#, c-format -msgid "TFM header of `%s' has only %u word(s)" +#: tfm-reader.cc:106 +#, fuzzy, c-format +msgid "TFM header of `%s' has only %u word (s)" msgstr "`%s' ╓н TFM ╔ь╔ц╔ю╓к %u ╦Л╓╥╓╚╓╒╓Й╓ч╓╩╓С" -#: tfm-reader.cc:139 +#: 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 ╔у╔║╔╓╔К╓о %u ╦д╓н╔я╔И╔А╔©╓╛╓╒╓Й╓ч╓╧╓╛║╒%u ╟й╬Е╓о╟╥╓╗╓ч╓╩╓С" -#: tie-engraver.cc:211 tie-performer.cc:173 +#. How to shut up this warning, when no notes appeared because +#. they were suicided by Thread_devnull_engraver? +#: tie-engraver.cc:215 tie-performer.cc:173 msgid "No ties were created!" msgstr "╨Н╓И╓Л╓©╔©╔╓╓╛╓╒╓Й╓ч╓╩╓С!" -#: tie-engraver.cc:230 +#: tie-engraver.cc:234 msgid "lonely tie" msgstr "╟Л╓д╓ю╓╠╓н╔©╔╓" @@ -900,21 +937,21 @@ msgstr "╬╝юА╔а╔╖╔ц╔╞╓╛╪╨гт: %s" msgid "unknown translator: `%s'" msgstr "х╫╓И╓й╓╓╔х╔И╔С╔╧╔Л║╪╔©: `%s'" -#: translator-def.cc:96 +#: translator-def.cc:99 msgid "Program has no such type" msgstr "╔в╔М╔╟╔И╔Ю╓к╓о╓╫╓нмм╓й╔©╔╓╔в╓╛╓╒╓Й╓ч╓╩╓С" -#: translator-def.cc:102 +#: translator-def.cc:105 #, c-format msgid "Already contains: `%s'" msgstr "╢Ш╓к╢ч╓С╓г╓╓╓ч╓╧: `%s'" -#: translator-def.cc:103 +#: translator-def.cc:106 #, fuzzy, c-format msgid "Not adding translator: `%s'" msgstr "х╫╓И╓й╓╓╔х╔И╔С╔╧╔Л║╪╔©: `%s'" -#: translator-def.cc:215 +#: translator-def.cc:224 #, fuzzy, c-format msgid "can't find: `%s'" msgstr "╦╚╓д╓╚╓Й╓ч╓╩╓С: `%s'" @@ -929,19 +966,19 @@ msgstr "`%2$s' ╓к╦ф╓п╓Л╓© `%1$s' ╓╛╦╚╓д╓╚╓И╓й╓╓╓╚╨Н╓Л╓ч╓╩╓С" msgid "can't find or create: `%s'" msgstr "╦╚╓д╓╚╓И╓й╓╓╓╚╨Н╓Л╓ч╓╩╓С: `%s'" -#: translator-group.cc:403 +#: translator-group.cc:414 #, c-format msgid "" "Can't find property type-check for `%s'. Perhaps you made a typing error?" msgstr "" -#: translator-group.cc:417 +#: translator-group.cc:428 #, c-format msgid "Type check for `%s' failed; value `%s' must be of type `%s'" msgstr "" #. programming_error? -#: translator-group.cc:436 +#: translator-group.cc:447 msgid "ly-get-trans-property: expecting a Translator_group argument" msgstr "" @@ -962,114 +999,184 @@ msgstr "" msgid "Oldest supported input version: %s" msgstr "╟Лхж╦е╓╓фЧно╡дг╫╔п║╪╔╦╔Г╔С: %s" -#: parser.yy:471 +#: parser.yy:473 msgid "Wrong type for property value" msgstr "б╟ю╜цм╓ь╓н╔©╔╓╔в╓╛╢ж╟Ц╓ц╓ф╓╓╓ч╓╧" -#: parser.yy:666 +#: parser.yy:672 msgid "More alternatives than repeats. Junking excess alternatives." msgstr "╥╚╓Ййж╓╥╓Х╓Й╓Ба╙бР╩Х╓╛б©╓╓║ёд╤╡Ай╛╓Р╪н╓ф╓ч╓╧║ё" -#: parser.yy:730 +#: parser.yy:736 msgid "Second argument must be a symbol" msgstr "" -#: parser.yy:735 +#: parser.yy:741 msgid "First argument must be a procedure taking 1 argument" msgstr "" -#: parser.yy:1211 +#: parser.yy:1236 msgid "Expecting string as script definition" msgstr "" -#: parser.yy:1221 +#: parser.yy:1246 msgid "Can't specify direction for this request" msgstr "╓Ё╓нмв╣А╓кбп╓╧╓КйЩ╦Ч╓Р╩ьдЙ╓╧╓К╓Ё╓х╓о╓г╓╜╓ч╓╩╓С" -#: parser.yy:1353 +#: parser.yy:1371 msgid "Expecting musical-pitch value" msgstr "" -#: parser.yy:1364 +#: parser.yy:1382 #, fuzzy msgid "Must have duration object" msgstr "╡╩д╧╓Р╨г╬╝╓кюъдЙ╓╥╓ч╓╧" -#: parser.yy:1373 parser.yy:1381 parser.yy:1661 +#: parser.yy:1391 parser.yy:1399 parser.yy:1679 msgid "Have to be in Lyric mode for lyrics" msgstr "╡н╩Л╓о Lyric ╔Б║╪╔ифБ╓к╫Я╓╓╓ф╓╞╓ю╓╣╓╓" -#: parser.yy:1546 parser.yy:1575 +#: parser.yy:1564 parser.yy:1593 #, c-format msgid "not a duration: %d" msgstr "╡╩д╧╓г╓о╓╒╓Й╓ч╓╩╓С: %d" -#: parser.yy:1584 +#: parser.yy:1602 msgid "Have to be in Note mode for notes" msgstr "╡╩иД╓о Note ╔Б║╪╔ифБ╓к╫Я╓╓╓ф╓╞╓ю╓╣╓╓" -#: parser.yy:1680 +#: parser.yy:1698 msgid "Have to be in Chord mode for chords" msgstr "╔Ё║╪╔и╓о Chord ╔Б║╪╔ифБ╓к╫Я╓╓╓ф╓╞╓ю╓╣╓╓" -#: parser.yy:1842 parser.yy:1860 +#: parser.yy:1860 parser.yy:1878 msgid "need integer number arg" msgstr "" -#: parser.yy:1846 +#: parser.yy:1864 msgid "Must be positive integer" msgstr "" -#: lexer.ll:165 +#: lexer.ll:166 msgid "EOF found inside a comment" msgstr "╔Ё╔А╔С╔хфБ╓к EOF ╓╛╦╚╓д╓╚╓Й╓ч╓╥╓©" -#: lexer.ll:179 +#: lexer.ll:180 msgid "\\maininput disallowed outside init files" msgstr "╫И╢Э╡╫╔у╔║╔╓╔К╓нЁ╟╓г╓о \\maininput ╓Р╣╜╫р╓г╓╜╓ч╓╩╓С" -#: lexer.ll:203 +#: lexer.ll:204 #, fuzzy, c-format msgid "wrong or undefined identifier: `%s'" msgstr "л╓дЙ╣а╓н╪╠йл╩р: `%s'" #. backup rule -#: lexer.ll:208 +#: lexer.ll:209 msgid "Missing end quote" msgstr "╫╙н╩╔╞╔╙║╪╔х╓╛╓╒╓Й╓ч╓╩╓С" #. backup rule -#: lexer.ll:230 lexer.ll:234 +#: lexer.ll:231 lexer.ll:235 msgid "white expected" msgstr "╤УгР╓╛и╛мв╓г╓╧" -#: lexer.ll:243 +#: lexer.ll:244 msgid "Can't evaluate Scheme in safe mode" msgstr "╟ба╢╔Б║╪╔и╓г╓о Scheme ╓ни╬╡а╓Р╓г╓╜╓ч╓╩╓С" -#: lexer.ll:335 +#: lexer.ll:336 msgid "Brace found at end of lyric. Did you forget a space?" msgstr "" -#: lexer.ll:439 +#: lexer.ll:440 #, c-format msgid "invalid character: `%c'" msgstr "л╣╦З╓йй╦╩З: `%c'" -#: lexer.ll:520 +#: lexer.ll:521 #, c-format msgid "unknown escaped string: `\\%s'" msgstr "л╓цн╓н╔╗╔╧╔╠║╪╔вй╦╩ЗнС: `\\%s'" -#: lexer.ll:602 +#: lexer.ll:603 #, fuzzy, c-format msgid "incorrect lilypond version: %s (%s, %s)" msgstr "╢ж╟Ц╓ц╓© mudela ╔п║╪╔╦╔Г╔С: %s (%s, %s)" -#: lexer.ll:603 +#: lexer.ll:604 msgid "Consider converting the input with the convert-ly script" msgstr "" +#: lilypond-item.cc:161 +#, c-format +msgid "#32 in quarter: %d" +msgstr "╩мй╛╓нцФ╓к #32: %d" + +#: lilypond-score.cc:108 +#, c-format +msgid "Lily output to %s..." +msgstr "Lily ╓о %s ╓к╫пно╓╥╓ч╓╧..." + +#: lilypond-score.cc:119 +#, c-format +msgid "track %d:" +msgstr "╔х╔И╔ц╔╞ %d:" + +#: lilypond-score.cc:155 +msgid "Processing..." +msgstr "╫ХмЩцФ..." + +#: lilypond-score.cc:164 +msgid "Creating voices..." +msgstr "╡╩ю╪╓Р╨Ню╝цФ..." + +#: lilypond-score.cc:168 +msgid "track " +msgstr "╔х╔И╔ц╔╞ " + +#: lilypond-score.cc:177 +msgid "NOT Filtering tempo..." +msgstr "╔ф╔С╔щ╓н╔у╔ё╔К╔©╓Р╓╥╓ч╓╩╓С..." + +#: lilypond-score.cc:186 +msgid "NOT Quantifying columns..." +msgstr "╔╚╔И╔Ю╓нд╧╓╣╓Рнл╓Й╓ч╓╩╓С..." + +#: lilypond-score.cc:190 +msgid "Quantifying columns..." +msgstr "╔╚╔И╔Ю╓нд╧╓╣╓Рнл╓Й╓ч╓╧..." + +#: lilypond-score.cc:223 +msgid "Settling columns..." +msgstr "╔╚╔И╔Ю╓Р╥ХдЙ╓╥╓ч╓╧..." + +#: 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 "lily indent level: %d" + +#. Maybe better not to translate these? +#: lilypond-stream.cc:83 +msgid "% Creator: " +msgstr "%s Creator: " + +#: lilypond-stream.cc:88 +msgid "% Automatically generated" +msgstr "% Automatically generated" + +#: lilypond-stream.cc:97 +#, c-format +msgid "% from input file: " +msgstr "% from input file: " + #: main.cc:93 msgid "write exact durations, e.g.: a4*385/384" msgstr "ю╣Ён╓й╡╩д╧╓Р╫Я╓╓╓ф╓╞╓ю╓╣╓╓║ёнЦ: a4*385/384" @@ -1115,6 +1222,10 @@ msgstr "DUR" msgid "set smallest duration" msgstr "╡╩д╧╓Р╨г╬╝╓кюъдЙ╓╥╓ч╓╧" +#: main.cc:103 +msgid "don't timestamp the output" +msgstr "╫пно╓к╔©╔╓╔Ю╔╧╔©╔С╔в╓Р╓д╓╠╓й╓╓" + #: main.cc:105 msgid "be verbose" msgstr "╬э╨ы╓й╬ПйС╓Ри╫╪╗╓╥╓ч╓╧" @@ -1129,7 +1240,8 @@ msgid "Usage: %s [OPTION]... [FILE]" msgstr "╩х╓╓йЩ: %s [╔╙╔в╔╥╔Г╔С]... [╔у╔║╔╓╔К]" #: main.cc:116 -msgid "Translate MIDI-file to mudela" +#, fuzzy +msgid "Translate MIDI-file to lilypond" msgstr "MIDI ╔у╔║╔╓╔К╓Р mudela ╓кйя╢╧╓╥╓ч╓╧" #: main.cc:130 @@ -1207,76 +1319,6 @@ msgstr "MIDI ╔х╔И╔ц╔╞╓╛и╛мв╓г╓╧" msgid "invalid track length" msgstr "л╣╦З╓й╔х╔И╔ц╔╞д╧╓г╓╧" -#: mudela-item.cc:161 -#, c-format -msgid "#32 in quarter: %d" -msgstr "╩мй╛╓нцФ╓к #32: %d" - -#: mudela-score.cc:108 -#, c-format -msgid "Lily output to %s..." -msgstr "Lily ╓о %s ╓к╫пно╓╥╓ч╓╧..." - -#: mudela-score.cc:119 -#, c-format -msgid "track %d:" -msgstr "╔х╔И╔ц╔╞ %d:" - -#: mudela-score.cc:155 -msgid "Processing..." -msgstr "╫ХмЩцФ..." - -#: mudela-score.cc:164 -msgid "Creating voices..." -msgstr "╡╩ю╪╓Р╨Ню╝цФ..." - -#: mudela-score.cc:168 -msgid "track " -msgstr "╔х╔И╔ц╔╞ " - -#: mudela-score.cc:177 -msgid "NOT Filtering tempo..." -msgstr "╔ф╔С╔щ╓н╔у╔ё╔К╔©╓Р╓╥╓ч╓╩╓С..." - -#: mudela-score.cc:186 -msgid "NOT Quantifying columns..." -msgstr "╔╚╔И╔Ю╓нд╧╓╣╓Рнл╓Й╓ч╓╩╓С..." - -#: mudela-score.cc:190 -msgid "Quantifying columns..." -msgstr "╔╚╔И╔Ю╓нд╧╓╣╓Рнл╓Й╓ч╓╧..." - -#: mudela-score.cc:223 -msgid "Settling columns..." -msgstr "╔╚╔И╔Ю╓Р╥ХдЙ╓╥╓ч╓╧..." - -#: mudela-staff.cc:209 -msgid "% MIDI copyright:" -msgstr "% MIDI copyright:" - -#: mudela-staff.cc:210 -msgid "% MIDI instrument:" -msgstr "% MIDI instrument:" - -#: mudela-stream.cc:37 -#, c-format -msgid "lily indent level: %d" -msgstr "lily indent level: %d" - -#. Maybe better not to translate these? -#: mudela-stream.cc:83 -msgid "% Creator: " -msgstr "%s Creator: " - -#: mudela-stream.cc:88 -msgid "% Automatically generated" -msgstr "% Automatically generated" - -#: mudela-stream.cc:97 -#, c-format -msgid "% from input file: " -msgstr "% from input file: " - #, fuzzy #~ msgid "Dependency file left in `%s'" #~ msgstr "╟мб╦╢ь╥╦╔у╔║╔╓╔К╓н╫Я╓╜╧Ч╓ъ: `%s'..." @@ -1421,9 +1463,6 @@ msgstr "% from input file: " #~ msgid "No key name, assuming `C'" #~ msgstr "╔╜║╪л╬╓╛╓╒╓Й╓ч╓╩╓С║╒`C' ╓Р╩Н╓ъ╓ч╓╧" -#~ msgid "Don't know how handle empty keys" -#~ msgstr "╤У╓н╔╜║╪╓н╟╥╓╓йЩ╓╛х╫╓Й╓ч╓╩╓С" - #~ msgid "Don't have that many octaves (%s)" #~ msgstr "╓╫╓С╓й╓кбТ╩Ё╓н╔╙╔╞╔©║╪╔ж (%s) ╓Р╩х╓О╓й╓╓╓г╓╞╓ю╓╣╓╓" diff --git a/po/lilypond.pot b/po/lilypond.pot index f1360089e1..ac3781601d 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-03-20 23:05+0100\n" +"POT-Creation-Date: 2001-03-21 16:06+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -71,7 +71,7 @@ msgstr "" msgid "Reading %s..." msgstr "" -#: ly2dvi.py:153 mapped-file-storage.cc:87 mudela-stream.cc:111 +#: lilypond-stream.cc:111 ly2dvi.py:153 mapped-file-storage.cc:87 #: paper-stream.cc:40 scores.cc:48 simple-file-storage.cc:44 text-stream.cc:23 #, c-format msgid "can't open file: `%s'" @@ -634,7 +634,7 @@ msgstr "" msgid "paper output to %s..." msgstr "" -#: mudela-stream.cc:93 paper-outputter.cc:85 performance.cc:95 +#: lilypond-stream.cc:93 paper-outputter.cc:85 performance.cc:95 msgid ", at " msgstr "" @@ -1033,6 +1033,76 @@ msgstr "" msgid "Consider converting the input with the convert-ly script" msgstr "" +#: lilypond-item.cc:161 +#, c-format +msgid "#32 in quarter: %d" +msgstr "" + +#: lilypond-score.cc:108 +#, c-format +msgid "Lily output to %s..." +msgstr "" + +#: lilypond-score.cc:119 +#, c-format +msgid "track %d:" +msgstr "" + +#: lilypond-score.cc:155 +msgid "Processing..." +msgstr "" + +#: lilypond-score.cc:164 +msgid "Creating voices..." +msgstr "" + +#: lilypond-score.cc:168 +msgid "track " +msgstr "" + +#: lilypond-score.cc:177 +msgid "NOT Filtering tempo..." +msgstr "" + +#: lilypond-score.cc:186 +msgid "NOT Quantifying columns..." +msgstr "" + +#: lilypond-score.cc:190 +msgid "Quantifying columns..." +msgstr "" + +#: lilypond-score.cc:223 +msgid "Settling columns..." +msgstr "" + +#: lilypond-staff.cc:209 +msgid "% MIDI copyright:" +msgstr "" + +#: lilypond-staff.cc:210 +msgid "% MIDI instrument:" +msgstr "" + +#: lilypond-stream.cc:37 +#, c-format +msgid "lily indent level: %d" +msgstr "" + +#. Maybe better not to translate these? +#: lilypond-stream.cc:83 +msgid "% Creator: " +msgstr "" + +#: lilypond-stream.cc:88 +msgid "% Automatically generated" +msgstr "" + +#: lilypond-stream.cc:97 +#, c-format +msgid "% from input file: " +msgstr "" + #: main.cc:93 msgid "write exact durations, e.g.: a4*385/384" msgstr "" @@ -1095,7 +1165,7 @@ msgid "Usage: %s [OPTION]... [FILE]" msgstr "" #: main.cc:116 -msgid "Translate MIDI-file to mudela" +msgid "Translate MIDI-file to lilypond" msgstr "" #: main.cc:130 @@ -1171,73 +1241,3 @@ msgstr "" #: midi-track-parser.cc:353 msgid "invalid track length" msgstr "" - -#: mudela-item.cc:161 -#, c-format -msgid "#32 in quarter: %d" -msgstr "" - -#: mudela-score.cc:108 -#, c-format -msgid "Lily output to %s..." -msgstr "" - -#: mudela-score.cc:119 -#, c-format -msgid "track %d:" -msgstr "" - -#: mudela-score.cc:155 -msgid "Processing..." -msgstr "" - -#: mudela-score.cc:164 -msgid "Creating voices..." -msgstr "" - -#: mudela-score.cc:168 -msgid "track " -msgstr "" - -#: mudela-score.cc:177 -msgid "NOT Filtering tempo..." -msgstr "" - -#: mudela-score.cc:186 -msgid "NOT Quantifying columns..." -msgstr "" - -#: mudela-score.cc:190 -msgid "Quantifying columns..." -msgstr "" - -#: mudela-score.cc:223 -msgid "Settling columns..." -msgstr "" - -#: mudela-staff.cc:209 -msgid "% MIDI copyright:" -msgstr "" - -#: mudela-staff.cc:210 -msgid "% MIDI instrument:" -msgstr "" - -#: mudela-stream.cc:37 -#, c-format -msgid "lily indent level: %d" -msgstr "" - -#. Maybe better not to translate these? -#: mudela-stream.cc:83 -msgid "% Creator: " -msgstr "" - -#: mudela-stream.cc:88 -msgid "% Automatically generated" -msgstr "" - -#: mudela-stream.cc:97 -#, c-format -msgid "% from input file: " -msgstr "" @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: lilypond 1.3.59\n" -"POT-Creation-Date: 2001-03-20 23:05+0100\n" +"POT-Creation-Date: 2001-03-21 16:06+0100\n" "PO-Revision-Date: 2000-06-09 02:23+0200\n" "Last-Translator: Jan Nieuwenhuizen <janneke@gnu.org>\n" "Language-Team: Dutch <nl@li.org>\n" @@ -20,8 +20,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Date: 1998-05-26 11:26:28+0200\n" "From: <janneke@gnu.org>\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:86 main.cc:95 main.cc:105 @@ -81,7 +80,7 @@ msgstr "BeКidigen ..." msgid "Reading %s..." msgstr "Inlezen %s..." -#: ly2dvi.py:153 mapped-file-storage.cc:87 mudela-stream.cc:111 +#: lilypond-stream.cc:111 ly2dvi.py:153 mapped-file-storage.cc:87 #: paper-stream.cc:40 scores.cc:48 simple-file-storage.cc:44 text-stream.cc:23 #, c-format msgid "can't open file: `%s'" @@ -670,7 +669,7 @@ msgstr "Schroot verzoek: `%s'" msgid "paper output to %s..." msgstr "papier uitvoer naar %s..." -#: mudela-stream.cc:93 paper-outputter.cc:85 performance.cc:95 +#: lilypond-stream.cc:93 paper-outputter.cc:85 performance.cc:95 msgid ", at " msgstr ", bij " @@ -1074,6 +1073,76 @@ msgstr "verkeerde lilypond versie: %s (%s, %s)" msgid "Consider converting the input with the convert-ly script" msgstr "Overweeg de invoer te converteren met het convert-ly script" +#: lilypond-item.cc:161 +#, c-format +msgid "#32 in quarter: %d" +msgstr "#32 in kwart: %d" + +#: lilypond-score.cc:108 +#, c-format +msgid "Lily output to %s..." +msgstr "Lelie uitvoer naar %s..." + +#: lilypond-score.cc:119 +#, c-format +msgid "track %d:" +msgstr "spoor %d:" + +#: lilypond-score.cc:155 +msgid "Processing..." +msgstr "Verwerken..." + +#: lilypond-score.cc:164 +msgid "Creating voices..." +msgstr "Scheppen van stemmen..." + +#: lilypond-score.cc:168 +msgid "track " +msgstr "spoor " + +#: lilypond-score.cc:177 +msgid "NOT Filtering tempo..." +msgstr "NIET Filteren van tempo..." + +#: lilypond-score.cc:186 +msgid "NOT Quantifying columns..." +msgstr "NIET Kwantificeren van kolommen..." + +#: lilypond-score.cc:190 +msgid "Quantifying columns..." +msgstr "Kwantificeren van kolommen..." + +#: lilypond-score.cc:223 +msgid "Settling columns..." +msgstr "Zetten van kolommen..." + +#: 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 "lelie inspring diepte: %d" + +#. Maybe better not to translate these? +#: lilypond-stream.cc:83 +msgid "% Creator: " +msgstr "% Schepper: " + +#: lilypond-stream.cc:88 +msgid "% Automatically generated" +msgstr "% Automatisch gegenereerd" + +#: lilypond-stream.cc:97 +#, c-format +msgid "% from input file: " +msgstr "% van invoerbestand: " + #: main.cc:93 msgid "write exact durations, e.g.: a4*385/384" msgstr "schrijf exacte duren, bijv.: a4*385/384" @@ -1136,8 +1205,8 @@ msgid "Usage: %s [OPTION]... [FILE]" msgstr "Gebruik: %s [OPTIE]... [BESTAND]" #: main.cc:116 -msgid "Translate MIDI-file to mudela" -msgstr "Vertaal MIDI-bestand naar mudela" +msgid "Translate MIDI-file to lilypond" +msgstr "Vertaal MIDI-bestand naar lilypond" #: main.cc:130 #, c-format @@ -1212,73 +1281,3 @@ msgstr "MIDI spoor verwacht" #: midi-track-parser.cc:353 msgid "invalid track length" msgstr "ongeldige spoorlengte" - -#: mudela-item.cc:161 -#, c-format -msgid "#32 in quarter: %d" -msgstr "#32 in kwart: %d" - -#: mudela-score.cc:108 -#, c-format -msgid "Lily output to %s..." -msgstr "Lelie uitvoer naar %s..." - -#: mudela-score.cc:119 -#, c-format -msgid "track %d:" -msgstr "spoor %d:" - -#: mudela-score.cc:155 -msgid "Processing..." -msgstr "Verwerken..." - -#: mudela-score.cc:164 -msgid "Creating voices..." -msgstr "Scheppen van stemmen..." - -#: mudela-score.cc:168 -msgid "track " -msgstr "spoor " - -#: mudela-score.cc:177 -msgid "NOT Filtering tempo..." -msgstr "NIET Filteren van tempo..." - -#: mudela-score.cc:186 -msgid "NOT Quantifying columns..." -msgstr "NIET Kwantificeren van kolommen..." - -#: mudela-score.cc:190 -msgid "Quantifying columns..." -msgstr "Kwantificeren van kolommen..." - -#: mudela-score.cc:223 -msgid "Settling columns..." -msgstr "Zetten van kolommen..." - -#: mudela-staff.cc:209 -msgid "% MIDI copyright:" -msgstr "% MIDI copyright:" - -#: mudela-staff.cc:210 -msgid "% MIDI instrument:" -msgstr "% MIDI instrument:" - -#: mudela-stream.cc:37 -#, c-format -msgid "lily indent level: %d" -msgstr "lelie inspring diepte: %d" - -#. Maybe better not to translate these? -#: mudela-stream.cc:83 -msgid "% Creator: " -msgstr "% Schepper: " - -#: mudela-stream.cc:88 -msgid "% Automatically generated" -msgstr "% Automatisch gegenereerd" - -#: mudela-stream.cc:97 -#, c-format -msgid "% from input file: " -msgstr "% van invoerbestand: " @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2001-03-06 12:36+0100\n" +"POT-Creation-Date: 2001-03-21 16:06+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: August S.Sigov <august@infran.ru>\n" "Language-Team: Russian <ru@li.org>\n" @@ -14,115 +14,135 @@ msgstr "" "Content-Type: text/plain; charset=koi8-r\n" "Content-Transfer-Encoding: ENCODING\n" -#: ly2dvi.py:67 main.cc:95 main.cc:109 +#: ly2dvi.py:86 main.cc:95 main.cc:105 msgid "this help" msgstr "эта справка" -#: ly2dvi.py:68 +#: ly2dvi.py:87 msgid "change global setting KEY to VAL" msgstr "" -#: ly2dvi.py:69 +#: ly2dvi.py:88 msgid "generate PostScript output" msgstr "" -#: ly2dvi.py:70 +#: ly2dvi.py:89 msgid "keep all output, and name the directory ly2dvi.dir" msgstr "" -#: ly2dvi.py:71 +#: ly2dvi.py:90 msgid "don't run LilyPond" msgstr "" -#: ly2dvi.py:72 main.cc:104 main.cc:119 +#: ly2dvi.py:91 main.cc:115 +#, fuzzy +msgid "verbose" +msgstr "быть болтливым" + +#: ly2dvi.py:92 main.cc:104 main.cc:114 msgid "print version number" msgstr "выводить номер версии" -#: ly2dvi.py:73 main.cc:106 main.cc:121 +#: ly2dvi.py:93 main.cc:106 main.cc:116 msgid "show warranty and copyright" msgstr "показать гарантию и copyright" -#: ly2dvi.py:74 +#: ly2dvi.py:94 msgid "dump all final output into DIR" msgstr "" -#: ly2dvi.py:75 main.cc:113 +#: ly2dvi.py:95 main.cc:109 msgid "write Makefile dependencies for every input file" msgstr "записывать зависимости Makefile для каждого входного файла" -#: ly2dvi.py:101 +#: data-file.cc:118 input.cc:85 ly2dvi.py:123 midi-parser.cc:100 warn.cc:23 +msgid "warning: " +msgstr "предупреждаю: " + +#: input.cc:90 ly2dvi.py:128 ly2dvi.py:263 warn.cc:9 warn.cc:17 +msgid "error: " +msgstr "ошибка: " + +#: ly2dvi.py:130 msgid "Exiting ... " msgstr "" -#: ly2dvi.py:120 +#: ly2dvi.py:149 #, fuzzy, c-format -msgid "Reading `%s'" +msgid "Reading %s..." msgstr "Выбрасываю музыку: `%s'" -#: ly2dvi.py:124 mapped-file-storage.cc:87 mudela-stream.cc:111 +#: lilypond-stream.cc:111 ly2dvi.py:153 mapped-file-storage.cc:87 #: paper-stream.cc:40 scores.cc:48 simple-file-storage.cc:44 text-stream.cc:23 #, c-format msgid "can't open file: `%s'" msgstr "не могу открыть файл: `%s'" -#: ly2dvi.py:187 +#: ly2dvi.py:216 #, fuzzy, c-format msgid "Usage: %s [OPTION]... FILE" msgstr "Использование: %s [ОПЦИЯ]... [ФАЙЛ]" -#: ly2dvi.py:189 +#: ly2dvi.py:218 msgid "Generate .dvi with LaTeX for LilyPond" msgstr "" -#: ly2dvi.py:191 main.cc:119 main.cc:151 +#: ly2dvi.py:220 main.cc:119 main.cc:146 msgid "Options:" msgstr "Опции:" -#: data-file.cc:118 input.cc:85 ly2dvi.py:195 midi-parser.cc:100 warn.cc:23 -msgid "warning: " -msgstr "предупреждаю: " - -#: ly2dvi.py:196 +#: ly2dvi.py:224 msgid "all output is written in the CURRENT directory" msgstr "" -#: ly2dvi.py:198 main.cc:123 main.cc:174 +#: ly2dvi.py:226 main.cc:123 main.cc:169 #, c-format msgid "Report bugs to %s" msgstr "Сообщайте об ошибках по %s" -#: ly2dvi.py:230 +#: ly2dvi.py:260 #, fuzzy, c-format msgid "Invoking `%s'" msgstr "Выбрасываю музыку: `%s'" -#: input.cc:90 ly2dvi.py:234 warn.cc:9 warn.cc:17 -msgid "error: " -msgstr "ошибка: " - -#: ly2dvi.py:234 +#: ly2dvi.py:263 #, c-format msgid "command exited with value %d" msgstr "" -#: ly2dvi.py:236 +#: ly2dvi.py:265 msgid "(ignored)" msgstr "" -#: ly2dvi.py:277 +#: ly2dvi.py:301 +#, fuzzy, c-format +msgid "no such setting: %s" +msgstr "нет такого инструмента: `%s'" + +#: ly2dvi.py:309 #, c-format msgid "Analyzing `%s'" msgstr "" -#: ly2dvi.py:539 scores.cc:44 +#: ly2dvi.py:353 +#, c-format +msgid "no lilypond output found for %s" +msgstr "" + +#: ly2dvi.py:395 +#, fuzzy, c-format +msgid "invalid value: %s" +msgstr "неверный символ: `%c'" + +#: ly2dvi.py:602 scores.cc:44 #, fuzzy, c-format msgid "dependencies output to %s..." msgstr "\"бумажный\" вывод в %s..." -#: ly2dvi.py:540 -#, c-format -msgid "%s file left in `%s'" -msgstr "" +#: ly2dvi.py:603 +#, fuzzy, c-format +msgid "%s output to %s..." +msgstr "вывод MIDI в %s..." #: data-file.cc:54 msgid "EOF in a string" @@ -226,12 +246,12 @@ msgstr "Загружаю шрифт по умолчанию" msgid "can't find default font: `%s'" msgstr "не могу найти шрифт по умолчанию: `%s'" -#: all-font-metrics.cc:172 includable-lexer.cc:50 scores.cc:137 +#: all-font-metrics.cc:172 includable-lexer.cc:51 scores.cc:137 #, c-format msgid "(search path: `%s')" msgstr "(путь поиска: `%s')" -#: all-font-metrics.cc:173 parser.yy:1663 +#: all-font-metrics.cc:173 parser.yy:1681 msgid "Giving up" msgstr "Сдаюсь" @@ -306,7 +326,7 @@ msgstr "неверное вычитание: не часть аккорда: %s" msgid "invalid inversion pitch: not part of chord: %s" msgstr "" -#: chord-tremolo-engraver.cc:141 +#: chord-tremolo-engraver.cc:141 percent-repeat-engraver.cc:162 msgid "unterminated chord tremolo" msgstr "незаконченное тремоло аккорда" @@ -315,7 +335,7 @@ msgstr "незаконченное тремоло аккорда" msgid "no one to print a tremolos" msgstr "некому рисовать скобу повтора" -#: collision.cc:116 +#: collision.cc:118 msgid "Too many clashing notecolumns. Ignoring them." msgstr "Слишком много пересекающихся столбцов нот. Игнорирую." @@ -343,7 +363,7 @@ msgstr "крещендо уже есть" msgid "already have a decrescendo" msgstr "декрещендо уже есть" -#: dynamic-engraver.cc:307 +#: dynamic-engraver.cc:318 msgid "unterminated (de)crescendo" msgstr "незаконченное (де)крещендо" @@ -359,7 +379,7 @@ msgstr "Некуда присоединить расширитель слева. Игнорирую запрос расширителя." msgid "no one to print a repeat brace" msgstr "некому рисовать скобу повтора" -#: font-interface.cc:220 +#: font-interface.cc:237 msgid "couldn't find any font satisfying " msgstr "" @@ -392,7 +412,7 @@ msgstr "перенос без окончания" msgid "Nothing to connect hyphen to on the left. Ignoring hyphen request." msgstr "Не к чему присоединить перенос слева. Игнорирую запрос переноса." -#: includable-lexer.cc:48 lily-guile.cc:139 midi-score-parser.cc:24 +#: includable-lexer.cc:49 lily-guile.cc:139 midi-score-parser.cc:24 #: scores.cc:136 scores.cc:142 #, c-format msgid "can't find file: `%s'" @@ -429,88 +449,83 @@ msgstr "" msgid "Huh? Melismatic note found to have associated lyrics." msgstr "" -#: main.cc:108 +#: main.cc:104 msgid "EXT" msgstr "РАСШ" -#: main.cc:108 +#: main.cc:104 #, fuzzy msgid "use output format EXT (scm, ps, tex or as)" msgstr "использовать выходной формат РАСШ" -#: main.cc:110 +#: main.cc:106 #, fuzzy msgid "FIELD" msgstr "ФАЙЛ" -#: main.cc:110 +#: main.cc:106 msgid "write header field to BASENAME.FIELD" msgstr "" -#: main.cc:111 main.cc:114 +#: main.cc:107 main.cc:110 msgid "DIR" msgstr "КАТ" -#: main.cc:111 +#: main.cc:107 msgid "add DIR to search path" msgstr "добавить КАТ к пути поиска" -#: main.cc:98 main.cc:112 +#: main.cc:98 main.cc:108 msgid "FILE" msgstr "ФАЙЛ" -#: main.cc:112 +#: main.cc:108 msgid "use FILE as init file" msgstr "использовать ФАЙЛ как файл инициализации" -#: main.cc:114 +#: main.cc:110 msgid "prepend DIR to dependencies" msgstr "" -#: main.cc:115 +#: main.cc:111 msgid "produce MIDI output only" msgstr "производить вывод только MIDI" -#: main.cc:116 +#: main.cc:112 #, fuzzy msgid "NAME" msgstr "ОСНОВА" -#: main.cc:116 +#: main.cc:112 #, fuzzy msgid "write output to NAME" msgstr "записывать вывод в ОСНОВА[-x].расширение" -#: main.cc:117 +#: main.cc:113 msgid "inhibit file output naming and exporting" msgstr "скрыть именование и экспорт вывода в файл" -#: main.cc:103 main.cc:118 -msgid "don't timestamp the output" -msgstr "не отмечать дату и время вывода" - -#: main.cc:120 -#, fuzzy -msgid "verbose" -msgstr "быть болтливым" +#: main.cc:117 +msgid "EXPR" +msgstr "" -#: main.cc:122 -msgid "write midi ouput in formatted ascii" +#: main.cc:117 +msgid "evalute EXPR as Scheme after .scm init is read" msgstr "" #. #. No version number or newline here. It confuses help2man #. -#: main.cc:139 +#: main.cc:134 #, c-format msgid "Usage: %s [OPTION]... [FILE]..." msgstr "Использование: %s [ОПЦИЯ]... [ФАЙЛ]..." -#: main.cc:141 +#: main.cc:136 msgid "Typeset music and or play MIDI from FILE" msgstr "Набирать музыку и/или проигрывать MIDI из ФАЙЛа" -#: main.cc:145 +#: main.cc:140 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" @@ -520,11 +535,11 @@ msgstr "" "на бумаге, используя высокоуровневый файл описания на вводе. Lilypond\n" "является частью Проекта GNU.\n" -#: main.cc:155 +#: main.cc:150 msgid "This binary was compiled with the following options:" msgstr "Этот исполняемый файл был собран со следующими опциями:" -#: main.cc:55 main.cc:182 +#: main.cc:55 main.cc:177 #, c-format msgid "" "This is free software. It is covered by the GNU General Public License,\n" @@ -536,17 +551,17 @@ msgstr "" "при соблюдении некоторых условий. Вызывайте как `%s --warranty' для\n" "получения дополнительной информации.\n" -#: main.cc:62 main.cc:189 main.cc:201 +#: main.cc:62 main.cc:184 main.cc:196 #, c-format msgid "Copyright (c) %s by" msgstr "Все права защищены (c) %s by" -#: main.cc:199 +#: main.cc:194 #, fuzzy msgid "GNU LilyPond -- The music typesetter" msgstr "GNU LilyPond -- Наборщик музыки Проекта GNU" -#: main.cc:71 main.cc:207 +#: main.cc:71 main.cc:202 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" @@ -581,29 +596,37 @@ msgstr "глупый тон" msgid "Transposition by %s makes accidental larger than two" msgstr "" -#: music.cc:222 +#: music.cc:224 msgid "ly_get_mus_property (): Not a Music" msgstr "" -#: music.cc:236 +#: music.cc:238 msgid "ly_set_mus_property (): Not a symbol" msgstr "" -#: music.cc:248 +#: music.cc:250 msgid "ly_set_mus_property (): not of type Music" msgstr "" +#: music.cc:264 +msgid "ly_make_music (): Not a string" +msgstr "" + +#: music.cc:284 +msgid "ly_music_name (): Not a music expression" +msgstr "" + #: music-output-def.cc:115 #, c-format msgid "can't find `%s' context" msgstr "не могу найти контекст `%s'" -#: my-lily-lexer.cc:137 +#: my-lily-lexer.cc:138 #, c-format msgid "Identifier name is a keyword: `%s'" msgstr "Имя команды является ключевым словом: `%s'" -#: my-lily-lexer.cc:157 +#: my-lily-lexer.cc:158 #, c-format msgid "error at EOF: %s" msgstr "ошмбка в конце файла: %s" @@ -612,7 +635,7 @@ msgstr "ошмбка в конце файла: %s" msgid "Parsing..." msgstr "Разбираю..." -#: my-lily-parser.cc:55 +#: my-lily-parser.cc:57 msgid "Braces don't match" msgstr "Фигурные скобки не совпадают" @@ -626,11 +649,11 @@ msgstr "Выбрасываю запрос: `%s'" msgid "paper output to %s..." msgstr "\"бумажный\" вывод в %s..." -#: mudela-stream.cc:93 paper-outputter.cc:94 performance.cc:102 +#: lilypond-stream.cc:93 paper-outputter.cc:85 performance.cc:95 msgid ", at " msgstr ", в" -#: paper-outputter.cc:245 +#: paper-outputter.cc:232 #, fuzzy, c-format msgid "writing header field %s to %s..." msgstr "Записываю файл зависимостей: `%s'..." @@ -639,7 +662,7 @@ msgstr "Записываю файл зависимостей: `%s'..." msgid "Preprocessing elements..." msgstr "Предварительно обрабатываю элементы..." -#: paper-score.cc:113 +#: paper-score.cc:114 msgid "Outputting Score, defined at: " msgstr "" @@ -668,6 +691,16 @@ msgstr "Я единственный" msgid "none of these in my family: `%s'" msgstr "они мне не родственники" +#: percent-repeat-engraver.cc:108 +#, fuzzy +msgid "Don't know yet how to handle this percent repeat." +msgstr "Не знаю, что делать с пустыми ключами" + +#: percent-repeat-iterator.cc:53 +#, fuzzy +msgid "no one to print a percent" +msgstr "некому рисовать скобу повтора" + #: performance.cc:51 msgid "Track ... " msgstr "Дорожка ..." @@ -676,12 +709,12 @@ msgstr "Дорожка ..." msgid "Creator: " msgstr "Создатель: " -#: performance.cc:116 +#: performance.cc:109 #, c-format msgid "from musical definition: %s" msgstr "из музыкальной нотации %s" -#: performance.cc:171 +#: performance.cc:164 #, c-format msgid "MIDI output to %s..." msgstr "вывод MIDI в %s..." @@ -744,7 +777,7 @@ msgstr "Найдены ошибки/*, не обрабатываю ноты*/" msgid "elapsed time: %.2f seconds" msgstr "затраченное время: %.2f секунд" -#: score-engraver.cc:177 +#: score-engraver.cc:183 #, c-format msgid "unbound spanner `%s'" msgstr "" @@ -781,7 +814,9 @@ msgstr "Лига над паузой?" msgid "unterminated slur" msgstr "незавершенная лига" -#: slur-engraver.cc:142 +#. How to shut up this warning, when Voice_devnull_engraver has +#. eaten start request? +#: slur-engraver.cc:144 #, fuzzy msgid "can't find start of slur" msgstr "что-то не найду начало группировки штилей" @@ -819,21 +854,23 @@ msgstr "незавершенный расширитель" msgid "can't find ascii character: %d" msgstr "не могу найти символ ASCII: `%d'" -#: tfm-reader.cc:105 +#: tfm-reader.cc:106 #, c-format -msgid "TFM header of `%s' has only %u word(s)" +msgid "TFM header of `%s' has only %u word (s)" msgstr "" -#: tfm-reader.cc:139 +#: tfm-reader.cc:140 #, c-format msgid "%s: TFM file has %u parameters, which is more than the %u I can handle" msgstr "" -#: tie-engraver.cc:211 tie-performer.cc:173 +#. How to shut up this warning, when no notes appeared because +#. they were suicided by Thread_devnull_engraver? +#: tie-engraver.cc:215 tie-performer.cc:173 msgid "No ties were created!" msgstr "" -#: tie-engraver.cc:230 +#: tie-engraver.cc:234 msgid "lonely tie" msgstr "" @@ -851,21 +888,21 @@ msgstr "" msgid "unknown translator: `%s'" msgstr "" -#: translator-def.cc:96 +#: translator-def.cc:99 msgid "Program has no such type" msgstr "" -#: translator-def.cc:102 +#: translator-def.cc:105 #, c-format msgid "Already contains: `%s'" msgstr "Уже содержит: `%s'" -#: translator-def.cc:103 +#: translator-def.cc:106 #, c-format msgid "Not adding translator: `%s'" msgstr "" -#: translator-def.cc:215 +#: translator-def.cc:224 #, c-format msgid "can't find: `%s'" msgstr "не могу найти: `%s'" @@ -880,19 +917,19 @@ msgstr "" msgid "can't find or create: `%s'" msgstr "не могу найти или создать: `%s'" -#: translator-group.cc:403 +#: translator-group.cc:414 #, c-format msgid "" "Can't find property type-check for `%s'. Perhaps you made a typing error?" msgstr "" -#: translator-group.cc:417 +#: translator-group.cc:428 #, c-format msgid "Type check for `%s' failed; value `%s' must be of type `%s'" msgstr "" #. programming_error? -#: translator-group.cc:436 +#: translator-group.cc:447 msgid "ly-get-trans-property: expecting a Translator_group argument" msgstr "" @@ -913,114 +950,184 @@ msgstr "" msgid "Oldest supported input version: %s" msgstr "" -#: parser.yy:471 +#: parser.yy:473 msgid "Wrong type for property value" msgstr "" -#: parser.yy:666 +#: parser.yy:672 msgid "More alternatives than repeats. Junking excess alternatives." msgstr "" -#: parser.yy:730 +#: parser.yy:736 msgid "Second argument must be a symbol" msgstr "Второй аргумент должен быть символом" -#: parser.yy:735 +#: parser.yy:741 msgid "First argument must be a procedure taking 1 argument" msgstr "" -#: parser.yy:1211 +#: parser.yy:1236 msgid "Expecting string as script definition" msgstr "" -#: parser.yy:1221 +#: parser.yy:1246 msgid "Can't specify direction for this request" msgstr "Не могу указать направление для этого запроса" -#: parser.yy:1353 +#: parser.yy:1371 msgid "Expecting musical-pitch value" msgstr "" -#: parser.yy:1364 +#: parser.yy:1382 #, fuzzy msgid "Must have duration object" msgstr "установить наименьшую продолжительность" -#: parser.yy:1373 parser.yy:1381 parser.yy:1661 +#: parser.yy:1391 parser.yy:1399 parser.yy:1679 msgid "Have to be in Lyric mode for lyrics" msgstr "Должен быть в Лирическом режиме для лирики" -#: parser.yy:1546 parser.yy:1575 +#: parser.yy:1564 parser.yy:1593 #, c-format msgid "not a duration: %d" msgstr "не продолжительность: %d" -#: parser.yy:1584 +#: parser.yy:1602 msgid "Have to be in Note mode for notes" msgstr "Должен быть в Нотном режиме для нот" -#: parser.yy:1680 +#: parser.yy:1698 msgid "Have to be in Chord mode for chords" msgstr "Должен быть в Аккордном режиме для аккордов" -#: parser.yy:1842 parser.yy:1860 +#: parser.yy:1860 parser.yy:1878 msgid "need integer number arg" msgstr "" -#: parser.yy:1846 +#: parser.yy:1864 msgid "Must be positive integer" msgstr "" -#: lexer.ll:165 +#: lexer.ll:166 msgid "EOF found inside a comment" msgstr "Конец файла внутри комментария" -#: lexer.ll:179 +#: lexer.ll:180 msgid "\\maininput disallowed outside init files" msgstr "" -#: lexer.ll:203 +#: lexer.ll:204 #, fuzzy, c-format msgid "wrong or undefined identifier: `%s'" msgstr "неизвестная метка/команда: `%s'" #. backup rule -#: lexer.ll:208 +#: lexer.ll:209 msgid "Missing end quote" msgstr "Отсутсвует заключительная кавычка" #. backup rule -#: lexer.ll:230 lexer.ll:234 +#: lexer.ll:231 lexer.ll:235 msgid "white expected" msgstr "в то время как ожидалось" -#: lexer.ll:243 +#: lexer.ll:244 msgid "Can't evaluate Scheme in safe mode" msgstr "Не могу выполнять код схемы в безопасном режиме" -#: lexer.ll:335 +#: lexer.ll:336 msgid "Brace found at end of lyric. Did you forget a space?" msgstr "" -#: lexer.ll:439 +#: lexer.ll:440 #, c-format msgid "invalid character: `%c'" msgstr "неверный символ: `%c'" -#: lexer.ll:520 +#: lexer.ll:521 #, c-format msgid "unknown escaped string: `\\%s'" msgstr "неизвестная escape-последовательность: `\\%s'" -#: lexer.ll:602 +#: lexer.ll:603 #, fuzzy, c-format msgid "incorrect lilypond version: %s (%s, %s)" msgstr "неверная версия mudela: %s (%s, %s)" -#: lexer.ll:603 +#: lexer.ll:604 msgid "Consider converting the input with the convert-ly script" msgstr "" +#: lilypond-item.cc:161 +#, c-format +msgid "#32 in quarter: %d" +msgstr "#32 в четвертной: %d" + +#: lilypond-score.cc:108 +#, c-format +msgid "Lily output to %s..." +msgstr "Lily выход в %s..." + +#: lilypond-score.cc:119 +#, c-format +msgid "track %d:" +msgstr "дорожка %d:" + +#: lilypond-score.cc:155 +msgid "Processing..." +msgstr "Обрабатываю..." + +#: lilypond-score.cc:164 +msgid "Creating voices..." +msgstr "Создаю голоса..." + +#: lilypond-score.cc:168 +msgid "track " +msgstr "дорожка" + +#: lilypond-score.cc:177 +msgid "NOT Filtering tempo..." +msgstr "" + +#: lilypond-score.cc:186 +msgid "NOT Quantifying columns..." +msgstr "" + +#: lilypond-score.cc:190 +msgid "Quantifying columns..." +msgstr "" + +#: lilypond-score.cc:223 +msgid "Settling columns..." +msgstr "" + +#: lilypond-staff.cc:209 +msgid "% MIDI copyright:" +msgstr "% MIDI copyright:" + +#: lilypond-staff.cc:210 +msgid "% MIDI instrument:" +msgstr "% MIDI инструмент:" + +#: lilypond-stream.cc:37 +#, c-format +msgid "lily indent level: %d" +msgstr "уровень отступов lily: %d" + +#. Maybe better not to translate these? +#: lilypond-stream.cc:83 +msgid "% Creator: " +msgstr "% Создатель: " + +#: lilypond-stream.cc:88 +msgid "% Automatically generated" +msgstr "% Автоматически сгенерировано" + +#: lilypond-stream.cc:97 +#, c-format +msgid "% from input file: " +msgstr "% из входного файла: " + #: main.cc:93 msgid "write exact durations, e.g.: a4*385/384" msgstr "" @@ -1066,6 +1173,10 @@ msgstr "МАЖОР" msgid "set smallest duration" msgstr "установить наименьшую продолжительность" +#: main.cc:103 +msgid "don't timestamp the output" +msgstr "не отмечать дату и время вывода" + #: main.cc:105 msgid "be verbose" msgstr "быть болтливым" @@ -1080,7 +1191,8 @@ msgid "Usage: %s [OPTION]... [FILE]" msgstr "Использование: %s [ОПЦИЯ]... [ФАЙЛ]" #: main.cc:116 -msgid "Translate MIDI-file to mudela" +#, fuzzy +msgid "Translate MIDI-file to lilypond" msgstr "Транслировать MIDI-файл в mudela" #: main.cc:130 @@ -1157,76 +1269,6 @@ msgstr "ожидалась MIDI дорожка" msgid "invalid track length" msgstr "неверная длина дорожки" -#: mudela-item.cc:161 -#, c-format -msgid "#32 in quarter: %d" -msgstr "#32 в четвертной: %d" - -#: mudela-score.cc:108 -#, c-format -msgid "Lily output to %s..." -msgstr "Lily выход в %s..." - -#: mudela-score.cc:119 -#, c-format -msgid "track %d:" -msgstr "дорожка %d:" - -#: mudela-score.cc:155 -msgid "Processing..." -msgstr "Обрабатываю..." - -#: mudela-score.cc:164 -msgid "Creating voices..." -msgstr "Создаю голоса..." - -#: mudela-score.cc:168 -msgid "track " -msgstr "дорожка" - -#: mudela-score.cc:177 -msgid "NOT Filtering tempo..." -msgstr "" - -#: mudela-score.cc:186 -msgid "NOT Quantifying columns..." -msgstr "" - -#: mudela-score.cc:190 -msgid "Quantifying columns..." -msgstr "" - -#: mudela-score.cc:223 -msgid "Settling columns..." -msgstr "" - -#: mudela-staff.cc:209 -msgid "% MIDI copyright:" -msgstr "% MIDI copyright:" - -#: mudela-staff.cc:210 -msgid "% MIDI instrument:" -msgstr "% MIDI инструмент:" - -#: mudela-stream.cc:37 -#, c-format -msgid "lily indent level: %d" -msgstr "уровень отступов lily: %d" - -#. Maybe better not to translate these? -#: mudela-stream.cc:83 -msgid "% Creator: " -msgstr "% Создатель: " - -#: mudela-stream.cc:88 -msgid "% Automatically generated" -msgstr "% Автоматически сгенерировано" - -#: mudela-stream.cc:97 -#, c-format -msgid "% from input file: " -msgstr "% из входного файла: " - #, fuzzy #~ msgid "Dependency file left in `%s'" #~ msgstr "Записываю файл зависимостей: `%s'..." @@ -1286,9 +1328,6 @@ msgstr "% из входного файла: " #~ msgid "No key name, assuming `C'" #~ msgstr "Нет названия ключа, подразумеваю `C'" -#~ msgid "Don't know how handle empty keys" -#~ msgstr "Не знаю, что делать с пустыми ключами" - #~ msgid "out of tune:" #~ msgstr "вне тональности:" diff --git a/ports/mutopia/BeethovenLv/O62/Coriolan/GNUmakefile b/ports/mutopia/BeethovenLv/O62/Coriolan/GNUmakefile new file mode 100644 index 0000000000..68762739da --- /dev/null +++ b/ports/mutopia/BeethovenLv/O62/Coriolan/GNUmakefile @@ -0,0 +1,5 @@ +zipped = true +mutopia-name = Coriolan + depth = ../../../../.. + include $(depth)/ports/ports.make + diff --git a/ports/mutopia/BeethovenLv/O62/GNUmakefile b/ports/mutopia/BeethovenLv/O62/GNUmakefile new file mode 100644 index 0000000000..0197f03abc --- /dev/null +++ b/ports/mutopia/BeethovenLv/O62/GNUmakefile @@ -0,0 +1,3 @@ + depth = ../../../.. + include $(depth)/ports/ports.make + diff --git a/scm/basic-properties.scm b/scm/basic-properties.scm index 9c809fb6d3..e76878cf5f 100644 --- a/scm/basic-properties.scm +++ b/scm/basic-properties.scm @@ -21,6 +21,7 @@ ; ; How should a bar line behave at a break? ; +;; Why prepend `default-' to every scm identifier? (define (default-break-barline glyph dir) (let ((result (assoc glyph '((":|:" . (":|" . "|:")) diff --git a/scm/c++.scm b/scm/c++.scm index 045002d357..793d287a5f 100644 --- a/scm/c++.scm +++ b/scm/c++.scm @@ -86,11 +86,11 @@ (uniqued-alist (cdr alist) (cons (car alist) acc))))) +;; used in denneboom.ly +(define (cons-map f x) + (cons (f (car x)) (f (cdr x)))) -;;(define (cons-map f x) -;; (cons (f (car x)) (f (cdr x)))) - - +;; used where? ;;(define (reduce operator list) ;; (if (null? (cdr list)) (car list) ;; (operator (car list) (reduce operator (cdr list))))) diff --git a/scm/lily.scm b/scm/lily.scm index 3019ca7bdd..f2b11acc73 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -31,6 +31,9 @@ (string-append (number->string line) " " file) ) +;; cpp hack to get useful error message +(define ifdef "First run this through cpp.") +(define ifndef "First run this through cpp.") (define default-script-alist '()) (define font-name-alist '()) diff --git a/scripts/as2text.scm b/scripts/as2text.scm index 4efa72737c..b3d127a8ce 100644 --- a/scripts/as2text.scm +++ b/scripts/as2text.scm @@ -378,10 +378,10 @@ Options: (begin (set! fonts (cons (cons "default" (generate-default-font)) fonts)) (display "\n" (current-error-port)) - (if (and (defined? 'mudelapaperlinewidth) - (> (string->number mudelapaperlinewidth) 0)) + (if (and (defined? 'lilypondpaperlinewidth) + (> (string->number lilypondpaperlinewidth) 0)) (set! canvas-width - (inexact->exact (string->number mudelapaperlinewidth)))))) + (inexact->exact (string->number lilypondpaperlinewidth)))))) (set! canvas-height height) (set! canvas (make-array " " canvas-height canvas-width))) diff --git a/scripts/convert-ly.py b/scripts/convert-ly.py index 0ba8cb886b..9e0f7e43c9 100644 --- a/scripts/convert-ly.py +++ b/scripts/convert-ly.py @@ -114,11 +114,19 @@ def show_rules (file): ############################ +if 1: + def conv(str): + if re.search ('\\\\multi', str): + sys.stderr.write ('\nNot smart enough to convert \\multi') + return str + + conversions.append (((0,1,9), conv, '\\header { key = concat + with + operator }')) + if 1: # need new a namespace def conv (str): if re.search ('\\\\octave', str): sys.stderr.write ('\nNot smart enough to convert \\octave') - raise FatalConversionError() + # raise FatalConversionError() return str @@ -130,7 +138,8 @@ if 1: # need new a namespace def conv (str): str = re.sub ('\\\\textstyle([^;]+);', '\\\\property Lyrics . textstyle = \\1', str) - str = re.sub ('\\\\key([^;]+);', '\\\\accidentals \\1;', str) + # harmful to current .lys + # str = re.sub ('\\\\key([^;]+);', '\\\\accidentals \\1;', str) return str @@ -179,10 +188,7 @@ if 1: if 1: def conv(str): - str = re.sub ('\\\\melodic', '\\\\notes',str) - if re.search ('\\\\header', str): - sys.stderr.write ('\nNot smart enough to convert \\multi constructs') - + str = re.sub ('\\\\melodic([^a-zA-Z])', '\\\\notes\\1',str) return str conversions.append (((1,0,3), conv, '\\melodic -> \\notes')) @@ -198,7 +204,7 @@ if 1: if 1: def conv(str): str = re.sub ('ChoireStaff', 'ChoirStaff',str) - str = re.sub ('\\output', 'output = ',str) + str = re.sub ('\\\\output', 'output = ',str) return str @@ -208,7 +214,7 @@ if 1: def conv(str): if re.search ('[a-zA-Z]+ = *\\translator',str): sys.stderr.write ('\nNot smart enough to change \\translator syntax') - raise FatalConversionError() + # raise FatalConversionError() return str conversions.append (((1,0,6), conv, 'foo = \\translator {\\type .. } ->\\translator {\\type ..; foo; }')) @@ -263,7 +269,10 @@ if 1: if 1: def conv(str): + str = re.sub ('\\\\type([^\n]*engraver)','\\\\TYPE\\1', str) + str = re.sub ('\\\\type([^\n]*performer)','\\\\TYPE\\1', str) str = re.sub ('\\\\type','\\\\context', str) + str = re.sub ('\\\\TYPE','\\\\type', str) str = re.sub ('textstyle','textStyle', str) return str @@ -275,7 +284,7 @@ if 1: def conv(str): if re.search ('\\\\repeat',str): sys.stderr.write ('\nNot smart enough to convert \\repeat') - raise FatalConversionError() + # raise FatalConversionError() return str conversions.append (((1,0,18), conv, @@ -418,6 +427,18 @@ if 1: conversions.append (((1,3,18), conv, 'staffLineLeading -> staffSpace')) + +if 1: + def conv(str): + if re.search ('\\\\repetitions',str): + sys.stderr.write ('\nNot smart enough to convert \\repetitions') + # raise FatalConversionError() + return str + + conversions.append (((1,3,23), conv, + '\\\\repetitions feature dropped')) + + if 1: def conv (str): str = re.sub ('textEmptyDimension *= *##t', @@ -479,6 +500,16 @@ if 1: if 1: def conv (str): + if re.search ('\\\\keysignature', str): + sys.stderr.write ('\nNot smart enough to convert to new tremolo format') + return str + + + conversions.append (((1,3,58), conv, + 'noteHeadStyle value: string -> symbol')) + +if 1: + def conv (str): str = re.sub (r"""\\key *([a-z]+) *;""", r"""\\key \1 \major;""",str); return str conversions.append (((1,3,59), conv, @@ -508,12 +539,13 @@ if 1: str = re.sub ('basicLocalKeyProperties' ,"Accidentals", str) - str = re.sub ('basicMarkProperties' ,"Accidentals", str) + str = re.sub ('basicMarkProperties' ,"Accidentals", str) str = re.sub ('basic([A-Za-z_]+)Properties', '\\1', str) + str = re.sub ('Repeat_engraver' ,'Volta_engraver', str) return str - conversions.append (((1,3,92), conv, 'basicXXXProperties -> XXX')) + conversions.append (((1,3,92), conv, 'basicXXXProperties -> XXX, Repeat_engraver -> Volta_engraver')) if 1: def conv (str): @@ -545,11 +577,20 @@ if 1: str = re.sub ('\\\\property *[^ ]*verticalDirection[^=]*= *#?"?(1|(\\\\up))"?', '\\\\stemUp\\\\slurUp\\\\tieUp', str) str = re.sub ('\\\\property *[^ ]*verticalDirection[^=]*= *#?"?((-1)|(\\\\down))"?', '\\\\stemDown\\\\slurDown\\\\tieDown', str) str = re.sub ('\\\\property *[^ ]*verticalDirection[^=]*= *#?"?(0|(\\\\center))"?', '\\\\stemBoth\\\\slurBoth\\\\tieBoth', str) + + str = re.sub ('verticalDirection[^=]*= *#?"?(1|(\\\\up))"?', 'Stem \\\\override #\'direction = #0\nSlur \\\\override #\'direction = #0\n Tie \\\\override #\'direction = #1', str) + str = re.sub ('verticalDirection[^=]*= *#?"?((-1)|(\\\\down))"?', 'Stem \\\\override #\'direction = #0\nSlur \\\\override #\'direction = #0\n Tie \\\\override #\'direction = #-1', str) + str = re.sub ('verticalDirection[^=]*= *#?"?(0|(\\\\center))"?', 'Stem \\\\override #\'direction = #0\nSlur \\\\override #\'direction = #0\n Tie \\\\override #\'direction = #0', str) str = re.sub ('\\\\property *[^ .]*[.]?([a-z]+)VerticalDirection[^=]*= *#?"?(1|(\\\\up))"?', '\\\\\\1Up', str) str = re.sub ('\\\\property *[^ .]*[.]?([a-z]+)VerticalDirection[^=]*= *#?"?((-1)|(\\\\down))"?', '\\\\\\1Down', str) str = re.sub ('\\\\property *[^ .]*[.]?([a-z]+)VerticalDirection[^=]*= *#?"?(0|(\\\\center))"?', '\\\\\\1Both', str) + # (lacks capitalisation slur -> Slur) + str = re.sub ('([a-z]+)VerticalDirection[^=]*= *#?"?(1|(\\\\up))"?', '\\1 \\\\override #\'direction = #1', str) + str = re.sub ('([a-z]+)VerticalDirection[^=]*= *#?"?((-1)|(\\\\down))"?', '\\1 \\override #\'direction = #-1', str) + str = re.sub ('([a-z]+)VerticalDirection[^=]*= *#?"?(0|(\\\\center))"?', '\\1 \\\\override #\'direction = #0', str) + ## dynamic.. str = re.sub ('\\\\property *[^ .]*[.]?dynamicDirection[^=]*= *#?"?(1|(\\\\up))"?', '\\\\dynamicUp', str) str = re.sub ('\\\\property *[^ .]*[.]?dyn[^=]*= *#?"?((-1)|(\\\\down))"?', '\\\\dynamicDown', str) @@ -597,7 +638,7 @@ if 1: str = re.sub ('#\'style *= #*"([^"])"', '#\'style = #\'\\1', str) - str = re.sub ('\\\\property *"?([^.]+)"? *[.] *"?horizontalNoteShift"? *= *"?#?([0-9]+)"?', '\\\\property \\1.NoteColumn \\\\override #\'horizontal-shift = #\\2', str) + str = re.sub ('\\\\property *"?([^.]+)"? *[.] *"?horizontalNoteShift"? *= *"?#?([-0-9]+)"?', '\\\\property \\1.NoteColumn \\\\override #\'horizontal-shift = #\\2', str) # ugh str = re.sub ('\\\\property *"?([^.]+)"? *[.] *"?flagStyle"? *= *""', '\\\\property \\1.Stem \\\\override #\'flag-style = ##f', str) @@ -767,8 +808,8 @@ def do_conversion (infile, from_version, outfile, to_version): # esp. as current conversion rules are soo incomplete if re.search (lilypond_version_re_str, str): str = re.sub (lilypond_version_re_str,'\\'+new_ver , str) - else: - str = new_ver + '\n' + str + #else: + # str = new_ver + '\n' + str outfile.write(str) diff --git a/scripts/ly2dvi.py b/scripts/ly2dvi.py index e731503e24..9a4d5a05c0 100644 --- a/scripts/ly2dvi.py +++ b/scripts/ly2dvi.py @@ -469,7 +469,7 @@ def do_files (fs, extra): f.close () # todo: nonstopmode - system ('latex %s' % latex_file) + system ('latex \\\\nonstopmode \\\\input %s' % latex_file) return latex_file + '.dvi' def generate_postscript (dvi_name, extra): diff --git a/tex/mudela-book.tex b/tex/mudela-book.tex index 41431b1329..e69de29bb2 100644 --- a/tex/mudela-book.tex +++ b/tex/mudela-book.tex @@ -1,35 +0,0 @@ - -\def\file#1{\verb+#1+} - -% ugh: trick to get examples not generate par -% these are for 16pt -\def\lilypondpaperlinewidth{-28.452756}% -\def\lilypondpaperindent{28.452756}% -\def\lilypondpaperrulethickness{0.400000}% -\def\lilypondpaperbarsize{16.000000}% -\def\lilypondpaperinterline{4.000000}% -\def\lilypondpapernotewidth{5.930000}% -\def\lilypondpaperwholewidth{8.640000}% -\def\lilypondpaperunitspace{22.000000}% -\def\lilypondpaperbasicspace{4.000000}% -\def\lilypondpapergeometric{0.000000}% -\def\lilypondpaperarithmetic_basicspace{2.000000}% -\def\lilypondpaperarithmetic_multiplier{4.800000}% -\def\lilypondpaperinterbeam{3.140000}% -\def\lilypondpapergourlay_energybound{100000.000000}% -\def\lilypondpapergourlay_maxmeasures{14.000000}% -% huh? -% \def\exampleheight{2\lilypondpaperbarsize pt} -\def\exampleheight{2cm} - -% ful of pars, needs the above -\input lilyponddefs - -% generates par -\def\interscoreline{} -% generates par -%\musixsixteendefs -%\def\musixsixteendefs{} -\def\nolilyfooter{} -%urg: missing \begin{document}? -%0ef\noindent{} @@ -1,39 +0,0 @@ -% pedal.tex - -\hsize = 296mm -\vsize = 210mm - -% fix chord.cc::banter_str before removing these -\def\fetdef#1#2{% - \def#1{\hbox{\char#2}}} - -\fetdef\pedalasterisk{101} -\fetdef\pedaldash{102} -\fetdef\pedaldot{103} -\fetdef\pedalP{104} -\fetdef\pedald{105} -\fetdef\pedale{106} - -%\font\fetatwentysixfontt=feta26 scaled \magstep 4 -%\font\fetatwentysixfontt=feta26 scaled 18842 -\font\fetatwentysixfontt=feta26 scaled 2407 -\magnification \magstep 4 - -\def\fetafont{\fetatwentysixfontt} - -\baselineskip 12mm - -\vbox{ -\kern 20mm - -\hbox{ -\fetatwentysixfontt -\hbox { \pedalP\kern-0.06ex\pedale\kern -0.55ex\pedald\pedaldot} -\kern 50mm -\pedalasterisk -} -} - -\end - -%\endinput diff --git a/tex/test-pedal.tex b/tex/test-pedal.tex new file mode 100644 index 0000000000..d66fca3996 --- /dev/null +++ b/tex/test-pedal.tex @@ -0,0 +1,39 @@ +% pedal.tex + +\hsize = 296mm +\vsize = 210mm + +% fix chord.cc::banter_str before removing these +\def\fetdef#1#2{% + \def#1{\hbox{\char#2}}} + +\fetdef\pedalasterisk{101} +\fetdef\pedaldash{102} +\fetdef\pedaldot{103} +\fetdef\pedalP{104} +\fetdef\pedald{105} +\fetdef\pedale{106} + +%\font\fetatwentysixfontt=feta26 scaled \magstep 4 +%\font\fetatwentysixfontt=feta26 scaled 18842 +\font\fetatwentysixfontt=feta26 scaled 2407 +\magnification \magstep 4 + +\def\fetafont{\fetatwentysixfontt} + +\baselineskip 12mm + +\vbox{ +\kern 20mm + +\hbox{ +\fetatwentysixfontt +\hbox { \pedalP\kern-0.06ex\pedale\kern -0.55ex\pedald\pedaldot} +\kern 50mm +\pedalasterisk +} +} + +\end + +%\endinput |