Type: | Package |
Title: | Remove Vocals from a Song |
Version: | 3.0 |
Date: | 2025-06-02 |
Author: | John R. Dixon [aut, cre] |
Maintainer: | John R. Dixon <gbm2sas@gmail.com> |
Description: | Attempts to remove vocals from a stereo '.wav' recording of a song. |
License: | GPL-3 |
Depends: | tuneR, seewave |
NeedsCompilation: | no |
Packaged: | 2025-06-02 10:36:37 UTC; user |
Repository: | CRAN |
Date/Publication: | 2025-06-02 11:20:02 UTC |
Remove Vocals from a Song
Description
Attempt to remove vocals from a stereo '.wav' recording of a song.
Author(s)
John R. Dixon <gbm2sas@gmail.com>
Maintainer: John R. Dixon <gbm2sas@gmail.com>
References
Well known trick.
Remove vocals from a song
Description
Attempt to remove vocals from a stereo '.wav' recording of a song.
Usage
karaoke(infile = NULL, outfile = NULL, sampf = NULL)
Arguments
infile |
filename of a stereo '.wav' recording of a song |
outfile |
filename for the output '.wav' file |
sampf |
sometimes optional sampling frequency |
Author(s)
John R. Dixon <gbm2sas@gmail.com>
References
Well known trick.
Examples
#We use some '.wav' samples included in the seewave package to construct an example.
data(orni)
data(peewit)
data(tico)
#Extend all the samples to be at least 20 seconds long.
for(loop in 1:5) orni<-pastew(orni,orni,f=22050, output="Wave")
for(loop in 1:5) peewit<-pastew(peewit,peewit,f=22050, output="Wave")
for(loop in 1:5) tico<-pastew(tico,tico,f=22050, output="Wave")
#Cut all samples down to exactly 20 seconds long.
orni<-cutw(orni,f=22050,from=0,to=20, output="Wave")
tico<-cutw(tico,f=22050,from=0,to=20, output="Wave")
peewit<-cutw(peewit,f=22050,from=0,to=20, output="Wave")
#Construct and write the example song to a '.wav' file. The tweeting bird, "tico", will be the
#"vocalist", mixed to center. The "rhythm section" will be "orni" and "peewit", not mixed to
#center. (Usually in stereo song recordings, the vocals are most mixed to center, allowing the
#trick employed by the "karaoke" function to work.)
left<-normalize(tico+orni)
right<-normalize(tico+peewit)
wobj<-stereo(left,right)
slot(wobj,"pcm")<-FALSE
writeWave(wobj, filename="song.wav")
#Make the karaoke version: the vocal from "tico" is removed.
karaoke(infile="song.wav", outfile="song4karaoke.wav")
file.remove("song.wav")
file.remove("song4karaoke.wav")