Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: hotte am Donnerstag, 11. März 2021, 19:47

Titel: Ossia
Beitrag von: hotte am Donnerstag, 11. März 2021, 19:47
Hallo liebe Leute,

nach langer Zeit melde ich mich mal wieder.
Ich habe ein Problem mit der Ossia-Funktion. Ich wollte ein Ossia schreiben das sich nicht einzeln über dem eigentlichen System sondern als StaffGroup damit die Taktstriche durch beide Systeme gehen. Dazu musste ich ich den Clef-engraver entfernen damit der Schlüssel nicht immer über allen systemen angezeigt wird.
Jetzt ist aber der Abstand am Anfang der Zeile bevor das Ossia beginnt zwischen Notenschlüssel und erster Note viel zu gering.
Ich habe schon einiges versucht aber konnte das Problem bisher nicht lösen.
Meine Version: 2.18.2
Mein Code:

\paper {
  indent = #0
}

bisOssia = \relative c' {
  \repeat unfold 48 { c16 } \break
  \repeat unfold 16 { c }
}

abOssia = \relative c' {
  \repeat unfold 32 { c16} \break
  \repeat unfold 48 { c16 }
}

ossia = \relative c'' {
  \repeat unfold 32 { c16 }
  \revert Staff.Clef.stencil
  \repeat unfold 16 { c }
}

<<
  \new StaffGroup <<
    \new Staff = ossia \with {
      \remove "Time_signature_engraver"
      \override Clef.stencil = ##f
    }
    { \stopStaff s2*9 }
    \new Staff {
      \bisOssia
      <<
        { \abOssia }
        \context Staff = ossia {
          \startStaff
          \ossia
          \stopStaff
        }
      >>
    }
  >>
>>


Ich weiß das ist nicht sehr wenig Code aber vielleicht kann mir ja trotzdem jemand helfen wie ich das Problem lösen kann.

Vielen Dank und Grüße

hotte
Titel: Antw:Ossia
Beitrag von: kilgore am Freitag, 12. März 2021, 08:34
Hallo hotte!

Ganz verstehe ich das Problem nicht.

ZitatJetzt ist aber der Abstand am Anfang der Zeile bevor das Ossia beginnt zwischen Notenschlüssel und erster Note viel zu gering.

zu gering für was? Für meinen Augen sieht es genau richtig aus.

Aber trotzdem, würde ich in so einer Situation wahrscheinlich etwas schnell und unkompliziert machen, wie ein unsichtbare \grace vor dem ersten Ton um etwas Platz zu schaffen:


\version "2.18.2"

\paper {
  indent = #0
}

bisOssia = \relative c' {
  \repeat unfold 48 { c16 } \break
  \grace { \hideNotes c8 \unHideNotes }
  \repeat unfold 16 { c16 }
}

abOssia = \relative c' {
  \repeat unfold 32 { c16} \break
  \repeat unfold 48 { c16 }
}

ossia = \relative c'' {
  \repeat unfold 32 { c16 }
  \revert Staff.Clef.stencil
  \repeat unfold 16 { c }
}

<<
  \new StaffGroup <<
    \new Staff = ossia \with {
      \remove "Time_signature_engraver"
      \override Clef.stencil = ##f
    }
    { \stopStaff s2*9 }
    \new Staff {
      \bisOssia
      <<
        { \abOssia }
        \context Staff = ossia {
          \startStaff
          \ossia
          \stopStaff
        }
      >>
    }
  >>
>>
Titel: Antw:Ossia
Beitrag von: hotte am Freitag, 12. März 2021, 09:57
Hallo kilgore,

vielen Dank! Das ist auf jeden Fall schon mal eine gute Lösung.
Jetzt besteht mein Originalcode allerdings aus 12 Zeilen bevor das Ossia beginnt. Ich kann natürlich den \grace-Befehl vor jeder Zeile einfügen. Aber gibt es da vielleicht auch eine allgemeine Lösung für den gesamten Code?

Zitatzu gering für was? Für meinen Augen sieht es genau richtig aus.

Also bei mir wird das erste c mit sehr wenig Abstand zum Notenschlüssel angezeigt. Wenn ich "\override Clef.stencil = ##f" wegnehme ist der Abstand wieder normal (so wie mit dem \grace-Befehl). Nur dann wird mir über jeder einzelner Zeile ein zweiter einzelner Notenschlüssel angezeigt.

Herzlichen Dank und viele Grüße

hotte
Titel: Antw:Ossia
Beitrag von: kilgore am Freitag, 12. März 2021, 10:14
Versuche es mal mit \override Clef.transparent = ##t. So wird den Schlüssel gedruckt (aber unsichtbar) und der Abstand bleibt gleich als wäre der Schlüssel noch da...
Titel: Antw:Ossia
Beitrag von: hotte am Freitag, 12. März 2021, 10:42
Danke, super!
Das klappt jetzt mit dem Abstand.
Jetzt tritt nur ein neues Problem auf. Nämlich wird mir dann am Anfang jedes unsichtbaren Systems eine Taktzahl angezeigt. Jeder mir bekannte Befehl ("\remove "Bar_number-engraver"", "\override BarNumber.transparent = ##t" usw.) funktioniert leider nicht.
Titel: Antw:Ossia
Beitrag von: hotte am Samstag, 13. März 2021, 13:22
Oder gibt es vielleicht eine Möglichkeit ein stinknormales Ossia mit alignAboveContext zu erstellen und dann mit den Taktstrichen beide Systeme zu verbinden?
Mein Ossia erstreckt sich halt über 8 Takte und ich möchte nicht dass es so über der eigentlichen Stimme hängt sondern mit ihr verbunden ist wie ein zweiter Staff oder eine zusammenhängende StaffGroup.
Irgendwie komme ich gerade nicht weiter.
Titel: Antw:Ossia
Beitrag von: hotte am Samstag, 13. März 2021, 23:28
!!!!!! Ich hab die Lösung gefunden

\score {
  <<
    \new StaffGroup \relative c' {
      \set StaffGroup.systemStartDelimiter = #'SystemStartBar
      \new Staff = main {
        \repeat unfold 48 { c16 } \break |
        \repeat unfold 16 { c }
        <<
          { \repeat unfold 32 { c } \break |
            \repeat unfold 16 { c }
          }
          \new Staff \with {
            \remove "Time_signature_engraver"
            alignAboveContext = #"main"
            firstClef = ##f
          }
          { \repeat unfold 48 { c' } }
        >>
        \repeat unfold 32 { c, }
      }
    }
  >>
}


Das ist genau so wie ich es haben wollte. Habe mit den ganzen Variablen viel zu kompliziert gedacht. Jetzt muss ich nur noch die Größe ändern.
Danke für Eure Inspiration.
Titel: Antw:Ossia
Beitrag von: kilgore am Montag, 15. März 2021, 09:14
Hallo hotte,
Freut mich, dass du eine Lösung gefunden hast! ich war ein paar Tage offline und lese das alles erst jetzt. Weiterhin viel Erfolg mit Lilypond :)
Titel: Antw:Ossia
Beitrag von: hotte am Montag, 15. März 2021, 10:20
Danke  :)