Autor Thema: EventChord rausfischen  (Gelesen 1398 mal)

erich

  • Member
EventChord rausfischen
« am: Samstag, 26. März 2016, 09:34 »
Hallo und frohe Ostern

Mit dem Script
\version "2.18.2"
#(define function
   (lambda(x)
     (cond ((eq? #t) (begin (display-scheme-music x) x))
           (else x))
 ) )
 
test =
#(define-music-function (parser location original-music)
   (ly:music?)
    (music-map
      function
      original-music )
 )

\score {
  \new Voice {\test {e'1 <g' c''>1}}
}

werden alle Objekte ausgegeben, die mit make-music überschrieben sind.

Was muss ich in der cond-Anweisung statt (eq? #t) setzen, sodass nur das EventChord-Objekt ausgegeben wird?

Gruß
Erich

harm6

  • Member
Re: EventChord rausfischen
« Antwort #1 am: Samstag, 26. März 2016, 10:52 »
Verschiedene Möglichkeiten:

\version "2.18.2"

#(define function
   (lambda(x)
     (cond ;; (1) Vergleich des Namens, via (ly:music-property x 'name)
           ((eq? (ly:music-property x 'name) 'EventChord)
             (begin (display-scheme-music x) x))
           ;; (2) Vergleich des Namens, via (music-is-of-type? x 'event-chord)
           ;; Nach meiner Erfahrung klappt das aber nicht immer
           ((music-is-of-type? x 'event-chord)
             (begin (display-scheme-music x) x))
           ;; (3) Filter nach 'EventChord via (extract-named-music x 'EventChord)
           ;; Gibt eine Liste aus.
           ;; Je nach Absicht das elegenteste
           (#t
             (let ((ev-chords-list (extract-named-music x 'EventChord)))
               (begin
                 (display-scheme-music ev-chords-list)
                 x)))
           (else x))))
 
test =
#(define-music-function (parser location original-music)
   (ly:music?)
    (music-map
      function
      original-music ))

\score {
  \new Voice { \test { e'1 <g' c''>1 } }
}

HTH,
  Harm

P.S.
Du weißt das (eq? #t) immer #t zurüchgibt?

erich

  • Member
Re: EventChord rausfischen
« Antwort #2 am: Samstag, 26. März 2016, 12:28 »
Hallo Harm

"HTH" - ich hab's nachgeschlagen: „Hoffe das hilft weiter“

Vielen Dank, jaaaaaaaaaaaa, es hat geholfen. Der salvatorische Hinweis ließ mich schmunzel; aber man kann ja nie wissen!

Herlichen Gruß
Erich