]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.1.40 release/1.1.40
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 16 Apr 1999 11:04:33 +0000 (13:04 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 16 Apr 1999 11:04:33 +0000 (13:04 +0200)
32 files changed:
Documentation/faq.yo
Documentation/internals.yo
Documentation/tex/lilypond-regtest.doc
Documentation/tex/other-packages.bib
Documentation/topdocs/index.yo
NEWS
TODO
VERSION
flower/include/array.hh
flower/include/parray.hh
input/GNUmakefile
input/star-spangled-banner.ly
input/test/GNUmakefile
input/test/incipit.ly
input/test/noteheadstyle.fly [deleted file]
input/test/noteheadstyle.ly [new file with mode: 0644]
input/test/orchestscore.ly [new file with mode: 0644]
lily/clef-item.cc
lily/include/musical-pitch.hh
lily/musical-pitch.cc
lily/p-score.cc
lily/parser.yy
lily/rhythmic-grouping.cc
lily/score.cc
lily/scores.cc
ly/params.ly
ly/property.ly
make/out/lelievijver.lsm
make/out/lilypond.lsm
make/out/lilypond.spec
scripts/mudela-book.py
stepmake/bin/package-diff.py

index aa15a3196ea6fc19b224066704f75df11beb4c05..1894b8500fff3375abd7a06ddee94ed8c3d7af1f 100644 (file)
@@ -186,16 +186,19 @@ elements.)
 
 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 ....)
 
@@ -243,9 +246,7 @@ verb(
 
 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)
@@ -391,6 +392,24 @@ previous fonts, including the file(.pk) and file(.tfm) fonts in
 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(
index 4cb8d0aae3ba78954d7c918e87af788793487db0..4f62e65f48fa4ae08ea148cd8b98ebb3e393c615 100644 (file)
@@ -25,27 +25,28 @@ of code(Scores), which each contain code(Music) and paper/midi-definitions.
 
 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)
 
index 777592ed0b862a95649471371aeefc27c3d9134b..9b4cbde46dcb185edc8f315931c7cd94ab47ff42 100644 (file)
@@ -19,9 +19,10 @@ centered on the middle staff line.
 \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}
index e2c7aaafc99f80fa4f7a56dde9d6d0795ccca908..25b86464dccc01ef5e9ae37ade3a90830243a25c 100644 (file)
@@ -44,8 +44,9 @@ symphonic music), as well as for operas or ballets. "
 
 @Misc{graph_music_press,
   title =       {Graphire Music Press},
+  
   publisher={Graphire Corporation} ,
-  html={http://www.sover.net/\~graphire/},
+  html={http://www.graphire.com/},
 }
 
 
index e80cc7d9aed359311a8692b4bb0a8aaecc5bbd48..8dd9e0c4a923a85a59c9d8e9c23b596501cb3604 100644 (file)
@@ -23,10 +23,9 @@ nsect()
 
 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)
 
diff --git a/NEWS b/NEWS
index 7402eb06ceacb1c6330bfa30cc27b38322a23761..5f04e3e2de109e6d08ccdc762f724d0bbd4eea8d 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,26 +1,21 @@
---- ../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
diff --git a/TODO b/TODO
index 0b9d13db4da17a2aac8db56c52f11caa1eb9d909..bf189ce4c1442eb44597e88dd7190ed7f10bb817 100644 (file)
--- a/TODO
+++ b/TODO
@@ -16,6 +16,7 @@ Grep for TODO and ugh/ugr/urg.
 > 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.
@@ -88,6 +89,17 @@ specify the third.  Should there be?
 . * 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?
@@ -106,6 +118,10 @@ specify the third.  Should there be?
 
 .* 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
@@ -208,6 +224,7 @@ compilation.
 .  * deps for ly2dvi
 .* STUFF
 . * compulsory hshift
+. * Give # lines in linebreaking.  
 . * arrows on slurs.
 . * Align_element::padding  ?
 . * uniformise property names...
diff --git a/VERSION b/VERSION
index 454983ee754bc0312a189156aca273d053adb91c..74d42f8cfed3b30f952bf811e91d5e183807a4b0 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,8 +1,8 @@
 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.
index f8194c27899ccebb31e07558f06f17ae517fa3cf..10f38ec0bfdb2bc971f932d478a76b6be29e6930 100644 (file)
@@ -111,6 +111,10 @@ public:
       return Tarray;
     }
 
+  T const *access_array () const
+    {
+      return array_p_;
+    }
   void operator=(Array const & src) 
     {
       set_size (src.size_);
index ee529a5316cb923f184e99384472e6059e58c74b..94d2e319e32e4a9d6ab9d5274b28a4f204da21f5 100644 (file)
@@ -36,6 +36,12 @@ class Link_array : private Array<void *>
 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)
     {
@@ -123,6 +129,10 @@ public:
   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);
@@ -186,5 +196,16 @@ Link_array<T>::sort (int (*compare)(T *const&,T *const&),
   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
 
index 4b8cc939e99c60754ed1c17fa41e7a497f533ccc..e05e4d26648df6f1710267aadb596a0362b03891 100644 (file)
@@ -4,7 +4,7 @@ depth = ..
 
 SUBDIRS=test bugs
 
-examples=praeludium-fuga-E star-spangled-banner
+examples=praeludium-fuga-E 
 flexamples=
 
 LOCALSTEPMAKE_TEMPLATES=mutopia
index 3264326c850425fe5cbb71b7bfaaf75d8e04626b..177e20b8e0dec59c224f0718a6ebfce68cbf2a01 100644 (file)
@@ -22,18 +22,18 @@ $staff1_voice_1 = \notes {
   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 { 
@@ -43,7 +43,7 @@ $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 
 }
 
@@ -54,7 +54,7 @@ $staff2_voice_2 = \notes {
   \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
index e4059cecb9a789aa0949d07ebb173d08cdd1192b..476ff3601051f93d7b1f9efc14103233836c2ec0 100644 (file)
@@ -1,7 +1,7 @@
 # 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 
index 150367dbbb674242b4720da9bb12bfb74da13f07..9b8f5c8438391e060fc34cd75f04172f29fbde07 100644 (file)
@@ -20,12 +20,26 @@ violin = \notes\relative c''{
   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
diff --git a/input/test/noteheadstyle.fly b/input/test/noteheadstyle.fly
deleted file mode 100644 (file)
index c1fcca0..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-
-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
diff --git a/input/test/noteheadstyle.ly b/input/test/noteheadstyle.ly
new file mode 100644 (file)
index 0000000..47755da
--- /dev/null
@@ -0,0 +1,42 @@
+\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;
+       }
+    }
+}
diff --git a/input/test/orchestscore.ly b/input/test/orchestscore.ly
new file mode 100644 (file)
index 0000000..16fd3fb
--- /dev/null
@@ -0,0 +1,98 @@
+\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";
+    }
+  }
+}
+
index a2d300f516a8b37018a3bdf5e3a4e6553354301f..75191ca3449513f3e368bfa8ddbc85e275d632d1 100644 (file)
@@ -27,7 +27,10 @@ Clef_item::do_pre_processing()
   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);
+    }
 }
 
 /*
@@ -61,7 +64,7 @@ Clef_item::do_add_processing ()
          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);
index bed6d852a63de0c40be26e8a0009731854079341..d4d0a60854c2c9bf6e91bd07b2f026cd24deecd8 100644 (file)
@@ -11,7 +11,6 @@
 #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
@@ -22,8 +21,6 @@
 */
 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
index eaf7ab5b7ae01e26659c65e4241a93951abaeb15..35df93bcc5f0b476f9bade516c3dcb2f1aadf622 100644 (file)
@@ -10,8 +10,6 @@
 #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;
@@ -80,10 +78,22 @@ Musical_pitch::transpose (Musical_pitch delta)
   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)
     {
@@ -97,6 +107,11 @@ Musical_pitch::str () const
       while (o--)
        s += to_str (',');
     }
+#if 0  
+  if (octave_i_)
+    s  += String ((octave_i_> 0)? "^": "_") + to_str (octave_i_);
+#endif
+  
   return s;
 }
 
index 1e54cf941d069d408e82b3a668b7fa838ff45393..abd0ed5bf0a67dd420e4f00e8292331da8370db5 100644 (file)
@@ -41,9 +41,9 @@ Paper_score::Paper_score (Paper_score const &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];
 }
 
index 953ea68aabcc88d7be309552422c0006f618343a..300834a24872042779e92c7028826121cb59a738 100644 (file)
@@ -260,7 +260,8 @@ yylex (YYSTYPE *s,  void * v_l)
 %type <tempo>  tempo_request
 %type <notenametab> notenames_body notenames_block chordmodifiers_block
 
-%expect 8
+
+
 
 %left '-' '+'
 %left '*' '/'
@@ -348,9 +349,7 @@ notenames_body:
        }
        | 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;
        }
index 0a95845f6323807c3330ad2add8826e90232a257..487d03a5b981628441c08d682244c99b1f7b10b5 100644 (file)
@@ -229,8 +229,7 @@ void
 Rhythmic_grouping::junk()
 {
   delete interval_;
-  for (int i=0; i < children.size(); i++)
-    delete children[i];
+  junk_pointer_array (children);
   init();
 }
 
index 7c4fbd5a8472c600d16151020e7615c8fa7c7084..7f0016f2b9cf24d50efd320bbe894b0cfbae8660 100644 (file)
@@ -42,8 +42,7 @@ Score::Score (Score const &s)
 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_;
 }
 
index 5991ae6839d51b67e9943c0bd30d16ca6a230ce6..5d97d4fef5762293a8ad726ec83571ad8dfa3958 100644 (file)
@@ -92,11 +92,8 @@ do_scores()
 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; 
index a3deb476d0631f9de6f3cf56db44d9651314ad14..c9c66b941d2a61b2f99f1f68056c72fef0f1629e 100644 (file)
@@ -95,6 +95,7 @@ notewidth = (\quartwidth + \wholewidth) / 2.0;
 
 % ugh
 barsize = \staffheight;
+rulethickness = \staffline;
 
 gourlay_energybound = 100000.;
 %{
@@ -104,20 +105,30 @@ on a line.  Decreasing it greatly reduces computation time
 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
index 9e088a732518598b3063716eed824039aa6d7f77..2c7bcbae1dcbf908e986dfa781d6559779708d19 100644 (file)
@@ -76,6 +76,10 @@ voltaVisibility         0/1     on/off
 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
 
@@ -274,3 +278,9 @@ specialkey = {
        \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 "";
+}
index b7a9ab240ae1ee063c3426f719da6bdab122c753..01126f78fe9e1dd7086cf6b7e83e3b802c8c4876 100644 (file)
@@ -1,15 +1,15 @@
 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
index 95bca37319b6d7635416f7e5b13abf1d57e9ad17..6ef8af95cdfc579eb1dc66da41f2f4ecc15e280b 100644 (file)
@@ -1,7 +1,7 @@
 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
@@ -14,8 +14,8 @@ Author: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       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
index 51d117cb0646e48148b5be62aab144141af01837..7ce8706b2633587bea6214eaa10679a78c705b4f 100644 (file)
@@ -1,9 +1,9 @@
 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>
index 13598b96b5c09fd2180d663270a546154ef6e0ae..4ef55ba4885178ec038faed0caa493e389375491 100644 (file)
@@ -58,6 +58,9 @@
 #   - 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
@@ -92,6 +95,7 @@ documentclass_re = re.compile('\\\\documentclass')
 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]+)')
@@ -260,7 +264,7 @@ class Mudela_output:
         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:
@@ -273,8 +277,9 @@ class Mudela_output:
                          % 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 {"
@@ -283,7 +288,7 @@ class Mudela_output:
                         + "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'
@@ -556,12 +561,17 @@ class Main_tex_input(Tex_input):
                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:
index e8e28f1bab676efebc02e66d0659792913fa7fd7..2645a6fd53e895466583202dd5219787b61ce329 100644 (file)
@@ -93,17 +93,17 @@ def remove_configure (dir):
 # 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):