lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: passing a Context to a scheme function (format-metronome-markup)


From: Reinhold Kainhofer
Subject: Re: passing a Context to a scheme function (format-metronome-markup)
Date: Tue, 7 Oct 2008 19:12:16 +0200
User-agent: KMail/1.9.10

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Am Dienstag, 7. Oktober 2008 schrieb Reinhold Kainhofer:
> Am Dienstag, 7. Oktober 2008 schrieb Han-Wen Nienhuys:
> > You can't do this; the format-metronome-markup is run during
> > interpreting, from Metronome_mark_engraver, which will pass the
> > context object by doing context()->self_scm() in C++.
>
> Actually, as Graham noticed, there is only one spot where the context is
> used, namely to obtain the tempoHideNote property, which Graham doesn't
> need anyway.
> A quick hack would be to simply pass some random context to the function
> and hope that things work out. For example, one can pass the default paper
> block (nothing special about that block, but it was the first thing that
> came to my mind, since we already had something similar with extracting the
> papersize names):

A much cleaner way would be to change the format-metronome-markup function to 
make the context argument optional. If it is not given, simply default to #f 
for hide-note:

(define-public (format-metronome-markup text dur count . context)
  (let* ((ctx (and (pair? context) (car context)))
         (hide-note (and ctx (eq? #t (ly:context-property 
ctx 'tempoHideNote))))
         (note-mark (if (and (not hide-note) (ly:duration? dur))
...

I don't know how useful this might be in general, but since it's such an easy 
feature (and I don't think it breaks anything), I prepared a patch:

http://codereview.appspot.com/7055

What do you think?


One can then simply call 

\version "2.11.62"
\header{ 
  piece = #(format-metronome-markup "Allegro" (ly:make-duration 2) 120)
}
\relative c' { c }


Cheers,
Reinhold
- -- 
- ------------------------------------------------------------------
Reinhold Kainhofer, Vienna University of Technology, Austria
email: address@hidden, http://reinhold.kainhofer.com/
 * Financial and Actuarial Mathematics, TU Wien, http://www.fam.tuwien.ac.at/
 * K Desktop Environment, http://www.kde.org, KOrganizer maintainer
 * Chorvereinigung "Jung-Wien", http://www.jung-wien.at/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFI65hzTqjEwhXvPN0RAlOyAKChx/0LCn2ph+/PVI4tCwjUthBqQwCfeLyO
31eNxmo64CxN3XQssiHs9zI=
=2UuL
-----END PGP SIGNATURE-----




reply via email to

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