Hi, I'm a little bit new to lilypond, and I'm trying to write a gliss
into a note and that works fine with something like the following:

: \hideNotes \grace f \glissando \unHideNotes c'

My question is how can I simplify this? I don't want to type this
whole thing every time I want this. I'd like to do something like:

: \glissin f c'

Am I correct to assume that the best way to do this is with
define-music-function? I am trying to write a function that takes two
arguments and works as if I typed the whole example above. The
following example contains my attempt, which does not compile:


\version "2.16.0"
\include "english.ly"

glissin =
    #(define-music-function
        (parser location notea noteb)
        (ly:music? ly:music?)
        #{
            \hideNotes \grace $notea \glissando \unHideNodes $noteb
        #})

tune = {
    c4 d e f |
    g \hideNotes \grace f \glissando \unHideNotes c' b a |
    c4 d e f |
    g \glissin f c' b a |
}

\score {
    \new Staff {
        \clef "treble_8"
        \time 4/4
        \tune
    }
}


When I compile, I get the following output:


Starting lilypond-windows.exe 2.16.0 [test.ly]...
Processing `c:/.../test.ly'
Parsing...
c:/.../test.ly:9:37: error: syntax error, unexpected EVENT_IDENTIFIER
            \hideNotes \grace $notea
                                     \glissando \unHideNodes $noteb

c:/.../test.ly:9:48: error: unknown escaped string: `\unHideNodes'
            \hideNotes \grace $notea \glissando
                                                \unHideNodes $noteb

c:/.../test.ly:16:20: error: error in #{ ... #}
    g \glissin f c'
                    b a |

c:/.../test.ly:20:4: error: errors found, ignoring music expression

    \new Staff {

fatal error: failed files: "c:\\...\\test.ly"
Exited with return code 1.


I notice that I can replace $notea with an immediate note like f, and
it will compile correctly. There seems to be a problem with how $notea
is being parsed in combination with \glissando that I don't
understand.

All I really want is something like a preprocessor macro to cut down
on boilerplate code, but something like this does not seem to be
available in lilypond. The define-music-function thing seems like it
would be a reasonable substitute for that if I could get it to work,
but I'm finding it hard to figure out what's going on. When trying to
solve this problem, I'm not sure where to start in the documentation.

Can anyone help?


-- Brad Smith

_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to