lilypond-user
[Top][All Lists]
Advanced

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

Re: simple scheme function #{ $note #}


From: Gianmaria Lari
Subject: Re: simple scheme function #{ $note #}
Date: Fri, 11 May 2018 18:14:51 +0200



On 11 May 2018 at 17:58, Aaron Hill <address@hidden> wrote:
On 2018-05-11 08:46, David Kastrup wrote:
Aaron Hill <address@hidden> writes:

On 2018-05-11 06:53, Gianmaria Lari wrote:
Sorry to bother with a simple question. Why this does not work?

\version "2.19.81"
pit = #(define-music-function
        (p) (ly:pitch?)
        )
{ \pit c' }

The result is "error: music function cannot return c'".  It appears
that a simple pitch by itself is not enough to qualify as music.

        #{ $p #}
It's desirable to be able to enter pitches as #{ c' #} and similar.  Add
a duration to get a music _expression_.

But can you return an incomplete music _expression_?  It seems like that is the underlying issue why the original code does not work.

If you change the function to "#{ { $p } #}", it compiles.

Yes, but the duration is not really well-defined here (happens to end up
as the default duration of the current parser).

True, I was not advocating that this is a useful construct, merely showing that it results in a minimally valid _expression_.

yes, I was thinking that the problem was related to the fact that #{ $p #} could be "considered" an incomplete music _expression_. But the fact that the following code 

#{ $p $p #} 
and 
#{ { $p } #}

compiles, make me think that there were something more....

Anyway, should I avoid to write something without duration even if it compiles? For example, should I avoid the following?

#{ c $p c #}

I considered this useful. Because the function return something with a duration that depends from the previous music and this can be 'practical'...

g.



reply via email to

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