X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fly-syntax-constructors.scm;h=171cee12407e8bbb2ebf1f0c87b25d3ed3e0ce3f;hb=bf6cfba8705c5a4d76e5ab8c6669ea901d061ffb;hp=c34f5c9dd1dc81864acc7d2f143e7ba0d1e5dc7a;hpb=bbd36fb0cb6b2d8249cbe628470c736747c330d0;p=lilypond.git diff --git a/scm/ly-syntax-constructors.scm b/scm/ly-syntax-constructors.scm index c34f5c9dd1..171cee1240 100644 --- a/scm/ly-syntax-constructors.scm +++ b/scm/ly-syntax-constructors.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2006--2010 Erik Sandberg +;;;; Copyright (C) 2006--2011 Erik Sandberg ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -89,33 +89,34 @@ (make-music 'TransposedMusic 'element (ly:music-transpose music pitch))) -(define-ly-syntax-simple (tempo text duration tempo) - (let* ((range-tempo? (pair? tempo)) - (tempo-count (if range-tempo? - (round (/ (+ (car tempo) (cdr tempo)) 2)) - tempo)) - (props (list - (make-property-set 'tempoWholesPerMinute - (ly:moment-mul (ly:make-moment tempo-count 1) - (ly:duration-length duration))) - (make-property-set 'tempoUnitDuration duration) - (make-property-set 'tempoUnitCount tempo)))) - (set! props (cons - (if text (make-property-set 'tempoText text) - (make-property-unset 'tempoText)) - props)) - (context-spec-music - (make-sequential-music props) - 'Score))) - -(define-ly-syntax-simple (tempoText text) - (context-spec-music - (make-sequential-music - (list - (make-property-unset 'tempoUnitDuration) - (make-property-unset 'tempoUnitCount) - (make-property-set 'tempoText text))) - 'Score)) +(define-ly-syntax (tempo parser location text . rest) + (let* ((unit (and (pair? rest) + (car rest))) + (count (and unit + (cadr rest))) + (range-tempo? (pair? count)) + (tempo-change (make-music 'TempoChangeEvent + 'origin location + 'text text + 'tempo-unit unit + 'metronome-count count)) + (tempo-set + (and unit + (context-spec-music + (make-property-set 'tempoWholesPerMinute + (ly:moment-mul + (ly:make-moment + (if range-tempo? + (round (/ (+ (car count) (cdr count)) + 2)) + count) + 1) + (ly:duration-length unit))) + 'Score)))) + + (if tempo-set + (make-sequential-music (list tempo-change tempo-set)) + tempo-change))) (define-ly-syntax-simple (skip-music dur) (make-music 'SkipMusic