2016-12-29 2 views
0

Ich versuche, ein Ossia-Personal über den oberen Stab eines großen Personals hinzuzufügen. Arbeiten von this mailing list post, habe ich ein minimales Beispiel konstruiert, das fast tut, was ich will. Das Problem ist, dass die gesamte Punktzahl eine Leerstelle für die Ossia Mitarbeiter enthält, auch in Systemen, die keine Ossia haben.Wie kann ich Ossia hinzufügen, ohne eine Leerstelle zu erstellen?

Hier ist das Beispiel (wirklich, eine melodiöse Komposition):

\version "2.18.2" 

ossia = \new Staff = "ossia" \with { 
    \remove "Time_signature_engraver" 
    fontSize = #-2 
    \override StaffSymbol #'staff-space = #(magstep -2) 
    \override Clef #'transparent = ##t 
    \override KeySignature #'stencil = ##f 
} { 
    \key b \major 
    \override Staff.BarLine #'allow-span-bar = ##f 
    \stopStaff 
    s2.*100 % ??? 
} 

treble = \new Staff = "treble" { 
    \clef treble 
    \key b \major 
    \relative c' { 
    \repeat unfold 10 { b8 cis dis fis dis cis } 
    b4 dis fis | 
    b4 
    << 
     { dis, fis } 
     \context Staff = "ossia" { 
     \startStaff \tuplet 3/2 { dis8 b dis } fis4 \stopStaff 
     } 
    >> | 
    b2. | 
    } 
} 

bass = \new Staff = "bass" { 
    \clef bass 
    \key b \major 
    \relative c { 
    \repeat unfold 12 { fis,4 fis4 fis4 | } 
    b2. 
    } 
} 

pianoStaff = \new PianoStaff { 
    \compressFullBarRests 
    \time 3/4 
    << 
    \ossia 
    \treble 
    \bass 
    >> 
} 

\paper { 
    #(set-paper-size "letter") 
    indent = 25\mm 
    short-indent = 5\mm 
} 

\score { 
    <<\pianoStaff>> 
    % This changes nothing: 
    % \layout { \context { \Staff \RemoveEmptyStaves } } 
} 

Here is the output (PNG image, 85 KB).

Einige interessante Dinge zu beachten:

  • Wenn ich die s2.*100 in Zeile 13 (entfernen markiert % ???), oder ändern Sie die Wert auf etwas kleiner als 12, das Ossia Personal rendert völlig falsch. Es erscheint unter dem Bassschlüssel, enthält den Schlüssel und die Taktart und steht in der Tonart C (d. H. Die wiedergegebenen Noten enthalten Vorzeichen). Grundsätzlich sieht es aus wie es gescheitert ist, dass das ossia Personal existiert und ein brandneues eines gebaut hat. Ich vermute, dass dies daran liegt, dass das Ossia-Personal über jeden Punkt hinausfahren sollte, an dem es verwendet wird - d.h., wenn Personal Kontexte wechseln, kann man "zurück in die Zeit" gehen, aber nicht weiterleiten. Ich verstehe das nicht wirklich , aber ich kann damit leben, wie es scheint, einen intrinsischen Effekt zu haben, solange aktiviert ist.

  • Ich habe die Papiergröße in die MWE aufgenommen, um konsistente Dimensionen auf verschiedenen Systemen zu erzwingen.

  • Wie ich in der Partitur festgestellt, entfernt \RemoveEmptyStaves die leeren Stäbe nicht entfernen.

Meine Frage ist: wie kann ich die Ossia Mitarbeiter halten gemacht, wie es in dieses Beispiel (kleine und über dem Violinschlüssel) tut ohne Zugabe des leeren Raum auf allen bisherigen Systemen?

Antwort

1

\ RemoveEmptyStaves funktioniert nicht, da sich die Notensysteme in einem PianoStaff befinden, daher müssen Sie \remove "Keep_alive_together_engraver" dem \ layout-Block hinzufügen. Hier ist ein minimales Beispiel für ein leicht verändertes Dokumentations-Snippet:

\version "2.18.2" 

\new PianoStaff 
<< 
    \new Staff = "ossia" \with { 
    \remove "Time_signature_engraver" 
    \hide Clef 
    fontSize = #-3 
    \override StaffSymbol.staff-space = #(magstep -3) 
    \override StaffSymbol.thickness = #(magstep -3) 
    } \relative c'' { 
    R1*3 
    c4 e8 d c2 
    } 
    \new Staff \relative c' { 
    c4 b c2 
    e4 f e2 
    g4 a g2 \break 
    c4 b c2 
    g4 a g2 
    e4 d c2 
    } 
>> 

\layout { 
    \context { 
    \Staff \RemoveEmptyStaves 
    \override VerticalAxisGroup.remove-first = ##t 
    } 
    \context { 
    \PianoStaff 
    \remove "Keep_alive_together_engraver" 
    } 
} 

Ihr Beispiel ist ziemlich groß, kein echtes MWE. s2.*100 macht für mich keinen Sinn. Ich schlage vor, dass Sie ein kleineres Beispiel einreichen.

+0

Hallo Fedelibre. Ich schätze Ihre Hilfe. Dank Ihrer Antwort konnte ich eine zufriedenstellende Lösung finden. Ein paar Kommentare. Erstens ist der Zweck der Spacer - Auflage so, dass ich die Ossie schreiben kann, indem ich einfach '\ context Staff =" ossia "' in den Fluss des Rests der Partitur (wie in meinem Beispiel) setze, im Gegensatz zur manuellen Einfügung der korrekte Anzahl der Pausen, um die Ossie in die gewünschte Position zu bringen (wie in Ihrem).Zweitens zeigt Ihr Beispiel das Ossia nicht richtig an, da es zusätzliche Leermaße für alle Balken im System enthält, in dem ein Ossia erscheint. Zum Beispiel, (1/2) – wchargin

+0

(2/2) Wenn Sie Ihre '\ break' in die vorherige Zeile verschieben, dann gibt es einen zusätzlichen leeren Balken vor dem Inhalt der Ossia. (Bitte konsultieren Sie den Link zum gerenderten Bild in meinem ursprünglichen Beitrag.) Dies ist der Zweck der Befehle '\ startStaff' und' \ stopStaff' in meinem ursprünglichen Beispiel. Drittens tut mir leid, dass mein MWE groß ist. Jetzt, wo ich eine funktionierende Lösung habe, kann ich sehen, dass (zum Beispiel) der Bassschlüssel in der Tat nicht benötigt wird. Ich war mir da nicht sicher, denn es ist immerhin ein 'PianoStaff'. Alles ist im Nachhinein einfacher! :-) Hier ist meine minimale Lösung: https://gist.github.com/wchargin/db8f3ff0129686dafe87045f90c8bf5f – wchargin

Verwandte Themen