home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 February / MAC_easy_02_2010.iso / Software / Multimedia / audacity-macosx-ub-1.3.11.dmg / nyquist / equalizer.lsp < prev    next >
Encoding:
Lisp/Scheme  |  2010-01-16  |  2.2 KB  |  76 lines

  1. ;; equalizer.lsp -- support functions for equalizer editor in jNyqIDE
  2.  
  3. #| This is modeled after envelopes.lsp, which details how envelope data is 
  4. exchanged between Nyquist and jNyqIDE.
  5.  
  6. The jNyqIDE code needs some work to make it look like the envelope
  7. editor (which also needs work, but that's another matter). For consistency,
  8. both should support named envelopes and equalizers.
  9.  
  10. However, for now, we have equalizers numbered from 0 to 9. The format for
  11. exchange will be:
  12.  
  13. get-eq-data: begin
  14. name parameters newline
  15. name parameters newline
  16. ...
  17. get-eq-data: end
  18.  
  19. and when the IDE wants to save a definition, it should call
  20. (DEFINE-EQ 'NAME 'PARAMETER-LIST)
  21.  
  22. |#
  23.  
  24. (cond ((not (boundp '*equalizers*))
  25.        (setf *equalizers* nil)))
  26.  
  27. ;; DEFINE-EQ -- save the eq data and make corresponding function
  28. ;;
  29. (defun define-eq (name expression)
  30.   (setf *equalizers* (remove name *equalizers* 
  31.                             :test #'(lambda (key item) (eql key (car item)))))
  32.   (push (list name expression) *equalizers*)
  33.   (make-eq-function name expression)
  34.   ; make sure equalizers are redefined when workspace is loaded
  35.   (add-to-workspace '*equalizers*)
  36.   (describe '*equalizers* "data for equalizers in jNyqIDE")
  37.   (add-action-to-workspace 'make-eq-functions)
  38.   nil)
  39.  
  40.  
  41. ;; MAKE-EQ-FUNCTION -- convert data to a defined function
  42. ;;
  43. (defun make-eq-function (name parameters)
  44.   (cond ((numberp name)
  45.              (setf name (intern (format nil "EQ-~A" name)))))
  46.   (if (not (boundp '*grapheq-loaded*)) (load "grapheq.lsp"))
  47.   (setf (symbol-function name)
  48.         (eval `(lambda (s) (nband-range s ',parameters 60 14000)))))
  49.  
  50.  
  51. ;; MAKE-EQ-FUNCTIONS -- convert data to defined functions
  52. ;;
  53. (defun make-eq-functions ()
  54.   (let (name type parameters)
  55.     (dolist (eq *equalizers*)
  56.        (setf name (car eq))
  57.        (setf parameters (second parameters))
  58.        (make-eq-function name parameters))))
  59.  
  60.  
  61. ;; GET-EQ-DATA -- print env data for IDE
  62. ;;
  63. (defun get-eq-data ()
  64.   (let (parameters)
  65.     (princ "get-eq-data: begin\n")
  66.     (dolist (env *equalizers*)
  67.       (format t "~A" (car env))
  68.       (setf parameters (second env))
  69.       (dotimes (i (length parameters))
  70.         (format t " ~A" (aref parameters i)))
  71.       (format t "~%"))
  72.     (princ "get-eq-data: end\n")
  73.     nil))
  74.  
  75.  
  76.