+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
============
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
@example
- lilypond [OPTION]... [MUDELA-FILE]...
+ lilypond [OPTION]... [FILE]...
@end example
-@unnumberedsec Command Options
+@unnumberedsec Options
@table @code
--- /dev/null
+\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}
-% 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.
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
[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
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
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
\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
\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
* Articulation::
* Text scripts::
* Grace notes::
+* Glissando ::
+* Dynamics::
@end menu
@c . {Articulation}
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
@c . {Glissando}
@node Glissando
-@subsubsection Glissando
+@subsection Glissando
@cindex Glissando
@cindex @code{\glissando}
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
@c . {Dynamics}
@node Dynamics
-@subsubsection Dynamics
+@subsection Dynamics
@cindex Dynamics
@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
@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' {
}
}
@end lilypond
-@end quotation
@refbugs
@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
\context Voice = other { \clef bass; <c,,\arpeggio e g>}
>
@end lilypond
-@end quotation
This command creates @code{Arpeggio} grobs.
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
\context Staff=two {\clef bass; \skip 1*2;}
>
@end lilypond
-@end quotation
@c . {Lyrics}
Throughout these examples, chords have been shifted around the staff
using @code{\transpose}.
-
-@quotation
-
@lilypond[fragment,verbatim]
\transpose c'' {
\chords {
c:9 c:9-.5+.7+ c:3-.5- c:4.6.8
}
}
-
@end lilypond
-@end quotation
@cindex @code{aug}
@cindex @code{dim}
`@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
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>
>
}
@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
\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
[base vs. bass ?]
-@quotation
@lilypond[verbatim,center,singleline]
scheme = \notes {
<c'1 e' g'>
>
}
@end lilypond
-@end quotation
By default LilyPond uses chord name system proposed by Harald Banter
a tone. The first version will print sharps and the second version
will print flats.
-@quotation
@lilypond[fragment,verbatim]
\context Staff {
\clef "F";
\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
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' }
}
}
@end lilypond
-@end quotation
Custodes were frequently used in music notation until the 16th century.
There were different appearences for different notation styles.
@cindex font magnification
@cindex @code{font-interface}
-@refbugs
-
@node Text markup
@subsection Text markup
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'' {
}
@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
such an identifier outside of @code{\score}, you must do
@quotation
-
@example
\paper @{
foo = \translator @{ @dots{} @}
[TODO]
+* setting of env vars (TFMINPUTS,MFINPUTS,TEXINPUTS)
+* dvi viewer doesn't display postscript
+
@node The first tune
@section The first tune
+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.
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
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.
#
# 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)
ext = ext2 + ext
print '%s, ' % ex
- header = read_mudela_header(ex)
+ header = read_lilypond_header(ex)
def read_dict(s, default, h =header):
try:
}
/*
- 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:
--- /dev/null
+\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; }
+}
--- /dev/null
+% minimal what?
+% dumps core
+
+
+\score {
+ \sequential {\clef bass ; }
+ \paper {
+% \translator { \context Score_engraver ; \name "Score"; }
+ \translator { \type "Score_engraver"; \name "Score"; }
+ linewidth = 30 * \staffspace;
+ }
+}
--- /dev/null
+% 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 { }
+}
}
verseOneStaff = \context Lyrics = one
- \verse_one
+ \$verse_one
verseTwo = \notes{
}
verseTwoStaff = \context Lyrics = two
- \verse_two
+ \$verse_two
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; }
}
\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;
-xheader = {
+header = {
texidoc = "arpeggio stays clear of accidentals and flipped note heads.
Since Arpeggio engraver is Voice, it does nothing for voice collisions."
};
slurVerticalDirection = #1
verticalDirection = -1
- autoBeamSettings \override (end * * * *) = #(make-moment 1 2)
+ autoBeamSettings \override #'(end * * * *) = #(make-moment 1 2)
}
}
\midi {
c8 c c4
r8 c c c
% no autobeaming
- \property Voice.beamAuto = ##f
+ \property Voice.noAutoBeaming = ##t
c8 c c c
}
\paper{
-\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";
- }
-}
-
-
-\score {
- \context Voice \notes\relative c {
-
- }
- \paper { }
- \midi { }
-}
-\header {
- texidoc = ""
-
- }
\ No newline at end of file
-
-
-voltaCommands = \notes {
- s1 \property Staff.repeatCommands = #((volta . "1"))
- c4 c4 c4 c4
- s1
-
-
-\score {
-
-\notes {\notes \reletive c' {
- \times 2/3 { [fis8 fis8 fis8] }
- \times 2/3 { [b b b] }
- bes4
-}
% declare the standard dynamic identifiers.
%
+pppp = \dynamicscript #"pppp"
ppp = \dynamicscript #"ppp"
pp = \dynamicscript #"pp"
p = \dynamicscript #"p"
f = \dynamicscript #"e" % see feta-din layout
ff = \dynamicscript #"ff"
fff = \dynamicscript #"fff"
+ffff = \dynamicscript #"ffff"
fp = \dynamicscript #"fp"
sf = \dynamicscript #"sf"
\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 }
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
\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
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
wget $(MUTOPIA_MIRROR)/$(mutopia-dir)/$@
%.ly: %-lys.zip
- unzip $<
+ unzip -n $<
$(MAKE) local-convert-ly
endif
/// 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.
--- /dev/null
+//
+// 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
+
--- /dev/null
+//
+// 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
+
--- /dev/null
+//
+// 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
+
--- /dev/null
+//
+// 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
+
--- /dev/null
+//
+// 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
+
--- /dev/null
+//
+// 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
+
Byte const* byte_L_;
Byte const* end_byte_L_;
Source_file* source_l_;
- Mudela_score* score_l_;
+ Lilypond_score* score_l_;
Rational bar_mom_;
};
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
~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_;
};
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
-//
-// 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
-
-//
-// 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
-
-//
-// 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
-
-//
-// 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
-
-//
-// 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
-
-//
-// 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
-
--- /dev/null
+//
+// 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_;
+}
--- /dev/null
+//
+// 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";
+}
--- /dev/null
+//
+// 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;
+ }
+}
+
--- /dev/null
+//
+// 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);
+}
--- /dev/null
+//
+// 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);
+}
--- /dev/null
+//
+// 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 << "} ";
+}
+
+
#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>
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;
{
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:");
#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);
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 ())
#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
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;
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;
{
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);
#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_;
}
}
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;
}
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;
}
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())
// 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;
}
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]
else
byte = next_byte ();
- Mudela_item* item_p = 0;
+ Lilypond_item* item_p = 0;
// DATA_ENTRY [\x60-\x79]
if ((byte >= 0x60) && (byte <= 0x79))
{
*/
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
{
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
{
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))
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))
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]
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
{
exit (_ ("invalid MIDI event"));
if (item_p)
- item_p->mudela_column_l_ = col_l;
+ item_p->lilypond_column_l_ = col_l;
parse_delta_time ();
-//
-// 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_;
-}
-//
-// 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";
-}
-//
-// 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;
- }
-}
-
-//
-// 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);
-}
-//
-// 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);
-}
-//
-// 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 << "} ";
-}
-
-
-\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;
- }
-}
-
depth = ../..
-SUBDIRS = Petites-Preludes Solo-Cello-Suites Cembalo-Partitas Duette
+SUBDIRS = Petites-Preludes Cembalo-Partitas Duette
EXTRA_DIST_FILES=
-# 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)
-
-
-
-\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 = "";
-
- }
-}
-% 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";
-
-\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 = "";
- }
-}
-
-
-\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 = "";
- }
-}
-
-% 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";
-
-
-
-\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";
- }
-}
-
-
-
-
-\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"; }
-}
-
-% 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";
-
-
-\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"; }
-}
-
-%{
-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";
-}
-
-
-
-\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 = "";
- }
-}
-
-% 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";
-
-
-
-\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"; }
-}
-
-
-
-
-\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"; }
-}
-
-% 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";
-
-
-
-\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"; }
-}
-
-
-
-
-\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"; }
-}
-
-% 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";
-\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"; }
-}
-
-instr="cello"
-instrument="Violoncello"
-\include "solo-cello-suite-ii.ly"
-
-instr="viola"
-instrument="Viola"
-\include "solo-cello-suite-ii.ly"
-
-\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
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"
"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"
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 ""
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"
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."
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"
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 ""
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'"
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"
"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"
"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"
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"
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"
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'..."
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: "
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 ... "
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..."
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'"
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"
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"
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"
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 ""
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"
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"
#: 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
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'..."
#~ msgid "No key name, assuming `C'"
#~ 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"
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
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 ""
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 ""
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."
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é"
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 ""
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'"
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"
"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"
"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"
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 ""
msgid "Parsing..."
msgstr "Analyse..."
-#: my-lily-parser.cc:55
+#: my-lily-parser.cc:57
msgid "Braces don't match"
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'"
msgid "Preprocessing elements..."
msgstr ""
-#: paper-score.cc:113
+#: paper-score.cc:114
msgid "Outputting Score, defined at: "
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 ... "
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 ""
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'"
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"
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"
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'"
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 ""
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 ""
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 ""
#: 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
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'"
#~ msgid "No key name, assuming `C'"
#~ 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é"
#, 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"
"--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"
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 ""
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"
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."
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"
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 ""
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'"
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"
"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"
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"
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"
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'..."
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: "
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 ... "
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..."
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'"
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"
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 ""
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'"
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 ""
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"
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 ""
#: 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
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'..."
#~ msgid "No key name, assuming `C'"
#~ 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"
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"
"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"
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 "Äü¤á¤Þ¤·¤¿"
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 "½ªÃ¼¤Î¤Ê¤¤¥Ï¥¤¥Õ¥ó"
msgid "no one to print a tremolos"
msgstr "È¿Éüµ¹æ¤òɽ¼¨¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó"
-#: collision.cc:116
+#: collision.cc:118
msgid "Too many clashing notecolumns. Ignoring them."
msgstr "Äà¤ê¹ç¤ï¤Ê¤¤²»É䤬¿¤¹¤®¤Þ¤¹¡£¤½¤ì¤é¤ò̵»ë¤·¤Þ¤¹¡£"
msgid "already have a decrescendo"
msgstr "´û¤Ë³Ã¤¬¤¢¤ê¤Þ¤¹"
-#: dynamic-engraver.cc:307
+#: dynamic-engraver.cc:318
#, fuzzy
msgid "unterminated (de)crescendo"
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 ""
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'"
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"
"Èþ¤·¤¤ÉèÌ̤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£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"
"¤³¤ì¤ò²þÊѤ·¤¿¤ê¡¢Ê£À½¤òÇÛÉÛ¤·¤¿¤ê¤¹¤ë»ö¤Ï´¿·Þ¤µ¤ì¤Þ¤¹¡£\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"
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"
msgid "Parsing..."
msgstr "¹½Ê¸²òÀÏÃæ..."
-#: my-lily-parser.cc:55
+#: my-lily-parser.cc:57
msgid "Braces don't match"
msgstr "¥Ö¥ì¡¼¥¹¤¬°ìÃפ·¤Þ¤»¤ó"
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'..."
msgid "Preprocessing elements..."
msgstr "Í×ÁǤòÁ°½èÍýÃæ..."
-#: paper-score.cc:113
+#: paper-score.cc:114
msgid "Outputting Score, defined at: "
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 "¥È¥é¥Ã¥¯ ..."
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 ½ÐÎÏ"
msgid "elapsed time: %.2f seconds"
msgstr "·Ð²á»þ´Ö: %.2f ÉÃ"
-#: score-engraver.cc:177
+#: score-engraver.cc:183
#, c-format
msgid "unbound spanner `%s'"
msgstr "ÊĤ¸¤Æ¤¤¤Ê¤¤¥¹¥Ñ¥Ê `%s'"
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 "ËöÈø¤Ø¤Î(¥Ç)¥¯¥ì¥Ã¥·¥§¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
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 "°ì¤Ä¤À¤±¤Î¥¿¥¤"
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'"
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 ""
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"
msgid "set smallest duration"
msgstr "²»Ä¹¤òºÇ¾®¤ËÀßÄꤷ¤Þ¤¹"
+#: main.cc:103
+msgid "don't timestamp the output"
+msgstr "½ÐÎϤ˥¿¥¤¥à¥¹¥¿¥ó¥×¤ò¤Ä¤±¤Ê¤¤"
+
#: main.cc:105
msgid "be verbose"
msgstr "¾ÜºÙ¤Ê¾ðÊó¤òɽ¼¨¤·¤Þ¤¹"
msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]"
#: main.cc:116
-msgid "Translate MIDI-file to mudela"
+#, fuzzy
+msgid "Translate MIDI-file to lilypond"
msgstr "MIDI ¥Õ¥¡¥¤¥ë¤ò mudela ¤ËÊÑ´¹¤·¤Þ¤¹"
#: main.cc:130
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'..."
#~ 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) ¤ò»È¤ï¤Ê¤¤¤Ç¤¯¤À¤µ¤¤"
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"
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'"
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 ""
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 ""
msgstr ""
#: main.cc:116
-msgid "Translate MIDI-file to mudela"
+msgid "Translate MIDI-file to lilypond"
msgstr ""
#: main.cc:130
#: 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 ""
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"
"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
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'"
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 "
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"
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
#: 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: "
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"
"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"
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 "óÄÁÀÓØ"
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 "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÔÒÅÍÏÌÏ ÁËËÏÒÄÁ"
msgid "no one to print a tremolos"
msgstr "ÎÅËÏÍÕ ÒÉÓÏ×ÁÔØ ÓËÏÂÕ ÐÏ×ÔÏÒÁ"
-#: collision.cc:116
+#: collision.cc:118
msgid "Too many clashing notecolumns. Ignoring them."
msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÐÅÒÅÓÅËÁÀÝÉÈÓÑ ÓÔÏÌÂÃÏ× ÎÏÔ. éÇÎÏÒÉÒÕÀ."
msgid "already have a decrescendo"
msgstr "ÄÅËÒÅÝÅÎÄÏ ÕÖÅ ÅÓÔØ"
-#: dynamic-engraver.cc:307
+#: dynamic-engraver.cc:318
msgid "unterminated (de)crescendo"
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 ""
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'"
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"
"ÎÁ ÂÕÍÁÇÅ, ÉÓÐÏÌØÚÕÑ ×ÙÓÏËÏÕÒÏ×ÎÅ×ÙÊ ÆÁÊÌ ÏÐÉÓÁÎÉÑ ÎÁ ××ÏÄÅ. 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"
"ÐÒÉ ÓÏÂÌÀÄÅÎÉÉ ÎÅËÏÔÏÒÙÈ ÕÓÌÏ×ÉÊ. ÷ÙÚÙ×ÁÊÔÅ ËÁË `%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"
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"
msgid "Parsing..."
msgstr "òÁÚÂÉÒÁÀ..."
-#: my-lily-parser.cc:55
+#: my-lily-parser.cc:57
msgid "Braces don't match"
msgstr "æÉÇÕÒÎÙÅ ÓËÏÂËÉ ÎÅ ÓÏ×ÐÁÄÁÀÔ"
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'..."
msgid "Preprocessing elements..."
msgstr "ðÒÅÄ×ÁÒÉÔÅÌØÎÏ ÏÂÒÁÂÁÔÙ×ÁÀ ÜÌÅÍÅÎÔÙ..."
-#: paper-score.cc:113
+#: paper-score.cc:114
msgid "Outputting Score, defined at: "
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 "äÏÒÏÖËÁ ..."
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..."
msgid "elapsed time: %.2f seconds"
msgstr "ÚÁÔÒÁÞÅÎÎÏÅ ×ÒÅÍÑ: %.2f ÓÅËÕÎÄ"
-#: score-engraver.cc:177
+#: score-engraver.cc:183
#, c-format
msgid "unbound spanner `%s'"
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 "ÞÔÏ-ÔÏ ÎÅ ÎÁÊÄÕ ÎÁÞÁÌÏ ÇÒÕÐÐÉÒÏ×ËÉ ÛÔÉÌÅÊ"
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 ""
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'"
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 ""
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 ""
msgid "set smallest duration"
msgstr "ÕÓÔÁÎÏ×ÉÔØ ÎÁÉÍÅÎØÛÕÀ ÐÒÏÄÏÌÖÉÔÅÌØÎÏÓÔØ"
+#: main.cc:103
+msgid "don't timestamp the output"
+msgstr "ÎÅ ÏÔÍÅÞÁÔØ ÄÁÔÕ É ×ÒÅÍÑ ×Ù×ÏÄÁ"
+
#: main.cc:105
msgid "be verbose"
msgstr "ÂÙÔØ ÂÏÌÔÌÉ×ÙÍ"
msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ïðãéñ]... [æáêì]"
#: main.cc:116
-msgid "Translate MIDI-file to mudela"
+#, fuzzy
+msgid "Translate MIDI-file to lilypond"
msgstr "ôÒÁÎÓÌÉÒÏ×ÁÔØ MIDI-ÆÁÊÌ × mudela"
#: main.cc:130
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'..."
#~ msgid "No key name, assuming `C'"
#~ msgstr "îÅÔ ÎÁÚ×ÁÎÉÑ ËÌÀÞÁ, ÐÏÄÒÁÚÕÍÅ×ÁÀ `C'"
-#~ msgid "Don't know how handle empty keys"
-#~ msgstr "îÅ ÚÎÁÀ, ÞÔÏ ÄÅÌÁÔØ Ó ÐÕÓÔÙÍÉ ËÌÀÞÁÍÉ"
-
#~ msgid "out of tune:"
#~ msgstr "×ÎÅ ÔÏÎÁÌØÎÏÓÔÉ:"
--- /dev/null
+zipped = true
+mutopia-name = Coriolan
+ depth = ../../../../..
+ include $(depth)/ports/ports.make
+
--- /dev/null
+ depth = ../../../..
+ include $(depth)/ports/ports.make
+
;
; 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
'((":|:" . (":|" . "|:"))
(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)))))
(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 '())
(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)))
############################
+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
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
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'))
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
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; }'))
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
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,
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',
conversions.append (((1,3,49), conv,
'noteHeadStyle value: string -> symbol'))
+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);
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):
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)
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)
# 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)
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):
-
-\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{}
-% 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
--- /dev/null
+% 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