mirror of
https://github.com/cookiengineer/audacity
synced 2025-07-31 07:59:27 +02:00
New Nyquist crossfade effect added.
This commit is contained in:
parent
a334a39152
commit
d0471a2370
49
plug-ins/crossfadetracks.ny
Normal file
49
plug-ins/crossfadetracks.ny
Normal file
@ -0,0 +1,49 @@
|
||||
;nyquist plug-in
|
||||
;version 4
|
||||
;type process
|
||||
;name "Crossfade Tracks..."
|
||||
;action "Crossfading..."
|
||||
;preview disabled - cannot use preview because tracks are processed differently.
|
||||
|
||||
;; crossfadetracks.ny by Steve Daulton Nov 2014.
|
||||
;; Released under terms of the GNU General Public License version 2:
|
||||
;; http://www.gnu.org/licenses/old-licenses/gpl-2.0.html .
|
||||
|
||||
;control type "Fade type" choice "Constant Gain,Constant Power 1,Constant Power 2,Custom Curve" 0
|
||||
;control curve "Custom curve" real "" 0 0 1
|
||||
|
||||
(defun crossfade (type)
|
||||
(mult *track*
|
||||
(cond
|
||||
((= (get '*track* 'index) 1) ; fade out.
|
||||
(case type
|
||||
(0 (pwlv 1 1 0))
|
||||
(1 (osc (hz-to-step (/ (get-duration 4))) 1 *sine-table* 90))
|
||||
(2 (s-sqrt (pwlv 1 1 0)))
|
||||
(T (custom curve 0))))
|
||||
(T ; else fade in.
|
||||
(setf *control-srate* *sound-srate*)
|
||||
(case type
|
||||
(0 (pwlv 0 1 1))
|
||||
(1 (osc (hz-to-step (/ (get-duration 4))) 1))
|
||||
(2 (s-sqrt (pwlv 0 1 1)))
|
||||
(T (custom curve 1)))))))
|
||||
|
||||
(defun custom (curve inout)
|
||||
;; 'epsilon' defines the curvature of a logarithmc curve.
|
||||
;; To avoid log 0 or /0 it must be > 0 and < 1.
|
||||
(let* ((curve (+ 0.99 (* -0.98 (min 1 (max 0 curve)))))
|
||||
; magic number 2.7 gives approx 'constant power' curve at 50% setting.
|
||||
(epsilon (power curve 2.7)))
|
||||
(if (= inout 0)
|
||||
(setf logcurve (pwev epsilon 1 1))
|
||||
(setf logcurve (pwev 1 1 epsilon)))
|
||||
(sum 1
|
||||
(mult (/ -1 (- 1 epsilon))
|
||||
(diff logcurve epsilon)))))
|
||||
|
||||
(let ((tracks (get '*selection* 'tracks)))
|
||||
(case tracks
|
||||
(1 "Only 1 track selected.\n'Crossfade Tracks' requires 2 tracks.")
|
||||
(2 (crossfade type))
|
||||
(T "Too many tracks selected.\n'Crossfade Tracks' requires 2 tracks.")))
|
Loading…
x
Reference in New Issue
Block a user