Hilfslinien

Begonnen von erich, Donnerstag, 7. September 2017, 09:30

« vorheriges - nächstes »

erich

Hallo allen

An dem Beispiel

\version "2.19.65"
\score {<<
  \new Staff
    \new Voice {
      \override Staff.StaffSymbol.line-positions = #'( -10 -6 -2  2 6 )
      \override Staff.StaffSymbol.ledger-positions = #'(-14 -12  -8 -4 0)
      <b, b'>}
        >>}


kann man erkennen, dass die Hilslinien innerhalb des Systems nur gesetzt werden, wenn auch ein Notenkopf gesetzt wird,
außerhalb des Systems werden alle Hilfslinien gesetzt.

Ich wünsche mir, dass man auch außerhalb des Systems Hilfslinien kennzeichnen kann, die nur in Verbindung mit einem Notenkopf gesetzt werden.
Meine Anregung: man solle Hilfslinien, die nur in Verbindung mit einem Notenkopf erscheinen sollen, einklammern können.
Sieht einer die Möglichkeit, das zu programmieren.

Gruß
Erich



harm6

Hallo Erich,

Deine Frage soll nicht gänzlich ohne Antwort bleiben...

Hilfslinien einzeln anzusprechen und über die bereits implementierten Mechanismen hinaus in irgendeiner Art und Weise programmatisch zu verändern ist nur theoretisch machbar.

Du kannst ja mal versuchen bei der zweiten Note nur die zweite Hilflinie in rot darstellen zu lassen.
{ e e }

Praktisch müßtest Du für Dein Vorhaben die entsprechenden .cc-files patchen, möglicherweise könnte man in scheme auch eine komplett neue stencil-procedure schreiben.

Beides wird nicht unerhebliche Schwierigkeiten mit sich bringen.

Ich selbst habe weder die Zeit noch die Motivation es auch nur zu versuchen, beim patchen von .cc-files fehlt mir auch die Fähigkeit dazu.


Sorry,
  Harm

erich

Hallo Harm,

ich hatte befürchtet, dass die Lösung nicht einfach sein wird - eher unmöglich ist.

Ich hatte folgendes gefunden

     
Zitatledger-positions-function (any type)

    A quoted Scheme procedure that takes a StaffSymbol grob and the vertical position of a note head as arguments and returns a list of ledger line positions.

Aber leider habe ich nirgendwo ein Beispiel gefunden, in dem die Funktion angewendet wird. Würdest Du vermuten, dass man mit dieser Funktion meinem Problem zuleibe rücken kann?

Vielen Dank für Deine Antwort und Gruß
Erich

harm6

#3
Ein Beispiel für die Anwendung von 'ledger-positions-function findest Du im reg-test:
ledger-positions-customization.ly

Möglicherweise ist auch hier was dabei:
http://lilypond.1069038.n5.nabble.com/template/NamlServlet.jtp?macro=search_page&node=2&query=ledger-positions-function

Ob man damit weiterkommen kann? Müßtest Du erforschen...

Gruß,
  Harm

Nachtrag:
'ledger-positions-function findet sich in lily/staff-symbol.cc

erich

Hallo Harm,

ich glaube es geht so:

\version "2.19.65"
\score {<<
  \new Staff
    \new Voice {
      \override Staff.StaffSymbol.line-positions = #'( -10 -6 -2  2 6 )
      %\override Staff.StaffSymbol.ledger-positions = #'(-14 -8 -4 0)
      \once \override NoteHead.ledger-positions = #'(-14 0)
      <b,  b'>}
        >>}


Die erforderlich Liste wird man in scheme programmieren können.

Gruß
Erich

harm6

\once \override NoteHead.ledger-positions = #'(-14 0)

gehört zu den bereits implementierten features...
Aber versuch mal jetzt nur eine Hilflinie einzufärben, von einklammern ganz zu schweigen.

Gruß,
  Harm

erich

Hallo Harm,

meinst Du das so?


\version "2.19.65"
rot =
#(define-music-function (music)
   (ly:music?)
   #{
     \tweak NoteHead.color #red
     $music
   #})
\score {<<
  \new Staff
    \new Voice {
      \override Staff.StaffSymbol.line-positions = #'( -10 -6 -2  2 6 )
      \override NoteHead.ledger-positions = #'(-14 0)
      <b, b'> <\rot b,  b'> <b, \rot b'> <\rot b, \rot b'>}
        >>}


Gruß
Erich

p.s. ich war verreist

harm6

Hallo Erich,

Zitatmeinst Du das so?

Hier hast Du eine Note eingefärbt, ich meinte eher nur eine Hilflinie einzufärben.

Deine ursprüngliche Anfrage:
Zitatman solle Hilfslinien, die nur in Verbindung mit einem Notenkopf erscheinen sollen, einklammern können.
setzt voraus, daß man eine einzige Hilfslinie ansprechen können muß.
Sie einzufärben ist eine der einfachsten Methoden, um herauszufinden wie das gehen könnte.

Zugegebenermaßen ist mir nicht ganz klar wie das Einklammern nachher aussehen soll.

Und man kann das Einklammern faken indem man nicht die Hilfslinie sondern die Note, die sich auf der Hifslinie befindet, einklammert und die Klammern dann passend macht.
Aber das wäre ein workaround...

Gruß,
  Harm

erich

Hallo Harm,

ich will nochmal verdeutlichen, worüber ich mich etwas gewundert hatte.
Der Code lässt sich noch etwas reduzieren zu:


\version "2.19.65"
\score {<<
  \new Staff
    \new Voice {
      \override Staff.StaffSymbol.line-positions = #'( -10 -6 -2  2 6 )
      <b, b'>}
        >>}


und man erhält wieder die Darstellung, wie ich sie eingangs eingebunden hatte.

Wenn man  die override-Anweisung zu #'(-14 -10 -6 -2  2 6 ) erweitert, verschwindet die Hilfslinie über der untersten Note. Ich suche eine Möglichkeit die Hilfslinie von vornherein zu unterdrücken. In LilyPond ist ja ein Mechanismus angelegt, durch den dieses zwischen den Linien schon geschieht.

Gruß
Erich