-(define-public (beam::get-positions grob)
- (let* ((stems (ly:grob-object grob 'stems))
- (stems-grobs (if (not (null? stems))
- (ly:grob-array->list stems)
- '()))
- (first-stem (if (not (null? stems-grobs))
- (car stems-grobs)
- '()))
- (note-heads (if (not (null? first-stem))
- (ly:grob-object first-stem 'note-heads)
- '()))
- (note-heads-grobs (if (not (null? note-heads))
- (ly:grob-array->list note-heads)
- '()))
- (first-note-head (if (not (null? note-heads-grobs))
- (car note-heads-grobs)
- '()))
- (style (if (not (null? first-note-head))
- (ly:grob-property first-note-head 'style)
- '())))
- (if (and (symbol? style) (string-match "kievan*" (symbol->string style)))
- (let* ((next-stem (cadr stems-grobs))
- (next-note-heads (if (not (null? next-stem))
- (ly:grob-object next-stem 'note-heads)
- '()))
- (next-note-heads-grobs (if (not (null? next-note-heads))
- (ly:grob-array->list next-note-heads)
- '()))
- (next-note-head (if (not (null? next-note-heads-grobs))
- (car next-note-heads-grobs)
- '()))
- (left-pos (ly:grob-property first-note-head 'Y-offset))
- (right-pos (ly:grob-property next-note-head 'Y-offset))
- (direction (ly:grob-property grob 'direction))
- (left-height (if (= direction DOWN)
- (+ (car (ly:grob::stencil-height first-note-head)) 0.75)
- (- (cdr (ly:grob::stencil-height first-note-head)) 0.75)))
- (right-height (if (= direction DOWN)
- (+ (car (ly:grob::stencil-height next-note-head)) 0.75)
- (- (cdr (ly:grob::stencil-height next-note-head)) 0.75))))
- (cons (+ left-pos left-height) (+ right-pos right-height)))
- (beam::place-broken-parts-individually grob))))
-
-(define-public (beam::get-quantized-positions grob)
- (let* ((stems (ly:grob-object grob 'stems))
- (stems-grobs (if (not (null? stems))
- (ly:grob-array->list stems)
- '()))
- (first-stem (if (not (null? stems-grobs))
- (car stems-grobs)
- '()))
- (note-heads (if (not (null? first-stem))
- (ly:grob-object first-stem 'note-heads)
- '()))
- (note-heads-grobs (if (not (null? note-heads))
- (ly:grob-array->list note-heads)
- '()))
- (first-note-head (if (not (null? note-heads-grobs))
- (car note-heads-grobs)
- '()))
- (style (if (not (null? first-note-head))
- (ly:grob-property first-note-head 'style)
- '())))
- (if (and (symbol? style) (string-match "kievan*" (symbol->string style)))
- (let* ((next-stem (cadr stems-grobs))
- (next-note-heads (if (not (null? next-stem))
- (ly:grob-object next-stem 'note-heads)
- '()))
- (next-note-heads-grobs (if (not (null? next-note-heads))
- (ly:grob-array->list next-note-heads)
- '()))
- (next-note-head (if (not (null? next-note-heads-grobs))
- (car next-note-heads-grobs)
- '()))
- (left-pos (ly:grob-property first-note-head 'Y-offset))
- (right-pos (ly:grob-property next-note-head 'Y-offset))
- (direction (ly:grob-property grob 'direction))
- (left-height (if (= direction DOWN)
- (+ (car (ly:grob::stencil-height first-note-head)) 0.75)
- (- (cdr (ly:grob::stencil-height first-note-head)) 0.75)))
- (right-height (if (= direction DOWN)
- (+ (car (ly:grob::stencil-height next-note-head)) 0.75)
- (- (cdr (ly:grob::stencil-height next-note-head)) 0.75))))
- (cons (+ left-pos left-height) (+ right-pos right-height)))
- (ly:beam::set-stem-lengths grob))))
+(define-public (beam::get-kievan-positions grob)
+ (let* ((stems (ly:grob-object grob 'stems))
+ (stems-grobs (if (not (null? stems))
+ (ly:grob-array->list stems)
+ '()))
+ (first-stem (if (not (null? stems-grobs))
+ (car stems-grobs)
+ '()))
+ (note-heads (if (not (null? first-stem))
+ (ly:grob-object first-stem 'note-heads)
+ '()))
+ (note-heads-grobs (if (not (null? note-heads))
+ (ly:grob-array->list note-heads)
+ '()))
+ (first-note-head (if (not (null? note-heads-grobs))
+ (car note-heads-grobs)
+ '()))
+ (next-stem (if (not (null? stems))
+ (cadr stems-grobs)
+ '()))
+ (next-note-heads (if (not (null? next-stem))
+ (ly:grob-object next-stem 'note-heads)
+ '()))
+ (next-note-heads-grobs (if (not (null? next-note-heads))
+ (ly:grob-array->list next-note-heads)
+ '()))
+ (next-note-head (if (not (null? next-note-heads-grobs))
+ (car next-note-heads-grobs)
+ '()))
+ (left-pos (ly:grob-property first-note-head 'Y-offset))
+ (right-pos (ly:grob-property next-note-head 'Y-offset))
+ (direction (ly:grob-property grob 'direction))
+ (first-nh-height (ly:grob::stencil-height first-note-head))
+ (next-nh-height (ly:grob::stencil-height next-note-head))
+ (left-height (if (= direction DOWN)
+ (+ (car first-nh-height) 0.75)
+ (- (cdr first-nh-height) 0.75)))
+ (right-height (if (= direction DOWN)
+ (+ (car next-nh-height) 0.75)
+ (- (cdr next-nh-height) 0.75))))
+ (cons (+ left-pos left-height) (+ right-pos right-height))))
+
+(define-public (beam::get-kievan-quantized-positions grob)
+ (let* ((pos (ly:grob-property grob 'positions))
+ (stems (ly:grob-object grob 'stems))
+ (stems-grobs (if (not (null? stems))
+ (ly:grob-array->list stems)
+ '())))
+ (for-each
+ (lambda (g)
+ (ly:grob-set-property! g 'stem-begin-position 0)
+ (ly:grob-set-property! g 'length 0))
+ stems-grobs)
+ pos))