From 288d816e9e0838bcee12def6defde6c534f82d09 Mon Sep 17 00:00:00 2001 From: fred Date: Tue, 26 Mar 2002 22:45:39 +0000 Subject: [PATCH] lilypond-1.3.25 --- CHANGES | 51 +++++- VERSION | 2 +- input/test/standchen-as5.ly | 36 ++++ input/test/standchen-as9.ly | 36 ++++ ly/init-as.fly | 41 +++++ ly/init-as.ly | 36 ++++ mf/as5.af | 201 +++++++++++++++++++++ scm/lily.scm | 213 ++++++++++++++++++----- stepmake/stepmake/asciifont-targets.make | 1 + 9 files changed, 570 insertions(+), 47 deletions(-) create mode 100644 input/test/standchen-as5.ly create mode 100644 input/test/standchen-as9.ly create mode 100644 ly/init-as.fly create mode 100644 ly/init-as.ly create mode 100644 mf/as5.af create mode 100644 stepmake/stepmake/asciifont-targets.make diff --git a/CHANGES b/CHANGES index 0951aa432f..c7be422f5f 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,52 @@ -1.3.23.uu1 -========== +1.3.24.jcn4 +=========== + +* as2text: catch missing font/character errors, added default font, set text. + +1.3.24.jcn3 +=========== + +* New ascii fonts: as5 as-numeral4 as-braces9 + +* Fixes to as2text.scm + +* Added lots of ascii glyphs + +1.3.24.jcn2 +=========== + +* Ascii output, minimal support: + - AsciiScript Fonts: mf/*.af + - Init files: ly/*-as.*ly + - AsciiScript translation to text: scripts/as2text.scm + - input/test/as.fly input/test/as1.fly + - Output support: lily/lily.scm + - Try: + lilypond -f as -i init-as.fly input/test/as.fly + as2text as.as + +1.3.24.hwn1 +=========== + +* The horizontal part of ties will avoid collision with staff lines. + +* Plugged memory leak: don't protect Atom function. + +* Lookup cleanups. Made lots of functions static. Moved some code out +of Lookup. + + + +1.3.24.hwn1 +=========== + +* Bugfix: ly2dvi.py exits succesfully when encountering --help and +does not delete any of the file_ly*.tex. + +* Added header and footer support in ly2dvi.py + +1.3.24 +====== * Added a ROADMAP file explaining the source directory layout. diff --git a/VERSION b/VERSION index 3be69d6a1b..c5062d4c65 100644 --- a/VERSION +++ b/VERSION @@ -1,7 +1,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 -PATCH_LEVEL=24 +PATCH_LEVEL=25 MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a diff --git a/input/test/standchen-as5.ly b/input/test/standchen-as5.ly new file mode 100644 index 0000000000..df076684cb --- /dev/null +++ b/input/test/standchen-as5.ly @@ -0,0 +1,36 @@ + +\include "paper-as5.ly" + +\score { + \context StaffGroup < + \context Staff=upper \notes\relative c{ + \key F; + \time 3/4; + r8^"Moderato" %\pp + | + r8 + } + \context Staff=lower \notes\relative c{ + \key F; + \time 3/4; + \clef "bass"; + r4 + r4 + } + > + \paper { +% \paper_as_nine + indent=4.0\char; + linewidth=78.0\char; + \translator { \StaffContext barSize = #4.5 } + %\translator { \VoiceContext beamHeight = #0 } + \translator { + \VoiceContext + beamHeight = ##f + beamAutoBegin= #(make-moment 0 1) + textEmptyDimension = ##t + } + } + +} + diff --git a/input/test/standchen-as9.ly b/input/test/standchen-as9.ly new file mode 100644 index 0000000000..9ac7aaacc5 --- /dev/null +++ b/input/test/standchen-as9.ly @@ -0,0 +1,36 @@ + +\include "paper-as9.ly" + +\score { + \context GrandStaff < + \context Staff=upper \notes\relative c{ + \key F; + \time 3/4; + r8^"Moderato" %\pp + | + r8 + } + \context Staff=lower \notes\relative c{ + \key F; + \time 3/4; + \clef "bass"; + r4 + r4 + } + > + \paper { +% \paper_as_nine + indent=4.0\char; + linewidth=78.0\char; + %\translator { \StaffContext barSize = #9 } + %\translator { \VoiceContext beamHeight = #0 } + \translator { + \VoiceContext + beamHeight = ##f + beamAutoBegin= #(make-moment 0 1) + textEmptyDimension = ##t + } + } + +} + diff --git a/ly/init-as.fly b/ly/init-as.fly new file mode 100644 index 0000000000..6081a73ccb --- /dev/null +++ b/ly/init-as.fly @@ -0,0 +1,41 @@ +% Toplevel AsciiScript initialisation file. + +\version "1.3.24"; + +\include "declarations-as.ly" + +% burp. need to override lily.scm +#(define cmr-alist + '(("bold" . "cmbx") + ("brace" . "as-braces") + ("dynamic" . "cmr") + ("feta" . "feta") + ("feta-1" . "feta") + ("feta-2" . "feta") + ("finger" . "as-number") + ("typewriter" . "cmtt") + ("italic" . "cmti") + ("roman" . "cmr") + ("script" . "cmr") + ("large" . "cmbx") + ("Large" . "cmbx") + ("mark" . "as-number") + ("number" . "as-number") + ("volta" . "as-number")) +) + +\score { + \context Voice \notes\relative c { + \maininput + } + \paper { + \paper_as_nine + %linewidth=-1.0; + %indent = 0.0; + \translator { \StaffContext barSize = #'staff-height } + + % no beam-slope + %\translator { \VoiceContext beamHeight = #0; } + } + %\midi{ } +} diff --git a/ly/init-as.ly b/ly/init-as.ly new file mode 100644 index 0000000000..372a0c1683 --- /dev/null +++ b/ly/init-as.ly @@ -0,0 +1,36 @@ +% Toplevel AsciiScript initialisation file. + +\version "1.3.24"; + +\include "declarations-as.ly" + +% burp. need to override lily.scm +#(define cmr-alist + '(("bold" . "cmbx") + ("brace" . "as-braces") + ("dynamic" . "cmr") + ("feta" . "feta") + ("feta-1" . "feta") + ("feta-2" . "feta") + ("finger" . "as-number") + ("typewriter" . "cmtt") + ("italic" . "cmti") + ("roman" . "cmr") + ("script" . "cmr") + ("large" . "cmbx") + ("Large" . "cmbx") + ("mark" . "as-number") + ("number" . "as-number") + ("volta" . "as-number")) +) + +\paper { + \paper_as_nine + \translator { \StaffContext barSize = #'staff-height } + + % no beam-slope + %\translator { \VoiceContext beamHeight = #0; } +} + +\maininput + diff --git a/mf/as5.af b/mf/as5.af new file mode 100644 index 0000000000..60b091b38d --- /dev/null +++ b/mf/as5.af @@ -0,0 +1,201 @@ + Comment as5.af -- AsciiFont: music font of 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 5 + FontFamily as + StartCharMetrics 56 + + Comment BBox: (llx lly urx ury) * 1000 + C 0; WX 7; N rests-0; B 0 0 1000 1000; +R + C 1; WX 7; N rests-1; B 0 0 1000 1000; +R + C 7; WX 5; N rests-2; B 0 0 1000 1000; +R + C 8; WX 6; N rests-3; B 0 0 1000 1000; +r + C 9; WX 7; N rests-4; B 0 0 1000 1000; +r + C 10; WX 8; N rests-5; B 0 0 1000 1000; +r + C 10; WX 8; N rests-5; B 0 0 1000 1000; +r + C 11; WX 9; N rests-6; B 0 0 1000 1000; +r + C 16; WX 5; N accidentals-1; B 0 0 1000 1000; +# + C 17; WX 3; N accidentals-0; B 0 0 1000 1000; +H + C 18; WX 4; N accidentals--1; B 0 0 1000 1000; +b + C 19; WX 7; N accidentals--2; B 0 0 1000 1000; +bb + C 20; WX 5; N accidentals-2; B 0 0 1000 1000; +x + C 21; WX 3; N accidentals-); B 0 -5000 3000 5000; +( + C 22; WX 3; N accidentals-(; B -3000 -5000 0 5000; +) + C 23; WX 2; N dots-dot; B 0 0 1000 1000; +. + C 24; WX 1; N dots-repeatcolon; B 0 1000 1000 4000; +: + C 31; WX 5; N noteheads-ledgerending; B -1500 -500 1500 500; +- + C 33; WX 9; N noteheads-0; B 0 -500 1000 500; +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 36; WX 9; N noteheads-0diamond; B 0 -2750 9900 2750; +V + C 37; WX 7; N noteheads-1diamond; B 0 -2750 7081 2750; +v + C 38; WX 6; N noteheads-2diamond; B 0 -2750 6605 2750; +v + C 39; WX 6; N noteheads-2cross; B 0 -2750 6605 2750; +x + C 40; WX 13; N scripts-ufermata; B -6625 -375 6625 7250; + _ +/.\ + C 41; WX 13; N scripts-dfermata; B -6625 -7250 6625 375; + . +\_/ + C 43; WX 8; N scripts-sforzato; B -4499 -2500 4499 2500; +> + C 44; WX 1; N scripts-staccato; B 0 0 1000 1000; +. + C 45; WX 2; N scripts-ustaccatissimo; B -1000 -200 1000 5000; +^ + C 46; WX 2; N scripts-dstaccatissimo; B -1000 -5000 1000 200; +v + C 47; WX 6; N scripts-tenuto; B -3000 -350 3000 350; +--- + C 48; WX 5; N scripts-umarcato; B -2500 0 2500 5500; +| + C 49; WX 5; N scripts-dmarcato; B -2500 -5500 2500 0; +| + C 50; WX 4; N scripts-open; B -2000 -2500 2000 2500; +o + C 51; WX 5; N scripts-stopped; B -2750 -2750 2750 2750; ++ + C 52; WX 6; N scripts-upbow; B -3250 0 3250 10400; +\/ + C 53; WX 7; N scripts-downbow; B -3750 0 3750 6666; + _ +| | + C 56; WX 10; N scripts-trill; B -5000 0 5000 11250; +\/\ + C 61; WX 5; N scripts-flageolet; B -2666 -2666 2666 2666; +o + C 81; WX 6; N flags-u3; B 1000 -1000 3000 -1000; +\ + ) + C 82; WX 6; N flags-u4; B 1000 -2000 3000 0; +\ +\) + C 83; WX 6; N flags-u5; B 0 0 3000 5000; +\ +\) + C 84; WX 6; N flags-u6; B 0 0 3000 5000; +\ +)) + C 86; WX 7; N flags-d3; B 1000 5000 3000 0; + ) +/ + C 87; WX 7; N flags-d4; B 1000 5000 3000 0; +)) +/ + C 88; WX 7; N flags-d5; B 1000 5000 3000 0; +)) +/ + C 89; WX 7; N flags-d6; B 1000 5000 3000 0; +)) +/ + C 91; WX 13; N clefs-C; B 0 7000 7000 -3000; +|__ +| _) +|<_ +|__) +| + C 92; WX 10; N clefs-C_change; B 0 7000 7000 -3000; +B: + C 93; WX 10; N clefs-F; B 0 -3000 5000 2000; + __ +(, ): + / +_/ + C 94; WX 8; N clefs-F_change; B 0 7000 7000 -3000; +F: + C 95; WX 1; N clefs-G; B 0 -2000 6000 5000; + |\ + |/ + /| + / |_ +| /| \ + \_|_/ + *_| + C 96; WX 10; N clefs-G_change; B 0 7000 7000 -3000; +G: + C 97; WX 17; N timesig-C4/4; B 0 7000 7000 -3000; +C + C 98; WX 17; N timesig-C2/2; B 0 7000 7000 -3000; +C| + EndCharMetrics + EndFontMetrics %d + + Comment Missing characters +C 2; WX 7; N rests-0o; B 0 -3125 7500 500; +C 3; WX 7; N rests-1o; B 0 -500 7500 3125; +C 4; WX 3; N rests--1; B 0 0 3000 5000; +C 5; WX 3; N rests--2; B 0 -5000 3000 5000; +C 6; WX 40; N rests--4; B -20000 -5000 20000 5000; +C 12; WX 10; N rests-7; B 0 -15000 10447 14208; +C 54; WX 10; N scripts-reverseturn; B -5468 -2647 5468 2647; +C 55; WX 10; N scripts-turn; B -5468 -2647 5468 2647; +C 13; WX 4; N rests-2mensural; B 0 0 4000 4000; +C 14; WX 4; N rests-3mensural; B 0 0 4000 4000; +C 15; WX 4; N rests-4mensural; B 0 0 4000 5000; +C 32; WX 9; N noteheads--1; B 0 -2750 9900 2750; +C 62; WX 10; N scripts-repeatsign; B -5000 -5000 5000 5000; +C 63; WX 10; N scripts-segno; B -5000 -7500 5000 7500; +C 64; WX 10; N scripts-coda; B -5083 -6750 5083 6750; +C 65; WX 4; N scripts-trilelement; B -3333 -2500 1306 2500; +C 66; WX 11; N scripts-prall; B -5653 -2500 5653 2500; +C 67; WX 11; N scripts-mordent; B -5653 -2500 5653 2500; +C 68; WX 15; N scripts-prallprall; B -7973 -2500 7973 2500; +C 69; WX 15; N scripts-prallmordent; B -7973 -2500 7973 2500; +C 70; WX 15; N scripts-upprall; B -7973 -2500 7973 2500; +C 71; WX 15; N scripts-downprall; B -7973 -2500 7973 2500; +C 72; WX 15; N scripts-accDiscant; B -7500 0 7500 15000; +C 73; WX 5; N scripts-accDot; B -2500 0 2500 0; +C 74; WX 10; N scripts-accFreebase; B -5000 0 5000 10000; +C 75; WX 20; N scripts-accStdbase; B -10000 0 10000 20000; +C 76; WX 10; N scripts-accBayanbase; B -5000 0 5000 15000; +C 77; WX 15; N scripts-accSB; B -7999 0 7999 11999; +C 78; WX 15; N scripts-accBB; B -7999 0 7999 11999; +C 79; WX 10; N scripts-accOldEE; B -5000 0 5000 10000; +C 80; WX 10; N scripts-accOldEES; B -5000 0 5000 10000; +C 85; WX 9; N flags-ugrace; B -3512 -10800 6169 -5000; +C 90; WX 10; N flags-dgrace; B -3907 4950 6827 10260; +C 99; WX 17; N timesig-old4/4; B -8750 -3750 8750 3750; +C 100; WX 17; N timesig-old2/2; B -8750 -5000 8750 5000; +C 101; WX 17; N timesig-old3/2; B -8750 -3750 8750 3750; +C 102; WX 17; N timesig-old6/4; B -8750 -3750 8750 3750; +C 103; WX 17; N timesig-old9/4; B -8750 -3750 8750 3750; +C 104; WX 17; N timesig-old3/4; B -8750 -5000 8750 5000; +C 105; WX 17; N timesig-old6/8; B -8750 -5000 8750 5000; +C 106; WX 17; N timesig-old9/8; B -8750 -5000 8750 5000; +C 107; WX 17; N timesig-old4/8; B -8750 -3750 8750 3750; +C 108; WX 17; N timesig-old6/8alt; B -8750 -3750 8750 3750; +C 109; WX 17; N timesig-old2/4; B -8750 -5000 8750 5000; diff --git a/scm/lily.scm b/scm/lily.scm index 2e218d5b09..c3a9ac8ea4 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -12,14 +12,7 @@ (use-modules (ice-9 regex)) ;; do nothing in .scm output -(define (comment s) - "" - ) - -(define - (xnumbers->string l) - (string-append - (map (lambda (n) (string-append (number->string n ) " ")) l))) +(define (comment s) "") (define (mm-to-pt x) (* (/ 72.27 25.40) x) @@ -34,11 +27,10 @@ ) ) +(define (glue-2-strings a b) + (string-append a " " b)) -(define (glue-2-strings a b) (string-append a " " b)) - -(define - (numbers->string l) +(define (numbers->string l) (reduce glue-2-strings (map number->string l))) (define (chop-decimal x) (if (< (abs x) 0.001) 0.0 x)) @@ -150,6 +142,7 @@ ;; roman-0, roman-1 roman+1 ? (define cmr-alist '(("bold" . "cmbx") + ("brace" . "feta-braces") ("dynamic" . "feta-din") ("feta" . "feta") ("feta-1" . "feta") @@ -309,7 +302,7 @@ (define (header creator generate) (string-append - "%created by: " creator generate)) + "%created by: " creator generate "\n")) (define (invoke-char s i) (string-append @@ -350,9 +343,8 @@ (embedded-ps ((ps-scm 'bezier-sandwich) l thick))) (define (start-line ht) - (begin (string-append"\\vbox to " (number->dim ht) "{\\hbox{%\n")) - ) + (define (stop-line) "}\\vss}\\interscoreline") (define (stop-last-line) @@ -582,8 +574,7 @@ " draw_bezier_sandwich")) (define (start-line height) - (begin - "\nstart_line {\n")) + "\nstart_line {\n") (define (stem breapth width depth height) (string-append (numbers->string (list breapth width depth height)) @@ -659,6 +650,164 @@ ) +(define (arg->string arg) + (cond ((number? arg) (inexact->string arg 10)) + ((string? arg) (string-append "\"" arg "\"")) + ((symbol? arg) (string-append "\"" (symbol->string arg) "\"")))) + +(define (func name . args) + (string-append + "(" name + (if (null? args) + "" + (apply string-append + (map (lambda (x) (string-append " " (arg->string x))) args))) + ")\n")) + + +;;;; AsciiScript as +(define (as-scm action-name) + + (define (beam width slope thick) + (string-append + (func "set-line-char" "#") + (func "rline-to" width (* width slope)) + )) + + (define (bracket arch_angle arch_width arch_height width height arch_thick thick) + (string-append + (func "rmove-to" (+ width 1) (- (/ height -2) 1)) + (func "put" "\\\\") + (func "set-line-char" "|") + (func "rmove-to" 0 1) + (func "v-line" (+ height 1)) + (func "rmove-to" 0 (+ height 1)) + (func "put" "/") + )) + + (define (char i) + (func "char" i)) + + (define (end-output) + (func "end-output")) + + (define (experimental-on) + "") + + (define (filledbox breapth width depth height) + (let ((dx (+ width breapth)) + (dy (+ depth height))) + (string-append + (func "rmove-to" (* -1 breapth) (* -1 depth)) + (if (< dx dy) + (string-append + (func "set-line-char" + (if (<= dx 1) "|" "#")) + (func "v-line" dy)) + (string-append + (func "set-line-char" + (if (<= dy 1) "-" "=")) + (func "h-line" dx)))))) + + (define (font-load-command name-mag command) + (func "load-font" (car name-mag) (magstep (cdr name-mag)))) + + (define (header creator generate) + (func "header" creator generate)) + + (define (header-end) + (func "header-end")) + + (define (lily-def key val) + (string-append "(define " key " " (arg->string val) ")\n")) + + (define (placebox x y s) + (string-append (func "move-to" x y) s)) + + (define (select-font font-name-symbol) + (let* ((c (assoc font-name-symbol font-name-alist))) + (if (eq? c #f) + (begin + (ly-warn + (string-append + "Programming error: No such font known " + (car font-name-symbol))) + "") ; issue no command + (func "select-font" (car font-name-symbol))))) + + (define (start-line height) + (func "start-line" height)) + + (define (stop-line) + (func "stop-line")) + + (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) + (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) + "" + (string-append + (func "rmove-to" w 0) + (func "v-line" (* -1 h)))))) + + (cond ((eq? action-name 'all-definitions) + `(begin + (define beam ,beam) + (define bracket ,bracket) + (define char ,char) + ;;(define crescendo ,crescendo) + ;(define bezier-sandwich ,bezier-sandwich) + ;;(define dashed-slur ,dashed-slur) + ;;(define decrescendo ,decrescendo) + (define end-output ,end-output) + (define experimental-on ,experimental-on) + (define filledbox ,filledbox) + ;;(define font-def ,font-def) + (define font-load-command ,font-load-command) + ;;(define font-switch ,font-switch) + (define header ,header) + (define header-end ,header-end) + (define lily-def ,lily-def) + ;;(define invoke-char ,invoke-char) + ;;(define invoke-dim1 ,invoke-dim1) + (define placebox ,placebox) + (define select-font ,select-font) + (define start-line ,start-line) + ;;(define stem ,stem) + (define stop-line ,stop-line) + (define stop-last-line ,stop-line) + (define text ,text) + ;;(define tuplet ,tuplet) + (define volta ,volta) + )) + ;;((eq? action-name 'tuplet) tuplet) + ;;((eq? action-name 'beam) beam) + ;;((eq? action-name 'bezier-sandwich) bezier-sandwich) + ;;((eq? action-name 'bracket) bracket) + ((eq? action-name 'char) char) + ;;((eq? action-name 'crescendo) crescendo) + ;;((eq? action-name 'dashed-slur) dashed-slur) + ;;((eq? action-name 'decrescendo) decrescendo) + ;;((eq? action-name 'experimental-on) experimental-on) + ((eq? action-name 'filledbox) filledbox) + ((eq? action-name 'select-font) select-font) + ;;((eq? action-name 'volta) volta) + (else (error "unknown tag -- MUSA-SCM " action-name)) + ) + ) + + (define (gulp-file name) (let* ((port (open-file name "r")) (content (let loop ((text "")) @@ -685,6 +834,8 @@ (define (scm-ps-output) (eval (ps-scm 'all-definitions))) +(define (scm-as-output) + (eval (as-scm 'all-definitions))) ; Russ McManus, ; @@ -709,37 +860,11 @@ (set! ret-ls (cons (fn (car (car alist)) (cdr (car alist))) ret-ls))))) -;; guile-1.3.4 has list->string -(define (scmlist->string exp) - (list->string exp)) - -;; obsolete, maybe handy for testing -;; print a SCM expression. Isn't this part of the std lib? -(define (xxscmlist->string exp) - (cond - ((null? (car exp)) (begin (display ("urg:") (newline)))) - ((pair? (cdr exp)) (string-append (scm->string (car exp)) " " (scmlist->string (cdr exp)))) - ((eq? '() (cdr exp)) (string-append (scm->string (car exp)) ")")) - ;; howto check for quote? - (else (string-append (scm->string (car exp)) " . " (scm->string (cdr exp)) ")")) - )) - -(define (scm->string exp) - (cond - ((pair? exp) (string-append "(" (scmlist->string exp))) - ((number? exp) (number->string exp)) - ((symbol? exp) (symbol->string exp)) - ((string? exp) (string-append "\"" exp "\"")) - ;; probably: #@quote - (else (begin (display "programming error: scm->string: ") (newline) "'")) - )) (define (index-cell cell dir) (if (equal? dir 1) (cdr cell) - (car cell)) - ) - + (car cell))) ; ; How should a bar line behave at a break? diff --git a/stepmake/stepmake/asciifont-targets.make b/stepmake/stepmake/asciifont-targets.make new file mode 100644 index 0000000000..1bb8bf6d7f --- /dev/null +++ b/stepmake/stepmake/asciifont-targets.make @@ -0,0 +1 @@ +# empty -- 2.39.5