lilypond-user
[Top][All Lists]
Advanced

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

Re: Articulations in Separate Voice


From: Valentin Petzel
Subject: Re: Articulations in Separate Voice
Date: Fri, 07 Jan 2022 23:39:25 +0100

Hi Greg, Hi Lukas,

Here is a slightly more powerful approach.

Cheers,
Valentin

Am Freitag, 7. Jänner 2022, 23:14:41 CET schrieb Lukas-Fabian Moser:
> Hi Greg,
> 
> Am 07.01.22 um 22:05 schrieb Gregory Hollands:
> > This solution sounds ideal.
> > I would prefer to add the articulations directly to the music and just
> > filter them out when necessary.
> 
> Valentin already gave a solution involving a music function.
> 
> A dynamic solution (that might be switched on and off during a piece)
> would be:
> 
> \version "2.22"
> 
> removeArticulations =
> #(define-music-function (types) (list?)
>     #{
>       \override Script.before-line-breaking =
>       #(lambda (grob)
>          (if (member (ly:event-property (event-cause grob)
>                                         'articulation-type)
>                      types)
>              (ly:grob-suicide! grob)))
>     #})
> 
> \layout {
>    \removeArticulations #'("downbow" "upbow")
> }
> 
> { c'4\downbow d'\upbow }
> 
> Note that this will not work anymore with 2.23.6; the corresponding
> solution will then be a bit nicer syntax-wise:
> 
> \version "2.23.6"
> 
> removeArticulations =
> #(define-music-function (types) (symbol-list?)
>     #{
>       \override Script.before-line-breaking =
>       #(lambda (grob)
>          (if (memq (ly:event-property (event-cause grob)
>                                         'articulation-type)
>                      types)
>              (ly:grob-suicide! grob)))
>     #})
> 
> \layout {
>    \removeArticulations downbow, upbow
> }
> 
> { c'4\downbow d'\upbow }
> 
> Also Valentin's solution will have to be changed to:
> 
> \version "2.23.6"
> 
> chooseArticulations =
> #(define-music-function (arts music) (symbol-list? ly:music?)
>     (define (predicate music)
>       (if (music-is-of-type? music 'articulation-event)
>           (let ((type (ly:music-property music
>                                          'articulation-type)))
>             (memq type arts))
>           #t))
>     (music-filter predicate music))
> 
> Chords = \chords {
>     \set chordChanges = ##t
>     c1 c1 f2 g2 c1
> }
> 
> Music = \relative c' {
>     e8\downbow dis e g\upbow ~ g4 e\downbow
>     g8 a g c ~ c8 b c d
>     e d c b c d4 c8 ~
>     c2. r4
> }
> 
> \chooseArticulations downbow <<
>    \Chords
>    \new Staff \new Voice <<
>      \Music
>    >>
> 
> 
> \chooseArticulations upbow <<
>    \Chords
>    \new Staff \new Voice <<
>      \Music
>    >>
> 
> 
> \chooseArticulations downbow, upbow <<
>    \Chords
>    \new Staff \new Voice <<
>      \Music
>    >>
> 
> 
> Although I'm a bit surprised that Valentin let you choose what
> articulations to keep instead of what articulations to remove. This
> would be done with:
> 
> removeArticulations =
> #(define-music-function (arts music) (list? ly:music?)
>     (define (predicate music)
>       (if (music-is-of-type? music 'articulation-event)
>           (let ((type (ly:music-property music
>                                          'articulation-type)))
>             (not (member type arts)))
>           #t))
>     (music-filter predicate music))
> 
> or from 2.23.6
> 
> removeArticulations =
> #(define-music-function (arts music) (symbol-list? ly:music?)
>     (define (predicate music)
>       (if (music-is-of-type? music 'articulation-event)
>           (let ((type (ly:music-property music
>                                          'articulation-type)))
>             (not (memq type arts)))
>           #t))
>     (music-filter predicate music))
> 
> with the corresponding changes in calling syntax.
> 
> Lukas

Attachment: removy2.ly
Description: Text Data

Attachment: signature.asc
Description: This is a digitally signed message part.


reply via email to

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