-
Notifications
You must be signed in to change notification settings - Fork 4
/
centerpanremover.ny
90 lines (37 loc) · 1.41 KB
/
centerpanremover.ny
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
;nyquist plug-in
;version 1
;type process
;name "Center Pan Remover..."
;action "Removing center-panned audio..."
;info "Center Pan Remover by David R. Sky\nReleased under terms of the GNU Public license"
;control bc "Invert band or channel" int "0=band 1=channel" 1 0 1
;control above "Remove frequencies above..." int "hz" 500 20 20000
;control below "Remove frequencies below..." int "hz" 2000 20 20000
; Center pan Remover by David R. Sky November 12, 2004
; Released under terms of the GNU Public License
; http://www.opensource.org/licenses/gpl-license.php
; Select either band of frequencies to remove
; (define frequency range),
; or invert one channel
; result is still stereo but sounds mono
; (both channels have been panned to center)
(defun butterfly (sound width)
(vector
(sum (mult (aref sound 0) (sum width 1) 0.5)
(mult (aref sound 1) (sum width -1) -0.5))
(sum (mult (aref sound 1) (sum width 1) 0.5)
(mult (aref sound 0) (sum width -1) -0.5))))
(defun invertband (s above below)
(vector
(aref s 0)
(sum (mult -1 (highpass2 (lowpass2 (aref s 1) below) above)))
(highpass2 (lowpass2 (aref s 1) above) below)))
(defun invertchan (s)
(vector
(aref s 0)
(mult -1 (aref s 1))))
(cond
((= bc 0) ; invert band of frequencies
(butterfly (invertband s above below) 0))
((= bc 1) ; invert one channel
(butterfly (invertchan s) 0)))