lilypond-user
[Top][All Lists]
Advanced

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

Re: Problem with Lilypond functions


From: Mike Solomon
Subject: Re: Problem with Lilypond functions
Date: Fri, 30 Jul 2010 10:45:06 +0200
User-agent: Microsoft-Entourage/11.4.0.080122

Hey Jim,
    I think this does what you want...

\version "2.13.29"

createKey = 
#(define-music-function (parser location m k)
(ly:music? list?) 
  (let* ((p (ly:music-property (car (ly:music-property m
                                                       'elements))
                               'pitch))
         (o (ly:pitch-octave p))
         (n (ly:pitch-notename p))
         (a (ly:pitch-alteration p))
         (tonic (ly:make-pitch o n a))
         (pitch-alist
           (ly:transpose-key-alist
             k
             tonic)))
  (make-music 'KeyChangeEvent
              'tonic
              tonic
              'pitch-alist
              pitch-alist)))

majorKey = 
#(define-music-function (parser location m)
(ly:music?) 
#{
  \createKey $m \major
#})

% canonical
\relative c' {
  \key b \major a b
}

% new way
\relative c' {
  \majorKey b a b
}


On 7/30/10 5:37 AM, "jim.showalter" <address@hidden> wrote:

> I have searched the archives and cannot find why the following is happening.
> They are contrived to demonstrate a larger problem.
> 
> This one works as expected
> 
> majorKey = #(define-music-function (parser location note ) (ly:music?)
> #{
>      a $note g
> #})
> 
> {
>   \majorKey g
> }
> 
> 
> 
> But what I really want to do is something like this.
> 
> majorKey = #(define-music-function (parser location note ) (ly:music?)
> #{
>      \key $note \major
> #})
> 
> {
>   \majorKey g
> }
> 
> I get an error message about that it is expecting  "\default or
> NOTENAME_PITCH"  I get a similar error for
> transpose.  Is there another variable type (other than ly:music) that should
> be used?  Can anyone explain this behavior?
> 
> Thanks,
> Jim
> 
> 
> _______________________________________________
> lilypond-user mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/lilypond-user
> 





reply via email to

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