[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Manual barlines
From: |
Thomas Morley |
Subject: |
Re: Manual barlines |
Date: |
Tue, 2 Jul 2013 02:26:09 +0200 |
2013/7/1 Pierre Perol-Schneider <address@hidden>:
> Here's something simpler :
[...]
Hi Andrew,
below you'll find my own approach. Though not wide tested.
There are only a few comments in code, I'm too tired to write or explain more.
If something isn't clear, please shout.
Thanks to Pierre you saved me a lot of work. ;)
One thing isn't clear to me: how should TimeSignature behave at line-break?
If you don't like the way how I did it, again, please shout.
\version "2.17.20"
%#(set-default-paper-size "a4" 'landscape)
#(set-global-staff-size 16)
#(define (make-void-bar-line grob extent) empty-stencil)
#(add-bar-glyph-print-procedure "v" make-void-bar-line)
#(define-bar-line "v" "v" "v" "|")
#(define-bar-line ".v" "|" "v" ".|")
myTimeSigPlusBar =
#(define-music-function (parser location corr orig shown)
((number? 25) fraction? fraction?)
#{
\once \override Score.TimeSignature.stencil =
#(lambda (grob)
(let* ((new-stencil
(grob-interpret-markup grob
#{
\markup
\override #'(font-family . typewriter)
\override #'(baseline-skip . 1.7)
\italic
\fontsize #2
\center-column {
\line { #(number->string (car shown)) }
\line { #(number->string (cdr shown)) }
}
#})))
new-stencil))
% Sometimes you'll have to adjust the value of @var{corr}
% In this case the function this way: @samp{\\myTimeSigPlusBar #40 1/4 16/4}
% see below
\once\override Score.BarLine.kern = #corr
\bar ".v"
\time #orig
#})
myLayout =
\layout {
%ragged-right = ##f
indent = 0
\context {
\Score
% Perhaps you may want to choose another value (1.6 is default):
\override SystemStartBar.thickness = #6
}
\context {
\StaffGroup
\omit SystemStartBracket
\override StaffGrouper.staff-staff-spacing.basic-distance = #5
}
\context {
\Staff
\override BarLine.after-line-breaking =
#(lambda (grob)
(let* ((glyph-name (ly:grob-property grob 'glyph-name)))
(if (not (string=? glyph-name ".v"))
(ly:grob-set-property! grob 'transparent #t))))
% Perhaps you may want to choose another value (6 is default):
\override BarLine.thick-thickness = #6
\override TimeSignature.transparent = ##t
\override TimeSignature.space-alist.first-note = #'(fixed-space . 3.3)
}
\context {
\Voice
\override TupletBracket.bracket-visibility = ##t
}
}
timeSignatures = {
\myTimeSigPlusBar 1/4 3/4
\repeat unfold 3 s4
\myTimeSigPlusBar #40 1/4 16/4
\repeat unfold 2 s4
}
melodyOne = {
\clef F
\repeat unfold 5 s4
}
melodyTwo = {
\clef F
\voiceOne
\repeat unfold 3 {
\once\override TupletNumber.text = #tuplet-number::calc-fraction-text
\tuplet 7/8 { des!32 [des! des! des! des! des! des! ] }
}
\tupletDown
\once \override TupletBracket #'positions = #'(-4 . -4)
\tuplet 7/8 { des!32 a,! g! f! des! aes! f,! }
\tuplet 7/8 { ees!32 b! g,! des!-\parenthesize^> a,! a! f! }
}
\score {
\new StaffGroup
<<
\new Staff { \melodyOne \melodyOne }
% This is quick'n dirty.
\new Staff
\with {
\remove "Staff_symbol_engraver"
\remove "Clef_engraver"
\revert TimeSignature.transparent
}
{ \timeSignatures \timeSignatures }
\new Staff { \melodyTwo \melodyTwo }
>>
\layout { \myLayout }
}
Image and ly-file-attached.
HTH,
Harm
andrew-time-sig-bar.png
Description: PNG image
time-sig-bar.ly
Description: Binary data