From: David Kastrup Date: Sun, 16 Nov 2014 18:31:22 +0000 (+0100) Subject: Issue 4099: Partcombine warning about simultaneous breathing X-Git-Tag: release/2.19.16-1~2^2~54^2~32 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=05ae3ee407193d492f9baede0498eb81a05d93ab;p=lilypond.git Issue 4099: Partcombine warning about simultaneous breathing This moves the default midi-length definition of BreathingEvent to define-music-types: it does not make sense to put default settings in the music event itself. --- diff --git a/ly/music-functions-init.ly b/ly/music-functions-init.ly index d4755cbac3..182f8fdf36 100644 --- a/ly/music-functions-init.ly +++ b/ly/music-functions-init.ly @@ -253,15 +253,7 @@ bookOutputSuffix = breathe = #(define-music-function (parser location) () (_i "Insert a breath mark.") - (make-music 'BreathingEvent - 'midi-length - (lambda (len context) - ;;Shorten by half, or by up to a second, but always by a power of 2 - (let* ((desired (min (ly:moment-main (seconds->moment 1 context)) - (* (ly:moment-main len) 1/2))) - (scale (inexact->exact (ceiling (/ (log desired) (log 1/2))))) - (breath (ly:make-moment (expt 1/2 scale)))) - (ly:moment-sub (ly:make-moment (ly:moment-main len)) breath))))) + (make-music 'BreathingEvent)) clef = #(define-music-function (parser location type) (string?) diff --git a/scm/define-music-callbacks.scm b/scm/define-music-callbacks.scm index 24281a8838..667a7c6315 100644 --- a/scm/define-music-callbacks.scm +++ b/scm/define-music-callbacks.scm @@ -116,3 +116,14 @@ to be used by the sequential-iterator" 'Timing) 'Score) (make-music 'TimeSignatureEvent music)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Some MIDI callbacks -- is this a good place for them? + +(define-public (breathe::midi-length len context) + ;;Shorten by half, or by up to a second, but always by a power of 2 + (let* ((desired (min (ly:moment-main (seconds->moment 1 context)) + (* (ly:moment-main len) 1/2))) + (scale (inexact->exact (ceiling (/ (log desired) (log 1/2))))) + (breath (ly:make-moment (expt 1/2 scale)))) + (ly:moment-sub (ly:make-moment (ly:moment-main len)) breath))) diff --git a/scm/define-music-types.scm b/scm/define-music-types.scm index 359e10eac1..c7984c9674 100644 --- a/scm/define-music-types.scm +++ b/scm/define-music-types.scm @@ -128,7 +128,7 @@ Syntax for manual control: @code{c8-[ c c-] c8}") Syntax: @var{note}@code{\\breathe}") (types . (general-music event breathing-event)) - )) + (midi-length . ,breathe::midi-length))) (ClusterNoteEvent . ((description . "A note that is part of a cluster.")