[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: relative music inside music functions explodes when used twice
From: |
Janek Warchoł |
Subject: |
Re: relative music inside music functions explodes when used twice |
Date: |
Sun, 12 Oct 2014 22:54:24 +0200 |
2014-10-12 12:45 GMT+02:00 David Kastrup <address@hidden>:
> I'm not even sure I understand _how_ you want the relativization to
> happen. One after the other?
If you mean \musicII should be relativized after \music, that's
roughly what i want.
> In that case, you can use
>
> voiceDivisi =
> #(define-music-function (parser location m1 m2) (ly:music? ly:music?)
> (make-relative (m1 m2) #{ #m1 #m2 #}
> #{
> \tag divI { $m1 }
> \tag divII { $m2 }
> \tag together << { \dynamicUp $m1 } \\ { \dynamicDown $m2 } >>
> #}))
Seems to work! :)
> > How should i work around this? Maybe instead of using tags i should
> > write a function with a switch statement inside? I know that i can
> > put \relative command inside \voiceDivisi, but i'd like to avoid this
> > as it would add a lot of typing.
>
> It seems like the ingenuity of my make-relative macro never really
> caught on...
I've found https://code.google.com/p/lilypond/issues/detail?id=3118
and looked at input/regression/make-relative.ly but i don't think i
really understand what it does (and how). I'll try digging deeper,
but any additional explanations you could provide would be very
welcome (as i have very limited time available for tinkering...) - i'd
very much like to be able to understand your ingenuity :)
> By the way: I'm not sure it will be transparent enough to have << \\ >>
> be recognized at the proper point of time. If not, you'll need to use
> explicit voices instead.
Absolutely. My code is just a proof of concept, and I've used << \\
>> to minimize the example.
best,
Janek