Hallöchen allerseits,
mittlerweile hätte ich eine Lösung, die zwar ziemlich unelegant ist, aber doch sehr wirksam.
Ausgehend von meinem ursprünglichen Funktionsvorschlag fiel mir auf, dass die Funktion tatsächlich eine Score erzeugt,
wenn man "\score" durch "\new Score" ersetzt. Vermutlich wird bei \new Score gerade erst das Objekt erzeugt, während
\score ein bereits existierendes Objekt voraussetzt.
Um das Problem mit mehreren Staffs pro Score zu lösen, kann man sich einfach Scores mit jeweils 1,2,3...n Staffs definieren.
Wirklich nicht schön, aber effektiv.
Hier ein Beispielcode:
\version "2.13.51"
myDrumScore = #(define-music-function (parser location musicOne beamsOne) (ly:music? pair?)
#{
\new Score <<
\new DrumStaff \with {
\remove Clef_engraver
\override Stem #'direction = #UP
\override Beam #'positions = #$beamsOne
\override StaffSymbol #'staff-space = #'1.15
} << { $musicOne } >>
>>
#})
myDrumScoreTwo = #(define-music-function (parser location musicOne beamsOne musicTwo beamsTwo) (ly:music? pair? ly:music? pair?)
#{
\new Score <<
\new DrumStaff \with {
\remove Clef_engraver
\override Stem #'direction = #UP
\override Beam #'positions = #$beamsOne
\override StaffSymbol #'staff-space = #'1.15
} << { $musicOne } >>
\new DrumStaff \with {
\remove Clef_engraver
\override Stem #'direction = #UP
\override Beam #'positions = #$beamsTwo
\override StaffSymbol #'staff-space = #'1.15
} << { $musicTwo } >>
>>
#})
myDrumScoreThree = #(define-music-function (parser location musicOne beamsOne musicTwo beamsTwo musicThree beamsThree) (ly:music? pair? ly:music? pair? ly:music? pair?)
#{
\new Score <<
\new DrumStaff \with {
\remove Clef_engraver
\override Stem #'direction = #UP
\override Beam #'positions = #$beamsOne
\override StaffSymbol #'staff-space = #'1.15
} << { $musicOne } >>
\new DrumStaff \with {
\remove Clef_engraver
\override Stem #'direction = #UP
\override Beam #'positions = #$beamsTwo
\override StaffSymbol #'staff-space = #'1.15
} << { $musicTwo } >>
\new DrumStaff \with {
\remove Clef_engraver
\override Stem #'direction = #UP
\override Beam #'positions = #$beamsThree
\override StaffSymbol #'staff-space = #'1.15
} << { $musicThree } >>
>>
#})
eins = \drummode { bda8. bda16 sn8. bda16 r16 bda8 bda16 sn4 }
\displayMusic { <<
\myDrumScoreThree { \eins } #'(2.5 . 2.5)
{ \eins } #'(3.5 . 3.5)
{ \eins } #'(4.5 . 4.5)
>> }
\layout {
indent = 1\cm
\context {
\Score
\remove "System_start_delimiter_engraver"
} % context
} % layout
Im Beispiel kann man die DrumStaffs sogar rudimentär konfigurieren.
Außerdem zeigt \displayMusic den ganzen Score-Inhalt an.
Warum der \layout-Block nicht in die Score selbst eingebaut werden kann, weiß ich nicht. (Fehler: 'unexpected \layout').
Wenn man obige 'myDrumScore...'-Definitionen auslagert, kann man damit eigentlich recht bequem arbeiten.
Sehr viel schöner wäre es natürlich, wenn man die ganzen Definitionen nicht per Hand machen müsste, sondern einfach eine
Liste mit Musik & sonstiger Konfiguration pro DrumStaff übergeben könnte...
Solange dies nicht gelingt, werde ich wohl obigen Vorschlag nutzen...
Ich hoffe, Ihr könnt das gebrauchen...

Viele liebe Grüße,
Manuel