Notenschlüssel bei ossia

Begonnen von Köbi, Samstag, 28. September 2019, 19:53

« vorheriges - nächstes »

Köbi

Liebe LilyPonder

Ich "kämpfe" mit einem ossia-staff :-(


\version "2.19.83"

<<
  \new Staff  \with
  {
    \remove "Time_signature_engraver"
    alignAboveContext = #"main"
    fontSize = #-3
    \override StaffSymbol.staff-space = #(magstep -3)
    \override StaffSymbol.thickness = #(magstep -3)
    firstClef = ##f
  }
  {
    <<
      \relative {
        \startStaff
        \clef bass
        c4 c c c
        \stopStaff s1 \startStaff
        \clef treble
        c''4 c c c
        \stopStaff s1*2 \startStaff
        \clef treble
        c4 c c c
        \stopStaff
      }
    >>
  }
  \new Staff
  {
    <<
      \relative {
        \repeat unfold 4 { c'4 c c c }
        \break
        \repeat unfold 3 { c'4 c c c }
      }
    >>
  }
>>



  • Am Anfang möchte möchte ich, dass beim ersten staff die Notenlinien erst unmittelbar vor dem ersten Ton beginnen (und nicht schon ganz links).
  • Unmittelbar vor dem ersten Ton soll ein kleiner Bassschlüssel erscheinen.
  • Wie verhindere ich, dass auf einer neuen Zeile am Anfang eine kleiner Notenschlüssel erscheint?
  • Wie kann ich die Taktzahlen eins runter zum zweiten staff verschieben?
  • Wie erzwinge ich im Takt 6 einen kleinen Violinschlüssel?

Viele Fragen auf kleinsten Raum...

Vielen Dank im voraus!
Köbi

Manuela

#1
\version "2.19.82"
\language "deutsch"

\layout {
  \context {
    \Score
    \remove Bar_number_engraver
  }
  \context {
    \Staff
    \consists Bar_number_engraver
    \override BarNumber.color = #(rgb-color 0.7 0.7 0.7)
    \override BarNumber.layer = #-200
    \override BarNumber.outside-staff-priority =#'()
    \override BarNumber.padding = #1
    \override BarNumber.font-size = #-1
    \override BarNumber.font-series = #'bold
    \override BarNumber.self-alignment-X = #0
    \override BarNumber.break-visibility = #end-of-line-invisible
    barNumberVisibility = #(lambda (n x) (= (modulo n 1) 0))
  }
}

\paper {
  ragged-right = ##t
}

<<
  \new Staff = "3"
  {
    <<
      \relative {
        \once \override Staff.BarNumber.X-offset = #6
        \bar "" \grace s8
        \repeat unfold 4 { c'4 c c c }
        \break
        \repeat unfold 5 { c'4 c c c }
      }
    >>
  }
  \new Staff  \with
  {
    alignAboveContext = #"3"
    fontSize = #-2
    \override StaffSymbol.staff-space = #(magstep -2)
    \remove "Time_signature_engraver"
    \remove "Bar_number_engraver"
    \override Clef.break-visibility = #all-invisible
    %\override Clef.color = #red
  }
  {
    \once \override Staff.Clef.stencil = ##f
    \stopStaff
    \grace s8
    <<
      \relative {
        \startStaff
        \clef bass
        c4 c c c
        \stopStaff
        s1
        s
        \temporary \override Staff.BarLine.stencil = ##f
        \startStaff
        \clef treble
        c''4 c c c
        \stopStaff
        s1
        \startStaff
        \set Staff.forceClef = ##t
        \clef treble
        c4 c c c
        \revert Staff.BarLine.stencil
        \set Staff.forceClef = ##t
        \clef treble
        c c c c
      }
    >>
  }
>>


\grace zu Beginn muss man in allen Staffs einfügen, sonst treten lustige Effekte auf. Ich habe keinen anderen Weg gefunden, um den gewünschten Effekt zu erreichen.

Zusätzlich habe ich verschiedene Formatierungs- und Anzeigeoptionen für die Taktzahlen eingebaut, einfach auskommentieren oder löschen, wenn nicht gewünscht.
Danke für eure Hilfe
viele Grüße
-- Manuela

Malte

#2
Hallo Köbi,

Zitat von: Köbi am Samstag, 28. September 2019, 19:53
Am Anfang möchte möchte ich, dass beim ersten staff die Notenlinien erst unmittelbar vor dem ersten Ton beginnen (und nicht schon ganz links).
Das Beste, was mir dafür einfällt, ist \grace. Ist nicht ganz die feine Art, aber funktioniert.
Zitat
Unmittelbar vor dem ersten Ton soll ein kleiner Bassschlüssel erscheinen.
Ich nehme an, all diese Schlüssel sollen volle Größe haben? Dafür hab ich full-size-change auf ##t gesetzt. Außerdem hab ich ihn noch per extra-offset verschoben. extra-offset sollte man nur verwenden, wenn gar nichts anderes mehr hilft, aber ich hab keine andere Lösung gefunden.
Zitat
Wie verhindere ich, dass auf einer neuen Zeile am Anfang eine kleiner Notenschlüssel erscheint?
Indem du die break-visibility auf all-invisible setzt und nur da, wo doch einer stehen soll, per \once \override das Zeigen erlaubst.
Zitat
Wie kann ich die Taktzahlen eins runter zum zweiten staff verschieben?
So wie ich das sehe, passiert das automatisch, wenn kein erster Staff da ist. Sollen sie auch dann zum zweiten geschoben werden, wenn ein erster existiert? Dann müßtest du den Bar_number_engraver aus dem Score-Kontext entfernen und per \with-Block in den unteren Staff-Kontext packen.
Zitat
Wie erzwinge ich im Takt 6 einen kleinen Violinschlüssel?
Siehe oben (break-visibility).

Viele Grüße
Malte

\version "2.19.83"

\new Score \with {
  \remove Bar_number_engraver
} <<
  \new Staff  \with
  {
    \remove "Time_signature_engraver"
    alignAboveContext = #"main"
    fontSize = #-3
    \override StaffSymbol.staff-space = #(magstep -3)
    \override StaffSymbol.thickness = #(magstep -3)
    firstClef = ##f
    \override Clef.break-visibility = #all-invisible
    \override Clef.full-size-change = ##t
  }
  {
    <<
      \relative {
        \stopStaff
        \grace s8
        \startStaff
        % Nicht gut, aber ich find keine bessere Lösung:
        \once \override Staff.Clef.extra-offset = #'(1 . 0)
        \clef bass
        c4 c c c
        \stopStaff s1 \startStaff
        \clef treble
        c''4 c c c
        \stopStaff s1*2 \startStaff
        \once \override Staff.Clef.break-visibility = #end-of-line-invisible
        \clef treble
        c4 c c c
        \stopStaff
      }
    >>
  }
  \new Staff \with {
    \consists Bar_number_engraver
  }
  {
    <<
      \relative {
        \repeat unfold 4 { c'4 c c c }
        \break
        \repeat unfold 3 { c'4 c c c }
      }
    >>
  }
>>


Edit: Grad gesehen, daß Manuela schon geantwortet hat ... vielleicht hilfts trotzdem noch was ;)
2. Edit: Interessant, Manuela geht auch über \grace. Aber für die Sichtbarkeit hat sie forceClef verwendet, was ich nicht kannte. Wieder was gelernt. Ach ja, und statt \override X.stencil = ##f und \revert X.stencil kann man \omit X und \undo \omit X verwenden.

Köbi

Hallo Manuela und Malte, vielen Dank für die schnellen Antworten! Anscheinend habe ich mein Minimalbeispiel etwas zu stark vereinfacht. "In echt" ist es ein 3/4-Takt. Da geht leider wieder einiges schief :(. Insgesamt sieht es zwar etwas besser aus, aber wirklich befriedigend ist es mit einem 3/4-Takt noch nicht.


\version "2.19.83"

\paper {
  ragged-right = ##t
}

\new Score \with {
  \remove Bar_number_engraver
}
<<
  \new Staff  \with
  {
    \remove "Time_signature_engraver"
    fontSize = #-2
    \override StaffSymbol.staff-space = #(magstep -2)
    \override StaffSymbol.thickness = #(magstep -2)
    firstClef = ##f
    \override Clef.break-visibility = #all-invisible
    \override Clef.full-size-change = ##t
    \override Clef.color = #red
  }
  {
    <<
      \relative {
        \stopStaff
        \grace s8
        \startStaff
        % Nicht gut, aber ich find keine bessere Lösung:
        \once \override Staff.Clef.extra-offset = #'(1 . 0)
        \clef bass
        c4 c c
        \stopStaff s2. \startStaff
        \clef treble
        c''4 c c
        \stopStaff s2. \startStaff
        \once \override Staff.Clef.break-visibility = #end-of-line-invisible
        \clef treble
        c4 c c
        \stopStaff s2. \startStaff
        \once \override Staff.Clef.break-visibility = #end-of-line-invisible
        \clef treble
        c4 c c
        \stopStaff
      }
    >>
  }
  \new Staff \with {
    \consists Bar_number_engraver
  }
  {
    <<
      \relative {
        \time 3/4
        \repeat unfold 3 { c'4 c c }
        \break
        \repeat unfold 3 { c4 c c }
        \break
        \repeat unfold 3 { c4 c c }
      }
    >>
  }
>>


Folgende Probleme stellen sich (neu):

  • Irgendwo funkt noch ein 4/4 rein, wo?
  • Der Bassschlüssel ist durch den 3/4-Takt wieder weiter nach links gerutscht.
  • Beim Takt 3 z.B. erscheint ein Taktstrich unmittelbar nach dem kleinen Notenschlüssel.
  • Am Ende der 2. Zeile erscheint ein einzelner Taktstrich.
  • Am Anfang der 3. Zeile ist der Notenschlüssel auch wieder ganz links.

Vermutlich hängen die Punkte 2 & 5, resp. 3 & 4 zusammen. Habt ihr weitere Ideen?

Manuela

Zitat von: Malte am Sonntag, 29. September 2019, 09:52
2. Edit: Interessant, Manuela geht auch über \grace. Aber für die Sichtbarkeit hat sie forceClef verwendet, was ich nicht kannte. Wieder was gelernt. Ach ja, und statt \override X.stencil = ##f und \revert X.stencil kann man \omit X und \undo \omit X verwenden.

Hallo Malte, es gibt so viele Kommandos, die kannst du unmöglich alle kennen. Ich durchforste standardmäßig das LSR, dort habe ich forceClef gefunden. Zunächst dachte ich, es bewirkt nichts, bis ich bemerkte, dass ich den Befehl an der falschen Stelle eingefügt hatte.

\omit sollte ich mir auch endlich mal merken.

Anscheinend liegt es nicht an meiner Unfähigkeit, dass mir nichts anderes als \grace eingefallen ist. D.h. ich hätte schon andere Ansätze gehabt, die haben jedoch nicht funktioniert.
Danke für eure Hilfe
viele Grüße
-- Manuela

Manuela

#5
Zitat von: Köbi am Sonntag, 29. September 2019, 10:19
Hallo Manuela und Malte, vielen Dank für die schnellen Antworten! Anscheinend habe ich mein Minimalbeispiel etwas zu stark vereinfacht. "In echt" ist es ein 3/4-Takt. Da geht leider wieder einiges schief :(. Insgesamt sieht es zwar etwas besser aus, aber wirklich befriedigend ist es mit einem 3/4-Takt noch nicht.

Vermutlich hängen die Punkte 2 & 5, resp. 3 & 4 zusammen. Habt ihr weitere Ideen?

Bevor ich jetzt alles wieder auseinander pflücke: ich habe in meiner Lösung den Takt geändert, s1 durch s2. ersetzt sowie alle Noten durch 3 statt 4 ersetzt, meine Lösung funktioniert noch immer

\version "2.19.82"
\language "deutsch"

\layout {
  \context {
    \Score
    \remove Bar_number_engraver
  }
  \context {
    \Staff
    \consists Bar_number_engraver
    \override BarNumber.color = #(rgb-color 0.7 0.7 0.7)
    \override BarNumber.layer = #-200
    \override BarNumber.outside-staff-priority =#'()
    \override BarNumber.padding = #1
    \override BarNumber.font-size = #-1
    \override BarNumber.font-series = #'bold
    \override BarNumber.self-alignment-X = #0
    \override BarNumber.break-visibility = #end-of-line-invisible
    barNumberVisibility = #(lambda (n x) (= (modulo n 1) 0))
  }
}

\paper {
  ragged-right = ##t
}

<<
  \new Staff = "3"
  {
    <<
      \relative {
        \time 3/4
        \once \override Staff.BarNumber.X-offset = #6
        \bar "" \grace s8
        \repeat unfold 4 { c'4 c c }
        \break
        \repeat unfold 5 { c'4 c c }
      }
    >>
  }
  \new Staff  \with
  {
    alignAboveContext = #"3"
    fontSize = #-2
    \override StaffSymbol.staff-space = #(magstep -2)
    \remove "Time_signature_engraver"
    \remove "Bar_number_engraver"
    \override Clef.break-visibility = #all-invisible
  }
  {
    \once \override Staff.Clef.stencil = ##f
    \stopStaff
    \grace s8
    <<
      \relative {
        \startStaff
        \clef bass
        c4 c c
        \stopStaff
        s2.
        s
        \temporary \override Staff.BarLine.stencil = ##f
        \startStaff
        \clef treble
        c''4 c c
        \stopStaff
        s2.
        \startStaff
        \set Staff.forceClef = ##t
        \clef treble
        c4 c c
        \revert Staff.BarLine.stencil
        \set Staff.forceClef = ##t
        \clef treble
        c c c
      }
    >>
  }
>>


Wahrscheinlich versteckt sich irgendwo noch ein s1 oder vier c4 hintereinander.

Zu Beginn des "großen" Staffs musst du ebenfals ein \grace s8 einfügen, sonst schlägt der \grace-bug zu.
Danke für eure Hilfe
viele Grüße
-- Manuela

Manuela

Danke für eure Hilfe
viele Grüße
-- Manuela

Köbi

Hallo Manuela

ZitatZu Beginn des "großen" Staffs musst du ebenfals ein \grace s8 einfügen, sonst schlägt der \grace-bug zu.
Das war der entscheidende Hinweis, Danke!

Nach dem Einbau in mein Projekt sieht vieles gut aus :)  Aber mit den Taktzahlen habe ich noch ein Problem (habe dein Minimalbeispiel entsprechend erweitert):


\version "2.19.82"
\language "deutsch"

\layout {
  \context {
    \Score
    \remove Bar_number_engraver
  }
  \context {
    \Staff
    \override BarNumber.color = #(rgb-color 0.7 0.7 0.7)
    \override BarNumber.layer = #-200
    \override BarNumber.outside-staff-priority =#'()
    \override BarNumber.padding = #1
    \override BarNumber.font-size = #-1
    \override BarNumber.font-series = #'bold
    \override BarNumber.self-alignment-X = #0
    \override BarNumber.break-visibility = #end-of-line-invisible
    barNumberVisibility = #(lambda (n x) (= (modulo n 1) 0))
  }
}
\paper {
  ragged-right = ##t
}

<<
  \new Staff  \with
  {
    fontSize = #-2
    \override StaffSymbol.staff-space = #(magstep -2)
    \remove "Time_signature_engraver"
    \remove "Bar_number_engraver"
    \override Clef.break-visibility = #all-invisible
  }
  {
    \relative {

      \once \override Staff.Clef.stencil = ##f
      \stopStaff
      \grace s8
      \startStaff
      \clef bass
      c'4 c c
      \stopStaff
      s2.*2
      \temporary \override Staff.BarLine.stencil = ##f
      \startStaff
      \set Staff.forceClef = ##t
      \clef treble
      c4 c c
      \revert Staff.BarLine.stencil
      c c c
      \stopStaff
      s2.
      \temporary \override Staff.BarLine.stencil = ##f
      \startStaff
      \set Staff.forceClef = ##t
      \clef treble
      c4 c c
      \revert Staff.BarLine.stencil
      c c c
      \stopStaff
      s2.
      \temporary \override Staff.BarLine.stencil = ##f
      \startStaff
      \set Staff.forceClef = ##t
      \clef treble
      c4 c c
      \revert Staff.BarLine.stencil
      c c c
      \stopStaff
      s2.
      \temporary \override Staff.BarLine.stencil = ##f
      \startStaff
      \set Staff.forceClef = ##t
      \clef treble
      c4 c c
      \revert Staff.BarLine.stencil
      c c c
      \stopStaff
    }
  }
  \new StaffGroup
  <<

    \new Staff \with {
      \consists Bar_number_engraver
    }
    {
      \relative {
        \set Score.alternativeNumberingStyle = #'numbers
        \set Score.alternativeNumberingStyle = #'numbers-with-letters
        \time 3/4
        \once \override Staff.BarNumber.X-offset = #6
        \bar "" \grace s8
        c'4 c c
        \repeat volta 2 {
          \repeat unfold 3 { c4 c c } \break
          \repeat unfold 4 { c4 c c } \break
          \repeat unfold 4 { c4 c c } \break
          \repeat unfold 4 { c4 c c } \break
        }
        \alternative{
          {
            c4 c c
          }
          {
            c4 c c
          }
        }
        \repeat unfold 2 { c4 c c }
      }
    }
    \new Staff
    {
      \relative {
        \repeat unfold 20 { c'4 c c }
      }
    }
  >>
>>


Nach dem Wiederholungszeichen wird nicht mehr weitergezählt :( "\set Score.currentBarNumber = #18" funktioniert nicht. Hast du eine Idee?

(Mit den kleinen Unschönheiten Anfang Takte 5 & 13 und Ende Takt 12 könte ich leben.)

Manuela

Das Problem mit den Taktzahlen habe ich noch nie gesehen, ist möglicherweise ein Bug.

Die Unschönheiten zu Beginn der Notenzeilen kannst du folgendermaßen beheben:
      \stopStaff %% behebt die Unschönheit zu Beginn Takt 5
      \grace s8  %% Achtung auf grace-bug in anderen Staffs ebenfalls einfügen
      \startStaff


Achtung auf den grace-bug, in parallelen Systemen evtl. ebenfalls an dieser Stelle  \grace s8 einfügen.

Der überflüssige Notenschlüssel am Ende des Taktes 12 wird durch den Befehl

\set Staff.forceClef = ##t

erzeugt. Wenn du dieses Kommando auskommentierst, verschwindet der Schlüssel, allerdings ist er auch zu Beginn der nächsten Zeile weg. Wofür es den oben stehenden Code gibt.

Vil. fällt Harm ja eine geniale Funktion ein, die zu Beginn den kleinen Notenschlüssel erzeugt und ohne \grace auskommt.
Danke für eure Hilfe
viele Grüße
-- Manuela