Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: viertel am Freitag, 5. Dezember 2014, 14:14
-
Hallo
Für einen vorhandenen Orchestersatz muß ich eine Stimme neu setzen.
Im Original wird als Taktart 4/4+3/4 verwendet, nicht 7/4. Außerden werden die Takte durch eine gestrichelte Hilfslinie geteilt (siehe Beispiel).
Meine beiden Probleme:
- Wie notiere ich die Taktart?
- Wie verhindere ich ein break an der Hilfstaktlinie?
\version "2.18.2"
\header{
title = "Umbruch bei Hilfstaktstrich Takt 4 unerwünscht"
subtitle = "Wie notiere ich Taktart 4/4+3/4 statt 7/4 ?"
}
Noten = { \repeat unfold #7 { c2 c4 b \bar "!" b as g } }
\score {
\new Staff {
\time 7/4 \set Timing.beamExceptions = #'() \set Timing.beatStructure = #'(2 2 3)
\relative c'' {
\Noten
}
}
\layout {}
}
Wäre schön, wenn es möglich wäre :)
Gruß vom 1/4
-
Hallo viertel
versuch mal so:
\version "2.18.2"
\header{
title = "Umbruch bei Hilfstaktstrich Takt 4 unerwünscht"
subtitle = "Wie notiere ich Taktart 4/4+3/4 statt 7/4 ?"
}
Noten = { \repeat unfold #7 { c2 c4 b \bar "!" \noBreak b as g } }
\score {
\new Staff {
\time 7/4
\compoundMeter #'((4 4) (3 4))
\relative c'' {
\Noten
}
}
\layout {}
}
Liebe Grüsse
Eugenio
-
Hey, super, genau das isses!
Beinahe hätte ich noch das \noBreak übersehen.
Vielen Dank.
-
Hi,
hier noch eine automatisierte Version, mittels scheme engraver, context-property etc
Die Stelle an der der zusätzliche Taktstrich zu setzen ist kann man wählen, genauso wie die Art des Taktstriches.
Die Anwendung sollte sich aus den Beispielen/Kommentaren selbst erklären.
Falls nicht, dann frag :)
\version "2.18.2"
#(define (define-translator-property symbol type? description)
(if (not (and (symbol? symbol)
(procedure? type?)
(string? description)))
(ly:error "error in call of define-translator-property"))
(if (not (equal? (object-property symbol 'translation-doc) #f))
(ly:error (_ "symbol ~S redefined") symbol))
(set-object-property! symbol 'translation-type? type?)
(set-object-property! symbol 'translation-doc description)
symbol)
#(for-each
(lambda (x)
(apply define-translator-property x))
`(
(intermediate-bar-line
,boolean?
"Should an intermediate bar-line be printed?")))
#(define*
((intermediate-bar-line-engraver moment #:optional (glyph "!")) context)
"
inserts additional BarLines at @var{moment}
a line-break there is forbidden
the bar-line-glyph to insert @var{glyph} is made optional, default is \"!\"
limitation: no intermediate BarLine is printed, if a longer note continues
"
`(
;; Not sure if the following 'acknowledgers' is needed at all
(acknowledgers
(paper-column-interface
. ,(lambda (engraver grob source-engraver)
(let ((internal-bar
(ly:context-property context 'internalBarNumber))
(measurepos
(ly:context-property context 'measurePosition)))
(if (eq? moment (ly:moment-main measurepos))
(set! (ly:grob-property grob 'line-break-permission) '()))))))
(process-music
. ,(lambda (engraver)
(let ((measurepos
(ly:context-property context 'measurePosition))
(intermediate-bar-line?
(ly:context-property context 'intermediate-bar-line)))
(if (and (= moment (ly:moment-main measurepos))
intermediate-bar-line?)
(let* ((event '())
(newgrob
(ly:engraver-make-grob engraver 'BarLine event)))
(set! (ly:grob-property newgrob 'glyph) glyph))))))))
#(define* (intermediateBars moment #:optional (glyph "!"))
"
shortcut to insert the @code{intermediate-bar-line-engraver} into layout
"
#{
\layout {
\context {
\Staff
\consists #(intermediate-bar-line-engraver moment glyph)
}
}
#})
intermediateBarLineOff = \set Score.intermediate-bar-line = ##f
intermediateBarLineOn = \unset Score.intermediate-bar-line
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% EXAMPLES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paper { ragged-last-bottom = ##f }
\header {
title = \markup \column { "intermediate-bar-line-engraver" \vspace #2 }
}
\layout { \override TextScript.font-size = #-2 }
Noten = { \repeat unfold #7 { c2 c4 b b as g } }
annotation =
<>^\markup
\override #'(baseline-skip . 2)
\rounded-box
\column { "Intermediate BarLine" "is unset in this bar." }
staff =
\new Staff {
\compoundMeter #'((4 4) (3 4))
\set Timing.beamExceptions = #'()
\set Timing.beatStructure = #'(2 2 3)
\relative c'' {
\Noten
\intermediateBarLineOff
\annotation
\repeat unfold 14 c8
\intermediateBarLineOn
\Noten
}
}
\score {
\staff
\layout { $(intermediateBars 4/4) }
%% omitting \layout would work as well
%$(intermediateBars 4/4)
\header {
piece =
\markup \bold
"Example 1, dashed BarLine after 4th quarter"
}
}
\score {
\staff
\layout { $(intermediateBars 3/4) }
\header {
piece =
\markup \bold
"Example 2, dashed BarLine after 3rd quarter"
}
}
\score {
\staff
\layout { $(intermediateBars 4/4 "||") }
\header {
piece =
\markup \bold
"Example 3, dashed BarLine after 4th quarter plus
other intermediate BarLine"
}
}
\score {
\new Staff { \compoundMeter #'((4 4) (3 4)) c2.~ c1 c2.~ c1 }
\layout { $(intermediateBars 4/4 "||") }
\header {
piece =
\markup \bold
"Example 4, Limitation: no intermediate BarLine is printed,
if a longer note continues."
}
}
HTH,
Harm