question(Do you support multiple staff-sizes?)
-Yes and no. At this time you can choose between 11, 13, 16, 19,
-20, 23 and 20 pt staff-size. The sizes can't be changed per staff
-(yet). Look at file(standchen.ly) for an example.
-
+Yes. At this time you can choose between 11, 13, 16, 19, 20, 23 and
+20 pt staff-size. Use the staffLineLeading property for setting the
+size of the staff, and fontSize for setting the size of the glyphs.
question(Do you support Gregorian chant notation?)
No. There is no reason why LilyPond can't be extended to do so, but
we haven't done it yet (and there are currently no plans to do it).
+question(Do you support grace notes?)
+
+No. But they can kludged. See file(input/test/grace.ly)
+
sect(How do I ....)
question(How do I get bar numbers?)
-See file(init/engraver.ly). You have to uncomment some entries. To
-do this `portably' you should redefine some engravers in your own
-source files. Check out file(init/rhythm.ly).
+See file(input/test/bar-scripts.ly).
sect(Development)
file(/var/lib/texmf). A script automating this has been included, see
file(buildscripts/clean-fonts.sh).
+question(all the pk and tfm
+fonts are created in the directory where the mudela file is, not in
+"/var/spool/texmf" where I think they should be.)
+
+Mats Bengtsson <mats.bengtsson@s3.kth.se> writes:
+
+The simple solution used by Anthony Fok in the Debian distribution of
+Lilypond is to link the mf/ directory to
+/usr/lib/texmf/fonts/source/public/lilypond Depending on what
+distribution of teTeX and Linux you have installed, there might also
+be other places like /usr/local/lib/texmf/fonts/source/public/lilypond
+or /var/spool/texmf//fonts/source/public/lilypond
+
+Wherever you put it, don't forget to run mktexlsr (or texhash for
+older installations) afterwards, so that TeX will find the files.
+Also, don't forget to remove all old .tfm and .*pk files when the font
+is updated (as it will be in version 1.1.40, for example).
+
question(How does PS output work?)
itemize(
dit(Interpreting music)
-The music is walked column by column. The iterators which do the
-walking report the Request to Translators which use this information
-to create elements, either MIDI or "visual" elements. The translators
+The music is walked through in time-order. The iterators which do the
+walking report Music to Translators which use this information to
+create elements, either MIDI or "visual" elements. The translators
form a hierarchy; the ones for paper output are Engravers, for MIDI
Performers.
-The translators swallow requests, create elements, broadcast them to
-other translators on higher or same level in the hierarchy:
+The translators swallow Music (mostly atomic gobs called Requests),
+create elements, broadcast them to other translators on higher or same
+level in the hierarchy:
The stem of a voice A is broadcast to the staff which contains A, but
-not to the noteheads of A, and not to the stems, beams and noteheads
-of a different voice (say B) or a different staff. The stem and
-noteheads of A are coupled, because the the Notehead_engraver
-broadcasts its heads, and the Stem catches these.
+not to the stems, beams and noteheads of a different voice (say B) or
+a different staff. The stem and noteheads of A are coupled, because
+the the Note_heads_engraver broadcasts its heads, and the Stem_engraver catches
+these.
The engraver which agrees to handle a request decides whether to to
honor the request, ignore it, or merge it with other requests. Merging
of requests is preferably done with other requests done by members of
the same voicegroups (beams, brackets, stems). In this way you can put
the voices of 2 instruments in a conductor's score so they make chords
-(the Stem_reqs of both instruments will be merged).
+(the Beam requests of both instruments will be merged).
dit(Prebreaking)
\mudelafile{rest.fly}
Note head shapes are settable. The stem endings should be adjusted
-per note head
+per note head. If you want different note head styles on one stem,
+you must create a special context called Thread.
-\mudelafile{noteheadstyle.fly}
+\mudelafile{noteheadstyle.ly}
\section{Beams, slurs and other spanners}
@Misc{graph_music_press,
title = {Graphire Music Press},
+
publisher={Graphire Corporation} ,
- html={http://www.sover.net/\~graphire/},
+ html={http://www.graphire.com/},
}
Hmm, this is what it said yesterday too. I just want to know
url(What's new)(DOEXPAND(docdir)/DOEXPAND(outdir)/NEWS.html) today and
-then url(Download)(ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz)
+then url(Download)(ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/)
LilyPond.
nl()
-Or get the latest url(patch)(DOEXPAND(depth)/DOEXPAND(outdir)/lilypond-@TOPLEVEL_VERSION@.diff.gz).
nsubsect(Webmaster's Disclaimer)
---- ../lilypond-1.1.39.mb1/NEWS Tue Apr 13 22:32:12 1999
-++ b/NEWS Fri Apr 16 00:27:00 1999
-@@ -1,3 +1,8 @@
pl 39.mb2
- added more mensural style time signatures, old3/4, old6/8, old9/8
- redesigned old6/4, old9/4
- Updated refman.yo, lilypond-regtest.doc, clefs.ly, time.fly
- pl 39.mb1
- - bf: invisible clefs don't take any space, moved _8 below clef
- - updated incipit example and macro--- ../lilypond-1.1.39/NEWS Tue Apr 13 21:32:36 1999
-++ b/NEWS Tue Apr 13 22:43:46 1999
-@@ -1,3 +1,7 @@
pl 39.hwn1
- - consified mi2mu
+ - consified mi2mu (pl 37.jcn1)
+pl 39.mb1
+ - bf: invisible clefs don't take any space, moved _8 below clef
+ - updated incipit example and macro
- pl 39
- - \property textstyle -> textStyle
- pl 39.jcn1
- - Musical_pitch::str (): use names from notename table
+pl 39.uu1
+ - delete graphical objects in reverse
+ - faq updates.
-pl 39
+********
+pl 39 (april 12)
- \property textstyle -> textStyle
pl 38.tca1
> lines from the staff to the note will have a blob too. For example,
> with the note "a4" there will be a black note at the ledger line where
> "c" would be too. However, only the "a4" will have the extra blob.
+. * clefs.ly
. * ps/lily.ps
. * devise standard for functioning of Vertical_align_element.
. * fix interstaff slurs & beams.
. * rest collision minimum dist.
. * Matanya's tips:
. * spacing for prefatory matter
+. * Score does not use points to describe musical sizes. I think becaue the music
+> symbols are not part of any PostScript font. The line length is 7.5 inch (19.05
+> cm) and the height of normal size is equivalent to the traditional raster 1
+> size. (The Schott company sells Letraset sheets of musical symbols which are
+> measured in raster sizes). It is agreed among most engravers I know that the
+> standard size for adult readers in solo music should 70% of raster 1. Jeff's
+> example was 75%, so I had to modify my file to match. Of course, the amount of
+
+So that makes for a staff space of 4 2/3 point. I'll add the
+dimensions to the TODO file.
+
. * accidentals closer to note head
. * ledger line for rest dim less
. * heavier beams?
.* TODO before 1.2
. * \selectmusic to cut pieces from music.
+. * Morally pure LilyPond.
+. * Remove mutopia ramblings.
+. * Remove non-free software links.
+. * Remove meta article LilyPond.
. * TODO: merge atom & molecule; make tree from molecule.
. * break priority setting from SCM.
. * Gade score
. * deps for ly2dvi
.* STUFF
. * compulsory hshift
+. * Give # lines in linebreaking.
. * arrows on slurs.
. * Align_element::padding ?
. * uniformise property names...
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=1
-PATCH_LEVEL=39
-MY_PATCH_LEVEL=mb2
+PATCH_LEVEL=40
+MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
return Tarray;
}
+ T const *access_array () const
+ {
+ return array_p_;
+ }
void operator=(Array const & src)
{
set_size (src.size_);
public:
Link_array()
{}
+
+ Link_array(T * const *tp, int n)
+ : Array<void*> ((void **)tp, n)
+ {
+ }
+
Link_array (Link_array<T> const &src)
: Array<void*> (src)
{
Array<void*>::empty;
Array<void*>::reverse;
Array<void*>::tighten_maxsize;
+ T ** access_array () const
+ {
+ return (T**) Array<void*>::access_array();
+ }
T * get (int i)
{
return (T*) Array<void*>::get (i);
sort (compare, last+1, upper);
}
+template<class T>
+void
+junk_pointer_array (Link_array<T> &a)
+{
+ for (int i=0; i < a.size (); i++)
+ {
+ delete a[i];
+ }
+ a.clear ();
+}
+
#endif // PARRAY_HH
SUBDIRS=test bugs
-examples=praeludium-fuga-E star-spangled-banner
+examples=praeludium-fuga-E
flexamples=
LOCALSTEPMAKE_TEMPLATES=mutopia
fis'4 g'4 a'4 a'2 g'8 fis'8 e'4 fis'4
g'4 g'2 g'4 fis'4. e'8 d'4 cis'2 b8. cis'16 d'4 fis4 gis4 a2 a4
d'4 d'4 d'8()cis'8 b4 b4 b4 e'4 g'8 ()fis'8 e'8()d'8
- d'4()cis'4 a8. a16 d'4.()e'8 fis'8 g'8 a'2 d'8 e'8 fis'4. g'8
+ d'4~cis'4 a8. a16 d'4.~e'8 fis'8 g'8 a'2 d'8 e'8 fis'4. g'8
e'4 d'2 s4
}
$staff1_voice_2 = \notes {
a8.()fis16
- \repeat 2 { a,4 d4 e4 d4()fis4 fis8. fis16 fis4 d4 d4 cis2
+ \repeat 2 { a,4 d4 e4 d4~fis4 fis8. fis16 fis4 d4 d4 cis2
e8 e8 a4. a8 a4 a2 a8. a16 a4 a4 a4 }
\alternative { { fis4 d4 a8. fis16 } { fis4 d4 r4 } }
a4 a4 d'4 d'2 a8 a8 cis'4 cis'4 cis'4 cis'2 a4 a4. a8 a4 a2
a8. a16 d4 d4 d4 cis2 e4 fis4 e4 d4 d4 d4 dis4 g4 g8()dis8 e4 e2
- e8. e16 d4.()a8 a8 a8 a2 g8 g8 a4. a8 g4 fis2 s4
+ e8. e16 d4.~a8 a8 a8 a2 g8 g8 a4. a8 g4 fis2 s4
}
$staff2_voice_1 = \notes {
\alternative { { fis4 d4 r4 } { fis4 d4 r4 } }
d4 e4 fis4 fis'2 e'8 d'8 e'4 e'4 e'4 e'2 cis'4 d'4. cis'8 d'4 e'2
e'8. e'16 a4 a4 e4 e2 cis'4 a4 a4 a4 g4 g4 b4 b4 b4 b4 a2
- cis'8. cis'16 a4.()cis'8 d'8 d'8 d'2 d'8 d'8 d'4. d'8 cis'4
+ cis'8. cis'16 a4.~cis'8 d'8 d'8 d'2 d'8 d'8 d'4. d'8 cis'4
a2 s4
}
\alternative { { fis4 d4 r4 } { fis4 d4 r4 } }
d4 d4 d4 d2 d8 d8 a4 a4 a4 a2 a,4 d4. e8 fis8 g8 a2 g8. g16
fis4 d4 e4 a,2 a4 d4 e4 fis4 g4 g4 fis4 e4 e8()fis8 g8()gis8 a2
- g8. g16 fis4.()a,8 d8 e8 fis2 b8 b8 a4. a8 a,4 d2 s4
+ g8. g16 fis4.~a,8 d8 e8 fis2 b8 b8 a4. a8 a,4 d2 s4
}
text = \lyrics
# input/test/Makefile
depth = ../..
-examples=font20 mark knee beam-interstaff slur-interstaff denneboom sleur repeat hara-kiri
+examples=font20 mark knee beam-interstaff slur-interstaff denneboom sleur repeat hara-kiri grace
LOCALSTEPMAKE_TEMPLATES=mutopia
include $(depth)/make/stepmake.make
gis~ gis8 fis16^\trill ()e b8 c \type Staff<{\voiceone a d}{\voicetwo es,4}>|
}
+BC = \notes\relative c{
+ \key D;
+ \time 2/2;
+ \clef "bass";
+
+ b2. cis4 |
+ d e fis g |
+}
+
\score{
\notes{
+ \type Staff=violin
\property Staff.clefStyle = "transparent"
- \incipit
- \property Staff.clefStyle = "fullSizeChanges" \clef "treble"; \bar "";
- \violin
+ \incipit
+ < \type Staff=violin {
+ \bar ".|"; \endincipit
+ \violin}
+ \type Staff=cb { \property Staff.clefStyle = "transparent"
+ \bar ".|"; \endincipit
+ \BC}>
}
\paper{
\translator{\StaffContext
+++ /dev/null
-
-c''4 c2 c8 c16 c16 c1
-\property Voice.noteHeadStyle = "diamond"
-c4 c2 c8 c16 c16 c1
-\property Voice.noteHeadStyle = "transparent"
-c4 c2 c8 c16 c16 c1
-\property Voice.noteHeadStyle = "cross"
-c4 c2 c8 c16 c16 c1
-\property Voice.noteHeadStyle = "harmonic"
-c4 c2 c8 c16 c16 c1
--- /dev/null
+\score { \notes \relative c{
+c''4 c2 c8 c16 c16 c1
+\property Voice.noteHeadStyle = "diamond"
+c4 c2 c8 c16 c16 c1
+\property Voice.noteHeadStyle = "transparent"
+c4 c2 c8 c16 c16 c1
+\property Voice.noteHeadStyle = "cross"
+c4 c2 c8 c16 c16 c1
+\property Voice.noteHeadStyle = "harmonic"
+c4 c2 c8 c16 c16 c1
+
+ \type ThreadedVoice <
+ \type Thread = TA
+ { \property Thread.noteHeadStyle = "cross"
+ \property ThreadedVoice.ydirection = \up c16}
+ \type Thread = TB
+ { \property Thread.noteHeadStyle = "" a16 }
+
+ \type Thread = TC
+ { \property Thread.noteHeadStyle = "harmonic" d16 }
+
+ >
+}
+
+ \paper {
+ \translator {
+ \VoiceContext
+ \remove Note_heads_engraver;
+ \accepts Thread;
+ \name ThreadedVoice;
+ }
+ \translator {
+ \StaffContext
+ \accepts ThreadedVoice;
+ }
+ \translator {
+ \type Engraver_group_engraver;
+ \consists Note_heads_engraver;
+ \name Thread;
+ }
+ }
+}
--- /dev/null
+\version "1.0.14";
+
+m = \notes \relative c''{
+c1 | c2 c | c c | c c | c c | c c | c c | c c |
+}
+
+\score{ <
+ \type StaffGroup = wood <
+ \type Staff = flauto <
+ \property Staff.instrument = "Flauto"
+ \property Staff.instr = "Fl."
+ \m
+ >
+ \type Staff = oboe <
+ \property Staff.instrument = "Oboe"
+ \property Staff.instr = "Ob."
+ \m
+ >
+ \type Staff = clarI <
+ \property Staff.instrument = "Clarinetto I"
+ \property Staff.instr = "Cl. I"
+ \m
+ >
+ \type Staff = clarII <
+ \property Staff.instrument = "Clarinetto II"
+ \property Staff.instr = "Cl. II"
+ \m
+ >
+ \type Staff = fagotto <
+ \property Staff.instrument = "Fagotto"
+ \property Staff.instr = "Fg."
+ \m
+ >
+ >
+ \type StaffGroup = brass <
+ \type Staff = cor <
+ \property Staff.instrument = "2 Corni in F"
+ \property Staff.instr = "Cor."
+ \type Voice = corI { \stemup \m }
+ \type Voice = corII { \stemdown \m }
+ >
+ \type Staff = trp <
+ \property Staff.instrument = "2 Trp. in B\\textflat "
+ \property Staff.instr = "Trp."
+ \type Voice = trpI { \stemup \m }
+ \type Voice = trpII { \stemdown \m }
+ >
+ >
+ \type StaffGroup = percussion <\type Staff = timpani <
+ \property Staff.instrument = "Timpani"
+ \property Staff.instr = "Timp."
+ \m
+ >
+ >
+ \type StaffGroup = strings <
+% \type GrandStaff = violins <
+ \type Staff = viI <
+ \property Staff.instrument = "Violin I"
+ \property Staff.instr = "Vi. I"
+ \m
+ >
+ \type Staff = viII <
+ \property Staff.instrument = "Violin II"
+ \property Staff.instr = "Vi. II"
+ \m
+ >
+% >
+ \type Staff = vla <
+ \property Staff.instrument = "Viola"
+ \property Staff.instr = "Vla."
+ \m
+ >
+ \type Staff = vlc <
+ \property Staff.instrument = "Violoncello"
+ \property Staff.instr = "Vlc"
+ \m
+ >
+ \type Staff = cb <
+ \property Staff.instrument = "Contrabasso"
+ \property Staff.instr = "C.B."
+ \m
+ >
+ >
+>
+ \paper {
+% \paper_sixteen;
+ linewidth = 185.\mm;
+ textheight = 260.\mm;
+ \translator {
+ \OrchestralScoreContext
+ minVerticalAlign = 2.5*\staffheight;
+ }
+ \translator { \StaffContext
+ \consists "Staff_margin_engraver";
+ }
+ }
+}
+
if (break_status_dir() != RIGHT && style != "fullSizeChanges")
symbol_ += "_change";
if (style == "transparent")
- set_elt_property (transparent_scm_sym, SCM_BOOL_T);
+ {
+ set_elt_property (transparent_scm_sym, SCM_BOOL_T);
+ dim_cache_[X_AXIS].set_empty (true);
+ }
}
/*
g->dim_cache_[X_AXIS].parent_l_ = &dim_cache_[X_AXIS];
add_dependency (g); // just to be sure.
- Real r = do_height ()[d] + g->extent (Y_AXIS)[-d];
+ Real r = do_height ()[d] - g->extent (Y_AXIS)[-d];
g->dim_cache_[Y_AXIS].set_offset (r);
SCM my_vis = get_elt_property (visibility_lambda_scm_sym);
#define MUSICAL_PITCH_HH
#include "lily-proto.hh"
-#include "array.hh"
#include "input.hh"
/** A "tonal" pitch. This is a pitch as it figures in diatonal western
*/
struct Musical_pitch : public Input
{
- static String name_str_arr_arr_[7][5];
-
Musical_pitch (int notename=0, int accidental=0, int octave=0);
/// 0 is c, 6 is b
#include "debug.hh"
#include "main.hh"
-String Musical_pitch::name_str_arr_arr_[7][5];
-
Musical_pitch::Musical_pitch (int n, int a, int o)
{
notename_i_ = n;
accidental_i_ -= delta_acc;
}
+
+#if 0
+// nice test for internationalisation strings
+char const *accname[] = {"double flat", "flat", "natural",
+ "sharp" , "double sharp"};
+#else
+char const *accname[] = {"eses", "es", "", "is" , "isis"};
+#endif
+
String
Musical_pitch::str () const
{
- String s = name_str_arr_arr_[notename_i_ % 7][accidental_i_ + 2];
+ int n = (notename_i_ + 2) % 7;
+ String s = to_str (char(n + 'a'));
+ if (accidental_i_)
+ s += String (accname[accidental_i_ + 2]);
if (octave_i_ > 0)
{
while (o--)
s += to_str (',');
}
+#if 0
+ if (octave_i_)
+ s += String ((octave_i_> 0)? "^": "_") + to_str (octave_i_);
+#endif
+
return s;
}
Paper_score::~Paper_score ()
{
- for (int i=0; i < span_p_arr_.size (); i++)
+ for (int i=span_p_arr_.size (); --i >=0 ; )
delete span_p_arr_[i];
- for (int i=0; i < elem_p_arr_.size (); i++)
+ for (int i=elem_p_arr_.size (); --i >=0 ; )
delete elem_p_arr_[i];
}
%type <tempo> tempo_request
%type <notenametab> notenames_body notenames_block chordmodifiers_block
-%expect 8
+
+
%left '-' '+'
%left '*' '/'
}
| notenames_body STRING '=' explicit_musical_pitch {
(*$$)[*$2] = *$4;
- int n = ($4->notename_i_ + 10 * 7) % 7;
- int a = $4->accidental_i_ + 2;
- Musical_pitch::name_str_arr_arr_[n][a] = *$2;
+
delete $4;
delete $2;
}
Rhythmic_grouping::junk()
{
delete interval_;
- for (int i=0; i < children.size(); i++)
- delete children[i];
+ junk_pointer_array (children);
init();
}
Score::~Score()
{
delete header_p_;
- for (int i=0; i < def_p_arr_.size (); i++)
- delete def_p_arr_[i];
+ junk_pointer_array (def_p_arr_);
delete music_p_;
}
void
clear_scores ()
{
- for (int i=0; i < score_global_array.size(); i++)
- {
- delete score_global_array[i];
- }
- score_global_array.clear();
+ junk_pointer_array (score_global_array);
+
inclusion_global_array.clear ();
delete header_global_p ;
header_global_p =0;
% ugh
barsize = \staffheight;
+rulethickness = \staffline;
gourlay_energybound = 100000.;
%{
gourlay_maxmeasures = 10.;
castingalgorithm = \Gourlay;
-% relative thickness of thin lines 1.6 : 1 : 0.8
-stemthickness = 0.8*\staffline;
-rulethickness = \staffline;
-barthick_thin = 1.6*\staffline;
+%{ Ross. page 151 lists these values, but we think that thick lines
+and kernings are too thick.
-barthick_thick = 6.0* \staffline;
+bar_kern = 0.5 * \interline;
+bar_thinkern = 0.75 * \interline;
+barthick_thick = 0.5* \interline;
+barthick_score = 0.13333* \interline;
+barthick_thin = 0.1*\interline;
+
+%}
bar_kern = 3.0 * \staffline;
bar_thinkern = 3.0 * \staffline;
-
+barthick_thick = 6.0* \staffline;
+barthick_thin = 1.6*\staffline;
tuplet_thick = 1.0*\staffline;
volta_thick = 1.6*\staffline;
+% relative thickness of thin lines 1.6 : 1 : 0.8
+stemthickness = 0.8*\staffline;
+rulethickness = \staffline;
+
+
extender_height = 0.8*\staffline;
% Multi-measure rests
voltaSpannerDuration Rat. Coda kludge: set length of volta-spanner,
typically set to one measure: "1"
+[Staff]
+clefStyle "fullSizeChanges" Clef changes typeset in full size
+clefStyle "transparent" No clef typeset
+
[Staff?]
instrument ascii midi instrument table lookup
\property Staff.keyoctaviation = 0
}
+% End the incipit and print a ``normal line start''.
+endincipit = \notes{
+ \partial 16; s16 % Hack to handle e.g. \bar ".|"; \endincipit
+ \property Staff.clefStyle = "fullSizeChanges"
+ \nobreak \bar "";
+}
Begin3
Titel: LilyPond
-Versie: 1.1.39
-Inschrijf datum: 12APR99
+Versie: 1.1.40
+Inschrijf datum: 19APR99
Beschrijving: @FLAPTEKST@
Trefwoorden: muziek typezetten midi notatie
Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
janneke@gnu.org (Jan Nieuwenhuizen)
Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
- 770k lilypond-1.1.39.tar.gz
+ 770k lilypond-1.1.40.tar.gz
Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 770k lilypond-1.1.39.tar.gz
+ 770k lilypond-1.1.40.tar.gz
Copi-eer voorwaarden: GPL
End
Begin3
Title: LilyPond
-Version: 1.1.39
-Entered-date: 12APR99
+Version: 1.1.40
+Entered-date: 19APR99
Description:
LilyPond is the GNU Project music typesetter. This program can print
beautiful sheet music from a music definition file. It can also play
janneke@gnu.org (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 770k lilypond-1.1.39.tar.gz
+ 770k lilypond-1.1.40.tar.gz
Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 770k lilypond-1.1.39.tar.gz
+ 770k lilypond-1.1.40.tar.gz
Copying-policy: GPL
End
Name: lilypond
-Version: 1.1.39
+Version: 1.1.40
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.39.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.40.tar.gz
Summary: A program for printing sheet music.
URL: http://www.cs.uu.nl/~hanwen/lilypond
Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
# - bf: \mudela{ \times 2/3{...} }
# * \t in \times is not tab character and
# * dont treat the first '}' as command ending
+# 0.5.4: (Mats B)
+# - .fly and .sly files in \mudelafile{} are treated as standalone Lilypond.
+# - Fragments, .fly and .sly files are in \relative mode.
import os
import string
twocolumn_re = re.compile('\\\\twocolumn')
onecolumn_re = re.compile('\\\\onecolumn')
mudela_file_re = re.compile('\\\\mudelafile{([^}]+)}')
+file_ext_re = re.compile('.+\\.([^.}]+$)')
preMudelaExample_re = re.compile('\\\\def\\\\preMudelaExample')
postMudelaExample_re = re.compile('\\\\def\\\\postMudelaExample')
boundingBox_re = re.compile('%%BoundingBox: ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)')
else:
optlist = []
if 'fragment' in optlist:
- self.code_type_override = 'fly'
+ self.code_type_override = 'sly'
if 'nonfragment' in optlist:
self.code_type_override = 'ly'
if 'eps' in optlist:
% Props.getMudelaFontsize())
s = fontsize_i2a[Props.getMudelaFontsize()]
- if self.code_type == 'fly':
+ if self.code_type == 'sly':
linewidth_str = 'linewidth = -1.\cm;'
+ self.code_type = 'fly'
else:
linewidth_str = 'linewidth = %i.\\pt;' % Props.getLineWidth()
self.file.write("\\paper {"
+ "castingalgorithm = \Gourlay; \n}")
#+ "castingalgorithm = \Wordwrap; indent = 2.\cm; \n}")
if self.code_type == 'fly':
- self.file.write('\\score{\n\\notes{')
+ self.file.write('\\score{\n\\notes\\relative c{')
def close (self):
if self.code_type == 'unknown':
self.code_type = 'fly'
r = mudela_file_re.search(line)
self.mudela = Mudela_output(self.gen_basename())
- fn = r.groups ()[0]
+ fn = r.group (1)
full_path = find_file (fn)
if not full_path:
print 'error: can\'t find file `%s\'.' % fn
sys.exit (1)
-
+
+
+ r = file_ext_re.search(fn)
+ if r:
+ self.code_type = r.group(1)
+
f = open (full_path, 'r')
lines =f.readlines ()
for x in lines:
# ugh, how to get rid of .tex files generated by lily?
pats = ['configure', '*.diff', '*.diff.gz', '*.pyc', '*.txt']
-header = 'Generated by %s using %s,\
-\nFrom = %s, To = %s\n\
-\n\
-usage \n\
-\n\
- cd %s-source-dir; patch -E -p1 < %s\n\
-\n\
-Patches do not contain automatically generated files \n\
-or (urg) empty directories, \n\
-i.e., you should rerun autoconf, configure \n\
-and possibly make outdirs.\n\n'
+header = """Generated by %s using %s,
+From = %s, To = %s
+
+usage
+
+ cd %s-source-dir; patch -E -p1 < %s
+
+Patches do not contain automatically generated files
+or (urg) empty directories,
+i.e., you should rerun autoconf, configure """
+
def makediff (fromdir, todir, patch_name):