initial import

This commit is contained in:
2026-01-19 21:16:14 +01:00
parent f4b7f6caeb
commit b4622b991f

104
functions.ly Normal file
View File

@@ -0,0 +1,104 @@
rmtext = #(define-scheme-function
(o)
(ly:music?)
(define (f o)
(ly:music-set-property! o 'text "")
(let ((t (ly:music-property o 'name)))
(let ((els (ly:music-property o 'elements)))
(if (null? els)
(let ((arts (ly:music-property o 'articulations)))
(map (lambda (a)
(f a))
arts))
(map (lambda (e)
(f e)
)
els))))
)
(let ((oo (ly:music-deep-copy o)))
(f oo)
oo)
)
withDuration = #(define-scheme-function
(music duration adjusts)
(ly:music? number? number?)
(define (with-duration-internal m duration)
(cond
((or (music-is-of-type? m 'note-event) (music-is-of-type? m 'rest-event) (music-is-of-type? m 'skip-event))
(ly:music-set-property! m 'duration (apply ly:make-duration duration)))
((music-is-of-type? m 'event-chord)
(map (lambda (n) (with-duration-internal n duration))
(ly:music-property m 'elements)))
(else (ly:warning "Neither note event nor chord"))
)
m
)
(with-duration-internal (ly:music-deep-copy music) (list duration adjusts))
)
flattenPitch = #(define-scheme-function
(music)
(ly:music?)
(define (adjust-first l)
(if (null? l)
'done
(let ((e (car l)))
(if (music-is-of-type? e 'note-event)
(adjust-pitch-i e)
(adjust-first (cdr l))))
)
)
(define (adjust-pitch-i m)
(cond
((music-is-of-type? m 'note-event)
(let* ((p (ly:music-property m 'pitch))
(pa (ly:pitch-alteration p))
(pn (ly:pitch-notename p))
(pp (ly:make-pitch -1 pn pa))
)
(ly:music-set-property! m 'pitch pp))
)
((or (music-is-of-type? m 'event-chord)
(music-is-of-type? m 'any))
(adjust-first (ly:music-property m 'elements))
)
)
m
)
(adjust-pitch-i (ly:music-deep-copy music))
)
rep = #(define-scheme-function
(n m)
(index? ly:music?)
(let ((nn (- n 1))
(mm (flattenPitch (rmtext m)))
)
(if (> nn 0)
#{
$m \repeat unfold $nn $mm
#}
#{
$m
#}
)
)
)
fr = #(define-scheme-function
(n)
(ly:music?)
(rep 4 n))
frr = #(define-scheme-function
(n)
(ly:music?)
(rep 8 n)
)