"Rick Hansen (aka RickH)" <[EMAIL PROTECTED]> writes: > I'm not a Scheme programmer, but how does one concatenate more data onto the > end of an existing variable? Is there a string concatenation expression in > scheme that will let someone "add onto" the end of a string using subsequent > commands. For example (below is in a java pseudocode where "+=" means > concatenate to self) how to do same in scheme? > > varVoiceMelody = \relative c' { a4 b c > varVoiceMelody += d | e f > varVoiceMelody += g a | > varVoiceMelody += } > > So that the final value of varVoiceMelody is left being: > > \relative c' { a4 b c d | e f g a | } > > I want to write some macros that when stated simply append their output to > variables already existing in my lp templates, these macros hopefully will > simply generate "varVoiceMelody += whatever" expressions to append to the > proper master variables in the lp code.
What you want is not string concatenation. { a4 b c d } is a music expression, not a string, so look how it is stored internally: \displayMusic { a b c d | } \displayMusic { e f g a | } \displayMusic { a b c d | e f g a | } You'll see a SequenceMusic element, containing a list of EventChord and BarChack elements in its 'elements property. So what you'd like is appending two lists. But there is another, easier, solution. Compare: \displayMusic { a b c d | } \displayMusic { e f g a | } \displayMusic { { a b c d | } { e f g a | } } (the latter being equivalent to { a4 b c d | e f g a | }) There, you build a SequentialMusic object which elements are the previous value of the variable, and the music that is to be appended. A possible implementation (not tested): appendToVariable = #(define-music-function (parser location symbol music) (symbol? ly:music?) (ly:parser-define! parser symbol (make-music 'SequentialMusic 'elements (list (ly:parser-lookup parser symbol) music))) (make-music 'SequentialMusic 'void #t)) myvar = { a4 b c d | } \appendToVariable #'myvar { e f g a | } { \myvar } nicolas _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user