[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Incipit
From: |
Richard Shann |
Subject: |
Re: Incipit |
Date: |
Tue, 23 Jan 2024 16:02:23 +0000 |
User-agent: |
Evolution 3.46.4-2 |
On Sun, 2024-01-21 at 12:58 +0000, Richard Shann wrote:
> ps I haven't had a chance to investigate your script yet, I'll try to
> get to it as you said there was some undesirably hard coded value in
> it.
I've done some tinkering with your script for StaffIncipit. There is no
obvious way to compute how much space LilyPond will use to typeset the
incipit, but I've put in a simple heuristic in this version. And I've
taken the notes to be used in the incipit from the selection. A
suitable clef etc would need to be (temporarily) inserted to include in
the selection. Repeating the command allows you to refine the incipit
length and executing it without a selection allows you to delete it.
8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><
;;;StaffIncipit
(let ((tag "StaffIncipit")(lily "")(incipitLength 15)(indent "20.0")
(indentLength 20) (items 0) (lengthInput "15"))
(define (accum)
(let ((this (d-GetLilyPond)))
(set! items (1+ items))
(if this
(set! lily (string-append lily this)))))
(if (d-IsInSelection)
(begin
(SingleAndSelectionSwitcher accum)
;;;avoid mis-matched curly braces in lily
(let ((open (string-count lily #\{))(close (string-count lily
#\})))
(let loop ((count (- open close)))
(if (> count 0)
(begin
(set! lily (string-append lily "}"))
(loop (1- count))))))
(set! lengthInput (d-DirectiveGet-voice-data tag))
(if (not lengthInput)
(set! lengthInput (number->string (+ 5 (* 3
items))))) ;;;heuristic to guess length
(set! lengthInput (d-GetUserInput (_ "Incipit")
(_ "Give incipit length for lily staff:")
lengthInput))
(if (and (string? indent) (string->number lengthInput))
(set! incipitLength (string->number lengthInput)))
(d-DirectivePut-voice-data tag lengthInput)
(d-DirectivePut-voice-postfix tag (string-append
"\\incipit { "
lily " }"))
(d-DirectivePut-layout-postfix tag (string-append "
incipit-width
= " (number->string incipitLength) "\n"))
(set! indent (d-DirectiveGet-score-data "ScoreIndent"))
(if (and (string? indent) (string->number indent))
(begin
(set! indentLength (string->number indent))
(if (> incipitLength indentLength)
(d-ScoreIndent (+ incipitLength
indentLength))))))
(begin
(if (d-Directive-voice? tag)
(begin
(d-DirectiveDelete-voice tag)
(d-WarningDialog (_ "Staff Incipit Deleted")))
(d-WarningDialog (_ "Cursor not in selection"))))))
8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><
If there are no problems with this I could include it in the staff
menu. I'm not too sure how to explain what it is for/does - someone
just asked on the mailing list whether those special note heads
(Petrucci?) etc can be altered ...
Richard
- Re: Incipit, Andreas Schneider, 2024/01/21
- Re: Incipit,
Richard Shann <=