denemo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Denemo-devel] Reduce complexity of Denemos Lilypond generation by s


From: Richard Shann
Subject: Re: [Denemo-devel] Reduce complexity of Denemos Lilypond generation by stripping "Initial" versions of keysig, timesig, clef.
Date: Fri, 29 Apr 2011 16:10:22 +0100

On Fri, 2011-04-29 at 14:44 +0200, Nils Gey wrote:
> Hello list,
> 
> Lilypond-code generated by Denemo is not exactly easy to read. I blame the 
> staff definitions
these multiple layers of defines were introduced by me at the time I was
creating the LilyPond editing window. They allow you to write a custom
score block where you choose which definitions to use and which to
override.
Since then along came our denemo directives, and that stuff (custom
score block ...) is left behind ...

The Initial XXX was a design decision made in 1999, it would be great if
someone had the inclination to simplify it.

Whether it is worth putting a lot of effort into prettifying the
LilyPond output at this stage I am not so sure though. It is a worthy
aim though.

The timesig ever present I think could just be turned off without any
special consequence - I guess it could even be optional to display it.
Tweak draw.c around the start of DrawStaff() - with possible knock on
consequences to mousing.c

Richard


>  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 mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/denemo-devel




reply via email to

[Prev in Thread] Current Thread [Next in Thread]