SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

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行のコードなのに、素晴らしい仕事っぷりである。性質上、モノラルになってしまうので、音の広がりはなくなってしまうが、コモった音になった感じはしない。

  サンプルとして、筋肉少女帯の「蜘蛛の糸」の一部を上げてみる。元の音フィルタ後の音。「笑ってろ、見てろよ」は、原曲で左右にパンしているので残っているが、その前の「大丈夫、大丈夫」はキレイに消えている。

  ということはだ、だから、アレだ。「ハッピーアイスクリーム」を食わせれば、女子の合いの手の部分だけ、キレイに残るんじゃないだろうか……元の音フィルタ後の音。残ってるーッ!

  スイッチのカラオケでは、サブのボーカルまでカラなので、筋少の曲だと、ひとりで歌うとカッコのつかない曲が多くなるんだよな。しかし、このフィルタで消せば問題ない。それより、スイッチのカラオケだと、オケのイメージが原曲とかなり異なるものも多いが、それを回避できるのもイイ。筋少の曲は、ボーカルの音消えた時、やっとオケの凄さに気づくのさ。

  まてよ、ならば「221B戦記」もどうにかしたいところだ。普通にフィルタをかければ、神谷明も宮村優子も水木のアニキもいなくなってしまう。だが、こちとらには波形を見聴きしながら自在に編集できるcccdctと、さっき作ったばかりのボーカルキャンセルスクリプトがあるんだからッ!それをくっつけちゃえばいいのよーッ!

  というわけで、新たにcccdctにマーク箇所毎にボーカルキャンセルのオンオフを切り替えて出力する機能を実装してみた。

  画像の説明

  元の音フィルタ後の音。音の切り替わりに多少の違和感があるものの、ちゃんと掛け合いカラオケになっているんじゃないだろうか。パッケージを置いておく。

  まぁ、実際、そんなに「221B戦記」を歌いたいかと言ったら、まぁ、別に、そうでもないんだが……。