[Audacity-nyquist] New vocal remover plug in developed
A free multi-track audio editor and recorder
Brought to you by:
aosiniao
From: David H. <dav...@ie...> - 2005-02-25 00:54:31
|
Below is a new vocal remover that I developed as a Nyquist plug in for = Audacity. I have also submitted it for inclusion on the Nyquist plug in = web page. Enjoy and let me know of any comments or recommendations, it is my first = Nyquist plug in! Hopefully the comments in the code explain it all. ;nyquist plug-in ;version 1 ;type process ;name "Vocal Remover..." ;action "Removing vocal..." ;info "Vocal Remover by David Hostetler" ;control sw "Remove in voice band or full bandwidth" int "0=3Dvoice = 1=3Dfull" 0 0 1 ;control lower "Voice band lower limit..." int "Hz" 200 20 20000 ;control upper "Voice band upper limit..." int "Hz" 3000 20 20000 ; Vocal Remover by David Hostetler February 23, 2005 =20 ; This effect is intended to remove a vocal that appears equally on the = right=20 ; and left channel of a stereo recording. The results would be used as a = backing=20 ; track for a vocalist singing the song in place of the original = vocalist. The=20 ; best cancellation of the vocal will probably be if the sound file used = is=20 ; ripped directly from the original CD, without any conversion to analog = and=20 ; back or any compression (such as MP3, etc.), either of which may = disturb the=20 ; vocal level between the right and left channel. ; Many previous versions of this function in both the analog and digital = domain=20 ; have used a simpler full bandwidth subtraction. A switch is provided = to try it=20 ; both ways for comparison. (cond ((=3D sw 0) ; remove in just voice band (vector (sum (highpass8 (lowpass8 (sum (aref s 0) (mult -1 (aref s 1))) upper) = lower)=20 (sum (highpass8 (aref s 0) upper) (lowpass8 (aref s 0) lower))) (sum (highpass8 (lowpass8 (sum (aref s 1) (mult -1 (aref s 0))) upper) = lower)=20 (sum (highpass8 (aref s 1) upper) (lowpass8 (aref s 1) lower))))) ; The above section subtracts one channel from the other and THEN = filters to the=20 ; voice band specified by the controls. The subtraction is done BEFORE = any other=20 ; processing because I found that if you filter before, the amplitude is = ; disturbed just a little and the cancellation is not as complete. After = the=20 ; voice band is filtered, the frequencies below and above the voice band = are=20 ; added back. ((=3D sw 1) ; remove in full bandwidth (sum (aref s 0)(mult -1 (aref s 1))))) =20 ; This is just one channel subtracted from the other. |