[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Denemo-devel] Reduce complexity of Denemos Lilypond generation by strip
From: |
Nils Gey |
Subject: |
[Denemo-devel] Reduce complexity of Denemos Lilypond generation by stripping "Initial" versions of keysig, timesig, clef. |
Date: |
Fri, 29 Apr 2011 14:44:39 +0200 |
Hello list,
Lilypond-code generated by Denemo is not exactly easy to read. I blame the
staff definitions for immediate disstatisfaction when a Lilypond "Texter" sees
Denemos ly.
I realised that Denemo introduced the concept of "Initial Keysig", Timesig and
Clef. This is something not demanded by Lilypond. On the contrary, even the
simplest examples start with writing those things directly before the note
context. Technically Denemo does nothing else except hiding these with multiple
layers of variables.
All this is needed for a simple measure of music:
MvmntIVoiceI = {
c''4 b' a' g' \EndMovementBarline
}
MvmntIVoiceITimeSig = \time 4/4
MvmntIVoiceIKeySig = \key c \major
MvmntIVoiceIClef = \clef treble
MvmntIVoiceIProlog = { \MvmntIVoiceITimeSig \MvmntIVoiceIKeySig
\MvmntIVoiceIClef}
MvmntIVoiceIMusic = {\MvmntIVoiceIProlog \MvmntIVoiceI}
MvmntIVoiceIContext = \context Voice = VoiceIMvmntI {\MvmntIVoiceIMusic}
But it could look like this
MvmntIVoiceI = {
\time 4/4
\key c \major
\clef treble
c''4 b' a' g' \EndMovementBarline
}
MvmntIVoiceIContext = \context Voice = VoiceIMvmntI {\MvmntIVoiceI}
I suggest to drop the concept of a special initial version of clefs, timesigs
and keysigs and instead place them as normal "Clefchange" clefs in our default
Template.
We get rid of three nearly redundant menu commands, which need maintenance, as
a good side-effect. (Did you notice that there is still no Drum Clef in the
Initial Clef menu?).
Another positive aspect is to get rid of the ever-present timesig. This is not
even common in printed music. Every Denemo staff looks like you are at the
beginning of one.
The concept of showing the current clef and keysig on the other hand is good.
Now you could argue that a user may delete the intial clef and timesig which
would result in just staff lines.
1) Lilypond is prepared for that and has a fallback to 4/4, Treble clef (like
it defaults to C Major as well).
2) The only visual disturbance would be a "no clef" situation. A missing
timesig (or keysig) does not disturb the Denemo score view in my opinion.
3) Since the drawing functions are already there Denemo could always fall back
to No Clef -> Show Treble. But without emmiting any Lilypond code for the clef.
I think it is a good idea to have as few as possible editing and inserting
concepts in Denemo. Making a difference between a clef/key/time-sig which is at
the front of a score and in the middle makes neither musical sense nor is it
encouraged by Lilypond.
Nils
- [Denemo-devel] Reduce complexity of Denemos Lilypond generation by stripping "Initial" versions of keysig, timesig, clef.,
Nils Gey <=