It works fantastically well. To automatically generate exercise this is more than great. Thanks a lot David! g.
On 24 November 2017 at 10:55, David Kastrup <d...@gnu.org> wrote: > Gianmaria Lari <gianmarial...@gmail.com> writes: > > > On 20 November 2017 at 23:01, David Kastrup <d...@gnu.org> wrote: > >> > >> whatever = > >> #(define-music-function (pattern) (ly:music?) > >> #{ \fixed c' { > >> #@(map > >> (lambda (p) > >> #{ \modalTranspose c #(ly:make-pitch -1 p) \scale #pattern > #}) > >> (iota 8)) > >> } #}) > >> > >> \whatever {c d e f} > >> \whatever {f e d c} > >> \whatever {a c e g} > >> > > > > I tried the above code but without success. When I tried it few days ago > I > > was thinking there was some simple to solve problem and I didn't write > you > > immediately; I wanted to try to solve the problem by myself but I have > not > > been able to do it. > > > > This is the complete code according what you wrote (I hope I didn't > > introduce any errors): > > > > \version "2.19.80" > > scale = {c d e f g a b } > > > > whatever = > > #(define-music-function (pattern) (ly:music?) > > #{ \fixed c' { > > #@(map > > (lambda (p) > > #{ \modalTranspose c #(ly:make-pitch -1 p) \scale #pattern > #}) > > (iota 8)) > > } #}) > > > > \whatever {c d e f} > > \whatever {a c e g} > > > > > > It looks that #(ly:make-pitch -1 p) inside this function does not > decrease > > the value of p. So the result is always the same _non transposed_ > sequence. > > There is also a strange (to me) problem with the octave that's too high > ( I > > have been able to solve it but I don't understand why it happens). > > > > The same code outside the function works well: > > > > \fixed c' { > > #@(map > > (lambda (p) > > #{ \modalTranspose c #(ly:make-pitch -1 p) \scale {c d e f} #}) > > (iota 8)) > > } > > > > > > What's the issue? > > Sorry, my fault. The result is sky-high pitches. That's typical for > "failure to copy": here #pattern is used over and over again and being > (destructively) transposed every time. > > The solution is simply to write $pattern (which _does_ copy, as does > \scale) instead of #pattern in the function. > > -- > David Kastrup >
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user