• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

make-engraver

Begonnen von Manuela, Dienstag, 30. August 2016, 17:21

Vorheriges Thema - Nächstes Thema

Manuela

Hi,

Lilypond überrascht mich immer wieder  ;)

Beim Stöbern im Forum bin ich auf folgenden Thread gestoßen: Indexnummer eines Staff

der folgenden Code enthält

\version "2.19.37"

\layout {
  \context {
    \Voice
    \consists
    #(let ((notes '()))
       (make-engraver
        (listeners
         ((note-event engraver event)
          (set! notes (cons event notes))))
        ((finalize engraver)
         (write-me "\nHow-many-notes? " (length notes))
         (set! notes '()))))
  }
}

\score {
  \new Staff \repeat unfold 13 c''1
}



was ich sehr interessant finde. Nun frage ich mich, wie ich es anstellen muss, um auf die Eigenschaft dieses Engravers zuzugreifen, z.B. mitten im Staff die aktuelle Notenzahl abfragen? Wahrscheinlich geht es eh ganz einfach, und ich stehe wieder mal auf der Seife...

Arnold

Hallo Manuela,

wenn Du Dir den »Engraver« als »Arbeiter (-Programm)« vorstellest, dann ist es der Engraver, welcher die "Events" einsammelt und die »Kontexte« befragt oder bearbeitet - und so quasi nebenbei kann er auch noch seiner »Hauptaufgabe« nachgehen und Grobs erstellen (und diese anderen Engravern zur Kenntnis senden).

Demnach kann z. Bsp. ein Engraver (im Staff-Kontext für die Notenzeile, ...) alle Note-Events registrieren und intern zählen. Nur eine SMS wird er schwerlich senden können, wenn der einmilionste Note-Event erschienen ist.

Also, Manuela, würdest Du bitte noch genauer beschreiben, welche »Aktionen« Dir vorschweben (und wann diese der Engraver ausführen soll).

Arnold

Manuela

Zitat von: Arnold am Mittwoch, 31. August 2016, 10:57
Demnach kann z. Bsp. ein Engraver (im Staff-Kontext für die Notenzeile, ...) alle Note-Events registrieren und intern zählen. Nur eine SMS wird er schwerlich senden können, wenn der einmilionste Note-Event erschienen ist.

Eine SMS wäre lustig  ;)

Was mir vorschwebt wäre ungefähr dies:

\version "2.19.37"

\layout {
  \context {
    \Voice
    \consists
    #(let ((notes '()))
       (make-engraver
        (listeners
         ((note-event engraver event)
          (set! notes (cons event notes))))
        ((finalize engraver)
         (write-me "\nHow-many-notes? " (length notes))
         (set! notes '()))))
  }
}

\score {
  \new Staff { \repeat unfold 13 c''1
  #(write-me "How-many-notes?"  notecounterengraver.number)
  \repeat unfold 10 d1
  #(write-me "How-many-notes? "  notecounterengraver.number)
...usw
}



Ich hoffe, es ist jetzt etwas klarer, was ich meine.