From: Han-Wen Nienhuys Date: Fri, 16 Apr 1999 11:04:33 +0000 (+0200) Subject: release: 1.1.40 X-Git-Tag: release/1.1.40 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=3e69ea97654a3992b7411b2979c20fdc18845e2c;p=lilypond.git release: 1.1.40 --- diff --git a/Documentation/faq.yo b/Documentation/faq.yo index aa15a3196e..1894b8500f 100644 --- a/Documentation/faq.yo +++ b/Documentation/faq.yo @@ -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 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( diff --git a/Documentation/internals.yo b/Documentation/internals.yo index 4cb8d0aae3..4f62e65f48 100644 --- a/Documentation/internals.yo +++ b/Documentation/internals.yo @@ -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) diff --git a/Documentation/tex/lilypond-regtest.doc b/Documentation/tex/lilypond-regtest.doc index 777592ed0b..9b4cbde46d 100644 --- a/Documentation/tex/lilypond-regtest.doc +++ b/Documentation/tex/lilypond-regtest.doc @@ -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} diff --git a/Documentation/tex/other-packages.bib b/Documentation/tex/other-packages.bib index e2c7aaafc9..25b86464dc 100644 --- a/Documentation/tex/other-packages.bib +++ b/Documentation/tex/other-packages.bib @@ -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/}, } diff --git a/Documentation/topdocs/index.yo b/Documentation/topdocs/index.yo index e80cc7d9ae..8dd9e0c4a9 100644 --- a/Documentation/topdocs/index.yo +++ b/Documentation/topdocs/index.yo @@ -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 7402eb06ce..5f04e3e2de 100644 --- 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 0b9d13db4d..bf189ce4c1 100644 --- 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 454983ee75..74d42f8cfe 100644 --- 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. diff --git a/flower/include/array.hh b/flower/include/array.hh index f8194c2789..10f38ec0bf 100644 --- a/flower/include/array.hh +++ b/flower/include/array.hh @@ -111,6 +111,10 @@ public: return Tarray; } + T const *access_array () const + { + return array_p_; + } void operator=(Array const & src) { set_size (src.size_); diff --git a/flower/include/parray.hh b/flower/include/parray.hh index ee529a5316..94d2e319e3 100644 --- a/flower/include/parray.hh +++ b/flower/include/parray.hh @@ -36,6 +36,12 @@ class Link_array : private Array public: Link_array() {} + + Link_array(T * const *tp, int n) + : Array ((void **)tp, n) + { + } + Link_array (Link_array const &src) : Array (src) { @@ -123,6 +129,10 @@ public: Array::empty; Array::reverse; Array::tighten_maxsize; + T ** access_array () const + { + return (T**) Array::access_array(); + } T * get (int i) { return (T*) Array::get (i); @@ -186,5 +196,16 @@ Link_array::sort (int (*compare)(T *const&,T *const&), sort (compare, last+1, upper); } +template +void +junk_pointer_array (Link_array &a) +{ + for (int i=0; i < a.size (); i++) + { + delete a[i]; + } + a.clear (); +} + #endif // PARRAY_HH diff --git a/input/GNUmakefile b/input/GNUmakefile index 4b8cc939e9..e05e4d2664 100644 --- a/input/GNUmakefile +++ b/input/GNUmakefile @@ -4,7 +4,7 @@ depth = .. SUBDIRS=test bugs -examples=praeludium-fuga-E star-spangled-banner +examples=praeludium-fuga-E flexamples= LOCALSTEPMAKE_TEMPLATES=mutopia diff --git a/input/star-spangled-banner.ly b/input/star-spangled-banner.ly index 3264326c85..177e20b8e0 100644 --- a/input/star-spangled-banner.ly +++ b/input/star-spangled-banner.ly @@ -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 diff --git a/input/test/GNUmakefile b/input/test/GNUmakefile index e4059cecb9..476ff36010 100644 --- a/input/test/GNUmakefile +++ b/input/test/GNUmakefile @@ -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 diff --git a/input/test/incipit.ly b/input/test/incipit.ly index 150367dbbb..9b8f5c8438 100644 --- a/input/test/incipit.ly +++ b/input/test/incipit.ly @@ -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 index c1fcca075a..0000000000 --- a/input/test/noteheadstyle.fly +++ /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 index 0000000000..47755da84e --- /dev/null +++ b/input/test/noteheadstyle.ly @@ -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 index 0000000000..16fd3fb077 --- /dev/null +++ b/input/test/orchestscore.ly @@ -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"; + } + } +} + diff --git a/lily/clef-item.cc b/lily/clef-item.cc index a2d300f516..75191ca344 100644 --- a/lily/clef-item.cc +++ b/lily/clef-item.cc @@ -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); diff --git a/lily/include/musical-pitch.hh b/lily/include/musical-pitch.hh index bed6d852a6..d4d0a60854 100644 --- a/lily/include/musical-pitch.hh +++ b/lily/include/musical-pitch.hh @@ -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 diff --git a/lily/musical-pitch.cc b/lily/musical-pitch.cc index eaf7ab5b7a..35df93bcc5 100644 --- a/lily/musical-pitch.cc +++ b/lily/musical-pitch.cc @@ -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; } diff --git a/lily/p-score.cc b/lily/p-score.cc index 1e54cf941d..abd0ed5bf0 100644 --- a/lily/p-score.cc +++ b/lily/p-score.cc @@ -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]; } diff --git a/lily/parser.yy b/lily/parser.yy index 953ea68aab..300834a248 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -260,7 +260,8 @@ yylex (YYSTYPE *s, void * v_l) %type tempo_request %type 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; } diff --git a/lily/rhythmic-grouping.cc b/lily/rhythmic-grouping.cc index 0a95845f63..487d03a5b9 100644 --- a/lily/rhythmic-grouping.cc +++ b/lily/rhythmic-grouping.cc @@ -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(); } diff --git a/lily/score.cc b/lily/score.cc index 7c4fbd5a84..7f0016f2b9 100644 --- a/lily/score.cc +++ b/lily/score.cc @@ -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_; } diff --git a/lily/scores.cc b/lily/scores.cc index 5991ae6839..5d97d4fef5 100644 --- a/lily/scores.cc +++ b/lily/scores.cc @@ -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; diff --git a/ly/params.ly b/ly/params.ly index a3deb476d0..c9c66b941d 100644 --- a/ly/params.ly +++ b/ly/params.ly @@ -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 diff --git a/ly/property.ly b/ly/property.ly index 9e088a7325..2c7bcbae1d 100644 --- a/ly/property.ly +++ b/ly/property.ly @@ -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 ""; +} diff --git a/make/out/lelievijver.lsm b/make/out/lelievijver.lsm index b7a9ab240a..01126f78fe 100644 --- a/make/out/lelievijver.lsm +++ b/make/out/lelievijver.lsm @@ -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 diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 95bca37319..6ef8af95cd 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -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 diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index 51d117cb06..7ce8706b26 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -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 diff --git a/scripts/mudela-book.py b/scripts/mudela-book.py index 13598b96b5..4ef55ba488 100644 --- a/scripts/mudela-book.py +++ b/scripts/mudela-book.py @@ -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: diff --git a/stepmake/bin/package-diff.py b/stepmake/bin/package-diff.py index e8e28f1bab..2645a6fd53 100644 --- a/stepmake/bin/package-diff.py +++ b/stepmake/bin/package-diff.py @@ -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):