\version "2.19.83" %%%% David Nalesnik's metronome-mark-alignment function: #(define align-tempo-with-accidental (lambda (grob) (let* ((p-col (ly:grob-parent grob X)) (sys (ly:grob-parent p-col X)) (all (ly:grob-object sys 'all-elements)) (grob-name (lambda (x) (assq-ref (ly:grob-property x 'meta) 'name))) (pl (filter (lambda (x) (eq? 'AccidentalPlacement (grob-name x))) (ly:grob-array->list all))) (pl-p-col (filter (lambda (x) (eq? p-col (ly:grob-parent x X))) pl))) (if (pair? pl-p-col) (let* ((accs (map cadr (ly:grob-object (car pl-p-col) 'accidental-grobs))) (X-exts (map (lambda (x) (ly:grob-extent x sys X)) accs)) (un (reduce interval-union '() X-exts))) (car un)) ; Return the default. self-alignment-interface::self-aligned-on-breakable)))) %%%% Tiny example: music = { cis'1 } << \new Staff { \music \music } \new Staff { \music \tempo "Tempo" \music } >> \layout { \context { \Staff \consists "Metronome_mark_engraver" \override MetronomeMark.X-offset = #align-tempo-with-accidental } }