On Sat, Jun 2, 2012 at 6:28 AM, David Kastrup <d...@gnu.org> wrote: > Much more banal, and actually you were right. The internals are working > fine, it is just the user interface that broke down. Change > > autochangeWithPitch = > #(define-music-function (parser location ref music) (ly:music? ly:music?) > (let* ((note (car (ly:music-property ref 'elements))) > (ref-pitch (ly:music-property note 'pitch))) > (make-autochange-music parser music > (if (ly:pitch? ref-pitch) ref-pitch #f)))) > > to > > autochangeWithPitch = > #(define-music-function (parser location ref music) ((ly:pitch?) ly:music?) > (make-autochange-music parser music ref))
Wow. I can't stop being amazed at how more concise the syntax has become lately. > Or straight to > autochange = ... > > since the pitch argument in the changed function is optional (this would > not work if the music to autochange looks like c'4 or so, namely is just > a single note-event, but so what). Do you think "we" could actually extend the default autochange command? Or am I being silly suggesting that? > I actually would write the whole snippet as > autochange = > #(define-music-function (parser location ref music) ((ly:pitch?) ly:music?) > (let ((mus (make-autochange-music parser > (if ref #{ \transpose $ref c' $music #} music)))) > (set! (ly:music-property mus 'element) music) > mus)) > There is no point in meddling with internals for a task like this. If > this was supposed to replace the built-in definition, one would probably > change the internals for a variable split point. But a user-level > snippet? Using \transpose here is certainly good enough. Sure. (That latest trick could be used to update the LSR snippet, methinks: apart from the optarg, it should be compatible with 2.14.) I could have thought of it myself, TBH (if it weren't for that full-on laziness condition I mentioned earlier). Thanks! Cheers, Valentin. _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user