denemo-devel
[Top][All Lists]
Advanced

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

Re: [Denemo-devel] Ligatures


From: Richard Shann
Subject: Re: [Denemo-devel] Ligatures
Date: Sat, 10 Nov 2012 15:00:19 +0000

Andreas,

I have just read about ligatures, and you were quite right to start from
the Beam commands, except that they were old scripts rather poorly
written.
What I suggested was assuming you wanted to apply both ligature start
and end to the same note, but like Beam, you will not, so they can be
exactly as Beam, except that the start needs to be prefix not postfix
(and have the DENEMO_OVERRIDE_AFFIX set).
Note, LilyPond are threatening to regularise that syntax at some point
in the future, when we will need to change the script from prefix to
postfix too.

I have checked in new versions of Beam commands which should serve as
good models for your ligature commands.

Richard

On Sat, 2012-11-10 at 15:12 +0100, Andreas Schneider wrote:
> Am 10.11.2012 13:46, schrieb Richard Shann:
> > here you have used tag for the tag, before you used "Ligature"
> > I guess you really have (let ((tag "Ligature"))
> > at the start of your script?
> 
> No, I forgot that, i.e. I forgot to change tag to "Ligature". I must
> have been blind not to notice that. Fixing it, the scripts work.
> 
> > This is good, except that this directive has the same tag as the
> > StartLigature, so this script is actually editing the same directive,
> > the display value will be overridden and - the real problem - the
> > DENEMO_OVERRIDE_AFFIX will apply, which puts the postfix field before
> > the duration.
> 
> I did that because StartBeam and EndBeam use the same tag ("Beam"). And
> strangely, my two scripts work as I intended (after fixing the
> DENEMO_OVERRIDE_AFFIX line for StartLigature), i.e. the start is put
> before the note and the end after the note. Of course, your solution is
> probably cleaner.
> 
> > Usually you want a toggle - if present it deletes the directive, if not
> > in creates it.  
> 
> Consistently, shouldn't StartBeam and EndBeam do it the same way?
> 
> > Here is my version of the two commands
> > 
> > 
> > ;;; StartLigature
> > (if (d-Directive-chord? "LigatureStart")
> >  (d-DirectiveDelete-chord "LigatureStart")
> >  (let ((tag "LigatureStart"))
> >     (d-DirectivePut-chord-prefix tag "\\[")
> >     (d-DirectivePut-chord-display tag "\\[")
> >     (d-DirectivePut-chord-override tag DENEMO_OVERRIDE_AFFIX)
> >     (d-RefreshDisplay)
> >     (d-SetSaved #f)))
> > 
> > 
> > 
> > ;;; EndLigature
> > (if (d-Directive-chord? "LigatureEnd")
> >     (d-DirectiveDelete-chord "LigatureEnd")
> >     (let ((tag "LigatureEnd"))
> >             (d-DirectivePut-chord-postfix tag "\\]")
> >             (d-DirectivePut-chord-display tag "\\]")
> >             (d-RefreshDisplay)
> >             (d-SetSaved #f)))
> 
> Thanks for your help
> 
> Andreas





reply via email to

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