Re: [tablatures] \hideNotes in TabStaff |
[ Thread Index |
Date Index
| More lilynet.net/tablatures Archives
]
Marc Hohl wrote Friday, January 29, 2010 10:53 AM
Trevor Daniels schrieb:
Moved to tab list from -user ..
Marc Hohl wrote Thursday, January 28, 2010 8:27 AM
Trevor Daniels schrieb:
\hideNotes and \unHideNotes are designed to work only with
ordinary staves and voices. In TabStaff they will hide
stems, beams, dots, etc (if these are being displayed)
but not the fret labels from TabNoteHead. Maybe they should,
or are there situations where you would want to hide notes
in the normal staff but not in TabStaff or vice versa?
I have not used \hideNotes very often, but as we want to use the
input
both for normal staves and tablature staves without tweaking too
much,
I think it would make sense to include the functionality into
\hideNotes,
but it seems that this would not be straightforward, as, for
example,
\revert Stem #'transparent would make the tablature stems
visible, too.
It would, which you would not want to do normally but
which would be correct if you were displaying stems in
tab before calling \hideNotes. This is not so much a
problem with \hideNotes as with the way \tabFullNotation
is implemented. You would have exactly the same problem
with \hideTabNotes (or whatever it might be called).
You are right, this is a serious limitation of the current
implementation.
This is a limitation of using predefined commands - when
several changes interact there is no means of testing
anything. The fix would be to use context properties
rather than \hideNotes and \tabFullNotation. These
could then be tested in the engravers, and the engravers
could work out what values the properties should have.
So ideally, we would have a context property switching from
\tabFullNotation to \tabNumbersOnly behavior?
Could you specify in more detail how this could be done, so
1) this could be added to the tracker (I think #810 is the proper
place for it)
2) someone could start implementing it (perhaps this way I can
learn some more about
how engravers work)
OK, here's a start, but I'd like Carl or someone more
knowledgeable to confirm or amend this suggestion. It
would be quite a messy change, as mods to lots of
engravers would be required.
Define a new context property, say tabFullNotation,
which is a Boolean set to #t if full tab notation is
required and #f if not. This would be set #f in the
TabVoice context definition and set #t by the
\tabFullNotation predefined command.
Define a new context property, say hideNotes, which is
a Boolean set to #f normally and to #t if notes are to
be hidden.
These two properties would be read by all the engravers
creating note heads, stems, dots etc and used to determine
what value the 'transparent property should have.
For example, if hideNotes was #f the dots engraver
would set the 'transparent property depending on the
value of tabFullNotation.
That said, I can see lots of other complications which
would need to be carefully thought through. This should
not be undertaken lightly!
Trevor