SVX日記
2018-09-06(Thu) 古典的ボーカルキャンセラで掛け合いカラオケ
先に、カラオケ音源の入手方法に際して「古典的なボーカルキャンセラ装置を通す方法があるが、それを通したら極端に音質が落ちた記憶がある」などと書いたが、それは往年の「メガCDカラオケ」に搭載されていた機能に基づいた記憶だったりする。
件の装置は、結構なレアモノな気がするが、当時、何故か持っていた。結局、お試し程度にしか使わなかったのだが、どういう経緯で買ったのかもよく覚えていない。ただし、定価で買うほど、熱心な気持ちではなかったことに間違いはない。
でもって「メガCDカラオケ」には、歌入りCDをセットして、ボーカルキャンセルボタンを押すと、ボーカルが消えるという機能があったのだ。しかし、それを使うと、確かにボーカルパートは小さくなるものの、全体としてかなりコモった音になった記憶がある。おそらく、センタパートのキャンセルとイコライザによる特定音域の音量抑制の複合効果と推測する。
んが、時は過ぎ、今やアナログ処理でなく、wavファイルをラクラクとデジタル処理することが可能な時代、自分でボーカルキャンセルフィルタを書いてしまうことは容易ではないのか? ちょうどいいことに、自分はcccdctを作る過程でlibwav.rbという自製のwavファイル操作ライブラリを書いていることだし、それを使えば数行で書けてしまうのではないのか?
require 'libwav'
ARGV.size < 1 and (warn('Usage: vocal_cancel target.wav > karaoke.wav'); exit)
wav = WavFile.new(ARGV[0])
wav.save_phrase_filter {|gain|
gain[1] = gain[2] = gain[1] - gain[2]
gain
}
わっ、ホントに数行で書けてしまった。肝心のフィルタ処理なんてたった1行だ。まぁ、実際にはlibwav.rbの側にsave_phrase_filterメソッドやencode_gainメソッドを追加しているし、オーバフローの処理も必要なのでガチで1行というわけではないが。本質的にはコレだけだ。
$ ./vocal_cancel kumono_ito.wav > kumono_ito_vc.wav
……おおおぉおぉッ! 消えたッ! 思った以上にシッカリと消えたぞッ!こんなフザけたような1行のコードなのに、素晴らしい仕事っぷりである。性質上、モノラルになってしまうので、音の広がりはなくなってしまうが、コモった音になった感じはしない。
サンプルとして、筋肉少女帯の「蜘蛛の糸」の一部を上げてみる。元の音、フィルタ後の音。「笑ってろ、見てろよ」は、原曲で左右にパンしているので残っているが、その前の「大丈夫、大丈夫」はキレイに消えている。
スイッチのカラオケでは、サブのボーカルまでカラなので、筋少の曲だと、ひとりで歌うとカッコのつかない曲が多くなるんだよな。しかし、このフィルタで消せば問題ない。それより、スイッチのカラオケだと、オケのイメージが原曲とかなり異なるものも多いが、それを回避できるのもイイ。筋少の曲は、ボーカルの音消えた時、やっとオケの凄さに気づくのさ。