1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-05-07 15:22:34 +02:00
audacity/plug-ins/StudioFadeOut.ny
Paul Licameli ac9148e48f Don't use \n sequence inside Lisp strings needing translation...
... Because xgettext will just remove the \, not replace \n with newline.

That's consistent with Lisp reader behavior in this documentation:
http://www.lispworks.com/documentation/lw70/CLHS/Body/02_de.htm

The XLisp reader, which replaces \n with newline, is nonstandard.

So, to accommodate xgettext, use (format nil "...~%...") instead, or where
you can't do that in a $ header line, just make a line break inside the ""

There are a few "\n" left alone in sample-data-export.ny which are neither
in $ lines nor inside (_ "...")
2018-03-02 20:11:55 -05:00

46 lines
1.4 KiB
Common Lisp

;nyquist plug-in
;version 1
;type process
;categories "http://lv2plug.in/ns/lv2core#MixerPlugin"
$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.
;; Released under terms of the GNU General Public License version 2:
;; http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
;;
;; 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.
;;
;; 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 s (r-cos dur)))
(t (mult (filter s dur)(r-cos dur)))))