@item @uref{http://www.gnu.org/software/bison/,Bison} (version 1.25 or
newer, but not 1.50 or 1.75).
-@item gettext
-
+@item @uref{http://www.gnu.org/software/gettext/gettext.html,gettext}.
@end itemize
@subsection Running requirements
@cindex MuseData
@cindex CCARH
-MuseData (see @uref{http://www.musedata.org/}) is an electronic
-library of classical music scores, comprising at the time of writing
-about 800 composition dating from 1700 to 1825. The music is encoded
-in so-called MuseData format. musedata2ly converts a set of MuseData
+@uref{http://www.musedata.org/,MuseData} is an electronic library of
+classical music scores, comprising at the time of writing about 800
+composition dating from 1700 to 1825. The music is encoded in
+so-called MuseData format. musedata2ly converts a set of MuseData
files to one .ly file, and will include a @code{\header} field if a
@file{.ref} file is supplied. It is invoked as follows:
notes of the @internalsref{Voice} context called @var{name}, which has
to exist. Therefore, normally the @code{Voice} is specified first, and
then the lyrics are specified with @code{\lyricsto}. The command
-@code{\lyricsto} switches to @code{\lyrics} mode automatically, so
-@code{\lyrics} may be skipped.
+@code{\lyricsto} switches to @code{\lyrics} mode automatically, so the
+@code{\lyrics} keyword may be omitted.
For different or more complex orderings, the best way is to setup the
hierarchy of staves and lyrics first, e.g.
Not all MIDI players correctly handle tempo change in the MIDI
output. Players that are known to work include
-@uref{timidity,http://timidity.sourceforge.net/}
+@uref{http://timidity.sourceforge.net/,timidity}
@menu
@cindex DVI driver
} which you can print or with the standard facilities of your
operating system.@footnote{If your system does not have any tools
-installed, you can try @uref{Ghostscript,
-http://www.cs.wisc.edu/~ghost/}, a freely available package for
+installed, you can try @uref{http://www.cs.wisc.edu/~ghost/,Ghostscript}, a freely available package for
viewing and printing PDF and PostScript files.}
On Windows, start up a text-editor@footnote{Any simple or
-\version "2.2.0"
+\version "2.3.8"
\header{
-texidoc="
+ texidoc="
Different text styles are used for various purposes.
"
}
-\score { \notes
- \relative c'' \context Staff {
- \emptyText
- \repeat volta 2 { \time 4/4 c4^"cuivr\\'e"_\fermata }
- \alternative {
- {
- d-4_\markup { \italic "cantabile" } }
- { e } } \acciaccatura { c16 }
-
- f4\ff^""^\markup { \large "Largo" } \mark "B" g
- }
- \paper { raggedright = ##t
- % \context {\BarNumberingStaffContext} }
- }
+\paper {
+ raggedright = ##t
+}
+
+\relative c'' \context Staff {
+ \emptyText
+ \repeat volta 2 { \time 4/4 c4^"cuivr\\'e"_\fermata }
+ \alternative {
+ {
+ d-4_\markup { \italic "cantabile" } }
+ { e } } \acciaccatura { c16 }
+
+ f4\ff^""^\markup { \large "Largo" } \mark "B" g
}
-\version "2.3.4"
+\version "2.3.8"
\header {
texidoc = "With the @code{\\lyricsto} mechanism, individual lyric
\autoBeamOff
c2( d4) e8[ c b c] f4
}
- \lyricsto "bla" \new Lyrics \lyrics { bla ab blob blob }
- \lyricsto "bla" \new Lyrics \lyrics {
+ \lyricsto "bla" \new Lyrics { bla ab blob blob }
+ \lyricsto "bla" \new Lyrics {
bla
\set ignoreMelismata = ##t
blob
}
- \lyricsto "bla" \new Lyrics \lyrics {
+ \lyricsto "bla" \new Lyrics {
nes ted lyrics voice with more words than no tes
}
>>
-\version "2.3.4"
+\version "2.3.8"
\header {
texidoc ="Polyphonic rhythms and rests do not disturb
\time 8/8
\key des \major
<<
- \lyricsto "one" \new Lyrics \lyrics {
+ \lyricsto "one" \new Lyrics {
Do mi nus ex
}
\context Voice = one {
\voiceTwo
ees'8 r8 r8 r8 ees' r8 r8 r8
}
- \lyricsto "two" \new Lyrics \lyrics {
+ \lyricsto "two" \new Lyrics {
Do na
}
>>
-\version "2.3.4"
+\version "2.3.8"
\header
{
-\version "2.3.4"
+\version "2.3.8"
\header { texidoc= "In lyric extenders, a syllable may be extended over several notes. "}
-\version "2.3.4"
+\version "2.3.8"
\header {
texidoc = "
-\version "2.3.4"
+\version "2.3.8"
\header
{
texidoc = "Melismata are triggered by manual beams."
-\version "2.3.4"
+\version "2.3.8"
\header {
texidoc = "Stanza numbers are put left of their lyric. They are aligned in a column."
\score {
<<
\context Voice = "A" \relative c'' { r4 r4 c4 c4 }
- \lyricsto A \new Lyrics \lyrics {
+ \lyricsto A \new Lyrics {
\skip 2
\set stanza = "1."
Foo8
}
- \lyricsto A \new Lyrics \lyrics {
+ \lyricsto A \new Lyrics {
\skip 2
\set stanza = "2."
FFFooooo8
-\version "2.3.4"
+\version "2.3.8"
\header {
-\version "2.3.4"
+\version "2.3.8"
\header {
dedication = "dedication"
title = "Title"
-\version "2.3.4"
+\version "2.3.8"
\header {
title = "Song"
subtitle = "(tune)"
-\version "2.3.4"
+\version "2.3.8"
\header {
texidoc = "Lead sheet format: chords with melody."
-\version "2.3.4"
+\version "2.3.8"
\header
{
texidoc = "Popsong format: chords, melody and lyrics."
-\version "2.3.4"
+\version "2.3.8"
\header {
texidoc = "Melody and lyrics."
-\version "2.3.4"
+\version "2.3.8"
\header {
texidoc = "Only a melody."
-\version "2.3.4"
+\version "2.3.8"
\header {
texidoc ="Polyphonic piano music."
-\version "2.3.4"
+\version "2.3.8"
\header {
texidoc ="
Dynamics on a separate line, neatly centered between staffs.
\consists "Skip_event_swallow_translator"
- \consistsend "Axis_group_engraver"
+ \consists "Axis_group_engraver"
}
\context {
\PianoStaff
-\version "2.3.4"
+\version "2.3.8"
\header {
texidoc ="Lyrics between two staffs."
-\version "2.3.4"
+\version "2.3.8"
\header {
texidoc ="Classical song format: one staff with melody and lyrics,
and piano accompaniment."
-\version "2.3.4"
+\version "2.3.8"
\header {
texidoc = "Simple piano music."
-\version "2.3.4"
+\version "2.3.8"
\header {
texidoc = "
ADD_INTERFACE (Ambitus, "ambitus-interface",
"The line between note heads for a pitch range.",
- "note-heads join-heads");
+ "thickness note-heads join-heads");
if (Rhythmic_head::has_interface (inf.grob_))
{
Music * note_ev =inf.music_cause ();
-
+ if (!note_ev)
+ return;
+
SCM arts = note_ev->get_property ("articulations");
for (SCM s = arts; ly_c_pair_p (s); s = ly_cdr (s))
{
if (Rhythmic_head::get_stem (gi.grob_))
return;
+
+ Music * cause = gi.music_cause ();
+ if (!cause)
+ return ;
if (!stem_)
make_stem (gi);
- int duration_log = gi.music_cause ()->duration_log ();
+ int duration_log = cause->duration_log ();
if (Stem::duration_log (stem_) != duration_log)
{
// FIXME:
(X-extent-callback . ,Note_head::extent)
(Y-extent-callback . ,Note_head::extent)
(Y-offset-callbacks . (,Staff_symbol_referencer::callback))
- (meta . ((interfaces . (font-interface note-head-interface ambitus-interface staff-symbol-referencer-interface item-interface ))))
+ (meta . ((interfaces . (font-interface note-head-interface ambitus-interface staff-symbol-referencer-interface rhythmic-head-interface item-interface ))))
))
(Arpeggio
def conv (str):
str = re.sub (r'\\consistsend', '\\consists', str)
+ str = re.sub (r'\\lyricsto\s+("?[a-zA-Z]+"?)(\s*\\new Lyrics\s*)?\\lyrics',
+ r'\\lyricsto \1 \2', str)
return str
conversions.append (((2, 3, 8), conv,
- '''remove \\consistsend'''))
+ '''remove \\consistsend, strip \\lyrics from \\lyricsto.'''))
+def conv_mode_experiment (str):
+ str = re.sub (r'\\chords\b', r'\\chordmode', str)
+ str = re.sub (r'\\lyrics\b', r'\\lyricmode', str)
+ str = re.sub (r'\\figures\b', r'\\figuremode', str)
+ str = re.sub (r'\\drums\b', r'\\drummode', str)
+ str = re.sub (r'\\chordmode\s*\\new ChordNames', r'\\chords', str)
+ str = re.sub (r'\\new ChordNames\s*\\chordmode', r'\\chords', str)
+ str = re.sub (r'\\new FiguredBass\s*\\figuremode', r'\\figures', str)
+ str = re.sub (r'\\figuremode\s*\new FiguredBass', r'\\figures', str)
+ str = re.sub (r'\\new DrumStaff\s*\\drummode', r'\\drums', str)
+ str = re.sub (r'\\drummode\s*\\new DrumStaff', r'\\drums', str)
+
+ return str
+
+#conversions.append (((2, 3, 9), conv,
+# '''fold \new FooContext \foomode into \foo.'''))
+
################################
# END OF CONVERSIONS
################################