Deutsches Lilypond Forum (Archiv)
Allgemein => Allgemeine Diskussion => Thema gestartet von: Joei am Dienstag, 12. Februar 2013, 17:30
-
Moin liebe Lilypond Gemeinde :)
diesmal (im ersten Schritt) eine Interpretationsfrage - schaut mal hier:
(http://www.joeigraphie.de/img/andante.png)
Mal abgesehen davon, das der Vorschlag wahrscheinlich eine Triole sein soll (oder aber eben nicht... was das verschobene 16tel erklären würde) - verstehe ich evtl Takt 3 nicht. 3/4 ergeben sich nur, wenn man den Punkt am Anfang des Taktes (1. roter Pfeil) als Punktierung des vorausgehenden Achtels "c" interpretiert... ist das so gemeint? Und wenn dem so ist.. wie um Gottes willen mach ich das denn in LP? :o
Wenn ich den Vorschlag nicht als Triole eingebe - zählz LP dann ein Extra-16tel? Oder werden \grace Noten garnicht gezählt?
Mit "zurechtgerückten" Punktierungen klingts nur bedingt richtig:
\version "2.16.2"
rauf = {\change Staff="RHTwo" }
runter= {\change Staff="LHTwo"}
dolce =\markup{ \italic dolce }
pianoRHTwo = \relative c'' {
\clef "treble"
\key f \major
\time 3/4
\tempo "Andante."
\shape Slur #'((0 . 0) (0 . 0) (0 . 0) (0 . 0))
r8 \p <cis, a'>_\dolce [( <d h'> <e cis'> <f d'> <e cis'>]) <<{\grace{\times 2/3 { cis'16[ d e] }} \stemUp d4\(cis!8 d8.\) d16 c!8 | c16 b8. b16 a8. a16 g8.| g16 f8. f16 e8. es8[(d)]| e!_.[\f f_.] r4 r}\\{\stemDown \grace e8 \stemDown f4 e8 d es8. es16|d8. d16 c8. c16 b8. b16| a8. a16 \runter \stemUp g8. g16 f4| g8[ f]}>>\stemNeutral
}
pianoLHTwo = \relative f, {
\clef bass
\key f \major
\time 3/4
\tempo "Andante."
a2.~a8([gis g f g a)] | b[( d] e[f] g[e])| eis(d) \stemDown h[(c!]) a(b!)| b-.a r4 r
}
Bin Dankbar für jede Idee...
viele Grüße
Joei
-
Hallo,
hab' im Moment nur ganz wenig Zeit, deshalb kurz gefragt nach:
Komponist?
Titel?
Verlag?
Wann gedruckt?
Ich kann mich später vielleicht weiter damit beschäftigen.
Gruß,
Harm
-
Moin Harm,
Komponist: Johann Ernst Bach (18. Jhd)
Titel: Fantasie und Fuge (hier Teil der Fantasie)
Verlag und Jahr unbekannt.
http://imslp.org/wiki/Fantasie_and_Fugue_(Bach,_Johann_Ernst)
Viele Grüße
Joei
-
Hallo Joei,
vermutlich handelt es sich um einen Druck aus dem 19 Jh, zumindest habe ich bei Noten aus der Zeit eine solche Verwendung der Punkte schon mal gesehen
Den heutigen Gepflogenheiten entspricht das nicht mehr. Da Du aber offensichtlich das alte Erscheinungsbild kopieren möchtest habe ich es mal geschrieben.
Denn: LilyPond kann ja alles. :))
Ob Du mit meiner Behandlung der Dynamik einverstanden bist, weiß ich natürlich nicht, es war aber die einzige Möglichkeit Dir mir in den Sinn kam, um das alte Bild zu kopieren.
Einen kleinen Wermutstropfen gibt es allerdings. Der Code kompiliert nicht unter 2.17. Im Moment weiß ich noch nicht genau warum nicht.
Für jetzt bin ich bin zu müde für detailierte, weitere Erklärungen, wenn etwas unklar ist dann frag, morgen ist ja ein neuer Tag.
\version "2.16.1"
#(set-global-staff-size 17)
tupletTransparent =
\once \override TupletNumber #'transparent = ##t
scriptUp =
\override Script #'direction = #UP
scriptDown =
\override Script #'direction = #DOWN
dynamicUp = {
\override DynamicText #'direction = #UP
\override DynamicLineSpanner #'direction = #UP
}
neutralRests =
\override Rest #'staff-position = #0
hideTie =
\once \override Tie #'transparent = ##t
pdolce = {
\override DynamicText #'self-alignment-X = #-1
#(make-dynamic-script
#{
\markup {
\dynamic p
\hspace #2
\normal-text \italic { "dolce" }
}
#})
}
adjustDynamicSpanner =
#(define-music-function (parser location y-offset)(number?)
#{
\override DynamicLineSpanner #'Y-extent = #'(0 . -1)
\override DynamicLineSpanner #'Y-offset = $y-offset
\override DynamicTextSpanner #'to-barline = ##t
\override DynamicTextSpanner #'thickness = #1.5
%\override DynamicTextSpanner #'dash-fraction = #0.1
%\override DynamicTextSpanner #'dash-period = #6.999
#})
dotForNoteHead =
#(define-music-function (parser location dir)(number?)
#{
\once \override NoteHead #'before-line-breaking =
#(lambda (grob)
(let* ((dot (ly:font-get-glyph (ly:grob-default-font grob) "dots.dot"))
(new-stencil
(ly:stencil-aligned-to dot Y dir)))
(ly:grob-set-property! grob 'stencil new-stencil)))
\once \override Flag #'stencil = #point-stencil
\once \override Stem #'stencil = #point-stencil
\once \override Accidental #'stencil = ##f
\once \override AccidentalCautionary #'stencil = ##f
#(make-music 'BeamForbidEvent)
#})
\layout {
indent = 0
}
top = \change Staff = "1"
bottom = \change Staff = "2"
upI =
\relative c' {
\voiceOne
\key f\major
\time 3/4
\neutralRests
r8
\once \slurDown
<cis a'>(
<d b'>
<e cis'>
<f d'>
<e cis'>)
|
\tupletTransparent
\grace \times 2/3 { cis'16[ d e] }
d4( cis!8 d8.) d16 \hideTie c8~
|
\dotForNoteHead #0 c16 c bes8. bes16[ a8.] a16 \hideTie g8~
|
\slurDown
\dotForNoteHead #-2 g16 g f8. f16[ e8] ees( d)
|
\scriptDown
e!-. f-. r4 r4 \bar "||"
\time 4/4
}
upII =
\relative c' {
\voiceTwo
\key f\major
\time 3/4
s2.
|
\grace e8
f4 e8 d ees8.ees16
|
d8. d16 c8. c16 bes8. bes16
|
a8. a16
\bottom
\voiceOne
g8. g16 f4
|
g8-. f-. s2
\time 4/4
}
downI =
\relative c {
\key f\major
\time 3/4
\clef bass
\dynamicUp
\pdolce a2. ~
|
a8( gis g f g a)
|
\voiceTwo
\slurUp
\scriptUp
\adjustDynamicSpanner #4
bes(\cresc d e![ f] g e)
|
cis( d) b([ c!]) a( bes)
|
\neutralRests
\override DynamicText #'Y-offset = #0.5
\override DynamicText #'X-offset = #-1.5
bes-.\f a-. r4 r
\time 4/4
}
\new PianoStaff <<
\new Staff = "1" <<
\new Voice \upI
\new Voice \upII
>>
\new Staff = "2" <<
\new Voice \downI
>>
>>
Gruß,
Harm
-
wow.
ich bin beeindruckt... (von LP, von Deiner "Virtuosität" darin und von Deiner Hilfe ;) )das gibt mir Stoff für (mindestens) einen langen Abend.
Bin sicher, dass ich nicht alles sofort verstehen werde - aber zum experimentieren ist das großartig... deckt ja gleich min. 8 Baustellen ab!
Habe inzwischen noch ein Indiz gefunden, was für das 19.Jhd spricht - das Sterbejahr J.E.Bachs ist falsch angegeben, dass wusst man im 20.Jhd besser...
Also - herzlichen Dank! ;D
-
Hi Joei,
da ich noch nicht zufrieden mit meinem Code, war habe ich noch ein bißchen weitergestrickt, es gab ja noch das 2.17.-Problem ...
Wichtige Änderungen:
Ich habe aus der Funktion \dotForNoteHead einen Befehl gemacht der jetzt keine manuelle Einstellung mehr benötigt: \tiedToDot
Allerdings muß man \noBeam jetzt zusätlich setzen, hat dafür aber \hideTie gespart.
Die Syntax ist also:
\version "2.16.1"
\relative c''
<<
{ \tiedToDot d4~ d8\noBeam d }
\\
{ d,4 d8 d }
>>für 2.16 und 2.17.
Das dynamic-script für "p dolce" mußte ich in zwei Befehle aufspalten: \pdolce zum schreiben und \adjustDynamicText zum Einstellen.
An zwei Stellen habe ich Befehle Versions-abhängig gemacht, damit ich zur Demonstration nicht zwei komplette Snippets schreiben muß. Sinnvoll ist es natürlich sich für eine Version zu entscheiden.
Ansonsten gibt es einige kleinere Bereinigungen bzw Umbenennungen.
\version "2.16.1"
#(set-global-staff-size 17)
% #(ly:set-option 'debug-skylines #t)
hideTupletNumber =
\once \override TupletNumber #'transparent = ##t
scriptUp =
\override Script #'direction = #UP
scriptDown =
\override Script #'direction = #DOWN
neutralRests =
\override Rest #'staff-position = #0
pdolce =
#(make-dynamic-script
#{
\markup {
\dynamic p
\hspace #2
\normal-text \italic { "dolce" }
}
#})
adjustDynamicText =
#(define-music-function (parser location x-offset)(number?)
#{
\override DynamicText #'self-alignment-X = $x-offset
#})
adjustDynamicSpanner =
#(define-music-function (parser location y-offset)(number?)
#{
\override DynamicTextSpanner #'X-extent = #'(0 . -1)
#(if (<= (cadr (ly:version)) 16)
#{ \override DynamicLineSpanner #'Y-offset = $y-offset #}
#{ \override DynamicTextSpanner #'extra-offset = #'(0 . -0.5) #})
\override DynamicTextSpanner #'to-barline = ##t
\override DynamicTextSpanner #'thickness = #1.5
%\override DynamicTextSpanner #'dash-fraction = #0.1
%\override DynamicTextSpanner #'dash-period = #6.999
#})
tiedToDot =
\once \override Tie #'before-line-breaking =
#(lambda (grob)
(let* ((right-bound (ly:spanner-bound grob RIGHT))
(dot
(ly:font-get-glyph (ly:grob-default-font right-bound) "dots.dot"))
(staff-pos (ly:grob-property right-bound 'staff-position))
(stem (ly:grob-object right-bound 'stem))
(flag (ly:grob-object stem 'flag))
(dir (if (and (integer? staff-pos) (even? staff-pos))
-2
0))
(new-note-stencil
(ly:stencil-aligned-to dot Y dir)))
(ly:grob-set-property! grob 'transparent #t)
(if (null? stem)
#f
(ly:grob-set-property! stem 'stencil point-stencil))
(if (null? flag)
#f
(ly:grob-set-property! flag 'stencil point-stencil))
(ly:grob-set-property! right-bound 'stencil new-note-stencil)))
\layout {
indent = 0
}
top = \change Staff = "1"
bottom = \change Staff = "2"
upI =
\relative c' {
\voiceOne
\key f\major
\time 3/4
\neutralRests
r8
\once \slurDown
<cis a'>(
<d b'>
<e cis'>
<f d'>
<e cis'>)
|
\hideTupletNumber
\grace \times 2/3 { cis'16[ d e] }
d4( cis!8 d8.) d16 \tiedToDot c8~
|
c16\noBeam c bes8. bes16[ a8.] a16 \tiedToDot g8~
|
\slurDown
g16\noBeam g f8. f16[ e8] ees( d)
|
\scriptDown
e!-. f-. r4 r4 \bar "||"
\time 4/4
}
upII =
\relative c' {
\voiceTwo
\key f\major
\time 3/4
s2.
|
\grace e8
f4 e8 d ees8.ees16
|
d8. d16 c8. c16 bes8. bes16
|
a8. a16
\bottom
\voiceOne
g8. g16 f4
|
g8-. f-. s2
\time 4/4
}
downI =
\relative c {
\key f\major
\time 3/4
\clef bass
\dynamicUp
\adjustDynamicText #-1
a2.\pdolce ~
|
a8( gis g f g a)
|
\voiceTwo
\slurUp
\scriptUp
\adjustDynamicSpanner #4
bes(\cresc d e![ f] g e)
|
cis( d) b([ c!]) a( bes)
|
\neutralRests
\override DynamicText #'Y-offset = #0.5
\override DynamicText #'X-offset = #-1.5
bes-.\f a-. r4 r
\time 4/4
}
\new PianoStaff <<
\new Staff = "1" <<
\new Voice {
#(if (> (cadr (ly:version)) 16)
#{
\overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
#'((alignment-distances . (11)))
#})
s2.*5
}
\new Voice \upI
\new Voice \upII
>>
\new Staff = "2" <<
\new Voice \downI
>>
>>
Gruß,
Harm
-
so... hab mir das gestern mal angeschaut... puh - das ist ja wirklich "tief im Maschinenraum" - alles hab ich noch nicht durchschaut, dafür aber 'ne Menge gelernt... werde mir dann mal die Neuerungen zu Gemüte führen :)
Danke nochmal,
Joei