lilypond-user
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]