cdulcimer.lsp Version 1.00 31 October 2004 Author Steven Jones Contact jones57@swbell.net include the word "nyquist" in subject line The contents of this file are released under the terms of the GNU General Public License. See the file LICENSE.txt A chromatic dulcimer with "floating" aeolian harp reverb. Use dulcimer.lsp for instrument with just intonation.
wrapper
(cdulcimer plist dur [:vel][:pos][:arpeg][:aeo][:i][:rc][:rm][:attack][:decay]) A chromatic dulcimer with Aeolian reverb.
;; cdulcimer.lsp
;; Version 1.00 31 October 2004
;; Author Steven Jones
;;
;; Contact jones57@swbell.net include the word "nyquist" in subject line
;;
;; The contents of this file are released under the terms of the GNU General
;; Public License. See the file LICENSE.txt
;;
;; A chromatic dulcimer with "floating" aeolian harp reverb.
;; Use dulcimer.lsp for instrument with just intonation.
;;
(require 'map)
(require 'aeolus)
(require 'dulcimer)
(provide 'cdulcimer)
(current-file "cdulcimer")
;; Define the Aeolian harp in realtive mode.
;; and set the harmonic structure.
;;
(setf cdulcimer:*harp* (send aeolus:class :new 'REL))
(dolist (rfrq '(1.000 1.500 1.333 1.250 1.200 1.6667 1.875))
(send cdulcimer:*harp* :string rfrq))
;; Add keyword arguments to the harp
(send cdulcimer:*harp* :key ':i 3.000 (map:linear 0.1 1.00 0 1))
(send cdulcimer:*harp* :key ':attack 0.050 (map:linear 10 1.00 0 1))
(send cdulcimer:*harp* :key ':decay 2.000 (map:linear 0.2 1.00 0 1))
(send cdulcimer:*harp* :key ':rc 4.000 (map:constant 1))
(send cdulcimer:*harp* :key ':rm 1.001 (map:linear 1.1 1 0 1))
;; We borrow the pluck function form dulcimer.lsp
;;
(setfn cdulcimer:pluck dulcimer:pluck)
;; Define an aeolian instrument.
;;
(defun cdulcimer:aeolian (pitch dur &rest args)
(send cdulcimer:*harp* :render (step-to-hz pitch) dur args))
;; Produce a single pluck/aeolian sound
;;
(defun cdulcimer:voice (pitch dur &rest args)
(let ((amix (send dulcimer:*aeolian-db-map* :get (get-keyword-value ':aeo args 64)))
(arglist (append (list pitch dur) args)))
(sum (apply #'cdulcimer:pluck arglist)
(scale-db amix (apply #'cdulcimer:aeolian arglist))
)))
;; @doc wrapper cdulcimer
;; (cdulcimer plist dur [:vel][:pos][:arpeg][:aeo][:i][:rc][:rm][:attack][:decay])
;; A chromatic dulcimer with Aeolian reverb.
;;
(defwrapper cdulcimer #'cdulcimer:voice)