>>>>> "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