From 060faf111fb62d2d82d7710a6ba40c9051d9e64d Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Tue, 22 Feb 2000 00:59:54 +0100 Subject: [PATCH] patch::: 1.3.25.jcn1 1.3.25.jcn1 =========== * Added ascii slur and volta. There seems to be a Lily bug in volta placement. * Bugfix: print identification string 'GNU LilyPond ...' onto stderr * Bugfix: default font now user settable * as2text: handle plain ascii font, read from stdin, you can now do: echo "\time 4/4; g''1 g2 g4. g8" | lilypond -f as -i init-as.fly - | as2text --- CHANGES | 13 ++ TODO | 4 + VERSION | 2 +- input/test/as2.ly | 5 +- input/test/r-as.ly | 18 +++ input/test/twinkle-as5.ly | 67 +++++++++ lily/all-font-metrics.cc | 14 +- lily/main.cc | 2 +- ly/init-as.fly | 1 + ly/init-as.ly | 1 + mf/as-braces5.af | 126 +++++++++++++++++ mf/as-dummy.af | 279 ++++++++++++++++++++++++++++++++++++++ mf/as5.af | 2 +- mf/as9.af | 2 +- scm/lily.scm | 68 ++++++++-- scripts/as2text.scm | 176 +++++++++++++++--------- 16 files changed, 689 insertions(+), 91 deletions(-) create mode 100644 input/test/r-as.ly create mode 100644 input/test/twinkle-as5.ly create mode 100644 mf/as-braces5.af create mode 100644 mf/as-dummy.af diff --git a/CHANGES b/CHANGES index c7be422f5f..a77d84589e 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,16 @@ +1.3.25.jcn1 +=========== + +* Added ascii slur and volta. There seems to be a Lily bug in volta placement. + +* Bugfix: print identification string 'GNU LilyPond ...' onto stderr + +* Bugfix: default font now user settable + +* as2text: handle plain ascii font, read from stdin, you can now do: + + echo "\time 4/4; g''1 g2 g4. g8" | lilypond -f as -i init-as.fly - | as2text + 1.3.24.jcn4 =========== diff --git a/TODO b/TODO index 382e3098b9..4833512d78 100644 --- a/TODO +++ b/TODO @@ -10,6 +10,10 @@ Grep -i for TODO, FIXME and ugh/ugr/urg. .* TODO . * use hash tabs iso. alist_ for elt property? +. * control paper-size/-file from commandline ? + lilypond --paper=paper16 foo.ly + lilypond --paper=paper20 foo.ly + lilypond --paper=paper-as9 foo.ly . * fix tremolos. . * change ) c4 to c4-) . * internationalize GUILE msgs. diff --git a/VERSION b/VERSION index c5062d4c65..4faea06aaa 100644 --- a/VERSION +++ b/VERSION @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 PATCH_LEVEL=25 -MY_PATCH_LEVEL= +MY_PATCH_LEVEL=jcn1 # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/input/test/as2.ly b/input/test/as2.ly index 1356548672..02d781dd92 100644 --- a/input/test/as2.ly +++ b/input/test/as2.ly @@ -4,12 +4,11 @@ \score { \notes\relative c'{ \time 4/4; - c8 e g b - d d d d + c8( e g )b + d( d d )d \bar "|."; } \paper { - \paper_as_nine linewidth=65.0\char; \translator { \StaffContext barSize = #9 } %\translator { \VoiceContext beamHeight = #0 } diff --git a/input/test/r-as.ly b/input/test/r-as.ly new file mode 100644 index 0000000000..489fc8e238 --- /dev/null +++ b/input/test/r-as.ly @@ -0,0 +1,18 @@ +\score{ + < + \context Staff \notes\relative c'{ + c d e f + \repeat "volta" 2 { g a b c } + \alternative { { c b a g } { f e d c } } + } + \context Lyrics \lyrics { + De eer- ste < { maat } { moet } > + \repeat fold 2 { } + \alternative { + { en dan twee keer } + { een koe- plet _ } + } + en dan nog dit er ach- ter aan + } + > +} diff --git a/input/test/twinkle-as5.ly b/input/test/twinkle-as5.ly new file mode 100644 index 0000000000..b4321d3762 --- /dev/null +++ b/input/test/twinkle-as5.ly @@ -0,0 +1,67 @@ +\header{ +filename = "twinkle.ly"; +title = "Twinkle Twinkle Little Star"; +composer = "Traditional"; +enteredby = "hwn and jcn"; +copyright = "public domain"; +} + +\version "1.3.25"; + +\include "paper-as5.ly" + +melody = \notes \relative c'' { + \time 2/4; + c4 c | g' g | a a | g g | +%{ + f f | e e | d d8.( e16 | )c2 | + + g'4 g | f f | e e | d d | + g g | f f | e( e8. f16 | e4 )d | + + c c | g' g | a a | g g | + f f | e e | d d8.( e16 | )c2 | +%} +} + +accompany = \notes \relative c { + \clef "bass"; + \time 2/4; + c4 c' | e c | f c | e c | +%{ + d b | c a | f g | c,2 | + + e'4 g, | d' g, | c g | b g | + e' g, | d' g, | c c8.( d16 | c4 )b | + + c, c' | e c | f c | e c | + d b | c a | f g | c,2 +%} +} + + +text = \lyrics{ + Twin -- kle, twin -- kle, lit -- tle star, " " +%{ + How I won -- der what you " " are. + Up a -- bove the world so high, " " + Like a dia -- mond in the " " sky. " " + Twin -- kle, twin -- kle, lit -- tle star, " " + How I won -- der what you " " are! +%} +} + +\score{ + \context GrandStaff < + \addlyrics + \context Staff=upper \melody + \context Lyrics=between \text + \context Staff=lower \accompany + > + \paper{ + \translator { \GrandStaffContext \accepts "Lyrics"; } + indent=4.0\char; + linewidth=78.0\char; + } +} + diff --git a/lily/all-font-metrics.cc b/lily/all-font-metrics.cc index ef266181ad..89936e5f0f 100644 --- a/lily/all-font-metrics.cc +++ b/lily/all-font-metrics.cc @@ -107,10 +107,20 @@ All_font_metrics::find_font (String name) warning (_f ("Can't find font: `%s'", name.ch_C ())); warning (_ ("Loading default font")); - f = find_tfm (default_font_sz_); + String def_name = default_font_sz_; + SCM l = ly_eval_str ("(style-to-cmr \"default\")"); + if (l != SCM_BOOL_F) + def_name = ly_scm2string (gh_cdr (l)); + + f = find_tfm (def_name); if (f) return f; - error (_f ("Can't find default font: `%s'", default_font_sz_)); + + f= find_afm (def_name); + if (f) + return f; + + error (_f ("Can't find default font: `%s'", def_name.ch_C ())); error (_f ("(search path: `%s'", search_path_.str ())); error (_ ("Giving up")); diff --git a/lily/main.cc b/lily/main.cc index 41d2e36e2a..913810a2d4 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -130,7 +130,7 @@ _( void identify () { - cout << gnu_lilypond_version_str () << endl; + cerr << gnu_lilypond_version_str () << endl; } void diff --git a/ly/init-as.fly b/ly/init-as.fly index 6081a73ccb..33e720073b 100644 --- a/ly/init-as.fly +++ b/ly/init-as.fly @@ -8,6 +8,7 @@ #(define cmr-alist '(("bold" . "cmbx") ("brace" . "as-braces") + ("default" . "as-dummy") ("dynamic" . "cmr") ("feta" . "feta") ("feta-1" . "feta") diff --git a/ly/init-as.ly b/ly/init-as.ly index 372a0c1683..c07c5d9cbb 100644 --- a/ly/init-as.ly +++ b/ly/init-as.ly @@ -9,6 +9,7 @@ '(("bold" . "cmbx") ("brace" . "as-braces") ("dynamic" . "cmr") + ("default" . "as-dummy") ("feta" . "feta") ("feta-1" . "feta") ("feta-2" . "feta") diff --git a/mf/as-braces5.af b/mf/as-braces5.af new file mode 100644 index 0000000000..89c33a1f98 --- /dev/null +++ b/mf/as-braces5.af @@ -0,0 +1,126 @@ + Comment as-braces5.af -- AsciiFont: braces for height 5 + + Comment part of LilyPond's [ascii music font] + + Comment (c) 2000 Jan Nieuwenhuizen + + Comment Lines that start with TAB or FF make up the .afm + Comment TABs are comments + Comment `Comment' is the afm comment prefix + Comment which makes `TAB Comment' an .afm comment + + StartFontMetrics 2.0 + FontName as-braces 5 + FontFamily as-braces + StartCharMetrics 10 + + Comment BBox: (llx lly urx ury) * 1000 + C 0; WX 1; N Brace-9; B 0 -4500 1000 4500; +/ +| +| +| +| +| +| +| +| +| +\ + C 1; WX 1; N Brace-10; B 0 -5000 1000 5000; +/ +| +| +| +| +| +| +| +| +| +| +\ + C 2; WX 1; N Brace-11; B 0 -5500 1000 5500; +/ +| +| +| +| +| +| +| +| +| +| +| +\ + C 3; WX 1; N Brace-12; B 0 -6000 1000 6000; +/ +| +| +| +| +| +| +| +| +| +| +| +| +\ + C 4; WX 1; N Brace-13; B 0 -6500 1000 6500; +/ +| +| +| +| +| +| +| +| +| +| +| +| +| +\ + C 5; WX 1; N Brace-14; B -1000 -3000 1000 14000; +X5 + C 6; WX 1; N Brace-15; B -1000 -3000 1000 14000; +X6 + C 7; WX 1; N Brace-16; B -1000 -3000 1000 14000; +/ +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +\ + C 8; WX 1; N Brace-17; B -1000 -3000 1000 14000; +X8 + C 9; WX 1; N Brace-18; B -1000 -3000 1000 14000; +X9 + EndCharMetrics + EndFontMetrics %d + diff --git a/mf/as-dummy.af b/mf/as-dummy.af new file mode 100644 index 0000000000..e738839a37 --- /dev/null +++ b/mf/as-dummy.af @@ -0,0 +1,279 @@ + Comment as-dummy.af -- AsciiFont: sane metrics for LilyPond + + Comment part of LilyPond's [ascii music font] + + Comment (c) 2000 Jan Nieuwenhuizen + + Comment Lines that start with TAB or FF make up the .afm + Comment TABs are comments + Comment `Comment' is the afm comment prefix + Comment which makes `TAB Comment' an .afm comment + + Comment Urg: this should be generated + Comment It only serves as a generic catch-all metric file + Comment for LilyPond + + StartFontMetrics 2.0 + FontName as-dummy + FontFamily as-dummy + StartCharMetrics 256 + + Comment BBox: (llx lly urx ury) * 1000 + C 0; WX 1; N Char-0; B 0 0 1000 1000; + C 1; WX 1; N Char-1; B 0 0 1000 1000; + C 2; WX 1; N Char-2; B 0 0 1000 1000; + C 3; WX 1; N Char-3; B 0 0 1000 1000; + C 4; WX 1; N Char-4; B 0 0 1000 1000; + C 5; WX 1; N Char-5; B 0 0 1000 1000; + C 6; WX 1; N Char-6; B 0 0 1000 1000; + C 7; WX 1; N Char-7; B 0 0 1000 1000; + C 8; WX 1; N Char-8; B 0 0 1000 1000; + C 9; WX 1; N Char-9; B 0 0 1000 1000; + C 10; WX 1; N Char-10; B 0 0 1000 1000; + C 11; WX 1; N Char-11; B 0 0 1000 1000; + C 12; WX 1; N Char-12; B 0 0 1000 1000; + C 13; WX 1; N Char-13; B 0 0 1000 1000; + C 14; WX 1; N Char-14; B 0 0 1000 1000; + C 15; WX 1; N Char-15; B 0 0 1000 1000; + C 16; WX 1; N Char-16; B 0 0 1000 1000; + C 17; WX 1; N Char-17; B 0 0 1000 1000; + C 18; WX 1; N Char-18; B 0 0 1000 1000; + C 19; WX 1; N Char-19; B 0 0 1000 1000; + C 20; WX 1; N Char-20; B 0 0 1000 1000; + C 21; WX 1; N Char-21; B 0 0 1000 1000; + C 22; WX 1; N Char-22; B 0 0 1000 1000; + C 23; WX 1; N Char-23; B 0 0 1000 1000; + C 24; WX 1; N Char-24; B 0 0 1000 1000; + C 25; WX 1; N Char-25; B 0 0 1000 1000; + C 26; WX 1; N Char-26; B 0 0 1000 1000; + C 27; WX 1; N Char-27; B 0 0 1000 1000; + C 28; WX 1; N Char-28; B 0 0 1000 1000; + C 29; WX 1; N Char-29; B 0 0 1000 1000; + C 30; WX 1; N Char-30; B 0 0 1000 1000; + C 31; WX 1; N Char-31; B 0 0 1000 1000; + C 32; WX 1; N Char-32; B 0 0 1000 1000; + C 33; WX 1; N Char-33; B 0 0 1000 1000; + C 34; WX 1; N Char-34; B 0 0 1000 1000; + C 35; WX 1; N Char-35; B 0 0 1000 1000; + C 36; WX 1; N Char-36; B 0 0 1000 1000; + C 37; WX 1; N Char-37; B 0 0 1000 1000; + C 38; WX 1; N Char-38; B 0 0 1000 1000; + C 39; WX 1; N Char-39; B 0 0 1000 1000; + C 40; WX 1; N Char-40; B 0 0 1000 1000; + C 41; WX 1; N Char-41; B 0 0 1000 1000; + C 42; WX 1; N Char-42; B 0 0 1000 1000; + C 43; WX 1; N Char-43; B 0 0 1000 1000; + C 44; WX 1; N Char-44; B 0 0 1000 1000; + C 45; WX 1; N Char-45; B 0 0 1000 1000; + C 46; WX 1; N Char-46; B 0 0 1000 1000; + C 47; WX 1; N Char-47; B 0 0 1000 1000; + C 48; WX 1; N Char-48; B 0 0 1000 1000; + C 49; WX 1; N Char-49; B 0 0 1000 1000; + C 50; WX 1; N Char-50; B 0 0 1000 1000; + C 51; WX 1; N Char-51; B 0 0 1000 1000; + C 52; WX 1; N Char-52; B 0 0 1000 1000; + C 53; WX 1; N Char-53; B 0 0 1000 1000; + C 54; WX 1; N Char-54; B 0 0 1000 1000; + C 55; WX 1; N Char-55; B 0 0 1000 1000; + C 56; WX 1; N Char-56; B 0 0 1000 1000; + C 57; WX 1; N Char-57; B 0 0 1000 1000; + C 58; WX 1; N Char-58; B 0 0 1000 1000; + C 59; WX 1; N Char-59; B 0 0 1000 1000; + C 60; WX 1; N Char-60; B 0 0 1000 1000; + C 61; WX 1; N Char-61; B 0 0 1000 1000; + C 62; WX 1; N Char-62; B 0 0 1000 1000; + C 63; WX 1; N Char-63; B 0 0 1000 1000; + C 64; WX 1; N Char-64; B 0 0 1000 1000; + C 65; WX 1; N Char-65; B 0 0 1000 1000; + C 66; WX 1; N Char-66; B 0 0 1000 1000; + C 67; WX 1; N Char-67; B 0 0 1000 1000; + C 68; WX 1; N Char-68; B 0 0 1000 1000; + C 69; WX 1; N Char-69; B 0 0 1000 1000; + C 70; WX 1; N Char-70; B 0 0 1000 1000; + C 71; WX 1; N Char-71; B 0 0 1000 1000; + C 72; WX 1; N Char-72; B 0 0 1000 1000; + C 73; WX 1; N Char-73; B 0 0 1000 1000; + C 74; WX 1; N Char-74; B 0 0 1000 1000; + C 75; WX 1; N Char-75; B 0 0 1000 1000; + C 76; WX 1; N Char-76; B 0 0 1000 1000; + C 77; WX 1; N Char-77; B 0 0 1000 1000; + C 78; WX 1; N Char-78; B 0 0 1000 1000; + C 79; WX 1; N Char-79; B 0 0 1000 1000; + C 80; WX 1; N Char-80; B 0 0 1000 1000; + C 81; WX 1; N Char-81; B 0 0 1000 1000; + C 82; WX 1; N Char-82; B 0 0 1000 1000; + C 83; WX 1; N Char-83; B 0 0 1000 1000; + C 84; WX 1; N Char-84; B 0 0 1000 1000; + C 85; WX 1; N Char-85; B 0 0 1000 1000; + C 86; WX 1; N Char-86; B 0 0 1000 1000; + C 87; WX 1; N Char-87; B 0 0 1000 1000; + C 88; WX 1; N Char-88; B 0 0 1000 1000; + C 89; WX 1; N Char-89; B 0 0 1000 1000; + C 90; WX 1; N Char-90; B 0 0 1000 1000; + C 91; WX 1; N Char-91; B 0 0 1000 1000; + C 92; WX 1; N Char-92; B 0 0 1000 1000; + C 93; WX 1; N Char-93; B 0 0 1000 1000; + C 94; WX 1; N Char-94; B 0 0 1000 1000; + C 95; WX 1; N Char-95; B 0 0 1000 1000; + C 96; WX 1; N Char-96; B 0 0 1000 1000; + C 97; WX 1; N Char-97; B 0 0 1000 1000; + C 98; WX 1; N Char-98; B 0 0 1000 1000; + C 99; WX 1; N Char-99; B 0 0 1000 1000; + C 100; WX 1; N Char-100; B 0 0 1000 1000; + C 101; WX 1; N Char-101; B 0 0 1000 1000; + C 102; WX 1; N Char-102; B 0 0 1000 1000; + C 103; WX 1; N Char-103; B 0 0 1000 1000; + C 104; WX 1; N Char-104; B 0 0 1000 1000; + C 105; WX 1; N Char-105; B 0 0 1000 1000; + C 106; WX 1; N Char-106; B 0 0 1000 1000; + C 107; WX 1; N Char-107; B 0 0 1000 1000; + C 108; WX 1; N Char-108; B 0 0 1000 1000; + C 109; WX 1; N Char-109; B 0 0 1000 1000; + C 110; WX 1; N Char-110; B 0 0 1000 1000; + C 111; WX 1; N Char-111; B 0 0 1000 1000; + C 112; WX 1; N Char-112; B 0 0 1000 1000; + C 113; WX 1; N Char-113; B 0 0 1000 1000; + C 114; WX 1; N Char-114; B 0 0 1000 1000; + C 115; WX 1; N Char-115; B 0 0 1000 1000; + C 116; WX 1; N Char-116; B 0 0 1000 1000; + C 117; WX 1; N Char-117; B 0 0 1000 1000; + C 118; WX 1; N Char-118; B 0 0 1000 1000; + C 119; WX 1; N Char-119; B 0 0 1000 1000; + C 120; WX 1; N Char-120; B 0 0 1000 1000; + C 121; WX 1; N Char-121; B 0 0 1000 1000; + C 122; WX 1; N Char-122; B 0 0 1000 1000; + C 123; WX 1; N Char-123; B 0 0 1000 1000; + C 124; WX 1; N Char-124; B 0 0 1000 1000; + C 125; WX 1; N Char-125; B 0 0 1000 1000; + C 126; WX 1; N Char-126; B 0 0 1000 1000; + C 127; WX 1; N Char-127; B 0 0 1000 1000; + C 128; WX 1; N Char-128; B 0 0 1000 1000; + C 129; WX 1; N Char-129; B 0 0 1000 1000; + C 130; WX 1; N Char-130; B 0 0 1000 1000; + C 131; WX 1; N Char-131; B 0 0 1000 1000; + C 132; WX 1; N Char-132; B 0 0 1000 1000; + C 133; WX 1; N Char-133; B 0 0 1000 1000; + C 134; WX 1; N Char-134; B 0 0 1000 1000; + C 135; WX 1; N Char-135; B 0 0 1000 1000; + C 136; WX 1; N Char-136; B 0 0 1000 1000; + C 137; WX 1; N Char-137; B 0 0 1000 1000; + C 138; WX 1; N Char-138; B 0 0 1000 1000; + C 139; WX 1; N Char-139; B 0 0 1000 1000; + C 140; WX 1; N Char-140; B 0 0 1000 1000; + C 141; WX 1; N Char-141; B 0 0 1000 1000; + C 142; WX 1; N Char-142; B 0 0 1000 1000; + C 143; WX 1; N Char-143; B 0 0 1000 1000; + C 144; WX 1; N Char-144; B 0 0 1000 1000; + C 145; WX 1; N Char-145; B 0 0 1000 1000; + C 146; WX 1; N Char-146; B 0 0 1000 1000; + C 147; WX 1; N Char-147; B 0 0 1000 1000; + C 148; WX 1; N Char-148; B 0 0 1000 1000; + C 149; WX 1; N Char-149; B 0 0 1000 1000; + C 150; WX 1; N Char-150; B 0 0 1000 1000; + C 151; WX 1; N Char-151; B 0 0 1000 1000; + C 152; WX 1; N Char-152; B 0 0 1000 1000; + C 153; WX 1; N Char-153; B 0 0 1000 1000; + C 154; WX 1; N Char-154; B 0 0 1000 1000; + C 155; WX 1; N Char-155; B 0 0 1000 1000; + C 156; WX 1; N Char-156; B 0 0 1000 1000; + C 157; WX 1; N Char-157; B 0 0 1000 1000; + C 158; WX 1; N Char-158; B 0 0 1000 1000; + C 159; WX 1; N Char-159; B 0 0 1000 1000; + C 160; WX 1; N Char-160; B 0 0 1000 1000; + C 161; WX 1; N Char-161; B 0 0 1000 1000; + C 162; WX 1; N Char-162; B 0 0 1000 1000; + C 163; WX 1; N Char-163; B 0 0 1000 1000; + C 164; WX 1; N Char-164; B 0 0 1000 1000; + C 165; WX 1; N Char-165; B 0 0 1000 1000; + C 166; WX 1; N Char-166; B 0 0 1000 1000; + C 167; WX 1; N Char-167; B 0 0 1000 1000; + C 168; WX 1; N Char-168; B 0 0 1000 1000; + C 169; WX 1; N Char-169; B 0 0 1000 1000; + C 170; WX 1; N Char-170; B 0 0 1000 1000; + C 171; WX 1; N Char-171; B 0 0 1000 1000; + C 172; WX 1; N Char-172; B 0 0 1000 1000; + C 173; WX 1; N Char-173; B 0 0 1000 1000; + C 174; WX 1; N Char-174; B 0 0 1000 1000; + C 175; WX 1; N Char-175; B 0 0 1000 1000; + C 176; WX 1; N Char-176; B 0 0 1000 1000; + C 177; WX 1; N Char-177; B 0 0 1000 1000; + C 178; WX 1; N Char-178; B 0 0 1000 1000; + C 179; WX 1; N Char-179; B 0 0 1000 1000; + C 180; WX 1; N Char-180; B 0 0 1000 1000; + C 181; WX 1; N Char-181; B 0 0 1000 1000; + C 182; WX 1; N Char-182; B 0 0 1000 1000; + C 183; WX 1; N Char-183; B 0 0 1000 1000; + C 184; WX 1; N Char-184; B 0 0 1000 1000; + C 185; WX 1; N Char-185; B 0 0 1000 1000; + C 186; WX 1; N Char-186; B 0 0 1000 1000; + C 187; WX 1; N Char-187; B 0 0 1000 1000; + C 188; WX 1; N Char-188; B 0 0 1000 1000; + C 189; WX 1; N Char-189; B 0 0 1000 1000; + C 190; WX 1; N Char-190; B 0 0 1000 1000; + C 191; WX 1; N Char-191; B 0 0 1000 1000; + C 192; WX 1; N Char-192; B 0 0 1000 1000; + C 193; WX 1; N Char-193; B 0 0 1000 1000; + C 194; WX 1; N Char-194; B 0 0 1000 1000; + C 195; WX 1; N Char-195; B 0 0 1000 1000; + C 196; WX 1; N Char-196; B 0 0 1000 1000; + C 197; WX 1; N Char-197; B 0 0 1000 1000; + C 198; WX 1; N Char-198; B 0 0 1000 1000; + C 199; WX 1; N Char-199; B 0 0 1000 1000; + C 200; WX 1; N Char-200; B 0 0 1000 1000; + C 201; WX 1; N Char-201; B 0 0 1000 1000; + C 202; WX 1; N Char-202; B 0 0 1000 1000; + C 203; WX 1; N Char-203; B 0 0 1000 1000; + C 204; WX 1; N Char-204; B 0 0 1000 1000; + C 205; WX 1; N Char-205; B 0 0 1000 1000; + C 206; WX 1; N Char-206; B 0 0 1000 1000; + C 207; WX 1; N Char-207; B 0 0 1000 1000; + C 208; WX 1; N Char-208; B 0 0 1000 1000; + C 209; WX 1; N Char-209; B 0 0 1000 1000; + C 210; WX 1; N Char-210; B 0 0 1000 1000; + C 211; WX 1; N Char-211; B 0 0 1000 1000; + C 212; WX 1; N Char-212; B 0 0 1000 1000; + C 213; WX 1; N Char-213; B 0 0 1000 1000; + C 214; WX 1; N Char-214; B 0 0 1000 1000; + C 215; WX 1; N Char-215; B 0 0 1000 1000; + C 216; WX 1; N Char-216; B 0 0 1000 1000; + C 217; WX 1; N Char-217; B 0 0 1000 1000; + C 218; WX 1; N Char-218; B 0 0 1000 1000; + C 219; WX 1; N Char-219; B 0 0 1000 1000; + C 220; WX 1; N Char-220; B 0 0 1000 1000; + C 221; WX 1; N Char-221; B 0 0 1000 1000; + C 222; WX 1; N Char-222; B 0 0 1000 1000; + C 223; WX 1; N Char-223; B 0 0 1000 1000; + C 224; WX 1; N Char-224; B 0 0 1000 1000; + C 225; WX 1; N Char-225; B 0 0 1000 1000; + C 226; WX 1; N Char-226; B 0 0 1000 1000; + C 227; WX 1; N Char-227; B 0 0 1000 1000; + C 228; WX 1; N Char-228; B 0 0 1000 1000; + C 229; WX 1; N Char-229; B 0 0 1000 1000; + C 230; WX 1; N Char-230; B 0 0 1000 1000; + C 231; WX 1; N Char-231; B 0 0 1000 1000; + C 232; WX 1; N Char-232; B 0 0 1000 1000; + C 233; WX 1; N Char-233; B 0 0 1000 1000; + C 234; WX 1; N Char-234; B 0 0 1000 1000; + C 235; WX 1; N Char-235; B 0 0 1000 1000; + C 236; WX 1; N Char-236; B 0 0 1000 1000; + C 237; WX 1; N Char-237; B 0 0 1000 1000; + C 238; WX 1; N Char-238; B 0 0 1000 1000; + C 239; WX 1; N Char-239; B 0 0 1000 1000; + C 240; WX 1; N Char-240; B 0 0 1000 1000; + C 241; WX 1; N Char-241; B 0 0 1000 1000; + C 242; WX 1; N Char-242; B 0 0 1000 1000; + C 243; WX 1; N Char-243; B 0 0 1000 1000; + C 244; WX 1; N Char-244; B 0 0 1000 1000; + C 245; WX 1; N Char-245; B 0 0 1000 1000; + C 246; WX 1; N Char-246; B 0 0 1000 1000; + C 247; WX 1; N Char-247; B 0 0 1000 1000; + C 248; WX 1; N Char-248; B 0 0 1000 1000; + C 249; WX 1; N Char-249; B 0 0 1000 1000; + C 250; WX 1; N Char-250; B 0 0 1000 1000; + C 251; WX 1; N Char-251; B 0 0 1000 1000; + C 252; WX 1; N Char-252; B 0 0 1000 1000; + C 253; WX 1; N Char-253; B 0 0 1000 1000; + C 254; WX 1; N Char-254; B 0 0 1000 1000; + C 255; WX 1; N Char-255; B 0 0 1000 1000; + EndCharMetrics + EndFontMetrics %d diff --git a/mf/as5.af b/mf/as5.af index 60b091b38d..5b2c13810c 100644 --- a/mf/as5.af +++ b/mf/as5.af @@ -55,7 +55,7 @@ x O C 34; WX 6; N noteheads-1; B -1000 -500 0 500; o - C 35; WX 6; N noteheads-2; B -1000 -500 0 500; + C 35; WX 6; N noteheads-2; B -1000 0 0 1000; * C 36; WX 9; N noteheads-0diamond; B 0 -2750 9900 2750; V diff --git a/mf/as9.af b/mf/as9.af index 187f4709b8..c2597e9935 100644 --- a/mf/as9.af +++ b/mf/as9.af @@ -68,7 +68,7 @@ x ) C 23; WX 2; N dots-dot; B -500 -500 500 500; . - C 24; WX 1; N dots-repeatcolon; B 0 1000 1000 4000; + C 24; WX 1; N dots-repeatcolon; B 0 -1000 1000 2000; * * diff --git a/scm/lily.scm b/scm/lily.scm index c3a9ac8ea4..74a4f2da4e 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -143,6 +143,7 @@ (define cmr-alist '(("bold" . "cmbx") ("brace" . "feta-braces") + ("default" . "cmr10") ("dynamic" . "feta-din") ("feta" . "feta") ("feta-1" . "feta") @@ -664,6 +665,10 @@ (map (lambda (x) (string-append " " (arg->string x))) args))) ")\n")) +(define (sign x) + (if (= x 0) + 1 + (inexact->exact (/ x (abs x))))) ;;;; AsciiScript as (define (as-scm action-name) @@ -674,6 +679,29 @@ (func "rline-to" width (* width slope)) )) + ; simple flat slurs + (define (bezier-sandwich l thick) + (let ( + (c0 (cadddr l)) + (c1 (cadr l)) + (c3 (caddr l))) + (let* ((x (car c0)) + (dx (- (car c3) x)) + (dy (- (cdr c3) (cdr c0))) + (rc (/ dy dx)) + (c1-dx (- (car c1) x)) + (c1-line-y (+ (cdr c0) (* c1-dx rc))) + (dir (if (< c1-line-y (cdr c1)) 1 -1)) + (y (+ -1 (* dir (max (* dir (cdr c0)) (* dir (cdr c3))))))) + (string-append + (func "rmove-to" x y) + (func "put" (if (< 0 dir) "/" "\\\\")) + (func "rmove-to" 1 (if (< 0 dir) 1 0)) + (func "set-line-char" "_") + (func "h-line" (- dx 1)) + (func "rmove-to" (- dx 1) (if (< 0 dir) -1 0)) + (func "put" (if (< 0 dir) "\\\\" "/")))))) + (define (bracket arch_angle arch_width arch_height width height arch_thick thick) (string-append (func "rmove-to" (+ width 1) (- (/ height -2) 1)) @@ -718,9 +746,16 @@ (define (header-end) (func "header-end")) - (define (lily-def key val) + ;; urg: this is good for half of as2text's execution time + (define (xlily-def key val) (string-append "(define " key " " (arg->string val) ")\n")) + (define (lily-def key val) + (if + (equal? key "mudelapaperlinewidth") + (string-append "(define " key " " (arg->string val) ")\n") + "")) + (define (placebox x y s) (string-append (func "move-to" x y) s)) @@ -744,22 +779,25 @@ (define (text s) (func "text" s)) -; (define (volta h w thick vert_start vert_end) -; (func "draw-volta" h w thick vert_start vert_end)) - (define (volta h w thick vert-start vert-end) + ;; urg + (set! h 1) (string-append - (if #t ;(= 0 vert-start) - "" - (func "v-line" h)) - "" - ;(func "rmove-to" 0 h) - ;(func "h-line" w) - (if #t ;(= 0 vert-end) - "" + (func "set-line-char" "|") + (func "rmove-to" 0 -4) + ;; definition strange-way around + (if (= 0 vert-start) + (func "v-line" h) + "") + (func "rmove-to" 1 h) + (func "set-line-char" "_") + (func "h-line" (- w 1)) + (func "set-line-char" "|") + (if (= 0 vert-end) (string-append - (func "rmove-to" w 0) - (func "v-line" (* -1 h)))))) + (func "rmove-to" (- w 1) (* -1 h)) + (func "v-line" (* -1 h))) + ""))) (cond ((eq? action-name 'all-definitions) `(begin @@ -767,7 +805,7 @@ (define bracket ,bracket) (define char ,char) ;;(define crescendo ,crescendo) - ;(define bezier-sandwich ,bezier-sandwich) + (define bezier-sandwich ,bezier-sandwich) ;;(define dashed-slur ,dashed-slur) ;;(define decrescendo ,decrescendo) (define end-output ,end-output) diff --git a/scripts/as2text.scm b/scripts/as2text.scm index 6385c8d477..ced2dcbb38 100644 --- a/scripts/as2text.scm +++ b/scripts/as2text.scm @@ -14,10 +14,13 @@ (ice-9 string-fun) (ice-9 regex)) - ;;; Script stuff (define program-name "as2text") +(define lily-home "/usr/share/lilypond") +(define cur-output-name "-") +(define cur-output-file '()) + (define subst-version "@TOPLEVEL_VERSION@") (define program-version @@ -33,6 +36,7 @@ (define (show-help) (display "Convert AsciiScript to text. + Usage: as2text [OPTION]... AS-FILE Options: @@ -42,36 +46,46 @@ Options: " (current-error-port))) (define (gulp-file name) - (let ((port (catch 'system-error (lambda () (open-file name "r")) - (lambda args #f)))) - (if port - (let ((content (let loop ((text "")) - (let ((line (read-line port))) - (if (or (eof-object? line) - (not line)) - text - (loop (string-append text line "\n"))))))) - (close port) - content) - (begin - (display - (string-append "warning: no such file: " name "\n") - (current-error-port)) - "")))) - -(define (with-exention name ext) - (if (equal? ext (substring name (max 0 (- (string-length name) - (string-length ext))))) - name + (let ((port (if (equal? name "-") + (current-input-port) + (catch 'system-error (lambda () (open-file name "r")) + (lambda args #f))))) + (if port + (begin + (display (string-append "[" name) (current-error-port)) + (let ((content (let loop ((text "")) + (let ((line (read-line port))) + (if (or (eof-object? line) + (not line)) + text + (loop (string-append text line "\n"))))))) + (close port) + (display "]" (current-error-port)) + content)) + (begin + (display + (string-append "warning: no such file: " name "\n") + (current-error-port)) + "")))) + +(define (with-extention name ext) + (if (or (equal? name "-") + (equal? ext (substring name (max 0 (- (string-length name) + (string-length ext)))))) + name (string-append name ext))) (define (do-file file-name output-name) - (let ((output-file (current-output-port)) - (ascii-script (gulp-file (with-exention file-name ".as")))) + (let ((ascii-script (gulp-file (with-extention file-name ".as")))) + ;; urg + (set! cur-output-name output-name) (eval-string ascii-script))) ;;; Script entry point (define (main args) + (set! lily-home (string-append + (dirname (dirname (car args))) + "/share/lilypond")) (show-version) (let ((options (getopt-long args `((output (single-char #\o) @@ -88,11 +102,11 @@ Options: (if (assq 'version options) (exit 0)) - (let ((output-name (opt 'output-name "-")) - (files (let ((foo (opt '() '()))) - (if (null? foo) - (list "-") - foo)))) + (let ((output-name (opt 'output "-")) + (files (let ((foo (opt '() '()))) + (if (null? foo) + (list "-") + foo)))) (do-file (car files) output-name)))) ;;;; @@ -128,7 +142,7 @@ Options: ;; urg: ;; make-uniform array of characters, ;; or 1-dim array of strings? -;; (set! canvas (make-array " " canvas-height canvas-width))) +;; (set! canvas (make-array " " canvas-height canvas-width)) ;; urg, this kind of naming costs too much indenting (define (split c s r) @@ -141,13 +155,18 @@ Options: ;;; Helper functions (define (af-gulp-file name) - (set! %load-path - (cons (string-append - (getenv 'LILYPONDPREFIX) "/mf") %load-path)) - (let ((path (%search-load-path name))) - (if path - (gulp-file path) - (gulp-file name)))) + ;; urg + (let ((old-load-path %load-path)) + (set! %load-path + (cons (string-append + (or (getenv 'LILYPONDPREFIX) ".") "/mf") + (cons (string-append lily-home "/mf") %load-path))) + (let* ((path (%search-load-path name)) + (text (if path + (gulp-file path) + (gulp-file name)))) + (set! %load-path old-load-path) + text))) (define (char-width c) (let ((bbox (car c))) @@ -198,9 +217,14 @@ Options: (let ((font (assoc name fonts))) (map (lambda (x) (show-char x)) font))) +(define (sign x) + (if (= x 0) + 1 + (inexact->exact (/ x (abs x))))) + (define (generate-default-font) - (let loop ((chars '()) (i 32)) - (if (= 127 i) + (let loop ((chars '()) (i 0)) + (if (= 256 i) chars (loop (cons (list i '(0 0 1000 1000) @@ -209,14 +233,17 @@ Options: (+ i 1))))) (define (get-font name) - (let ((entry (assoc name fonts))) - (if entry - (cdr entry) - (begin - (display - (string-append "warning: no such font: " name "\n") - (current-error-port)) - (get-font "default"))))) + ;; urg + (if (equal? name "as-dummy") + (get-font "default") + (let ((entry (assoc name fonts))) + (if entry + (cdr entry) + (begin + (display + (string-append "warning: no such font: " name "\n") + (current-error-port)) + (get-font "default")))))) (define (get-char font n) (let ((entry (assoc n font))) @@ -242,13 +269,12 @@ Options: (define (end-output) (display (string-append - (make-string (- canvas-width (string-length tag-line)) #\space) - tag-line "\n"))) - -(define (sign x) - (if (= x 0) - 1 - (inexact->exact (/ x (abs x))))) + (make-string + (- canvas-width (string-length tag-line)) #\space) + tag-line "\n") + cur-output-file) + (close cur-output-file) + (set! cur-output-file '())) (define (h-line len) (let ((step (sign len))) @@ -262,7 +288,8 @@ Options: ((= i len)) (plot cur-x (+ cur-y i) line-char)))) (define (header x y) - (display (string-append x y "\n") (current-error-port))) + ;(display (string-append x y "\n") (current-error-port)) + "") (define (header-end) "") @@ -299,14 +326,18 @@ Options: (list (list code bbox (cdr char))))) (define (load-font name mag) - (let ((text (af-gulp-file (string-append name ".af")))) - (if (< 0 (string-length text)) - (let* ((char-list (cdr (split #\np + ;; urg: don't load dummy font + (if (not (equal? name "as-dummy")) + (let ((text (af-gulp-file (string-append name ".af")))) + (if (< 0 (string-length text)) + (let* ((char-list (cdr + (split #\np (regexp-substitute/global #f "\t[^\n]*\n" text 'pre "" 'post) list))) - (font (apply append (map dissect-char char-list)))) - (set! fonts (cons (cons name font) fonts)))))) + (font (apply append (map dissect-char char-list)))) + (if (< 0 (length font)) + (set! fonts (cons (cons name font) fonts)))))))) (define (move-to x y) (set! cur-x x) @@ -328,19 +359,31 @@ Options: (define (start-line height) (if first-line (begin - (set! first-line #f) - (set! fonts (cons (cons "default" (generate-default-font)) fonts)))) - (if (defined? 'mudelapaperlinewidth) - (set! canvas-width - (inexact->exact (string->number mudelapaperlinewidth)))) + (set! fonts (cons (cons "default" (generate-default-font)) fonts)) + (display "\n" (current-error-port)) + (if (defined? 'mudelapaperlinewidth) + (set! canvas-width + (inexact->exact (string->number mudelapaperlinewidth)))))) (set! canvas-height height) (set! canvas (make-array " " canvas-height canvas-width))) (define (stop-line) + (if first-line + (let ((output-file (if (equal? cur-output-name "-") + (current-output-port) + (open-file cur-output-name "w"))) + (output-name (if (equal? cur-output-name "-") + "" + cur-output-name))) + (set! first-line #f) + (set! cur-output-file output-file) + (display (string-append "text output to " output-name "...\n") + (current-error-port)))) (display (apply string-append (map (lambda (x) (string-append (apply string-append x) "\n")) - (array->list canvas))))) + (array->list canvas))) + cur-output-file)) (define (text s) (let ((n (string-length s)) @@ -351,4 +394,3 @@ Options: (c (get-char font n))) (plot-char c) (rmove-to (char-width c) 0))))) - -- 2.39.2