;;; modal-transforms.scm --- Modal transposition, inversion, and retrograde.
-;; Copyright (C) 2011--2012 Ellis & Grant, Inc.
+;; Copyright (C) 2011--2015 Ellis & Grant, Inc.
;; Author: Michael Ellis <michael.f.ellis@gmail.com>
(ly:music-set-property! music 'pitch (converter pitch)))
((pair? elements)
- (map (lambda (x) (change-pitches x converter)) elements))
+ (for-each (lambda (x) (change-pitches x converter)) elements))
((ly:music? element)
(change-pitches element converter)))))
"Recurse through @var{music}, extracting pitches.
Returns a list of pitch objects, e.g
@code{'((ly:make-pitch 0 2 0) (ly:make-pitch 0 4 0) ... )}
-Typically used to construct a scale for input to transposer-factory
-(see).
-"
+Typically used to construct a scale for input to
+@code{transposer-factory}."
(let ((elements (ly:music-property music 'elements))
(element (ly:music-property music 'element))
;; inversion and retrograding.
(let* ((elements (ly:music-property music 'elements))
+ (arts (ly:music-property music 'articulations))
(reversed (reverse elements))
(element (ly:music-property music 'element))
(span-dir (ly:music-property music 'span-direction)))
(ly:music-set-property! music 'elements reversed)
+ (for-each retrograde-music arts)
+
(if (ly:music? element)
(ly:music-set-property!
music 'element
(if (ly:dir? span-dir)
(ly:music-set-property! music 'span-direction (- span-dir)))
- (map retrograde-music reversed)
+ (for-each retrograde-music reversed)
music))