Hi Lukas, On Wed, 2024-09-04 at 18:22 +0200, Lukas-Fabian Moser wrote: > > What I'd like to see is a syntax like this: > > > > \beatOne = \drummy { > > {hihat}, > > {snare}. > > {bass drum}, > > } > > > > Which can then be combined with: > > > > \beatTwo = \drummy { > > {hihat}, > > {high tom}, > > {low tom}, > > {snare}, > > {bass drum}, > > {pedal hihat}, > > } > I must admit I don't fully understand this proposal. Where/how would > you enter, for instance, a hihat tick on the second quaver in a bar?
tl;dr \beatOne is short hand for drum beat number one and not first beat (quaver) of the bar. \beatTwo is short hand for drum beat number two and not second beat (quaver) of the bar. My apologies. Drummer's perspective. I'll change it to \drumBeatOne and \drumBeatTwo. A more concrete example written as hands and feet. mainGroove = \drummode { << hh4 <hh sn>4 hh4 <hh sn>8 hh8 | \\ bd4 s4 bd4 s4 | >> } Then I can simply repeat that for x bars. However, there is usually a crash on beat one with the same groove. So I write it again with a small change: mainGrooveCrash = \drummode { << cymc4 <hh sn>4 hh4 <hh sn>8 hh8 | \\ bd4 s4 bd4 s4 | >> } Then I can write something like: \mainGrooveCrash \repeat volta 6 { \mainGroove } \fillI And that might be the verse for a song. My example above would translate into: drumBeatOne = \drummy { hh4 hh4 hh4 hh8 hh8, s4 sn4 s4 sn4, bd4 s4 bd4 s4, } drumBeatTwo = \drummy { cymc4 s2., s4 hh4 hh4 hh8 hh8, s4 sn4 s4 sn4, bd4 s4 bd4 s4, } drumBeatTwo is a little contrived having that crash cymbal on it's own line like that. There would be no real reason to write it like that, but it should still work. Then I would like to write something like: \drumBeatTwo \repeat volta 6 { \drumBeatOne } \fillI I was thinking \drummy would be implemented as a kind of polyphonic string replacement where: beatOne = \drummy { hh4 hh4 hh4 hh8 hh8, s4 sn4 s4 sn4, bd4 s4 bd4 s4, } becomes: beatOne = \drummode { << hh4 hh4 hh4 hh8 hh8 | \\ s4 sn4 s4 sn4 | \\ bd4 s4 bd4 s4 | >> } But then I'm not sure what line of code any bar checks errors would point to. If lilypond tells me the error is up in the \drummy block, that would be great. If not, then it's not helpful. And then the most glaring problem is that the stems will be all messed up because drumBeatTwo has the crash cymbal in the first voice (stems up) and the hihat in the second voice (stems down). Of course, the bigger problem is that this: drumBeatOne = \drummy { hh4 hh4 hh4 hh8 hh8, s4 sn4 s4 sn4, bd4 s4 bd4 s4, } should be "condensed" to this (hands and feet): drumBeatOne = \drummode { << hh4 <hh sn>4 hh4 <hh sn>8 hh8 \\ bd4 s4 bd4 s4 >> } Rather than this: drumBeatOne = \drummode { << hh4 hh4 hh4 hh8 hh8 | \\ s4 sn4 s4 sn4 | \\ bd4 s4 bd4 s4 | >> } Which is more complicated than simple string replacement. My concern about that approach is the issue of locating bar line checks where they occur in \drummy. If bar checks don't work work as expected, I don't think \drummy is a good approach. I may be wrong. Which is why I thought a more general approach would be better. Something that can combine the voices based on their staff position or note value. Something the score could be wrapped with: \drumCombine { \drumBeatTwo \repeat volta 6 { \drumBeatOne } \fillI } In that case, there would be no need for \drummy and music would be entered using polyphonic notation. In other words like this: drumBeatOne = \drummode { << hh4 hh4 hh4 hh4 | \\ s4 sn4 s4 sn4 | \\ bd4 s4 bd4 s4 | >> } That way bar line checks point to the correct location in the source. However, other errors, like failing to merge notes or rests, would probably be really hard to find like that so perhaps \drummy *is* the better compromise. I hope that didn't make things more confusing.