[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Denemo-devel] [bug #28095] Improved metronome mark command script
From: |
anonymous |
Subject: |
[Denemo-devel] [bug #28095] Improved metronome mark command script |
Date: |
Thu, 26 Nov 2009 05:56:18 +0000 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 |
URL:
<http://savannah.gnu.org/bugs/?28095>
Summary: Improved metronome mark command script
Project: GNU Denemo, a gtk+ frontend to GNU Lilypond
Submitted by: None
Submitted on: Thu 26 Nov 2009 05:56:16 AM UTC
Category: Feature request
Severity: 3 - Normal
Item Group: None
Status: None
Privacy: Public
Assigned to: None
Open/Closed: Open
Discussion Lock: Any
_______________________________________________________
Details:
I thought this script might be useful. It allows you to set metronome marks
with base other than quarter, and it calculates, I hope, the right midi bpm
and gives correct lilypond. An expansion of the existing script.-Dan W.
(let ((input "") (len 1) (dotted #f)(duration "4")(bpm 60)(midiBpm 60)(valid
#f) )
(set! input (d-GetUserInput "Metronome Marking" "Give unit beat duration
\n(e.g., 4. for dotted-quarter):" "4" ))
(set! len (string-length input) )
(set! dotted (equal? "." (substring input (- len 1) len )) ) ;see if a dot
at end
(if (equal? dotted #t)
(set! duration (substring input 0 (- len 1))) ;if there's a dot, cut it off
from input to get base duration.
(set! duration input) )
(set! bpm (d-GetUserInput "Metronome Marking"
"Give number of these beats per minute:" "60" ) )
(set! valid (not (equal? (and (string->number duration)
(string->number bpm) ) #f))) ;don't go unless both are numbers.
;don't go unless base duration is valid lilypond: (could go higher if
wanted):
(if (and (equal? valid #t) (or (equal? duration "1")(equal? duration
"2")(equal? duration "4")(equal? duration "8")(equal? duration "16")) )
(begin
;want * 3/2 for dotted,*4 since midi uses quarters and divide by duration,
(if (equal? dotted #t) (set! midiBpm (number->string (floor (* (/
(string->number bpm) (string->number duration)) 6 ) ) ) )
(set! midiBpm (number->string (floor (* (/ (string->number bpm)
(string->number duration) ) 4)) ) )
)
(d-DirectivePut-chord-prefix "MM" (string-append "\\override
Score.MetronomeMark #'padding = #3
\\tempo " input " = " bpm))
(d-DirectivePut-chord-override "MM" (logior DENEMO_OVERRIDE_TEMPO
DENEMO_OVERRIDE_STEP))
(d-DirectivePut-chord-midibytes "MM" midiBpm)
(d-DirectivePut-chord-display "MM" (string-append input "=" bpm))
)
(d-WarningDialog "Incorrect syntax.")
))
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?28095>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/
- [Denemo-devel] [bug #28095] Improved metronome mark command script,
anonymous <=