]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 0.1.30 release/0.1.30
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 11 Nov 1997 00:23:35 +0000 (01:23 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 11 Nov 1997 00:23:35 +0000 (01:23 +0100)
38 files changed:
AUTHORS.text
Documentation/gnu-music.pod
Documentation/links.pod
Documentation/mudela-book.pod
INSTALL.text
NEWS
README
TODO
VERSION
init/feta16.ly
init/feta20.ly
init/table16.ly
input/standchen.ly
lily/VERSION
lily/bar-column-grav.cc
lily/crescendo.cc
lily/dynamic-grav.cc
lily/include/staff-side.hh
lily/include/staff-sym.hh
lily/lexer.l
lily/script-grav.cc
lily/script.cc
lily/staff-side.cc
lily/staff-sym.cc
lily/text-item.cc
make/debian/watch
make/lelievijver.lsm
make/lilypond.lsm
make/lilypond.lsm.in
make/lilypond.spec
mf/autometric.mf
mf/feta-bolletjes.mf
mf/feta-generic.mf
mf/feta-klef.mf
mf/feta-schrift.mf
mf/feta-toevallig.mf
tex/feta16.tex
tex/feta20.tex

index dfec8605b510c0b50b6df8beec45184d96e4c767..428689b5ca34eeecf1fa4ee85069abdd00c30a21 100644 (file)
@@ -61,6 +61,6 @@ C\bC\bC\bCO\bO\bO\bON\bN\bN\bNT\bT\bT\bTR\bR\bR\bRI\bI\bI\bIB\bB\bB\bBU\bU\bU\bUT\bT\bT\bTO\bO\bO\bOR\bR\bR\bRS\bS
 
 
 
-27/Oct/97                LilyPond 0.1.29                        1
+27/Oct/97                LilyPond 0.1.30                        1
 
 
index a2a9ee0f058c90371873ffb3a20b42c0c00febb5..2d52c811958989823f67da816e605a8eb0377423 100644 (file)
@@ -231,7 +231,3 @@ Francois Pinard.
 This history note is probably biased in some way, because I wrote it.
 The rest of this document is also entirely mine, and is not meant to
 reflect anyone else's opinion.
-
-
-For metacomposing, see New Scientist, aug 9 1997, or
-http://art.ucsc.edu/faculty/cope/home
index e8044573e1e225225c4c632e6ddd4aa1a8456aa5..e0b5c61d769c017a77b0a29c03deefb3a029c015 100644 (file)
@@ -24,6 +24,10 @@ The documentation system for C++ sources, which the LilyPond sources use.
 
 An enormous collection of music related URLs
 
+=item http://art.ucsc.edu/faculty/cope/home
+
+See New Scientist, aug 9 1997.
+
 =back
 
 =head2 Ftp 
index b19009b172637c7251932f8958eeaf886b0f9cb3..f44c60b3548ec339d8921d60aac40aea7f1e5ba2 100644 (file)
@@ -4,7 +4,7 @@ mudela-book - integrate LaTeX and mudela
 
 =head1 SYNOPSIS
 
-       convert-mudela [options] [file]
+       mudela-book [options] [file]
 
 =head1 DESCRIPTION
 
index aaed4e5d2549a4d28bb13de3d6ea917c8d890a72..93fd8e0faaff757d5a8d3fcecee189c245bee28a 100644 (file)
@@ -61,7 +61,7 @@ R\bR\bR\bRU\bU\bU\bUN\bN\bN\bNN\bN\bN\bNI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG
 
 
 
-20/Oct/97                LilyPond 0.1.29                        1
+20/Oct/97                LilyPond 0.1.30                        1
 
 
 
@@ -127,7 +127,7 @@ C\bC\bC\bCO\bO\bO\bON\bN\bN\bNF\bF\bF\bFI\bI\bI\bIG\bG\bG\bGU\bU\bU\bUR\bR\bR\bRI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG a\b
 
 
 
-20/Oct/97                LilyPond 0.1.29                        2
+20/Oct/97                LilyPond 0.1.30                        2
 
 
 
@@ -193,7 +193,7 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
 
-20/Oct/97                LilyPond 0.1.29                        3
+20/Oct/97                LilyPond 0.1.30                        3
 
 
 
@@ -259,7 +259,7 @@ I\bI\bI\bIN\bN\bN\bNS\bS\bS\bST\bT\bT\bTA\bA\bA\bAL\bL\bL\bLL\bL\bL\bLI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG
 
 
 
-20/Oct/97                LilyPond 0.1.29                        4
+20/Oct/97                LilyPond 0.1.30                        4
 
 
 
@@ -325,7 +325,7 @@ R\bR\bR\bRE\bE\bE\bED\bD\bD\bDH\bH\bH\bHA\bA\bA\bAT\bT\bT\bT L\bL\bL\bLI\bI\bI\bIN\bN\bN\bNU\bU\bU\bUX\bX\bX\bX
 
 
 
-20/Oct/97                LilyPond 0.1.29                        5
+20/Oct/97                LilyPond 0.1.30                        5
 
 
 
@@ -391,6 +391,6 @@ A\bA\bA\bAU\bU\bU\bUT\bT\bT\bTH\bH\bH\bHO\bO\bO\bOR\bR\bR\bRS\bS\bS\bS
 
 
 
-20/Oct/97                LilyPond 0.1.29                        6
+20/Oct/97                LilyPond 0.1.30                        6
 
 
diff --git a/NEWS b/NEWS
index 0868b0074143a3545105f93d097bf6b645a67327..7710007f24df462ff6339eb3266f746869de9e36 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,10 @@
+pl 30
+       - feta: G clef. 
+       - scripts now do relative coords (fixes lyrics + barnumber bug)
+       - bf: Lyrics lexer mode
+       - bf: bass clef
 
+********
 pl 29
        - feta: bass clef, bf: dynamics, bf: 64th flag
        
diff --git a/README b/README
index 1f3b542c66093d53b33eab7d0e3a82df3e758106..fc5a277cb26e34f0e57169c51005e0a6633ba02d 100644 (file)
--- a/README
+++ b/README
@@ -1,9 +1,12 @@
 This is the toplevel README to LilyPond                -*-Text-*-
 
 
-GNU LilyPond which converts music definition files into visual or
-audio output: it can typeset formatted sheet music in TeX and 
-and (mechanical) perfomances to MIDI files.
+LilyPond is the GNU Project music typesetter.  The program generates
+visual or auditive output from a music definition file: it can typeset
+formatted sheet music to a TeX file and play (mechanical) performances
+to a MIDI file.  Features include multiple staffs, meters, clefs,
+keys, lyrics, versatile input-language, cadenzas, beams, slurs,
+triplets.
 
 
 1. VERSIONING
diff --git a/TODO b/TODO
index 5eb9af3245feb6db4ddcb27f147832b48d310d0f..6038253a3f9f91d57a19d8543a223904ef421aef 100644 (file)
--- a/TODO
+++ b/TODO
@@ -6,6 +6,8 @@ done, or is an idea that I want to think about
 Most of the items are marked in the code as well, with full explanation. 
 grep for TODO and ugh/ugr
 
+0.2:
+
        * LILYSOURCEDIR
        
        * documentation
@@ -14,15 +16,17 @@ grep for TODO and ugh/ugr
 
        * standchen: warning: Excentric column (Meter dims?)
 
-       * optimal pagebreaking.
+       * naming Mozarella, Madeira, Muella?
 
-       * put errorlevel in Input class
+       * versioning for Feta
 
-       * AFM for font input?
+       * bf: abbrevs over whole note
 
-       * naming Mozarella, Madeira, Muella?
+       * Score_bar/Piano_braces, are *not* ordinary bars 
 
-       * bf: abbrevs over whole note
+STUFF
+
+       * give Items/Spanners access to unbroken originals      
 
        * scoping for properties
 
@@ -47,9 +51,13 @@ grep for TODO and ugh/ugr
        - MIDI instrument
        - staff title
 
-       * give Items/Spanners access to unbroken originals      
+       * optimal pagebreaking.
+
+       * put errorlevel in Input class
+
+       * AFM for font input?
+
 
-       * Score_bar/Piano_braces, are *not* ordinary bars 
 
 3RD PARTY BUGS:
        * Rational infty(HUGE_VAL) on glibc / w32
@@ -113,19 +121,6 @@ languages:
        - ABC? 
        - SMDL?
 
-       * placement of bar-numbers
-
-******************
-
-       \score { < 
-               \melodic \type Staff { c'4 g'4 }
-               \lyric { \id "Lyric" ""; hello4 bye4 < a chord > }
-               \lyric { \id "Lyric" ""; bye4 hello4 }
-               \melodic { \id "Staff" ""; c'4 g'4 }
-       > }
-
-******************
-
        * add to MIDI output:
        - tempo change
        - repeat
@@ -275,6 +270,7 @@ SMALLISH PROJECTS
        * write Dynamic_line (to group dynamics horizontally)
 
        * use Real for all y positions.
+       - use translate_axis( .. ,Y_AXIS) 
 
        * half-sharps, half-flats
 
@@ -353,7 +349,7 @@ Mudela.
 
        * move MIDI stuff (including Quantization) to a ANSI C libmidi library.
 
-       * use an embedded language: Python
+       * use an embedded language: Python, Scheme
        for: 
                - Score_elems
                - Engraver
diff --git a/VERSION b/VERSION
index db68ff0c0dce01e9a84aa235282dce0e1cd296cf..9692368e960b678931b8176e4059a9a171243574 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,6 +1,6 @@
 TOPLEVEL_MAJOR_VERSION = 0
 TOPLEVEL_MINOR_VERSION = 1
-TOPLEVEL_PATCH_LEVEL = 29
+TOPLEVEL_PATCH_LEVEL = 30
 TOPLEVEL_MY_PATCH_LEVEL = 
 
 # use the above to send patches, always empty for released version:
index fe4aff5ab370abb6cacfe03ebb04149e86932911..8c4a51080b90a69d2d5fc5c5eb9b45df5d4e5321 100644 (file)
@@ -1,5 +1,5 @@
 % generated automatically by mf-to-table.py version 0.4
-% on Wed Nov  5 23:51:17 1997
+% on Tue Nov 11 13:31:20 1997
 % Do not edit
 % input from out/feta16.log
 % name=\symboltables {
@@ -67,7 +67,9 @@
         "d6"   "\\dsixtyfourthflag"    -0.20\pt        4.54\pt -0.20\pt        17.66\pt        
         }
     "klef"      = \table {
-        "bass" "\\bassclef"    -0.00\pt        10.80\pt        -10.00\pt       4.00\pt 
-        "bass_change"  "\\cbassclef"   -0.00\pt        8.64\pt -8.00\pt        3.20\pt 
+        "bass" "\\bassclef"    1.20\pt 12.80\pt        -10.00\pt       4.00\pt 
+        "bass_change"  "\\cbassclef"   0.96\pt 10.24\pt        -8.00\pt        3.20\pt 
+        "violin"       "\\violinclef"  0.11\pt 10.55\pt        -12.00\pt       20.00\pt        
+        "violin_change"        "\\cviolinclef" -0.23\pt        8.12\pt -9.60\pt        16.00\pt        
         }
     %  } % $name
index 144f3f45f017b443108e4ea704e7ab89f4d9b48b..dccf7ba6bdddc9d9958890e8842ff124bd60f1da 100644 (file)
@@ -1,5 +1,5 @@
 % generated automatically by mf-to-table.py version 0.4
-% on Wed Nov  5 23:51:26 1997
+% on Tue Nov 11 13:31:29 1997
 % Do not edit
 % input from out/feta20.log
 % name=\symboltables {
@@ -67,7 +67,9 @@
         "d6"   "\\dsixtyfourthflag"    -0.25\pt        5.68\pt -0.25\pt        22.08\pt        
         }
     "klef"      = \table {
-        "bass" "\\bassclef"    -0.00\pt        13.50\pt        -12.50\pt       5.00\pt 
-        "bass_change"  "\\cbassclef"   -0.00\pt        10.80\pt        -10.00\pt       4.00\pt 
+        "bass" "\\bassclef"    1.50\pt 16.00\pt        -12.50\pt       5.00\pt 
+        "bass_change"  "\\cbassclef"   1.20\pt 12.80\pt        -10.00\pt       4.00\pt 
+        "violin"       "\\violinclef"  0.14\pt 13.19\pt        -15.00\pt       25.00\pt        
+        "violin_change"        "\\cviolinclef" -0.29\pt        10.15\pt        -12.00\pt       20.00\pt        
         }
     %  } % $name
index daa17af92444e9b32c83c0e8506e05a3166cbd5f..f95cb2fdccdf59a7409334172c27c7238b4f8a8e 100644 (file)
@@ -53,7 +53,7 @@ table_sixteen=
 
      "clefs" = \table {
        "violin"        "\violinclef"           0.0\pt  12.8\pt -10.0\pt        18.0\pt
-       "bass"  "\bassclef"             0.0\pt  12.8\pt 0.0\pt  16.0\pt
+       "bass"  "\bassclef"             -1.0\pt 12.8\pt 0.0\pt  16.0\pt
        "alto"  "\altoclef"             0.0\pt  12.8\pt 0.0\pt  16.0\pt
        "tenor" "\altoclef"             0.0\pt  12.8\pt 0.0\pt  16.0\pt
        "violin_change" "\cviolinclef"  0.0\pt  11.2\pt -12.0\pt        12.0\pt
index 756a6c218db4b75fdc9343518e65075f2c588ac8..9faee5ed92e3a997004131c8e9da4b779df8efd6 100644 (file)
@@ -44,30 +44,30 @@ melodie = \melodic{
 %%4
        r < [ 'a cis > e < 'a cis > e < 'a cis ] > |
 %%5
-       [2/3 a~ bes a ]1/1 d'4. a |
+       [2/3 a() bes a ]1/1 d'4. a |
 %%6
-       [2/3 g~ a g ]1/1 d'4 g r |
+       [2/3 g() a g ]1/1 d'4 g r |
 
 %%7
-       a4.^> g [2/3 g~ f e ]1/1 |
+       a4.^> g [2/3 g() f e ]1/1 |
 %%8
        f2 r4 |
 %%9
 
-       < { a'4.~  g' [2/3 g'( f' )e' ]1/1 }
+       < { a'4.()  g' [2/3 g'( f' )e' ]1/1 }
        { cis'4. e'_"dolce" \plet 2/3; e' \plet 1/1; } > |
 %%10
        < f'2. d'2. > |
 %%11
-       [2/3 a ~  bes a ]1/1 f'4. a |
+       [2/3 a ()  bes a ]1/1 f'4. a |
 %%12
-       [2/3 g~   a g ]1/1 e'4. d' |
+       [2/3 g()   a g ]1/1 e'4. d' |
 %%13
-       c'4. bes [2/3 bes~   a g ]1/1 |
+       c'4. bes [2/3 bes()   a g ]1/1 |
 %%14
        a2 r 
-       < { d'~  c'4. g [2/3 bes a g ]1/1 }
-       { f \p ~  e4._"dolce" bes 
+       < { d'()  c'4. g [2/3 bes a g ]1/1 }
+       { f \p ()  e4._"dolce" bes 
                \plet 2/3; g
                \plet 1/1; 
        } > |
@@ -81,12 +81,12 @@ melodie = \melodic{
        [ d'8. a16 ] f4. d |
 %%19
 %#%    c'\grace\stemup
-       [2/3 bes ~   a bes ]1/1 d'4. bes |
+       [2/3 bes ()   a bes ]1/1 d'4. bes |
 %%20
        a2. |
 %%21
 %#%    a\grace
-       [2/3 g~  fis g ]1/1 bes4.^> g |
+       [2/3 g()  fis g ]1/1 bes4.^> g |
 %%22
        f!2. |
 %%23
@@ -94,16 +94,16 @@ melodie = \melodic{
 %%24
        [ d'8. a16 ] fis4. d |
 %%25
-       [2/3 b \mf~   ais b ]1/1 d'4. b |
+       [2/3 b \mf()   ais b ]1/1 d'4. b |
 %%26
        < a2. fis2. > |
 %%27
-       [2/3 e' \f~  dis' e' ]1/1 g'4. cis' |
+       [2/3 e' \f()  dis' e' ]1/1 g'4. cis' |
 %%28
        < d'2. fis2. > |
 %#%\volta1
 %%29
-       < { bes2( [ d'8.~ )bes16 ] }
+       < { bes2( [ d'8.() )bes16 ] }
        { g2 \mf [ bes8. g16 ] } > |
 %%30
        < { a4. [ a-. a-. a-. ] }
@@ -114,7 +114,7 @@ melodie = \melodic{
 %%32
        < a2 fis2 \pp > < a4 fis4 > |
 %%33
-       < { b2( [ d'8.~ )b16 ] }
+       < { b2( [ d'8.() )b16 ] }
        { g2 [ b8. g16 ] } > |
 %%34
        < { a4. [ a-. a-. a-. ] }
@@ -128,14 +128,14 @@ melodie = \melodic{
 %%37
        [ a8. a16 ] [ cis'8. cis'16 ] [ e'8. e'16 ] |
 %%38
-       d'4~  cis'4 r4 |
+       d'4()  cis'4 r4 |
 %%39
 %#%    > a4. [ cis' e'8. >! d'16 ] |
        a4. \> [ cis' e'8. \! d'16 ] |
 %%40
        cis'2 r4 |
 %%41
-       < fis'4. \> cis'4. \f > e' [2/3 e'~  d' \! cis' ]1/1 |
+       < fis'4. \> cis'4. \f > e' [2/3 e'()  d' \! cis' ]1/1 |
 %%42
        [ b8. cis'16 ] d'4^> b r |
 %%43
@@ -144,19 +144,19 @@ melodie = \melodic{
 %%44
        [ b8. \> cis'16 ] d'4^> b \! r |
 %%45
-       [2/3 b \p ~  ais b ]1/1 d'4. b |
+       [2/3 b \p ()  ais b ]1/1 d'4. b |
 %%46
        <a!2. fis2. > |
 %%47
-       [2/3 e' \f~  dis' e' ]1/1 g'4.^> cis' |
+       [2/3 e' \f()  dis' e' ]1/1 g'4.^> cis' |
 %%48
        \textstyle "italic";
        < 
-       { fis2.~
+       { fis2.(
        %\group "+1"; 
-               \stemdown f2. }
-       { d'2. ~ \stemup
-               d'4 r4_"decresc." d'4 } 
+               \stemdown )f2. }
+       { d'2. ( \stemup
+               d'4 r4_"decresc." d'4 } 
        >
        \textstyle "roman"; |
 %%50
index c66f32fc1879db673623843e2e919e969afafdb3..ab7dbaa23a784b16938fe0fe2d6e5895370ece60 100644 (file)
@@ -1,4 +1,4 @@
 MAJOR_VERSION = 0
 MINOR_VERSION = 1
-PATCH_LEVEL = 29
+PATCH_LEVEL = 30
 MY_PATCH_LEVEL =
index e86a8cee627ae85e2a7a1cf4b4d11e2a6337a6fe..8ab52f41d5a73ada4b8a4b2d41f8ec2b648ecdd7 100644 (file)
@@ -24,34 +24,34 @@ void
 Bar_column_engraver::acknowledge_element (Score_elem_info info)
 {
   if (info.elem_l_->is_type_b (Script::static_name()) 
-       && info.req_l_->command()
-       && info.origin_grav_l_arr_.size() == 1) 
-         {
-       script_l_arr_.push ((Script*)info.elem_l_->item());
+      && info.req_l_->command()
+      && info.origin_grav_l_arr_.size() == 1) 
+    {
+      script_l_arr_.push ((Script*)info.elem_l_->item());
     }
   else 
     {
-       if  (info.origin_grav_l_arr_.size() == 1 
-            && info.elem_l_->is_type_b (Bar::static_name()))
-            bar_l_ = (Bar*)info.elem_l_->item();
+      if  (info.origin_grav_l_arr_.size() == 1 
+          && info.elem_l_->is_type_b (Bar::static_name()))
+       bar_l_ = (Bar*)info.elem_l_->item();
     }
        
   if (bar_l_ && !barcol_p_) 
     {
-       barcol_p_ = new Bar_column;
-       barcol_p_->breakable_b_ =true;
-       barcol_p_->set_bar (bar_l_);
-       announce_element (Score_elem_info (barcol_p_, 0));
+      barcol_p_ = new Bar_column;
+      barcol_p_->breakable_b_ =true;
+      barcol_p_->set_bar (bar_l_);
+      announce_element (Score_elem_info (barcol_p_, 0));
     }
 
   if  (barcol_p_) 
     {
-       for (int i=0; i < script_l_arr_.size(); i++) 
-         {
-           script_l_arr_[i]->breakable_b_ = true;
-           barcol_p_->add (script_l_arr_[i]);
-         }
-       script_l_arr_.clear();
+      for (int i=0; i < script_l_arr_.size(); i++) 
+       {
+         script_l_arr_[i]->breakable_b_ = true;
+         barcol_p_->add (script_l_arr_[i]);
+       }
+      script_l_arr_.clear();
     }
 }
 
@@ -60,8 +60,8 @@ Bar_column_engraver::do_pre_move_processing()
 {
   if (barcol_p_) 
     {
-       typeset_element (barcol_p_);
-       barcol_p_ =0;
+      typeset_element (barcol_p_);
+      barcol_p_ =0;
     }
 }
 
index acb8a5bdf3f6c90234bfc69056247e8fc1937c1f..ffe6648c531067a18b47ac658642fea48965e2c8 100644 (file)
@@ -18,7 +18,6 @@ Crescendo::Crescendo()
   grow_dir_ =0;
   dir_ = DOWN ;
   dyn_b_drul_[LEFT] = dyn_b_drul_[RIGHT] =false;
-  inside_staff_b_ = false;
 }
 
 Interval
@@ -62,7 +61,7 @@ Crescendo::brew_molecule_p() const
   m_p = new Molecule;
   Atom s (get_symbol());
   m_p->add (Atom (s));
-  m_p->translate (Offset (x_off_dim, pos_i_ * paper()->internote_f ()));
+  m_p->translate (Offset (x_off_dim, y_));
   return m_p;
 }
 
index 7a62123f83aeeef5036844faa34418b8347dcf46..d4b9544e3a5282b8a51c4e9b0c83254fe8942504 100644 (file)
@@ -105,7 +105,8 @@ Dynamic_engraver::do_pre_move_processing()
   Staff_symbol* s_l = get_staff_info().staff_sym_l_;
   if (dynamic_p_)
     {
-      dynamic_p_->set_staffsym (s_l);
+      
+      dynamic_p_->add_support (s_l);
       typeset_element (dynamic_p_);
       dynamic_p_ = 0;
     }
@@ -115,7 +116,7 @@ Dynamic_engraver::do_pre_move_processing()
        to_end_cresc_p_->dyn_b_drul_[RIGHT]=true;
 
       to_end_cresc_p_->set_bounds(RIGHT,get_staff_info().musical_l ());
-      to_end_cresc_p_->set_staffsym (s_l);
+      to_end_cresc_p_->add_support (s_l);
       typeset_element (to_end_cresc_p_);
       to_end_cresc_p_ = 0;
     }
index c682c9efbd24d9dcf0e16bc6a36567e0ca66a28c..131b265186f5bd03bbe8c80bd09fa55d586f8531 100644 (file)
 
   */
 class Staff_side : virtual Score_elem {
-    Link_array<Score_elem> support_l_arr_;
-    int staff_size_i_;
-    Interval support_height() const;
-    Staff_symbol* staff_sym_l_;
-    int get_position_i() const;
+  Link_array<Score_elem> support_l_arr_;
+  int staff_size_i_;
+  Interval support_height() const;
+  Staff_symbol* staff_sym_l_;
+  Real get_position_f() const;
 
-    void read_staff_sym();
+  void read_staff_sym();
 public:
 
-    /**
-      Vertical dir of symbol relative to staff. -1 = below staff?
-      */
-    Direction dir_;
-    Interval sym_int_;
+  /**
+    Vertical dir of symbol relative to staff. -1 = below staff?
+    */
+  Direction dir_;
+  Interval sym_int_;
     
-    /// follow the support inside the staff?
-    bool inside_staff_b_;
+  /// follow the support inside the staff?
+  bool inside_staff_b_;
 
-    int pos_i_;
+  Real y_;
 
-    void set_staffsym (Staff_symbol * );
+
+  void set_staffsym (Staff_symbol * );
   
-    Staff_side();
-    void add_support (Score_elem*);
-    DECLARE_MY_RUNTIME_TYPEINFO;
+  Staff_side();
+  void add_support (Score_elem*);
+  DECLARE_MY_RUNTIME_TYPEINFO;
     
 protected:
-    virtual Interval symbol_height() const;
-    virtual void do_substitute_dependency (Score_elem *, Score_elem*);
-    virtual void do_post_processing();
+  virtual Interval symbol_height() const;
+  virtual void do_substitute_dependency (Score_elem *, Score_elem*);
+  virtual void do_post_processing();
 };
 #endif // STAFF_SIDE_HH
index 31b69273cc96d65cac23e404a804f62646f4a4d7..4a4888a5226d17541488a5f8131ae1d52e975f2c 100644 (file)
@@ -19,6 +19,7 @@ class Staff_symbol : public Spanner
 {
   /// this many lines.
   int no_lines_i_;
+  Real interline_f_;
 public:
   DECLARE_MY_RUNTIME_TYPEINFO;
   Staff_symbol (int lines);
@@ -26,6 +27,7 @@ public:
   int steps_i() const;
 protected:
   SCORE_ELEM_CLONE(Staff_symbol);
+  virtual Interval do_height () const;
   virtual Molecule* brew_molecule_p() const;
   virtual void do_print() const;
 };
index 96ee56b49d311635855343ea3128d7293f8f062b..840e2b31ce67212d1d01f5884cacf7b52e28ce9c 100644 (file)
@@ -66,7 +66,7 @@ A             [a-zA-Z]
 AA             {A}|_
 N              [0-9]
 AN             {AA}|{N}
-PUNCT          [?!,.:']
+PUNCT          [?!:']
 ACCENT         \\[`'"^]
 NATIONAL  [\001-\006\021-\027\031\036\200-\377]
 TEX            {AA}|-|{PUNCT}|{ACCENT}|{NATIONAL}
index 1fed7f0299d834cb864b93e92e3f0ab7d4cc5ad1..597fe0809ab72e6130849746661621d9d4a9b177 100644 (file)
@@ -9,6 +9,7 @@
 #include "musical-request.hh"
 #include "stem.hh"
 #include "staff-sym.hh"
+#include "general-script-def.hh"
 
 Script_engraver::Script_engraver()
 {
@@ -55,7 +56,9 @@ Script_engraver::do_pre_move_processing()
   for (int i=0; i < script_p_arr_.size(); i++) 
     {
       Script*script_p = script_p_arr_[i];
-      script_p->set_staffsym (s_l);
+      if (!script_p->specs_l_->inside_b())
+       script_p->add_support (s_l);
+
       typeset_element (script_p);
     }
   script_p_arr_.clear();
index ceaeacd4c3e24e35a8474ded3d09c352bbeb4148..0979cfe8245a61d38c8637c698ea9fca39d3a360 100644 (file)
@@ -86,7 +86,6 @@ Script::do_pre_processing()
 
   if (!dir_)
     set_default_dir();
-  inside_staff_b_ = specs_l_->inside_b();
 }
 
 Interval
@@ -98,11 +97,10 @@ Script::symbol_height() const
 Molecule*
 Script::brew_molecule_p() const
 {
-  Real dy = paper()->internote_f ();
   Real dx = paper()->note_width()/2;
 
   Molecule*out = new Molecule (specs_l_->get_atom (paper(), dir_));
-  out->translate_axis (dy * pos_i_, Y_AXIS);
+  out->translate_axis (y_, Y_AXIS);
   out->translate_axis (dx, X_AXIS);    // FIXME! ugh
   return out;
 }
index 7f9abeeb8316d55e7c27db8e4c61a81fad0bdc9a..4099f2eecec1d5d928d2f20da55b1ecc1488721e 100644 (file)
 #include "staff-sym.hh"
 #include "debug.hh"
 
-void
-Staff_side::set_staffsym (Staff_symbol* s_l)
-{
-  staff_sym_l_ = s_l;
-  add_dependency (s_l);
-}
 
 Staff_side::Staff_side()
 {
-  pos_i_ =0;
+   y_=0;
   sym_int_ = Interval (0,0);
-  staff_size_i_ = 0;
-  staff_sym_l_ = 0;
   dir_ = CENTER;
   inside_staff_b_ = false;
 }
 
-void
-Staff_side::read_staff_sym()
-{
-  if (! staff_sym_l_)
-    return ;
-  staff_size_i_ = staff_sym_l_->steps_i();
-}
-
 
 Interval
 Staff_side::support_height() const
 {
-  Interval r;
+  Interval y_int;
+  for (int i=0; i < support_l_arr_.size(); i++) 
+    {
+      Axis_group_element *common = 
+       common_group (support_l_arr_[i], Y_AXIS);
+       
+      Real y = support_l_arr_[i]->relative_coordinate (common, Y_AXIS)  
+       -relative_coordinate (common,Y_AXIS);
 
-  for (int i=0; i < support_l_arr_.size(); i++)
-    r.unite (support_l_arr_[i]->height());
-  if (r.empty_b())
+      y_int.unite (y + support_l_arr_[i]->height());
+    }
+
+
+  if (y_int.empty_b())
     {
-      r = Interval (0,0);
+      y_int = Interval (0,0);
     }
-  return r;
+  return y_int;
 }
 
 void
@@ -60,8 +53,8 @@ Staff_side::add_support (Score_elem*i)
   add_dependency (i);
 }
 
-int
-Staff_side::get_position_i() const
+Real
+Staff_side::get_position_f() const
 {
   if (!dir_)
     {
@@ -73,28 +66,11 @@ Staff_side::get_position_i() const
 
   Real y=0;
   Real inter_f = paper()-> internote_f ();
-  if (!inside_staff_b_)
-    {
-      y  = (staff_sym_l_) ? dir_ * (staff_sym_l_->steps_i()/2 + 2) : -2;
-      y *=inter_f;
-
-      Interval v= support_height();
-
-      if (dir_ > 0)
-       {
-         y = y >? (v.max() + 2*inter_f);
-       }
-      else if (dir_ < 0)
-       {
-         y = y <? (v.min() - 2*inter_f);
-       }
-    }
-  else
-    {
-      Interval v= support_height();
-      y = v[dir_]  + 2*dir_*inter_f;   // ugh
-    }
-  return int (rint (Real (y)/inter_f)); // should ret a float?
+
+  Interval v= support_height();
+  y = v[dir_]  + 2*dir_*inter_f;       // ugh
+
+  return y;
 }
 
 Interval
@@ -107,17 +83,15 @@ void
 Staff_side::do_post_processing()
 {
   sym_int_ = symbol_height();
-  pos_i_ = get_position_i();
+  y_ = get_position_f();
   if (dir_)
-    pos_i_ += int (rint (- sym_int_[-dir_] / paper()->internote_f ()));
+    y_ += - sym_int_[-dir_];
 }
 
 void
 Staff_side::do_substitute_dependency (Score_elem*o, Score_elem*n)
 {
   support_l_arr_.unordered_substitute (o,n);
-  if (staff_sym_l_ == o)
-    staff_sym_l_ = n ? (Staff_symbol*) n->spanner():0;
 }
 
 
index ebacee46f730c62499eec09272213c51b09ac7b3..4cd214b79bc36015a4ea9b5c9bd75220f1c293c7 100644 (file)
 #include "paper-def.hh"
 #include "molecule.hh"
 #include "debug.hh"
-
+#include "dimen.hh"
 
 
 Staff_symbol::Staff_symbol (int l)
 {
   no_lines_i_ = l;
+  interline_f_ =  0 PT;
 }
 
 
@@ -30,19 +31,25 @@ Staff_symbol::do_print() const
 #endif
 }
 
+Interval
+Staff_symbol::do_height() const
+{
+  int n = no_lines_i_ -1;
+  return 2* inter_note_f () * Interval (-n, n);
+}
+
 Molecule*
 Staff_symbol::brew_molecule_p() const
 {
   Paper_def * p = paper();
   Atom rule  = p->lookup_l ()->rule_symbol (p->get_var ("rule_thickness"), 
                                            width ().length ());
-  Real inter = p->interline_f ();
-  Real height = (no_lines_i_-1) * inter/2;
+  Real height = (no_lines_i_-1) * inter_note_f();
   Molecule * m = new Molecule;
   for (int i=0; i < no_lines_i_; i++)
     {
       Atom a (rule);
-      a.translate_axis (height - i * inter, Y_AXIS);
+      a.translate_axis (height - i * inter_note_f()*2, Y_AXIS);
       m->add (a);
     }
 
@@ -52,6 +59,9 @@ Staff_symbol::brew_molecule_p() const
 Real
 Staff_symbol::inter_note_f() const
 {
+  if (interline_f_)
+    return interline_f_/2;
+
   return paper()->internote_f ();
 }
 
index 8d62ea72896dd97d231c54e3b6ef5ff41b2dbc0f..16a45977f17d9bcf043e97c4fa2a6c3349ea3e77 100644 (file)
@@ -52,7 +52,7 @@ Text_item::brew_molecule_p() const
 
   if (dir_<0)          // should do something better anyway.
     mol_p->translate_axis (-mol_p->extent().y ().left , Y_AXIS);
-  mol_p->translate_axis (pos_i_ * paper()->internote_f (), Y_AXIS);
+  mol_p->translate_axis (y_, Y_AXIS);
   
   return mol_p;
 }
index 2b1a91d0d708aae1fc3d3b59af46572ed5fbf3d0..1a1bb286a020a7f5b453f2fe54e67bafe0bf2686 100644 (file)
@@ -2,4 +2,4 @@
 # Rename this file to "watch" and then you can run the "uscan" command
 # to check for upstream updates and more.
 # Site                 Directory       Pattern                 Version Script
-pcnov095.win.tue.nl    /pub/lilypond   lilypond-*.tar.gz       debian  uupdate
+pcnov095.win.tue.nl    /pub/lilypond/development       lilypond-*.tar.gz       debian  uupdate
index a9436ed3e88412477f849d4d9d052c2806982f57..4ca6b9c40cad6b0c3be52ff55dc1a0a8f8fc4988 100644 (file)
@@ -1,7 +1,7 @@
 Begin3
 Titel: LilyPond
-Versie: 0.1.29
-Inschrijf datum: 06NOV97
+Versie: 0.1.30
+Inschrijf datum: 11NOV97
 Beschrijving: LilyPond is de muziek typesetter van het GNU Project.  
                Het programma genereert muziek in zichtbare of 
                hoorbare vorm uit uit een muzikale definitie file: 
@@ -16,8 +16,8 @@ Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
        jan@digicash.com (Jan Nieuwenhuizen)
 Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys)
 Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
-       395k lilypond-0.1.29.tar.gz 
+       395k lilypond-0.1.30.tar.gz 
 Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
-       395k lilypond-0.1.29.tar.gz 
+       395k lilypond-0.1.30.tar.gz 
 Copi"eer politie: GPL
 End
index d3085da4349acee62898944c2c726d1d5f52a143..28812b00e6d89eb7359fcc8644d65a8398026c9c 100644 (file)
@@ -1,7 +1,7 @@
 Begin3
 Title: LilyPond
-Version: 0.1.29
-Entered-date: 06NOV97
+Version: 0.1.30
+Entered-date: 11NOV97
 Description: LilyPond is the GNU Project music typesetter.  The program
                generates visual or auditive output from a music 
                definition file: it can typeset formatted sheet music 
@@ -13,9 +13,9 @@ Keywords: music notation typesetting midi
 Author: hanwen@stack.nl (Han-Wen Nienhuys)
        jan@digicash.com (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
-Primary-site: sunsite.unc.edu /pub/Linux/apps
-       440k lilypond-0.1.29.tar.gz 
-Original-site: pcnov095.win.tue.nl /pub/lilypond/
-       440k lilypond-0.1.29.tar.gz 
+Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
+       440k lilypond-0.1.30.tar.gz 
+Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
+       440k lilypond-0.1.30.tar.gz 
 Copying-policy: GPL
 End
index fc173051cfe4df028815d082cb6f3403297ec2ed..bc3e34ed5d93cca5246badeb489aa13039ba1e3a 100644 (file)
@@ -13,9 +13,9 @@ Keywords: music notation typesetting midi
 Author: hanwen@stack.nl (Han-Wen Nienhuys)
        jan@digicash.com (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
-Primary-site: sunsite.unc.edu /pub/Linux/apps
+Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
        440k lilypond-@TOPLEVEL_VERSION@.tar.gz 
-Original-site: pcnov095.win.tue.nl /pub/lilypond/
+Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
        440k lilypond-@TOPLEVEL_VERSION@.tar.gz 
 Copying-policy: GPL
 End
index 714757289c31fc0aad2a40862f6dac205e134779..343da659ed5c27584eb5f469bd40ec16582a18ed 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 0.1.29
+Version: 0.1.30
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.29.tar.gz
+Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.30.tar.gz
 Summary: A program for typesetting music.
 URL: http://www.stack.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@stack.nl>
index 47afdd263e3d77864d0b659705d8c8d44be769db..3b1b79868475f6a97c4cb07bd918551a8657525d 100644 (file)
@@ -40,6 +40,11 @@ def autometric_output_char=
        message "@{char@:"&charnamestr&"@:"&decimal charcode&"@:"&decimal charbp&"@:"&decimal charwd&"@:"&decimal chardp&"@:"&decimal charht&"@:"&idstr&"@:"&texstr&"@}";
 enddef;
 
+def hround_pixels(expr sharped) = hround(sharped * hppp) enddef;
+def vround_pixels(expr sharped) = vround(sharped * vppp) enddef;
+
+
+
 def tand(expr alpha) = 
        (sind alpha/cosd alpha)
        enddef;
index 53535b6a225c185494bb5464e510dc49d148f363..69f7eb9af25cdf6c97d744eba69455faad7e820a 100644 (file)
@@ -1,5 +1,12 @@
-% bolletjes.mf
-% part of LilyPond's pretty-but-neat music font
+% 
+% feta-bolletjes.mf --  implement noteheads
+% 
+% source file of LilyPond's pretty-but-neat music font
+% 
+% (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
+% & Han-Wen Nienhuys <hanwen@stack.nl>
+% 
+
 
 % most beautiful noteheads are pronounced, not circular, 
 % and not even symmetric.
index c710d56da215a389be86824f79ffd9efce1eade0..dd8abe5e91974ee35b5244693046ed6fbc37f82f 100644 (file)
@@ -25,8 +25,8 @@ if test = 0:
        input feta-banier;
        input feta-klef;
 else:
-       input feta-bolletjes;   
-       input feta-banier;
+%      input feta-bolletjes;   
+%      input feta-banier;
 %      input feta-eindelijk;
        input feta-klef;
 
index 077971baba54b16c23b9bde8b0ffeaa628f50393..e9b285d7e50cada6fdbb20a9f6dc51027fb2b39e 100644 (file)
@@ -1,58 +1,26 @@
+% 
+% feta-klef.mf --  implement Clefs
+% 
+% source file of the Feta (Font-En-Tja) music font
+% 
+% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+% 
 
 fet_begingroup("klef");
 
-def draw_bass_clef(expr reduction, center) = 
-       save thinness, left_shoot, reduced_il;
-       save left_fat, right_fat, dot_size, dot_sep;
-       save hip_factor;
-
-       left_shoot = 0.3;
-       left_fat = .3;
-       right_fat = .5;
-       dot_size = .4;
-       dot_sep = 1.2;
-       hip_factor = 0.95;
-       thinness = stafflinethickness;
-       
-
-       reduced_il# = interline# * reduction;
-       define_pixels(reduced_il);
-       set_char_box(left_fat * reduced_il#, 
-               (1 + hip_factor + right_fat/2)* reduced_il# +
-               (dot_sep+ 1) * dot_size *reduced_il#
-               , 2.5 reduced_il#, 1.0 reduced_il#)
-
-       z2 - z1 = (1.1 reduced_il, reduced_il);
-       z3 = (x2 + hip_factor* reduced_il, y1);
-       z4 - z1 = (- left_shoot * reduced_il, -2.5 reduced_il);
-
-       z1extreme = z1l - ( thinness/2, 0);
-       penpos1(left_fat* reduced_il , 0);
-       z1r = (center, 0);
-       z5 = (x3l +  dot_sep * dot_size * interline, .5 interline);
-       
-       
-       penpos3(right_fat * reduced_il, 180);
-
-       penlabels(1,3);
-       labels(2,4);
 
+def draw_staff(expr first, last)=
+       pickup pencircle scaled stafflinethickness;
+       for i:= first step 1 until last:
+               draw (- interline, i* interline) .. (4 interline, i* interline);
+       endfor
 
-       pickup pencircle scaled thinness;
-       filldraw z1r{up} .. z2{right} .. z3r{down}  .. {curl 0} z4 {curl 0}
-               .. z3l{up} .. z2{left} .. z1l{down} -- cycle;
-
-       draw_bulb(1, z1r, z1extreme, 1.2 , 1.2);
-
-       pickup pencircle scaled (dot_size * interline);
-       draw z5;
-       draw z5 yscaled -1;
+ enddef;
 
-enddef;
 
 
 %
-% Inspired by Baerenreiter, Auf dem Strom
+% Inspired by Baerenreiter and Breitkopf
 % 
 % FIXME: dims
 % FIXME: right vertical tangent seems to be lower than the F-line
@@ -62,22 +30,25 @@ enddef;
 % [Wanske] says that the extreme x point should be exactly between 
 % the dots, but her picture shows that the extreme is ~ 0.2 ss lower
 
-def draw_bass_klef(expr reduction) = 
+def draw_bass_klef(expr exact_center, reduction) = 
        save reduced_il, left_tilt, left_thick;
        reduced_il# = interline# * reduction;
-       left_tilt = 10;
-
+       left_tilt = 5;
        define_pixels(reduced_il);
        left_thick = .25  reduced_il;
        
-       set_char_box(0, 2.7 reduced_il#, 2.5 reduced_il#, reduced_il#);
+       set_char_box(
+               - xpart exact_center+ .2 reduced_il#, 
+               xpart exact_center + 2.7 reduced_il#, 
+               - ypart exact_center + 2.5 reduced_il#, 
+               ypart exact_center +reduced_il#);
        x1r - x1l = left_thick;
-       x1l = 0;
-       y1l = 0;
+       z1l = (hround_pixels(xpart exact_center), 
+               vround_pixels(ypart exact_center));
 
        y2 = reduced_il;
 
-       x3r = x1l + 12/7 reduced_il;
+       x3l - x1l =  2.1 reduced_il;
        x2 = .5 [x1,x3];
        x3l - x3r = .48 reduced_il;
        y3l = -0.05 interline;
@@ -93,24 +64,159 @@ def draw_bass_klef(expr reduction) =
        draw_bulb(1, z1r,  z1l, .45 reduced_il, 1.0);
 
 
-       fill z1r{up} .. z2r{right} .. tension .9 .. z3r{down}  .. {curl 0} 
+       fill z1r{up} .. z2r{right} .. tension 1.0 .. z3r{down}  .. {curl 0} 
                simple_serif(z4r, z4l, 90) {curl 0}
-               .. z3l{up} .. tension .9 .. z2l{left} 
+               .. z3l{up} .. tension 0.9 .. z2l{left} 
                .. z1l{dir (-90 + left_tilt)} -- cycle;
        labels(2,4);
        penlabels(1,2,3,4);
 
-       pickup pencircle scaled (1/3 reduced_il);
+       pickup pencircle scaled (.35 reduced_il);
        draw z5;
        draw z5 yscaled -1;
 enddef;
 
+
+
 fet_beginchar("F clef ", "bass", "bassclef")
-       draw_bass_klef(1.0);
+       if test = 1:
+               draw_staff(-3,1);
+       fi;
+       draw_bass_klef((.5 interline#, 0), 1.0);
 fet_endchar;
 fet_beginchar("F clef (reduced)", "bass_change", "cbassclef")
-       draw_bass_klef(0.8);
+       draw_bass_klef((.4 interline#, 0),0.8);
 fet_endchar;
 
 
+
+%
+% Inspired by Baerenreiter
+% 
+% FIXME top 
+% FIXME bulb should curve (see bass clef)
+% FIXME start (inside) should be little thinner
+% FIXME parametrise.
+% FIXME should be a bit more upright
+%
+def draw_gclef (expr exact_center, reduction)=
+       save reduced_il, downstroke_dir, downstroke_angle, hair, center;
+       save breapth_factor, inner_thick_end, thinness, thickness, thinnib
+, thinness, thinpen;
+       reduced_il# = interline# * reduction;
+       define_pixels(reduced_il);
+       pair downstroke_dir, center;
+
+       center := (hround_pixels(xpart exact_center), 
+               vround_pixels(ypart exact_center));
+
+       hair =  .3 stafflinethickness;
+       thinness = 1.3 stafflinethickness;
+       downstroke_dir = (14, -75);
+       breapth_factor = 11/7;
+       inner_thick_end = 45;
+       thickness = .4 interline - hair;
+
+       thinnib = thinness - hair;
+       thinpen = thinness;
+       set_char_box(-xpart exact_center + breapth_factor* reduced_il#, 
+               xpart exact_center + .66 breapth_factor* reduced_il#,
+               -ypart exact_center + 3 * reduced_il#,
+               ypart exact_center + 5 * reduced_il#);
+       
+       pickup pencircle scaled hair;
+
+       downstroke_angle = angle downstroke_dir;
+       z1 = center + whatever * (-1, -2);
+       x1 = xpart center -.28 reduced_il;
+       
+       top z2r = center + (0,reduced_il + stafflinethickness/2);
+       
+       x4 = xpart center - .1 reduced_il;
+       bot y4r = -(reduced_il + .5 stafflinethickness);
+
+       z3 = (z4 - center) rotated inner_thick_end + center;
+       
+       z5r = (- breapth_factor, .37)* reduced_il + center;
+       penpos5(thickness, 135);
+
+       z6 = center + whatever * downstroke_dir;
+       y6 = ypart center + 2 reduced_il;
+
+
+       z7l - z6 = whatever *(z5- z6) ;
+       y7l = 3.5 reduced_il;
+
+
+
+       z8r = .4 [z9r, z7r] + 1.5 stafflinethickness * dir 52;
+
+       x9 = .7 [x10, x7r];
+       top y9l = 5 reduced_il;
+
+       y10 = 3. reduced_il;
+       y11 = -11/7 reduced_il;
+
+       y12 = ypart center - 18.5/7 reduced_il;
+       x12 = x11 - 5 /7 reduced_il;    
+
+       z13 = z12 + .6 reduced_il*(-1,1);
+
+       (z10r - z10l) dotprod (unitvector downstroke_dir rotated 90) = 
+               thinnib;
+
+       center - z10= whatever * downstroke_dir;
+       center - z11 =  whatever * downstroke_dir;
+
+       penpos1(thinnib, angle(-1,-2));
+       penpos2(thickness, 90);
+       penpos3(thinnib, -90 + inner_thick_end);
+       penpos4(thinnib, -90);
+
+
+       penpos7(thickness, 135);
+       penpos8(1.5 thinnib, - 70 + angle downstroke_dir);
+       penpos9(1.5 thickness, -80);
+       penpos10(whatever, downstroke_angle + 10);
+       penpos11(thinnib, downstroke_angle + 90);
+       penpos12(thinnib, -90);
+       penpos13(3 thinnib, 180);
+
+       
+       filldraw z2l{right}   .. z3l.. z4l{left} .. z5l{up}  .. z7l{up} 
+               %.. z8l 
+               .. z9l & z9l ..
+               {downstroke_dir}z10l --- z11l -- z11r --- z10r{- downstroke_dir} 
+               .. tension .8 
+               .. z9r & z9r  
+               %.. z8r
+               .. z7r{down} .. z5r{down} .. z4r{right}
+               .. z3r .. z2r{left} .. 
+               tension .95 .. 
+               z1r -- z1l 
+               .. tension 0.85 ..cycle;
+
+       filldraw simple_serif(z1r, z1l, 90)  -- cycle;
+
+       filldraw z12r{left} .. z13r{up} -- z13l{down} .. z12l{right} .. cycle;
+
+       draw_bulb(-1,  z13l, lft z13r, 6/14 reduced_il, 1.0);
+
+       pickup pencircle scaled (thinpen);
+       draw z10 --- z11 .. z12{left};
+
+       penlabels(range 1 thru 15);
+enddef;
+
+
+fet_beginchar("G clef", "violin", "violinclef")
+       if test = 1:
+               draw_staff(-1,3);
+       fi;
+       draw_gclef((1.6 interline#,0), 1.0);
+fet_endchar;
+fet_beginchar("G clef", "violin_change", "cviolinclef")
+       draw_gclef((1.2 interline#,0), .8);
+fet_endchar;
+
 fet_endgroup("klef");
index ad274d6a8cb1a7ba425abf5a5de28fd3ca402c47..37d551b925aa8fdcca430742f75c7f62c0617415 100644 (file)
@@ -1,6 +1,10 @@
-%
-% scripts
-%
+% 
+% feta-schrift.mf --  implement scripts
+% 
+% source file of the Feta (Font-En-Tja) music font
+% 
+% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+% 
 
 
 fet_begingroup("scripts")
index 8528ee47cdda90f07dc9708f09ce72bc0bf902a0..a3cddb3fa0e6a1901701e77a527f95af77cf0998 100644 (file)
@@ -1,3 +1,12 @@
+% 
+% feta-toevallig.mf --  implement Accidentals
+% 
+% source file of the Feta (Font-En-Tja) music font
+% 
+% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+% 
+
+
 %
 % Accidentals from various sources, notably
 %
 
 fet_begingroup("accidentals");
 
+%
+% The beams of most sharps have horizontal endings (as if drawn with 
+% a square pen).  [Wanske] does not mention this, so we'll just ignore 
+% this fact
+%
 fet_beginchar("Sharp" , "1", "sharp");
        set_char_box(0, 1.1 interline#, 1.5 interline#, 
                1.5 interline#);
index 1dd3f198658f7fec94f8a92c50a30ab45b31d23b..777cda5fa723070bca210ca0d299d53dbaba9d47 100644 (file)
@@ -1,5 +1,5 @@
 % generated automatically by mf-to-table.py version 0.4
-% on Wed Nov  5 23:51:17 1997
+% on Tue Nov 11 13:31:20 1997
 % Do not edit
 % input from out/feta16.log
 % name
@@ -69,4 +69,6 @@
 % klef
 \fetdef\bassclef{51}
 \fetdef\cbassclef{52}
+\fetdef\violinclef{53}
+\fetdef\cviolinclef{54}
 
index 5a820d00bb0dba07da33e7a938c96b7dc14d3eef..00dad23d8ba8dc27b6f68f7f3796637c3e0fc946 100644 (file)
@@ -1,5 +1,5 @@
 % generated automatically by mf-to-table.py version 0.4
-% on Wed Nov  5 23:51:26 1997
+% on Tue Nov 11 13:31:29 1997
 % Do not edit
 % input from out/feta20.log
 % name
@@ -69,4 +69,6 @@
 % klef
 \fetdef\bassclef{51}
 \fetdef\cbassclef{52}
+\fetdef\violinclef{53}
+\fetdef\cviolinclef{54}