\version "2.15.12"
\relative c'' {
\override TupletBracket #'stencil = #ly:slur::print
\override TupletBracket #'direction = #UP
\override TupletNumber #'whiteout = ##t
\override TupletNumber #'layer = #2
\override TupletBracket #'layer = #1
\override TupletNumber #'Y-offset = #(lambda (grob) (+ 0.5 (ly:tuplet-number::calc-y-offset grob)))
\override TupletBracket #'control-points =
#(lambda (grob)
(let ((x-pos (ly:grob-property grob 'X-positions))
(pos (ly:grob-property grob 'positions)))
(list (cons (car x-pos) (car pos))
(cons (+ (car x-pos) (/ (interval-length x-pos) 3)) (+ (car pos) 0.5))
(cons (+ (car x-pos) (* (interval-length x-pos) 2/3)) (+ (cdr pos) 0.5))
(cons (cdr x-pos) (cdr pos)))))
\repeat unfold 10 \times 2/3 { a4 b4 c }
}
This'll only work in one of the more recent development versions, as X-positions is a new addition to LilyPond.