lilypond-user
[Top][All Lists]
Advanced

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

Re: Issue a key change in Scheme syntax


From: Urs Liska
Subject: Re: Issue a key change in Scheme syntax
Date: Wed, 4 Apr 2018 16:37:01 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0



Am 04.04.2018 um 13:17 schrieb David Kastrup:
Urs Liska <address@hidden> writes:

Hi,

in my infrastructure I have a function that binds

(key-signature
      #{
        \key
        #(get-meta-option base-path 'key-tonic)
        #(get-meta-option base-path 'key-mode)
      #})

but I would like to also change this to Scheme syntax (if it makes any
sense after all).
So?  Why don't you do it?

The first call to get-meta-option retrieves a Pitch object, the second
a list ((0 . 0) (1 . 0) (2 . 0) (3 . 0) (4 . 0) (5 . 0) (6 . 0)) which
had been stored as \major.

Obviously \key expects a pitch and a mode, but \displayMusic { \key d
\major } returns


(make-music

'SequentialMusic

'elements

(list (make-music

'KeyChangeEvent

'pitch-alist

(list (cons 1 0)

(cons 2 0)

(cons 3 1/2)

(cons 4 0)

(cons 5 0)

(cons 6 0)

(cons 0 1/2))

'tonic

(ly:make-pitch -1 1))))

where the steps of the scale obviously have already been "transposed"
to reflect d major.
So?

Is it possible to write the Scheme function issuing the key change
with the pitch and the generic mode as input?
(key-signature
      (key
        (get-meta-option base-path 'key-tonic)
        (get-meta-option base-path 'key-mode)))

Obviously I am missing something here.

No.


Of course, you can also take a look at the definition of \key in
ly/music-function-init.ly if you want to stick with 2.18 or something.


I *still* get confused by so many basic things, for example the fact that \key, \time etc. are not (all) elements that are directly processed by the parser but may be implemented as functions and thus can *directly* be called through Scheme syntax.

Arrgh.



reply via email to

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