(result '(0 1))) ; 0 in fraction form
(if (= measure-start -1)
(message "No | before point")
- (progn
- (goto-char (1+ measure-start))
- (goto-note-begin)
- (while (< (point) end)
- (setq new-duration (walk-note-duration))
+ (goto-char (1+ measure-start))
+ (goto-note-begin)
+ (while (< (point) end)
+ (let ((new-duration (walk-note-duration)))
(if (null new-duration)
- (if (not (looking-at "\\\\times[ \t]*\\([1-9]*\\)/\\([1-9]*\\)[ \t\n]*{"))
+ (if (not (looking-at
+ (concat "\\\\t\\(?:\\(imes\\)\\|uplet\\)[ \t]*\\([0-9]+\\)/\\([0-9]+\\)\\(?:[ \t\n]"
+ duration-regex "\\)?[ \t\n]*{")))
(skip-good-keywords)
- ; handle \times specially
- (let ((numerator (string-to-int (match-string 1)))
- (denominator (string-to-int (match-string 2))))
+ ; handle \times/\tuplet specially
+ (let* ((times-p (match-beginning 1))
+ (numerator (string-to-int (match-string (if times-p 2 3))))
+ (denominator (string-to-int (match-string (if times-p 3 2)))))
(goto-char (match-end 0))
(goto-note-begin)
(while (and (not (looking-at "}"))
(if (not (eq new-duration t))
(setq duration new-duration))
(setq result (add-fractions result duration)))
- (goto-note-begin))
+ (goto-note-begin)))
- result
-))))))
+ result)))))
(defun LilyPond-what-beat ()
"Returns how much of a measure lies between last measaure '|' and point.