]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.1.53
authorfred <fred>
Tue, 26 Mar 2002 22:14:43 +0000 (22:14 +0000)
committerfred <fred>
Tue, 26 Mar 2002 22:14:43 +0000 (22:14 +0000)
296 files changed:
ANNOUNCE-1.2
Documentation/relative-octaves.yo
Documentation/tex/feta.tex
Documentation/tex/lilypond-regtest.doc
Documentation/tex/refman.yo
Documentation/topdocs/AUTHORS.yo
Documentation/topdocs/INSTALL.yo
buildscripts/set-lily.sh
flower/include/array.hh
flower/include/array.icc
flower/include/cons.hh
input/bugs/Overture.ly
input/bugs/semirepeat.ly [new file with mode: 0644]
input/bugs/spacing.ly
input/bugs/sv.ly
input/example-3.ly
input/just-friends.ly
input/keys.ly
input/kortjakje.ly
input/part.ly
input/pedal.ly
input/praeludium-fuga-E.ly
input/rhythm.ly
input/scales.ly
input/scripts.ly
input/star-spangled-banner.ly
input/test/alphabet.ly
input/test/ass-extra-voice.ly [new file with mode: 0644]
input/test/auto-staff-switch.ly
input/test/bar-scripts.ly
input/test/beam-chord.ly
input/test/beam-interstaff.ly
input/test/beam-isknee.ly
input/test/beam-pos.ly
input/test/beaming.ly [new file with mode: 0644]
input/test/beams.ly
input/test/breathing-sign.ly
input/test/broken.ly
input/test/chord-inversion.ly
input/test/chord-table.ly
input/test/chords.ly
input/test/clefs.ly
input/test/collisions.ly
input/test/defaultbars.ly
input/test/denneboom.ly
input/test/dotted-slur.ly
input/test/extender.ly
input/test/extra-staff.ly
input/test/find-fifths.ly [new file with mode: 0644]
input/test/font-body.ly
input/test/font.ly
input/test/font16.ly
input/test/font20.ly
input/test/gourlay.ly
input/test/hara-kiri.ly
input/test/incipit.ly
input/test/keys.ly
input/test/knee.ly
input/test/mark.ly
input/test/memory.ly
input/test/multi-rest.ly
input/test/noteheadstyle.ly
input/test/notemode-chords.ly
input/test/number-staff-lines.fly
input/test/orchestscore.ly
input/test/ossia.ly
input/test/perform-tie.fly [new file with mode: 0644]
input/test/repeatbar.fly [new file with mode: 0644]
input/test/rest-collision.ly
input/test/rhythmic.ly [new file with mode: 0644]
input/test/scales.fly [new file with mode: 0644]
input/test/score-bar-scripts.ly
input/test/sleur.ly
input/test/slur-bug.ly
input/test/slur-damping.ly
input/test/slur-interstaff.ly
input/test/slur-swap.ly
input/test/slurs.ly
input/test/spacing-2.ly
input/test/spacing.ly
input/test/span-bars.ly
input/test/staff-margin.ly
input/test/staff-side-slur.ly
input/test/staff-size.ly
input/test/stem-tremolo.ly
input/test/stem.ly
input/test/tchaikovsky.ly
input/test/test-lyrics.ly
input/test/thumb.ly
input/test/tie-bug.ly
input/test/tie.ly
input/test/title.ly
input/test/transposition.ly
input/test/tup.ly
input/test/vertical-align.ly
input/test/vertical-text.ly
input/test/wtk-huh.ly
input/tril.ly
input/twinkle-pop.ly
input/twinkle.ly
lily/audio-element.cc
lily/audio-item.cc
lily/auto-beam-engraver.cc
lily/bar-engraver.cc
lily/bar.cc
lily/beam-engraver.cc
lily/beam.cc
lily/command-request.cc
lily/grace-performer-group.cc [new file with mode: 0644]
lily/graphical-axis-group.cc
lily/include/audio-element.hh
lily/include/audio-item.hh
lily/include/auto-beam-engraver.hh
lily/include/beam-engraver.hh
lily/include/beam.hh
lily/include/command-request.hh
lily/include/grace-performer-group.hh [new file with mode: 0644]
lily/include/key-def.hh [new file with mode: 0644]
lily/include/key-performer.hh
lily/include/lily-proto.hh
lily/include/ly-symbols.hh
lily/include/lyric-performer.hh
lily/include/midi-item.hh
lily/include/midi-stream.hh
lily/include/multi-measure-rest-engraver.hh
lily/include/musical-request.hh
lily/include/new-beaming.hh [new file with mode: 0644]
lily/include/new-repeated-music.hh
lily/include/note-performer.hh
lily/include/paper-outputter.hh
lily/include/performer.hh
lily/include/repeat-engraver.hh
lily/include/score-engraver.hh
lily/include/score-performer.hh
lily/include/staff-info.hh
lily/include/staff-performer.hh
lily/include/swallow-perf.hh
lily/include/tie-performer.hh [new file with mode: 0644]
lily/include/time-description.hh
lily/include/time-signature-engraver.hh
lily/include/time-signature-performer.hh
lily/include/timing-engraver.hh
lily/include/timing-translator.hh
lily/include/volta-spanner.hh
lily/item.cc
lily/key-def.cc [new file with mode: 0644]
lily/key-engraver.cc
lily/key-performer.cc
lily/lyric-performer.cc
lily/midi-item.cc
lily/midi-stream.cc
lily/midi-walker.cc
lily/multi-measure-rest-engraver.cc
lily/multi-measure-rest.cc
lily/music-iterator.cc
lily/music-list.cc
lily/my-lily-lexer.cc
lily/new-beaming.cc [new file with mode: 0644]
lily/note-column.cc
lily/note-performer.cc
lily/p-score.cc
lily/paper-outputter.cc
lily/parser.yy
lily/performance.cc
lily/performer-group-performer.cc
lily/performer.cc
lily/repeat-engraver.cc
lily/repeated-music-iterator.cc
lily/repeated-music.cc
lily/score-engraver.cc
lily/score-performer.cc
lily/specialty-engraver.cc
lily/staff-bar.cc
lily/staff-info.cc
lily/staff-performer.cc
lily/staff-switching-translator.cc
lily/tie-performer.cc [new file with mode: 0644]
lily/time-description.cc
lily/time-signature-performer.cc
lily/timing-engraver.cc
lily/timing-translator.cc
lily/unfolded-repeat-iterator.cc
lily/volta-spanner.cc
ly/book-fragment.ly
ly/book-init.ly
ly/center-fragment.ly
ly/center.ly
ly/engraver.ly
ly/fragment.ly
ly/paper16.ly
ly/paper20.ly
ly/params.ly
ly/performer.ly
ly/property.ly
ly/script.ly
mf/feta-banier.mf
mi2mu/main.cc
mi2mu/midi-track-parser.cc
mi2mu/mudela-item.cc
mi2mu/mudela-voice.cc
mutopia/Coriolan/bassi-part.ly
mutopia/Coriolan/clarinetti-part.ly
mutopia/Coriolan/clarinetti.ly
mutopia/Coriolan/clarinetto-1.ly
mutopia/Coriolan/clarinetto-2.ly
mutopia/Coriolan/contrabasso-part.ly
mutopia/Coriolan/contrabasso.ly
mutopia/Coriolan/coriolan.ly
mutopia/Coriolan/corni-part.ly
mutopia/Coriolan/corni.ly
mutopia/Coriolan/corno-1.ly
mutopia/Coriolan/corno-2.ly
mutopia/Coriolan/fagotti-part.ly
mutopia/Coriolan/fagotti.ly
mutopia/Coriolan/fagotto-1.ly
mutopia/Coriolan/fagotto-2.ly
mutopia/Coriolan/flauti-part.ly
mutopia/Coriolan/flauti.ly
mutopia/Coriolan/flauto-1.ly
mutopia/Coriolan/flauto-2.ly
mutopia/Coriolan/global.ly
mutopia/Coriolan/oboe-1.ly
mutopia/Coriolan/oboe-2.ly
mutopia/Coriolan/oboi-part.ly
mutopia/Coriolan/oboi.ly
mutopia/Coriolan/timpani.ly
mutopia/Coriolan/trombe-part.ly
mutopia/Coriolan/trombe.ly
mutopia/Coriolan/trombo-1.ly
mutopia/Coriolan/trombo-2.ly
mutopia/Coriolan/viola-1.ly
mutopia/Coriolan/viola-2.ly
mutopia/Coriolan/viola-part.ly
mutopia/Coriolan/violino-1-part.ly
mutopia/Coriolan/violino-1.ly
mutopia/Coriolan/violino-2-part.ly
mutopia/Coriolan/violino-2.ly
mutopia/Coriolan/violoncello-part.ly
mutopia/Coriolan/violoncello.ly
mutopia/D.Scarlatti/progress.ly
mutopia/D.Scarlatti/sonata-k1-l366.ly
mutopia/D.Scarlatti/sonata-k2-l388.ly
mutopia/D.Scarlatti/sonata-k3-l378.ly
mutopia/D.Scarlatti/sonata-k4-l390.ly
mutopia/D.Zipoli/verso_2.ly
mutopia/E.Satie/gnossienne-4.ly
mutopia/E.Satie/petite-ouverture-a-danser.ly
mutopia/F.Schubert/AnSylvia.ly
mutopia/F.Schubert/standchen-16.ly
mutopia/F.Schubert/standchen-20.ly
mutopia/F.Schubert/standchen.ly
mutopia/Hymns/diademata.ly
mutopia/Hymns/laudatedom.ly
mutopia/Hymns/maccabaeus.ly
mutopia/Hymns/ode.ly
mutopia/Hymns/stille.ly
mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Allemande.ly
mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Capriccio.ly
mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Sinfonia.ly
mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly
mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly
mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly
mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly
mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly
mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly
mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly
mutopia/J.S.Bach/Solo-Cello-Suites/courante-urtext.ly
mutopia/J.S.Bach/Solo-Cello-Suites/gigue-urtext.ly
mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly
mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-urtext.ly
mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly
mutopia/J.S.Bach/Solo-Cello-Suites/prelude-urtext.ly
mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly
mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-urtext.ly
mutopia/J.S.Bach/viola-i.ly
mutopia/J.S.Bach/violino-i.ly
mutopia/J.S.Bach/violino-viola.ly
mutopia/J.S.Bach/violino-violoncello.ly
mutopia/J.S.Bach/violoncello-i.ly
mutopia/J.S.Bach/wtk1-fugue1.ly
mutopia/J.S.Bach/wtk1-fugue2.ly
mutopia/J.S.Bach/wtk1-prelude1.ly
mutopia/L.Mozart/sinfonia.ly
mutopia/N.W.Gade/brass.ly
mutopia/N.W.Gade/parts.ly
mutopia/N.W.Gade/score.ly
mutopia/N.W.Gade/strings.ly
mutopia/N.W.Gade/wood.ly
mutopia/W.A.Mozart/cadenza.ly
mutopia/W.A.Mozart/horn-concerto-3.ly
mutopia/gallina.ly
mutopia/los-toros-oboe.ly
scm/script.scm
scripts/convert-mudela.py
stepmake/bin/tar-docxx.sh
stepmake/stepmake/yodl-rules.make

index 2dc95271e89dd43f846d0b4ee92eb8678cd6a9d5..2ff73be073f7b6e7299333c524eab5b6a73b8b53 100644 (file)
@@ -1,3 +1,5 @@
+-*- text -*-
+
 [DRAFT]
 
 Keywords: midi notation music typesetting gnu font engraving 
@@ -50,9 +52,9 @@ WHAT'S NEW?
 
 * --safe option for the paranoid
 
-* Exact spacing for text (eg. Lyrics)
+* More elegant spacing.  Text is spaced exactly.
 
-* mutopia archive is now a separate effort
+* The Mutopia archive is now a separate effort
 
 * lots of bugfixes
 
index a1c21cfadb6742442e59c5c877a002af06d5612d..41a97dd997f9223ebd7c5684b34096b080afb587 100644 (file)
@@ -37,27 +37,33 @@ verb(
 )
 
 the last c being an octave higher than the first.  If you have to
-enter an interval that is greater than a fourth, you must specify
+enter an interval that is greater than a fifth, you must specify
 whether the pitch goes up, using post-quotes:
 
 verb(
     c c' % octave up
-    c g' % fourth up 
+    c g' % fifth up 
 )
 
 or down, using pre-quotes:
 
 verb(
     c c, % octave down
-    c f, % fourth down
+    c f, % fifth down
 )
 
 nsect(CONVERTING)
 
+COMMENT(Old? don't understand  -- jcn
 To convert a piece of music from the old absolute-octave notation to
-relative octaves, lilypond provides the bf(-Q, --find-fourths) feature
-to locate all big intervals in your music (sorry, fully automated convert 
-is too complex).
+)
+To convert a piece of music from absolute-octave notation to
+relative octaves, lilypond provides the bf(-Q, --find-old-relative)
+COMMENT(
+urg, name was changed to 'old-relative'?  It simply helps convert
+from absolute to relative, ie handy for mi2mu output?
+)
+feature to locate all big intervals in your music.
 
 First, edit the .ly file, add "\relative c" to all melodic chunks:
   
@@ -66,18 +72,18 @@ verb(
 )
 
 and remove all "\octave " commands.  See the example file 
-file(input/test/find-fourths.ly).
+file(input/test/find-fifths.ly).
 
-Use lily to find the fourths
+Use lily to find the fifths:
 
 verb(
-    lilypond -Q find-fourths.ly 2>&1 | tee fourths
+    lilypond -Q find-fifths.ly 2>&1 | tee fifths
     ...
-    find-fourths.ly:3:18: warning: Interval greater than fourth, relative: g':
+    find-fifths.ly:3:18: warning: Interval greater than fourth, relative: g':
                  c d c f c g
                              c b, c g, c f, c c'' c
 
-    find-fourths.ly:3:20: warning: Interval greater than fourth, relative: c,:
+    find-fifths.ly:3:20: warning: Interval greater than fourth, relative: c,:
                  c d c f c g c
                                b, c g, c f, c c'' c
 )
index c713e128af6ceed4b2d97f45c62c38c51461a76e..296fddc14336dfab6504639658b7d803e915f16f 100644 (file)
@@ -42,7 +42,7 @@
 
 \vskip5mm
 
-\listfont{\fetatwenty}{0}{123}
+\listfont{\fetatwenty}{0}{102}
 % urg
 \vskip-\charheight
 \listfont{\fetanumber}{48}{58}
index 5ff667defe380bd74f36ecc00462db7f5cdd33d3..4ba4489be80771a884f320c02fbe774fc3893493 100644 (file)
@@ -49,11 +49,19 @@ have beams, notes, chords, stems etc. within a \verb|\grace|
 section. Slurs that start within a grace section, but aren't ended are
 attached to the next normal note.  Grace notes have zero duration 
 
+
+
 \mudelafile{grace.ly}
 
 
 \section{Beams, slurs and other spanners}
 
+Beaming is generated automatically. Beams may cross bar lines. In that
+case, line breaks are forbidden.  Yet clef and key signatures are
+hidden just as with breakable bar lines.
+
+\mudelafile{beaming.ly}
+
 %Beams should not interfere with various items on the staff (amongst
 %others repeat signs)
 %
@@ -61,7 +69,7 @@ attached to the next normal note.  Grace notes have zero duration
 
 Beams can be typeset over fixed distance aligned staffs, beam
 beautification doesn't really work, but knees do. Beams should be
-behave well, whereever the switching point is.
+behave well, wherever the switching point is.
 
 \mudelafile{beam-interstaff.ly}
 
@@ -92,7 +100,7 @@ Unfolded behavior:
 
 \mudelafile{repeat-unfold.ly}
 
-Semi (un)folded behavior:
+Semi (un)folded behavior.  Voltas can start on non-barline moments.
 
 \mudelafile{repeat-semifold.ly}
 
index 8b1259b003f21d79313417efefff4dd741efdd06..8f0285e287776cfb17a10681a41718519731874e 100644 (file)
@@ -575,12 +575,13 @@ mudela()(
           c''-\open  c''-\flageolet  c''-\reverseturn 
           c''-\trill
           c''-\prall c''-\mordent c''-\prallprall  c''-\prallmordent
-          c''-\upprall c''-\downprall c''-\thumb }
+          c''-\upprall c''-\downprall c''-\thumb c''-\segno c''-\wheel}
   \context Lyrics \lyrics{  
         accent__ marcato__ staccatissimo__ fermata stopped__
         staccato__ tenuto__ upbow downbow__ lheel__ rheel__ ltoe
         rtoe__ turn__ open__ flageolet reverseturn__ trill__ prall__
-        mordent prallprall__ prallmordent__ uprall__ downprall thumb }
+        mordent prallprall__ prallmordent__ uprall__ downprall thumb 
+       segno wheel}
   >
   \paper{ linewidth = 5.875\in;          
           indent = 0.0;        }
@@ -1590,6 +1591,9 @@ above or below the clef instead of on the bar line.
 dit(code(barNumberScriptPadding)) Sets extra space between the bar
 number and the bar it labels.
 
+dit(code(barSize)) Specify the height of the bar lines if it should be
+different than the staff height.
+
 dit(code(markHangOnClef)) Set to 1 to cause marks to appear by clefs
 instead of by bar lines.
 
@@ -1608,6 +1612,9 @@ overridden, possibly many measures later.
 dit(code(staffLineLeading)) Specifies the distance (in points) between lines
 of the staff.  
 
+dit(code(numberOfStaffLines)) Specifies the number of staff lines. The
+default is 5. 
+
 dit(code(postBreakPadding)) Extra space in points to be added after
 the clef, time signature and key signature on the staff.
 
@@ -1936,8 +1943,6 @@ arithmetic_basicspace.  The smallest space is the one following the
 shortest note in the measure.  Typically arithmetic_basicspace is set
 to the width of a quarter note head.
 
-dit(code(barsize)) Specify height of bars.  This value may need to be
-adjusted if you change the number of lines in the staff.
 dit(code(beam_dir_algorithm)) Specify algorithm for determining
 whether beams go up or down.  It is real valued.  If set to 2.0 then
 majority selection is used.  If set to 3.0, then mean selection is
index f5499af35b14957803134b3cb284454a02ae0e2b..5a1bb4b6cdadcb9fc940af824d1fecb5445ca49c 100644 (file)
@@ -40,6 +40,8 @@ it()nemail(Alexandre Oliva)(oliva@dcc.unicamp.br),
     testing
 it()nemail(Franc,ois Pinard)(pinard@iro.umontreal.ca), 
     parts of Documentation/Vocab*, started internationalization stuff
+it()nemail(Glen Prideaux)(glenprideaux@iname.com),
+    minor bug fix to script used to generate doc++ documentation
 it()nemail(Jeffrey B. Reed)(daboys@austin.rr.com),
     Windows-NT support.
 it()Shay Rojanski
index 5dd12b7ffc5db32a7c02e0b6caf9e47ea992b2c7..0c9e54d424020845048a3774938f8ec58c8322ef 100644 (file)
@@ -243,7 +243,9 @@ nsect(CAVEATS)
 
 itemize(
 it()The -O2 option  triggers  bugs on various platforms (PowerPC, Alpha).
-    If you experience problems, you  should first try  turning off this.
+    If you experience problems, you  should first try  turning off
+    this.
+it() On PPC you need at least EGCS-1.1.2f.
 )
 
 nsect(EXAMPLE)
index 8d79a6566858b950730285cade86f3e0858fa040..7371d675a6e88b0fb5da3df58a829680fa4ce7f0 100644 (file)
@@ -53,6 +53,7 @@ showln -sf $LILYPOND_SOURCEDIR/lily/out/lilypond $prefix/bin/lilypond
 showln -sf $LILYPOND_SOURCEDIR/mi2mu/out/mi2mu $prefix/bin/mi2mu
 showln -sf $LILYPOND_SOURCEDIR/scripts/out/ly2dvi $prefix/bin/ly2dvi
 showln -sf $LILYPOND_SOURCEDIR/scripts/out/mudela-book $prefix/bin/mudela-book
+showln -sf $LILYPOND_SOURCEDIR/buildscripts/out/genheader $prefix/bin/genheader
 chmod 755 $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh
 showln -sf $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh $prefix/bin/ps-to-gifs
 
index 10f38ec0bfdb2bc971f932d478a76b6be29e6930..d6349588aa03324d0c81e3a14573f9abf012e570 100644 (file)
@@ -185,6 +185,23 @@ public:
     }
 
 
+  
+  T& boundary (int dir, int idx)
+    {
+      assert (dir);
+      if (dir == 1)
+       return top (idx);
+      else
+       return elem_ref (idx);
+    }
+  T boundary (int dir, int idx) const
+    {
+      assert (dir);
+      if (dir == 1)
+       return top (idx);
+      else
+       return elem (idx);
+    }
   void swap (int i,int j) 
     {
       T t ((*this)[i]);
index be8e95d680b0bb141abf754f16a4866b28c88545..8b876ce85d2bca4e43ef1841ecec755f28f4d68e 100644 (file)
@@ -25,8 +25,10 @@ arrcpy (T*dest, T*src, int count)
 #ifdef __powerpc__
     {
       /*
-       urg: wierd egcs-1.1.2 bug on ppc
+       urg: wierd egcs-1.1.2-12c (stock LinuxPPC R5) bug on ppc
        bug report filed
+       fixed in egcs-1.1.2-12f
+       ftp://dev.linuxppc.org/users/fsirl/R5/RPMS/ppc/ 
       */
       *dest = *src;
       dest++, src++;
index 8fd58acb7f799b763323b6d94c6808dd91890a4f..266b9ce51c7a5017181f42a8954abffb6e3409fd 100644 (file)
@@ -106,6 +106,10 @@ public:
       head_ =0;
       nil_pointer_address_ = &head_;
     }
+  void append (T *c)
+    {
+      append (new Cons<T> (c,0));
+    }
   void append (Cons<T> *c)
     {
       assert (!c->next_);
@@ -124,6 +128,24 @@ public:
 
       return ::remove_cons (pp);
     }
+
+  /// junk everything after the  first I elements.
+  void truncate (int i)
+    {
+      Cons<T> **p  = &head_;
+      for (; *p && i;  p = &((*p)->next_))
+       {
+         i--;
+       }
+
+      if (*p)
+       {
+         delete *p;
+         *p = 0;
+       }
+      nil_pointer_address_ = p;
+    }
+
   void junk ()
     {
       delete head_;
index 99c37f13aae6bfe20696c430f256970cfeb5b17f..93ba0bc43eacd3b061e85e95227e026e1af86227 100644 (file)
@@ -4,7 +4,7 @@ composer = "Johann Christoph Faber";
 piece = "1.  Overture";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 global=\notes{
        \time 2/2;
diff --git a/input/bugs/semirepeat.ly b/input/bugs/semirepeat.ly
new file mode 100644 (file)
index 0000000..70928d8
--- /dev/null
@@ -0,0 +1,5 @@
+\score { \notes\context Staff\relative c'' {
+
+% less alts than body
+\repeat semi 4 { c^"4$\\times$ 2alt" d } \alternative { e f } \repeat "semi" 2 c4
+}}
index 47fb626f7cab34a7ae7bdabc9ad8b32bd836d836..ddd2903abc9eb4499a7bbea60fe34d0c5552ae93 100644 (file)
@@ -1,9 +1,9 @@
 \score {
-    \notes \transpose c''{ c\longa*1/4 c\breve*1/2 c1 c2 c4 c8 c16 c32 c64 }
+    \notes \transpose c'' \context Staff { c\longa*1/4 c\breve*1/2 c1 c2 c4 c8 c16 c32 c64 }
     \paper {
      \translator {
        \StaffContext
-       \remove "Staff_symbol_engraver";
+      % \remove "Staff_symbol_engraver";
         \remove "Time_signature_engraver";
         \remove "Bar_engraver";
         \remove "Clef_engraver";
index a25db83a26cf2c8c07bcf1e8832672ba5f516846..a3856eb93455856818068a392144868936de0eb6 100644 (file)
@@ -1,5 +1,7 @@
 
-
+%
+% Jan ->  dit is Auto_B_E bug, niet grouping bug.
+% 
 
 \score{
   \notes{ \time 13/8;
index 950f45ab576a1e91cb3caf5b16408e4459d5f5c0..753fd8facaf56ccd1f8fbc66f5595f0b67da5c79 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 one = \notes\relative c{
        c'' d e f
index b08f6f3176518758946f0a91e26af9bffd85dae3..dfd40560bb255f1e2662fc49b429407c66df6acb 100644 (file)
@@ -57,4 +57,4 @@ of a certain tune (Jazz, Real Book, for example), like
        }
 }
 
-\version "1.0.21";
+\version "1.1.52";
index 66e95fd41b4d83a08e855e7a9c14d6f398731692..5a12cc0bb032d999bcfbe9a3a83c83806c33e6ad 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 
 blah = \notes {
index e88af13ef3b9908bb204acbd19336606780c5238..9e06348b706d69bdaef5a78808bfb5cbd4c2b095 100644 (file)
@@ -10,7 +10,7 @@ copyright =    "public domain";
 Tested Features: example file with comments
 
 %}
-\version "1.0.21";
+\version "1.1.52";
 
 
 % the % is a comment.
index a0f60f576b9bfd6ee44d456c24aaa822606fa4ff..b07f963591089673ed378839ca52f816d05ad70d 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 part = \notes {
        c-1 c c c
        r1*3
index 514fee0325fe4d099fe3b0ad505721d456d55d83..905715b6c92abf340544ec57cee64ad00f956a61 100644 (file)
@@ -28,7 +28,7 @@
 % \lbheel \lbheel \lfheel \lftoe
 % \rbheel \rbtoe \rfheel \rftoe
 
-\version "1.0.21";
+\version "1.1.52";
 
 \score{
                \notes {
index 1742c1286ece4cfcaba82319128d48ff838b86b1..214795e22d0f853d34a97a648d6adf6ed6a090e0 100644 (file)
@@ -23,7 +23,7 @@
    * organ staff...
 %}
 
-\version "1.0.21";
+\version "1.1.52";
 
 
 
index b0de5a90bd717a15b2dee4cc1a8453791bfdf04f..53198954a307ee7a5e29456923bcbdefba10c1ba 100644 (file)
@@ -7,7 +7,7 @@ TestedFeatures =         "multiple meters, beaming, unsynced bars, userdefd engravers";
 
 
 
-\version "1.0.21";
+\version "1.1.52";
 
 ritme = \notes\transpose c'' {
        \time  4/4;
@@ -19,7 +19,7 @@ ritme = \notes\transpose c'' {
        \time   5/16;
 
        % divide measure in 5 equal parts. Usually it 2+3 or 3+2
-       \grouping  16*5 ;       
+               
        [c8 c16 c8 ]                            |       % watch THIS!
         \times 5/4 { [ c16 c16 c16 c16] } |
        \time   2/8;
index 18ae6a98445218c2b21dbe1181d8e4e8dd4df230..a4ea103048c31a1a2a8a5471315e2a3d95697a27 100644 (file)
@@ -16,7 +16,7 @@ copyright =    "public domain";
 % scales with accents.
 %
 
-\version "1.0.21";
+\version "1.1.52";
 blah =         \notes {
                \time 6/8;      
 \transpose c {
index a78e1f8c250fab49e716feeead245d263ae36c7a..92d4a624af5b40a405f74a734a1610cc8f11939e 100644 (file)
@@ -1,5 +1,5 @@
        
-\version "1.0.21";
+\version "1.1.52";
 
 
 blah =         \notes{ \transpose c'' {
index 49a0e4f3c9b4170b0b768efe0c2e120053d11bf0..ef7324b2ca17714f13b6d0181a5512e7831195a5 100644 (file)
@@ -118,4 +118,4 @@ global = \notes {
 }
 
 
-\version "1.0.21";
+\version "1.1.52";
index 361ec08752ed4e26924cf4e0a6a72df9a1a40f27..9d72e6a90afbe7b2c8a98b42a786a350fa768587 100644 (file)
@@ -121,4 +121,4 @@ xxx\break
        }
 }
 
-\version "1.0.21"; 
+\version "1.1.52"; 
diff --git a/input/test/ass-extra-voice.ly b/input/test/ass-extra-voice.ly
new file mode 100644 (file)
index 0000000..c7c57ba
--- /dev/null
@@ -0,0 +1,94 @@
+global = \notes {
+       \key a \minor;
+       \time 6/4;
+%      \skip 1.*34;
+%      \bar ".|";
+}
+
+melody = \notes\relative c''{
+       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
+}
+
+basloopje = \notes\relative c{
+       d,8(    a' d f a d f d a f d    )a
+}
+
+accompany = \notes \relative c{
+       \notes\relative c \basloopje
+       \notes\relative c \basloopje
+       \notes\relative c \basloopje
+       \notes\relative c \basloopje
+}
+
+\score{
+       \notes{
+               \context AutoSwitchGrandStaff \relative c <
+                       \global
+                       \context Staff=upper { 
+                               \context Voice=foo
+                               \property Voice.verticalDirection = 1
+                               \property Voice.scriptVerticalDirection = 1
+                               \melody 
+                       }
+                       \context AutoSwitchContext \accompany
+               >
+       }
+
+       \paper {
+               gourlay_maxmeasures = 4.;
+               indent = 8.\mm;
+               textheight = 295.\mm;
+
+               % no slur damping
+               slur_slope_damping = 100.0;
+
+               \translator{ 
+                       \StaffContext
+                       % don't auto-generate bars: not a good idea: -> no breakpoints
+                       % barAuto = "0";
+                       % urg defaultBarType = "";
+                       defaultBarType = "empty";
+                       \remove "Time_signature_engraver";
+               }
+               \translator{ 
+                       \GraceContext
+                       \remove "Local_key_engraver";
+               }
+               \translator { 
+                       \ScoreContext
+                       \accepts AutoSwitchGrandStaff;
+               }
+               \translator{
+                       \type "Engraver_group_engraver";
+                       \name AutoSwitchGrandStaff;
+                       \consists "Span_bar_engraver";
+                       \consists "Vertical_align_engraver";
+                       \consists "Piano_bar_engraver";
+                       \consistsend "Axis_group_engraver";
+                       minVerticalAlign = 2.*\staffheight;
+                       maxVerticalAlign = 2.*\staffheight;     
+                       switcherName = "Voice";
+                       acceptorName = "Thread";
+                       staffContextName = "Staff";
+
+                       \accepts "AutoSwitchContext";
+                       \accepts "Staff";
+                       slurVerticalDirection = 1;
+                       verticalDirection = -1;
+                       beamAutoEnd = "1/2";
+               }
+               \translator {
+                       \type "Engraver_group_engraver";
+                       \name "AutoSwitchContext";
+                       \consists "Staff_switching_translator";
+               }
+       }
+% broken 1.1.51.hwn2
+%      \midi {
+%              \tempo 4 = 54;
+%      }
+}
+
index 627447148ddf1d2cd852b94a8c81bb7377d4d83c..ddf2b840be69aea467d530fd238711c55e04a6f4 100644 (file)
@@ -35,4 +35,4 @@
 
 }}
 
-\version "1.0.21"; 
+\version "1.1.52"; 
index 0eebd74cab93419b2e35e73ca2060209d5087c80..640fb0df69da2ead542b3e6a431f954b025b7dda 100644 (file)
@@ -1,5 +1,5 @@
 
-\version "1.0.21";
+\version "1.1.52";
 
 onestaff = \context Staff = foo\notes  {
        \property Staff.instr = instr
index d9553639b5bdebb642d1a03a414366d611f58cb8..6362e8c1f4574bdf508c9fa3875e663081dad097 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 \score{
        \notes\transpose c'{
index 41e0adc66966dd4381daf0327d3157b49ad46a8e..287ff990f3e5e4b0d0e923cffcfd727465d568b0 100644 (file)
@@ -30,4 +30,4 @@
        }
 }
 
-\version "1.0.21"; 
+\version "1.1.52"; 
index 342b553526ae819f0592b0566ac74e86483af969..a3b35770fb2698d942bdebef95d9a0b2ccca73cb 100644 (file)
@@ -21,4 +21,4 @@
        }
 }
 
-\version "1.0.21"; 
+\version "1.1.52"; 
index 6d2abe6cb4511747b5fc2e5cf2eb88bfe3d7cb0f..ad0f619d21ccd133c76b8599bd8cca4e9a86df53 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 \score{
        \notes\transpose c''{
diff --git a/input/test/beaming.ly b/input/test/beaming.ly
new file mode 100644 (file)
index 0000000..cba2132
--- /dev/null
@@ -0,0 +1,20 @@
+
+\score { \context Staff \notes \relative c''  {
+       [c8. c16]
+       [c8. c16 c8.  c16]
+       [c16 c8.] |
+       [c8. c16  c16  c8.]
+       [c8. c32  c32]
+       [c8 c8] |
+       [c16 c16]
+       [c32 c32]
+       [c64 c64]       
+       c32
+       [c8 c,4 c'8] % should warn here!
+       [c8 c c] c8 % over barline
+       [c16 c8 c16]
+       [c32 c16 c16 c16 c32]
+       [c32 c16 c8 c32]                 % hmm ?
+       
+               }}
+
index 819c9cdffea5ec2da5c33e780625d787e2ea70af..fa773dd69c866b6b82db827c5f7197b56a11e174 100644 (file)
@@ -6,7 +6,7 @@ copyright =      "PD";
 
 TestedFeatures =        "beams and beamflags";
 }
-\version "1.0.21";
+\version "1.1.52";
 
 \score{
        <
index 9cc99442af18eb1adcadb638ed08325e756be4ba..541a817623e70f1b19f8f010447e51ecfdd72795 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 \score {
   \notes \relative c' {
index 7c873500968b0584aa06240177441a73230fb899..d7403184e45540fa857ced8f348149145e3f1de6 100644 (file)
@@ -5,7 +5,7 @@ TestedFeatures =         "This file tests Feta embedded slurs" +
         "(Feta definitively is not an abbreviation of Font-En-TjA)";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 shortlong = \notes{
        c4()c( c c  |
index e2d63ff9c21a1abff329cac6b2377e89792c5751..0c9b3f6f985a6fba2197a706fb43a83d870fab31 100644 (file)
@@ -22,4 +22,4 @@ inversions = \notes\transpose c''\chords{
        >
 }
 
-\version "1.0.21"; 
+\version "1.1.52"; 
index e31e92a57e60c5f99f4acd56463246c360efce06..907782915f533ecc9ae523775490fbd026b31ee2 100644 (file)
@@ -41,4 +41,4 @@ tab = \notes\transpose c'''\chords{
 
 }
 
-\version "1.0.21"; 
+\version "1.1.52"; 
index dda0de434d766c7077f305ab8c926d216a1dcf30..44e92b17a7a7f084888df2277b99a08d7ef4ba90 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 %{
 Would this be acceptable/good enough/convenient for entry?
index de74c39138e75b0411d067463e89070ab3798c13..cd97e9815fa3de6df7462126d76834112ae754e8 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 \score {
        \notes{ 
index 9c8e46f3d8c7d045b76fabf7e9f6bbd50c62e9aa..1e8796cc5fd31080063e48ce515b8f70953006a4 100644 (file)
@@ -5,7 +5,7 @@ enteredby =      "HWN,JCN";
 copyright =     "public domain";
 Tested =        "test the Collision resolution ";
 }
-\version "1.0.21";
+\version "1.1.52";
 
 twovoice = \context Staff \notes < 
        \context Voice=i { \stemdown c4 d e f g2~  g4 a [c8 d e f] c2| }
index 664d0bc54d08f08beba4c165da5518e00c5ba4d4..2997c12deb4927e73c1649936d769b078b085cf7 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 
 \score {
index f0105edf9047a181abe10d645056494a558f17c6..3579f8d3d6839536931a9fbc319f8e04c27e7ed0 100644 (file)
@@ -7,7 +7,7 @@ TestedFeatures = "This file tests silly line shapes";
 
 \include "paper20.ly"
 
-\version "1.0.21";
+\version "1.1.52";
 
 oden = \lyrics{ 
        O8 |
index 1504b5bc12a8f09cd405ce5797a7f2cac453a92e..5050baddbc80cdd6b878c00564bf72599063b956 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 \score{
        \notes{
index 643acb4fcd47cc8c1abcb695a118e34a4dcb48fc..45c2ae105f1549a24609d2d02cb8eb71d01e4f32 100644 (file)
@@ -5,4 +5,4 @@
        >
 }
 
-\version "1.0.21"; 
+\version "1.1.52"; 
index b12ab289f54a8d546f28c2cac6d1461bb02aef32..98269b0aea43763811e63d49cbbd126d118d0b36 100644 (file)
@@ -42,4 +42,4 @@ extra-staff.ly:
 }
 
 
-\version "1.0.21"; 
+\version "1.1.52"; 
diff --git a/input/test/find-fifths.ly b/input/test/find-fifths.ly
new file mode 100644 (file)
index 0000000..8d88c31
--- /dev/null
@@ -0,0 +1,10 @@
+\version "1.0.21";
+
+\score{
+       \notes \relative c {
+             c d c f c g c b, c g, c f, c c'' c
+% run with find-quarts should suggest:
+%            c d c f c g' c, b c g c f, c' c'' c,,
+       }
+}
+
index ad8d70d77c0e6a49009a3c3326f6cf049f384ac8..65d91f885b1db7e51e6fe405a741601fd3068f20 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 FontBody=      \notes\transpose c''{ 
                \bar "|:";
@@ -14,7 +14,7 @@ FontBody=     \notes\transpose c''{
                a\mf_\fermata a\f-\stopped a\ff-\open a\fff^\trill|
                a\fp-\reverseturn a4.\sf a4.\sfz |  a4\fz % a\rf
                [c8-\prall c-\mordent] [a'-\prallmordent a'-\prallprall]
-               [c8-\upprall a'8-\downprall] [a' c] |
+               [c8-\upprall a'8-\downprall] [a'-\segno c-\wheel] |
                [c \< d e f] [as' ges' f' e']
                [cis' dis' c' des'] [cisis' disis' \! ceses' deses'] |
                \clef "bass";
index dd65dc0756a14dd81a2d64c920f1de8377cf7642..95bfcc58401b62571ac2192ce84094a7d165fa65 100644 (file)
@@ -7,7 +7,7 @@ description = "This file tests the Feta music font";
 % "(Feta definitively is not an abbreviation of Font-En-TjA)";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "font-body.ly"
 \score{
index 6701a291be5c1d0d39589acebd02750fe0b8619e..f8b65b215efec9376afb79914907ddea876cd267 100644 (file)
@@ -7,7 +7,7 @@ description = "This file tests the Feta music font";
 % "(Feta definitively is not an abbreviation of Font-En-TjA)";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 \include "paper16.ly"
 \include "font-body.ly"
 
index d342c427eafab2c10c574c5d1bf2a660c2b4b6bc..2f5e368d45b2a212a39c2ed8f7d7d604b2183ecd 100644 (file)
@@ -17,5 +17,5 @@ TestedFeatures =
            gourlay_maxmeasures =5.;
        }
 }
-\version "1.0.21"; 
+\version "1.1.52"; 
 
index f7321e04a4ef93888a52d117b9422d3dfb1b71ff..0975b2d9783999abc73047afae7fd46b6427670e 100644 (file)
@@ -4,7 +4,7 @@ copyright =      "PD";
 TestedFeatures =        "This file tests some nasty Gourlay spacings";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 %{
 
index 58a1366b38ee05e21eaa2a39b8c13d098cb3662f..d337bc7e366f22fe573bf62511b90a4d67675cd9 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 toeter_i = \notes\relative c <{
                \property Staff.instrument = "Toeters"
index 73bd6aec3bd6d9c1c9635b2e835ff10da9725a93..d2057b2d7786def493734593c52ec7aed5208bdd 100644 (file)
@@ -6,7 +6,7 @@
    /Mats B
 %}
 
-\version "1.0.21";
+\version "1.1.52";
 
 incipit = \notes\relative c'{
   <b1 fis' b d>
index 0f0c3c7ec1e53f74e43bb989d392db4d0cf8ff11..8dc730e6b38e30c7b147d66d315e9367d71aa3b9 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 %{
 test key itemv breaking
index 37de7fa18d696e7b5c46ef5eb69c1a05b4f002fa..d854ee539d3e14a8d9444d9527303f7b5008f9c8 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 \score{
        \notes\relative c'{
                [c16 \stemdown c'' \stemboth c,, d]
index dae0e41dddecbe2a264b93f6662f7d38d778f00f..ab478a9b21b7c0b6d304e41731b15a879cb736d4 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 global = \notes {
   s1 | \mark "A";
index 90f508f2fb8a15fbee83f589f52ae4d9c29e657a..804aca9c579e8a43737d274818d26a44a64985c2 100644 (file)
@@ -11,5 +11,5 @@ bla = \notes {
        >
        \paper { Gourlay_maxmeaures = 2.; }
 }
-\version "1.0.21"; 
+\version "1.1.52"; 
 
index aaf3fd8c68a51350dbf777eb4b2a240f43e3ca3e..e05b218f4ff68b4f1d07a63f5612b8734339bbd2 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 voice_one = \notes\transpose c''{  \stemup
        R1 * 2 | f'4-. r r2 | R1 * 3 |
index 3db8223a4bc75849aa1a723888d5300a4b00b811..abc1e5fbd457c7d08cd1ef5bf7e540963d9e827b 100644 (file)
@@ -26,4 +26,4 @@ c4 c2 c8  c16 c16  c1
        
     }
 }
-\version "1.0.21"; 
+\version "1.1.52"; 
index b8652f05821f642f150e28433eec7f6cb071a75c..5b26d4c1c2f5379b50fd90a547e8ea30dcb3de0f 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 \score{
        \notes \transpose c''{
index 4794afadc7f8b869f314af2898b3b0b1cb15bfd1..92a96187cf4a78003f22bff7b6788cc01c9ea488 100644 (file)
@@ -1,2 +1,2 @@
 
-c' c c \property Staff . numberOfStaffLines = 3
+c' c c c | g' g g g \property Staff . numberOfStaffLines = 3
index 2887bd11eca85208e97e30602273d71a6aa403f9..f055cdd28187d5cd87c981e2670cba2278d4b020 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 m = \notes \relative c''{
 c1 | c2 c | c c | c c | c c | c c | c c | c c | 
index 059cc24019f69ac04bcc30f5e83d67cb1e362851..1057776aff971038033a0c58bcebdec3d3db3347 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 \score {
 
diff --git a/input/test/perform-tie.fly b/input/test/perform-tie.fly
new file mode 100644 (file)
index 0000000..484f136
--- /dev/null
@@ -0,0 +1,2 @@
+c8 c c ~ c c c c ~ c ~ c ~ c ~ c c c
+%\grace { d16 c16 d16 } c8
diff --git a/input/test/repeatbar.fly b/input/test/repeatbar.fly
new file mode 100644 (file)
index 0000000..0829b73
--- /dev/null
@@ -0,0 +1,3 @@
+c'' d e f | \repetitions1*3 | 
+\time 3/4;
+g4 a b | R2.*2 |
index b97610a4ca98023d68508253207ea1c186e826d8..d5e5e9bc5ba5f68f2e9fd65e7d42619bbede121b 100644 (file)
@@ -38,4 +38,4 @@ restsII = \context Staff \notes {
        }
 }      
 
-\version "1.0.21"; 
+\version "1.1.52"; 
diff --git a/input/test/rhythmic.ly b/input/test/rhythmic.ly
new file mode 100644 (file)
index 0000000..9670f5b
--- /dev/null
@@ -0,0 +1,8 @@
+\score{
+  \context RhythmicStaff {
+    \notes\relative c''{ 
+      \time 4/4; 
+      r4 r g2 | r4 g r2 | g1:32 | r1 |
+    }
+  }
+}
diff --git a/input/test/scales.fly b/input/test/scales.fly
new file mode 100644 (file)
index 0000000..d53b627
--- /dev/null
@@ -0,0 +1,102 @@
+% sharp-major 
+% c g d a e b fis cis
+
+\key c;
+c' d e f g a b c
+
+\key g;
+g a b c d e fis g
+
+\key d;
+d, e fis g a b cis d
+
+\key a;
+a b cis d e fis gis a
+
+\key e;
+e, fis gis a b cis dis e
+
+\key b;
+b cis dis e fis gis ais b
+
+\key fis;
+fis, gis ais b cis dis eis fis
+
+\key cis;
+cis, dis eis fis gis ais bis cis
+
+% sharp-minor
+% a e b fis cis gis dis ais
+
+\key a\minor;
+a b c d e f gis a
+
+\key e\minor;
+e, fis g a b c dis e
+
+\key b\minor;
+b cis d e fis g ais b
+
+\key fis\minor;
+fis, gis a b cis d eis fis
+
+\key cis\minor;
+cis, dis e fis gis a bis cis
+
+\key gis\minor;
+gis ais b cis dis e fisis gis
+
+\key dis\minor;
+dis, eis fis gis ais b cisis dis
+
+\key ais\minor;
+ais bis cis dis eis fis gisis ais
+
+% flat-major 
+% c f bes es as des ges ces
+
+\key f;
+f, g a bes c d e f
+
+\key bes;
+bes, c d es f g a bes
+
+\key es;
+es,, f g as bes c d es 
+
+\key as;
+as, bes c des es f g as
+
+\key des;
+des,, es f ges as bes c des
+
+\key ges;
+ges, as bes ces des es f ges
+
+\key ces;
+ces,, des es fes ges as bes ces
+
+% flat-minor 
+% a d g c f bes es as
+
+\key d\minor;
+d, e f g a bes cis d 
+
+\key g\minor;
+g, a bes c d es fis g
+
+\key c\minor;
+c,, d es f g as b c
+
+\key f\minor;
+f, g as bes c des e f
+
+\key bes\minor;
+bes, c des es f ges a bes
+
+\key es\minor;
+es,, f ges as bes ces d es
+
+\key as\minor;
+as, bes ces des es fes g as
+
index 4d5ab9466f308d61346db4435461badb852efbbc..4e155e56323c76d41cc80b2456940cbcf0695a4a 100644 (file)
@@ -1,7 +1,7 @@
 
 
 
-\version "1.0.21";
+\version "1.1.52";
 
 onestaff =     \context Staff = foo\notes  {
                \property Staff.instr = instr
index d74f328c4bb6910254c820839741236dc9c09bf1..b5ae077078f62d5ecb3c4a7535106cbd73a34776 100644 (file)
@@ -5,7 +5,7 @@ TestedFeatures =         "This file tests Feta embedded slurs" +
         "(Feta definitively is not an abbreviation of Font-En-TjA)";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 shortlong = \notes{
        c4()c( c c  |
index 4814daaac70109d51fe1d2cab4c973fd14c1b4ef..ff28f8d77710c66a5a0bc7a875e580e00df4b74f 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 % bug
 % excentric slur can't handle this ...
index 313d75a777de75aa8dea2d233290cb0c9117b6d1..6b5619b7c83316eefedb4f07cb58fa152b26ddc3 100644 (file)
@@ -1,5 +1,5 @@
 % test damping
-\version "1.0.21";
+\version "1.1.52";
 
 \score{
        \notes\relative c'{
index 90d03844c9c3bb1ed5c27324300b0eb87fbb948a..2d176e5565e14c7d27d14bbc5fc625796f30a4f5 100644 (file)
@@ -38,4 +38,4 @@
        }
 }
 
-\version "1.0.21"; 
+\version "1.1.52"; 
index 13abcdd1a138ecf00ad7876900e2bc3227933c33..ccd6dd0b3afc1cda24a4d1acb4180b317794953d 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 % urg, the direction of the slur gets swapped!
 \score{
index 2bd66265724c512b9bb253bc5613f5c10411d873..0cc8f2f06c49e3c6a19a42b1cc31d90dadf1a5d0 100644 (file)
@@ -1,5 +1,5 @@
 
-\version "1.0.21";
+\version "1.1.52";
 
 \score{
        \notes\transpose c'{
index 9f0f43243cc85cabff55a25d107f57ca56f954d3..3977dc81e1d14905dd00efd78c5c18c70f59af87 100644 (file)
@@ -33,4 +33,4 @@ source = "Petits Preludes et Fugues.  Urtext. Editions Henry Lemoine, Paris.";
 }
 }
 
-\version "1.0.21"; 
+\version "1.1.52"; 
index cecb18c9d8029b486cbfe134fddeadbd66c71cf9..de7accdd5a192a029b83a93b49201f68d5a1c206 100644 (file)
@@ -6,7 +6,7 @@ copyright =      "public domain";
 TestedFeatures =        "This file tests various spacings";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 multipart = \notes \relative c'{ 
     \context StaffGroup < 
index 37d13ef68a32b85d911b5ce95508e35fdffec98f..ce5d89b3e1cb35b5735612f283fc3dddc7682c04 100644 (file)
@@ -1,5 +1,5 @@
 
-\version "1.0.21";
+\version "1.1.52";
 nt = \notes { c1 \break c1 c1 } 
 stuff = \notes \relative c'' <
   \context Staff = stone  { \nt }
index ca8e9dea33f5b663eed90fd4836ad253b00f128c..fbf54a16f416ee229a833b782ab86226f485d731 100644 (file)
@@ -1,6 +1,6 @@
 
        
-\version "1.0.21";
+\version "1.1.52";
 
 \score {
 
index ff92e5b0b3444ab638fbc9b649ca492caacbcd00..3c1a5fe44e67b3257ea093b4d1ed3074c173a521 100644 (file)
@@ -18,4 +18,4 @@
 }
 
 
-\version "1.0.21"; 
+\version "1.1.52"; 
index adf8d50c266deb1a94ccb65aa726820720c49603..40db541ff0e4b694a509782bfcfcc9c0fb0d967e 100644 (file)
@@ -14,4 +14,4 @@
 >
 \paper { linewidth = -1.; }
 }
-\version "1.0.21"; 
+\version "1.1.52"; 
index 6e76092aad2ef2b5d73aa8029837d38fdbe65e18..bc59e465041777821b4cc0a5cf9eed3aa49e0f1c 100644 (file)
@@ -1,5 +1,5 @@
 
-\version "1.0.21";
+\version "1.1.52";
 \score{
        \notes \transpose c'''{
                \stemup
index a728939ef8afee5311fd5fea92f757a46a099a87..274405cbb6d998c9bd85ff25e059e438fd72fe33 100644 (file)
@@ -8,7 +8,7 @@ of beams";
        
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 beamintervals = \notes{
                \time 7/4;
index 6a0dc872ea0ab1b6782258c698b497df1d532770..7b819215e49e1b1d95db869240179d3ac65f58c5 100644 (file)
@@ -7,7 +7,7 @@ enteredby =     "Maarten Storm";
 instrument=    "Violoncello";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 % this is an example of extreme dynamics
 
index f0cc24574e10d9ba52c58a3e6cbc82709cf27b8f..8cbeaaa7384a3dd5215aff27f70f7947b39e5ef6 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 $somewhat_long = \lyrics{
        \property Lyrics . textStyle = "roman" 
index 57dd37d8213bdbfd06a8a2dab188720ad2210e75..ae3016d156213d65a9d4cabc774b942acfcd6740 100644 (file)
@@ -7,7 +7,7 @@
 % the thumb-script is used in cello music to indicate a note that should
 % be played with your thumb. 
 
-\version "1.0.21";
+\version "1.1.52";
 
 \score { \notes \relative c'' {
                [<a8_\thumb a'8-3(> <)b_\thumb b'-3>
index 8df3c3c5a3cff7c6b6cf824fbabe28402eb47bdf..f52151068fa827da58dd78e3f47f5aa6be0f9ca4 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 
 %  middle tie is wrong
index 61f4c512a3610a375e77220d2dd495c88e24d71a..90e9389b40fecac273a492034aaae5b1321bbe78 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 tie = \notes\transpose c''{
 
index 6058ef4d0acf1e0784f85716342d5949c314b14a..05ee23883dcc903b5b85cf373b582684d6309dc8 100644 (file)
@@ -10,7 +10,7 @@ source =      "urtext";
 instrument=    "Instrument";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \score{
        \notes
index 72efd42818f1b20d520f7b173353db8681f1c20f..be8fca2c86186ee4e8b5debd96cb72a9d5fd990b 100644 (file)
@@ -22,7 +22,7 @@ copyright =    "public domain";
 }
 
 
-\version "1.0.21";
+\version "1.1.52";
 
 vOne = \notes \relative c''{
         \clef"violin";
index 06b9dc8458ded388de7bc55fe753d91675f087f4..6a0e13cb0920d3bfd75a2b022d1f8565e46d3a11 100644 (file)
@@ -8,4 +8,4 @@
                 }
 }
 
-\version "1.0.21"; 
+\version "1.1.52"; 
index 8295ae22efb37a9bd7003f8a1875dd1ab34d0b60..b3de0549527a7687570abee12167b2b9fc29b445 100644 (file)
@@ -1,5 +1,5 @@
 
-\version "1.0.21";
+\version "1.1.52";
 
 \score {
 \notes <
index f6b98c107284d0e034163811eebe37000fe6aabe..59d80247613edd3527f226df17edb498fc36adf6 100644 (file)
@@ -15,4 +15,4 @@
        }
 }
 
-\version "1.0.21"; 
+\version "1.1.52"; 
index 5b38a572b050460a02f4d1d3dcf040b473ed7aed..d7111dac2070cb32aa45b4c4670c219f57d86c1b 100644 (file)
@@ -21,4 +21,4 @@ What's supposed to be demonstrated here?
        }
 }
 
-\version "1.0.21"; 
+\version "1.1.52"; 
index e513f364cfe1d8f54b4e58b82a600474676eeb7d..60c612bd6541860f0e2449efeaef92ff3c78a16c 100644 (file)
@@ -5,7 +5,7 @@ TestedFeatures =         "This file tests trills" +
         "(Feta definitively is not an abbreviation of Font-En-TjA)";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \score{
        \notes{ 
index c7fb240f10f0ba97c988c035d12471436befcc69..cb188cc04cda7c1386450fa7f422b4ce09f8da87 100644 (file)
@@ -7,11 +7,7 @@ enteredby =     "HWN, chords by Johan Vromans";
 copyright =     "public domain";
 }
 
-%{
-Tested Features                lyrics and chords
-%}
-
-\version "1.0.21";
+\version "1.1.52";
 
 melodie = \notes\relative c'' {
         \clef "violin";
@@ -40,7 +36,7 @@ acc = \chords {
 text = \lyrics{ 
         \property Lyrics . textStyle =  "italic"
 
-        Ah!4 vous dir- ai_- je ma man2
+        Ah!4 vous dir- ai- je ma man2
         Ce4 qui cau- se mon tour- ment2
         Pa-4 pa veut que je rai- so- nne
         Comme4 un- e grand- e per- so- nne
index b791a6d665df5f95ea2b9fd8aea4ef5aca9244c7..1f5c15fa1b59ecdc90c9efe36afa56e915f7dfdc 100644 (file)
@@ -19,7 +19,7 @@ traditional song in various languages.
 Tested Features: lyrics, interleaving lyrics and staffs, repeats
 %}
 
-\version "1.0.21";
+\version "1.1.52";
 
 melody = \notes \relative c'' {
        \clef violin;
@@ -53,11 +53,11 @@ global = \notes {
 
 tekst = \lyrics{ 
        Al-4 tijd is Kort- jak- je ziek,2
-       midden4 in_de week maar s,_zon- dags niet.2
-       s,_Zon-4 dags gaat ze naar de kerk,2
+       midden4 "in de" week maar "'s zon-" dags niet.2
+       "'s Zon-"4 dags gaat ze naar de kerk,2
        met4 een boek vol zil- ver werk.2
        Al-4 tijd is Kort- jak- je ziek,2
-       midden8 _8  in_de8 _8 week4 maar s,_zon- dags niet.2
+       mid-8 den  in de week4 maar "'s zon-" dags niet.2
 }
 
 
@@ -69,7 +69,7 @@ tekst. Mogen wij ook af en toe ergens op afgeven?
 hegedraagjetekst = \lyrics{ 
        Al-4 tijd zuigt Bill Gates mijn piek,2
        "\TeX"4 is slecht- ser dan mu- ziek.2
-       s,_Zon-4 dags gaat het door een raam,2
+       "'s Zon-"4 dags gaat het door een raam,2
        Weet4 dat ik me er- voor schaam.2
        Al-4 tijd zuigt Bill Gates mijn piek,2
        "\TeX"4 is slecht- ser dan mu- ziek.2
@@ -78,7 +78,7 @@ hegedraagjetekst = \lyrics{
 texte = \lyrics{ 
        \property Lyrics . textStyle" =  "italic" 
 %      \property Lyrics . textStyle" =  "roman" 
-       Ah!4 vous dir- ai_- je ma- man2
+       Ah!4 vous dir- ai- je ma- man2
        Ce4 qui cau- se mon tour- ment2
        Pa-4 pa veut que je rai- son- ne
        Comm' u- ne gran- de per- son- ne
@@ -109,7 +109,7 @@ textii = \lyrics{
 textiii = \lyrics{
        Then4 the tra- veler in the dark2
        Thanks4 you for your ti- ny spark;2
-       He_could4 not see which way to go,2
+       He4 could not see which way8 to8 go,2
        If4 you did not twin- kle so.2
        Twin-4 kle, twin- kle, lit- tle star,2
        How4 I won- der what you are!2
index 275e0a50a57dd623f9a13ddba348ed6cec30fce4..717e2b0ea11d0786ea220e6cae35b335a159bddb 100644 (file)
@@ -9,7 +9,9 @@
 #include "audio-element.hh"
 #include "debug.hh"
 
-
+Audio_element::Audio_element ()
+{
+}
 
 Audio_element::~Audio_element()
 {
index 7adf3de0608578bdf7f72393cec7851426114c09..f48f92179c2b23c16015742e32a75e75535120fa 100644 (file)
@@ -8,92 +8,61 @@
 #include "debug.hh"
 #include "audio-item.hh"
 #include "midi-item.hh"
-#include "request.hh"
 #include "audio-column.hh"
 
 Audio_instrument::Audio_instrument (String instrument_str)
-  : Audio_item (0)
 {
   str_ = instrument_str;
 }
 
-Midi_item*
-Audio_instrument::midi_item_p()
-{
-  return str_.length_i() ? new Midi_instrument(0, str_) : 0;
-}
-
-
-Audio_item::Audio_item (Request* req_l)
+Audio_item::Audio_item ()
 {
   audio_column_l_ = 0;
-  req_l_ = req_l;
-}
-
-Audio_key::Audio_key (Request* req_l)
-  : Audio_item (req_l)
-{
 }
 
-Midi_item*
-Audio_key::midi_item_p()
-{
-  return new Midi_key (this);
-}
-
-
-Audio_note::Audio_note (Request* req_l, int transposing_i)
-  : Audio_item (req_l)
+Audio_note::Audio_note (Musical_pitch p, Moment m, int transposing_i)
 {
+  pitch_ = p;
+  length_mom_ = m;
   transposing_i_ = transposing_i;
 }
 
-Midi_item*
-Audio_note::midi_item_p()
+Audio_key::Audio_key (Key_def const& k)
 {
-  return new Midi_note (this);
+  key_ = k;
 }
 
-
-
 Audio_tempo::Audio_tempo (int per_minute_4_i)
-  : Audio_item (0)
 {
   per_minute_4_i_ = per_minute_4_i;
 }
 
-Midi_item*
-Audio_tempo::midi_item_p()
+Audio_time_signature::Audio_time_signature (int beats, int one_beat)
 {
-  return new Midi_tempo (this);
+  beats_i_ = beats;
+  one_beat_i_ = one_beat;
 }
 
-
-
-Audio_time_signature::Audio_time_signature (Request* req_l)
-  : Audio_item (req_l)
+Audio_text::Audio_text (Audio_text::Type type, String text_str)
 {
+  text_str_ = text_str;
+  type_ = type;
 }
 
-Midi_item*
-Audio_time_signature::midi_item_p()
+Audio_tie::Audio_tie ()
 {
-  return new Midi_time_signature (this);
+  note_l_drul_[RIGHT] = 0;
+  note_l_drul_[LEFT] = 0;
 }
 
-
-
-Audio_text::Audio_text (Audio_text::Type type, String text_str)
-  : Audio_item (0)
+void
+Audio_tie::set_note (Direction d, Audio_note* note_l)
 {
-  text_str_ = text_str;
-  type_ = type;
-}
+  assert (!note_l_drul_[d]);
+  note_l_drul_[d] = note_l;
+  //set_bounds (d, head_l);
 
-Midi_item*
-Audio_text::midi_item_p()
-{
-  return text_str_.length_i() ? new Midi_text(this) : 0;
+  //  add_dependency (head_l);
 }
 
 void
@@ -104,11 +73,6 @@ Audio_item::do_print () const
     {
       DOUT << "at: "<< audio_column_l_->at_mom ();
     }
-  if (req_l_)
-    {
-      DOUT << "from: ";
-      req_l_->print ();
-    }
 #endif
 }
 
index 20cb6b70c884a9cf42a21b88ac9baba5788010b0..acca44ad5a2a2e2c14a6fcdee86c97a451dea40b 100644 (file)
@@ -6,16 +6,16 @@
   (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
   
  */
-
+#include "new-beaming.hh"
 #include "auto-beam-engraver.hh"
 #include "musical-request.hh"
 #include "bar.hh"
 #include "beam.hh"
-#include "rhythmic-grouping.hh"
 #include "rest.hh"
 #include "stem.hh"
 #include "debug.hh"
-#include "time-description.hh"
+#include "timing-engraver.hh"
+#include "engraver-group-engraver.hh"
 
 ADD_THIS_TRANSLATOR (Auto_beam_engraver);
 
@@ -26,6 +26,14 @@ Auto_beam_engraver::Auto_beam_engraver ()
   finished_beam_p_ = 0;
   finished_grouping_p_ = 0;
   grouping_p_ = 0;
+  timer_l_ =0;
+}
+
+void
+Auto_beam_engraver::do_creation_processing ()
+{
+  Translator * t = daddy_grav_l  ()->get_simple_translator ("Timing_engraver");
+  timer_l_ = dynamic_cast<Timing_engraver*> (t);
 }
 
 void
@@ -37,7 +45,10 @@ Auto_beam_engraver::do_process_requests ()
 void
 Auto_beam_engraver::consider_end_and_begin ()
 {
-  Time_description const *time = get_staff_info().time_C_;
+  if (!timer_l_)
+      return;
+  
+  Time_description const *time = &timer_l_->time_;
   int num = time->whole_per_measure_ / time->one_beat_;
   int den = time->one_beat_.den_i ();
   String time_str = String ("time") + to_str (num) + "_" + to_str (den);
@@ -158,7 +169,9 @@ Auto_beam_engraver::begin_beam ()
   assert (!stem_l_arr_p_);
   stem_l_arr_p_ = new Array<Stem*>;
   assert (!grouping_p_);
-  grouping_p_ = new Rhythmic_grouping;
+  grouping_p_ = new Beaming_info_list;
+  beam_start_moment_ = now_mom ();
+  beam_start_location_ = timer_l_->time_.whole_in_measure_;
 }
 
 Beam*
@@ -205,9 +218,8 @@ Auto_beam_engraver::typeset_beam ()
 {
   if (finished_beam_p_)
     {
-      Rhythmic_grouping const * rg_C = get_staff_info().rhythmic_C_;
-      rg_C->extend (finished_grouping_p_->interval());
-      finished_beam_p_->set_grouping (*rg_C, *finished_grouping_p_);
+      finished_grouping_p_->beamify ();
+      finished_beam_p_->set_beaming (finished_grouping_p_);
       typeset_element (finished_beam_p_);
       finished_beam_p_ = 0;
     
@@ -246,85 +258,68 @@ Auto_beam_engraver::same_grace_state_b (Score_element* e)
 void
 Auto_beam_engraver::acknowledge_element (Score_element_info info)
 {
+  if (!same_grace_state_b (info.elem_l_) || !timer_l_)
+    return;
+  
   if (stem_l_arr_p_)
     {
       if (Beam *b = dynamic_cast<Beam *> (info.elem_l_))
        {
-         if (same_grace_state_b (b))
-           junk_beam ();
+         junk_beam ();
        }
       else if (Bar *b = dynamic_cast<Bar *> (info.elem_l_))
        {
-         if (same_grace_state_b (b))
-           junk_beam ();
+         junk_beam ();
        }
-      else if (Rhythmic_req *rhythmic_req = dynamic_cast <Rhythmic_req *> (info.req_l_))
+      else if (Rest* rest_l = dynamic_cast<Rest *> (info.elem_l_))
        {
-         if (Rest* rest_l = dynamic_cast<Rest *> (info.elem_l_))
+         end_beam ();
+       }
+      else if (Stem* stem_l = dynamic_cast<Stem *> (info.elem_l_))
+       {
+         Rhythmic_req *rhythmic_req = dynamic_cast <Rhythmic_req *> (info.req_l_);
+         if (!rhythmic_req)
            {
-             if (same_grace_state_b (rest_l))
-               end_beam ();
+             programming_error ("Stem must have rhythmic structure");
+             return;
            }
-         else if (Stem* stem_l = dynamic_cast<Stem *> (info.elem_l_))
+         
+         if (stem_l->beam_l_)
            {
+             junk_beam ();
+             return ;
+           }
+             
              /*
-               if we're a nice grace beam, but the new note is regular,
-               gracefully end beam, and consider starting a regular one.
-              */
+               now that we have last_add_mom_, perhaps we can (should) do away
+               with these individual junk_beams
+             */
+
+         int durlog  =rhythmic_req->duration_.durlog_i_;
+         if (durlog <= 2)
+           end_beam ();
+         else 
+           {
              /*
-               When does that happen !? --hwn
-              */
-#if 0
-             if (stem_l_arr_p_ && stem_l_arr_p_->size ()
-                 && grace_b (stem_l_arr_p_->top ())
-                 && !grace_b (stem_l))
-               {
-                   end_beam ();
-                   consider_end_and_begin ();
-                   if (!stem_l_arr_p_)
-                     return;
-               }
-#endif
-             if (same_grace_state_b (stem_l))
+               if shortest duration would change
+               reconsider ending/starting beam first.
+             */
+             Moment mom = rhythmic_req->duration_.length_mom ();
+             if (mom < shortest_mom_)
                {
-                 if (stem_l->beam_l_)
-                   junk_beam ();
-                 /*
-                   now that we have last_add_mom_, perhaps we can (should) do away
-                   with these individual junk_beams
-                 */
-                 else if (rhythmic_req->duration_.durlog_i_ <= 2)
-                   end_beam ();
-                 else 
+                 if (stem_l_arr_p_->size ())
                    {
-                     Moment start = get_staff_info().time_C_->whole_in_measure_;
-                     if (!grouping_p_->child_fit_b (start))
-                       end_beam ();
-                     else
-                       {
-                         /*
-                           if shortest duration would change
-                           reconsider ending/starting beam first.
-                         */
-                         Moment mom = rhythmic_req->duration_.length_mom ();
-                         if (mom < shortest_mom_)
-                           {
-                             if (stem_l_arr_p_->size ())
-                               {
-                                 shortest_mom_ = mom;
-                                 consider_end_and_begin ();
-                               }
-                             shortest_mom_ = mom;
-                           }
-                         grouping_p_->add_child (start, rhythmic_req->length_mom ());
-                         
-                         stem_l_arr_p_->push (stem_l);
-                         Moment now = now_mom ();
-                         last_add_mom_ = now;
-                         extend_mom_ = extend_mom_ >? now + rhythmic_req->length_mom ();
-                       }
+                     shortest_mom_ = mom;
+                     consider_end_and_begin ();
                    }
+                 shortest_mom_ = mom;
                }
+             Moment now = now_mom ();
+
+             grouping_p_->add_stem (now - beam_start_moment_ + beam_start_location_, durlog - 2);
+             stem_l_arr_p_->push (stem_l);
+             last_add_mom_ = now;
+             extend_mom_ = extend_mom_ >? now + rhythmic_req->length_mom ();
            }
        }
     }
index 04eca124294c70aba9497db0b6e3ce39a698fb5f..2d48eb6c4a3e5e1fa00c169ca67a8f8b19cc8a5e 100644 (file)
@@ -6,7 +6,7 @@
   (c)  1997, 1998, 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 */
-
+#include "score-engraver.hh"
 #include "bar-engraver.hh"
 #include "staff-bar.hh"
 #include "musical-request.hh"
@@ -14,6 +14,7 @@
 #include "command-request.hh"
 #include "time-description.hh"
 #include "engraver-group-engraver.hh"
+#include "warn.hh"
 
 Bar_engraver::Bar_engraver()
 {
@@ -34,7 +35,6 @@ Bar_engraver::do_try_music (Music*r_l)
     }
   
   return false;
-
 }
 
 
@@ -62,10 +62,21 @@ Bar_engraver::create_bar ()
        {
          bar_p_->set_elt_property (at_line_start_scm_sym, SCM_BOOL_T);
        }
+      prop = get_property ("barSize", 0);
+      if (prop.isnum_b ())
+       {
+         bar_p_->set_elt_property (bar_size_scm_sym, 
+                                   gh_double2scm (Real(prop)));
+       }
       announce_element (Score_element_info (bar_p_, bar_req_l_));
     }
 }
 
+/**
+   Make a barline.  If there are both |: and :| requested, merge them
+   to :|:
+
+*/
 void
 Bar_engraver::request_bar (String type_str)
 {
@@ -77,10 +88,11 @@ Bar_engraver::request_bar (String type_str)
        return;
     }
   create_bar ();
+
   if (((type_str == "|:") && (bar_p_->type_str_ == ":|"))
     || ((type_str == ":|") && (bar_p_->type_str_ == "|:")))
     bar_p_->type_str_ = ":|:";
-  else
+  else if (type_str_.length_i ())
     bar_p_->type_str_ = type_str;
 }
 
@@ -128,9 +140,17 @@ Bar_engraver::do_process_requests()
   
   if (!bar_p_)
     {
-      Break_req r;
-      r.penalty_i_ = Break_req::DISALLOW;
-      daddy_grav_l ()->try_music (&r);
+      Score_engraver * e = 0;
+      Translator * t  =  daddy_grav_l ();
+      for (; !e && t;  t = t->daddy_trans_l_)
+       {
+         e = dynamic_cast<Score_engraver*> (t);
+       }
+      
+      if (!e)
+       programming_error ("No score engraver!");
+      else
+       e->forbid_breaks ();
     }
 }
 
index 31ff0b9c2583125e6ce9542aaf5a53facbbb39d5..913c2c72ed1c0622c0107c4ef11829ec30fef4af 100644 (file)
@@ -32,7 +32,8 @@ Bar::do_print () const
 Real
 Bar::get_bar_size () const
 {
-  return paper_l ()->get_var ("barsize");
+  // Never called!
+  return 0;
 }
 
 
index 4e860dcd219ae6b36c3e22bb714a85a1838f7a78..849163e5be9b043e5f17264886cc8eb2f53e1f06 100644 (file)
@@ -6,21 +6,23 @@
   (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
-
+#include "timing-engraver.hh"
+#include "engraver-group-engraver.hh"
 #include "beam-engraver.hh"
 #include "musical-request.hh"
 #include "beam.hh"
-#include "rhythmic-grouping.hh"
 #include "stem.hh"
 #include "warn.hh"
 #include "time-description.hh"
+#include "new-beaming.hh"
+#include "score-engraver.hh"
 
 Beam_engraver::Beam_engraver ()
 {
   beam_p_ = 0;
   finished_beam_p_ =0;
-  finished_grouping_p_ = 0;
-  grouping_p_ =0;
+  finished_beam_info_p_=0;
+  beam_info_p_ =0;
   reqs_drul_[LEFT] = reqs_drul_[RIGHT] =0;
   prev_start_req_ =0;
 }
@@ -56,10 +58,26 @@ Beam_engraver::do_process_requests ()
        reqs_drul_[STOP]->warning (_("No beam to end"));
       prev_start_req_ =0;
       finished_beam_p_ = beam_p_;
-      finished_grouping_p_ = grouping_p_;
+      finished_beam_info_p_ = beam_info_p_;
 
+      beam_info_p_ =0;
       beam_p_ = 0;
-      grouping_p_ = 0;
+    }
+
+
+  if (beam_p_)
+    {
+      Score_engraver * e = 0;
+      Translator * t  =  daddy_grav_l ();
+      for (; !e && t;  t = t->daddy_trans_l_)
+       {
+         e = dynamic_cast<Score_engraver*> (t);
+       }
+      
+      if (!e)
+       programming_error ("No score engraver!");
+      else
+       e->forbid_breaks ();
     }
   
   if (reqs_drul_[START])
@@ -72,7 +90,14 @@ Beam_engraver::do_process_requests ()
 
       prev_start_req_ = reqs_drul_[START];
       beam_p_ = new Beam;
-      grouping_p_ = new Rhythmic_grouping;
+
+      Translator * t  = daddy_grav_l  ()->get_simple_translator ("Timing_engraver");
+      Timing_engraver *timer = dynamic_cast<Timing_engraver*> (t);
+      beam_start_location_ = (t) ?  timer->time_.whole_in_measure_ : Moment (0);
+      beam_start_mom_ = now_mom();
+      beam_info_p_ = new Beaming_info_list;
+      
+      
 
       Scalar prop = get_property ("beamslopedamping", 0);
       if (prop.isnum_b ()) 
@@ -91,15 +116,14 @@ Beam_engraver::typeset_beam ()
 {
   if (finished_beam_p_)
     {
-      Rhythmic_grouping const * rg_C = get_staff_info().rhythmic_C_;
-      rg_C->extend (finished_grouping_p_->interval());
-      finished_beam_p_->set_grouping (*rg_C, *finished_grouping_p_);
+      finished_beam_info_p_->beamify ();
+      
+      finished_beam_p_->set_beaming (finished_beam_info_p_);
       typeset_element (finished_beam_p_);
+      delete finished_beam_info_p_;
+      finished_beam_info_p_ =0;
       finished_beam_p_ = 0;
     
-      delete finished_grouping_p_;
-      finished_grouping_p_= 0;
-    
       reqs_drul_[STOP] = 0;
     }
 }
@@ -124,7 +148,7 @@ Beam_engraver::do_removal_processing ()
     {
       prev_start_req_->warning (_ ("Unfinished beam"));
       finished_beam_p_ = beam_p_;
-      finished_grouping_p_ = grouping_p_;
+      finished_beam_info_p_ = beam_info_p_;
       typeset_beam ();
     }
 }
@@ -164,27 +188,10 @@ Beam_engraver::acknowledge_element (Score_element_info info)
          return;
        }
 
-      /*
-       TODO: do something sensible if it doesn't fit in the beam.
-      */
-      Moment start = get_staff_info().time_C_->whole_in_measure_;
-
-      if (!grouping_p_->child_fit_b (start))
-       {
-         String s (_ ("please fix me") + ": " 
-                   + _f ("stem at %s doesn't fit in beam", now_mom ().str ()));
-
-         if (info.req_l_)
-           info.req_l_->warning(s);
-         else 
-           warning (s);
-       }
-      else
-       {
-         grouping_p_->add_child (start, rhythmic_req->length_mom ());
-         stem_l->flag_i_ = rhythmic_req->duration_.durlog_i_;
-         beam_p_->add_stem (stem_l);
-       }
+      stem_l->flag_i_ = rhythmic_req->duration_.durlog_i_;
+      Moment stem_location = now_mom () - beam_start_mom_ + beam_start_location_;
+      beam_info_p_->add_stem (stem_location, rhythmic_req->duration_.durlog_i_ - 2);
+      beam_p_->add_stem (stem_l);
     }
 }
 
index c6ae9c7f896ec8964d66385df1b065e17f0a12b2..e523466d3c5ca46b7f76f0a08c1cfe4a96499840 100644 (file)
@@ -24,6 +24,7 @@ needs what, and what information should be available when.
 
 #include <math.h>
 
+#include "new-beaming.hh"
 #include "proto.hh"
 #include "dimensions.hh"
 #include "beam.hh"
@@ -34,7 +35,6 @@ needs what, and what information should be available when.
 #include "stem.hh"
 #include "paper-def.hh"
 #include "lookup.hh"
-#include "rhythmic-grouping.hh"
 
 Beam::Beam ()
 {
@@ -573,6 +573,8 @@ Beam::set_stemlens ()
   // enge floots
   Real epsilon_f = staffline_f / 8;
 
+
+  // je bent zelf eng --hwn.
   Real dy_f = check_stemlengths_f (false);
   for (int i = 0; i < 2; i++)
     { 
@@ -589,52 +591,42 @@ Beam::set_stemlens ()
   test_pos %= 4;
 }
 
-/*
- FIXME
- ugh.  this is broken and should be rewritten.
-  - [c8. c32 c32]
- */
 void
-Beam::set_grouping (Rhythmic_grouping def, Rhythmic_grouping cur)
+Beam::set_beaming (Beaming_info_list *beaming)
+{
+  Direction d = LEFT;
+  for (int i=0; i  < stems_.size (); i++)
+    {
+      do
+       {
+         if (stems_[i]->beams_i_drul_[d] < 0)
+           stems_[i]->beams_i_drul_[d] = beaming->infos_.elem (i).beams_i_drul_[d];
+       }
+      while (flip (&d) != LEFT);
+    }
+}
+
+
+void
+Beam::do_add_processing ()
 {
-  def.OK ();
-  cur.OK ();
-  assert (cur.children.size () == stems_.size ());
-
-  cur.split (def);
-
-  Array<int> b;
-  {
-    Array<int> flags;
-    for (int j=0; j <stems_.size (); j++)
-      {
-       Stem *s = stems_[j];
-
-       int f = s->flag_i_ - 2;
-       assert (f>0);
-       flags.push (f);
-      }
-    int fi =0;
-    b= cur.generate_beams (flags, fi);
-    b.insert (0,0);
-    b.push (0);
-    assert (stems_.size () == b.size ()/2);
-  }
-
-  for (int j=0, i=0; i < b.size () && j <stems_.size (); j++)
+  for (int i=0; i < stems_.size () ; i++) 
     {
-      Stem *s = stems_[j];
       Direction d = LEFT;
       do {
-       if (s->beams_i_drul_[d] < 0)
-         s->beams_i_drul_[d] = b[i];
-
-       multiple_i_ = multiple_i_ >? s->beams_i_drul_[d];
-       i++;
+       multiple_i_ = multiple_i_ >? stems_[i]->beams_i_drul_[d];
       } while ((flip (&d)) != LEFT);
     }
+
+  if (stems_.size ())
+    {
+      stems_[0]->beams_i_drul_[LEFT] =0;
+      stems_.top()->beams_i_drul_[RIGHT] =0;
+    }
 }
 
+
+
 /*
   beams to go with one stem.
   */
index 6cbd2bc92fc13983d4f5bbd8658d361c25698e5c..7ce3b9fd6cc8f4a56457353abd91eff53de441b2 100644 (file)
 #include "musical-request.hh"
 
 void
-Cadenza_req::do_print() const
+Cadenza_req::do_print () const
 {
 #ifndef NPRINT
-  DOUT << on_b_;
+  DOUT << (int)on_b_;
 #endif
 }
 
@@ -40,7 +40,7 @@ Bar_req::do_equal_b (Request*r) const
 }
 
 void
-Bar_req::do_print() const
+Bar_req::do_print () const
 {
 #ifndef NPRINT
   DOUT << type_str_;
@@ -73,7 +73,7 @@ Barcheck_req::do_equal_b (Request*r) const
 }
 
 void
-Clef_change_req::do_print() const
+Clef_change_req::do_print () const
 {
 #ifndef NPRINT
   DOUT << clef_str_ ;
@@ -86,13 +86,13 @@ Clef_change_req::Clef_change_req (String s)
 }
 
 void
-Partial_measure_req::do_print() const
+Partial_measure_req::do_print () const
 {
   DOUT << length_mom_;
 }
 
 void
-Time_signature_change_req::do_print() const
+Time_signature_change_req::do_print () const
 {
 #ifndef NPRINT
   DOUT << beats_i_ << "/" << one_beat_i_;
@@ -109,23 +109,23 @@ Time_signature_change_req::do_equal_b (Request * r) const
     && one_beat_i_ == m->one_beat_i_;
 }
 
-Time_signature_change_req::Time_signature_change_req()
+Time_signature_change_req::Time_signature_change_req ()
 {
   beats_i_ = 0;
   one_beat_i_ =0;
 }
 
 
-Tempo_req::Tempo_req()
+Tempo_req::Tempo_req ()
 {
   metronome_i_ = 60;
   dur_. durlog_i_ = 2;
 }
 
 void
-Tempo_req::do_print() const
+Tempo_req::do_print () const
 {
-  DOUT << dur_.str() << " = " << metronome_i_;
+  DOUT << dur_.str () << " = " << metronome_i_;
 }
 
 
@@ -137,145 +137,24 @@ Tempo_req::do_equal_b (Request *r) const
   return t&& t->dur_.length_mom ()== dur_.length_mom () && metronome_i_ == t->metronome_i_;
 }
 
-void
-Measure_grouping_req::do_print() const
-{
-  for (int i=0; i < elt_length_arr_.size(); i++)
-    {
-      DOUT << beat_i_arr_[i] << "*" << elt_length_arr_[i].str () << " ";
-    }
-}
 
 
-bool
-Measure_grouping_req::do_equal_b (Request*) const
-{
-  return false;                // todo
-}
-
-void
-Key_change_req::transpose (Musical_pitch d) 
-{
-  if (ordinary_key_b_ ) 
-    { 
-      if (pitch_arr_.size () > 0) 
-        pitch_arr_[0].transpose(d);
-      else
-        {
-          warning(_ ("don't know how handle empty keys")); // TODO 
-        }
-    }
-  else
-    {
-      Array<Musical_pitch> old_pitch_arr_;
-      for (int i = 0; i < pitch_arr_.size(); i++)
-        {
-          old_pitch_arr_.push(pitch_arr_[i]);
-        }
-      // set accidentals for \key d (as in Key_engraver::read_req)
-      // (later called "new accidentals")
-      int p = d.semitone_pitch ();
-      /* Solve the equation 7*no_of_acc mod 12 = p, -6 <= no_of_acc <= 5 */
-      int no_of_acc = (7*p) % 12;
-      no_of_acc = (no_of_acc + 18) % 12 -6;
-
-      /* Correct from flats to sharps or vice versa */
-      if (no_of_acc * d.accidental_i_ < 0)
-      no_of_acc += 12 * sign (d.accidental_i_);
-    
-      pitch_arr_.clear ();
-      if (no_of_acc < 0) 
-        {
-         int accidental = 6 ; // First accidental: bes
-          for ( ; no_of_acc < 0 ; no_of_acc++ ) 
-           {
-             Musical_pitch m;
-             m.accidental_i_ = -1;
-             m.notename_i_ = accidental;
-             pitch_arr_.push(m);
-     
-             accidental = (accidental + 3) % 7 ;
-           }
-       }
-      else 
-       { 
-         int accidental = 3 ; // First accidental: fis
-         for ( ; no_of_acc > 0 ; no_of_acc-- ) 
-           {
-             Musical_pitch m;
-             m.accidental_i_ = 1;
-             m.notename_i_ = accidental;
-             pitch_arr_.push(m);
-   
-             accidental = (accidental + 4) % 7 ;
-           }
-       }
-      // Check if transposed old accidentals and the new ones coincide
-      no_of_acc = pitch_arr_.size();
-      int acc_found;
-      Musical_pitch mm;
-      for (int i=0; i < old_pitch_arr_.size(); i++)
-        {
-          acc_found = 0;
-          mm = old_pitch_arr_[i];
-         mm.transpose(d);
-          for (int j=0; ((j < no_of_acc) && (acc_found == 0)); j++)
-            {
-              if (pitch_arr_[j].notename_i_ == mm.notename_i_)
-                {
-                  if (mm.accidental_i_ == 0)
-                    {
-                      // remove new accidental 
-                      pitch_arr_.del(j);
-                      no_of_acc--;
-                      acc_found = 1;
-                   }
-                 else
-                    {
-                      // change new accidental 
-                      pitch_arr_[j].accidental_i_ = mm.accidental_i_;
-                      acc_found = 1;
-                   }
-                }
-            }
-          if (acc_found == 0)
-            {
-              // add transposed old accidental 
-             pitch_arr_.push(mm);
-            }
-        }
-    }
-}
-
-
-void
-Key_change_req::squash_octaves()
-{
-  for (int i=0; i < pitch_arr_.size(); i++)
-    {
-      pitch_arr_[i].octave_i_ = 0;
-    }
-}
 
 void
-Key_change_req::do_print() const
+Key_change_req::do_print () const
 {
 #ifndef NPRINT
-  for (int i=0; i < pitch_arr_.size(); i++)
+  for (int i=0; i < key_.pitch_arr_.size (); i++)
     {
-      pitch_arr_[i].print();
+      key_.pitch_arr_[i].print ();
     }
 #endif
 }
 
-Key_change_req::Key_change_req()
+Key_change_req::Key_change_req ()
 {
-  modality_i_ = 0;
-  ordinary_key_b_= false;
 }
 
-
-
 Break_req::Break_req ()
 {
   penalty_i_ = 0;
@@ -291,33 +170,3 @@ Mark_req::do_print () const
 {
   DOUT << str_;
 }
-
-int
-Key_change_req::flats_i()
-{
-  int flats_i = 0;
-  for (int i = 0; i < pitch_arr_.size(); i++)
-    {
-      if (pitch_arr_[i].accidental_i_ < 0)
-       flats_i -= pitch_arr_[i].accidental_i_;
-    }
-  return flats_i;
-}
-
-bool
-Key_change_req::minor_b() const
-{
-  return modality_i_ == 3;
-}
-
-int
-Key_change_req::sharps_i()
-{
-  int sharps_i = 0;
-  for (int i = 0; i < pitch_arr_.size(); i++)
-    {
-      if (pitch_arr_[i].accidental_i_ > 0)
-       sharps_i += pitch_arr_[i].accidental_i_;
-    }
-  return sharps_i;
-}
diff --git a/lily/grace-performer-group.cc b/lily/grace-performer-group.cc
new file mode 100644 (file)
index 0000000..65d4cde
--- /dev/null
@@ -0,0 +1,110 @@
+/*   
+  grace-performer-group.cc -- implement Grace_performer_group
+  
+  source file of the GNU LilyPond music playter
+  
+  (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  
+ */
+#include "grace-performer-group.hh"
+#include "lily-guile.hh"
+#include "ly-symbols.hh"
+#include "audio-element.hh"
+
+ADD_THIS_TRANSLATOR (Grace_performer_group);
+
+void
+Grace_performer_group::start ()
+{
+}
+/*
+  We're really finished with this context. Get rid of everything.
+ */
+void
+Grace_performer_group::finish ()
+{
+  calling_self_b_ = true;
+  removal_processing ();       // ugr. We'd want to have this done by our parents.g
+  for (int i=0; i < announce_to_top_.size (); i++)
+    {
+      Performer::announce_element (announce_to_top_[i]);
+    }
+
+  for (int i=0; i < play_us_.size (); i++)
+    {
+      Performer::play_element (play_us_[i]);
+    }
+  play_us_.clear ();
+  calling_self_b_ = false;
+}
+
+void
+Grace_performer_group::do_removal_processing ()
+{
+  Performer_group_performer::do_removal_processing ();
+}
+
+void
+Grace_performer_group::announce_element (Audio_element_info inf)
+{
+  announce_info_arr_.push (inf);
+  // do not propagate to top
+  announce_to_top_.push (inf);
+
+  //inf.elem_l_->set_elt_property (grace_scm_sym, SCM_BOOL_T);
+}
+
+void
+Grace_performer_group::play_element (Audio_element*e)
+{
+  play_us_.push (e);
+}
+
+
+Grace_performer_group::Grace_performer_group()
+{
+  calling_self_b_ = false;
+}
+
+void
+Grace_performer_group::process ()
+{
+  calling_self_b_  = true;
+  process_requests ();
+  do_announces();
+  pre_move_processing();
+  check_removal();
+  calling_self_b_ = false;
+}
+
+
+void
+Grace_performer_group::each (Method_pointer method)
+{
+  if (calling_self_b_)
+    Performer_group_performer::each (method);
+}
+
+
+void
+Grace_performer_group::each (Const_method_pointer method) const
+{
+ if (calling_self_b_)
+    Performer_group_performer::each (method);
+}
+
+/*
+  don't let the commands trickle up.
+ */
+bool
+Grace_performer_group::do_try_music (Music *m)
+{
+  bool hebbes_b =false;
+
+  Link_array<Translator> nongroups (nongroup_l_arr ());
+  
+  for (int i =0; !hebbes_b && i < nongroups.size() ; i++)
+    hebbes_b =nongroups[i]->try_music (m);
+
+  return hebbes_b;
+}
index 484b25368d38973615f3549058e45176689a3246..a3b8ffdb281e4c5d32402a19db926cabbd217369 100644 (file)
@@ -104,8 +104,8 @@ Graphical_axis_group::do_print() const
 Graphical_axis_group::Graphical_axis_group ()
 {
   ordered_b_ = false;
-  axes_[0] = -1 ; 
-  axes_[1] = -1 ;
+  axes_[0] = (Axis)-1 ; 
+  axes_[1] = (Axis)-1 ;
 }
 
 void
index dc46b926c69a63f3f69e27aedd8648880e77e461..16955f40279c55b566d7291a71ed3724687010e3 100644 (file)
 
 #include "virtual-methods.hh"
 
-struct Audio_element {
-  void print ()const;
-  
-  virtual ~Audio_element();
+class Audio_element
+{
+public:
+  Audio_element ();
+  virtual ~Audio_element ();
+
+  void print () const;
   
 protected:
   virtual void do_print () const;
 };
+
 #endif // AUDIO_ELEMENT_HH
index b6b6d33c00bd518f0433fc49b600d70c2c66d978..5c4f8ebce6f79c6a5492be6d52b2c28a0ac397c5 100644 (file)
 #include "lily-proto.hh"
 #include "string.hh"
 #include "audio-element.hh"
+#include "key-def.hh"
+#include "musical-pitch.hh"
+#include "moment.hh"
+#include "drul-array.hh"
 
 /**
   Any piece of audio information.
-  We need virtual constructors, 
+  We need virtual conclassors, 
   let's try decentralised factory for specific audio implemenations.
 
  */
-struct Audio_item : public Audio_element {
-  Audio_item (Request* req_l);
-
-  /// Create a midi-item from myself.
-  virtual Midi_item* midi_item_p() = 0;
+class Audio_item : public Audio_element
+{
+public:
+  Audio_item ();
 
   Audio_column* audio_column_l_;
-  /*
-    THIS SUX. This ties the output system to the input system.  Bad move.
-   */
-  Request* req_l_;
 
-      
 protected:
   virtual void do_print () const;
   
@@ -38,50 +36,69 @@ private:
   Audio_item& operator=( Audio_item const&);
 };
 
-struct Audio_key : public Audio_item {
-  Audio_key (Request* req_l);
-  
-  virtual Midi_item* midi_item_p();
+class Audio_key : public Audio_item
+{
+public:
+  Audio_key (Key_def const& key);
+
+  Key_def key_;
 };
 
-struct Audio_instrument : public Audio_item {
+class Audio_instrument : public Audio_item
+{
+public:
   Audio_instrument (String instrument_str);
-  virtual Midi_item* midi_item_p();
+
   String str_;
-    
 };
                                       
-struct Audio_note : public Audio_item {
-  
-  Audio_note (Request* req_l, int transposing_i = 0);
-  virtual Midi_item* midi_item_p();
+class Audio_note : public Audio_item
+{
+public:  
+  Audio_note (Musical_pitch p, Moment m, int transposing_i = 0);
+
+  Musical_pitch pitch_;
+  Moment length_mom_;
   int transposing_i_;
 };
 
-struct Audio_text : Audio_item {
+class Audio_text : public Audio_item
+{
+public:
   enum Type { 
     TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
     MARKER, CUE_POINT
   };
   
   Audio_text (Audio_text::Type type, String text_str);
-  virtual Midi_item* midi_item_p();
 
   Type type_;
   String text_str_;
 };
 
-struct Audio_tempo : Audio_item {
+class Audio_tempo : public Audio_item
+{
+public:
   Audio_tempo (int per_minute_4_i);
-  virtual Midi_item* midi_item_p();
-  
+
   int per_minute_4_i_;
 };
 
-struct Audio_time_signature : Audio_item {
-  Audio_time_signature (Request* req_l);
-  virtual Midi_item* midi_item_p();
-  
+class Audio_tie : public Audio_item
+{
+public:
+  Audio_tie ();
+  void set_note (Direction, Audio_note*);
+  Drul_array<Audio_note*> note_l_drul_;
+};
+
+class Audio_time_signature : public Audio_item
+{
+public:
+  Audio_time_signature (int beats, int one_beat);
+
+  int beats_i_;
+  int one_beat_i_;
 };
 
 #endif // AUDIO_ITEM_HH
index 18b5ffceb042cb38dbe899319d7a77cd5c236e49..ce8655dd24f4415ded5f53c0af749b10ae8756d0 100644 (file)
@@ -25,7 +25,7 @@ protected:
   virtual void acknowledge_element (Score_element_info);
   virtual void do_process_requests ();
   virtual void process_acknowledged ();
-
+  virtual void do_creation_processing ();
 private:
   void begin_beam ();
   void consider_end_and_begin ();
@@ -38,12 +38,18 @@ private:
   Moment shortest_mom_;
   Beam *finished_beam_p_;
   Array<Stem*>* stem_l_arr_p_;
+  
   Moment last_add_mom_;
   Moment extend_mom_;
+
+
+  Moment beam_start_moment_;
+  Moment beam_start_location_;
   
+  Timing_translator * timer_l_;
   // We act as if beam were created, and start a grouping anyway.
-  Rhythmic_grouping*grouping_p_;
-  Rhythmic_grouping*finished_grouping_p_;
+  Beaming_info_list*grouping_p_;  
+  Beaming_info_list*finished_grouping_p_;
 };
 
 #endif /* AUTO_BEAM_ENGRAVER_HH */
index 292977680fdc2602bbf87a8f16e9d9ad1de66020..b0001c89df3808f4859757c8f108662bee215242 100644 (file)
@@ -19,8 +19,15 @@ class Beam_engraver : public Engraver {
   Beam *finished_beam_p_;
   Beam *beam_p_;
   Span_req * prev_start_req_;
-  Rhythmic_grouping*grouping_p_;
-  Rhythmic_grouping*finished_grouping_p_;
+
+  Beaming_info_list * beam_info_p_;
+  Beaming_info_list * finished_beam_info_p_;  
+
+  /// location  within measure where beam started.
+  Moment beam_start_location_;
+
+  /// moment (global time) where beam started.
+  Moment beam_start_mom_;
   
   void typeset_beam ();
 protected:
index e8458196eb96efb746346811e250d7dad438bdd2..39f9b3b99bcd2eb4a194b2db0d1be13cd81e95ae 100644 (file)
@@ -59,6 +59,7 @@ public:
   Stem_info get_stem_info (Stem*);
 
   void set_grouping (Rhythmic_grouping def, Rhythmic_grouping current);
+  void set_beaming (Beaming_info_list *);
   void set_stemlens ();
   VIRTUAL_COPY_CONS(Score_element);
 
@@ -72,14 +73,20 @@ protected:
   virtual void do_pre_processing ();
   virtual void do_post_processing ();
   virtual void do_substitute_element_pointer (Score_element*, Score_element*);
+  virtual void do_add_processing ();
   virtual void do_print() const;
-  virtual void quantise_left_y (bool extend_b);
-  virtual Molecule stem_beams (Stem *here, Stem *next, Stem *prev) const;
-  virtual void calculate_slope ();
-  virtual Real check_stemlengths_f (bool set_b);
-  virtual void solve_slope ();
-  virtual void quantise_dy ();
   virtual Molecule*do_brew_molecule_p () const;
+
+  Molecule stem_beams (Stem *here, Stem *next, Stem *prev) const;
+
+private:
+  void calculate_slope ();
+  Real check_stemlengths_f (bool set_b);
+  void solve_slope ();
+
+  void quantise_left_y (bool extend_b);
+  void quantise_dy ();
+
 };
 
 #endif // BEAM_HH
index 805f100031dea1b4f3db034e45aaf4714d851633..47507b8c3c23581507344cb9ace51ff237e2631a 100644 (file)
@@ -14,6 +14,7 @@
 #include "array.hh"
 #include "duration.hh"
 #include "musical-pitch.hh"
+#include "key-def.hh"
 
 class Break_req : public Request {
 public:
@@ -101,15 +102,6 @@ public:
   VIRTUAL_COPY_CONS(Music);
 };
 
-class Measure_grouping_req : public Timing_req  {
-public:
-  Array<int> beat_i_arr_;
-  Array<Moment> elt_length_arr_;
-protected:
-  virtual void do_print () const;
-  bool do_equal_b (Request *) const;
-  VIRTUAL_COPY_CONS(Music);
-};
 
 /** draw a (repeat)-bar. This something different than #Barcheck_req#,
   the latter should only happen at the start of a measure.  */
@@ -133,26 +125,15 @@ class Breathing_sign_req : public Request {
     Routines for sharps and flats are separated, 
     so that caller may identify non-conventional keys.
 */
-class Key_change_req  : public Request  {
+class Key_change_req  : public Request
+{
 public:
-  Array<Musical_pitch> pitch_arr_;
-  int modality_i_;
-  bool ordinary_key_b_;
-
-  Key_change_req();
-
-  /// squash the octaves to 1
-  void squash_octaves();
-  /// return number of flats in key
-  int flats_i();
-
-  /// return number of sharps in key
-  int sharps_i();
-  bool minor_b() const;
+  Key_change_req ();
+  Key_def key_;
 
 protected:
   VIRTUAL_COPY_CONS(Music);
-  void transpose (Musical_pitch  d);
+  //  void transpose (Musical_pitch  d);
   virtual void do_print () const;
 };
 
diff --git a/lily/include/grace-performer-group.hh b/lily/include/grace-performer-group.hh
new file mode 100644 (file)
index 0000000..515015e
--- /dev/null
@@ -0,0 +1,37 @@
+/*   
+  grace-performer-group.hh -- declare 
+  
+  source file of the GNU LilyPond music typesetter
+  
+   (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  
+ */
+
+#ifndef GRACE_PERFORMER_GROUP_HH
+#define GRACE_PERFORMER_GROUP_HH
+
+#include "performer-group-performer.hh"
+#include "global-translator.hh"
+
+class Grace_performer_group : public Performer_group_performer, public Global_translator
+{
+  Link_array<Audio_element> play_us_;
+  Array<Audio_element_info> announce_to_top_;
+  bool calling_self_b_;
+public:
+  VIRTUAL_COPY_CONS(Translator);
+  Grace_performer_group ();
+protected:
+  virtual void announce_element (Audio_element_info);
+  virtual void start ();
+  virtual void finish ();
+  virtual void process ();
+  virtual void each (Method_pointer);
+  virtual void each (Const_method_pointer) const;
+  virtual void do_removal_processing () ;
+  virtual void play_element (Audio_element*);
+  virtual bool do_try_music (Music *m);
+};
+
+
+#endif /* GRACE_PERFORMER_GROUP_HH */
diff --git a/lily/include/key-def.hh b/lily/include/key-def.hh
new file mode 100644 (file)
index 0000000..0303fb4
--- /dev/null
@@ -0,0 +1,46 @@
+/*   
+  key-def.hh -- declare 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  
+ */
+
+#ifndef KEY_DEF_HH
+#define KEY_DEF_HH
+
+#include "array.hh"
+#include "musical-pitch.hh"
+
+/**
+  Universal key definition (Should rename class Key to 'Accidentals'?)
+ */
+class Key_def
+{
+public:
+  Key_def ();
+  
+  Array<Musical_pitch> pitch_arr_;
+  int modality_i_;
+  bool ordinary_key_b_;
+
+  /// squash the octaves to 1
+  void squash_octaves ();
+
+  /// return number accidentals in key; ordinary key only
+  int ordinary_accidentals_i () const;
+
+  /// return number of flats in key
+  int flats_i () const;
+
+  /// return number of sharps in key
+  int sharps_i () const;
+
+  /// modality == 3
+  bool minor_b () const;
+
+  void transpose (Musical_pitch d);
+};
+
+#endif /* KEY_DEF_HH */
index 127dafb23123e402568803d602cc55112ac03e87..896db23ba4b61b730487abe72aa1ac513d57f1c2 100644 (file)
@@ -12,7 +12,8 @@
 #include "lily-proto.hh"
 #include "performer.hh"
 
-class Key_performer : public Performer {
+class Key_performer : public Performer
+{
 public:
   VIRTUAL_COPY_CONS(Translator);
   
@@ -22,10 +23,12 @@ public:
 protected:
   void do_print() const;
   virtual bool do_try_music (Music* req_l);
-  virtual void do_process_requests();
+  virtual void do_process_requests ();
+  virtual void do_pre_move_processing ();
 
 private:
   Key_change_req* key_req_l_;
+  Audio_key* audio_p_;
 };
 
 #endif // KEY_PERFOMER_HH
index 97d9d579702bdf3ddc4c30279e4dd1e40ad3b23b..e78946882cf2773c1f6ed5fcc9f5a38407ffde48 100644 (file)
@@ -25,10 +25,13 @@ struct Audio_element;
 struct Audio_element_info;
 struct Audio_column;
 struct Audio_item;
+struct Audio_instrument;
 struct Audio_key;
+struct Audio_text;
 struct Audio_time_signature;
 struct Audio_note;
 struct Audio_note_off;
+struct Audio_tie;
 struct Audio_staff;
 struct Audio_tempo;
 struct Auto_beam_engraver;
@@ -46,6 +49,8 @@ struct Barcheck_req;
 struct Beam;
 struct Beam_engraver;
 struct Beam_req;
+struct Beaming_info;
+struct Beaming_info_list;
 struct Blank_req;
 struct Bow;
 struct Box;
@@ -168,7 +173,7 @@ struct Note_req;
 struct Note_head;
 struct Note_head_engraver;
 struct Notename_table;
-struct New_repeated_music;
+struct Repeated_music;
 struct Unfolded_repeat_iterator;
 struct Folded_repeat_iterator;
 struct Offset;
@@ -259,6 +264,8 @@ struct Tonic_req;
 struct Translator;
 struct Translator_group;
 struct Timing_req;
+struct Timing_translator;
+struct Timing_engraver;
 struct Vertical_brace;
 struct Vertical_spanner;
 
index dee6c5f0aa72457f732487d46254254a40d85722..4383fc8eea03d8f0bd0b0e4c50678e0be9710583 100644 (file)
@@ -16,7 +16,9 @@
 #define DECLARE_LY_SYMBOL(a) extern SCM a ## _scm_sym
 #endif
 
+DECLARE_LY_SYMBOL(alt_symbol);
 DECLARE_LY_SYMBOL(at_line_start);
+DECLARE_LY_SYMBOL(bar_size);
 DECLARE_LY_SYMBOL(beam);
 DECLARE_LY_SYMBOL(beam_thickness);
 DECLARE_LY_SYMBOL(beam_dir);
index c2e03d0727097c7b0f32b9ade294d3d495084611..d5198fafacfbe9055a0bee07ae8a49d689a24667 100644 (file)
 class Lyric_performer : public Performer {
 public:
   VIRTUAL_COPY_CONS(Translator);
-  
+ Lyric_performer ();
 
 protected:
   void do_print() const;
   virtual bool do_try_music (Music* req_l);
   virtual void do_process_requests();
+  virtual void do_pre_move_processing ();
 
 private:
   Link_array<Lyric_req> lreq_arr_;
+  Audio_text* audio_p_;
 };
 
 #endif // LYRIC_PERFOMER_HH
index eb3b9f52769fea22c488897bdd2fb41374d9bc47..6a64b0b93d2ac67131f9037dc9a8fe58ae9f75e0 100644 (file)
 
   Maybe use base classes for RIFF files?
  */
-struct Midi_item {
-  Midi_item (Audio_item* audio_item_l); 
+class Midi_item
+{
+public:
+  Midi_item ();
   virtual ~Midi_item ();
+
+  /// factory
+  static Midi_item* midi_p (Audio_item* a);
+
   static String i2varint_str (int i);
+
   virtual String str () const = 0;
 
-  Audio_item* audio_item_l_;
   int channel_i_;
-
-private:
-  Midi_item (Midi_item const&);
-  Midi_item& operator = ( Midi_item const&);
 };
 
 /**
   timed MIDI event
  */
-struct Midi_event
+class Midi_event
 {
-  Midi_event (Moment delta_mom, Midi_item* mitem_l);
-  ~Midi_event ();
+public:
+  Midi_event (Moment delta_mom, Midi_item* midi_l);
+
   Moment delta_mom_;
-  Midi_item* mitem_p_;
+  Midi_item* midi_p_;
   String str () const;
 };
 
 /**
   variable sized MIDI data
  */
-struct Midi_chunk : Midi_item {
-  
-  Midi_chunk ();
-
+class Midi_chunk : public Midi_item
+{
+public:
   void set (String header_str, String data_str, String footer_str);
   virtual String str () const;
   virtual String data_str () const;
@@ -61,51 +63,70 @@ private:
   String header_str_;
 };
 
-struct Midi_duration : public Midi_item {
+class Midi_duration : public Midi_item
+{
+public:
   Midi_duration (Real seconds_f);
 
   virtual String str () const;
   Real seconds_f_;
 };
 
-struct Midi_header : Midi_chunk {
+class Midi_header : public Midi_chunk
+{
+public:
   Midi_header (int format_i, int tracks_i, int clocks_per_4_i);
 };
 
 /**
   Change instrument event
  */
-struct Midi_instrument : public Midi_item {
-  Midi_instrument (int channel_i, String instrument_str);
+class Midi_instrument : public Midi_item
+{
+public:
+  Midi_instrument (Audio_instrument*);
 
   virtual String str () const;
-  String instrument_str_;
+
+  Audio_instrument* audio_l_;
 };
                                       
 
-struct Midi_key : public Midi_item {
-  Midi_key (Audio_item* audio_item_l);
+class Midi_key : public Midi_item
+{
+public:
+  Midi_key (Audio_key*);
        
   virtual String str () const;
+
+  Audio_key* audio_l_;
 };
 
-struct Midi_time_signature : Midi_item {
-  Midi_time_signature (Audio_item* audio_item_l); 
+class Midi_time_signature : public Midi_item
+{
+public:
+  Midi_time_signature (Audio_time_signature*);
   
   virtual String str () const;
+
+  Audio_time_signature* audio_l_;
   int clocks_per_1_i_;
 };
 
 /**
   Turn a note on.
  */
-struct Midi_note : public Midi_item {
-  Midi_note (Audio_item* audio_item_l); 
+class Midi_note : public Midi_item
+{
+public:
+  Midi_note (Audio_note*);
 
   Moment length_mom () const;
   int pitch_i () const;
   virtual String str () const;
 
+  Audio_note* audio_l_;
+
   static int const c0_pitch_i_c_ = 60;
   Byte dynamic_byte_;
 };
@@ -113,53 +134,53 @@ struct Midi_note : public Midi_item {
 /**
   Turn a note off 
  */
-struct Midi_note_off : public Midi_item {
+class Midi_note_off : public Midi_item
+{
+public:
   Midi_note_off (Midi_note*); 
 
   int pitch_i () const;
   virtual String str () const;
 
+  Midi_note* on_l_;
   Byte aftertouch_byte_;
 };
 
-struct Midi_text : Midi_item {
-  
-    
+class Midi_text : public Midi_item
+{
+public:
   enum Type { 
     TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
     MARKER, CUE_POINT
   };
-  Midi_text (Midi_text::Type type, String text_str);
-  Midi_text (Audio_item* audio_item_l);
+
+  Midi_text (Audio_text*);
     
   virtual String str () const;
 
-  Type type_;
-  String text_str_;
+  Audio_text* audio_l_;
 };
 
-struct Midi_tempo : Midi_item {
-  Midi_tempo (int per_minute_4_i);
-  Midi_tempo (Audio_item* audio_item_l); 
+class Midi_tempo : public Midi_item
+{
+public:
+  Midi_tempo (Audio_tempo*);
   
   virtual String str () const;
 
-  int per_minute_4_i_;
+  Audio_tempo* audio_l_;
 };
 
-struct Midi_track : Midi_chunk {
+class Midi_track : public Midi_chunk
+{
+public:
   int number_i_;
   Cons_list<Midi_event> event_p_list_;
   
   Midi_track ();
-  ~Midi_track ();
 
-  void add (Moment delta_time_mom, Midi_item* mitem_l);
+  void add (Moment delta_time_mom, Midi_item* midi_l);
   virtual String data_str () const;
-
-private:
-  // copy trap
-  Midi_track (Midi_track const&);
 };
 
 #endif // MIDI_ITEM_HH
index 08643bb8d1d44e81d37b76fcb23208aad0493362..f367d62a2ab16f5284c60ca8999dcf3167281155 100644 (file)
@@ -16,7 +16,7 @@ struct Midi_stream {
   ~Midi_stream();
 
   Midi_stream& operator <<( String str);
-  Midi_stream& operator <<( Midi_item const& mitem_c_r);
+  Midi_stream& operator <<( Midi_item const& midi_c_r);
   Midi_stream& operator <<( int i);
 
   void open();
index 43732df92fd5d58725e1c675cbb557921fdcfb1d..aa36e00edf6e198ce266d515e0847e8f24f441fc 100644 (file)
@@ -32,7 +32,7 @@ private:
   Drul_array<Moment> rest_moments_;
   
   int start_measure_i_;
-  Multi_measure_rest_req* multi_measure_req_l_;
+  Rhythmic_req* multi_measure_req_l_;
   Multi_measure_rest* mmrest_p_;
   Multi_measure_rest* lastrest_p_;
 };
index 28ce7bf4cd4f04266a54b9a284c9801314f6d662..2c220138a9c384e636d31e17a40f1ee6e5612191 100644 (file)
@@ -124,13 +124,21 @@ public:
 
 /**
  Part: typeset a measure with the number of measures rest
- Score: typeset all individual measures ass full rests
+ Score: typeset all individual measures as full rests
  */
 class Multi_measure_rest_req : public Rhythmic_req  {
 public:
   VIRTUAL_COPY_CONS(Music);
 };
 
+/**
+ Typeset a repetition sign in each bar.
+ */
+class Repetitions_req : public Rhythmic_req  {
+public:
+  VIRTUAL_COPY_CONS(Music);
+};
+
 /// an extender line
 class Extender_req : public Request  {
 public:
diff --git a/lily/include/new-beaming.hh b/lily/include/new-beaming.hh
new file mode 100644 (file)
index 0000000..c4c0778
--- /dev/null
@@ -0,0 +1,39 @@
+/*   
+  new-beaming.hh -- declare New_beaming.hh
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef NEW_BEAMING_HH
+#define NEW_BEAMING_HH
+
+#include "parray.hh"
+#include "drul-array.hh"
+#include "moment.hh"
+
+struct Beaming_info
+{
+  Moment start_mom_;
+  Drul_array<int> beams_i_drul_;
+
+  Beaming_info (Moment, int);
+  int count  (Direction d);
+  Beaming_info ();
+};
+
+struct Beaming_info_list
+{
+  Array<Beaming_info> infos_;
+
+  int beam_extend_count (Direction) const;
+  int min_denominator_index () const;
+  void beamify ();
+  void add_stem (Moment d, int beams);
+};
+
+
+#endif /* NEW_BEAMING_HH */
+
index 8185180203f11ff77d677a4488ea6d0a473e4d67..5cf2ff31669a6324cb2de84e764d90f98cd0430a 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  new-repeated-music.hh -- declare New_repeated_music
+  new-repeated-music.hh -- declare Repeated_music
   
   source file of the GNU LilyPond music typesetter
   
@@ -7,8 +7,8 @@
   
  */
 
-#ifndef NEW_REPEATED_MUSIC_HH
-#define NEW_REPEATED_MUSIC_HH
+#ifndef RepEATED_MUSIC_HH
+#define RepEATED_MUSIC_HH
 
 #include "music.hh"
 
@@ -47,7 +47,7 @@
    the first alternative is assumed to be repeated.
    
 */
-class New_repeated_music : public Music
+class Repeated_music : public Music
 {
 public:
   bool fold_b_;
@@ -75,12 +75,12 @@ public:
   virtual void compress (Moment factor);
   VIRTUAL_COPY_CONS(Music);
 
-  New_repeated_music (Music*, int , Music_sequence*);
-  New_repeated_music (New_repeated_music const&);
-  ~New_repeated_music ();
+  Repeated_music (Music*, int , Music_sequence*);
+  Repeated_music (Repeated_music const&);
+  ~Repeated_music ();
 protected:
   virtual void do_print() const;
 };
 
 
-#endif /* NEW_REPEATED_MUSIC_HH */
+#endif /* RepEATED_MUSIC_HH */
index 837804367b6d05a584d7802de2ab0e4198b49c53..bfd49375c133f4aead8cbb4b21e67d6a227f3143 100644 (file)
@@ -21,12 +21,14 @@ public:
   Note_performer();
 
 protected:
-  virtual void do_process_requests();
+  virtual void do_process_requests ();
   virtual bool do_try_music (Music *req_l) ;
-  virtual void do_print() const;
+  virtual void do_print () const;
+  virtual void do_pre_move_processing ();
 
 private:
-  Array<Melodic_req *> note_req_l_;
+  Array<Note_req*> note_req_l_arr_;
+  Array<Audio_note*> note_p_arr_;
 };
 
 #endif // NOTE_PERFORMER_HH
index 8eeae2cf307246229d9b8a9200dfaa8f08215a7d..f5c103d0a7da23a2cc5f51444bb54578690c2a63 100644 (file)
@@ -24,9 +24,6 @@
  */
 class Paper_outputter
 {
-#ifdef __powerpc__
-  Protected_scm port_;
-#endif
 public:
   Paper_outputter (Paper_stream *);
   ~Paper_outputter ();
index 03fea2f25963cb990cd4ddb4d018c6635ff7d2b4..ce5b71ad518e88687688bf3ff33393bd86c72190 100644 (file)
   Convert a music definition into a audio representation.
   A baseclass
  */
-class Performer : public virtual Translator{
+class Performer : public virtual Translator
+{
 public:
   VIRTUAL_COPY_CONS(Translator);
   friend class Performer_group_performer;  
   Performer_group_performer* daddy_perf_l() const;
+
 protected:
   virtual void announce_element (Audio_element_info);
   virtual void acknowledge_element (Audio_element_info);
   virtual void process_acknowledged ();
   virtual int get_tempo_i() const;
-  virtual void play (Audio_element * elem_p );
+  virtual void play_element (Audio_element * elem_p );
 };
 
 
index c5bcd04f81ab483b76181451bb971d8ee0cf164c..2a4067e02e01662b30290bc9d53c78ff382c718c 100644 (file)
 #define REPEAT_ENGRAVER_HH
 
 #include "engraver.hh"
+#include "cons.hh"
+
+struct Bar_create_event
+{
+  Moment when_;
+  bool bar_b_;
+  bool last_b_;
+  String type_;
+  Bar_create_event();
+  Bar_create_event (Moment w, String s);
+  Bar_create_event (Moment w, int i, int j);
+};
+
+int compare (Bar_create_event const & c1, Bar_create_event const &c2)
+{
+  return (c1.when_ - c2.when_).sign();
+}
 
 /**
   Generate repeat-bars |: :| for repeated-music
 class Repeat_engraver : public Engraver 
 {
 public:
-
   VIRTUAL_COPY_CONS(Translator);
-  
+  Repeat_engraver ();
 protected:
   virtual void acknowledge_element (Score_element_info i);
   virtual void do_removal_processing ();
   virtual bool do_try_music (Music *req_l);
   virtual void do_process_requests();
   virtual void do_pre_move_processing();
+  virtual void do_post_move_processing ();
+  void queue_events ();
 
 private:
-  Link_array<New_repeated_music> repeated_music_arr_;
-  Link_array<Music> alternative_music_arr_;
-
-  Array<bool> bar_b_arr_;
-  Link_array<Volta_spanner> volta_p_arr_;
-  Array<Moment> stop_mom_arr_;
-  Array<Moment> alternative_start_mom_arr_;
-  Array<Moment> alternative_stop_mom_arr_;
-  Array<String> alternative_str_arr_;
+  Repeated_music *repeated_music_l_;
+  bool done_this_one_b_;
+
+  /*
+    Royal_brackla_create_queue is only two Whiskies away. :-)
+   */
+  Cons<Bar_create_event> *create_barmoments_queue_;
+
+  Volta_spanner * volta_span_p_;
+  Volta_spanner* end_volta_span_p_;
 };
 
 #endif // REPEAT_ENGRAVER_HH
index 731f489921f6e3ebea6ffc3176dcdaf8cc001987..e98e0026814c0cd0302dc8a7a511224531256cf1 100644 (file)
@@ -35,7 +35,7 @@ public:
   VIRTUAL_COPY_CONS(Translator);
   Paper_score * pscore_p_;
   
-
+  void forbid_breaks ();
   Score_engraver();
   virtual Music_output *get_output_p ();  
 protected:   
index 62abffaed846a15387144c9eab4abec16a84b2e0..289f6948286080592f114b1a511977bf2334f8c5 100644 (file)
@@ -30,9 +30,11 @@ protected:
   virtual void process();
   virtual void start();
   virtual void do_add_processing ();
+  virtual void announce_element (Audio_element_info);
   virtual int get_tempo_i() const;
-  virtual void play (Audio_element* p);
+  virtual void play_element (Audio_element* p);
   virtual Music_output *get_output_p ();
+
 private:
   void header (Midi_stream&);
 
index 72ec7831da917f3e8e7b1f0a31cf3261e8a38ca1..3eaa1a4e48f2415152f47037dc4b2dc0f5b2545e 100644 (file)
@@ -18,7 +18,6 @@
  */
 struct Staff_info {
   Time_description const *time_C_;
-  Rhythmic_grouping const *rhythmic_C_;
   Score_column *musical_l_;
   Score_column *command_l_;
 
index d9b2471c3e58fdfe060f1b1eaf2d2a8ce8ada08f..1eb3cda72763a1309c0c2e2fb79c709e8f53c27a 100644 (file)
@@ -11,7 +11,7 @@
 #include "performer-group-performer.hh"
 
 /** Perform a staff. Individual notes should have their instrument
-  (staff-wide) set, so we override play()
+  (staff-wide) set, so we override play_element()
 
   */
 class Staff_performer : public Performer_group_performer 
@@ -27,13 +27,18 @@ public:
   String instrument_str_;
 
 protected:
-  virtual void play (Audio_element* p);
+  virtual void play_element (Audio_element* p);
   virtual void do_removal_processing ();
   virtual void do_creation_processing ();
   virtual void do_process_requests ();
+  virtual void do_pre_move_processing ();
 
 private:
   Audio_staff* audio_staff_p_;
+  Audio_instrument* instrument_p_;
+  Audio_text* instrument_name_p_;
+  Audio_text* name_p_;
+  Audio_tempo* tempo_p_;
 };
 
 #endif // STAFF_PERFORMER_HH
index 9d3ea590c0868d9a71c43dc7b3e6b19688929009..38b84befe3be98aa7c9b6b7b2eb97d76629a9257 100644 (file)
@@ -12,7 +12,8 @@
 
 #include "performer.hh"
 
-class Swallow_performer : public Performer {
+class Swallow_performer : public Performer
+{
 public:
   VIRTUAL_COPY_CONS(Translator);
   
diff --git a/lily/include/tie-performer.hh b/lily/include/tie-performer.hh
new file mode 100644 (file)
index 0000000..08fe1b9
--- /dev/null
@@ -0,0 +1,64 @@
+/*   
+  tie-performer.hh -- declare 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  
+ */
+
+#ifndef TIE_PERFORMER_HH
+#define TIE_PERFORMER_HH
+
+#include "pqueue.hh"
+#include "performer.hh"
+
+struct CNote_melodic_tuple {
+  Melodic_req *req_l_ ;
+  Audio_note *note_l_;
+  Moment end_;
+  CNote_melodic_tuple ();
+  CNote_melodic_tuple (Audio_note*, Melodic_req*, Moment);
+  static int pitch_compare (CNote_melodic_tuple const &, CNote_melodic_tuple const &);
+  static int time_compare (CNote_melodic_tuple const &, CNote_melodic_tuple const &);  
+};
+
+inline int compare (CNote_melodic_tuple const &a, CNote_melodic_tuple const &b)
+{
+  return CNote_melodic_tuple::time_compare (a,b);
+}
+
+
+/**
+   Manufacture ties.  Acknowledge notes, and put them into a
+   priority queue. If we have a Tie_req, connect the notes that finish
+   just at this time, and note that start at this time.
+
+   TODO: should share code with Tie_engraver ?
+ */
+class Tie_performer : public Performer
+{
+public:
+  VIRTUAL_COPY_CONS(Translator);
+  Tie_performer ();
+
+private:
+  PQueue<CNote_melodic_tuple> past_notes_pq_;
+  Tie_req *req_l_;
+  Array<CNote_melodic_tuple> now_notes_;
+  Array<CNote_melodic_tuple> stopped_notes_;
+  Link_array<Audio_tie> tie_p_arr_;
+  
+protected:
+  virtual void do_post_move_processing ();
+  virtual void do_pre_move_processing ();
+  virtual void acknowledge_element (Audio_element_info);
+  virtual bool do_try_music (Music*);
+  virtual void do_process_requests ();
+  virtual void process_acknowledged ();
+
+};
+
+
+#endif /* TIE_PERFORMER_HH */
+
index e32f4fcaa810e9f47f4e6f9eae8a68757841cbb4..29c9ddcbd51d55bc8474fb7f56429f50c3722eda 100644 (file)
 struct Time_description {
   Moment when_;
 
-  /// found an error so far?
-  bool error_b_ ;
-
   /// if true, no bars needed, no reduction of whole_in_measure
   bool cadenza_b_;
     
   /// current measure info
   Moment whole_per_measure_;
 
+  /*
+    ugh: naming! junk whole_ prefixes.
+   */
   /// where am i 
   Moment whole_in_measure_;
 
index 8d5a78bf633f0614f026ec0a07379fabb00c48c7..9567489243c32643e0863c87943547deed842990 100644 (file)
@@ -11,7 +11,6 @@
 #define TIME_SIG_ENGRAVER_HH
 #include "engraver.hh"
 #include "time-description.hh"
-#include "rhythmic-grouping.hh"
 
 /**
   generate time_signatures. 
index b86e9b4a6a49f0e4e26fb58eec982acdc3fb6a44..e03514706d041557956bac87f14920f50d5161e8 100644 (file)
@@ -6,13 +6,14 @@
   (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
-#ifndef METER_PERFOMER_HH
-#define METER_PERFOMER_HH
+#ifndef TIME_SIGNATURE_PERFORMER_HH
+#define TIME_SIGNATURE_PERFORMER_HH
 
 #include "lily-proto.hh"
 #include "performer.hh"
 
-class Time_signature_performer : public Performer {
+class Time_signature_performer : public Performer
+{
 public:
   VIRTUAL_COPY_CONS(Translator);
   
@@ -23,9 +24,11 @@ protected:
   void do_print() const;
   virtual bool do_try_music (Music* req_l);
   virtual void do_process_requests();
+  virtual void do_pre_move_processing ();
 
 private:
   Time_signature_change_req* time_signature_req_l_;
+  Audio_time_signature* audio_p_;
 };
 
-#endif // METER_PERFOMER_HH
+#endif // TIME_SIGNATURE_PERFORMER_HH
index 1fc1524b5381e6b88c4f8fb2fbc9f8f20c4a95b8..00d55c5a465af503a1740b56f5d461f86b271312 100644 (file)
@@ -11,6 +11,7 @@
 #define TIMING_GRAV_HH
 
 #include "timing-translator.hh"
+#include "engraver.hh"
 
 /**
   Do time bookkeeping
index 5f67f7b9843fdf7c2fd57e1ec451db80f1b7c726..ad2517ee226693db34b9466b5e4d163fd0f71c45 100644 (file)
@@ -12,7 +12,6 @@
 
 #include "translator.hh"
 #include "time-description.hh"
-#include "rhythmic-grouping.hh"
 #include "parray.hh"
 
 class Timing_translator : public virtual Translator
@@ -20,10 +19,9 @@ class Timing_translator : public virtual Translator
 public:
   VIRTUAL_COPY_CONS(Translator);
   Time_signature_change_req * time_signature_req_l () const;
-  Timing_translator ();
   
   Time_description time_;
-  Rhythmic_grouping  default_grouping_;
+
   Link_array<Timing_req> timing_req_l_arr_;
 protected: 
   virtual void do_print () const;
index a1debb439b20fe51c1414eb7231d794e6604f892..636acf03bba2557444e2c0955c76de4ee7d76b8c 100644 (file)
@@ -19,10 +19,10 @@ public:
   Volta_spanner ();
  
   void add_column (Note_column*);
-  void add_column (Bar*);
+  void add_bar (Bar*);
  
   String number_str_;
-  Link_array<Bar> column_arr_;
+  Link_array<Bar> bar_arr_;
   Link_array<Note_column> note_column_arr_;
   bool last_b_;
 
index f74418df8db64f2e18cc3af1184d24ff4cb0e77d..40da38cb8c34f4f8f01f1e5edf254fc647f8e120 100644 (file)
@@ -53,9 +53,9 @@ Item::line_l() const
 void
 Item::copy_breakable_items()
 {
-  if (broken_to_drul_[LEFT] || broken_to_drul_[RIGHT] 
-      || ! breakable_b ())
-    return;
+  if (broken_to_drul_[LEFT] || broken_to_drul_[RIGHT]
+      || !breakable_b ())
+    return ;
 
   Drul_array<Item *> new_copies;
   Direction  i=LEFT;
@@ -114,7 +114,8 @@ Item::do_breakable_col_processing()
 {
   if (breakable_b ())
     do_break ();
-
+  else
+    try_visibility_lambda ();
 }
 Item*
 Item::find_prebroken_piece (Line_of_score*l) const
diff --git a/lily/key-def.cc b/lily/key-def.cc
new file mode 100644 (file)
index 0000000..7c492b2
--- /dev/null
@@ -0,0 +1,184 @@
+/*   
+  key-def.cc --  implement 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  
+ */
+
+#include "key-def.hh"
+#include "debug.hh"
+
+Key_def::Key_def ()
+{
+  modality_i_ = 0;
+  ordinary_key_b_ = false;
+}
+int
+Key_def::ordinary_accidentals_i () const
+{
+  if (!ordinary_key_b_) 
+    {
+      programming_error ("Accidentals requested for non-conventional key");
+      return 0;
+    }
+
+  int p;
+  if (pitch_arr_.size () < 1) 
+    {
+      warning (_ ("No key name: assuming `C'"));
+      p = 0;
+    }
+  else
+    {
+      p = pitch_arr_[0].semitone_pitch ();
+      p += modality_i_;
+    }
+  /* Solve the equation 7*accidentals_i mod 12 = p, -6 <= accidentals_i <= 5 */
+  int accidentals_i = (7*p) % 12;
+  accidentals_i = (accidentals_i + 18) % 12 -6;
+  
+  /* Correct from flats to sharps or vice versa */
+  if (accidentals_i * pitch_arr_[0].accidental_i_ < 0)
+    accidentals_i += 12 * sign (pitch_arr_[0].accidental_i_);
+  return accidentals_i;
+}
+
+int
+Key_def::flats_i () const
+{
+  if (ordinary_key_b_) 
+    return 0 >? -ordinary_accidentals_i ();
+  int flats_i = 0;
+  for (int i = 0; i < pitch_arr_.size (); i++)
+    {
+      if (pitch_arr_[i].accidental_i_ < 0)
+       flats_i -= pitch_arr_[i].accidental_i_;
+    }
+  return flats_i;
+}
+
+bool
+Key_def::minor_b () const
+{
+  return modality_i_ == 3;
+}
+
+int
+Key_def::sharps_i () const
+{
+  if (ordinary_key_b_) 
+    return 0 >? ordinary_accidentals_i ();
+  int sharps_i = 0;
+  for (int i = 0; i < pitch_arr_.size (); i++)
+    {
+      if (pitch_arr_[i].accidental_i_ > 0)
+       sharps_i += pitch_arr_[i].accidental_i_;
+    }
+  return sharps_i;
+}
+
+void
+Key_def::transpose (Musical_pitch d) 
+{
+  if (ordinary_key_b_ ) 
+    { 
+      if (pitch_arr_.size () > 0) 
+        pitch_arr_[0].transpose (d);
+      else
+        {
+          warning (_ ("don't know how handle empty keys")); // TODO 
+        }
+    }
+  else
+    {
+      Array<Musical_pitch> old_pitch_arr_;
+      for (int i = 0; i < pitch_arr_.size (); i++)
+        {
+          old_pitch_arr_.push (pitch_arr_[i]);
+        }
+      // set accidentals for \key d (as in Key_engraver::read_req)
+      // (later called "new accidentals")
+      int p = d.semitone_pitch ();
+      /* Solve the equation 7*accidentals_i mod 12 = p, -6 <= accidentals_i <= 5 */
+      int accidentals_i = (7*p) % 12;
+      accidentals_i = (accidentals_i + 18) % 12 -6;
+
+      /* Correct from flats to sharps or vice versa */
+      if (accidentals_i * d.accidental_i_ < 0)
+      accidentals_i += 12 * sign (d.accidental_i_);
+    
+      pitch_arr_.clear ();
+      if (accidentals_i < 0) 
+        {
+         int accidental = 6 ; // First accidental: bes
+          for ( ; accidentals_i < 0 ; accidentals_i++ ) 
+           {
+             Musical_pitch m;
+             m.accidental_i_ = -1;
+             m.notename_i_ = accidental;
+             pitch_arr_.push (m);
+     
+             accidental = (accidental + 3) % 7 ;
+           }
+       }
+      else 
+       { 
+         int accidental = 3 ; // First accidental: fis
+         for ( ; accidentals_i > 0 ; accidentals_i-- ) 
+           {
+             Musical_pitch m;
+             m.accidental_i_ = 1;
+             m.notename_i_ = accidental;
+             pitch_arr_.push (m);
+   
+             accidental = (accidental + 4) % 7 ;
+           }
+       }
+      // Check if transposed old accidentals and the new ones coincide
+      accidentals_i = pitch_arr_.size ();
+      int acc_found;
+      Musical_pitch mm;
+      for (int i=0; i < old_pitch_arr_.size (); i++)
+        {
+          acc_found = 0;
+          mm = old_pitch_arr_[i];
+         mm.transpose (d);
+          for (int j=0; ( (j < accidentals_i) && (acc_found == 0)); j++)
+            {
+              if (pitch_arr_[j].notename_i_ == mm.notename_i_)
+                {
+                  if (mm.accidental_i_ == 0)
+                    {
+                      // remove new accidental 
+                      pitch_arr_.del (j);
+                      accidentals_i--;
+                      acc_found = 1;
+                   }
+                 else
+                    {
+                      // change new accidental 
+                      pitch_arr_[j].accidental_i_ = mm.accidental_i_;
+                      acc_found = 1;
+                   }
+                }
+            }
+          if (acc_found == 0)
+            {
+              // add transposed old accidental 
+             pitch_arr_.push (mm);
+            }
+        }
+    }
+}
+
+void
+Key_def::squash_octaves ()
+{
+  for (int i=0; i < pitch_arr_.size (); i++)
+    {
+      pitch_arr_[i].octave_i_ = 0;
+    }
+}
index 0fc8ad89463021261a922b9d08ba6d3b50869168..50b137ab897ad041d9da2ab3b6d4facd8af459f1 100644 (file)
@@ -134,27 +134,11 @@ Key_engraver::read_req (Key_change_req const * r)
   
   accidental_idx_arr_.clear ();
 
-  if (r->ordinary_key_b_) 
+  if (r->key_.ordinary_key_b_) 
     {
-      int p;
-      if (r->pitch_arr_.size () < 1) 
-        {
-         r->warning (_ ("No key name: assuming `C'"));
-         p = 0;
-       }
-      else
-       {
-         p = r->pitch_arr_[0].semitone_pitch ();
-         p += r->modality_i_;
-       }
-      /* Solve the equation 7*no_of_acc mod 12 = p, -6 <= no_of_acc <= 5 */
-      int no_of_acc = (7*p) % 12;
-      no_of_acc = (no_of_acc + 18) % 12 -6;
-
-      /* Correct from flats to sharps or vice versa */
-      if (no_of_acc * r->pitch_arr_[0].accidental_i_ < 0)
-       no_of_acc += 12 * sign (r->pitch_arr_[0].accidental_i_);
+      int no_of_acc = r->key_.ordinary_accidentals_i ();
 
+      // Hmm, can't these be handled/constructed by Key_change_req?
       if (no_of_acc < 0) 
        {
          int accidental = 6 ; // First accidental: bes
@@ -192,9 +176,9 @@ Key_engraver::read_req (Key_change_req const * r)
     }
   else // Special key
     {
-      for (int i = 0; i < r->pitch_arr_.size (); i ++) 
+      for (int i = 0; i < r->key_.pitch_arr_.size (); i ++) 
        {
-         Musical_pitch m_l =r->pitch_arr_[i];
+         Musical_pitch m_l =r->key_.pitch_arr_[i];
          if (key_.multi_octave_b_)
            key_.set (m_l);
          else
index ce9be75422f6f550bf9e9b79cbb6846dcc86ce86..14d73dbbb9fd3539030d00400b3ab695dab701d8 100644 (file)
 
 
 
-ADD_THIS_TRANSLATOR(Key_performer);
+ADD_THIS_TRANSLATOR (Key_performer);
 
-Key_performer::Key_performer()
+Key_performer::Key_performer ()
 {
   key_req_l_ = 0;
+  audio_p_ = 0;
 }
 
-Key_performer::~Key_performer()
+Key_performer::~Key_performer ()
 {
 }
 
 void 
-Key_performer::do_print() const
+Key_performer::do_print () const
 {
 #ifndef NPRINT
   if (key_req_l_)
-    key_req_l_->print();
+    key_req_l_->print ();
 #endif
 }
 
 void
-Key_performer::do_process_requests()
+Key_performer::do_process_requests ()
 {
   if (key_req_l_)
-    play (new Audio_key (key_req_l_));
-  key_req_l_ = 0;
+    {
+      audio_p_ = new Audio_key (key_req_l_->key_);
+      Audio_element_info info (audio_p_, key_req_l_);
+      announce_element (info);
+      key_req_l_ = 0;
+    }
+}
+
+void
+Key_performer::do_pre_move_processing ()
+{
+  if (audio_p_)
+    {
+      play_element (audio_p_);
+      audio_p_ = 0;
+    }
 }
 
 bool
index 7ae048437948789e907f8a1865bd9b74a666ee6a..be719e1c032c258f185c17f8f05b08e5cb7fa417 100644 (file)
 #include "musical-request.hh"
 #include "audio-item.hh"
 
+ADD_THIS_TRANSLATOR (Lyric_performer);
 
-
-
-ADD_THIS_TRANSLATOR(Lyric_performer);
+Lyric_performer::Lyric_performer ()
+{
+  audio_p_ = 0;
+}
 
 void 
-Lyric_performer::do_print() const
+Lyric_performer::do_print () const
 {
 #ifndef NPRINT
-  if (lreq_arr_.size())
-    lreq_arr_[0]->print();
+  if (lreq_arr_.size ())
+    lreq_arr_[0]->print ();
 #endif
 }
 
 void
-Lyric_performer::do_process_requests()
+Lyric_performer::do_process_requests ()
 {
-  if (lreq_arr_.size() && lreq_arr_[0]->text_str_.length_i())
-    play (new Audio_text (Audio_text::LYRIC, lreq_arr_[0]->text_str_));
+  if (lreq_arr_.size () && lreq_arr_[0]->text_str_.length_i ())
+    {
+      audio_p_ = new Audio_text (Audio_text::LYRIC, lreq_arr_[0]->text_str_);
+      Audio_element_info info (audio_p_, lreq_arr_[0]);
+      announce_element (info);
+    }
+  lreq_arr_.clear();
+}
+
+void
+Lyric_performer::do_pre_move_processing ()
+{
+  if (audio_p_)
+    {
+      play_element (audio_p_);
+      audio_p_ = 0;
+    }
   lreq_arr_.clear();
 }
 
index b358e1843359de320537accbd7e5a50d1a3723b8..b52ca3cf16db5ba645fa1bfa84dbf929d76a0b68 100644 (file)
 #include "misc.hh"
 #include "string.hh"
 #include "string-convert.hh"
-#include "command-request.hh"
-#include "musical-request.hh"
 #include "midi-item.hh"
 #include "midi-stream.hh"
 #include "audio-item.hh"
+#include "duration.hh"
 
 #include "killing-cons.tcc"
 
-Midi_chunk::Midi_chunk ()
-  : Midi_item (0)
+Midi_item*
+Midi_item::midi_p (Audio_item* a)
 {
+  if (Audio_key* i = dynamic_cast<Audio_key*> (a))
+    return new Midi_key (i);
+  else if (Audio_instrument* i = dynamic_cast<Audio_instrument*> (a))
+    return i->str_.length_i () ? new Midi_instrument (i) : 0;
+  else if (Audio_note* i = dynamic_cast<Audio_note*> (a))
+    return new Midi_note (i);
+  else if (Audio_tempo* i = dynamic_cast<Audio_tempo*> (a))
+    return new Midi_tempo (i);
+  else if (Audio_time_signature* i = dynamic_cast<Audio_time_signature*> (a))
+    return new Midi_time_signature (i);
+  else if (Audio_text* i = dynamic_cast<Audio_text*> (a))
+    return i->text_str_.length_i () ? new Midi_text (i) : 0;
+  else
+    assert (0);
+
+  // isn't C++ grand?
+  return 0;
 }
 
 void
@@ -43,12 +59,7 @@ Midi_chunk::str () const
 {
   String str = header_str_;
   String dat = data_str ();
-#if 1 
   String length_str = String_convert::i2hex_str (dat.length_i () 
-#else
-  // huh, huh??
-  String length_str = String_convert::i2hex_str (data_str_.length_i () 
-#endif
     + footer_str_.length_i (), 8, '0');
   length_str = String_convert::hex2bin_str (length_str);
   str += length_str;
@@ -58,7 +69,6 @@ Midi_chunk::str () const
 }
 
 Midi_duration::Midi_duration (Real seconds_f)
-  : Midi_item (0)
 {
   seconds_f_ = seconds_f;
 }
@@ -69,16 +79,10 @@ Midi_duration::str () const
   return String ("<duration: ") + to_str (seconds_f_) + ">";
 }
 
-Midi_event::Midi_event (Moment delta_mom, Midi_item* mitem_p)
+Midi_event::Midi_event (Moment delta_mom, Midi_item* midi_p)
 {
   delta_mom_ = delta_mom;
-  mitem_p_ = mitem_p;
-}
-
-Midi_event::~Midi_event ()
-{
-// uhuh
-//  delete mitem_p_;
+  midi_p_ = midi_p;
 }
 
 String
@@ -86,14 +90,13 @@ Midi_event::str () const
 {
   int delta_i = delta_mom_ * Moment (Duration::division_1_i_s);
   String delta_str = Midi_item::i2varint_str (delta_i);
-  String mitem_str = mitem_p_->str ();
-  assert (mitem_str.length_i ());
-  return delta_str + mitem_str;
+  String midi_str = midi_p_->str ();
+  assert (midi_str.length_i ());
+  return delta_str + midi_str;
 }
 
 
 Midi_header::Midi_header (int format_i, int tracks_i, int clocks_per_4_i)
-  : Midi_chunk ()
 {
   String str;
        
@@ -277,16 +280,10 @@ char const* const instrument_name_sz_a_[ ] = {
          0
 }; 
 
-Midi_instrument::Midi_instrument (int channel_i, String instrument_str)
-  : Midi_item (0)
-{
-  instrument_str_ = instrument_str;
-  instrument_str_.to_lower ();
-  channel_i_ = channel_i;
-}
-
-Midi_item::~Midi_item ()
+Midi_instrument::Midi_instrument (Audio_instrument* a)
 {
+  audio_l_ = a;
+  audio_l_->str_.to_lower ();
 }
 
 String
@@ -295,7 +292,7 @@ Midi_instrument::str () const
   Byte program_byte = 0;
   bool found = false;
   for (int i = 0; !found && instrument_name_sz_a_[i]; i++)
-    if (instrument_str_ == String (instrument_name_sz_a_[ i ])) 
+    if (audio_l_->str_ == String (instrument_name_sz_a_[ i ])) 
       {
        program_byte = (Byte)i;
        found = true;
@@ -303,7 +300,7 @@ Midi_instrument::str () const
 
   if (!found)
     {
-      warning (_f("No such instrument: `%s'", instrument_str_.ch_C ()));
+      warning (_f("No such instrument: `%s'", audio_l_->str_.ch_C ()));
     }
   
   String str = to_str ((char) (0xc0 + channel_i_));
@@ -311,12 +308,15 @@ Midi_instrument::str () const
   return str;
 }
 
-Midi_item::Midi_item (Audio_item* audio_item_l)
+Midi_item::Midi_item ()
 {
-  audio_item_l_ = audio_item_l;
   channel_i_ = 0;
 }
 
+Midi_item::~Midi_item ()
+{
+}
+
 String
 Midi_item::i2varint_str (int i)
 {
@@ -340,17 +340,16 @@ Midi_item::i2varint_str (int i)
   return str;
 }
 
-Midi_key::Midi_key (Audio_item* audio_item_l)
-  : Midi_item (audio_item_l)
+Midi_key::Midi_key (Audio_key*a)
 {
+  audio_l_ = a;
 }
 
 String
 Midi_key::str () const
 {
-  Key_change_req* k = dynamic_cast <Key_change_req *> (audio_item_l_->req_l_);
-  int sharps_i = k->sharps_i ();
-  int flats_i = k->flats_i ();
+  int sharps_i = audio_l_->key_.sharps_i ();
+  int flats_i = audio_l_->key_.flats_i ();
 
   // midi cannot handle non-conventional keys
   if (flats_i && sharps_i)
@@ -363,23 +362,21 @@ Midi_key::str () const
 
   String str = "ff5902";
   str += String_convert::i2hex_str (accidentals_i, 2, '0');
-  int minor_i = k->minor_b ();
-  str += String_convert::i2hex_str (minor_i, 2, '0');
+  str += String_convert::i2hex_str ((int)audio_l_->key_.minor_b (), 2, '0');
   return String_convert::hex2bin_str (str);
 }
 
-Midi_time_signature::Midi_time_signature (Audio_item* audio_item_l)
-  : Midi_item (audio_item_l)
+Midi_time_signature::Midi_time_signature (Audio_time_signature* a)
 {
+  audio_l_ = a;
   clocks_per_1_i_ = 18;
 }
 
 String
 Midi_time_signature::str () const
 {
-  Time_signature_change_req* m = dynamic_cast <Time_signature_change_req *> (audio_item_l_->req_l_);
-  int num_i = m->beats_i_;
-  int den_i = m->one_beat_i_;
+  int num_i = audio_l_->beats_i_;
+  int den_i = audio_l_->one_beat_i_;
 
   String str = "ff5804";
   str += String_convert::i2hex_str (num_i, 2, '0');
@@ -389,30 +386,30 @@ Midi_time_signature::str () const
   return String_convert::hex2bin_str (str);
 }
 
-Midi_note::Midi_note (Audio_item* audio_item_l)
-  : Midi_item (audio_item_l)
+Midi_note::Midi_note (Audio_note* a)
 {
+  audio_l_ = a;
   dynamic_byte_ = 0x7f;
-  assert (dynamic_cast<Audio_note*> (audio_item_l));
 }
 
 Moment
 Midi_note::length_mom () const
 {
-  Moment m = dynamic_cast <Rhythmic_req *> (audio_item_l_->req_l_)->length_mom ();
+  Moment m = audio_l_->length_mom_;
+#if 0
   if (m < Moment (1, 1000))
     {
       warning (_ ("silly duration"));
       m = 1;
      }
+#endif
   return m;
 }
 
 int
 Midi_note::pitch_i () const
 {
-  int p = dynamic_cast <Melodic_req*> (audio_item_l_->req_l_)->pitch_.semitone_pitch () 
-    + dynamic_cast<Audio_note*>(audio_item_l_)->transposing_i_;
+  int p = audio_l_->pitch_.semitone_pitch () + audio_l_->transposing_i_;
   if (p == INT_MAX)
     {
       warning (_ ("silly pitch"));
@@ -433,19 +430,25 @@ Midi_note::str () const
   return str;
 }
 
-Midi_note_off::Midi_note_off (Midi_note* midi_note_l)
-  : Midi_item (midi_note_l->audio_item_l_)
+Midi_note_off::Midi_note_off (Midi_note* n)
 {
+  on_l_ = n;
+  channel_i_ = n->channel_i_;
+
+  // Anybody who hears any difference, or knows how this works?
+  
   // 0x64 is supposed to be neutral, but let's try
-  aftertouch_byte_ = 0x64;
-  channel_i_ = midi_note_l->channel_i_;
+  //aftertouch_byte_ = 0x64;
+
+  static int i = 0;
+  aftertouch_byte_ = i;
+  i += 0x10;
 }
 
 int
 Midi_note_off::pitch_i () const
 {
-  return dynamic_cast <Melodic_req *> (audio_item_l_->req_l_)->pitch_.semitone_pitch ()
-    + dynamic_cast<Audio_note*>(audio_item_l_)->transposing_i_;
+  return on_l_->pitch_i ();
 }
 
 String
@@ -459,48 +462,41 @@ Midi_note_off::str () const
   return str;
 }
 
-Midi_tempo::Midi_tempo (Audio_item* audio_item_l)
-  : Midi_item (audio_item_l)
-{
-  per_minute_4_i_ = dynamic_cast<Audio_tempo*>(audio_item_l_)->per_minute_4_i_;
-}
-
-Midi_tempo::Midi_tempo (int per_minute_4_i)
-  : Midi_item (0)
+Midi_tempo::Midi_tempo (Audio_tempo* a)
 {
-  per_minute_4_i_ = per_minute_4_i;
+  audio_l_ = a;
 }
 
 String
 Midi_tempo::str () const
 {
-  int useconds_per_4_i = 60 * (int)1e6 / per_minute_4_i_;
+  int useconds_per_4_i = 60 * (int)1e6 / audio_l_->per_minute_4_i_;
   String str = "ff5103";
   str += String_convert::i2hex_str (useconds_per_4_i, 6, '0');
   return String_convert::hex2bin_str (str);
 }
 
-Midi_text::Midi_text (Audio_item* audio_item_l)
-  : Midi_item (audio_item_l)
+Midi_text::Midi_text (Audio_text* a)
 {
-  text_str_ = dynamic_cast<Audio_text*>(audio_item_l_)->text_str_;
-  type_ = (Type) dynamic_cast<Audio_text*>(audio_item_l_)->type_;
+  audio_l_ = a;
 }
 
+#if 0
 Midi_text::Midi_text (Midi_text::Type type, String text_str)
-  : Midi_item (0)
+  : Audio_text ()
 {
   text_str_ = text_str;
   type_ = type;
 }
+#endif
 
 String
 Midi_text::str () const
 {
-  String str = "ff" + String_convert::i2hex_str (type_, 2, '0');
+  String str = "ff" + String_convert::i2hex_str (audio_l_->type_, 2, '0');
   str = String_convert::hex2bin_str (str);
-  str += i2varint_str (text_str_.length_i ());
-  str += text_str_;
+  str += i2varint_str (audio_l_->text_str_.length_i ());
+  str += audio_l_->text_str_;
   return str;
 }
 
@@ -544,11 +540,11 @@ Midi_track::Midi_track ()
 }
 
 void 
-Midi_track::add (Moment delta_time_mom, Midi_item* mitem_p)
+Midi_track::add (Moment delta_time_mom, Midi_item* midi_p)
 {
   assert (delta_time_mom >= Moment (0));
 
-  Midi_event * e = new Midi_event (delta_time_mom, mitem_p);
+  Midi_event * e = new Midi_event (delta_time_mom, midi_p);
   event_p_list_.append (new Killing_cons<Midi_event> (e, 0));
 }
 
@@ -566,7 +562,3 @@ Midi_track::data_str () const
     }
   return str;
 }
-
-Midi_track::~Midi_track ()
-{
-}
index f51110daed2d448f8ce90965c53deff9ac313a26..ba8f161a9501117bec2384e53d21b48d0bbaf458 100644 (file)
@@ -40,10 +40,10 @@ Midi_stream::operator << (String str)
 }
 
 Midi_stream&
-Midi_stream::operator << (Midi_item const& mitem_c_r)
+Midi_stream::operator << (Midi_item const& midi_c_r)
 {
-//    *this <<mitem_c_r.str (); 
-  String str = mitem_c_r.str ();
+//    *this <<midi_c_r.str (); 
+  String str = midi_c_r.str ();
   if (check_debug && !monitor->silent_b ("Midistrings")) 
     {
     str = String_convert::bin2hex_str (str) + "\n";
index 2caa2025767833da9e9f98ce3e852b50bca08df2..c0afd12f1504ba410e6cf03ca740e6825956481c 100644 (file)
@@ -106,27 +106,32 @@ Midi_walker::output_event (Moment now_mom, Midi_item* l)
 void
 Midi_walker::process()
 {
-  Audio_item* ptr = (*item_l_arr_l_)[index_];
-  do_stop_notes (ptr->audio_column_l_->at_mom ());
+  Audio_item* audio_p = (*item_l_arr_l_)[index_];
+  do_stop_notes (audio_p->audio_column_l_->at_mom ());
 
   /*
     THIS IS A MEMORY LEAK. FIXME.
    */
-  Midi_item* p = ptr->midi_item_p ();
-  if (!p)
-    return;
-  p->channel_i_ = track_l_->number_i_;
-  
-  if (Midi_note *mi = dynamic_cast<Midi_note*>(p))
-    do_start_note (mi);
-  else
-    output_event (ptr->audio_column_l_->at_mom (), p);
+  //Midi_item* p = ptr->midi_item_p ();
+  if (Midi_item* midi_p = Midi_item::midi_p (audio_p))
+    {
+      midi_p->channel_i_ = track_l_->number_i_;
+      if (Midi_note* note_p = dynamic_cast<Midi_note*>(midi_p))
+       {
+         if (note_p->length_mom ())
+           do_start_note (note_p);
+       }
+      else
+       output_event (audio_p->audio_column_l_->at_mom (), midi_p);
+    }
 }
+
 bool
 Midi_walker::ok () const
 {
   return index_ <item_l_arr_l_->size ();
 }
+
 void
 Midi_walker::operator ++(int)
 {
index 37e3baa7ac9137f263629ad329952f0fc68db521..00fd9118c15c4de6e8efd260c24592c0154525dc 100644 (file)
@@ -42,20 +42,28 @@ Multi_measure_rest_engraver::acknowledge_element (Score_element_info i)
 bool
 Multi_measure_rest_engraver::do_try_music (Music* req_l)
 {
- if (Multi_measure_rest_req *mr = dynamic_cast<Multi_measure_rest_req *> (req_l))
-   {
-     if (multi_measure_req_l_)
-       if (!multi_measure_req_l_->equal_b (mr)
-          || rest_moments_[START] != now_mom ())
-        return false;
-  
-     multi_measure_req_l_ = mr;
-     rest_moments_[START] = now_mom ();
-     
-     rest_moments_[STOP] = rest_moments_[START] + multi_measure_req_l_->duration_.length_mom ();
-     return true;
-   }
- return false;
+  Rhythmic_req *r=0;
+  if (Multi_measure_rest_req *mr = 
+      dynamic_cast<Multi_measure_rest_req *> (req_l))
+    r=mr;
+  else if (Repetitions_req *rr = 
+          dynamic_cast<Repetitions_req *> (req_l))
+    r=rr;
+  if (r)
+    {
+      if (multi_measure_req_l_)
+       if (!multi_measure_req_l_->equal_b (r)
+           || rest_moments_[START] != now_mom ())
+         return false;
+      
+      multi_measure_req_l_ = r;
+      rest_moments_[START] = now_mom ();
+      
+      rest_moments_[STOP] = rest_moments_[START] +
+       multi_measure_req_l_->duration_.length_mom ();
+      return true;
+    }
+  return false;
 }
 
 void
@@ -65,6 +73,9 @@ Multi_measure_rest_engraver::do_process_requests ()
     {
       Time_description const *time = get_staff_info().time_C_;
       mmrest_p_ = new Multi_measure_rest;
+      if(dynamic_cast<Repetitions_req *> (multi_measure_req_l_))
+       mmrest_p_->set_elt_property (alt_symbol_scm_sym, 
+                                    gh_str02scm("scripts-repeatsign"));
       announce_element (Score_element_info (mmrest_p_, multi_measure_req_l_));
       start_measure_i_ = time->bars_i_;
     }
index 26e55b17706db6149843b0af3411d52d61959419..5c604e317644c65d121e1da3a4cde8b8bee81f6e 100644 (file)
@@ -75,7 +75,14 @@ Multi_measure_rest::do_brew_molecule_p () const
 
   
   Molecule s;
-  if (measures_i_ == 1 || measures_i_ == 2 || measures_i_ == 4) 
+  bool rest_symbol=true;
+  SCM alt_symbol_sym =get_elt_property (alt_symbol_scm_sym);
+  if (alt_symbol_sym != SCM_BOOL_F)
+    {
+      s = lookup_l () -> afm_find (ly_scm2string (SCM_CDR(alt_symbol_sym)));
+      rest_symbol = false;
+    }
+  else if (measures_i_ == 1 || measures_i_ == 2 || measures_i_ == 4) 
     {
       s = lookup_l ()->rest (- intlog2(measures_i_), 0, "");
       s.translate_axis (-s.extent ()[X_AXIS].length () / 2, X_AXIS);
@@ -86,7 +93,7 @@ Multi_measure_rest::do_brew_molecule_p () const
     }
   mol_p->add_molecule (s);
   Real interline_f = staff_line_leading_f ();
-  if (measures_i_ == 1)
+  if (measures_i_ == 1 && rest_symbol)
     {
       mol_p->translate_axis (interline_f, Y_AXIS);
     }
@@ -97,7 +104,6 @@ Multi_measure_rest::do_brew_molecule_p () const
       s.translate_axis (3.0 * interline_f, Y_AXIS);
       mol_p->add_molecule (s);
     }
-
   mol_p->translate_axis (x_off, X_AXIS);
   return mol_p;
 }
index 1590f4fc492e9009cf0452bcf72fc773093994c5..e975d300a9a10184bb079553c315e1da1e977e34 100644 (file)
@@ -130,7 +130,7 @@ Music_iterator::static_get_iterator_p (Music const *m)
     p = new Grace_iterator;      
   else if (dynamic_cast<Music_wrapper  const *> (m))
     p = new Music_wrapper_iterator;
-  else if (New_repeated_music const * n = dynamic_cast<New_repeated_music const *> (m))
+  else if (Repeated_music const * n = dynamic_cast<Repeated_music const *> (m))
     {
       if (n->fold_b_)
        p = new Folded_repeat_iterator;
index c3cf8fab26bd12ed8fad534345c72cc3906e59d9..36087d65c4cd31f2acbd9ecb4bab785dead207fb 100644 (file)
@@ -20,7 +20,6 @@ Simultaneous_music::length_mom () const
 }
 
 
-
 void
 Music_sequence::compress (Moment m)
 {
index 048dd1856b1e589f29c71562b1492518be987514..d0521d2240521b015420ed6ac6e7d04f307ad521 100644 (file)
@@ -36,7 +36,6 @@ static Keyword_ent the_key_tab[]={
   {"context", CONTEXT},
   {"duration", DURATION},
   {"font", FONT},
-  {"grouping", GROUPING},
   {"grace", GRACE},
   {"header", HEADER},
   {"in", IN_T},
@@ -60,6 +59,7 @@ static Keyword_ent the_key_tab[]={
   {"relative", RELATIVE},
   {"remove", REMOVE},
   {"repeat", REPEAT},
+  {"repetitions", REPETITIONS},
   {"scm", SCM_T},
   {"scmfile", SCMFILE},
   {"score", SCORE},
diff --git a/lily/new-beaming.cc b/lily/new-beaming.cc
new file mode 100644 (file)
index 0000000..07337b2
--- /dev/null
@@ -0,0 +1,97 @@
+/*   
+  new-beaming.cc --  implement Beaming_info, Beaming_info_list
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "new-beaming.hh"
+
+Beaming_info::Beaming_info( )
+{
+  start_mom_ = 0;
+  beams_i_drul_[LEFT] = 0;
+  beams_i_drul_[RIGHT] = 0;  
+}
+
+Beaming_info::Beaming_info(Moment m, int i)
+{
+  start_mom_ = m;
+  beams_i_drul_[LEFT] = i;
+  beams_i_drul_[RIGHT] = i;  
+}
+
+const int infinity_i = 1000;   // guh.
+
+int
+Beaming_info_list::min_denominator_index () const
+{
+  int minden = infinity_i;
+  int minidx = -1;
+
+  for (int i=1; i < infos_.size ( ); i++)
+    {
+      if (infos_[i].start_mom_.den_i () < minden)
+       {
+         minidx = i;
+         minden = infos_[i].start_mom_.den_i  ();
+       }
+    }
+
+  return minidx;
+}
+
+int
+Beaming_info_list::beam_extend_count (Direction d) const
+{
+  if (infos_.size () == 1)
+    return infos_[0].beams_i_drul_[d];
+
+  Beaming_info thisbeam  = infos_.boundary (d, 0);
+  Beaming_info next  = infos_.boundary (d, 1);
+  
+  return thisbeam.beams_i_drul_[-d] <? next.beams_i_drul_[d];
+}
+
+void
+Beaming_info_list::beamify ()
+{
+  if (infos_.size () <= 1)
+    return;
+      
+  Drul_array<Beaming_info_list> splits;
+  int m = min_denominator_index ();
+  splits[LEFT].infos_ = infos_.slice (0,m);
+  splits[RIGHT].infos_ = infos_.slice (m, infos_.size ());
+
+  Direction d = LEFT;
+  do
+    {
+      splits[d].beamify ();
+    }
+  while (flip (&d) != LEFT);
+
+  int middle_beams = splits[RIGHT].beam_extend_count (LEFT) <?
+    splits[LEFT].beam_extend_count (RIGHT);
+
+  do
+    {
+      if (splits[d].infos_.size () != 1)
+       {
+         splits[d].infos_.boundary (-d, 0).beams_i_drul_[-d] = middle_beams;
+       }
+    }
+  while (flip (&d) != LEFT);
+
+  infos_ = splits[LEFT].infos_;
+  infos_.concat (splits[RIGHT].infos_);
+}
+
+void
+Beaming_info_list::add_stem (Moment m, int b)
+{
+  infos_.push  (Beaming_info (m, b));
+}
index c5c8dfca3394cd8bb3c936a6ed88182d44c7f5e8..a0fde290c08d79dfaf2c199974b068f57c5db2ff 100644 (file)
@@ -65,7 +65,7 @@ Note_column::dir () const
   else if (head_l_arr_.size ())
     return sign (head_positions_interval().center ());
 
-  programming_error ("Note column without heads and  stem!");
+  programming_error ("Note column without heads and stem!");
   return CENTER;
 }
 
index a96439a92884d6ad253ae146f32c838b72be4c10..5542c8e693a2919c63038e1078c834f4c1ca5ea9 100644 (file)
@@ -22,16 +22,16 @@ void
 Note_performer::do_print () const
 {
 #ifndef NPRINT
-  if (note_req_l_.size()>0)
-    for(int i=0;i<note_req_l_.size();i++)
-      note_req_l_[i]->print ();
+  if (note_req_l_arr_.size()>0)
+    for(int i=0;i<note_req_l_arr_.size();i++)
+      note_req_l_arr_[i]->print ();
 #endif
 }
 
 void 
 Note_performer::do_process_requests () 
 {
-  if (note_req_l_.size()>0)
+  if (note_req_l_arr_.size ())
     {
       int transposing_i = 0;
       //urg
@@ -39,18 +39,34 @@ Note_performer::do_process_requests ()
       if (!prop.empty_b () && prop.isnum_b ()) 
        transposing_i = prop;
 
-      while(note_req_l_.size()>0)
-       play (new Audio_note (note_req_l_.pop(), transposing_i));
-
+      while(note_req_l_arr_.size ())
+       {
+         Note_req* n = note_req_l_arr_.pop ();
+         Audio_note* p = new Audio_note (n->pitch_, n->length_mom (), transposing_i);
+         Audio_element_info info (p, n);
+         announce_element (info);
+         note_p_arr_.push (p);
+       }
     }
 }
 
-bool 
+void
+Note_performer::do_pre_move_processing ()
+{
+  for (int i=0; i < note_p_arr_.size (); i++)
+    {
+      play_element (note_p_arr_[i]);
+    }
+  note_p_arr_.clear ();
+  note_req_l_arr_.clear ();
+}
+bool
 Note_performer::do_try_music (Music* req_l)
 {
   if (Note_req *nr = dynamic_cast <Note_req *> (req_l))
     {
-      note_req_l_.push(nr);
+      note_req_l_arr_.push (nr);
       return true;
     }
   return false;
index c48cbddce0683d0ae029dfe92bcbaacb71be01c0..261d3795f2995d2e5bf1b16d5e57aa447ee480b8 100644 (file)
@@ -176,9 +176,10 @@ Paper_score::process ()
     }
 
   if (experimental_features_global_b)
-    *mlog << elem_p_arr_.size ()  + span_p_arr_.size () << " elements. ";
+    *mlog << elem_p_arr_.size ()  + span_p_arr_.size () << _ (" elements. ");
 
-  *mlog << "\nLine ... ";
+  *mlog << "\n";
+  *mlog << _ ("Line ... ");
   line_l_->break_processing ();
   for (int i=0; i < lines.size (); i++)
     {
@@ -187,7 +188,7 @@ Paper_score::process ()
       Line_of_score *line_l = lines[i];
 
       line_l->post_processing ();
-       *mlog << i << flush;
+      *mlog << i << flush;
       line_l->output_all (i + 1 == lines.size());
       if (experimental_features_global_b)
        *mlog << '(' << elem_p_arr_.size () + span_p_arr_.size () << ')';
index bc926f42d31954f608c7f179e9646de44a9c17db..6d82f743805d27674bff4cc8b68e3575d6e9ec14 100644 (file)
@@ -31,25 +31,6 @@ Paper_outputter::Paper_outputter (Paper_stream *s)
   outstream_l_ = s;
   output_header ();
 
-#ifdef __powerpc__
-  if (output_global_ch == String ("scm"))
-    {
-      int fd = 1;
-      ofstream * of = dynamic_cast<ofstream*> (outstream_l_->os);
-      if (of)
-       fd = of->rdbuf()->fd();
-      FILE *file = fdopen (fd, "a");
-      port_ = scm_standard_stream_to_port (file, "a", "");
-      scm_display (gh_str02scm (
-       "(primitive-load-path 'lily.scm)\n"
-       "(eval (tex-scm 'all-definitions))\n"
-       ";(eval (ps-scm 'all-definitions))\n"
-       "(display (map (lambda (x) (string-append (eval x) \"%\\n\")) '(\n"
-       ), port_);
-
-      scm_fflush (port_);
-    }
-#else
   if (output_global_ch == String ("scm"))
     *outstream_l_->os << ""
       "(primitive-load-path 'lily.scm)\n"
@@ -57,7 +38,6 @@ Paper_outputter::Paper_outputter (Paper_stream *s)
       ";(eval (ps-scm 'all-definitions))\n"
       "(display (map (lambda (x) (string-append (eval x) \"\\n\")) '(\n"
     ;
-#endif
 }
 
 Paper_outputter::~Paper_outputter ()
@@ -65,18 +45,10 @@ Paper_outputter::~Paper_outputter ()
   SCM scm = gh_list (ly_symbol ("end-output"), SCM_UNDEFINED);
   output_scheme (scm);
 
-#ifdef __powerpc__
-  if (String (output_global_ch) == "scm")
-    {
-      scm_display (gh_str02scm (")))\n"), port_);
-      scm_fflush (port_);
-    }
-#else
   if (String (output_global_ch) == "scm")
     {
       *outstream_l_->os << ")))";
     }
-#endif
 }
 
 void
@@ -200,20 +172,11 @@ Paper_outputter::output_comment (String str)
 void
 Paper_outputter::output_scheme (SCM scm)
 {
-#ifdef __powerpc__
-  if (String (output_global_ch) == "scm")
-    {
-      scm_write (scm, port_);
-      scm_display (gh_str02scm ("\n"), port_);
-      scm_fflush (port_);
-    }
-#else
   if (String (output_global_ch) == "scm")
     {
       SCM result =  scm_eval (scm_listify (ly_symbol ("scm->string"), ly_quote_scm (scm), SCM_UNDEFINED));
     *outstream_l_->os << ly_scm2string (result)        << endl;
     }
-#endif
   else
     {
       SCM result = scm_eval (scm);
index adc565e244b46f20b4a68cf9bbf9179355a9c9b0..cb4f0a942b2e8346b5ded595649fb48eca6d5a43 100644 (file)
 #include "grace-music.hh"
 
 // mmm
-Mudela_version oldest_version ("1.0.20");
+Mudela_version oldest_version ("1.1.52");
 Mudela_version version ( MAJOR_VERSION "." MINOR_VERSION "." PATCH_LEVEL );
 
 
 void
 print_mudela_versions (ostream &os)
 {
-  os << "Mudela versions: oldest  " << oldest_version.str () << " current " << version.str () <<endl;
+  os << "Oldest supported input version:   " << oldest_version.str () << endl;
 }
 // needed for bison.simple's malloc() and free()
 #include <malloc.h>
@@ -150,7 +150,6 @@ yylex (YYSTYPE *s,  void * v_l)
 %token DURATION
 %token EXTENDER
 %token FONT
-%token GROUPING
 %token GRACE
 %token HEADER
 %token IN_T
@@ -173,6 +172,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %token RELATIVE
 %token REMOVE
 %token REPEAT
+%token REPETITIONS
 %token SCM_T
 %token SCMFILE
 %token SCORE
@@ -229,7 +229,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %type <id>     identifier_init  
 %type <duration> steno_duration notemode_duration
 %type <duration> entered_notemode_duration explicit_duration
-%type <intvec> intastint_list int_list
+%type <intvec>  int_list
 %type <reqvec>  pre_requests post_requests
 %type <request> gen_text_def
 %type <pitch>   explicit_musical_pitch steno_musical_pitch musical_pitch absolute_musical_pitch
@@ -542,16 +542,6 @@ output_def:
        }
        ;
 
-intastint_list:
-       /* */   { $$ =new Array<int>; }
-       | intastint_list int '*' int    {
-               $$->push ($2); $$->push ($4);
-       }
-       | intastint_list int    {
-               $$->push ($2); $$->push (1);
-       }
-       ;       
-
 
 /*
        PAPER
@@ -717,6 +707,7 @@ Alternative_music:
        }
        | ALTERNATIVE Music_sequence {
                $$ = $2;
+               $2->set_spot (THIS->here_input ());
        }
        ;
 
@@ -727,12 +718,16 @@ Repeated_music:
        REPEAT STRING unsigned Music Alternative_music
        {
                Music_sequence* m = dynamic_cast <Music_sequence*> ($5);
+               if (m && $3 < m->length_i ())
+                       $5->warning ("More alternatives than repeats. Junking excess alternatives.");
 
-               New_repeated_music * r = new New_repeated_music ($4, $3 >? 1, m);
+               Repeated_music * r = new Repeated_music ($4, $3 >? 1, m);
                $$ = r;
                r->fold_b_ = (*$2 == "fold");
                r->semi_fold_b_ =  (*$2 == "semi");
                delete $2;
+               r->set_spot (THIS->here_input ());
+
        }
        ;
 
@@ -979,31 +974,20 @@ verbose_command_req:
        }
        | KEY NOTENAME_PITCH optional_modality  {
                Key_change_req *key_p= new Key_change_req;
-               key_p->pitch_arr_.push(*$2);
-               key_p->ordinary_key_b_ = true;
-               key_p->modality_i_ = $3;
+               key_p->key_.pitch_arr_.push (*$2);
+               key_p->key_.ordinary_key_b_ = true;
+               key_p->key_.modality_i_ = $3;
                $$ = key_p;
                delete $2;
        }
        | KEYSIGNATURE pitch_list {
                Key_change_req *key_p= new Key_change_req;
-               key_p->pitch_arr_ = *$2;
-               key_p->ordinary_key_b_ = false;
+               key_p->key_.pitch_arr_ = *$2;
+               key_p->key_.ordinary_key_b_ = false;
                $$ = key_p;
                delete $2;
        }
-       | GROUPING intastint_list  {
-                 Measure_grouping_req * mr_p = new Measure_grouping_req;
-                 for (int i=0; i < $2->size();) 
-                   {
-                     mr_p->elt_length_arr_.push (Moment (1, $2->elem(i++)));
-                     mr_p->beat_i_arr_.push ($2->elem(i++));
-                   }
-
 
-               $$ = mr_p;
-               delete $2;
-       }
        ;
 
 post_requests:
@@ -1377,6 +1361,16 @@ simple_element:
                velt_p->add_music (m);
                $$ = velt_p;
        }
+       | REPETITIONS notemode_duration         {
+               Repetitions_req* r = new Repetitions_req;
+               r->duration_ = *$2;
+               delete $2;
+
+               Simultaneous_music*velt_p = new Request_chord;
+               velt_p->set_spot (THIS->here_input ());
+               velt_p->add_music (r);
+               $$ = velt_p;
+       }
        | STRING notemode_duration                      {
                if (!THIS->lexer_p_->lyric_state_b ())
                        THIS->parser_error (_ ("have to be in Lyric mode for lyrics"));
index f25b63eea11c5d25175cb7bb27007667938f3202..b97df6b69cd87f82fd9019636bbea5da24b1d157 100644 (file)
@@ -15,6 +15,7 @@
 #include "midi-item.hh"
 #include "midi-stream.hh"
 #include "audio-column.hh"
+#include "audio-item.hh"
 #include "audio-staff.hh"
 #include "performance.hh"
 #include "score.hh"
@@ -45,11 +46,16 @@ Performance::output (Midi_stream& midi_stream)
 
   midi_stream << Midi_header (1, tracks_i, clocks_per_4_i);
   output_header_track (midi_stream);
+  *mlog << "\n";
+  *mlog << _ ("Track ... ");
   int channel = 1;
   for (int i =0; i < audio_staff_l_arr_.size (); i++)
     {
+      *mlog << '[' << flush;
       Audio_staff *s = audio_staff_l_arr_[i];
 
+      *mlog << i << flush;
+
       /*
        Aargh, let's hear it for the MIDI standard.
        MIDI players tend to ignore instrument settings on
@@ -58,6 +64,7 @@ Performance::output (Midi_stream& midi_stream)
       if (channel == 9)
        channel++;
       s->output (midi_stream, channel++);
+      *mlog << ']' << flush;
     }
 }
 
@@ -74,7 +81,12 @@ Performance::output_header_track (Midi_stream& midi_stream)
     str += gnu_lilypond_version_str();
   str += "\n";
 
-  Midi_text creator (Midi_text::TEXT, str);
+  /*
+    This seems silly, but in fact the audio elements should
+    be generated elsewhere: not midi-specific.
+   */
+  Audio_text creator_a (Audio_text::TEXT, str);
+  Midi_text creator (&creator_a);
   midi_track.add (Moment (0), &creator);
 
   str = _("Automatically generated");
@@ -87,19 +99,24 @@ Performance::output_header_track (Midi_stream& midi_stream)
       str += ctime (&t);
       str = str.left_str (str.length_i() - 1);
     }
-  Midi_text generate (Midi_text::TEXT, str);
+  Audio_text generate_a (Audio_text::TEXT, str);
+  Midi_text generate (&generate_a);
   midi_track.add (Moment (0), &generate);
 
   str = _f ("from musical definition: %s", origin_str_);
 
-  Midi_text from (Midi_text::TEXT, str);
+  Audio_text from_a (Audio_text::TEXT, str);
+  Midi_text from (&from_a);
   midi_track.add (Moment (0), &from);
 
-  Midi_text track_name (Midi_text::TRACK_NAME, "Track "
-                       + String_convert::i2dec_str (0, 0, '0'));
+  Audio_text track_name_a (Audio_text::TRACK_NAME, "Track "
+                          + String_convert::i2dec_str (0, 0, '0'));
+  Midi_text track_name (&track_name_a);
+                       
   midi_track.add (Moment (0), &track_name);
 
-  Midi_tempo tempo (midi_l_->get_tempo_i (Moment (1, 4)));
+  Audio_tempo tempo_a (midi_l_->get_tempo_i (Moment (1, 4)));
+  Midi_tempo tempo (&tempo_a);
   midi_track.add (Moment (0), &tempo);
 
   midi_stream << midi_track;
index c44d68ad7d5bf34cbf865d271b9997462315ef49..b0278c661d17cc955ba55c49574200fd703acc72 100644 (file)
@@ -49,7 +49,10 @@ Performer_group_performer::do_announces()
          for (int i=0; i < nongroups.size(); i++) 
            {   // Is this good enough?
              Performer * eng = dynamic_cast<Performer*> (nongroups[i]);
-             if (eng && eng!= info.origin_trans_l_arr_[0])
+             // urg, huh? core dump?
+             //if (eng && eng!= info.origin_trans_l_arr_[0])
+             if (eng && info.origin_trans_l_arr_.size ()
+                 && eng!= info.origin_trans_l_arr_[0])
                eng->acknowledge_element (info);
            }
        }
index 62ac44481e8a3c99732d828c389864033ececb87..f0cd2585e22887666b0c957aa744075ec3cef678 100644 (file)
@@ -12,9 +12,9 @@
 #include "debug.hh"
 
 void 
-Performer::play (Audio_element* p) 
+Performer::play_element (Audio_element* p) 
 { 
-  daddy_perf_l ()->play (p); 
+  daddy_perf_l ()->play_element (p); 
 }
 
 int
index 650b5b3dd497519cc4c1d9f18c605d8719fb3e7b..5864e065271cfdf3f771a81ac9fd955531eba090 100644 (file)
 ADD_THIS_TRANSLATOR (Repeat_engraver);
 
 /*
-  Urg. Hairy.  Needs redesign?
+  Needs redesign?
+
+  -  Logic needs to be moved out of do_try_music(),
+  
+  - don't  try to do multiple repeated music.  Lets assume repeats  don't nest.
+  
  */
 bool
 Repeat_engraver::do_try_music (Music* m)
 {
-  if (New_repeated_music* r = dynamic_cast<New_repeated_music *> (m))
+  if (Repeated_music* r = dynamic_cast<Repeated_music *> (m))
     {
-      if (!r->semi_fold_b_)
-        return true;
+      if (repeated_music_l_)
+       {
+         m->warning ("Already have repeated music.");
+         return false;
+       }
+      
+      if (r->semi_fold_b_)
+       {
+         repeated_music_l_ = r;
+         return true;
+       }
+    }
+  return false;
+}
+
+/**
+ Walk through repeat music, and generate events for appropriate times.
+*/
+void
+Repeat_engraver::queue_events ()
+{
+  Music_sequence* alt = repeated_music_l_->alternatives_p_;
+  Moment walk_mom = now_mom () + repeated_music_l_->repeat_body_p_->length_mom ();
+
+      
+  Cons_list<Bar_create_event> becel;
+  becel.append (new Bar_create_event (now_mom (), "|:"));
 
-      Music_sequence* alt = r->alternatives_p_;
-      Moment repeat_length_mom = r->repeat_body_p_->length_mom ();
-      Moment stop_mom = now_mom () + repeat_length_mom;
-      Moment alt_mom = now_mom () + repeat_length_mom;
+  if (!alt)
+    {
+      becel.append  (new Bar_create_event (walk_mom, ":|"));
+      becel.append  (new Bar_create_event (walk_mom, "stop"));
+   }
+  else
+    {
+      int last_number = 0;
+      int volta_number = repeated_music_l_->repeats_i_ - alt->length_i () + 1;
 
       /*
-       if there's a repeat block, we'll need a stop-repeat :| 
-       */
-      if (repeat_length_mom)
+       all repeat alternatives, and generate events with
+       appropriate timestamps. The volta spanner event (a number string)
+       happens at the begin of the alt. The :| bar event at the ending.
+      */
+      for (Cons<Music> *i = alt->music_p_list_p_->head_; i; i = i->next_)
        {
+
          /*
-           if there are alternatives, the :| comes before last alternative
-           (only for semi-unfolded, but otherwise we're not here anyway?)
-           */
-         if (alt)
+           some idiot might typeset a repeat not starting on a
+           barline.  Make sure there is one.
+
+           (todo: should try to avoid line breaks?)
+         */
+         if (last_number == 0)
            {
-             for (Cons<Music> *i (alt->music_p_list_p_->head_); i && i->next_; i = i->next_)
-               {
-                 stop_mom += i->car_->length_mom ();
-                 if (r->fold_b_)
-                   break;
-               }
-            }
-         repeated_music_arr_.push (r);
-         stop_mom_arr_.push (stop_mom);
+             becel.append (new Bar_create_event (walk_mom, ""));
+           }
+
+         
+         Bar_create_event * c = new Bar_create_event (walk_mom, last_number+ 1,
+                                                      volta_number);
+
+         if (!i->next_)
+           c->last_b_ = true;
+         
+         becel.append (c);
+         last_number = volta_number;
+         volta_number ++;
+
+         // should think about voltaSpannerDuration
+         walk_mom += i->car_->length_mom();
+
+         if (i->next_)
+           becel.append (new Bar_create_event (walk_mom, ":|"));
+         else
+           becel.append (new Bar_create_event (walk_mom, "stop"));
        }
+    } 
+  create_barmoments_queue_ = becel.head_ ;
+  becel.head_ = 0;
+}
 
-      /* 
-        Counting nested repeats, it seems safest to forbid
-        two pieces of alternative music to start at the same time.
-      */
-      for (int i = 0; i < alternative_start_mom_arr_.size (); i++)
-        if (alternative_start_mom_arr_[i] == alt_mom)
-         return false;
+void
+Repeat_engraver::do_process_requests ()
+{
+  if (repeated_music_l_ && !done_this_one_b_)
+    { 
+      queue_events ();
+      done_this_one_b_ = true;
+    }
+  
+  
+  Cons<Bar_create_event> * head =   create_barmoments_queue_;
+  if (!head)
+    return;
 
-      /*
-       Coda kludge: see input/test/coda-kludge.ly
-       */
-      Moment span_mom;
-      Scalar prop = get_property ("voltaSpannerDuration", 0);
-      if (prop.length_i ())
-       span_mom = prop.to_rat ();
-
-      if (!alt)
-       return true;
-
-      int alt_i = r->repeats_i_ + 1 - cons_list_size_i (alt->music_p_list_p_->head_ ) >? 1;
-      for (Cons<Music> *i = alt->music_p_list_p_->head_; i ; i = i->next_)
-        {
-         alternative_music_arr_.push (i->car_);
-         alternative_start_mom_arr_.push (alt_mom);
-         if (span_mom)
-           alternative_stop_mom_arr_.push (alt_mom + span_mom);
+  Bar_engraver* bar_engraver_l = dynamic_cast <Bar_engraver*>
+    (daddy_grav_l ()->get_simple_translator ("Bar_engraver"));
+
+  /*
+    Do all the events that need to be done now.
+  */
+  bool stop = false;
+  while (head && now_mom () == head->car_->when_)
+    {
+      create_barmoments_queue_ = create_barmoments_queue_->next_;
+      head->next_ =0;
+      if (bar_engraver_l)
+       {
+         String t = head->car_->type_;
+         if (head->car_->bar_b_)
+           {
+             if (t == "stop" || t == ":|")
+               {
+                 end_volta_span_p_ = volta_span_p_;
+                 volta_span_p_ =0;
+               }
+
+             if (t != "stop")
+               bar_engraver_l->request_bar (t);
+           }
          else
-           alternative_stop_mom_arr_.push (alt_mom + i->car_->length_mom ());
-         String str;
-         if ((alt_i != 1) && (alt_i != r->repeats_i_) && (i == alt->music_p_list_p_->head_))
-           str = "1.-";
-         str += to_str (alt_i) + ".";
-         alt_i++;
-         alternative_str_arr_.push (str);
-         if (!dynamic_cast<Simultaneous_music *> (alt))
-           alt_mom += i->car_->length_mom ();
+           {
+             assert (!volta_span_p_);
+             volta_span_p_ = new Volta_spanner;
+             announce_element (Score_element_info (volta_span_p_,0));
+             volta_span_p_->number_str_ = t;
+             volta_span_p_->last_b_ = head->car_->last_b_;
+             // voltaSpannerDuration stuff here.
+             // other property stuff here.
+           }
+         
+       }
+      else
+       {
+         warning ("No bar engraver found. Ignoring repeats.");
        }
-      return true;
+
+      delete head->car_;
+      delete head;
+
+      head = create_barmoments_queue_;
     }
-  return false;
-}
+
+  assert (!head || head->car_->when_ > now_mom ());
+}  
+
 
 void
 Repeat_engraver::acknowledge_element (Score_element_info i)
 {
-  Moment now = now_mom ();
   if (Note_column *c = dynamic_cast<Note_column *> (i.elem_l_))
     {
-      for (int i = 0; i < volta_p_arr_.size (); i++)
-        if (volta_p_arr_[i] && (now >= alternative_start_mom_arr_[i]))
-         volta_p_arr_[i]->add_column (c);
+      if (volta_span_p_)
+       volta_span_p_->add_column (c);
+      if (end_volta_span_p_)
+       end_volta_span_p_->add_column (c);      
     }
   if (Bar *c = dynamic_cast<Bar*> (i.elem_l_))
     {
-      for (int i = 0; i < volta_p_arr_.size (); i++)
-        if (volta_p_arr_[i] && (now >= alternative_start_mom_arr_[i]))
-         volta_p_arr_[i]->add_column (c);
+      if (volta_span_p_)
+       volta_span_p_->add_bar (c);
+      if (end_volta_span_p_)
+       end_volta_span_p_ ->add_bar(c);
     }
 }
 
+
 void
 Repeat_engraver::do_removal_processing ()
 {
-  for (int i = 0; i < volta_p_arr_.size (); i++)
-    if (volta_p_arr_[i])
-      typeset_element (volta_p_arr_[i]);
-}
-
-void
-Repeat_engraver::do_process_requests ()
-{  
-  Moment now = now_mom ();
-  Bar_engraver* bar_engraver_l = dynamic_cast <Bar_engraver*>
-    (daddy_grav_l ()->get_simple_translator ("Bar_engraver"));
-  for (int i = bar_b_arr_.size (); i < repeated_music_arr_.size (); i++)
+  if (volta_span_p_)
     {
-      if (bar_engraver_l)
-       bar_engraver_l->request_bar ("|:");
-      bar_b_arr_.push (true);
+      typeset_element(volta_span_p_);
     }
-  for (int i = 0; i < bar_b_arr_.size (); i++)
+  if (end_volta_span_p_)
     {
-      if (!bar_b_arr_[i] && (now >= stop_mom_arr_[i]))
-        {
-         if (bar_engraver_l)
-           bar_engraver_l->request_bar (":|");
-       }
-    }
-  for (int i = volta_p_arr_.size (); i < alternative_music_arr_.size (); i++)
-    {
-      Volta_spanner* v = new Volta_spanner;
-      Scalar prop = get_property ("voltaVisibility", 0);
-      if (!prop.to_bool ())
-       v->set_elt_property (transparent_scm_sym, SCM_BOOL_T);
-      prop = get_property ("voltaSpannerDuration", 0);
-      if ((i == alternative_music_arr_.size () - 1) || prop.length_i ())
-        v->last_b_ = true;
-
-      v->number_str_ = alternative_str_arr_[i];
-      volta_p_arr_.push (v);
-      announce_element (Score_element_info (v, alternative_music_arr_[i]));
+      typeset_element (end_volta_span_p_);
     }
+  // todo: the paranoid may also delete create_barmoments_queue_
+}
+
+void
+Repeat_engraver::do_post_move_processing ()
+{
+  for (Cons<Bar_create_event> *p = create_barmoments_queue_;
+       p && p->car_->when_ == now_mom (); p = p->next_)
+    if (p->car_->type_ == "stop")
+      {
+       repeated_music_l_ = 0;
+       done_this_one_b_ = false;
+      }
 }
 
 void 
 Repeat_engraver::do_pre_move_processing ()
 {
-  Moment now = now_mom ();
-  for (int i = bar_b_arr_.size (); i--; )
+  if (end_volta_span_p_)
     {
-      if (bar_b_arr_[i])
-       bar_b_arr_[i] = false;
-      if (now >= stop_mom_arr_[i])
-       {
-         bar_b_arr_.del (i);
-         stop_mom_arr_.del (i);
-         repeated_music_arr_.del (i);
-       }
-    }
-  for (int i = volta_p_arr_.size (); i--; )
-    {
-      if (volta_p_arr_[i] && (now >= alternative_stop_mom_arr_[i])
-         && (volta_p_arr_[i]->column_arr_.size () >= 1))
-        {
-         typeset_element (volta_p_arr_[i]);
-         volta_p_arr_[i] = 0;
-         volta_p_arr_.del (i);
-         alternative_music_arr_[i] = 0;
-         alternative_music_arr_.del (i);
-         alternative_start_mom_arr_.del (i);
-         alternative_stop_mom_arr_.del (i);
-         alternative_str_arr_.del (i);
-       }
+      typeset_element (end_volta_span_p_ );
+      end_volta_span_p_ =0;
     }
+    
+}
+
+
+Repeat_engraver::Repeat_engraver()
+{
+  repeated_music_l_ =0;
+  end_volta_span_p_ =0;
+  volta_span_p_ =0;
+  done_this_one_b_ = false;
+  create_barmoments_queue_ =0;
+}
+                                
+/* ************** */
+Bar_create_event::Bar_create_event()
+{
+  last_b_ =false;
+  bar_b_ = true;
+}
+
+Bar_create_event::Bar_create_event (Moment w, String s)
+{
+  last_b_ =false;
+  when_ = w;
+  type_ = s;
+  bar_b_ = true;
+}
+
+Bar_create_event::Bar_create_event (Moment w, int i, int j)
+{
+  last_b_ =false;
+  when_ = w ;
+  bar_b_ = false;
+
+  if (i!=j)
+    type_ = to_str (i) + ".-" ;
+
+  type_ += to_str(j) + ".";
 }
index 23fb55f7908d3f5108922daec5858218f4d71d13..03854fd5e00d026670a15559c5bf619a6a2f5627 100644 (file)
@@ -45,7 +45,7 @@ Folded_repeat_iterator::next_moment () const
 void
 Folded_repeat_iterator::construct_children ()
 {
-  New_repeated_music const *  mus = dynamic_cast<New_repeated_music const*> (music_l_);
+  Repeated_music const *  mus = dynamic_cast<Repeated_music const*> (music_l_);
   main_iter_p_ = get_iterator_p (mus->repeat_body_p_);
   if (!main_iter_p_->ok())
     {
@@ -64,7 +64,7 @@ Folded_repeat_iterator::do_process_and_next (Moment m)
        music_l_->warning ( _("No one to print a volta bracket"));
     }
   
-  New_repeated_music const * mus = dynamic_cast<New_repeated_music const*> (music_l_);
+  Repeated_music const * mus = dynamic_cast<Repeated_music const*> (music_l_);
   
   if (main_iter_p_)
     {
@@ -92,7 +92,7 @@ Folded_repeat_iterator::do_process_and_next (Moment m)
 void
 Folded_repeat_iterator::leave_body ()
 {
-  New_repeated_music const *  mus = dynamic_cast<New_repeated_music const*> (music_l_);
+  Repeated_music const *  mus = dynamic_cast<Repeated_music const*> (music_l_);
   delete main_iter_p_;
   main_iter_p_ = 0;
   main_length_mom_ +=  mus->repeat_body_p_->length_mom ();
@@ -101,7 +101,7 @@ Folded_repeat_iterator::leave_body ()
 void
 Folded_repeat_iterator::enter_alternative ()
 {
-  New_repeated_music const *  mus = dynamic_cast<New_repeated_music const*> (music_l_);  
+  Repeated_music const *  mus = dynamic_cast<Repeated_music const*> (music_l_);  
   if (mus->alternatives_p_)
     {
       Simultaneous_music_iterator * s = new Simultaneous_music_iterator;
index 19a700504cea0608779c8f3b5d6c0e8f49dc26e8..d00a93210718b6d931fcdf93166e0846b8a027eb 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  new-repeated-music.cc --  implement New_repeated_music
+  new-repeated-music.cc --  implement Repeated_music
   
   source file of the GNU LilyPond music typesetter
   
 #include "musical-pitch.hh"
 #include "debug.hh"
 
-New_repeated_music::New_repeated_music(Music *beg, int times, Music_sequence * alts)
+Repeated_music::Repeated_music(Music *beg, int times, Music_sequence * alts)
 {
   repeat_body_p_ = beg;
   fold_b_ = false;
   repeats_i_ = times;
   alternatives_p_ = alts;
   semi_fold_b_ = true;
+  if (alts)
+    alts->music_p_list_p_->truncate (times);
 }
 
-New_repeated_music::New_repeated_music (New_repeated_music const &s)
+Repeated_music::Repeated_music (Repeated_music const &s)
   : Music (s)
 {
   repeats_i_ = s.repeats_i_;
@@ -33,14 +35,14 @@ New_repeated_music::New_repeated_music (New_repeated_music const &s)
     ? dynamic_cast<Music_sequence*> (s.alternatives_p_->clone ()):0;
 }
 
-New_repeated_music::~New_repeated_music ()
+Repeated_music::~Repeated_music ()
 {
   delete repeat_body_p_;
   delete alternatives_p_;
 }
 
 void
-New_repeated_music::do_print () const
+Repeated_music::do_print () const
 {
 #ifndef NPRINT
   DOUT << "Fold = " << fold_b_ << " reps: " << repeats_i_;
@@ -54,7 +56,7 @@ New_repeated_music::do_print () const
 }
 
 Musical_pitch
-New_repeated_music::to_relative_octave (Musical_pitch p)
+Repeated_music::to_relative_octave (Musical_pitch p)
 {
   if (repeat_body_p_)
     p = repeat_body_p_->to_relative_octave (p);
@@ -66,7 +68,7 @@ New_repeated_music::to_relative_octave (Musical_pitch p)
 
 
 void
-New_repeated_music::transpose (Musical_pitch p)
+Repeated_music::transpose (Musical_pitch p)
 {
   if (repeat_body_p_)
     repeat_body_p_->transpose (p);
@@ -76,7 +78,7 @@ New_repeated_music::transpose (Musical_pitch p)
 }
 
 void
-New_repeated_music::compress (Moment p)
+Repeated_music::compress (Moment p)
 {
   if (repeat_body_p_)
     repeat_body_p_->compress (p);
@@ -86,7 +88,7 @@ New_repeated_music::compress (Moment p)
 }
 
 Moment
-New_repeated_music::alternatives_length_mom () const
+Repeated_music::alternatives_length_mom () const
 {
   if (!alternatives_p_ )
     return 0;
@@ -108,7 +110,7 @@ New_repeated_music::alternatives_length_mom () const
 }
 
 Moment
-New_repeated_music::length_mom () const
+Repeated_music::length_mom () const
 {
   Moment m =0;
   if (fold_b_)
index 3d73c012c4a9ce5bc2d890ffd12f9e880eafd103..70d2943c74a2bfe7d2fad7265f083c9e7d486ede 100644 (file)
@@ -237,6 +237,9 @@ Score_engraver::do_try_music (Music*r)
 
   if (!gotcha)
     {
+      /*
+       UGH! THIS IS NOT SYMMETRIC. CLEAN ME UP!
+       */
       if (Break_req* b = dynamic_cast<Break_req *> (r))
        {
          gotcha = true;
@@ -247,9 +250,13 @@ Score_engraver::do_try_music (Music*r)
        }
     }
    return gotcha;
-
 }
 
+void
+Score_engraver::forbid_breaks ()
+{
+  break_penalty_i_ = Break_req::DISALLOW;
+}
 
 ADD_THIS_TRANSLATOR(Score_engraver);
 
index c0357ec6e7f0276233fbebdce50fe8d9fb30608a..b69dcbe5b78f21702c7e29680b0ac115901aff3f 100644 (file)
 #include "audio-staff.hh"
 
 
-ADD_THIS_TRANSLATOR(Score_performer);
+ADD_THIS_TRANSLATOR (Score_performer);
 
 
-Score_performer::Score_performer()
+Score_performer::Score_performer ()
 {
-  performance_p_ =0;
+  performance_p_ = 0;
 }
 
 
-Score_performer::~Score_performer()
+Score_performer::~Score_performer ()
 {
 }
 
 void
-Score_performer::play (Audio_element * p)
+Score_performer::play_element (Audio_element * p)
 {
   if  (Audio_item * i=dynamic_cast<Audio_item *> (p)) 
     {
@@ -43,12 +43,27 @@ Score_performer::play (Audio_element * p)
   performance_p_->add_element (p);
 }
 
+void
+Score_performer::announce_element (Audio_element_info info)
+{
+  announce_info_arr_.push (info);
+  info.origin_trans_l_arr_.push (this);
+
+  /*
+    huh?
+    copied from score-engraver, but
+    this way staff gets in list twice
+  if (Audio_item* i = dynamic_cast<Audio_item*> (info.elem_l_))
+    performance_p_->add_element (i);
+  */
+}
+
 void 
 Score_performer::prepare (Moment m)
 {
   Global_translator::prepare (m);
   audio_column_l_ = new Audio_column (m);
-  play (audio_column_l_);
+  play_element (audio_column_l_);
   post_move_processing ();
 }
 
index 163dfe9a727473de36f7ab2d07ce6799fd7b439d..5f87859db60ee014663a2d5285f28e42bd1d4d17 100644 (file)
@@ -1,3 +1,5 @@
+#if 0
+// not finished yet.
 /*   
   specialty-engraver.cc --  implement  Specialty_engraver
   
@@ -21,7 +23,7 @@ protected:
 
 
 void
-Specialty_engraver::acknowledge_element (Score_element_info i)
+Specialty_engraver::acknowledge_element (Score_element_info )
 {
   /*
     We could do groovy stuff, by inserting our own custom (FUNC,FONT)
@@ -30,3 +32,4 @@ Specialty_engraver::acknowledge_element (Score_element_info i)
     But not yet.  This would be cleaner if we had SCM as properties.
   */
 }
+#endif
index 44be80a76af43afe400735dedfe84a2560fe320f..df97770e25032b42c33183d059eaa16bc9e9ea6c 100644 (file)
@@ -12,5 +12,9 @@
 Real
 Staff_bar::get_bar_size () const
 {
-  return 4 * staff_line_leading_f ();
+  SCM size_sym = get_elt_property (bar_size_scm_sym);
+  if (size_sym != SCM_BOOL_F)
+    return gh_scm2double (SCM_CDR(size_sym));
+  else
+    return (lines_i () -1) * staff_line_leading_f ();
 }
index 5d214d080f66bc5752ad207bc1cc37ea87025f97..a527bc3c18f598c4aa6fb82d790e1cc960168063 100644 (file)
@@ -14,7 +14,6 @@
 Staff_info::Staff_info()
 {
   time_C_ = 0;
-  rhythmic_C_ =0;
   command_l_ =0;
   musical_l_ =0;
 }
index 6628fbeca0b52d482e18c454bbbf532992ccbd20..927285702be46cd4ef00e8c357ff03ce91492a45 100644 (file)
@@ -19,36 +19,28 @@ ADD_THIS_TRANSLATOR (Staff_performer);
 Staff_performer::Staff_performer ()
 {
   audio_staff_p_ = 0;
+  instrument_p_ = 0;
+  instrument_name_p_ = 0;
+  name_p_ = 0;
+  tempo_p_ = 0;
 }
 
 Staff_performer::~Staff_performer ()
 {
-  delete audio_staff_p_;
 }
 
 void
 Staff_performer::do_creation_processing ()
 {
   audio_staff_p_ = new Audio_staff;
+  announce_element (Audio_element_info (audio_staff_p_, 0));
 
-  play (new Audio_text (Audio_text::TRACK_NAME, id_str_));
+  name_p_ = new Audio_text (Audio_text::TRACK_NAME, id_str_);
+  announce_element (Audio_element_info (name_p_, 0));
 
-#if 1
-  String str = new_instrument_str ();
-  if (str.length_i ()) 
-    // instrument description
-    play (new Audio_text (Audio_text::INSTRUMENT_NAME, str));
-#endif
-
-  // tempo
-  play (new Audio_tempo (get_tempo_i ()));
+  tempo_p_ = new Audio_tempo (get_tempo_i ());
+  announce_element (Audio_element_info (tempo_p_, 0));
 
-#if 1
-  if (str.length_i ())
-    // instrument
-    play (new Audio_instrument (str));
-#endif
-   
   Performer_group_performer::do_creation_processing ();
 }
 
@@ -58,18 +50,45 @@ Staff_performer::do_process_requests ()
   String str = new_instrument_str ();
   if (str.length_i ())
     {
-      play (new Audio_text (Audio_text::INSTRUMENT_NAME, str));
-      play (new Audio_instrument (str));
+      instrument_name_p_ = new Audio_text (Audio_text::INSTRUMENT_NAME, str);
+      announce_element (Audio_element_info (instrument_name_p_, 0));
+      instrument_p_ = new Audio_instrument (str);
+      announce_element (Audio_element_info (instrument_p_, 0));
     }
   Performer_group_performer::do_process_requests ();
 }
 
+void
+Staff_performer::do_pre_move_processing ()
+{
+  if (name_p_)
+    {
+      play_element (name_p_);
+      name_p_ = 0;
+    }
+  if (tempo_p_)
+    {
+      play_element (tempo_p_);
+      tempo_p_ = 0;
+    }
+  if (instrument_name_p_)
+    {
+      play_element (instrument_name_p_);
+      instrument_name_p_ = 0;
+    }
+  if (instrument_p_)
+    {
+      play_element (instrument_p_);
+      instrument_p_ = 0;
+    }
+  Performer_group_performer::do_pre_move_processing ();
+}
 
 void
 Staff_performer::do_removal_processing ()
 {
   Performer_group_performer::do_removal_processing ();
-  Performer::play (audio_staff_p_);
+  Performer::play_element (audio_staff_p_);
   audio_staff_p_ = 0;
 }
 
@@ -95,12 +114,12 @@ Staff_performer::new_instrument_str ()
 }
 
 void 
-Staff_performer::play (Audio_element* p)
+Staff_performer::play_element (Audio_element* p)
 {
   if (Audio_item *ai = dynamic_cast<Audio_item *> (p)) 
     {
       audio_staff_p_->add_audio_item (ai);
     }
-  Performer::play (p);
+  Performer::play_element (p);
 }
 
index ae56d110d336be9c994ded5c197ccfd7c4fbfef0..1d1809ed84e83754811f394631a5ec89f703dad4 100644 (file)
@@ -16,6 +16,8 @@ class Staff_switching_translator : public Engraver
 {
   Interpretation_context_handle my_voice_;
   Drul_array<Interpretation_context_handle> staff_handle_drul_;
+
+  int switch_pitch_i_ ;
 protected:
   virtual bool do_try_music (Music* m);
   virtual void do_creation_processing ();
@@ -28,6 +30,7 @@ public:
 
 Staff_switching_translator::Staff_switching_translator ()
 {
+  switch_pitch_i_ =0;
 }
 
 void
@@ -35,9 +38,18 @@ Staff_switching_translator::do_creation_processing ()
 {
   Translator_group * daddy =daddy_grav_l (); // staff switching context
 
+
+  Scalar pit = get_property ("switchPitch", 0);
+  if (pit.isnum_b ())
+    switch_pitch_i_ = int (pit);
   Scalar s = get_property("staffContextName", 0);
-  staff_handle_drul_[UP].set_translator (daddy->daddy_trans_l_ -> find_create_translator_l (s, "upper"));
-  staff_handle_drul_[DOWN].set_translator (daddy->daddy_trans_l_-> find_create_translator_l (s, "lower"));  
+  Scalar up = get_property ("upStaffName",0);
+  Scalar down = get_property ("downStaffName",0);
+  if (!up.length_i()) up = "upper";
+  if (!down.length_i()) up = "lower";  
+  
+  staff_handle_drul_[UP].set_translator (daddy->daddy_trans_l_ -> find_create_translator_l (s, up));
+  staff_handle_drul_[DOWN].set_translator (daddy->daddy_trans_l_-> find_create_translator_l (s, down));  
 
 
   staff_handle_drul_[DOWN].report_to_l ()->set_property ("defaultClef", "bass");
@@ -58,7 +70,7 @@ Staff_switching_translator::do_try_music (Music*m)
 {
   if (Note_req*nr = dynamic_cast<Note_req*> (m))
     {
-      Direction staff =  (nr->pitch_.semitone_pitch () >= 0)
+      Direction staff =  (nr->pitch_.semitone_pitch () >= switch_pitch_i_)
        ? UP
        : DOWN;
 
diff --git a/lily/tie-performer.cc b/lily/tie-performer.cc
new file mode 100644 (file)
index 0000000..0d7d5a0
--- /dev/null
@@ -0,0 +1,171 @@
+/*   
+  tie-performer.cc --  implement 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  
+ */
+
+#include "tie-performer.hh"
+#include "command-request.hh"
+#include "audio-item.hh"
+#include "musical-request.hh"
+
+
+ADD_THIS_TRANSLATOR (Tie_performer);
+
+Tie_performer::Tie_performer()
+{
+  req_l_ = 0;
+}
+
+bool
+Tie_performer::do_try_music (Music *m)
+{
+  if (Tie_req * c = dynamic_cast<Tie_req*> (m))
+    {
+      req_l_ = c;
+      return true;
+    }
+  return false;
+}
+
+void
+Tie_performer::acknowledge_element (Audio_element_info i)
+{
+  if (Audio_note *nh = dynamic_cast<Audio_note *> (i.elem_l_))
+    {
+      Note_req * m = dynamic_cast<Note_req* > (i.req_l_);
+      if (!m)
+       return;
+      now_notes_.push (CNote_melodic_tuple (nh, m, now_mom()+ m->length_mom ()));
+    }
+}
+
+void
+Tie_performer::do_process_requests ()
+{
+  if (req_l_)
+    {
+      Moment now = now_mom ();
+      Link_array<Audio_note> nharr;
+      
+      stopped_notes_.clear ();
+      while (past_notes_pq_.size ()
+            && past_notes_pq_.front ().end_ == now)
+       stopped_notes_.push (past_notes_pq_.get ());
+    }
+}
+
+void
+Tie_performer::process_acknowledged ()
+{
+  if (req_l_)
+    {
+      now_notes_.sort (CNote_melodic_tuple::pitch_compare);
+      stopped_notes_.sort(CNote_melodic_tuple::pitch_compare);
+      int i=0;
+      int j=0;
+      int tie_count=0;
+      while  ( i < now_notes_.size () && j < stopped_notes_.size ())
+       {
+         int comp
+           = Musical_pitch::compare (now_notes_[i].req_l_->pitch_ ,
+                                     stopped_notes_[j].req_l_->pitch_);
+
+         if (comp)
+           {
+             (comp < 0) ? i ++ : j++;
+             continue;
+           }
+         else
+           {
+             tie_count ++;
+
+             /* don't go around recreating ties that were already
+                made. Not infallible. Due to reordering in sort (),
+                we will make the wrong ties when notenotes are
+                added.  */
+             if (tie_count > tie_p_arr_.size ())
+               {
+                 Audio_tie * p = new Audio_tie;
+                 p->set_note (LEFT, stopped_notes_[j].note_l_);
+                 p->set_note (RIGHT, now_notes_[i].note_l_);
+                 tie_p_arr_.push (p);
+                     announce_element (Audio_element_info (p, req_l_));
+               }
+             i++;
+             j++;
+             
+           }
+       }
+      
+      if (!tie_p_arr_.size ())
+       {
+         req_l_->warning (_("No ties were created!"));
+       }
+      
+    }
+}
+
+void
+Tie_performer::do_pre_move_processing ()
+{
+  for (int i=0; i < now_notes_.size (); i++)
+    {
+      past_notes_pq_.insert (now_notes_[i]);
+    }
+  now_notes_.clear ();
+
+  for (int i=0; i<  tie_p_arr_.size (); i++)
+   {
+     //play_element (tie_p_arr_[i]);
+     /*
+       urg.
+       doesn't work for c ~ c ~ c
+      */
+     tie_p_arr_[i]->note_l_drul_[LEFT]->length_mom_ +=
+       tie_p_arr_[i]->note_l_drul_[RIGHT]->length_mom_;
+     tie_p_arr_[i]->note_l_drul_[RIGHT]->length_mom_ = 0;
+    }
+  tie_p_arr_.clear ();
+}
+
+void
+Tie_performer::do_post_move_processing ()
+{
+  req_l_ =0;
+  Moment now = now_mom ();
+  while (past_notes_pq_.size () && past_notes_pq_.front ().end_ < now)
+    past_notes_pq_.delmin ();
+}
+
+
+CNote_melodic_tuple::CNote_melodic_tuple ()
+{
+  note_l_ =0;
+  req_l_ =0;
+  end_ = 0;
+}
+
+CNote_melodic_tuple::CNote_melodic_tuple (Audio_note *h, Melodic_req*m, Moment mom)
+{
+  note_l_ = h;
+  req_l_ = m;
+  end_ = mom;
+}
+
+int
+CNote_melodic_tuple::pitch_compare (CNote_melodic_tuple const&h1,
+                                   CNote_melodic_tuple const &h2)
+{
+  return Melodic_req::compare (*h1.req_l_, *h2.req_l_);
+}
+
+int
+CNote_melodic_tuple::time_compare (CNote_melodic_tuple const&h1,
+                                  CNote_melodic_tuple const &h2)
+{
+  return (h1.end_ - h2.end_ ).sign ();
+}
index 347dbce0a826fb7aaa1d844448363adf1da4d326..6fecdb99d89ef1f34c9dab19ee565e50ad1dc627 100644 (file)
@@ -57,7 +57,6 @@ Time_description::set_cadenza (bool b)
 
 Time_description::Time_description()
 {
-  error_b_ =  false;
   whole_per_measure_ = 1;
   whole_in_measure_ =0;
   one_beat_ = Moment (1,4);
index fdd75bea770e8d499caf8702d2e2f8678d54a3a4..95eeacabc02517b8fa06ab4d8592e48b6825f6ec 100644 (file)
 #include "command-request.hh"
 #include "audio-item.hh"
 
+ADD_THIS_TRANSLATOR (Time_signature_performer);
 
-ADD_THIS_TRANSLATOR(Time_signature_performer);
-
-Time_signature_performer::Time_signature_performer()
+Time_signature_performer::Time_signature_performer ()
 {
   time_signature_req_l_ = 0;
+  audio_p_ = 0;
 }
 
-Time_signature_performer::~Time_signature_performer()
+Time_signature_performer::~Time_signature_performer ()
 {
 }
 
 void 
-Time_signature_performer::do_print() const
+Time_signature_performer::do_print () const
 {
 #ifndef NPRINT
   if (time_signature_req_l_)
-    time_signature_req_l_->print();
+    time_signature_req_l_->print ();
 #endif
 }
 
 void
-Time_signature_performer::do_process_requests()
+Time_signature_performer::do_process_requests ()
 {
   if (time_signature_req_l_)
-    play (new Audio_time_signature (time_signature_req_l_));
-  time_signature_req_l_ = 0;
+    {
+      audio_p_ = new Audio_time_signature (time_signature_req_l_->beats_i_, time_signature_req_l_->one_beat_i_);
+      Audio_element_info info (audio_p_, time_signature_req_l_);
+      announce_element (info);
+      time_signature_req_l_ = 0;
+    }
+}
+
+void
+Time_signature_performer::do_pre_move_processing ()
+{
+  if (audio_p_)
+    {
+      play_element (audio_p_);
+      audio_p_ = 0;
+    }
 }
 
 bool
index 510f24b40c21b250a765441646511f26b7887c4f..953e802f4bae7a200d46dd9cae166e53b2c19d6b 100644 (file)
@@ -5,18 +5,17 @@
 
   (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
+
 #include "score-engraver.hh"
 #include "timing-engraver.hh"
 #include "command-request.hh"
 #include "score-element-info.hh"
 #include "multi-measure-rest.hh"
 
-
 void
 Timing_engraver::fill_staff_info (Staff_info &inf)
 {
   inf.time_C_ = &time_;
-  inf.rhythmic_C_ = &default_grouping_;
 }
 
 
index 10bc8f196b2cced90efdec8ebf77afcda44026dc..08cddf27902fc2520345ba4fc3f709c448a0b569 100644 (file)
 #include "global-translator.hh"
 #include "multi-measure-rest.hh"
 
-Timing_translator::Timing_translator ()
-{
-  default_grouping_ = Rhythmic_grouping (MInterval (0, 1), 4); // ugh
-}
-
 bool
 Timing_translator::do_try_music (Music*r)
 {
@@ -68,10 +63,6 @@ Timing_translator::do_process_requests()
          else
            {
              time_.set_time_signature (b_i, o_i);
-
-             default_grouping_ =
-               Rhythmic_grouping (MInterval (0,Moment (b_i, o_i)),
-                                  b_i == 1 ? 2 : b_i);
            }
        }
       else if (Partial_measure_req *pm = dynamic_cast <Partial_measure_req *> (tr_l))
@@ -93,20 +84,12 @@ Timing_translator::do_process_requests()
                time_.whole_in_measure_.str ()));
 
              time_.whole_in_measure_ = 0; // resync
-             time_.error_b_ = true;
            }
        }
       else if (Cadenza_req *cr = dynamic_cast <Cadenza_req *> (tr_l))
        {
          time_.set_cadenza (cr->on_b_);
        }
-      else if (Measure_grouping_req *mg=dynamic_cast <Measure_grouping_req *> (tr_l))
-       {
-         default_grouping_ =
-           parse_grouping (mg->beat_i_arr_,
-                           mg->elt_length_arr_);
-
-       }
     }
 
   Translator_group * tr=0;
@@ -165,6 +148,5 @@ Timing_translator::do_print () const
 {
 #ifndef NPRINT
   time_.print ();
-  default_grouping_.print ();
 #endif
 }
index 4b6d40d16e499198f13efc820829c1f614b413a3..3a9118cab39e9686d8bcda723cfcb9a2d590b007 100644 (file)
@@ -40,7 +40,7 @@ the  alternative just set.
 void
 Unfolded_repeat_iterator::next_element () 
 {
-  New_repeated_music const* mus =dynamic_cast<New_repeated_music const*> (music_l_);
+  Repeated_music const* mus =dynamic_cast<Repeated_music const*> (music_l_);
   delete current_iter_p_;
   current_iter_p_ =0;
 
@@ -113,7 +113,7 @@ Unfolded_repeat_iterator::next_moment () const
 void
 Unfolded_repeat_iterator::construct_children ()
 {
-  New_repeated_music const* mus =dynamic_cast<New_repeated_music const*> (music_l_);
+  Repeated_music const* mus =dynamic_cast<Repeated_music const*> (music_l_);
   alternative_cons_l_ = (mus->alternatives_p_)
     ? mus->alternatives_p_->music_p_list_p_->head_
     : 0;
index 32c48b9687ad3260b81c115d005b54979d3f3ab0..2cf391856ce81fcd12f3cd74becab56e3c2af50e 100644 (file)
@@ -30,7 +30,7 @@ Volta_spanner::do_brew_molecule_p () const
 {
   Molecule* mol_p = new Molecule;
 
-  if (!column_arr_.size ())
+  if (!bar_arr_.size ())
     return mol_p;
 
   Real interline_f = paper_l ()->get_realvar (interline_scm_sym);
@@ -43,8 +43,8 @@ Volta_spanner::do_brew_molecule_p () const
   Real h = volta.dim_.y ().length ();
   
   Molecule num (lookup_l ()->text ("volta", number_str_, paper_l ()));
-  Real dy = column_arr_.top ()->extent (Y_AXIS) [UP] > 
-     column_arr_[0]->extent (Y_AXIS) [UP];
+  Real dy = bar_arr_.top ()->extent (Y_AXIS) [UP] > 
+     bar_arr_[0]->extent (Y_AXIS) [UP];
   dy += 2 * h;
 
   for (int i = 0; i < note_column_arr_.size (); i++)
@@ -65,10 +65,10 @@ Volta_spanner::do_brew_molecule_p () const
 void
 Volta_spanner::do_add_processing ()
 {
-  if (column_arr_.size ())
+  if (bar_arr_.size ())
     {
-      set_bounds (LEFT, column_arr_[0]);
-      set_bounds (RIGHT, column_arr_.top ());  
+      set_bounds (LEFT, bar_arr_[0]);
+      set_bounds (RIGHT, bar_arr_.top ());  
     }
 }
   
@@ -85,8 +85,8 @@ Volta_spanner::do_height () const
 void
 Volta_spanner::do_post_processing ()
 {
-  if (column_arr_.size())
-    translate_axis (column_arr_[0]->extent (Y_AXIS)[UP], Y_AXIS);
+  if (bar_arr_.size())
+    translate_axis (bar_arr_[0]->extent (Y_AXIS)[UP], Y_AXIS);
 }
 
 void
@@ -95,13 +95,13 @@ Volta_spanner::do_substitute_element_pointer (Score_element* o, Score_element* n
   if (Note_column* c = dynamic_cast <Note_column*> (o))
     note_column_arr_.substitute (c, dynamic_cast<Note_column*> (n));
   else if (Bar* c = dynamic_cast <Bar*> (o))
-    column_arr_.substitute (c, dynamic_cast<Bar*> (n));
+    bar_arr_.substitute (c, dynamic_cast<Bar*> (n));
 }
   
 void
-Volta_spanner::add_column (Bar* c)
+Volta_spanner::add_bar  (Bar* c)
 {
-  column_arr_.push (c);
+  bar_arr_.push (c);
   add_dependency (c);
 }
 
index 514693c498fdde226187737899d3cc08875b92dd..a57db26e5043f1f8b16954c8d94cb59af3872790 100644 (file)
@@ -1,6 +1,6 @@
 % Toplevel initialisation file. 
        
-\version "1.0.21";
+\version "1.1.52";
 
 
 \include "declarations.ly"
index 3bba4f0837079b7512ee57e4a103023fcc6a7034..1820f7154169ca2ed5efb7c829b3fffdd6598dda 100644 (file)
@@ -1,6 +1,6 @@
 % Toplevel initialisation file. 
        
-\version "1.0.21";
+\version "1.1.52";
 
 
 \include "declarations.ly";
index a5bfb078066e505042d42c6f24cf6810da95b07f..4cc0ac1dc7562d841f65581ae96e1995be2f8d4e 100644 (file)
@@ -1,7 +1,7 @@
 % Toplevel initialisation file. 
        
 
-\version "1.0.21";
+\version "1.1.52";
 
 
 \include "declarations.ly"
index b32c0338a4e0f384851fbf57ed55bcf08f111a61..1fec210840b16a1958913c2c49a6d19f6a4f8892 100644 (file)
@@ -1,6 +1,6 @@
 % Toplevel initialisation file. 
        
-\version "1.0.21";
+\version "1.1.52";
 
 
 \include "declarations.ly"
index dce0e249ebdeaa732a594507befcfe1cd5d8560e..10adf06a5534ae50e9142c99f189aad57f36295d 100644 (file)
@@ -63,6 +63,7 @@ StaffContext=\translator {
 RhythmicStaffContext=\translator{
        \type "Engraver_group_engraver";
        numberOfStaffLines  = "1";
+       barSize = \staffheight;
        \consists "Pitch_squash_engraver";
        \consists "Separating_line_group_engraver";     
        \name RhythmicStaff;
index 57e9bba99e3870a5b41fc3fc3c5f06d145bd8271..5c3ea3e33edbde2033a1dff1381f85013a5a902e 100644 (file)
@@ -1,6 +1,6 @@
 % Toplevel initialisation file. 
        
-\version "1.0.21";
+\version "1.1.52";
 
 
 \include "declarations.ly"
index cb2f9f3cf14db92386844bb8de88d1c8ceb2a5dc..252795dd956aefe0b0a106739bb114bc1a439407 100644 (file)
@@ -2,7 +2,7 @@
 
 
 
-\version "1.0.21";
+\version "1.1.52";
 
 paper_sixteen = \paper {
        staffheight = 16.0\pt;
index 86df45795e6a769aec590abc77966769e0b39b33..25e85d7dc6159d947580dfa9bd086ddbc44c50f7 100644 (file)
@@ -1,7 +1,7 @@
 % paper20.ly
 
 
-\version "1.0.21";
+\version "1.1.52";
 
 paper_twenty = \paper {
        staffheight = 20.0\pt;
index c3bbd2edadf24eda57558cd79b8403c7e01b0b45..a41d3c2c1a856b31ae976f947eb8f9254781a703 100644 (file)
@@ -116,7 +116,6 @@ slur_rc_factor = 2.4;
 notewidth = (\quartwidth + \wholewidth) / 2.0;
 
 % ugh
-barsize = \staffheight;
 rulethickness = \staffline;
 
 gourlay_energybound = 100000.;
index a4e4fca95074012b4d0b2592f01f0936fcb04127..f9eafe68e2f3053412df202f56d0ab894c09e7a7 100644 (file)
@@ -3,42 +3,56 @@
 %
 \translator {
        \type "Staff_performer";
+       \name Staff;
        \accepts Voice;
+
        \accepts VoiceOne;              % ugh.
        \accepts VoiceTwo;
        \accepts VoiceThree;
        \accepts VoiceFour;
 
-       \name Staff;
        \consists "Key_performer";
        \consists "Time_signature_performer";
 }
 
+%% urg, why (needs praeludium-*.ly) these?
 \translator
 {
        \type "Performer_group_performer";
        \consists "Note_performer";
- \name VoiceFour;
       \name VoiceFour;
 }
 
 \translator
 {
        \type "Performer_group_performer";
        \consists "Note_performer";
-\name VoiceThree;
+       \name VoiceThree;
 }
 \translator
 {
        \type "Performer_group_performer";
        \consists "Note_performer";
- \name VoiceOne;
       \name VoiceOne;
 }
+
 \translator
 {
        \type "Performer_group_performer";
+       \name Voice;
        \consists "Note_performer";
-\name Voice;
+       \consists "Tie_performer";
+%      \accepts Grace;
 }
+
+\translator {
+       \type "Grace_performer_group";
+       \name "Grace";
+       \consists "Note_performer";
+       \consists "Tie_performer";
+        weAreGraceContext = "1";
+}
+
 \translator
 {
        \type "Performer_group_performer";
index 979e2e66f07fd29205a6d7ae12fc2dbb39d67595..4ecbd24678f563d1f730f9c07639d9c85cf2ec8e 100644 (file)
@@ -8,7 +8,7 @@ SEE THE REFERENCE MANUAL FOR EXPLANATIONS.
 
 %}
 
-\version "1.0.20";
+\version "1.1.52";
 
 %hmm, (these) abbrevs suck, imo
 % i guess they're meant as some form of doco
index eea258c9d1a4f84c701a0825d0fa7d892452f01c..cbd3225c8e2778eb7b7b78b0499e31af79d91ff8 100644 (file)
@@ -43,3 +43,5 @@ prallprall = \script "prallprall"
 prallmordent = \script "prallmordent"
 upprall = \script "upprall"
 downprall = \script "downprall"
+segno = \script "segno"
+wheel = \script "wheel"
\ No newline at end of file
index 91ccd66bf5ee080fb0c023718638866712d00b76..64a289c86ef1d2b25e41856b637a1c67c13bbe3c 100644 (file)
@@ -252,7 +252,7 @@ fet_beginchar("grace 8th Flag (up)", "u3grace", "graceeighthflag")
                (hip_width, foot_depth), 
                hip_depth_ratio, foot_width_ratio, hip_thickness, foot_thickness);
 
-       pickup pencircle scaled stemthickness;
+       pickup pencircle scaled 1.5 stemthickness;
        draw (0, 0) .. (0,-2 interline);
        draw (-b ,-foot_depth * hip_depth_ratio) ..
          (w, -flare);
@@ -440,7 +440,7 @@ fet_beginchar("grace 8th (down)", "d3grace", "dgraceeighthflag")
                hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness);
 
 
-       pickup pencircle scaled stemthickness;
+       pickup pencircle scaled 1.5 stemthickness;
        draw (0, 0) .. (0,-2 interline);
        draw (-b, -foot_depth * hip_depth_ratio) .. (w,-flare);
        y_mirror_char;
index 79e559bafc752dcad63687728bf997d37d598399..26e0c66b8effd38f1e2e0780dbb475e43bc8fa39 100644 (file)
@@ -138,6 +138,7 @@ main (int argc_i, char* argv_sz_a[])
   textdomain (name.ch_C ()) ;
 #endif
 
+  bool key_override_b = false;
   Mudela_key key (0, 0);
 
   Long_option_init long_option_init_a[] =
@@ -183,7 +184,8 @@ main (int argc_i, char* argv_sz_a[])
            int i = str.index_i (':');
            i = (i >=0 ? i : str.length_i ());
            key.accidentals_i_ = String_convert::dec2_i (str.left_str (i));
-           key.minor_i_ = (int)(bool)String_convert::dec2_i (str.cut_str (i + 1,1));
+           key.minor_i_ = (int)(bool)String_convert::dec2_i (str.cut_str (i + 1, str.length_i ()));
+           key_override_b = true;
            break;
          }
        case 'n':
@@ -250,7 +252,8 @@ main (int argc_i, char* argv_sz_a[])
          return 1;
 
        // if given on command line: override
-       score_p->mudela_key_l_ = &key;
+       if (key_override_b || !score_p->mudela_key_l_)
+         score_p->mudela_key_l_ = &key;
        mudela_score_l_g = score_p;
        score_p->process();
 
index 661d6a8bcb835354b56cfadfd4a9424b95495098..49840ec77cfbd6d5a9f0f7a418524800e32246ad 100644 (file)
@@ -304,12 +304,14 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
          else if ((byte == 0x59) && (next == 0x02))
            {
              next_byte ();
-             int accidentals_i = (int)next_byte ();
-             int minor_i = (int)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);
              item_p = p;
+#if 0
              info_l_->score_l_->mudela_key_l_ = p;
              mudela_staff_p_->mudela_key_l_ = p;
+#endif
            }
          // SSME               [\0x7f][\x03]
          else if ((byte == 0x7f) && (next == 0x03))
index 12b1b1f3ec2a5d75e16cd54ac0c29caa521957ce..58a1db586bbbf5bb2526200371270873ccc09bc9 100644 (file)
@@ -46,21 +46,31 @@ Mudela_key::Mudela_key (int accidentals_i, int minor_i)
   minor_i_ = minor_i;
 }
 
+char const *accname[] = {"eses", "es", "", "is" , "isis"};
+
 String
 Mudela_key::str ()
 {
-  int key_i = 0;
-  if (accidentals_i_ >= 0)
-    key_i =   ((accidentals_i_ % 7)[ "cgdaebf" ] - 'a' - 2) % 7;
-  else
-    key_i =   ((-accidentals_i_ % 7)[ "cfbeadg" ] - 'a' - 2) % 7;
+  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 keyname = (1) // !minor_i_)
-    ?  to_str ((char)  ((key_i + 2) % 7 + 'A'))
-    : to_str ((char)  ((key_i + 2 - 2) % 7 + 'a'));
-  // heu, -2: should be - 1 1/2: A -> fis
-   
-  return String("\\key " + keyname  + ";\n");
+  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" : "") + ";\n";
 }
 
 String
@@ -71,27 +81,20 @@ Mudela_key::notename_str (int pitch_i)
 
   // 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[  (minor_i_ * 5 + pitch_i) % 12 ];
+  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 ];
+  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 = - accidental_i;
+      accidental_i *= -1;
       notename_i =  (notename_i + 1) % 7;
     }
 
   String notename_str = to_str ((char)(((notename_i + 2) % 7) + 'a'));
-  while  (accidental_i-- > 0)
-    notename_str += "is";
-  accidental_i++;
-  while  (accidental_i++ < 0)
-    if   ((notename_str == "a") ||  (notename_str == "e"))
-      notename_str += "s";
-    else
-      notename_str += "es";
-  accidental_i--;
+  if (accidental_i)
+    notename_str += String (accname [accidental_i + 2]);
 
   /*
     By tradition, all scales now consist of a sequence of 7 notes each
@@ -113,18 +116,36 @@ Mudela_key::notename_str (int pitch_i)
     
     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 */
+  /* ok, bit ugly, but here we go -- jcn */
 
-  if (minor_i_ && (accidentals_i_ == -1))
-    if (notename_str == "des")
-      notename_str = "cis";
-  
-  if (minor_i_ && (accidentals_i_ == -2))
-    if (notename_str == "ges")
+
+  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;
index 1052b3149d6480be7c2af6ae9770e94721ddd020..286d2176c9ee18e911f5ee4580931c55d5e18680 100644 (file)
@@ -10,6 +10,9 @@
 #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)
 {
@@ -56,6 +59,8 @@ Mudela_voice::output (Mudela_stream& mudela_stream_r)
        }
 
       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)
index 0bca494223d61937d07ebbd92ef7e12ec384df3d..9663a9b2810e7523b27961b6fd5cd9b22c6a5acf 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "global.ly"
 \include "violoncello.ly"
index 923b3b57c6db56b5f2f1344c8a90864f32d32753..b88420f9ba6bf659af66487e9bf90fe335d27f22 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "global.ly"
 \include "clarinetti.ly"
index aa441a3ba390ccb7ee2d731de0fdf95973a347f2..12f9d51f14c37dab835ea17956e5485bb83c1fb9 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "clarinetto-1.ly"
 \include "clarinetto-2.ly"
index dca9983180f5660823b8cf2c50a6c862fa5d559a..fe65e1f79d1060dafcd4d9c60e34fbcaa0410cd1 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 clarinetto1 = \notes \relative c {
        R1 *2 | d''4-.\ff r r2 | R1 *3 | e4-. r r2 | R1 *3 |
index 281418a8fd0bb52de69da547bb6e5b1e2fe81b8a..140bfab5518be177e71596b4aa8ba08c802a8b2b 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 clarinetto2 = \notes \relative c { 
        R1*2 bes''4-.\ff r r2 | R1*3 | cis4-. r r2 | R1 *3 | 
index 8f364a98cc21b711fcb159df4a7bb42474f5069d..82287a84208140a84970e21f4b27bdb29f11fb56 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "global.ly"
 \include "contrabasso.ly"
index 24ee6a2a3ce02a4f663dbd0548ed0e1d638945c9..09a95d239cd2562d9efdeafdf57f7dc3e3fde624 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 contrabasso = \notes \relative c {
 %      \translator Staff=violoncello
index 70a369b32bde08764df7d2272d5a7499356a9a90..f1f569d53f6870498e1f1a3dfd45283292e624fb 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "global.ly"
 
index 18356afdb4930c741c67d497778dafd2ca86505b..4bb3ef670e5970b2e7e9a01a143be39b04e5b917 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "global.ly"
 \include "corni.ly"
index 3baa0bff1a20d5b54dac722e415fad6f6973df78..488ce53deb12100011828965cc071c34288c4fa3 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "corno-1.ly"
 \include "corno-2.ly"
index c3ea92df034530491e389cc9278b079103b3f99f..f590f630318bda080341e4360fa989b11fd65a9d 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 corno1 = \notes \relative c {
        R1 *2 | f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
index 2461ec83d4a441960a18e21e38b1d9d463093ef7..771c75ac57ad02f254a54dae865ca8252037d167 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 corno2 = \notes \relative c {
        R1 *2 | d''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 |
index 94fd4fd552c13e12f0720cddc5614bf253435793..807d2c86f0decd523c8d53e0c1cdddf44cce3b25 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "global.ly"
 \include "fagotti.ly"
index 555c01ef9b52365c2eedd7e8a28a4c3d742ae434..6b041a4c7b96a418dceacaa919d2fd0739c98bf9 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "fagotto-1.ly"
 \include "fagotto-2.ly"
index fcdb906da0f470a8ff71f59a14f7a1e865b6545b..3599a3b20e85ea5b7b906667c8be78ac0ab4da10 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 fagotto1 = \notes \relative c {
        R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 |
index 980337e00321625269487addf239509e5fd79e15..1ee6a0f2c8c7eab8cd7832916e638d396427c274 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 fagotto2 = \notes \relative c {
        R1 *2 | f4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
index e10242a35b01e12b0ef44ec3e59b85077df3d2cf..ab246c4999eb45682d1cab7a42e21cbd9026153f 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "global.ly"
 \include "flauti.ly"
index 335cfd30910d95c558387297a89fd023dd1c528e..bb617f040b5698d199382200f158c2a6413942a8 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "flauto-1.ly"
 \include "flauto-2.ly"
index 4ae7119a3b690b0d432f75ef4417c1826f5a5483..cc58b2e8dc8d08328ad6ff97825b7ef26d8ec4ba 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 flauto1 = \notes \relative c {
        R1 *2 | c'''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 |
index 067a3620dfb6b092400199cf0a82ef8141a74013..5a0299cfdd36abeb45de619e008dc9dc92645497 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 flauto2 = \notes \relative c {
        R1 *2 | as'''4-.\ff r r2 | R1 *3 | b4-. r r2 | R1 *3 | 
index 8eefc990013cee9815619c509878dac98fd96b84..1aa8083f410bdbe1fcea6e49ab152141c9cc0181 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 global = \notes {
        \time 4/4;
index 4631ba29e44b77c4e351b3e5b49830b1343da53b..1a76753e3b7708bbf514fa2ed7697f66bee52b09 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 oboe1 = \notes \relative c'' {
        R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 |
index 8a138bde031a51b1104909a0f307be47bb81278e..3f63f8e68321ff39585b28e8bcd26f78a1cd382e 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 oboe2 = \notes \relative c{
        R1 *2| f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
index cbdc44edb3b1ca01887d2676bb130e64d90c354a..4dc9b03581d80d88a65c7adecedf8f16db4ea3ab 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "global.ly"
 \include "oboi.ly"
index d9d8db98d522a68c55d987221cdd46cf3dae9ce4..226c4b96277f79d06305215b0a3435c0ee97ae32 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "oboe-1.ly"
 \include "oboe-2.ly"
index 64182a018aac1228d1054e6ab38f635b883f9a7b..089fb1ca2588c848ceda8c1e0e55cdb64a949462 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 timpani = \notes \relative c {
        R1 *2 | c4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
index 7e829fc02e7e8be1e0a3e27bf6f1ba9e0700458a..eb7d80eb417e01148cdd7d13ce2208bbb9244f98 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "global.ly"
 \include "trombe.ly"
index 28ea0951ff60be519c12089532da67bad611a615..19b0052a972446780665e2e8f36c10b6ea9c5662 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "trombo-1.ly"
 \include "trombo-2.ly"
index 1d7a55ee4db035eae570df93066a01d979aa8e6c..9fb05d6e4f4a3464c783bc72b3dc9a548eca0835 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 trombo1 = \notes \relative c {
        R1 *2 | c''4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
index 92fd2bfa757504423fad1472fbd7d5226b109bdd..75d7bf3ef460671eb1a942aa0f1449ea3aa761c9 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 trombo2 = \notes \relative c {
        R1 *2 | c'4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
index 7aac9fc86b36e82b928851c111cd959182aa4b3f..44b23129502c24d2e832af22c4555076c639d3a3 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 viola1 = \notes \relative c {
        \context Voice=one
index 1f1c90e0419624dd921b5ed512c3af58eee2cb9b..4b960a8acdc33d51827a5af43c0d9591c94972df 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 viola2 = \notes \relative c {
        % starts on (actualy, most part is on) same staff as viola1
index f6ac9f640ac6b0382ebcf72aa22bc8198d3db931..451392a4912a2c13f25346b807cd02e2bf9bc819 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "global.ly"
 \include "viola-1.ly"
index e5641f9fd1990d69b86ee7f2937943818e48955d..29287a6c9a4e56add9965b64f93d03012f82ef39 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "global.ly"
 \include "violino-1.ly"
index b77cd240aab65e9593d15835c4d9de54d90b2a24..8579677fe88fbf3a2a8ef338136a4a26f3dc1a4f 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 violino1 = \notes \relative c {
        c'1\ff ~ | c | <f4-. c'-. as'-.> r r2 | R1 |
index 89cc9cb00d0b81c28dc8e91f51cd95c225fd2bed..7cb9b83583e7667accb73ece286054db5fa33dbb 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "global.ly"
 \include "violino-2.ly"
index d9e906c74e3fa2b59e2913b7c3306120fa2e4170..a0583cd203b78fda6fcbb709732c33e492fe7184 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 violino2 = \notes \relative c {
        c'1\ff ~ | c | <f4-. c'-. as'-.> r r2 | R1 |
index 34f48f6a20cfcb464529327b86de0a03d466f082..0fa1446a1a08f8412a34947315b9054885f8a253 100644 (file)
@@ -7,7 +7,7 @@ enteredby =      "JCN";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "global.ly"
 \include "violoncello.ly"
index 28ffd4c402d724dd00f0daf496769a9550d1dafd..2ea3f661e97e47bbf0b13a58b10941aab7b601ed 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 violoncello = \notes \relative c {
        c1\ff ~ | c | f,4-. r r2 | r1 | c'1\ff ~ | c | f,4-. r r2 |
index 95aecf997d500679381d94132fdc7765f763a371..b3e4d878f7367077901c5701e96c66032a96e05f 100644 (file)
@@ -807,4 +807,4 @@ Bar_number_engraver;}}
 
 ----------------------------------------------------
 
-\version "1.0.21";
+\version "1.1.52";
index 18b3e3193384f77353a1fdeef23f5ff4c4484858..226e353c76f385fa303ae5e2ba10086148f179f6 100644 (file)
@@ -266,4 +266,4 @@ s1
 \paper{barsize=50.0; \translator {\StaffContext \consists
 Bar_number_engraver;}}
 }
-\version "1.0.21";
+\version "1.1.52";
index 27fa3e2c83536d7ff8be9a922b6ba17276d5dbb5..6e3d0dec97e3c476b4440919bd3221fb450c2c00 100644 (file)
@@ -336,4 +336,4 @@ g,4. |
 Bar_number_engraver;}}
 }
 
-\version "1.0.21";
+\version "1.1.52";
index fcd51d8faea139c7294421c898f5032d556221c1..93da8cb3ff5f167113d319190011c7cbabeec88f 100644 (file)
@@ -251,4 +251,4 @@ LHtoL = { \tolower \stemdown }
  
 
 }
-\version "1.0.21";
+\version "1.1.52";
index e4fe8310878018f2e4e1edbf505a1cc0c1589815..d40371b61b7494401135bf016cc14083f0b63459 100644 (file)
@@ -311,4 +311,4 @@ s8 [c''16 g'8 fis'16] [bes'' g' f' ees'] |
  \paper{barsize=50.0; \translator {\StaffContext \consists
 Bar_number_engraver;}}
 }
-\version "1.0.21";
+\version "1.1.52";
index 90984120b2bafcce4feaac1d5db84b514c48e799..3a88cee6485ef88ff58e5a8e23d68514d99b3a9c 100644 (file)
@@ -17,7 +17,7 @@ title = "Verso II";
        under the Gnu Public Licence.
 %}
        
-\version "1.0.21";
+\version "1.1.52";
 
 $voice_one = \notes \relative c' {
        a'2 bes4. [c16 bes] | a4 d ~ d c ~ | c b ~ [b8 a] a4 ~|
index 26fbb528fb68c3caea9d39cc8b8179cd90c69dbb..ca23359ef7d9f4b20b59534844598920b03b924f 100644 (file)
@@ -12,7 +12,7 @@
  Tested Features: cross staff auto beams and slurs, grace notes, no bars
 %}
 
-\version "1.0.20";
+\version "1.1.52";
 
 \include "nederlands.ly"
 
@@ -23,18 +23,18 @@ global = \notes {
   \bar ".|";
 }
   
-upper = \context Staff=treble \notes\relative c''{
+melody = \notes\relative c''{
   \clef violin;
   \property Voice.verticalDirection = 1
   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
+  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
+  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
+  )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
@@ -60,14 +60,11 @@ upper = \context Staff=treble \notes\relative c''{
 }
 
 basloopje = \notes\relative c{
-%  d,8( a' d f a d f d a f d )a
-  d,8( a' d f a \translator Staff=treble d f d \translator Staff=bass a f d )a
+%  d,8( a' d f a \translator Staff=treble d f d \translator Staff=bass a f d )a
+  d,8( a' d f a d f d a f d )a
 }
 
-lower = \context Voice=two \notes \relative c{
-  \stemdown
-  \property Staff.slurVerticalDirection = 1
-
+accompany = \notes \relative c{
   % snapnie, hoevaak relative c heeft ze nodig?
   \notes\relative c \basloopje
   \notes\relative c \basloopje
@@ -105,19 +102,20 @@ lower = \context Voice=two \notes \relative c{
   < e1 b' e> ~ < e b' e> 
 }
 
-\score {
-    \context PianoStaff < 
-      \context Staff = treble < 
-        \global 
-       \upper
-      >
-      \context Staff = bass <
-        \global
-       \clef bass;
-        \lower
-      >
-    >
 
+\score{
+  \notes{
+    \context AutoSwitchGrandStaff \relative c <
+      \global
+      \context Staff=upper { 
+        \context Voice=foo
+        \property Voice.verticalDirection = 1
+        \property Voice.scriptVerticalDirection = 1
+        \melody 
+       }
+      \context AutoSwitchContext \accompany
+      >
+  }
   \paper {
     gourlay_maxmeasures = 4.;
     indent = 8.\mm;
@@ -126,10 +124,6 @@ lower = \context Voice=two \notes \relative c{
     % no slur damping
     slur_slope_damping = 100.0;
 
-    \translator{
-      \VoiceContext
-      beamAutoEnd = "1/2";
-    }
     \translator{ 
       \StaffContext
       % don't auto-generate bars: not a good idea: -> no breakpoints
@@ -138,9 +132,40 @@ lower = \context Voice=two \notes \relative c{
       defaultBarType = "empty";
       \remove "Time_signature_engraver";
     }
+    \translator{ 
+      \GraceContext
+      \remove "Local_key_engraver";
+    }
+    \translator { 
+      \ScoreContext
+      \accepts AutoSwitchGrandStaff;
+      }
+    \translator{
+      \type "Engraver_group_engraver";
+      \name AutoSwitchGrandStaff;
+      \consists "Span_bar_engraver";
+      \consists "Vertical_align_engraver";
+      \consists "Piano_bar_engraver";
+      \consistsend "Axis_group_engraver";
+      minVerticalAlign = 2.*\staffheight;
+      maxVerticalAlign = 2.*\staffheight;      
+      switcherName = "Voice";
+      acceptorName = "Thread";
+      staffContextName = "Staff";
+
+      \accepts "AutoSwitchContext";
+      \accepts "Staff";
+      slurVerticalDirection = 1;
+      verticalDirection = -1;
+      beamAutoEnd = "1/2";
+      }
+    \translator {
+      \type "Engraver_group_engraver";
+      \name "AutoSwitchContext";
+      \consists "Staff_switching_translator";
+      }
+    }
+  \midi {
+    \tempo 4 = 54;
   }
-% broken 1.1.51.hwn2
-%  \midi {
-%    \tempo 4 = 54;
-%  }
 }
index 397be40bb6b68181e6ac7a5237520a9cee171acb..e77a6da234d50c1f535430f89b71add43d427708 100644 (file)
@@ -12,7 +12,7 @@
  Tested Features:
 %}
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "nederlands.ly"
 
index e20b01ace9eac7ee2a93577add8e50f317de8721..f2b0d496cca95cd00d4632be4ffadbf91de6901e 100644 (file)
@@ -10,7 +10,7 @@ title = "An Sylvia";
 }
 
 
-\version "1.0.20";
+\version "1.1.52";
 
 \include "paper16.ly";
 \include "paper13.ly";
@@ -259,13 +259,13 @@ tune=\notes  \relative c''  {
                r1 \bar "|.";
 }
 
-fourbars=\lyrics { _1 | _1 | _1 | _1 | }
+fourbars=\lyrics { "_"1*5 }
 verseOne=\lyrics {
                Who2. is4 | Syl- via, _2 |
-               What2. is4 | she, _ _ That |
+               What2. is4 | she,2  That4 |
                all our swains com- |
-               mend2 her?4 _ |
-               _1 |
+               mend2 her?4 " " |
+               " "1 |
                Ho-4 - - ly, |
                fair,2 _4 and |
                wise2. is4 |
index d38c8cce4d2886e2bc600c56df3c98a10cd11508..3564426fa31a9ea328289fc3613f1e34a2eb0fa9 100644 (file)
@@ -9,6 +9,6 @@ description = "A schubert song in 16 pt";
 copyright =     "public domain";
 } 
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "standchen.ly"
index 9ae5a8c5d8348df481c4cefe668804f113b1ea90..d5dbd8c30ef3d326c0b0b2d234dc4db7278d60eb 100644 (file)
@@ -1,15 +1,16 @@
 \header{
 filename =      "standchen.ly";
-title =         "St\"andchen (Serenade) Leise flehen meine Lieder\"";
+title    = "St\\\"andchen";
+subtitle = "(Serenade)\\\\``Leise flehen meine Lieder''";
 opus =  "D. 957 No. 4";
-composer =      "Franz Schubert (1797-1828)"
-        "Text by Ludwig Rellstab (1799-1860)";
+date = "August 1828";
+composer =      "Franz Schubert (1797-1828)";
+poet=   "Text by Ludwig Rellstab (1799-1860)";
 enteredby =     "JCN";
 copyright =     "public domain";
-description = "A schubert song in 20 pt";
 } 
 
-\version "1.0.21";
+\version "1.1.52";
 
 % fool make-website
 % \include "standchen.ly";
index cca14da911cf804d9f65b2b812fc4958ed09d5e6..c12411366841ebb25570097c0a9c955bb1c8b202 100644 (file)
@@ -16,10 +16,10 @@ multiple \paper{}s in one \score
 Note: Original key F.
 %}
 
-\version "1.0.21";
+\version "1.1.52";
 
 vocalVerse = \notes\relative c''{
-       \property Voice.dynamicdir=1
+       \property Voice.dynamicDir=1
        \times 2/3 { [ g8( )as] g } c4. g8 |
        \times 2/3 { [ f8( )g] f } c'4 f,8 r |
        g4.-> f8 \times 2/3 { [ f( )es] d } |
@@ -35,18 +35,14 @@ vocalVerse = \notes\relative c''{
        g8. b16 es4. d8 |
        c8. g16 es4. c8 |
        % \times 2/3 { [ as\grace( bes ] )
-%      \tiny  [as'16*1/16 bes16*1/16 ] 
-%      \normalsize \times 2/3 {  [as8 g8] as8 } c4. as8 |
-       \times 2/3 { [ as'8( )g] as } c4. as8 |
+       \grace { as'16 bes } \times 2/3 { [ )as8( )g] as } c4. as8 |
        g2. |
-       %\times 2/3 { [ f\grace( g] )
-       \times 2/3 { [ f8( )e] f } as4. f8 |
-       %\tiny \times 2/3 {  [f`16*1/16 g16*1/16] \normalsize
+       \grace { f16( g } \times 2/3 { [ )f8( )e] f } as4. f8 |
+  
        es!2. |
        g8. b16 es4. d8 |
        c8. g16 e4. c8 |
-       % \times 2/3 { [ a\grace( b] )
-       \times 2/3 { [ a'!8( ) gis] a } c4. a8 |
+       \grace { a'16( b } \times 2/3 { [ )a!8( ) gis] a } c4. a8 |
        g!2. |
        % \times 2/3 { [ a\grace( b] )
        \times 2/3 { [ d'8\f cis] d } f4. b,8 |
@@ -54,7 +50,7 @@ vocalVerse = \notes\relative c''{
 }
 
 vocalThrough = \notes\relative c{
-       \property Voice.dynamicdir=1
+       \property Voice.dynamicDir=1
        g''8. g16 b8. b16 d8. d16 |
        c4 b r |
        g4. b8 d8. c16 |
@@ -63,11 +59,8 @@ vocalThrough = \notes\relative c{
        a8. b16 c4-> a8 r |
        R2. |
        R2. |
-       % 4 bars copied from end verse 1
-       % \times 2/3 { [ a\grace( b] )
-       \times 2/3 { [ a!8( ) gis] a } c4. a8 |
+       \grace { a16( b } \times 2/3 { [ )a!8( ) gis] a } c4. a8 |
        g!2. |
-       % \times 2/3 { [ a\grace( b] )
        \times 2/3 { [ d'8\f cis] d } f4. b,8 |
        c!2. ~ |
        c4 r c |
@@ -82,15 +75,17 @@ lyricVerse1 = \lyrics{
        \times 2/3 {  mei-4 ne8 } Lie-4 der8 " "8 |
        Durch4. die8 \times 2/3 {  Nacht4 zu8 } |
        dir;2 " "4 |
-       " "4 " " " " |
-       " " " " " " |
+       " "2.*2
+%{     " "4 " " " " |
+       " " " " " " |%}
 % 11
        \times 2/3 {  In4 den8 } stil-4. len8 |
        \times 2/3 {  Hain4 her-8 } nie-4. der8 |
        Lieb-4. chen,8 \times 2/3 {  komm4 zu8 } |
        mir!2 " "4 |
-       " "4 " " " " |
-       " " " " " " |
+               " "2.*2
+%{     " "4 " " " " |
+       " " " " " " |%}
 % 17
        Fl\"us-8. ternd16 schlan-4. ke8 |
        Wip-8. fel16 rau-4. schen8 |
@@ -113,17 +108,19 @@ lyricVerse2 = \lyrics{
        \times 2/3 {  gal-4 len8 } schla-4 gen?8 " "8
        ach!4. sie8 \times 2/3 {  fleh-4 en8 } 
        dich,2 " "4
-       " "4 " " " " 
+       " "2.*2
+%{     " "4 " " " " 
        " "4" " " "
-
+%}
 % 11
        \times 2/3 {  Mit4 der8 } T\"o-4. ne8
        \times 2/3 {  s\"u-4 "\ss en"8 } Kla-4. gen8
        Fleh-4. en8 \times 2/3 {  sie4 f\"ur8 }
        mich2 " "4
-       " "4" " " " 
+       " "2.*2
+%{     " "4" " " " 
        " "4" " " "
-
+%}
 % 17
        Sie-8. ver-16 stehn4. des8
        Bus-8. ens16 Seh-4. nen8
@@ -162,65 +159,64 @@ lyricThrough = \lyrics{
 }
 
 trebleIntro = \notes\relative c{
-       \clef violin;
-       % ugh: id like to type this!
-       r8^"\bf m\\\"assig"\pp [<g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.>] |
-       r8 [<as-. c-.> <c-. es-.> <as-. c-.> <c-. es-.> <as-. c-.>] |
-       r8 [<as-. c-.> <c-. d-.> <as-. c-.> <c-. d-.> <as-. c-.>] |
-       r8 [<g-. b-.> <b-. d-.> <g-. b-.> <b-. d-.> <g-. b-.>] |
+       r8^"\bf m\\\"a\\\ss ig"\pp <g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.> |
+       r8 <as-. c-.> <c-. es-.> <as-. c-.> <c-. es-.> <as-. c-.> |
+       r8 <as-. c-.> <c-. d-.> <as-. c-.> <c-. d-.> <as-. c-.> |
+       r8 <g-. b-.> <b-. d-.> <g-. b-.> <b-. d-.> <g-. b-.> |
        \break
 }
 
 trebleVerse1 = \notes\relative c{
        %5
-       r8 [<g' c> <c es> <g c> <c es> <g c>] |
-       r8 [<f c'> <c' d> <f, c'> <c' d> <f, c'>] |
-       r8 [<f g b> <g b d> <f g b> <g b d> <f g b>] |
-       r8 [<es g c> <g c es> <es g c> <g c es> <es g c>] |
+       r8 <g' c> <c es> <g c> <c es> <g c> |
+       r8 <f c'> <c' d> <f, c'> <c' d> <f, c'> |
+       r8 <f g b> <g b d> <f g b> <g b d> <f g b> |
+       r8 <es g c> <g c es> <es g c> <g c es> <es g c> |
        <g''4.( b,> <)f8 d>
-         \times 2/3 { < [ f( d> <es c> <)d b] > } |
+       \times 2/3 { < [ f( d> <es c> <)d b] > } |
        %10
        <c2. es> |
-       r8 [<g, c> <c es> <g c> <c es> <g c>] |
-       r8 [<f c'> <c' d> <f, c'> <c' d> <f, c'>] |
-       r8 [<f as bes> <as bes d> <f g bes> <as bes d> <f g bes>] |
-       r8 [<es g bes> <g bes es> <es g bes> <g bes es>] 
+       r8 <g, c> <c es> <g c> <c es> <g c> |
+       r8 <f c'> <c' d> <f, c'> <c' d> <f, c'> |
+       r8 <f as bes> <as bes d> <f g bes> <as bes d> <f g bes> |
+       r8 <es g bes> <g bes es> <es g bes> <g bes es> 
        <{ es'( )  d4.() f8}{ c' | bes4.  as8 } > 
-        \times 2/3 { < [f( as> <es g> <)d f] > } |
+       \times 2/3 { < [f( as> <es g> <)d f] > } |
        %16
        <es2. g> |
-       r8 [<f, g> <g b> <f g> <g b> <f g>] |
-       r8 [<es g> <g c> <es g> <g c> <es g>] |
-       r8\pp [<es as c> <as c es> <es as c> <as c es> <es as c>] |
+       r8 <f, g> <g b> <f g> <g b> <f g> |
+       r8 <es g> <g c> <es g> <g c> <es g> |
+       r8\pp <es as c> <as c es> <es as c> <as c es> <es as c> |
        %20
-       r8 [<es g bes> <g bes es> <es g bes> <g bes es> <es g bes>] |
-       % \times 2/3 { [ as\grace( bes )
-       \times 2/3 { [ as'8( g as] } c4.-> ) as8 |
+       r8 <es g bes> <g bes es> <es g bes> <g bes es> <es g bes> |
+       \grace { as'16( bes } \times 2/3 { [ )as8( g as] } c4.-> ) as8 |
        g2. |
-       r8 [<f, g> <g b> <f g> <g b> <f g>] |
-       r8 [<e g> <g c> <e g> <g c> <e g>] |
-       r8 [<f a c> <a c f> <f a c> <a c f> <f a c>] |
-       r8 [<e g c> <g c e> <e g c> <g c e> <e g c>] |
+       r8 <f, g> <g b> <f g> <g b> <f g> |
+       r8 <e g> <g c> <e g> <g c> <e g> |
+       r8 <f a c> <a c f> <f a c> <a c f> <f a c> |
+       r8 <e g c> <g c e> <e g c> <g c e> <e g c> |
        \times 2/3 <
          { [ f'8\f( e f]  }
          {  f' e f } >
-       < {a4.- > )f8}  { a4. f8 }  > |
+       < {a4.- > )f8}  { a'4. f8 }  > |
 }
 
 trebleEentje = \notes \relative c'{
+       \context Voice=one \property Voice.verticalDirection = 0
        <e2 e'> <e4 g>|
-       <f2\mf as!(> [<as8.->( c> <)f16 )as>] |
-       <e4. g> [<e8-. g-.(> <e-. g-.> <e-. )g-.>] |
-       <f4. g> [<b,8-. g'-.(> <d-. g-.> <f-. )g-.>] |
+       <f2\mf as!(> <as8.->( c> <)f16 )as> |
+       <e4. g> <e8-. g-.(> <e-. g-.> <e-. )g-.> |
+       <f4. g> <b,8-. g'-.(> <d-. g-.> <f-. )g-.> |
        <e2 g> <e4\pp g> |
-       <f2 a(> [<a8. c> <f16 )a>] |
-       <e4. g> [<e8-. g-.(> <e-. g-.> <e-. )g-.>] |
-       <f4. g> [<b,8-. g'-.(> <d-. g-.> <f-. )g-.>] |
+       <f2 a(> <a8. c> <f16 )a> |
+       <e4. g> <e8-. g-.(> <e-. g-.> <e-. )g-.> |
+       <f4. g> <b,8-. g'-.(> <d-. g-.> <f-. )g-.> |
        %60
        <e2. g> |
 }
 
 trebleThrough = \notes \relative c'{
+       \context Voice=one \property Voice.verticalDirection = 0
        <e2. e'> |
        %61
        R2. |
@@ -232,23 +228,24 @@ trebleThrough = \notes \relative c'{
        < { d,2.\f a'2} { e2. ~ e2 } { b'2. c,2 }> r4 |
        \context Staff < 
                {
-                       \voiceone 
-                       [a8. b16] c4-> () a8 r |
-                       [a8. b16] c4-> () a8 r |
+                       \context Voice=one \property Voice.verticalDirection = 1 
+                       a8. b16 c4-> () a8 r |
+                       a8. b16 c4-> () a8 r |
                }
                { 
-                       \voicetwo 
+                       \context Voice=two \property Voice.verticalDirection = -1 
                        <d,4 f> <d2 f> |
                        <c!4 es> <c2 es> |
                }
        >
+       \context Voice=one \property Voice.verticalDirection = 0
        % 4 bars copied from end verse1
-       r8 [<f, a c> <a c f> <f a c> <a c f> <f a c>] |
+       r8 <f, a c> <a c f> <f a c> <a c f> <f a c> |
        %70
-       r8 [<e g c> <g c e> <e g c> <g c e> <e g c>] |
+       r8 <e g c> <g c e> <e g c> <g c e> <e g c> |
        \times 2/3 < { [ f'8\f( e f] }
           {  f' e f }>
-       < { a4.-> )f8 } { a4. f8 } > |
+       < { a4.-> )f8 } { a'4. f8 } > |
        <e2 e'> r4 |
        <es!2 es'! > r4 |
        \property Voice . textStyle =  "italic"
@@ -258,9 +255,9 @@ trebleThrough = \notes \relative c'{
        <c2 c'> <e4\pp g> |
 
        % four copied from begin eentje
-       <f2 as!(> [<as8.-> c> <f16 )as>] |
-       <e4. g> [<e8-. g-.(> <e-. g-.> <e-. )g-.>] |
-       <f4. g> [<b,8-. g'-.(> <d-. g-.> <f-. )g-.>] |
+       <f2 as!(> <as8.-> c> <f16 )as> |
+       <e4. g> <e8-. g-.(> <e-. g-.> <e-. )g-.> |
+       <f4. g> <b,8-. g'-.(> <d-. g-.> <f-. )g-.> |
        %80
        \property Voice . textStyle =  "italic"
        <e2._"dim." g> |
@@ -269,8 +266,7 @@ trebleThrough = \notes \relative c'{
 }
 
 bassIntro = \notes\relative c{
-       \clef bass;
-       \property Voice.dynamicdir=1
+       \property Voice.dynamicDir=1
 %1
        <c,2 c'> r4 |
        <as2 as'> r4 |
@@ -280,7 +276,7 @@ bassIntro = \notes\relative c{
 
 bassVerse1 = \notes\relative c{
 %      \clef bass;
-       \property Voice.dynamicdir=1
+       \property Voice.dynamicDir=1
 %5
        <c,2 c'> r4 |
        <as2 as'> r4 |
@@ -311,7 +307,7 @@ bassVerse1 = \notes\relative c{
 }
 
 bassEentje = \notes\relative c{
-       \property Voice.dynamicdir=1
+       \property Voice.dynamicDir=1
        <c,8 c'> [<c' f as!> <f as c> <c f as> <f as c> <c f as>] |
        c,8 [<c' e g> <e g c> <c e g> <e g c> <c e g>] |
        <g,8 g'> [<d'' g> <g b> <d g> <g b> <d g>] |
@@ -323,7 +319,7 @@ bassEentje = \notes\relative c{
 }
 
 bassThrough = \notes\relative c{
-       \property Voice.dynamicdir=1
+       \property Voice.dynamicDir=1
        %61
        <g,8^"cresc." g'> [<g' b d> <b d f> <g b d> <as!-> b-> d->> <b d f>] |
        <g,8 g'> [<g' d'> <d' f> <g, d'> <as-> b-> d->> <b d f>] |
@@ -366,11 +362,12 @@ global = \notes{
 }
 
 
-lyricFour = \lyrics{ 
-       " "4 " " " "
-       " " " " " "
+lyricFour = \lyrics{
+       " "2.*4
+%{     " "4 " " " "
        " " " " " "
        " " " " " "
+       " " " " " "%}
 }
  
 allLyrics = {
@@ -391,7 +388,11 @@ lyricStaff = \context Lyrics = lyric<
                
 vocals = \notes{
        \clef treble;
-       \property Voice.dynamicdir=UP
+       % certainly no auto-beaming for vocals
+       \property Voice.beamAuto=0
+
+       \property Voice.dynamicDir = \up
        \skip 4 * 12; 
        \vocalVerse 
        \skip 4 * 24; 
@@ -406,6 +407,8 @@ vocalStaff = \context Staff = vocal<
 >
 
 treble = {
+       \clef treble;
+       \property Voice.beamAutoBegin=0
        \trebleIntro 
        \trebleVerse1 
        \trebleEentje
@@ -419,6 +422,7 @@ trebleStaff = \context Staff = treble<
 >
 
 bass = {
+       \clef bass;
        \bassIntro 
        \bassVerse1 
        \bassEentje
@@ -431,7 +435,7 @@ bassStaff = \context Staff = bass<
        \bass
 >
 
-grandStaff = \context GrandStaff<
+grandStaff = \context PianoStaff <
        \trebleStaff
        \bassStaff
 >
@@ -455,7 +459,8 @@ grandStaff = \context GrandStaff<
 %              \translator { \OrchestralPartStaffContext }
                \translator { \HaraKiriStaffContext }
        }
-       \midi{
-               \tempo 4 = 54;
-       }
+%broken 1.1.51
+%      \midi{
+%              \tempo 4 = 54;
+%      }
 }
index 99e3b59d1d345bb54a5c351e837eabb0fda7ad9b..5a6a838bc5d55ea99862095cdec360ae014b0773 100644 (file)
@@ -6,7 +6,7 @@ date = "1868";
 title = "Diademata";
 metre = "6 6. 8 6. D";
 }
-\version "1.0.21";
+\version "1.1.52";
 
 sop=\notes \transpose c''{
        ees2  | ees4 ees4 g2 g2 |  c'1.  \bar "||";
index 5078d01f70c0aa311abb12609a65e1008cd7e304..ffdcd6f23e609790be5ef37e455fb301abb1171f 100644 (file)
@@ -4,7 +4,7 @@ composer = "Parry";
 metre = "10 10 . 11 11";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 sop = \notes \transpose c''{
        f4 | d' bes c' | f2 \bar "||";
index 6a7ba8e9b72331d76eecead736a7bcc0f35e6d10..1ad5091acbd71f084b67ca75691831bcf0507ca8 100644 (file)
@@ -7,7 +7,7 @@ title = "Maccabaeus";
 metre = "10 11. 11 11. and refrain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 sop=\notes \relative c'' {
        b2 gis4. a8  |b2 e,2 |
index 9026a41041e3b2390a1bfb423ac31acf1c9abef9..aef853723d54963db42869f8bc3b22435481517a 100644 (file)
@@ -7,7 +7,7 @@ title = "Ode to Joy";
 metre = "8 7 8 7 D";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 sop=\notes \relative c'' {
        b4 b c d | d c b a | g g a b | b4. a8 a2 \bar "||";
index 3c3a619e04151ce603bf6838e5bb1847527cb2f8..a2d5573c886dcfe715827370dd5bccc3105efc13 100644 (file)
@@ -8,7 +8,7 @@ poet = "Joseph Mohr";
 }
 
 
-\version "1.0.21";
+\version "1.1.52";
 
 global=\notes {
              \time 6/4;
index f2b28b35814c33864b568060cb0027915aa64126..e1136e13da83d5b9f0c82676b37bf2e544795ae3 100644 (file)
@@ -4,7 +4,7 @@
        piece = "Allemande";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 global = \notes{
        \time 4/4;
index 5469e6bf5211349ac1e78640cf70b07f90e3e68f..48431357928263e57554e6d1528e430f04fe646b 100644 (file)
@@ -10,7 +10,7 @@
 %% 
 %% Noe liknende skjer ogsÃ¥ i mellom andre og tredje stemme i takt 28
 
-\version "1.0.21";
+\version "1.1.52";
 
 global = \notes{
        \time 2/4;
index 1a4ec05b4643309ffe4df783c6a9719c12104a4d..4ec2a3428fda178c3301081ae9d1e2576d341e2f 100644 (file)
@@ -10,7 +10,7 @@
   copyright =   "Public Domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 global = \notes {
        \time 4/4;
index ecb73063349294e02f916e892709d670702a6b5e..586ab4e11f1510cad9118a0de48602ff6cea5e83 100644 (file)
@@ -12,7 +12,7 @@ enteredby =    "jcn";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 % upper = \context Staff \notes\relative c {
 upper = \context Staff=upper \notes\relative c {
index d77cc32d9e634c6818134aa1c4479f507c977416..24fcc6d71e4a0537fb41ba95b9fe2c7e4425cd44 100644 (file)
@@ -10,7 +10,7 @@ enteredby =    "jcn";
 copyright =     "public domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 upper = \context Staff \notes\relative c{
        \context Voice=i
        \property Voice . textStyle = "italic"
index e40697f63edbe8bf4d9c4e5b278696c550c1c5ec..71139a0aa612dff7b997bffdc0a908f71d08ca31 100644 (file)
@@ -8,7 +8,7 @@ composer =      "Johann Sebastian Bach (1685-1750)";
 enteredby =    "jcn";
 copyright =    "public domain";
 }
-\version "1.0.21";
+\version "1.1.52";
 
 one = \context Staff \notes\relative c {
        \context Voice=i
index 420a85766d21630215d42457a81e6fc4763b7763..9f0fde92410136fb916c9b5ce07dc9d46563c963 100644 (file)
@@ -8,7 +8,7 @@ composer =      "Johann Sebastian Bach (1685-1750)";
 enteredby =    "jcn";
 copyright =    "public domain";
 }
-\version "1.0.21";
+\version "1.1.52";
 
 
 upper = \context Staff \notes\relative c{
index f0259058a3343caed8c743c0ded135e228dead5a..a3568d5bbb3a7066565bae984109744a79ebe289 100644 (file)
@@ -8,7 +8,7 @@ composer =      "Johann Sebastian Bach (1685-1750)";
 enteredby =    "jcn";
 copyright =    "public domain";
 }
-\version "1.0.21";
+\version "1.1.52";
 
 
 one = \context Staff \notes\relative c{
index 632aad05100094901083603935721570a387d1b3..937ec2cd0350c278ce8ba1ae71f181328f397223 100644 (file)
@@ -15,7 +15,7 @@ copyright =    "public domain";
  dotted slurs
 %}
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "allemande-urtext.ly";
 
index 3b4fda0013f32035aee16d3cde18e2aec6d69dcb..fdfdf76f8b483c9db07f615f58b2354638760def 100644 (file)
@@ -106,4 +106,4 @@ allemande = \context Staff \notes<
 >
 
 
-\version "1.0.21";
+\version "1.1.52";
index f2797a3ca25d4c4660f731f085ce65ee76912de8..65793d7931b9b99bdee459d6580c2d6aaf7c7429 100644 (file)
@@ -91,4 +91,4 @@ courante = \context Staff \notes<
  \$courante_b
 >
 
-\version "1.0.21";
+\version "1.1.52";
index fe92ef610cf12f9db89eeaeb2ab9733802225c14..2ea545bd7b3e7d22a53c94b71ba055b2a56af47f 100644 (file)
@@ -106,4 +106,4 @@ gigue = \notes<
        \$gigue_b
 >
 
-\version "1.0.21";
+\version "1.1.52";
index 0890faa6927ffea09ea3982ab43d69187dea4ae0..80dc4bb6566561863f683853c5ddca6ae4fa1b4a 100644 (file)
@@ -16,7 +16,7 @@ copyright =    "public domain";
  dotted slurs
 %}
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "menuetto-urtext.ly";
 
index fb729e383e611bff1c5bab7a94eaa467fda1a012..f74c407aa5123efef94a44dfe5fcbc44bf3fed2a 100644 (file)
@@ -156,4 +156,4 @@ menuetto_ii = \context Staff\notes \relative c {
        d2.
 }
 
-\version "1.0.21";
+\version "1.1.52";
index 7b5681127149df0e10812eb639517a86198abfc7..158b401ac014dd220e43f8282cafbbf16a7bbf73 100644 (file)
@@ -15,7 +15,7 @@ copyright =    "public domain";
  dotted slurs
 %}
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "prelude-urtext.ly";
 
index 7445345cd2b017a464af32cf26798a804fd372f6..7e8847975b82b8000902ec4679307df396980c92 100644 (file)
@@ -280,4 +280,4 @@ prelude = \context Staff \notes<
        \$prelude_b
 >
 
-\version "1.0.21";
+\version "1.1.52";
index 36defc819866cf63605d7775244263c9e7c445cc..1da2d1d07217dccc821ac16bced654a769e243d9 100644 (file)
@@ -15,7 +15,7 @@ copyright =    "public domain";
  dotted slurs
 %}
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "prelude-urtext.ly";
 
index dba20e9cbcf3f51cba0abe18330012df5a9dd9b0..ead13666a5b0df8170ce6b3b80ed012de036a428 100644 (file)
@@ -92,4 +92,4 @@ sarabande = \context Staff \notes<
        \$sarabande_b
 >
 
-\version "1.0.21";
+\version "1.1.52";
index 61e33e7e0df6a4a3e10b699e7798e671f6c1e156..c239761d3e4241bd51cd644ee85d1798377afb7a 100644 (file)
@@ -16,4 +16,4 @@ $viola_i_staff = \context Staff = viola <
        \clef alto;
        \$global_i
 >
-\version "1.0.21";
+\version "1.1.52";
index 940f74010357751b0086078ea66b67dd2201224e..1c4a2d1618c6af9fb4fd6f8ef8a94f0d130beeb6 100644 (file)
@@ -37,4 +37,4 @@ $violino_i_staff = \context Staff = violino <
        >
        \$global_i
 >
-\version "1.0.21";
+\version "1.1.52";
index 7295ee78d02143300f4a8bfe8a13064869731b1e..e79ff409c09a8cecd4c9ec32dc8b6e471b5b80f4 100644 (file)
@@ -30,4 +30,4 @@ copyright =    "Public Domain";
        }
 }
 
-\version "1.0.21";
+\version "1.1.52";
index 315135b5b1270ca2545d9a8422addf439662538d..d7431f1dc980680580b1c3cecf1e3b7f81622c99 100644 (file)
@@ -30,4 +30,4 @@ copyright =    "Public Domain";
        }
 }
 
-\version "1.0.21";
+\version "1.1.52";
index 18900b161779151effb57e5f28c6e213b4be4e8d..bae5e6dab9b4d68f02ff1bae80dcb33efffa5675 100644 (file)
@@ -28,4 +28,4 @@ $violoncello_i_staff = \context Staff = violoncello <
        \clef bass;
        \$global_i
 >
-\version "1.0.21";
+\version "1.1.52";
index b00149f49561fe5571e1d625e5184e5410be604d..5d029b0bcb27f81e290d5740583b0ec624d40f02 100644 (file)
@@ -11,7 +11,7 @@ copyright =    "Public Domain";
 %{
        
 %}
-\version "1.0.21";
+\version "1.1.52";
 
 
 global = 
@@ -20,14 +20,13 @@ global =
        }
 
 
-beamkludge = \property Voice. stemLeftBeamCount = "1"
 
 tenor =
        \notes \relative c' {
        \clef "violin";
 
        \stemdown
-       r8 [c8 d e] [f. \beamkludge g32 f] [e8 a] |
+       r8 [c8 d e] [f. g32 f] [e8 a] |
        [d, g] ~ [g16 a g f] [e f e d] [c d c b ] |
        [a 8 fis'] g4 ~ [g8 fis16 e] [f8 d] |
        [g f! e d] c r r g' ~ |
@@ -36,20 +35,20 @@ tenor =
        [c8 f] r16 [g f e] [f8 d] g4 ~ |
        g4 r4 r2 |
        r1 |
-       r8 [g8 a b] [c .  \beamkludge d 32 c ] [b8 e ]
+       r8 [g8 a b] [c .   d 32 c ] [b8 e ]
 %% 10
        [a, d ] ~ [d 16 e  d  c ] b8 r8 r d, |
-       [e fis] [g.  \beamkludge a32 g] [fis8 b e, a] ~ |
+       [e fis] [g.   a32 g] [fis8 b e, a] ~ |
        [a16 b a gis] [fis8 f!] [e d] ~ [d16 e fis gis] |
        [a gis a b] [gis fis gis a] b8 r8 r4 |
-       r8 [c,8 d e] \stemup [f. \beamkludge g32 f] [e8 a] |
+       r8 [c,8 d e] \stemup [f.  g32 f] [e8 a] |
 %% 15
        [d, g] ~ [g16 a g f] e8 \stemdown [e fis g] ~ |
        [g8 fis] [gis8 a] ~ [a g! a b] |
        \stemboth
-       [c .  \beamkludge  d32 c ] [b8 e ] [a, d ] ~ [d 16 e  d  c ] |
+       [c .    d32 c ] [b8 e ] [a, d ] ~ [d 16 e  d  c ] |
        [b8 g'  cis,  d ] [e  cis  d  e  ] |
-       \stemdown a,8 r8 r e [fis g] \stemboth [a. \beamkludge b32 a] |
+       \stemdown a,8 r8 r e [fis g] \stemboth [a.  b32 a] |
 %% 20
        [g8 c  fis, b] ~ [b16 c  b a] \stemdown [g fis e d] \stemboth |
        e4 \stemdown d ~ [d16 a' g f!] [e g f! a] |
@@ -57,7 +56,7 @@ tenor =
        \stemboth g4. f8 ~ [f e] d4 |
        \stemdown e8 a4 g8 ~ [g8 f g a] |
 %% 25
-       [bes8. \beamkludge c32 b] [a8 d ] [g, c ] ~ [c 16 d  c  bes] |
+       [bes8.  c32 b] [a8 d ] [g, c ] ~ [c 16 d  c  bes] |
        [a bes a g] [f g f e] d4 ~ [d8. g16] |
        a4 r16 [f' 16 d 8] e 2 |
        }
@@ -69,12 +68,12 @@ soprane =
        \stemup
        r1 |
        r2 r8 [g'8 a b] |
-       [c . \beamkludge d32 c ] [b8 e ] [a, d ] ~ [d 16 e  d  c ] |
+       [c .  d32 c ] [b8 e ] [a, d ] ~ [d 16 e  d  c ] |
        [b g a b] [c  b c  d ] [e  d  e  fis ] [g 8 b,] |
 %% 5
        [c  a] [d 16 c  b a] [g8. g16] [f e f g] |
        [a g a b] c 2 b4 |
-       r8 [c8 d e] [f. \beamkludge g32 f] [e8 a] |
+       r8 [c8 d e] [f.  g32 f] [e8 a] |
        [d, g] ~ [g16 a g f] [e8 a] ~ [a16 b a g] |
        f2 [e8. fis16] g4 ~
 %% 10
@@ -85,13 +84,13 @@ soprane =
        a 4 r4 r2 |
 %% 15
        r2 r8 [g 8 a  b ] |
-       [c8. \beamkludge d32 c] [b 8 c] [d e] [f!. \beamkludge g32 f!] |
+       [c8.  d32 c] [b 8 c] [d e] [f!.  g32 f!] |
        [e8 a d, g] ~ [g16 a g f] [e8 a] |
-       [d,8 bes'] [a g16 f] [g f g e] [f g g \beamkludge f32 g] |
+       [d,8 bes'] [a g16 f] [g f g e] [f g g  f32 g] |
        [a16 cis, d g] [e8. d16] d8 r8 r4 |
 %% 20
        r2 r4 r8 g,  |
-       [a  b ] [c. \beamkludge d32 c] [b 8 e a,  d] ~ |
+       [a  b ] [c.  d32 c] [b 8 e a,  d] ~ |
        [e16 e d c] [b  c d e] [f g a g] [f e d c] |
        b 4 [c,8 d] g  c4 b 8 |
        c4 [b 8 bes 8] a  d4 c8 |
@@ -110,31 +109,31 @@ alt =
        r1 |
        r |
        r |
-       r8 [g'8 a b] [c . \beamkludge d32 c ] [b8 e ] |
+       r8 [g'8 a b] [c .  d32 c ] [b8 e ] |
 %% 5
        [a, d ] ~ [d 16 e  d  c ] [b8 c  ~ c  bes8] |
        [a d  g, c ] r16 [a16 b c ] d 4 |
-       g,4 r8 g8 [a b] [c . \beamkludge d32 c ] |
+       g,4 r8 g8 [a b] [c .  d32 c ] |
        [b8 e  a, d ] ~ [d 16 e  d  c !] [b!8 e ] ~ |
        e 4 d 4 [c 16 b c  a] [e'  d  c  b] |
 %% 10
        [c 16 a b c ] [d  c  b a] g4 r4 |
        r1 |
-       r8 [e8 fis gis] [a. \beamkludge b32 a] [gis8 c ] |
+       r8 [e8 fis gis] [a.  b32 a] [gis8 c ] |
        [fis, b] ~ [b16 c  b a] gis8 a4 gis8 |
        a4 r8 g8 [a b] c . [d32 c ] |
 %% 15
        [b8 e  a, d ] ~ [d'  g,] d 4 |
        [c 8 a] e' 4 d 8 r8 r4 |
-       r8 [a8 b cis ] [d . \beamkludge e32 d ] [c !8 f ] |
+       r8 [a8 b cis ] [d .  e32 d ] [c !8 f ] |
        [b,8 e ] ~ [e 16 f  e  d ] cis 8 r8 r4 |
-       r8 [a8 b cis ] [d . \beamkludge e32 d ] [c !8 fis ] |
+       r8 [a8 b cis ] [d .  e32 d ] [c !8 fis ] |
 %% 20
        [b, e ] ~ [e 16 fis  e  d ] c 2 ~ |
        [c 16 d  c  b] [a g a fis] [g8 b c  d ] |
-       [e . \beamkludge f32 e ] [d 8 g ] [c,  f ] ~ [f 16 g  f  e ] |
+       [e .  f32 e ] [d 8 g ] [c,  f ] ~ [f 16 g  f  e ] |
        d 4 [e 8 d ] ~ [d  g,] g4 ~
-       [g8 c, d e] [f. \beamkludge g32 f] [e8 a] |
+       [g8 c, d e] [f.  g32 f] [e8 a] |
 %% 25
        [d, g] ~ [g16 a g f] [e d e f] [g a bes g] |
        [a e f g] [a b c  a] b2 |
@@ -153,21 +152,21 @@ bass =
        r |
 %% 5
        r2 r8 [c8 d e] |
-       [f. \beamkludge g32 f] [e8 a] [d, g] ~ [g16 a g f] |
+       [f.  g32 f] [e8 a] [d, g] ~ [g16 a g f] |
        [e f e d] [c d c b ] [a' 8 d a fis] |
        [g16 a bes g] [cis,8 d] a'4 e4 |
        [a16 b c  d ] [c  b a g] c 8 r8 r4 |
 %% 10
        r2 r8 [g, 8 a  b ] |
-       [c. \beamkludge d32 c] [b 8 e] [a,  d] ~ [d16 e d c] |
+       [c.  d32 c] [b 8 e] [a,  d] ~ [d16 e d c] |
        b 8 e4 d8 c f!4 e8 ~ |
        e d4 e8 [f! e16 d] e4 |
        a, 4 r4 r2 |
 %% 15
-       r8 [g 8 a  b ] [c. \beamkludge d32 c] [b 8 e] |
+       r8 [g 8 a  b ] [c.  d32 c] [b 8 e] |
        [a, 8 d] ~ [d16 e d c] [b 8 bes  a  g'' ] |
        [a,, 8 fis' g e] d4 [e8 f!] |
-       [g8. \beamkludge a32 g] [f8 bes] [e, a] ~ [a16 bes a g] |
+       [g8.  a32 g] [f8 bes] [e, a] ~ [a16 bes a g] |
        [f e f d] [g8 a] d,2 ~ |
 %% 20
        [d16 e d c] [b  a  g  fis ] [e' 8 e fis g] ~ |
index e8e00e53f560318dd20a27e0b2d97d5abdc5b585..8e76f0d347be81cf59ba5b578b518924d71ac8c8 100644 (file)
@@ -19,7 +19,7 @@
    * auto beaming
 %}
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "nederlands.ly"                 % for correct parsing of note names
 
index e0d8f711f72cf387957a5608dab92b6ea930f9ca..df8501f268c91d67dcd9d30497bb4a6017d37bc1 100644 (file)
@@ -8,7 +8,7 @@ enteredby =      "Shay Rojansky";
 copyright =     "Public Domain";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 global = 
     \notes {
index 7d78a101be93550b9f7bc865f28d4aa99323a480..ac73c392b1f53ba9afe9c30b9d9ccba71b07b2ca 100644 (file)
@@ -383,4 +383,4 @@ bassocontinuo = \notes \relative c'{
         \midi{ \tempo 4 = 100; }
 }
 
-\version "1.0.21";
+\version "1.1.52";
index f29cfb833471b59562ea79ad581ddbd793c74a39..7a9930b7cc752576de5dab2edb0a1557accde5d9 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 corI=\notes\relative c'' {
 \key c;
index beb95deccd95f5983d6fc0c3179fd0cd58d9e477..4a4ecd6446f5e43556f47e7d6f3872a7c9dd1f14 100644 (file)
@@ -11,7 +11,7 @@ copyright =   "Mats Bengtsson, 1999. Free circulation permitted and " +
 % Process with 'ly2dvi -s parts.ly' to get the separate parts.
 
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "global.ly"
 \include "wood.ly"
index 878267faea0e67518589386879b7b676c3b5c137..181725d825b245687021f845b565be088832e1b7 100644 (file)
@@ -8,7 +8,7 @@ copyright =     "Mats Bengtsson, 1999. Free circulation permitted and " +
                "Statens Musikbibliotek, Stockholm, Sweden";
 }
 
-\version "1.0.21";
+\version "1.1.52";
 
 \include "global.ly"
 \include "wood.ly"
index 0944ec0802ea56b298b09387e5921ec5f1f7fbc3..e19eb2518c138d55590eadfa74331ff55104a475 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 viI=\notes\relative c'' {
 
index b3001a9a3410479bb382a390cf09aa26907adbb6..99230fd85b7ea66525b5839c7dc12abcadf77f9b 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.0.21";
+\version "1.1.52";
 
 oboe=\notes\relative c'' {
 \clef "treble";
index 6b4c9079e62733b4237097024c7f6556f4d7d619..4187780dc01463789ca8c20ff606b0e420890950 100644 (file)
@@ -11,14 +11,14 @@ copyright =  "public domain";
 Tested Features: cadenza mode
 %}
 
-\version "1.0.21";
+\version "1.1.52";
 
 
 cad = \notes  \relative c' {
        \property Score.instrument = "french horn"
        \context Staff {
        \cadenza 1;
-       \grouping 1*4;
+       
 
        \clef "violin";
        c'4.\mf g8
index dda8a525ee7f15d9677f6c3334b3661d9d4a477d..a11757c35edca33facc062e9024f9df091e85079 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 }
 
 
-\version "1.0.21";
+\version "1.1.52";
 
 allegro =
        \notes
@@ -237,7 +237,7 @@ rondo = \notes      \relative c'
        \partial 8;
        g'8 |
        \time 6/8;
-       \grouping 8*3 8*3;
+       
        \rondotheme
        
        R2.*13 |
index e8b434fe69728c05ce5809192222e3af27feaa0d..047efd54f03bf49f43f35fec732feb18d93bfd0a 100644 (file)
@@ -45,7 +45,7 @@ Voice engraver by uncommenting the lines in the paper
 definition below. --MB
 %} 
 
-\version "1.0.21";
+\version "1.1.52";
 
 global = \notes {
   \property StaffGroup.timeSignatureStyle = "old"
index 0c89debf8b1f5bdadae189e7c1d72e889ceb5905..6152042eadb9a3fb0ae4a1b9bdf0be53ffea7a78 100644 (file)
@@ -8,7 +8,7 @@ enteredby =      "jcn";
 copyright =     "public domain";
 latexheaders=    "headers";
 } 
-\version "1.0.21";
+\version "1.1.52";
 
 
 
index 3ab041ac90266c1d53c12152a3d4a3e1025b1580..fbeeae8615c8a1c7aaf2b03723e90ff4971bff7b 100644 (file)
@@ -33,7 +33,9 @@
        ("prallprall" . ((feta . ("prallprall" . "prallprall")) #f 0 1 0))
        ("prallmordent" . ((feta . ("prallmordent" . "prallmordent")) #f 0 1 0))
        ("upprall" . ((feta . ("upprall" . "upprall")) #f 0 1 0))
-       ("downprall" . ((feta . ("downprall" . "downprall")) #f 0 1 0)))
+       ("downprall" . ((feta . ("downprall" . "downprall")) #f 0 1 0))
+       ("segno" . ((feta . ("segno" . "segno")) #f 0 1 0))
+       ("wheel" . ((feta . ("wheel" . "wheel")) #f 0 1 0)))
       script-alist)
       )
 
index 4909d29dc743246667837f879a5e893b4a3f9000..f7a68585e10f182151e875bd7363f39d850d8759 100644 (file)
@@ -350,6 +350,18 @@ if 1:
                            'hshift -> horizontalNoteShift')
 
 
+if 1:
+       def conv(lines):
+               newlines =[]
+               for x in lines:
+                       x =  re.sub ('\\\\grouping[^;]*;','', x)
+                       newlines.append (x)
+               return newlines
+
+       conversions.append ((1,1,52), conv,
+                           'deprecate \\grouping')
+
+
 
 ############################
        
index 9d20383a2028b4924cc8a5c3f09dc31b231705d6..c1ba5322f375b928c40b06011db6f2724d03ed71 100644 (file)
@@ -30,7 +30,7 @@ TAROUTDIR=/tmp/tar-docxx
 rm -rf $TAROUTDIR
 mkdir -p $TAROUTDIR
 echo untarring ...
-tar -C $TAROUTDIR -zxf $TARBALL '*cc' '*.c' '*.hh' '*.h'
+tar -C $TAROUTDIR -zxf $TARBALL '*.hh' '*.h'
 
 cd $TAROUTDIR 
 DATE=`date`
index 30b4468f8fd5bc7611a8ba1dcc1c876484e2d8ca..78811f5d1f40796fe442a203b89a7d2e28575d2e 100644 (file)
@@ -22,7 +22,7 @@ $(outdir)/%.texinfo: %.yo
        $(YODL2TEXINFO) -doutdir=$(outdir) --live-data=3 -o $@ $<
 
 $(outdir)/%.txt: %.yo
-#      $(YODL2TXT) -doutdir=$(outdir) --live-data=3 -o $@ $<
-       $(YODL2MSLESS) -doutdir=$(outdir) --live-data=3 $< > $@
-       rm -f $(basename $<).ms
+       $(YODL2TXT) -doutdir=$(outdir) --live-data=3 -o $@ $<
+#      $(YODL2MSLESS) -doutdir=$(outdir) --live-data=3 $< > $@
+#      rm -f $(basename $<).ms