From 0d3883032207c5efda818de432a11bab9d82f902 Mon Sep 17 00:00:00 2001 From: fred Date: Wed, 27 Mar 2002 02:07:07 +0000 Subject: [PATCH] lilypond-1.5.43 --- ChangeLog | 91 +++++++++++++++++++++--- VERSION | 2 +- mf/feta-schrift.mf | 85 ++++++++++++---------- scm/beam.scm | 148 ++++++--------------------------------- scm/grob-description.scm | 37 +++++----- 5 files changed, 169 insertions(+), 194 deletions(-) diff --git a/ChangeLog b/ChangeLog index cdc811d3ab..462b2c7759 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,84 @@ +2002-03-19 Han-Wen + + * VERSION: 1.5.43 released + + * scm/beam.scm (beam-dir-majority-median): if majority is + undecided, use median. Removes a forced dir in sarabande. + + * mf/feta-schrift.mf: Trill fixes, Vee fixes (upbow, ltoe, rtoe) + +2002-03-18 Chris Jackson + + * lily/text-spanner.cc, lily/piano-pedal-engraver.cc: Cleanups. Edge + widths, heights and shortens are now customisable properties. + + * scm/grob-description.scm, scm/grob-property-description.scm: New + properties added to PianoPedalBracket, unnecessary + Y-offset-callbacks removed from *Pedal, undocumented properties + fixed. + + * Documentation/user/refman.itely: Piano pedal updates. + +2002-03-18 Jan Nieuwenhuizen + + * scm/grob-property-description.scm: + * scm/interface-description.scm: Remove old stuff. + + * scm/grob-description.scm (StemTremolo): Change beam-thickness to + 0.48 (previously 0.42). + (Beam): Remove old stuff. + + * lily/stem.cc: + * lily/stem-tremolo.cc: + * lily/beam.cc: + * scm/beam.scm: Remove old stuff. Use Beam::get_interbeam () + (previously space-function). + + * stepmake/bin/add-html-footer.py: Website title fix. + +2002-03-18 Han-Wen Nienhuys + + * scripts/ly2dvi.py (environment): use new font searching setup. + + * lily/afm.cc (afm_bbox_to_box): make code dimension independent + + * lily/tfm.cc (dimensions): make code dimension independent + + * ps/lilyponddefs.ps: add constant for MM and true/ps-point + scaling + + * tex/lily-ps-defs.tex: scaling for PS points and MM. + + * lily/include/dimensions.hh: try MM as internal unit. + + * scm/*.scm: remove invoke-dim1 + +2002-03-17 Han-Wen + + * GNUmakefile.in (fontpaths): add fontpaths target, + + * make/mutopia-targets.make: add PDF rules. + + * make/mutopia-rules.make: add pdf rule. + + * buildscripts/mutopia-index.py (list_item): add PDF. + + * buildscripts/lilypond-profile.sh (TEXMF): typo. + + * make/lilypond-vars.make: set TEXMF for the new font setup. + +2002-03-17 Han-Wen + + * VERSION: 1.5.42 released + + * mf/feta-schrift.mf: endless twiddling of Tr. + + * mf/feta-eindelijk.mf: 8th rest: make darker, top of brush lower, and + endless twiddling with the bulb shape. + + * lily/note-head.cc (internal_brew_molecule): make ledger lines a + little smaller if there is an accidental. + 2002-03-15 Mats Bengtsson * buildscripts/lilypond-profile.sh: @@ -16,16 +97,6 @@ * mf/GNUmakefile (ALL_GEN_FILES): Actually generate the lilypond.map file - -2002-03-17 Han-Wen - - * mf/feta-schrift.mf: endless twiddling of Tr. - - * mf/feta-eindelijk.mf: 8th rest: make darker, top of brush lower, and - endless twiddling with the bulb shape. - - * lily/note-head.cc (internal_brew_molecule): make ledger lines a - little smaller if there is an accidental. 2002-03-17 Jan Nieuwenhuizen diff --git a/VERSION b/VERSION index 655452a893..be33ecbf52 100644 --- a/VERSION +++ b/VERSION @@ -1,7 +1,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=5 -PATCH_LEVEL=42 +PATCH_LEVEL=43 MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a diff --git a/mf/feta-schrift.mf b/mf/feta-schrift.mf index 49f18ee262..5999f7120b 100644 --- a/mf/feta-schrift.mf +++ b/mf/feta-schrift.mf @@ -277,27 +277,47 @@ fet_beginchar("plus (stopped)", "stopped", "plusstop") addto currentpicture also currentpicture rotated 90; fet_endchar; + % -% FIXME: blotting +% A vee with tapered insides to prevent visual blotting % -fet_beginchar("Upbow", "upbow", "upbow") - save ht, wd, thick; - thick = 1.4 stafflinethickness; - wd# = 1.3 staff_space#; - ht# = 1.6 wd#; +def draw_vee (expr width, height, thickness) = +begingroup + save diminish; - - set_char_box(wd#/2, wd#/2, 0, ht#); - pickup pencircle scaled thick; + diminish = 0.75; + pickup pencircle scaled thickness; + x1 = 0; bot y1 = 0; rt x2 = w; top y2 = h; + z3 = 0.6 [z2, z1]; + penpos3(thickness, 0); + penpos4(thickness * diminish, 0); + x4r = thickness/2; + y4 = thickness/2; labels(1,2); - draw z2 -- z1 -- (z2 xscaled -1); + penlabels(3,4); + + draw z1; + draw z3 -- z2; + penstroke z3e .. z4e; + addto currentpicture also currentpicture xscaled -1; +endgroup; +enddef; + +fet_beginchar("Upbow", "upbow", "upbow") + save ht, wd, thick, diminish; + + thick = 1.4 stafflinethickness; + wd# = 1.3 staff_space#; + ht# = 1.6 wd#; + set_char_box(wd#/2, wd#/2, 0, ht#); + draw_vee (wd, ht, thick); fet_endchar; @@ -410,20 +430,22 @@ fet_beginchar("Trill (`tr')","trill","trill") ascender_extra# = 1/2 ex#; ascender# = ascender_extra# + ex#; ex# = 1.4 staff_space#; - kerning# = .550 ex#; + kerning# = .60 ex#; start_nib_angle = 20; - bulb_size = 0.55; + bulb_size = 0.70; define_pixels(ex, ascender_extra, ascender, kerning); t_overshoot = 0.03 ex; fatness = 12/40 ex; - t_fatness = 0.780 fatness; - t_width = 1.8 t_fatness; - r_fatness = 0.75 fatness; - uitschieter = 0.43 ex; + t_fatness = 0.78 fatness; + t_width = 1.9 t_fatness; + r_fatness = 0.78 fatness; + uitschieter = 0.48 ex; hair_thick = blot_diameter; - + r_flare = 0.45 r_fatness; + r_width = 2 r_fatness + 0.25 kerning; slant = .2; + % slant = .0; local_copy(transform)(currenttransform); @@ -454,7 +476,8 @@ fet_beginchar("Trill (`tr')","trill","trill") z5 = (t_fatness/2, 2/3 ex); % penpos5(hair_thick, ); - t_p := simple_serif (z1r, z1l, -40) -- z2l {down} + t_p := z1r{dir (angle(z1l-z1r) + 30)} .. z1l{-dir (angle(z1r-z1l) - 45)} + -- z2l {down} .. tension (1 + .5 slant) .. z3l{right} @@ -501,22 +524,22 @@ fet_beginchar("Trill (`tr')","trill","trill") set_char_box(.85 staff_space# , .85 staff_space#, 0,ascender#); - penpos11(1/4 r_fatness, -20); + penpos11(1/4 r_fatness, -4); z11r = z9r; - z13 = (x9 + 1.9 r_fatness, y11 - stafflinethickness ); - penpos13(0.45 r_fatness, 170); + z13l = (x9l + r_width, y11 - stafflinethickness ); + penpos13(r_flare, 180); z15 = z13r - (bulb_size * r_fatness,0); z14 = 0.5 [z13l, z15] - (0,bulb_size* r_fatness); z16 = 0.5 [z13l, z15] + (0,bulb_size* r_fatness); - fill z11r{dir 70} .. tension 0.94 .. z13r{down} -- z15{down} - .. tension 0.97 .. z13l{up} - .. z11l{dir 250} -- cycle; + fill z11r{up} .. tension 0.94 .. z13r{down} -- z15{down} + .. tension 1.0 .. z13l{up} + .. z11l{down} -- cycle; - fill z15{up} .. tension 1.1 .. z13l{down} .. z14 .. cycle; + fill z15{up} .. tension 1.06 .. z13l{down} .. z14 .. cycle; @@ -570,17 +593,7 @@ def draw_toe = set_char_box(wd#, wd#, 0, ht#); - - pickup pencircle scaled thickness; - lft x1 = -b; - bot y1 = 0; - x2 =0; - top y2 = h; - z3 = z1 xscaled -1; - - - draw z1 -- z2 -- z3; - + draw_vee (wd, ht, thickness); enddef; fet_beginchar("left toe", "upedaltoe", "upedaltoe") diff --git a/scm/beam.scm b/scm/beam.scm index 4ab5e2eb4b..6698e1fd62 100644 --- a/scm/beam.scm +++ b/scm/beam.scm @@ -6,10 +6,6 @@ ;;;; (c) 2000--2001 Jan Nieuwenhuizen ;;;; -(define (default-beam-space-function multiplicity) - (if (<= multiplicity 3) 0.816 0.844) - ) - ;; ;; width in staff space. ;; @@ -17,117 +13,26 @@ (cond ((eq? type 1) 1.98) ((eq? type 1) 1.65) ;; FIXME: check what this should be and why - (else 1.32) - )) - - -;; This is a mess : global namespace pollution. We should wait -;; till guile has proper toplevel environment support. + (else 1.32))) - -;; Beams should be prevented to conflict with the stafflines, -;; especially at small slopes -;; ---------------------------------------------------------- -;; ######## -;; ######## -;; ######## -;; --------------########------------------------------------ -;; ######## +;; There are several ways to calculate the direction of a beam ;; -;; hang straddle sit inter hang - -;; inter seems to be a modern quirk, we don't use that - -;; two popular veritcal beam quantings -;; see params.ly: #'beam-vertical-quants - - -(define (default-beam-pos-quants beam multiplicity dy staff-line) - (let* ((beam-straddle 0) - (thick (ly-get-grob-property beam 'thickness)) - (beam-sit (/ (- thick staff-line) 2)) - (beam-hang (- 1 (/ (- thick staff-line) 2))) - (quants (list beam-hang)) - ) - - (if (or (<= multiplicity 1) (>= (abs dy) (/ staff-line 2))) - (set! quants (cons beam-sit quants))) - (if (or (<= multiplicity 2) (>= (abs dy) (/ staff-line 2))) - (set! quants (cons beam-straddle quants))) - ;; period: 1 (staff-space) - (append quants (list (+ 1 (car quants)))))) - -(define (default-left-beam-pos-quants beam multiplicity dir dy staff-line) - (default-beam-pos-quants beam multiplicity 1 staff-line)) +;; * majority: number count of up or down notes +;; * mean : mean centre distance of all notes +;; * median : mean centre distance weighted per note ;; -(define (foo beam multiplicity dir dy staff-line) - (let* ((beam-straddle 0) - (thick (ly-get-grob-property beam 'thickness)) - (beam-sit (/ (- thick staff-line) 2)) - (beam-hang (- 1 (/ (- thick staff-line) 2))) - (quants '()) - ) - - (if (or (<= multiplicity 1) - (and (not (equal? dir 1)) - (not (< dy 0)))) - (set! quants (cons beam-sit quants))) - (if (or (<= multiplicity 1) - (and (not (equal? dir -1)) - (not (> dy 0)))) - (set! quants (cons beam-hang quants))) - (if (or (<= multiplicity 2) (>= (abs dy) (/ staff-line 2))) - (set! quants (cons beam-straddle quants))) - ;; period: 1 (staff-space) - (append quants (list (+ 1 (car quants)))))) - -(define (default-right-beam-pos-quants beam multiplicity dir dy staff-line) - (default-beam-pos-quants beam multiplicity 1 staff-line)) +;; [Ross] states that the majority of the notes dictates the +;; direction (and not the mean of "center distance") ;; -(define (foo beam multiplicity dir dy staff-line) - (let* ((beam-straddle 0) - (thick (ly-get-grob-property beam 'thickness)) - (beam-sit (/ (- thick staff-line) 2)) - (beam-hang (- 1 (/ (- thick staff-line) 2))) - (quants '()) - ) - - - (if (or (<= multiplicity 1) - (and (not (equal? dir 1)) - (not (> dy 0)))) - (set! quants (cons beam-sit quants))) - (if (or (<= multiplicity 1) - (and (not (equal? dir -1)) - (not (< dy 0)))) - (set! quants (cons beam-hang quants))) - (if (or (<= multiplicity 2) (>= (abs dy) (/ staff-line 2))) - (set! quants (cons beam-straddle quants))) - ;; period: 1 (staff-space) - (append quants (list (+ 1 (car quants)))))) - -(define (beam-traditional-pos-quants beam multiplicity dy staff-line) - (let* ((beam-straddle 0) - (thick (ly-get-grob-property beam 'thickness)) - (beam-sit (/ (- thick staff-line) 2)) - (beam-hang (- 1 (/ (- thick staff-line) 2))) - (quants '()) - ) - (if (>= dy (/ staff-line -2)) - (set! quants (cons beam-hang quants))) - (if (and (<= multiplicity 1) (<= dy (/ staff-line 2))) - (set! quants (cons beam-sit quants))) - (if (or (<= multiplicity 2) (>= (abs dy) (/ staff-line 2))) - (set! quants (cons beam-straddle quants))) - ;; period: 1 (staff-space) - (append quants (list (+ 1 (car quants)))))) +;; But is that because it really looks better, or because he wants +;; to provide some real simple hands-on rules? +;; +;; We have our doubts, so we simply provide all sensible alternatives. -;; There are several ways to calculate the direction of a beam ;; -;; * majority: number count of up or down notes -;; * mean : mean centre distance of all notes -;; * median : mean centre distance weighted per note +; +; DOCME: what goes into this func, what comes out. (define (dir-compare up down) (sign (- up down))) @@ -136,7 +41,14 @@ (define (beam-dir-majority count total) (dir-compare (car count) (cdr count))) -(beam-dir-majority '(0 . 0) '(0 . 0)) +(define (beam-dir-majority-median count total) + "First try majority. If that doesn't work, try median." + (let ((maj (dir-compare (car count) (cdr count)))) + (if (not (= maj 0)) + maj + (beam-dir-median count total)) + )) + (define (beam-dir-mean count total) (dir-compare (car total) (cdr total))) @@ -147,21 +59,3 @@ (dir-compare (/ (car total) (car count)) (/ (cdr total) (cdr count))) (dir-compare (car count) (cdr count)))) - - -;; [Ross] states that the majority of the notes dictates the -;; direction (and not the mean of "center distance") -;; -;; But is that because it really looks better, or because he wants -;; to provide some real simple hands-on rules? -;; -;; We have our doubts, so we simply provide all sensible alternatives. - -;; array index multiplicity, last if index>size -;; beamed stems - - -;; TODO -;; - take #forced stems into account (now done in C++)? -;; - take staff-position of chord or beam into account - diff --git a/scm/grob-description.scm b/scm/grob-description.scm index d6e3d431a2..997cbb755f 100644 --- a/scm/grob-description.scm +++ b/scm/grob-description.scm @@ -5,10 +5,10 @@ ;;;; (c) 1998--20.301 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen - ; distances are given in stafflinethickness (thicknesses) and - ; staffspace (distances) +;;;; distances are given in stafflinethickness (thicknesses) and +;;;; staffspace (distances) -;;; WARNING: the meta field should be the last one. +;;;; WARNING: the meta field should be the last one. ;; TODO: junk the meta field in favor of something more compact? (define all-grob-descriptions @@ -103,29 +103,26 @@ (position-callbacks . (,Beam::least_squares ,Beam::check_concave ,Beam::slope_damping - ,Beam::new_quanting + ,Beam::quanting )) (thickness . 0.48) ; in staff-space (before-line-breaking-callback . ,Beam::before_line_breaking) (after-line-breaking-callback . (,Beam::after_line_breaking ,Beam::end_after_line_breaking)) + (quant-score-functions . (,Beam::score_forbidden_quants + ,Beam::score_slopes_dy + ,Beam::score_stem_lengths + )) (neutral-direction . -1) - (dir-function . ,beam-dir-majority) - (left-position-quant-function . ,default-left-beam-pos-quants) - (right-position-quant-function . ,default-right-beam-pos-quants) + (dir-function . ,beam-dir-majority-median) (beamed-stem-shorten . (1.0 0.5)) (outer-stem-length-limit . 0.2) (slope-limit . 0.2) (flag-width-function . ,default-beam-flag-width-function) - (space-function . ,default-beam-space-function) (damping . 1) (auto-knee-gap . 7) (font-name . "cmr10") - (quant-score-functions . (,Beam::score_forbidden_quants - ,Beam::score_slopes_dy - ,Beam::score_stem_lengths - )) (meta . ,(grob-description beam-interface)) )) @@ -572,10 +569,14 @@ (if-text-padding . 1.0) (width-correct . 0) (outer . #t) - (angle-left . #f) - (angle-right . #f) + (direction . -1) + (edge-width . (0.5 . 0.5)) + (edge-height . (1.0 . 1.0)) + (shorten-pair . (0.0 . 0.0)) + (left-widen . #f) + (right-widen . #f) (text-start . #f) - (meta . ,(grob-description text-spanner-interface piano-pedal-interface font-interface)) + (meta . ,(grob-description piano-pedal-interface)) )) (RepeatSlash @@ -723,7 +724,6 @@ (molecule-callback . ,Text_item::brew_molecule) (direction . 1) (X-offset-callbacks . (,Side_position_interface::aligned_on_self)) - (Y-offset-callbacks . (,Side_position_interface::aligned_side)) (no-spacing-rods . #t) (padding . 0.0) ;; padding relative to SostenutoPedalLineSpanner (pedal-type . mixed) @@ -773,8 +773,7 @@ (X-extent-callback . #f) (beam-width . 2.0) ; staff-space - (beam-thickness . 0.42) ; staff-space - (beam-space-function . ,default-beam-space-function) + (beam-thickness . 0.48) ; staff-space (meta . ,(grob-description stem-tremolo-interface )) )) @@ -798,7 +797,6 @@ (padding . 0.0) ;; padding relative to SustainPedalLineSpanner (pedal-type . text) (X-offset-callbacks . (,Side_position_interface::aligned_on_self)) - (Y-offset-callbacks . (,Side_position_interface::aligned_side )) (meta . ,(grob-description piano-pedal-interface side-position-interface font-interface)) )) @@ -929,7 +927,6 @@ (pedal-type . text) (padding . 0.0) ;; padding relative to UnaCordaPedalLineSpanner (X-offset-callbacks . (,Side_position_interface::aligned_on_self)) - (Y-offset-callbacks . (,Side_position_interface::aligned_side )) (meta . ,(grob-description text-interface font-interface)) )) -- 2.39.5