Hi!

Attached is a patch that should fix some problems of the time signature
engraver.  Some problems still survive.  I also renamed
style "old"->"neo_mensural".  The former "old6/8alt" font character is
currently not accessible since I had to remove the direct font access.
The former "C"-style is now the default behaviour.  It can be turned off
by setting style to "numbered", in which case only numbers are printed.

I think these changes are necessary, because the implementation so far was
a rather arbitrary, incomplete collection of time signature symbols.  I am
trying to orthogonalize all the different styles and to make combinations
of them possible.  This will also require the introduction of new
properties that qualify the style in more detail.  Note that I also
started to move program logic to scheme to simplify manipulation of the
logic.

See input/test/time.ly for comprehensive usage examples.

Greetings,
Juergen
diff -Naur lilypond-1.5.71/ChangeLog lilypond-1.5.71.NEW/ChangeLog
--- lilypond-1.5.71/ChangeLog   Sat Aug  3 03:15:49 2002
+++ lilypond-1.5.71.NEW/ChangeLog       Sat Aug 10 00:01:11 2002
@@ -1,3 +1,10 @@
+2002-08-10  Juergen Reuter  <[EMAIL PROTECTED]>
+
+       * mf/parmesan-timesig.mf, scm/output-lib.scm,
+       lily/include/time-signature.hh, lily/time-signature.cc,
+       input/test/time.ly: fixed broken time-signature by setting grob
+       property font-family automatically.
+
 2002-08-03  Han-Wen  <[EMAIL PROTECTED]>
 
        * VERSION: released 1.5.71 
diff -Naur lilypond-1.5.71/input/test/time.ly lilypond-1.5.71.NEW/input/test/time.ly
--- lilypond-1.5.71/input/test/time.ly  Wed Jul 17 01:57:08 2002
+++ lilypond-1.5.71.NEW/input/test/time.ly      Fri Aug  9 23:56:08 2002
@@ -1,14 +1,37 @@
 \version "1.5.68"
 
+% IMPORTANT NOTE: The current selection scheme for time signature
+% symbols is not flexible enough for future extensions such as various
+% flavours of early mensural notation or complex signatures as in
+% contemporary music.  Therefore, the semantics of time-signature
+% properties will quite definitely change, and maybe the syntax of the
+% \time request will possibly be extended.  The following TODOs give
+% two examples what might be expected.  -- jr
+
+% TODO: The former "old6/8alt" is currently not addressable.  This will
+% be fixed by introducing an additional style property that switches
+% between various mensural diminution styles.  -- jr
+
+% TODO: Style "1xxx" really should be a special case of style
+% "numbered".  In other words, style "1xxx" should be removed, and a new
+% property "denominator-style" should be introduced, with values
+% "numbered" (which should be equivalent to the current "numbered"
+% style), "none" (which should be equivalent to the current "1xxx"
+% style), and "notehead" (which should place a proper notehead to the
+% right side of the nominator).  -- jr
+
 \score { 
   \context Voice \notes\relative c {
-    \property Staff.TimeSignature \override #'style = #'C
+    % Lilypond doesn't understand 'default => it does what you want
+    \property Staff.TimeSignature \override #'style = #'default
     \time 1/1
-    c''1^"TimeSignature style = \#'C" 
+    c''1^"TimeSignature style = \#'default" 
     \time 2/2 
     c1 
     \time 2/4 
     c2 
+    \time 4/8 
+    c2 
     \time 3/4 
     c2. 
     \time 4/4 
@@ -26,13 +49,15 @@
     \time 9/4 
     c2. c2. c2. 
     \break
-    \property Staff.TimeSignature \set #'style = #'old
+    \property Staff.TimeSignature \set #'style = #'mensural
     \time 1/1 
-    c1^"TimeSignature style = \#'old" 
+    c1^"TimeSignature style = \#'mensural" 
     \time 2/2 
     c1 
     \time 2/4 
     c2 
+    \time 4/8 
+    c2 
     \time 3/4 
     c2. 
     \time 4/4 
@@ -54,14 +79,45 @@
     \time 9/8 
     c4. c4. c4. 
     \break
-    % Lilypond doesn't understand 'default => it does what you want
-    \property Staff.TimeSignature \set #'style = #'default
+    \property Staff.TimeSignature \set #'style = #'neo_mensural
+    \time 1/1 
+    c1^"TimeSignature style = \#'neo\_mensural" 
+    \time 2/2 
+    c1 
+    \time 2/4 
+    c2 
+    \time 4/8 
+    c2 
+    \time 3/4 
+    c2. 
+    \time 4/4 
+    c1 
+    \time 5/4 
+    c2. c2 
+    \time 6/4 
+    c1. 
+    \time 3/2 
+    c1. 
+    \time 7/4 
+    c1 c2. 
+    \time 8/4 
+    c\breve 
+    \time 9/4 
+    c2. c2. c2. 
+    \time 6/8 
+    c2. 
+    \time 9/8 
+    c4. c4. c4. 
+    \break
+    \property Staff.TimeSignature \set #'style = #'numbered
     \time 1/1 
-    c1^"TimeSignature style = \#'default"
+    c1^"TimeSignature style = \#'numbered"
     \time 2/2 
     c1
     \time 2/4 
     c2 
+    \time 4/8 
+    c2 
     \time 3/4 
     c2.
     \time 4/4 
@@ -87,6 +143,8 @@
     c1
     \time 2/4 
     c2 
+    \time 4/8 
+    c2 
     \time 3/4 
     c2.
     \time 4/4 
@@ -103,45 +161,6 @@
     c\breve 
     \time 9/4 
     c2. c2. c2. 
-    \break
-    \property Staff.TextScript \override #'self-alignment-X = #1
-    \property Staff.TimeSignature \set #'style = #'old9/8
-    \time 1/1 
-    c1^"old9/8" 
-    \property Staff.TimeSignature \set #'style = #'old6/8
-    \time 1/1 
-    c1^"old6/8" 
-    \property Staff.TimeSignature \set #'style = #'old6/8alt
-    \time 1/1 
-    c1^"old6/8alt" 
-    \property Staff.TimeSignature \set #'style = #'old9/4
-    \time 1/1 
-    c1^"old9/4" 
-    \property Staff.TimeSignature \set #'style = #'old6/4
-    \time 1/1 
-    c1^"old6/4" 
-    \property Staff.TimeSignature \set #'style = #'old3/2
-    \time 1/1 
-    c1^"old3/2" 
-    \property Staff.TimeSignature \set #'style = #'old4/4
-    \time 1/1 
-    c1^"old4/4" 
-    \property Staff.TimeSignature \set #'style = #'old2/2
-    \time 1/1 
-    c1^"old2/2"
-    \property Staff.TimeSignature \set #'style = #'old2/4
-    \time 1/1 
-    c1^"old2/4" 
-    \property Staff.TimeSignature \set #'style = #'old4/8
-    \time 1/1 
-    c1^"old4/8"
-    \property Staff.TimeSignature \set #'style = #'C4/4
-    \time 1/1 
-    c1^"C4/4" 
-    \property Staff.TimeSignature \set #'style = #'C2/2
-    \time 1/1 
-    c1^"C2/2" 
-    
   }
   \paper { }  
   \midi { }
diff -Naur lilypond-1.5.71/lily/include/time-signature.hh 
lilypond-1.5.71.NEW/lily/include/time-signature.hh
--- lilypond-1.5.71/lily/include/time-signature.hh      Wed Apr 10 19:25:36 2002
+++ lilypond-1.5.71.NEW/lily/include/time-signature.hh  Fri Aug  9 22:59:27 2002
@@ -20,8 +20,8 @@
 struct Time_signature
 {
   static bool has_interface (Grob*);
-  static Molecule special_time_signature (Grob*,String,int,int) ;
-  static Molecule time_signature (Grob*,int, int);
+  static Molecule special_time_signature (Grob*,SCM,int,int) ;
+  static Molecule numbered_time_signature (Grob*,int, int);
   DECLARE_SCHEME_CALLBACK (brew_molecule, (SCM ));
 };
 #endif // METER_HH
diff -Naur lilypond-1.5.71/lily/time-signature.cc 
lilypond-1.5.71.NEW/lily/time-signature.cc
--- lilypond-1.5.71/lily/time-signature.cc      Wed Jul 31 13:14:52 2002
+++ lilypond-1.5.71.NEW/lily/time-signature.cc  Fri Aug  9 23:00:47 2002
@@ -40,15 +40,15 @@
       String style (ly_scm2string (scm_symbol_to_string (st)));
       if (style[0]=='1')
        {
-         m = time_signature (me, n, 0);
+         m = numbered_time_signature (me, n, 0);
        }
       else
        {
-         m = special_time_signature (me, style, n, d);
+         m = special_time_signature (me, st, n, d);
        }
     }
   else
-    m = time_signature (me, n,d);
+    m = numbered_time_signature (me, n,d);
 
   if (Staff_symbol_referencer::line_count (me) % 2 == 0)
     m.translate_axis (Staff_symbol_referencer::staff_space (me)/2 , Y_AXIS);
@@ -57,49 +57,38 @@
 }
 
 Molecule
-Time_signature::special_time_signature (Grob*me, String s, int n, int d)
+Time_signature::special_time_signature (Grob *me, SCM style, int n, int d)
 {
-  /*
-    Randomly probing the font sucks?
-  */
-  
-  SCM alist_chain = Font_interface::font_alist_chain (me);
-  
-  SCM style_chain =
-    Font_interface::add_style (me, ly_symbol2scm ("timesig-symbol"),
-                              alist_chain);
-
-  Font_metric *feta = Font_interface::get_font (me, style_chain);
+  String st = ly_scm2string (scm_symbol_to_string (style));
+  SCM scm_n = gh_int2scm (n);
+  SCM scm_d = gh_int2scm (d);
+  SCM exp = scm_list_n (ly_symbol2scm ("find-timesig-symbol"),
+                       scm_n, scm_d, ly_quote_scm (style),
+                       SCM_UNDEFINED);
+  SCM scm_pair = scm_primitive_eval (exp);
+  SCM scm_font_char = ly_car (scm_pair);
+  SCM scm_font_family = ly_cdr (scm_pair);
+  String font_char = ly_scm2string (scm_font_char);
+  String font_family = ly_scm2string (scm_font_family);
+  me->set_grob_property("font-family", ly_symbol2scm (font_family.to_str0 ()));
 
-  /*
-    First guess: s contains only the signature style, append fraction.
-  */
-  String symbolname = "timesig-" + s + to_string (n) + "/" + to_string (d);
-  
-  Molecule m = feta->find_by_name (symbolname);
+  Molecule m =
+    Font_interface::get_default_font (me)->find_by_name ("timesig-" + font_char);
   if (!m.empty_b ())
     return m;
 
   /*
-    Second guess: s contains the full signature name
-  */
-  m = feta->find_by_name ("timesig-" + s);
-  m.align_to (X_AXIS, LEFT);
-  if (!m.empty_b ()) 
-    return m;
-
-  /*
     If there is no such symbol, we default without warning to the
     numbered style.
    */
-  return time_signature (me, n, d);
+  return numbered_time_signature (me, n, d);
 }
 
-
 Molecule
-Time_signature::time_signature (Grob*me,int num, int den)
+Time_signature::numbered_time_signature (Grob*me,int num, int den)
 {
   SCM chain = Font_interface::font_alist_chain (me);
+  me->set_grob_property("font-family", ly_symbol2scm ("number"));
 
   Molecule n = Text_item::text2molecule (me,
                                         ly_str02scm (to_string (num).to_str0 ()),
@@ -125,8 +114,6 @@
   
   return m;
 }
-
-
 
 ADD_INTERFACE (Time_signature,"time-signature-interface",
   "A time signature, in different styles.
diff -Naur lilypond-1.5.71/mf/parmesan-timesig.mf 
lilypond-1.5.71.NEW/mf/parmesan-timesig.mf
--- lilypond-1.5.71/mf/parmesan-timesig.mf      Tue Feb 19 11:36:38 2002
+++ lilypond-1.5.71.NEW/mf/parmesan-timesig.mf  Fri Aug  9 22:51:49 2002
@@ -11,11 +11,11 @@
 path threequartercircle;
 threequartercircle = halfcircle & quartercircle rotated 180;
 
-save Cdiameter,Cthickness;
+save Cdiameter, Cthickness, Chairpin;
 Cdiameter# := 3/2 staff_space#;
 Cthickness# := 2 stafflinethickness#;
-define_pixels(Cdiameter,Cthickness);
-
+Chairpin# := 0.5 stafflinethickness#;
+define_pixels(Cdiameter, Cthickness, Chairpin);
 
 %%%%%%%%
 %
@@ -26,118 +26,204 @@
 %
 %
 
+def draw_nail (expr bottom_left, top_right) =
+       save round;
+       round = floor min(blot_diameter,
+                               xpart (top_right-bottom_left),
+                               ypart (top_right-bottom_left));
+
+       pickup pencircle scaled round;
+
+       begingroup;
+               save x,y;
+               z2+(round/2,round/2) = top_right + (Cthickness/2, 0);
+               z4-(round/2,round/2) = bottom_left;
+               y3 = y2;
+               y4 = y1;
+               x2 = x1 + Cthickness/2;
+               x2 - x1 = x4 - x3;
+               x5 = x1;
+               x6 = x4;
+               y5 = y6 = y2 - 2Cthickness;
+
+               pickup pencircle scaled round;
+               fill bot z1 .. rt z1 --- rt z5 .. rt z2 .. top z2 ---
+                       top z3 .. lft z3 .. lft z6 --- lft z4 .. bot z4 ---
+                       cycle;
+        endgroup;
+
+enddef;
+
+def mens_timesig (expr verbose_name, internal_name, mudela_name,
+                       full_circle, reverse_circle, slashed, dotted) =
+
+       fet_beginchar(verbose_name, internal_name, mudela_name)
+               if slashed:
+                       set_char_box(.5 Cdiameter# + staff_space#,
+                               .5 Cdiameter# + staff_space#, 
+                               staff_space#,
+                               staff_space#);
+                       if (full_circle or dotted):
+                               draw_nail((-Cthickness/2, -1.5d), (Cthickness/2, 
+1.5h));
+                       else:
+                               draw_nail((-Cthickness, -1.5d), (0, 1.5h));
+                       fi;
+               else:
+                       set_char_box(.5 Cdiameter# + staff_space#,
+                               .5 Cdiameter# + staff_space#, 
+                               .5 Cdiameter#,
+                               .5 Cdiameter#);
+               fi;
+               pickup pencircle xscaled Cthickness yscaled Chairpin rotated 0;
+               if full_circle:
+                       draw fullcircle scaled Cdiameter;
+               elseif reverse_circle:
+                       draw threequartercircle rotated 225 scaled Cdiameter;
+               else:
+                       draw threequartercircle rotated 45 scaled Cdiameter;
+               fi;
+               if dotted:
+                       pickup pencircle scaled 4 stafflinethickness;
+                       draw (0,0);
+               fi;
+       fet_endchar;
+enddef;
+
 %% tempus imperfectum cum prolatione imperfecta
-fet_beginchar ("Mensural 4/4 meter", "old4/4", "oldfourfourmeter")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-               .5 Cdiameter#, .5 Cdiameter#);
-       
-       pickup pencircle scaled Cthickness;
-       draw threequartercircle rotated 45 scaled Cdiameter;
-fet_endchar;
+mens_timesig ("Mensural 4/4 meter", "mensural4/4", "mensuralfourfourmeter",
+               false, false, false, false);
 
 %% tempus imperfectum cum prolatione imperfecta proportio dupla
-fet_beginchar ("Mensural 2/2 meter", "old2/2", "oldallabreve")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-               staff_space#, staff_space#);
-       
-       pickup pencircle scaled Cthickness;
-       draw threequartercircle rotated 45 scaled Cdiameter;
-       draw_block((-Cthickness, -d), (0, h));
-fet_endchar;
+mens_timesig ("Mensural 2/2 meter", "mensural2/2", "mensuralallabreve",
+               false, false, true, false);
 
 %% tempus perfectum cum prolatione imperfecta
-fet_beginchar ("Mensural 3/2 meter", "old3/2", "oldthreetwometer")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-               .5 Cdiameter#, .5 Cdiameter#);
-       
-       pickup pencircle scaled Cthickness;
-       draw fullcircle scaled Cdiameter;
-fet_endchar;
+mens_timesig ("Mensural 3/2 meter", "mensural3/2", "mensuralthreetwometer",
+               true, false, false, false);
 
 %% tempus imperfectum cum prolatione perfecta
-fet_beginchar ("Mensural 6/4 meter", "old6/4", "oldsixfourmeter")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-               .5 Cdiameter#, .5 Cdiameter#);
-       
-       pickup pencircle scaled Cthickness;
-       draw threequartercircle rotated 45 scaled Cdiameter;
-       pickup pencircle scaled 4 stafflinethickness;
-       draw (0,0);
-fet_endchar;
+mens_timesig ("Mensural 6/4 meter", "mensural6/4", "mensuralsixfourmeter",
+               false, false, false, true);
 
 %% tempus perfectum cum prolatione perfecta
-fet_beginchar ("Mensural 9/4 meter", "old9/4", "oldninefourmeter")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-               .5 Cdiameter#, .5 Cdiameter#);
-       
-       pickup pencircle scaled Cthickness;
-       draw fullcircle scaled Cdiameter;
-       pickup pencircle scaled 4 stafflinethickness;
-       draw (0,0);
-fet_endchar;
+mens_timesig ("Mensural 9/4 meter", "mensural9/4", "mensuralninefourmeter",
+               true, false, false, true);
 
 %% tempus perfectum cum prolatione imperfecta proportio dupla
-fet_beginchar ("Mensural 3/4 meter", "old3/4", "oldthreefourmeter")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-               staff_space#, staff_space#);
-       
-       pickup pencircle scaled Cthickness;
-       draw fullcircle scaled Cdiameter;
-       draw_block((-Cthickness/2, -d), (Cthickness/2, h));
-fet_endchar;
+mens_timesig ("Mensural 3/4 meter", "mensural3/4", "mensuralthreefourmeter",
+               true, false, true, false);
 
 %% tempus imperfectum cum prolatione perfecta proportio dupla
-fet_beginchar ("Mensural 6/8 meter", "old6/8", "oldsixeightmeter")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-                staff_space#, staff_space#);
-       
-       pickup pencircle scaled Cthickness;
-       draw threequartercircle rotated 45 scaled Cdiameter;
-       pickup pencircle scaled 4 stafflinethickness;
-       draw (0,0);
-       draw_block((-Cthickness/2, -d), (Cthickness/2, h));
-fet_endchar;
+mens_timesig ("Mensural 6/8 meter", "mensural6/8", "mensuralsixeightmeter",
+               false, false, true, true);
 
 %% tempus perfectum cum prolatione perfecta proportio dupla
-fet_beginchar ("Mensural 9/8 meter", "old9/8", "oldnineeight")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-               staff_space#, staff_space#);
+mens_timesig ("Mensural 9/8 meter", "mensural9/8", "mensuralnineeight",
+               true, false, true, true);
        
-       pickup pencircle scaled Cthickness;
-       draw fullcircle scaled Cdiameter;
-       pickup pencircle scaled 4 stafflinethickness;
-       draw (0,0);
-       draw_block((-Cthickness/2, -d), (Cthickness/2, h));
-fet_endchar;
-
 %% tempus imperfectum cum prolatione imperfecta diminutio simplex
-fet_beginchar ("Mensural 4/8 meter", "old4/8", "oldfoureightmeter")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-       .5 Cdiameter#, .5 Cdiameter#);
-       
-       pickup pencircle scaled Cthickness;
-       draw threequartercircle rotated 225 scaled Cdiameter;
-fet_endchar;
+mens_timesig ("Mensural 4/8 meter", "mensural4/8", "mensuralfoureightmeter",
+               false, true, false, false);
 
 %% tempus imperfectum cum prolatione perfecta diminutio simplex
-fet_beginchar ("Mensural 6/8 meter", "old6/8alt", "oldsixeightmeteralt")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-               .5 Cdiameter#, .5 Cdiameter#);
-       
-       pickup pencircle scaled Cthickness;
-       draw threequartercircle rotated 225 scaled Cdiameter;
-       pickup pencircle scaled 4 stafflinethickness;
-       draw (0,0);
-fet_endchar;
+mens_timesig ("Mensural 6/8 meter", "mensural6/8alt", "mensuralsixeightmeteralt",
+               false, true, false, true);
 
 %% tempus imperfectum cum prolatione imperfecta diminutio duplex
-fet_beginchar ("Mensural 2/4 meter", "old2/4", "oldtwofourmeter")
-       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
-               staff_space#, staff_space#);
+mens_timesig ("Mensural 2/4 meter", "mensural2/4", "mensuraltwofourmeter",
+               false, true, true, false);
+
+%%%%%%%%
+%
+%
+%
+% NEO-MENSURAL NOTATION
+%
+%
+%
+
+save neo_Cdiameter, neo_Cthickness;
+neo_Cdiameter# := 3/2 staff_space#;
+neo_Cthickness# := 2 stafflinethickness#;
+define_pixels(neo_Cdiameter, neo_Cthickness);
+
+def neo_mens_timesig (expr verbose_name, internal_name, mudela_name,
+                       full_circle, reverse_circle, slashed, dotted) =
+
+       fet_beginchar(verbose_name, internal_name, mudela_name)
+               if slashed:
+                       set_char_box(.5 neo_Cdiameter# + staff_space#,
+                               .5 neo_Cdiameter# + staff_space#, 
+                               staff_space#,
+                               staff_space#);
+                       if (full_circle or dotted):
+                               draw_block((-neo_Cthickness/2, -d), (neo_Cthickness/2, 
+h));
+                       else:
+                               draw_block((-neo_Cthickness, -d), (0, h));
+                       fi;
+               else:
+                       set_char_box(.5 neo_Cdiameter# + staff_space#,
+                               .5 neo_Cdiameter# + staff_space#, 
+                               .5 neo_Cdiameter#,
+                               .5 neo_Cdiameter#);
+               fi;
+               pickup pencircle scaled neo_Cthickness;
+               if full_circle:
+                       draw fullcircle scaled neo_Cdiameter;
+               elseif reverse_circle:
+                       draw threequartercircle rotated 225 scaled neo_Cdiameter;
+               else:
+                       draw threequartercircle rotated 45 scaled neo_Cdiameter;
+               fi;
+               if dotted:
+                       pickup pencircle scaled 4 stafflinethickness;
+                       draw (0,0);
+               fi;
+       fet_endchar;
+enddef;
+
+%% tempus imperfectum cum prolatione imperfecta
+neo_mens_timesig ("Mensural 4/4 meter", "neo_mensural4/4", 
+"neomensuralfourfourmeter",
+                       false, false, false, false);
+
+%% tempus imperfectum cum prolatione imperfecta proportio dupla
+neo_mens_timesig ("Mensural 2/2 meter", "neo_mensural2/2", "neomensuralallabreve",
+                       false, false, true, false);
+
+%% tempus perfectum cum prolatione imperfecta
+neo_mens_timesig ("Mensural 3/2 meter", "neo_mensural3/2", 
+"neomensuralthreetwometer",
+                       true, false, false, false);
+
+%% tempus imperfectum cum prolatione perfecta
+neo_mens_timesig ("Mensural 6/4 meter", "neo_mensural6/4", "neomensuralsixfourmeter",
+                       false, false, false, true);
+
+%% tempus perfectum cum prolatione perfecta
+neo_mens_timesig ("Mensural 9/4 meter", "neo_mensural9/4", 
+"neomensuralninefourmeter",
+                       true, false, false, true);
+
+%% tempus perfectum cum prolatione imperfecta proportio dupla
+neo_mens_timesig ("Mensural 3/4 meter", "neo_mensural3/4", 
+"neomensuralthreefourmeter",
+                       true, false, true, false);
+
+%% tempus imperfectum cum prolatione perfecta proportio dupla
+neo_mens_timesig ("Mensural 6/8 meter", "neo_mensural6/8", 
+"neomensuralsixeightmeter",
+                       false, false, true, true);
+
+%% tempus perfectum cum prolatione perfecta proportio dupla
+neo_mens_timesig ("Mensural 9/8 meter", "neo_mensural9/8", "neomensuralnineeight",
+                       true, false, true, true);
        
-       pickup pencircle scaled Cthickness;
-       draw threequartercircle rotated 225 scaled Cdiameter;
-       draw_block((-Cthickness, -d), (0, h));
-fet_endchar;
+%% tempus imperfectum cum prolatione imperfecta diminutio simplex
+neo_mens_timesig ("Mensural 4/8 meter", "neo_mensural4/8", 
+"neomensuralfoureightmeter",
+                       false, true, false, false);
+
+%% tempus imperfectum cum prolatione perfecta diminutio simplex
+neo_mens_timesig ("Mensural 6/8 meter", "neo_mensural6/8alt", 
+"neomensuralsixeightmeteralt",
+                       false, true, false, true);
+
+%% tempus imperfectum cum prolatione imperfecta diminutio duplex
+neo_mens_timesig ("Mensural 2/4 meter", "neo_mensural2/4", "neomensuraltwofourmeter",
+                       false, true, true, false);
 
 fet_endgroup ("timesig")
diff -Naur lilypond-1.5.71/scm/output-lib.scm lilypond-1.5.71.NEW/scm/output-lib.scm
--- lilypond-1.5.71/scm/output-lib.scm  Tue Jul 30 17:48:49 2002
+++ lilypond-1.5.71.NEW/scm/output-lib.scm      Fri Aug  9 23:22:45 2002
@@ -155,7 +155,44 @@
      ;; this also works for easy notation.
      '(1.0 . 0.0)
      )))
-                    
+
+(define (find-timesig-symbol nom denom style)
+  (case style
+   ((mensural)
+    (cons (string-append
+            "mensural"
+            (number->string nom)
+            "/"
+            (number->string denom))
+         "ancient"))
+   ((neo_mensural)
+    (cons (string-append
+            "neo_mensural"
+            (number->string nom)
+            "/"
+            (number->string denom))
+         "ancient"))
+   ((numbered)
+    (cons (string-append
+          (number->string nom)
+          "/"
+          (number->string denom))
+         "music"))
+   (else
+    ;; default: use "C" style when possible, otherwise return ""
+    (cons
+     (case nom
+       ((2)
+       (case denom
+         ((2) "C2/2")
+         (else "")))
+       ((4)
+       (case denom
+         ((4) "C4/4")
+         (else "")))
+       (else ""))
+     "music"))))
+
 (define (string-encode-integer i)
   (cond
    ((= i  0) "o")

Reply via email to