+(define (arg->string arg)
+ (cond ((number? arg) (inexact->string arg 10))
+ ((string? arg) (string-append "\"" arg "\""))
+ ((symbol? arg) (string-append "\"" (symbol->string arg) "\""))))
+
+; ugh: naming.
+(define (func name . args)
+ (string-append
+ "(" name
+ (if (null? args)
+ ""
+ (apply string-append
+ (map (lambda (x) (string-append " " (arg->string x))) args)))
+ ")\n"))
+
+(define (sign x)
+ (if (= x 0)
+ 1
+ (if (< x 0) -1 1)))
+
+(define (gulp-file name)
+ (let* ((file (open-input-file name))
+ (text (read-delimited "" file)))
+ (close file)
+ text))
+
+;; urg: Use when standalone, do:
+;; (define ly-gulp-file scm-gulp-file)
+(define (scm-gulp-file name)
+ (set! %load-path
+ (cons (string-append (getenv 'LILYPONDPREFIX) "/ly")
+ (cons (string-append (getenv 'LILYPONDPREFIX) "/ps")
+ %load-path)))
+ (let ((path (%search-load-path name)))
+ (if path
+ (gulp-file path)
+ (gulp-file name))))
+
+(define (scm-tex-output)
+ (ly-eval (tex-scm 'all-definitions)))
+
+(define (scm-ps-output)
+ (ly-eval (ps-scm 'all-definitions)))
+
+(define (scm-as-output)
+ (ly-eval (as-scm 'all-definitions)))
+
+(define (index-cell cell dir)
+ (if (equal? dir 1)
+ (cdr cell)
+ (car cell)))
+
+(define major-scale
+ '(
+ (0 . 0)
+ (1 . 0)
+ (2 . 0)
+ (3 . 0)
+ (4 . 0)
+ (5 . 0)
+ (6 . 0)
+ )
+ )
+
+(begin
+ (eval-string (ly-gulp-file "interface.scm"))
+ (eval-string (ly-gulp-file "beam.scm"))
+ (eval-string (ly-gulp-file "slur.scm"))
+ (eval-string (ly-gulp-file "font.scm"))
+ (eval-string (ly-gulp-file "auto-beam.scm"))
+ (eval-string (ly-gulp-file "generic-property.scm"))
+ (eval-string (ly-gulp-file "basic-properties.scm"))
+ (eval-string (ly-gulp-file "chord-names.scm"))
+ (eval-string (ly-gulp-file "element-descriptions.scm"))
+ )
+
+
+;;
+;; (name . (glyph clef-position octavation))
+;; -- the name clefOctavation is misleading the value 7 is 1 octave not 7 Octaves.
+;;
+(define supported-clefs '(
+ ("treble" . ("clefs-G" -2 0))
+ ("violin" . ("clefs-G" -2 0))
+ ("G" . ("clefs-G" -2 0))
+ ("G2" . ("clefs-G" -2 0))
+ ("french" . ("clefs-G" -4 0))
+ ("soprano" . ("clefs-C" -4 0))
+ ("mezzosoprano" . ("clefs-C" -2 0))
+ ("alto" . ("clefs-C" 0 0))
+ ("tenor" . ("clefs-C" 2 0))
+ ("baritone" . ("clefs-C" 4 0))
+ ("varbaritone" . ("clefs-F" 0 0))
+ ("bass" . ("clefs-F" 2 0))
+ ("F" . ( "clefs-F" 2 0))
+ ("subbass" . ("clefs-F" 4 0))
+
+ ;; should move mensural stuff to separate file?
+ ("vaticana_do1" . ("clefs-vaticana_do" -1 0))
+ ("vaticana_do2" . ("clefs-vaticana_do" 1 0))
+ ("vaticana_do3" . ("clefs-vaticana_do" 3 0))
+ ("vaticana_fa1" . ("clefs-vaticana_fa" -1 0))
+ ("vaticana_fa2" . ("clefs-vaticana_fa" 1 0))
+ ("medicaea_do1" . ("clefs-medicaea_do" -1 0))
+ ("medicaea_do2" . ("clefs-medicaea_do" 1 0))
+ ("medicaea_do3" . ("clefs-medicaea_do" 3 0))
+ ("medicaea_fa1" . ("clefs-medicaea_fa" -1 0))
+ ("medicaea_fa2" . ("clefs-medicaea_fa" 1 0))
+ ("hufnagel_do1" . ("clefs-hufnagel_do" -1 0))
+ ("hufnagel_do2" . ("clefs-hufnagel_do" 1 0))
+ ("hufnagel_do3" . ("clefs-hufnagel_do" 3 0))
+ ("hufnagel_fa1" . ("clefs-hufnagel_fa" -1 0))
+ ("hufnagel_fa2" . ("clefs-hufnagel_fa" 1 0))
+ ("hufnagel" . ("clefs-hufnagel_do_fa" 4 0))
+ ("mensural1_c1" . ("clefs-mensural1_c" -4 0))
+ ("mensural1_c2" . ("clefs-mensural1_c" -2 0))
+ ("mensural1_c3" . ("clefs-mensural1_c" 0 0))
+ ("mensural1_c4" . ("clefs-mensural1_c" 2 0))
+ ("mensural2_c1" . ("clefs-mensural2_c" -4 0))
+ ("mensural2_c2" . ("clefs-mensural2_c" -2 0))
+ ("mensural2_c3" . ("clefs-mensural2_c" 0 0))
+ ("mensural2_c4" . ("clefs-mensural2_c" 2 0))
+ ("mensural2_c5" . ("clefs-mensural2_c" 4 0))
+ ("mensural3_c1" . ("clefs-mensural3_c" -2 0))
+ ("mensural3_c2" . ("clefs-mensural3_c" 0 0))
+ ("mensural3_c3" . ("clefs-mensural3_c" 2 0))
+ ("mensural3_c4" . ("clefs-mensural3_c" 4 0))
+ ("mensural_f" . ("clefs-mensural_f" 2 0))
+ )
+)
+
+(define (clef-name-to-properties cl)
+ (let ((e (assoc cl supported-clefs))
+ )
+ (if (pair? e)
+ `(((symbol . clefGlyph)
+ (type . property-set)
+ (value . ,(cadr e))
+ )
+ ((symbol . clefPosition)
+ (type . property-set)
+ (value . ,(caddr e))
+ )
+ ((symbol . clefOctavation)
+ (type . property-set)
+ (value . ,(caddr (cdr e)))
+ )
+ )
+ (begin
+ (ly-warn (string-append "Unknown clef type `" cl "'\nSee scm/lily.scm for supported clefs"))
+ '())
+ )))