basic MML->ymamoto functionality
[mumble.git] / music-utilities.lisp
blob4ae69d1990ee13b60f0b22e97ccbff6816022bce
2 (in-package :mumble)
4 (defconstant +seconds-per-minute+ 60)
6 (defun duration-to-frames (duration tempo &optional (frequency 50))
7 "Returns a /fractional/ duration -- the conversion routine is
8 responsible for dealing with these fractions as it sees fit."
9 (let ((count (/ (/ frequency (/ tempo +seconds-per-minute+))
10 (duration-denominator duration))))
11 ;; dots
12 (do ((dots (duration-dots duration) (1- dots))
13 (extra (/ count 2) (/ extra 2)))
14 ((not (plusp dots)))
15 (incf count extra))
16 ;; XXX staccato, ties
17 count))