Hi Alasdair,

Thank you very much - that is quite amazing!
You're very welcome.
But it does show what I have long suspected: that without some extra programming, Lilypond does not have a current facility to extract the rhythm from a music definition.  All of the tablatures I've seen in Lilypond require the music to be entered twice: once fully, and the other as durations only.   As well, the tablature section in the documentation nowhere shows how to do this: to create a tablature score with just the rhythm above it.   Maybe this will be amended in future versions?
[...]
I should add that those remarks of mine were not meant as complaints about Lilypond; merely as observations.  I'm very aware that as an open-source project, Lilypond's strength derives from the hard, unpaid, tireless and often thankless work by its developers.  It is often said about open source projects that if you want some particular functionality, you should write it yourself and submit it for review.  However, my programming skills (at least in scheme) are too poor for this myself.
Well, I think the point with LilyPond is that - unlike other open-source projects - you actually don't have to modify the program itself in order to add new functionality, but instead, you can implement the function you want _inside_ your own .ly file which you can re-use, share and put on a snippet repository. I have lots of custom-tailored functions like this in an include file (.ily) on my computer which I simply \include in any project where I need them.

So that's what I recommend for you: Just copy the relevant parts of my code into a .ily file and \include it whenever you need to use tablature.

Of course I concede that I needed to know a bit about LilyPond's inner workings and about Scheme to write a function like this. But nowadays there's even lots of well-written documentation that can get you started; do you know Jean's manual on https://extending-lilypond.gitlab.io ?

But maybe your code could be submitted to be part of Lilypond in future?
That's always a possibility, but the way I see it, there are two requirements for this:

1) The desired functionality should be sufficiently "general" or "standard" that there's a chance that it'll actually be being used. I don't know much about tabulature, so I can't really judge if the notation you want to use is standard in some area.

2) The submitted code should be of high quality. That's definitely not the case with the function I wrote yesterday; it would need quite a bit of polishing in order to gracefully deal with special cases and so on. (E.g. how should we deal with polyphony inside the given music?)

At the moment I feel that my function would probably best be put in a LSR snippet, so maybe I should do this.

As a side remark: In order to put music into a RhythmicStaff, one doesn't even have to remove the pitches, they will just be ignored. But I noticed yesterday that LilyPond does not behave very well with chords in that situation:

\version "2.24.0"

mus = { c' d' <e' g' b'>4. f'8 }

<<
  \new RhythmicStaff \mus
  \new Staff \mus
>>

I'm not sure whether that should be called a bug: one would have to think a bit about the most natural way to deal with chords here.

Lukas



Reply via email to