initial import
This commit is contained in:
104
functions.ly
Normal file
104
functions.ly
Normal 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)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user