[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Denemo-devel] [bug #28346] Metronome mark not seen, script tweak

From: anonymous
Subject: [Denemo-devel] [bug #28346] Metronome mark not seen, script tweak
Date: Sat, 19 Dec 2009 20:04:59 +0000
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: Gecko/20091201 Firefox/3.5.6


                 Summary: Metronome mark not seen, script tweak
                 Project: GNU Denemo, a gtk+ frontend to GNU Lilypond
            Submitted by: None
            Submitted on: Sat 19 Dec 2009 08:04:58 PM UTC
                Category: None
                Severity: 3 - Normal
              Item Group: None
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any



I wonder if this problem has been fixed in the new fluidsynth version--but
it's present in the 0.8.10 windows version.
The midi playback doesn't play back in the correct bpm if it was set in a
previous measure.  It only sees bpm settings from the current measure

Also, I think it might be worthwhile to change the Metronome Mark script so
that it puts a standalone rather than a chord directive.  This way, if you
enter a MM before you've entered a note (in an empty measure), you'll still
get the MM, whereas now, you get nothing after entering all the data. (To see
what I mean, from a blank score, try to insert a MM-you get zilch.)  Also can
delete them just like deleting a note.

It appears that using it this way works just as well with midi playback on
this 0.8.10 version.  The script is below.

Ultimately, it would be nice to have a hard-coded version that included a
checkbox for whether it's printed or not (may just want to modify MIDI), and
perhaps it could be integrated with the tempo marks (in lilypond, the same
command can set tempo and put a tempo mark).  Attached is an image from
lilypond tool that is along the lines of what I mean.  

Here's the complete script, modified for standalone marks (gave it some
minpixels and set ty, etc.):

(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
      (if (and (equal? valid #t) (or   (equal? duration "1")(equal? duration
"2")(equal? duration "4")(equal? duration "8")(equal? duration "16"))   ) 
;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-standalone "MM" )
  (d-DirectivePut-standalone-prefix "MM"  (string-append "\\override
Score.MetronomeMark #'padding = #3
  \\tempo " input " = " bpm))
  (d-DirectivePut-standalone-override "MM" (logior DENEMO_OVERRIDE_TEMPO
  (d-DirectivePut-standalone-midibytes "MM" midiBpm)
  (d-DirectivePut-standalone-display "MM" (string-append input "=" bpm))
  (d-DirectivePut-standalone-ty "MM" 80)
  (d-DirectivePut-standalone-minpixels "MM" 10)
(d-WarningDialog "Incorrect syntax.")


File Attachments:

Date: Sat 19 Dec 2009 08:04:58 PM UTC  Name: TempoDialog.bmp  Size: 120kB  
By: None



Reply to this item at:


  Message sent via/by Savannah

reply via email to

[Prev in Thread] Current Thread [Next in Thread]