audacia/nyquist/velocity.lsp

25 lines
495 B
Common Lisp

;; velocity.lsp -- conversion routines for MIDI velocity
;;
;; Roger B. Dannenberg
;; July, 2012
(defun db-to-vel (x &optional float)
(linear-to-vel (db-to-linear x) float))
(defun linear-to-vel (x &optional float)
(setf x (/ (- (sqrt (abs x)) 0.0239372) 0.00768553))
(cond (float x)
(t
(setf x (round x))
(max 1 (min 127 x)))))
(defun vel-to-db (v)
(linear-to-db (vel-to-linear v)))
(defun vel-to-linear (v)
(power (+ (* v 0.00768553) 0.0239372) 2))