Achso, ich glaub, ich weiß, was du meinst: tuplet erwartet als zweites Argument ly:duration? oder nichts, aber nicht '() (das verwendet es nur, wenn keine ly:duration? kommt). Also kannst du nicht selbst '() an tuplet übergeben. Hier hilft also eine Fallunterscheidung à la
#(define-music-function (ratio tuplet-span music)
(fraction? (ly:duration? '()) ly:music?)
#{
\set Voice.subdivideBeams = ##f
#(if (null? tuplet-span)
(tuplet ratio music)
(tuplet ratio tuplet-span music))
\set Voice.subdivideBeams = ##t
#})
oder du übernimmst die Definition von tuplet (in ly/music-functions-init.ly) direkt:
#(define-music-function (ratio tuplet-span music)
(fraction? (ly:duration? '()) ly:music?)
#{
\set Voice.subdivideBeams = ##f
#(make-music 'TimeScaledMusic
'element (ly:music-compress
music
(ly:make-moment (cdr ratio) (car ratio)))
'numerator (cdr ratio)
'denominator (car ratio)
'duration tuplet-span)
\set Voice.subdivideBeams = ##t
#})