File: InstallGraceNoteHint.scm

package info (click to toggle)
denemo 2.6.49-0.2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 66,916 kB
  • sloc: ansic: 94,587; lisp: 38,713; xml: 22,675; python: 1,930; sh: 1,239; makefile: 642; yacc: 288; sed: 93
file content (37 lines) | stat: -rw-r--r-- 1,437 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
;InstallGraceNoteHint
(let ()
 (define (get-grace)
    (define str "(d-InsertBlankWholeNote)(d-MoveCursorLeft)(d-ToggleGrace)")
    (d-PushPosition)
    (let ((duration (d-GetNoteBaseDuration)) )
     (set! str (string-append str "(d-Change" (number->string duration) ")(d-MoveCursorRight)")))
    (let loop ()
        (if (d-NextChordInMeasure)
          (if (d-IsGrace)
            (begin
              (set! str (string-append str "(d-InsertBlankWholeNote)(d-MoveCursorLeft)(d-ToggleGrace)" "(d-Change" (number->string (d-GetNoteBaseDuration)) ")(d-MoveCursorRight)"))
              (loop)))))
      (d-PopPosition)
      str)
  (define (move-to-next start)
		(define this (d-GetStartTick))
		(if (and (or (not (Music?)) (> start this)) (d-NextObjectInMeasure))
			(move-to-next start)))
      ;;;;;;;;; procedure starts here
      (while (and (d-IsGrace) (d-PrevObjectInMeasure)))
      (if (not (d-IsGrace))
		(d-NextObjectInMeasure))
	  (if (d-IsGrace)
		(let ((hint (get-grace)) (start (d-GetStartTick)))
			(while (d-MoveToStaffUp))
			(let loop ()
				(define this (d-GetStartTick))
				(if this
					(begin
						(move-to-next start)
						(if (and (= start (d-GetStartTick))(not (d-IsGrace)) (not (d-Directive-standalone? "MultiMeasureRests")))
							  (eval-string hint))
						(if (d-MoveToStaffDown)
							(loop)))
					(d-WarningDialog (_ "Cannot have empty measures")))))
		(d-WarningDialog (_ "Not on a grace note"))))