1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-05-01 08:09:41 +02:00
audacity/plug-ins/StudioFadeOut.ny
Steve Daulton 975e95abad Update Nyquist plug-in headers
Mostly consistency updates, plus a couple of minor fixes.
Line breaks in translated control text strings do not work, so have
been removed.
Obsolete ";categories" commands removed, and ";info" commands replaced
with standard Lisp comments.
2018-03-21 22:49:35 +00:00

47 lines
1.4 KiB
Common Lisp

$nyquist plug-in
$version 4
$type process
$name (_ "Studio Fade Out")
$manpage "Fades#studio_fadeout"
$action (_ "Applying Fade...")
$author (_ "Steve Daulton")
$copyright (_ "Released under terms of the GNU General Public License version 2")
;; StudioFadeOut.ny by Steve Daulton December 2012.
;;
;; Produce a smooth and musical sounding fade out.
;; Applies a sinusoidal fade out with a progressive low-pass
;; filter from full spectrum at start to 100 Hz at end.
;; Released under terms of the GNU General Public License version 2:
;; http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
;;
;; For information about writing and modifying Nyquist plug-ins:
;; https://wiki.audacityteam.org/wiki/Nyquist_Plug-ins_Reference
;;; sweeping low pass filter
(defun filter (sig dur)
(abs-env
;; cross-fade the filter
(let* ((nyq-hz (/ *sound-srate* 2))
(f-out (r-cos (min (/ dur 2.0) 0.5)))
(f-in (diff (snd-const 1 0 *sound-srate* dur) f-out)))
(sim
(mult f-out sig)
(mult f-in (lp sig (pwlv nyq-hz dur 100)))))))
;;; raised cosine
(defun r-cos (dur)
(abs-env
(mult 0.5
(sum 1
(osc (hz-to-step (/ (* dur 2))) dur *table* 90)))))
(let ((dur (get-duration 1)))
(cond
((< len 3) (format nil (_ "Selection too short.~%It must be more than 2 samples.")))
((< dur 0.2) (mult *track* (r-cos dur)))
(t (mult (filter *track* dur)(r-cos dur)))))