Maximilian Albert <[EMAIL PROTECTED]> writes:

> Nicolas Sceaux schrieb:
>
>> Here is the structure of your function:
>>
>> setAltStaff =
>> #(define-music-function (parser location style lowerOctave upperOctave)
>>                      (string? number? number?)
>>   (if #t
>>       #{ ..foo.. #})
>>   #{ ..baz.. #})
>>
>> The function return the last form, which is always #{ ..baz.. #}.
>> You should write instead:
>>
>> setAltStaff =
>> #(define-music-function (parser location style lowerOctave upperOctave)
>>                      (string? number? number?)
>>   (if condition
>>       #{ ..foo.. #}
>>       #{ ..baz.. #}))
>
> But is that what Kevin wants to do? As far as I understood, he wants the
> #{ ..baz.. #} part to be executed unconditionally.

Ok, I misunderstood. 

The music expression that is finally inserted into the surrounding music
is what is *returned* by the music function, that is, the last form. So
the #{..foo..#} has to be conditionaly inserted in the last form,
otherwise it is lost in the void.

setAltStaff =
#(define-music-function (parser location ...)
                        (...)
   (make-music 'SequentialMusic
     'elements (list (if ..condition..
                         #{ ..foo.. #}
                         ;; if condition is not fulfilled, empty music:
                         (make-music 'SequentialMusic))
                     #{ ..baz.. #})))

nicolas


_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to