>>>>> "Mats" == Mats Bengtsson <[EMAIL PROTECTED]> writes:

Mats> Hi all, here is a first version of font symbols for C and C2
Mats> (alla breve) in time signatures. Since Peter had began fiddling
Mats> with the TeX and C++ parts, I only did the font.

Mats> I don't think it is a good solution to always print e.g. 4/4 as
Mats> 'C', in some cases you want the numbers. I'd like to be able to
Mats> write \time C; to get the C and \time 4/4; to get the numbers.
Mats> Also, in some occasions you only want e.g. a single 4 to denote
Mats> 4/4 or even a C2 to denote 3/2 which means that the symbol name
Mats> itself doesn't uniquely decide the time signature. Yet another
Mats> syntax problem to solve.

I agree.

The work I've done so far distinguishes 4/4 from C, but it doesn't go
far enough.

I think that we're going to have to divorce the time from the time
signature.

So
        \time 4/4;
will say 4 crotchets to a bar, and in the absence of  a \timesig
directive will generate the two stacked fours symbol.

        \timesig "C";

generates a broken circle; and in the absence of a
\time directive indicates 4 crotchets to the bar.

      \time 12/8; \timesig "C"; 

would be appropriate for setting the Moonlight Sonata right hand part
(all triplets, not marked as such).

Is there any better way of expressing this?

The patch appended doesn't go that far.
It allows
   \time "C";
   \time "C2"; % allabreve
   \time 2; % alternative allabreve (generates same symbol at present)
   \time 3; % perfect time, imperfect prolation
   \time 4; % imperfect time and prolation
   \time 6; % imperfect time, perfect prolation
   \time 9; % perfect time and prolation


This patch includes Mat's patch to add the metafont sources!

diff --new-file -r -b -u --exclude stepmake --exclude GNUmakefile --exclude out 
--exclude config* lilypond-1.0.11/Documentation/topdocs/AUTHORS.yo 
lilypond-1.0.11.new/Documentation/topdocs/AUTHORS.yo
--- lilypond-1.0.11/Documentation/topdocs/AUTHORS.yo    Wed Sep 16 03:22:43 1998
+++ lilypond-1.0.11.new/Documentation/topdocs/AUTHORS.yo        Mon Sep 28 07:47:01 
+1998
@@ -12,6 +12,9 @@
     comments.
 it()nemail(Eric Bullinger)([EMAIL PROTECTED]),
     accidental transposition.
+it()nemail(Peter Chubb)([EMAIL PROTECTED]),
+    Titling and ly2dvi.sh fixes; Clef names; time signatures; 
+    other minor bugs.
 it()nemail(Jan Arne Fagertun)([EMAIL PROTECTED]),
     TeX titling and lytodvi.sh
 it()nemail(Anthony Fok)([EMAIL PROTECTED]), 
diff --new-file -r -b -u --exclude stepmake --exclude GNUmakefile --exclude out 
--exclude config* lilypond-1.0.11/NEWS lilypond-1.0.11.new/NEWS
--- lilypond-1.0.11/NEWS        Fri Sep 25 00:45:51 1998
+++ lilypond-1.0.11.new/NEWS    Mon Sep 28 07:49:57 1998
@@ -1,3 +1,15 @@
+pl 11.mb1+pc1
+        - code to use feta-timesig.mf symbols.
+       Specify timesignatures as:
+               \time "C2"; for allabreve
+               \time 3; for perfect time, imperfect prolation
+               \time 4; for imperfect time and prolation (C)
+               \time "C"; for common time (at present same as \time
+4;)
+               \time 6; for imperfect time, perfect prolation
+               \time 9; for perfect time and prolation
+pl 11.mb1
+       - Added feta-timesig.mf, font for C and alla breve.
 
 pl 10.uu2
        - plet-spanner fix.
diff --new-file -r -b -u --exclude stepmake --exclude GNUmakefile --exclude out 
--exclude config* lilypond-1.0.11/TODO lilypond-1.0.11.new/TODO
--- lilypond-1.0.11/TODO        Tue Sep 22 22:39:52 1998
+++ lilypond-1.0.11.new/TODO    Mon Sep 28 12:22:08 1998
@@ -208,6 +208,9 @@
 
        * Rethink Time_description
          * \cadenza , \meter, \grouping should all be \properties
+         * Add new font symbols for perfect/imperfect time/prolation, and
+           delete the kludges in fetdefs.tex
+         * Separate notion of time and signature
 
        * rename
          - plet -> tuplet
diff --new-file -r -b -u --exclude stepmake --exclude GNUmakefile --exclude out 
--exclude config* lilypond-1.0.11/VERSION lilypond-1.0.11.new/VERSION
--- lilypond-1.0.11/VERSION     Fri Sep 25 01:02:45 1998
+++ lilypond-1.0.11.new/VERSION Mon Sep 28 07:44:19 1998
@@ -2,7 +2,7 @@
 MAJOR_VERSION=1
 MINOR_VERSION=0
 PATCH_LEVEL=11
-MY_PATCH_LEVEL=
+MY_PATCH_LEVEL=mb1+pc1
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
diff --new-file -r -b -u --exclude stepmake --exclude GNUmakefile --exclude out 
--exclude config* lilypond-1.0.11/input/test/meter.ly 
lilypond-1.0.11.new/input/test/meter.ly
--- lilypond-1.0.11/input/test/meter.ly Thu Jan  1 10:00:00 1970
+++ lilypond-1.0.11.new/input/test/meter.ly     Mon Sep 28 11:56:40 1998
@@ -0,0 +1,22 @@
+\score{
+       \notes \relative c' {
+       \clef "C3";
+       \time 2;
+       c2 c \bar "||";
+       \time 3; 
+       c2 c c \bar "||";
+       \time 4;
+       c4 c c c \bar "||";|
+       \time 6; 
+       c4( c )c c( c )c \bar "||";
+       \time "C";
+       c4-> c c-> c \bar "||";
+       \time "C2";
+       c2 c2 \bar "||";
+       \time 9;
+       c4( c4 )c4 c4( c4 )c4 c4( c4 )c4
+       \bar "||";
+
+       }
+}
+       
diff --new-file -r -b -u --exclude stepmake --exclude GNUmakefile --exclude out 
--exclude config* lilypond-1.0.11/lily/VERSION lilypond-1.0.11.new/lily/VERSION
--- lilypond-1.0.11/lily/VERSION        Fri Sep 25 01:03:16 1998
+++ lilypond-1.0.11.new/lily/VERSION    Mon Sep 28 08:30:50 1998
@@ -2,7 +2,7 @@
 MAJOR_VERSION=1
 MINOR_VERSION=0
 PATCH_LEVEL=11
-MY_PATCH_LEVEL=
+MY_PATCH_LEVEL=mb1+pc1
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
diff --new-file -r -b -u --exclude stepmake --exclude GNUmakefile --exclude out 
--exclude config* lilypond-1.0.11/lily/parser.yy lilypond-1.0.11.new/lily/parser.yy
--- lilypond-1.0.11/lily/parser.yy      Fri Sep 18 21:53:24 1998
+++ lilypond-1.0.11.new/lily/parser.yy  Mon Sep 28 08:32:36 1998
@@ -818,6 +818,38 @@
                m->one_beat_i_=$4;
                $$ = m;
        }
+       | TIME_T unsigned {
+               switch ($2)
+               {
+               case 2: // allabreve
+               case 3: // Tempus Perfecta, prolationem imperfecta
+               case 4: // Imperfection everywhere
+               case 6: // Tempus Imperfectum con prolationem perfectum
+               case 9: // Perfection everywhere!
+               {
+                       Time_signature_change_req *m = new Time_signature_change_req;
+                       m->beats_i_ = $2;
+                       m->one_beat_i_=0;
+                       $$ = m;
+                       break;
+               }
+               default:
+                       THIS->parser_error(_f("Not a time-signature: %d", $2));
+                       break;
+               }
+       }
+       | TIME_T STRING {
+               Time_signature_change_req *m = new Time_signature_change_req;
+               if (*$2 == "C")
+                       m->beats_i_ = 4;
+               else if (*$2 == "C2")
+                       m->beats_i_ = 2;
+               if (m->beats_i_ == 0){
+                       THIS->parser_error (_f ("not a timesig: %s", (char *)$2));
+                       delete m;
+               } else
+                       $$ = m;
+       }
        | PENALTY '=' int       {
                Break_req * b = new Break_req;
                b->penalty_i_ = $3;
diff --new-file -r -b -u --exclude stepmake --exclude GNUmakefile --exclude out 
--exclude config* lilypond-1.0.11/lily/timing-translator.cc 
lilypond-1.0.11.new/lily/timing-translator.cc
--- lilypond-1.0.11/lily/timing-translator.cc   Tue Sep 22 19:30:29 1998
+++ lilypond-1.0.11.new/lily/timing-translator.cc       Mon Sep 28 07:40:05 1998
@@ -60,6 +60,24 @@
        {
          int b_i= m_l->beats_i_;
          int o_i = m_l->one_beat_i_;
+         if (o_i == 0)
+                 switch(b_i)
+                 {
+                 case 2: /* allabreve; 2/2; split time */
+                         /* FALLTHROUGH */
+                 case 3: /* tempus perfectum cum prolatione imperfecta: O, equiv 3/2 
+*/
+                         o_i = 2;
+                         break;
+                 case 4: /* tempus imperfectum cum prolatione imperfecta: `C', equiv 
+4/4 */
+                         /* FALLTHROUGH */
+                 case 6: /* tempus imperfectum cum prolatione perfecta: C  with dot, 
+equiv 6/4 */
+                         /* FALLTHROUGH */
+                 case 9: /* tempus perfectum com prolatione perfecta: O with dot, 
+equiv 9/4 */
+                         o_i = 4;
+                         break;
+                 default: /* shouldn't ever happen but just in case */
+                         o_i = 4;
+                 }
          if (! time_.allow_time_signature_change_b())
            tr_l->warning (_ ("time signature change not allowed here"));
          else
diff --new-file -r -b -u --exclude stepmake --exclude GNUmakefile --exclude out 
--exclude config* lilypond-1.0.11/make/STATE-VECTOR 
lilypond-1.0.11.new/make/STATE-VECTOR
--- lilypond-1.0.11/make/STATE-VECTOR   Fri Sep 25 01:03:08 1998
+++ lilypond-1.0.11.new/make/STATE-VECTOR       Mon Sep 28 07:41:20 1998
@@ -87,3 +87,4 @@
 1.0.10.uu1
 1.0.10.uu2
 1.0.11
+1.0.11.mb1
diff --new-file -r -b -u --exclude stepmake --exclude GNUmakefile --exclude out 
--exclude config* lilypond-1.0.11/mf/feta-generic.mf 
lilypond-1.0.11.new/mf/feta-generic.mf
--- lilypond-1.0.11/mf/feta-generic.mf  Wed Sep 16 03:22:43 1998
+++ lilypond-1.0.11.new/mf/feta-generic.mf      Mon Sep 28 07:41:20 1998
@@ -32,6 +32,7 @@
        input feta-schrift;
        input feta-banier;
        input feta-klef;
+       input feta-timesig;
 else:
 %      input feta-bolletjes;   
 %      input feta-banier;
@@ -41,4 +42,5 @@
 %      input feta-schrift;
 %      input feta-schrift;
 %      input feta-haak;
+%      input feta-timesig;
 fi
diff --new-file -r -b -u --exclude stepmake --exclude GNUmakefile --exclude out 
--exclude config* lilypond-1.0.11/mf/feta-timesig.mf 
lilypond-1.0.11.new/mf/feta-timesig.mf
--- lilypond-1.0.11/mf/feta-timesig.mf  Thu Jan  1 10:00:00 1970
+++ lilypond-1.0.11.new/mf/feta-timesig.mf      Mon Sep 28 07:41:20 1998
@@ -0,0 +1,54 @@
+% 
+% feta-timesig.mf --  implement Time Signatures
+% 
+% source file of the Feta (Font-En-Tja) music font
+% 
+% (c) 1998 Mats Bengtsson <[EMAIL PROTECTED]>
+
+fet_begingroup("timesig");
+
+def draw_C =
+       save hair, bulb_rad;
+       hair# := .5 stafflinethickness#;
+       bulb_rad# := (interline# - stafflinethickness#) / 4;
+       define_pixels(hair, bulb_rad);
+
+       x1r = x5;
+       y1r = interline / 3;
+       z2r = (0, interline);
+       z3r = (-b, 0);
+       z4r = (0, -interline);
+       z5r = (w, -stafflinethickness);
+       
+       penpos1(1.5 stafflinethickness, 0);
+       penpos2(stafflinethickness, 90);
+       penpos3(3 stafflinethickness, 180);
+       penpos4(stafflinethickness, -90);
+       penpos5(hair, -5);
+       
+       draw_bulb(-1, z1l,  z1r, bulb_rad, .8);
+
+       fill z1l{up} .. z2l{left} .. z3l{down} .. z4l{right} ..
+       simple_serif(z5l, z5r, -90) .. 
+       z4r{left} .. z3r{up} .. z2r{right} .. z1r -- cycle;
+       
+%      labels(1,2,3,4,5);
+       penlabels(1,2,3,4,5);
+enddef;
+
+fet_beginchar ("4/4 meter", "C", "fourfourmeter")
+       set_char_box(.8 interline#, .7 interline#, interline#, interline#);
+       
+       draw_C;
+fet_endchar;
+
+fet_beginchar ("4/4 meter", "C2", "allabreve")
+       set_char_box(.8 interline#, .7 interline#, 1.4 interline#, 1.4 interline#);
+       
+       draw_C;
+       draw_block((-stafflinethickness, -d), (0, h));
+fet_endchar;
+
+
+
+fet_endgroup("timesig");
diff --new-file -r -b -u --exclude stepmake --exclude GNUmakefile --exclude out 
--exclude config* lilypond-1.0.11/mi2mu/VERSION lilypond-1.0.11.new/mi2mu/VERSION
--- lilypond-1.0.11/mi2mu/VERSION       Thu Jan  1 10:00:00 1970
+++ lilypond-1.0.11.new/mi2mu/VERSION   Mon Sep 28 08:53:17 1998
@@ -0,0 +1,11 @@
+PACKAGE_NAME=LilyPond
+MAJOR_VERSION=1
+MINOR_VERSION=0
+PATCH_LEVEL=11
+MY_PATCH_LEVEL=mb1+pc1
+
+# use the above to send patches: MY_PATCH_LEVEL is always empty for a
+# released version.
+#
+# Please don't move these comments up; the patch should fail if 
+# the previous version was wrong.
diff --new-file -r -b -u --exclude stepmake --exclude GNUmakefile --exclude out 
--exclude config* lilypond-1.0.11/tex/fetdefs.tex lilypond-1.0.11.new/tex/fetdefs.tex
--- lilypond-1.0.11/tex/fetdefs.tex     Wed Sep 16 03:22:43 1998
+++ lilypond-1.0.11.new/tex/fetdefs.tex Mon Sep 28 11:51:08 1998
@@ -79,6 +79,30 @@
   \def#1{\hbox{\fetchar{#2}}}}
 \def\fetchar#1{\char#1}
 
+% TODO: These definitions must go away when the appropriate 
+% chars in feta are defined.
+% These sizes are approximately right for 20pt staff.
+\font\tempsigfont=cmsy10 at 14pt
+\font\tempsigexfont=cmex10
+
+\def\fourfourmeter{\hbox to 0.45\staffheight{%
+        \hss\csname feta\currentsize\endcsname \char71\hss}}
+\def\allabreve{\hbox to 0.45\staffheight{%
+        \hss\csname feta\currentsize\endcsname \char72\hss}} 
+
+% tempus perfectum cum prolatione imperfecta: circle
+\def\threetwometer{\hbox to 0.45\staffheight{%
+        \hss\raise -0.6ex\hbox{\tempsigfont\char'015}\hss}}
+
+% tempus imperfectum cum prolatione perfecta: C with dot  
+\def\sixfourmeter{\rlap\fourfourmeter{%
+        \hbox to 0.45\staffheight{%
+                \raise -0.6ex\hbox{\hss{\tempsigfont\char'001}\hss}}}}
+
+% tempus perfectum cum prolatione perfecta: dotted circle
+\def\ninefourmeter{\raise 1.2ex\hbox{{\tempsigexfont\char'113}}}
+% end of TODO
+
 %\input feta16
 %\input feta20
 

Reply via email to