Re: Delayed turns etc

2024-04-17 Thread Robin Bannister

Peter Mayes wrote:

On 16/04/2024 23:33, Knute Snortum wrote:


3. How to stop the second line being justified out to the right?
In the fuller score, something like this is followed by a page
break and more music, but there is a natural break at this double
bar, and it looks very "stretched out". I tried various "ragged"
keywords, but none of them just operated on the one line.


Is this not what you want?

\paper {
  ragged-last = ##t
}

That works for the last line of the whole score. The line I want to be
"ragged" is the last line of a page. with more music on the next page.



A similar question last year got several answers:
https://lists.gnu.org/archive/html/lilypond-user/2023-06/msg00148.html

If you want to try pseudoIndent, I have appended the latest version.


Cheers,
Robin
 PSEUDOINDENT FUNCTIONS 

% these two functions are for indenting individual systems
% - to left-indent a system, apply \pseudoIndent before the music continues
% - \pseudoIndents is similar, but lets you also indent on the right
% - both provide an option for changing that system's instrument names

% N.B. these functions 
% - assume application to non-ragged lines (generally the default)
% - include a manual \break to ensure application at line start 
% - misbehave if called more than once at the same line start

% the parameters of the (full) pseudoIndents function are:
% 1: name-tweaks
%  usually omitted; accepts replacement \markup for instrument names 
%  as an ordered list; starred elements leave their i-names unchanged.
% 2: left-indent 
%  additional left-indentation, in staff-space units; can be negative, 
%  but avoid a total indentation which implies (unsupported) stretching. 
% 3: right-indent 
%  amount of right-indentation, in staff-space units; can be negative. 
%  - not offered by the (reduced) pseudoIndent function


pseudoIndents = % inline alternative to a new \score, also with right-indent
#(define-music-function (name-tweaks left-indent right-indent) 
  ((markup-list? '()) number? number?)
  (define (warn-stretched p1 p2) (ly:input-warning (*location*) (G_
" pseudoIndents ~s ~s is stretching staff; expect distorted layout") p1 p2))
  (let* ( 
(narrowing (+ left-indent right-indent)) ; of staff implied by args

(set-staffsymbol! (lambda (staffsymbol-grob) ; change staff to new width 
  (let* (
(left-bound (ly:spanner-bound staffsymbol-grob LEFT))
(left-moment (ly:grob-property left-bound 'when))
(capo? (moment<=? left-moment ZERO-MOMENT)) ; in first system of score
(layout (ly:grob-layout staffsymbol-grob))
(lw (ly:output-def-lookup layout 'line-width)) ; debugging info
(indent (ly:output-def-lookup layout (if capo? 'indent 'short-indent)))
(old-stil (ly:staff-symbol::print staffsymbol-grob))
(staffsymbol-x-ext (ly:stencil-extent old-stil X))
;; >=2.19.16's first system has old-stil already narrowed [2]
;; compensate for this (ie being not pristine) when calculating 
;; - old leftmost-x (its value is needed when setting so-called 'width) 
;; - the new width and position (via local variable narrowing_) 
(ss-t (ly:staff-symbol-line-thickness staffsymbol-grob))
(pristine? (<= 0 (car staffsymbol-x-ext) ss-t)) ; would expect half
(leftmost-x (+ indent (if pristine? 0 narrowing))) 
(narrowing_ (if pristine? narrowing 0)) ; uses 0 if already narrowed
(old-width (+ (interval-length staffsymbol-x-ext) ss-t))
(new-width (- old-width narrowing_))
(new-rightmost-x (+ leftmost-x new-width)) ; and set! this immediately
(junk (ly:grob-set-property! staffsymbol-grob 'width new-rightmost-x))
(in-situ-stil (ly:staff-symbol::print staffsymbol-grob))
(new-stil (ly:stencil-translate-axis in-situ-stil narrowing_ X))
   ;(new-stil (stencil-with-color new-stil red)) ; for when debugging
(new-x-ext (ly:stencil-extent new-stil X)))
  (ly:grob-set-property! staffsymbol-grob 'stencil new-stil)
  (ly:grob-set-property! staffsymbol-grob 'X-extent new-x-ext)
  )))

(set-X-offset! (lambda (margin-grob) ; move grob across to line start 
  (let* (
(old (ly:grob-property-data margin-grob 'X-offset)) 
(new (lambda (grob) (+ (if (procedure? old) (old grob) old) narrowing
  (ly:grob-set-property! margin-grob 'X-offset new

(tweak-text! (lambda (i-name-grob mkup) ; tweak both instrumentname texts   
  (if (and (markup? mkup) (not (string=? (markup->string mkup) "*")))
  (begin 
(ly:grob-set-property! i-name-grob 'long-text mkup)
(ly:grob-set-property! i-name-grob 'text mkup)
 ; else retain existing text 

(install-narrowing (lambda (leftedge-grob) ; on staves, + adapt left margin
  (define (grob-name x) (assq-ref (ly:grob-property x 'meta) 

Re: Delayed turns etc

2024-04-17 Thread Thomas Morley
Am Mi., 17. Apr. 2024 um 11:13 Uhr schrieb Jean Abou Samra :
>
> That works for the last line of the whole score. The line I want to be 
> "ragged" is the last line of a page. with more music on the next page.
>
>
> There is no way to make just one system ragged except the last one in the 
> score. I'm afraid you need a second \score block if you want to do this.

I'd vote for a second score as well, though there is
https://lsr.di.unimi.it/LSR/Item?id=1098
(Not tested with 2.25.xx)

Cheers,
  Harm



Re: Delayed turns etc

2024-04-17 Thread Jean Abou Samra
> That works for the last line of the whole score. The line I want to be
> "ragged" is the last line of a page. with more music on the next page.

There is no way to make just one system ragged except the last one in the score.
I'm afraid you need a second \score block if you want to do this.


signature.asc
Description: This is a digitally signed message part


Re: Delayed turns etc

2024-04-17 Thread Peter Mayes

On 16/04/2024 23:33, Knute Snortum wrote:


3. How to stop the second line being justified out to the right?
In the fuller score, something like this is followed by a page
break and more music, but there is a natural break at this double
bar, and it looks very "stretched out". I tried various "ragged"
keywords, but none of them just operated on the one line.


Is this not what you want?

\paper {
  ragged-last = ##t
}
That works for the last line of the whole score. The line I want to be 
"ragged" is the last line of a page. with more music on the next page.


--
Best wishes -- Peter
--
Peter Mayes


Re: Delayed turns etc

2024-04-16 Thread Knute Snortum
Here are my answers.  Other people may have better suggestions.

On Tue, Apr 16, 2024 at 2:27 PM Peter Mayes  wrote:

> 1. I would like the \trill in bar 2 and the ten(uto) in bar 6 to be below
> the slurs, and not above.
>
Getting the trill under (inside) the slur is easy:

  % Trill under slur with tweak avoid slur
  fis[ \afterGrace g-\tweak avoid-slur #'inside \trill {fis16 g} gis8)] |

Getting the "ten." under the slur is a little harder:

  % "ten." under slur with shape shape and tweak outside staff priority
  ais,8\turn-\shape #'((0 . 0) (0 . 0) (0 . 2) (0 . 0)) ( fis e'! ~ |
  e4-\tweak outside-staff-priority ##f ^\markup{\italic ten.} dis8) |


> 2. In the score I am trying to engrave, the three \turn's have an
> accidental underneath - First has a sharp, second and third a double sharp.
> I have seen the section "Creating a delayed turn" in notation.pdf, but
> nothing I try achieves what I want. I *DO* want the turn to be directly
> above the first note of the bar, rather than between the first and second.
>

This is tricky.  Here's what I came up with:

  \once \override TextScript.outside-staff-priority = 0
  \once \override Script.outside-staff-priority = 100
  \shape #'((1 . 2) (1 . 2) (0 . 0) (0 . 0)) Slur
  gis'8^\markup \teeny \sharp -\tweak avoid-slur #'inside \turn (bis cis |


> 3. How to stop the second line being justified out to the right? In the
> fuller score, something like this is followed by a page break and more
> music, but there is a natural break at this double bar, and it looks very
> "stretched out". I tried various "ragged" keywords, but none of them just
> operated on the one line.
>

Is this not what you want?

\paper {
  ragged-last = ##t
}