mirror of
https://github.com/cookiengineer/audacity
synced 2025-04-29 15:19:44 +02:00
76 lines
2.2 KiB
Common Lisp
76 lines
2.2 KiB
Common Lisp
;; equalizer.lsp -- support functions for equalizer editor in jNyqIDE
|
|
|
|
#| This is modeled after envelopes.lsp, which details how envelope data is
|
|
exchanged between Nyquist and jNyqIDE.
|
|
|
|
The jNyqIDE code needs some work to make it look like the envelope
|
|
editor (which also needs work, but that's another matter). For consistency,
|
|
both should support named envelopes and equalizers.
|
|
|
|
However, for now, we have equalizers numbered from 0 to 9. The format for
|
|
exchange will be:
|
|
|
|
get-eq-data: begin
|
|
name parameters newline
|
|
name parameters newline
|
|
...
|
|
get-eq-data: end
|
|
|
|
and when the IDE wants to save a definition, it should call
|
|
(DEFINE-EQ 'NAME 'PARAMETER-LIST)
|
|
|
|
|#
|
|
|
|
(cond ((not (boundp '*equalizers*))
|
|
(setf *equalizers* nil)))
|
|
|
|
;; DEFINE-EQ -- save the eq data and make corresponding function
|
|
;;
|
|
(defun define-eq (name expression)
|
|
(setf *equalizers* (remove name *equalizers*
|
|
:test #'(lambda (key item) (eql key (car item)))))
|
|
(push (list name expression) *equalizers*)
|
|
(make-eq-function name expression)
|
|
; make sure equalizers are redefined when workspace is loaded
|
|
(add-to-workspace '*equalizers*)
|
|
(describe '*equalizers* "data for equalizers in jNyqIDE")
|
|
(add-action-to-workspace 'make-eq-functions)
|
|
nil)
|
|
|
|
|
|
;; MAKE-EQ-FUNCTION -- convert data to a defined function
|
|
;;
|
|
(defun make-eq-function (name parameters)
|
|
(cond ((numberp name)
|
|
(setf name (intern (format nil "EQ-~A" name)))))
|
|
(if (not (boundp '*grapheq-loaded*)) (load "grapheq.lsp"))
|
|
(setf (symbol-function name)
|
|
(eval `(lambda (s) (nband-range s ',parameters 60 14000)))))
|
|
|
|
|
|
;; MAKE-EQ-FUNCTIONS -- convert data to defined functions
|
|
;;
|
|
(defun make-eq-functions ()
|
|
(let (name type parameters)
|
|
(dolist (eq *equalizers*)
|
|
(setf name (car eq))
|
|
(setf parameters (second parameters))
|
|
(make-eq-function name parameters))))
|
|
|
|
|
|
;; GET-EQ-DATA -- print env data for IDE
|
|
;;
|
|
(defun get-eq-data ()
|
|
(let (parameters)
|
|
(princ "get-eq-data: begin\n")
|
|
(dolist (env *equalizers*)
|
|
(format t "~A" (car env))
|
|
(setf parameters (second env))
|
|
(dotimes (i (length parameters))
|
|
(format t " ~A" (aref parameters i)))
|
|
(format t "~%"))
|
|
(princ "get-eq-data: end\n")
|
|
nil))
|
|
|
|
|