Notationsspezifisch > Noten für Gitarre
D.C. al Coda
Dakuan:
Hallo,
wie kann man ein solches Konstrukt halbwegs richtig darstellen (siehe Anhang)? Es muss nicht genau so aussehen, soll aber sachlich richtig werden.
Zwischen dem vorhergehendem Coda und dieser Sequenz liegt bereits ein Abschnitt mit einer normalen Wiederholung und 2 alternativen Enden.
Ich habe bereits versucht einige Tricks aus der Dokumentation anzuwenden, aber sowohl \cadenzaOn/Off und \stopStaff / \startStaff enden in Katastrophen. Dabei geht nämlich die Zuordnung der Noten zur Tabulatur und zu den Akkordnamen verloren, es verschiebt sich alles.
Und wenn ich es mit
--- Code: ---\mark \markup { \musicglyph #"scripts.coda" }
--- Ende Code ---
u.s.w. versuche, bekomme ich die Meldung, das nur eine Marke zu einem bestimmten Zeitpunkt gesetzt werden kann.
Gibt es noch weitere Möglichkeiten?
harm6:
Hallo Dakuan,
versuch mal folgenden work-around:
--- Code: ---\version "2.14.2"
rochadeAlpha = {
\override Score.BreakAlignment #'break-align-orders =
#(make-vector 3 '(left-edge
ambitus
breathing-sign
staff-bar
clef
key-cancellation
key-signature
time-signature
custos))
\once \override Score.TimeSignature #'space-alist = #'(
(first-note fixed-space . 2.0)
(right-edge extra-space . 0.5)
(staff-bar minimum-space . 2.5))
}
move = {
\rochadeAlpha
\once \override Score.BarLine #'extra-offset = #'(-1 . 0)
\once \override TabStaff.BarLine #'extra-offset = #'(-0.666 . 0)
\once \override Score.SpanBar #'X-offset = #'-1
\once \override Score.Clef #'extra-offset = #'(-1 . 0)
\once \override Score.OctavateEight #'extra-offset = #'(-1 . 0)
\once \override Score.KeyCancellation #'extra-offset = #'(-1 . 0)
\once \override Score.KeySignature #'extra-offset = #'(-1 . 0)
\once \override Score.TimeSignature #'extra-offset = #'(-1 . 0)
}
trickery = {
\once \override Score.BarLine #'hair-thickness = #'1.6
\once \override Score.Clef #'(space-alist next-note) = #'(extra-space . 0)
\bar "|"
\move
}
onceTextLengthOn = {
\once\override TextScript #'extra-spacing-width = #'(0 . 0)
\once\override TextScript #'extra-spacing-height = #'(-inf.0 . +inf.0)
}
staffStop = {
\onceTextLengthOn
\stopStaff
\cadenzaOn
}
staffStart = {
\once\override Score.BarNumber #'break-visibility = #'#(#f #t #t)
\startStaff
\cadenzaOff
\set Staff.forceClef = ##t
\autoBeamOn
}
space =
#(define-music-function (parser location) ()
#{
\staffStop
\onceTextLengthOn
s1*1/1000000-\markup \with-dimensions #(cons 0 spaceWidth) #'(0 . 0) \null
\once \override Score.Clef #'font-size = #'2
\staffStart
\trickery
#})
%--------------------------- Test ----------------------------------------------
spaceWidth = 8
markDCalCoda = {
\once \override Score.RehearsalMark #'self-alignment-X = #RIGHT
\once \override Score.RehearsalMark #'font-size = #0
\once \override Score.RehearsalMark #'baseline-skip = #3
\mark \markup { \center-column \italic { "D.C." "al Coda" } }
}
markCoda = {
\once \override Score.RehearsalMark #'self-alignment-X = #LEFT
\once \override Score.RehearsalMark #'font-size = #0
\once \override Score.RehearsalMark #'extra-offset = #'(-3.66 . 2)
\once \override Score.RehearsalMark #'baseline-skip = #3
\mark \markup { \center-column \italic { "Coda" \fontsize #3 \musicglyph #"scripts.coda" } }
}
chrds = \chordmode {
d1:7
\markDCalCoda
\space
\markCoda
d2 g d g
}
mus = \relative c {
\key g\major
<d d'>4 c? b a
\bar "||"
\markDCalCoda
\space
\markCoda
\key g\major
<fis a'>8 b' <fis, a'>4 <g g'> b
<fis a'>8 b' <fis, a'>4 <g g'> b
}
\score {
\new StaffGroup
<<
\new ChordNames \chrds
\new Staff { \clef "G_8" \mus }
\new TabStaff { \mus }
>>
}
--- Ende Code ---
Anmerkungen
Mit spaceWidth = 8 bestimmst Du die Länge des leeren Zwischenraums.
Die \mark-Zeichen habe ich vordefiniert, kann man natürlich auch direkt im Code machen. Möglicherweise mußt Du in
\once \override Score.RehearsalMark #'extra-offset = #'(-3.66 . 2)
die Werte anpassen.
Die \space-Funktion ist der zentrale Baustein. Sie benötigt kein weiteres Argument (das kommt von spaceWidth) muß aber in jede Stimme gesetzt werden.
HTH,
Harm
Dakuan:
Danke für die Mühe,
das sieht schon sehr vielversprechend aus. Ich werde das mal in das Gesamtwerk einbauen und mal sehen was dabei passiert.
Wie lange braucht man eigentlich für sowas?
Einen schönen Sonntag noch
Dakuan
harm6:
--- Zitat ---Wie lange braucht man eigentlich für sowas?
--- Ende Zitat ---
Ich bin zwar noch nicht sooo lange Mitglied in diesem Forum, aber ich hatte vorher schon ein paar Jahre LilyPond-Erfahrung.
Das hilft schon mal.
Im konkreten Fall hatte ich schon mal etwas ähnliches gemacht (auf der Basis der Arbeit anderer, u.a. hier im Forum). Das hatte damals trotzdem viele Stunden gedauert.
Für Deine Frage jetzt habe ich diese frühere Arbeit angepaßt, verbessert und vereinfacht. Das hat ungefähr 1-2 Stunden gedauert (gestoppt habe ich die Zeit jetzt allerdings nicht).
Der Zeitaufwand kann aber, je nach Thema, auch erheblich mehr sein: für grow-direction in beide Richtungen... habe ich mehrere Wochen gebraucht.
Gruß,
Harm
Dakuan:
Hallo harm6,
ich habe mir schon gedacht, das hier teilweise Code Recycling im Spiel ist. Als C Programmierer mache ich sowas auch gerne.
Ich habe deinen Vorschlag gestern noch eingebaut und ich werde das jetzt auch so drinne lassen, aber es gibt da schon einige kleine Probleme, die umgangen werden müssen.
Erstmal hat Lilypond die unangenehme Eigenschaft Umbrüche immer an ungünstigen Stellen einzufügen. Das führt dann dazu das am Ende der Zeile, nach der Unterbrechung, noch 2 versetzte (!) Taktstriche zu sehen sind, die dann natürlich in der nächsten Zeile fehlen.
Da Lilypond auch noch versucht, die Noten auf möglichst wenig Blätter unterzubringen, führt das dazu, das im aktuellen Fall am Schluss alle Griffdiagramme übereinander gestapelt werden. Um das zu umgehen hatte ich ursprüglich
--- Code: --- \override Score.SpacingSpanner #'strict-note-spacing = ##t
\set Score.proportionalNotationDuration = #(ly:make-moment 1 16)
--- Ende Code ---
eingebaut, was dann jedoch dazu führt, das sich die Takte in der Darstellung überlappen.
Ich habe das jetzt dadurch gelöst, das ich Lilypond angewiesen habe, das ganze Stück auf 10 Systeme zu verteilen. Das ergibt dann eine Darstellung mit der ich leben kann, obwohl der Taktstrich dabei etwa 3 Pixels später anfangen als Liniensystem.
Damit kann ich erstmal leben. Falls dich die Details interessieren, kann ich noch Screenshots liefern. Den gesamten Quelltext möchte ich jedoch nicht öffentlich posten, da das möglicherweise Copyright Probleme nach sich ziehen könnte. Aber als PN oder e-mail ginge das.
Im übrigen habe ich das komplette Buch in einer eingescannten Version samt den dazugehörigen mp3 Dateien inzwischen im Netz gefunden. Einfach mal nach Richard Saslow suchen. Den ersten Titel (Ragtime Ramble) konnte ich früher mal spielen (vor 20 Jahren!), jetzt bin ich dabei den wieder zu lernen. Das gepostete Problem stammt jedoch aus den zweiten Stück "Dadalada".
Gruß
Dakuan
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln