-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.
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
--- /dev/null
+
+\include "paper-as5.ly"
+
+\score {
+ \context StaffGroup <
+ \context Staff=upper \notes\relative c{
+ \key F;
+ \time 3/4;
+ r8^"Moderato" %\pp
+ <g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.> |
+ r8 <as-. c-.> <c-. es-.>
+ }
+ \context Staff=lower \notes\relative c{
+ \key F;
+ \time 3/4;
+ \clef "bass";
+ <c,2 c'> r4
+ <as2 as'> 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
+ }
+ }
+
+}
+
--- /dev/null
+
+\include "paper-as9.ly"
+
+\score {
+ \context GrandStaff <
+ \context Staff=upper \notes\relative c{
+ \key F;
+ \time 3/4;
+ r8^"Moderato" %\pp
+ <g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.> |
+ r8 <as-. c-.> <c-. es-.>
+ }
+ \context Staff=lower \notes\relative c{
+ \key F;
+ \time 3/4;
+ \clef "bass";
+ <c,2 c'> r4
+ <as2 as'> 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
+ }
+ }
+
+}
+
--- /dev/null
+% 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{ }
+}
--- /dev/null
+% 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
+
--- /dev/null
+ Comment as5.af -- AsciiFont: music font of height 5
+
+ Comment part of LilyPond's [ascii music font]
+
+ Comment (c) 2000 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ 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
+\f C 0; WX 7; N rests-0; B 0 0 1000 1000;
+R
+\f C 1; WX 7; N rests-1; B 0 0 1000 1000;
+R
+\f C 7; WX 5; N rests-2; B 0 0 1000 1000;
+R
+\f C 8; WX 6; N rests-3; B 0 0 1000 1000;
+r
+\f C 9; WX 7; N rests-4; B 0 0 1000 1000;
+r
+\f C 10; WX 8; N rests-5; B 0 0 1000 1000;
+r
+\f C 10; WX 8; N rests-5; B 0 0 1000 1000;
+r
+\f C 11; WX 9; N rests-6; B 0 0 1000 1000;
+r
+\f C 16; WX 5; N accidentals-1; B 0 0 1000 1000;
+#
+\f C 17; WX 3; N accidentals-0; B 0 0 1000 1000;
+H
+\f C 18; WX 4; N accidentals--1; B 0 0 1000 1000;
+b
+\f C 19; WX 7; N accidentals--2; B 0 0 1000 1000;
+bb
+\f C 20; WX 5; N accidentals-2; B 0 0 1000 1000;
+x
+\f C 21; WX 3; N accidentals-); B 0 -5000 3000 5000;
+(
+\f C 22; WX 3; N accidentals-(; B -3000 -5000 0 5000;
+)
+\f C 23; WX 2; N dots-dot; B 0 0 1000 1000;
+.
+\f C 24; WX 1; N dots-repeatcolon; B 0 1000 1000 4000;
+:
+\f C 31; WX 5; N noteheads-ledgerending; B -1500 -500 1500 500;
+-
+\f C 33; WX 9; N noteheads-0; B 0 -500 1000 500;
+O
+\f C 34; WX 6; N noteheads-1; B -1000 -500 0 500;
+o
+\f C 35; WX 6; N noteheads-2; B -1000 -500 0 500;
+*
+\f C 36; WX 9; N noteheads-0diamond; B 0 -2750 9900 2750;
+V
+\f C 37; WX 7; N noteheads-1diamond; B 0 -2750 7081 2750;
+v
+\f C 38; WX 6; N noteheads-2diamond; B 0 -2750 6605 2750;
+v
+\f C 39; WX 6; N noteheads-2cross; B 0 -2750 6605 2750;
+x
+\f C 40; WX 13; N scripts-ufermata; B -6625 -375 6625 7250;
+ _
+/.\
+\f C 41; WX 13; N scripts-dfermata; B -6625 -7250 6625 375;
+ .
+\_/
+\f C 43; WX 8; N scripts-sforzato; B -4499 -2500 4499 2500;
+>
+\f C 44; WX 1; N scripts-staccato; B 0 0 1000 1000;
+.
+\f C 45; WX 2; N scripts-ustaccatissimo; B -1000 -200 1000 5000;
+^
+\f C 46; WX 2; N scripts-dstaccatissimo; B -1000 -5000 1000 200;
+v
+\f C 47; WX 6; N scripts-tenuto; B -3000 -350 3000 350;
+---
+\f C 48; WX 5; N scripts-umarcato; B -2500 0 2500 5500;
+|
+\f C 49; WX 5; N scripts-dmarcato; B -2500 -5500 2500 0;
+|
+\f C 50; WX 4; N scripts-open; B -2000 -2500 2000 2500;
+o
+\f C 51; WX 5; N scripts-stopped; B -2750 -2750 2750 2750;
++
+\f C 52; WX 6; N scripts-upbow; B -3250 0 3250 10400;
+\/
+\f C 53; WX 7; N scripts-downbow; B -3750 0 3750 6666;
+ _
+| |
+\f C 56; WX 10; N scripts-trill; B -5000 0 5000 11250;
+\/\
+\f C 61; WX 5; N scripts-flageolet; B -2666 -2666 2666 2666;
+o
+\f C 81; WX 6; N flags-u3; B 1000 -1000 3000 -1000;
+\
+ )
+\f C 82; WX 6; N flags-u4; B 1000 -2000 3000 0;
+\
+\)
+\f C 83; WX 6; N flags-u5; B 0 0 3000 5000;
+\
+\)
+\f C 84; WX 6; N flags-u6; B 0 0 3000 5000;
+\
+))
+\f C 86; WX 7; N flags-d3; B 1000 5000 3000 0;
+ )
+/
+\f C 87; WX 7; N flags-d4; B 1000 5000 3000 0;
+))
+/
+\f C 88; WX 7; N flags-d5; B 1000 5000 3000 0;
+))
+/
+\f C 89; WX 7; N flags-d6; B 1000 5000 3000 0;
+))
+/
+\f C 91; WX 13; N clefs-C; B 0 7000 7000 -3000;
+|__
+| _)
+|<_
+|__)
+|
+\f C 92; WX 10; N clefs-C_change; B 0 7000 7000 -3000;
+B:
+\f C 93; WX 10; N clefs-F; B 0 -3000 5000 2000;
+ __
+(, ):
+ /
+_/
+\f C 94; WX 8; N clefs-F_change; B 0 7000 7000 -3000;
+F:
+\f C 95; WX 1; N clefs-G; B 0 -2000 6000 5000;
+ |\
+ |/
+ /|
+ / |_
+| /| \
+ \_|_/
+ *_|
+\f C 96; WX 10; N clefs-G_change; B 0 7000 7000 -3000;
+G:
+\f C 97; WX 17; N timesig-C4/4; B 0 7000 7000 -3000;
+C
+\f 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;
(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)
)
)
+(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))
;; roman-0, roman-1 roman+1 ?
(define cmr-alist
'(("bold" . "cmbx")
+ ("brace" . "feta-braces")
("dynamic" . "feta-din")
("feta" . "feta")
("feta-1" . "feta")
(define (header creator generate)
(string-append
- "%created by: " creator generate))
+ "%created by: " creator generate "\n"))
(define (invoke-char s i)
(string-append
(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)
" 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))
)
+(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 ""))
(define (scm-ps-output)
(eval (ps-scm 'all-definitions)))
+(define (scm-as-output)
+ (eval (as-scm 'all-definitions)))
; Russ McManus, <mcmanus@IDT.NET>
;
(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?