On 29 December 2017 at 11:26, Timothy Lanfear <timo...@lanfear.me> wrote:

> On 29/12/17 07:03, Gianmaria Lari wrote:
>
>> Sorry to bother but I'm unable to get out from this problem.
>> This code generate two scores:
>>
>>     \version "2.19.80"
>>
>>     \score {
>>       \transpose c d {c' d' e'}
>>       \layout{}
>>     }
>>
>>     \score {
>>       \transpose c e {c' d' e'}
>>       \layout{}
>>     }
>>
>> I tried to write a scheme function doing something similar:
>>
>>     \version "2.19.80"
>>     myScore = #(define-scheme-function (music) (ly:music?) #{
>>
>>     \score {
>>       \transpose c d $music
>>       \layout{}
>>     }
>>
>>     \score {
>>       \transpose c e $music
>>       \layout{}
>>     }
>>
>>     #})
>>
>>     \myScore {c' d' e'}
>>
>> but when I try to compile I get this error
>>
>>
>>     error: syntax error, unexpected \score, expecting end of input
>>
>>     \score {
>>
>>
>>     error: error in #{ ... #}
>>
>>
>> Any suggestion?
>> Thank you, Gianmaria
>>
>>
> A function can only return a single item so you could wrap the two scores
> in a book and then process the book.
>
> \version "2.19.80"
>
> myBook = #(define-scheme-function (music) (ly:music?) #{
>   \book {
>     \score { \transpose c d $music \layout{} }
>     \score { \transpose c e $music \layout{} }
>   }
> #})
>
> mybook = #(myBook #{ { c' d' e' } #})
> \mybook
>
>
>
>
>
> --
> Timothy Lanfear, Bristol, UK.
>
>
> _______________________________________________
> lilypond-user mailing list
> lilypond-user@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-user
>

oh, great! It was some weeks I was stuck with this issue. I thought the
scheme function would simply copy everything inside the #{ ... #} replacing
the variable.

Thanks a lot Timothy!
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to