vQuantizer製作記 その2、すんなりな実装と紆余曲折な仕様決め

ボカロデータをパラメータごとクオンタイズするJob Plugin、「vQuantizer」製作記録その2です。

前回のその1で、主にぼかりす向けに「クオンタイズするジョブプラグインを作ろう!」と決めたわけですが・・これがすぐに、難題にぶつかりました。フツーにクオンタイズすると、かんたんにボカロが再生できなくなる(笑)。


DAWなどに搭載されているクオンタイズ機能。実行すると、ノートは決められた長さの単位(グリッド)に吸い付くように移動しますが、他のノートがどう動こうと関係はありません。基本的に、一番近いグリッドへ移動するので、ピアノで和音を弾いたような場合は、当然同じグリッドに複数のノートが揃うことになります。
しかし、これをそのままボカロに適用すると、どうなるか。すぐ近くのノート同士は同じグリッドに揃ってしまい、ボカロの大前提「ノートを2つ以上重ねない」に引っかかり、再生できなくなってしまうわけです。

同じグリッドを目指して、ノートが重なってしまう事態をどう避けるか、いろいろ検討しましたが・・現状では、「同じグリッドに向かってしまうノートが一組でもあった場合は、プラグインを停止する」という、かなり思い切った仕様にしています。その代わり、停止したときには、どの場所で問題が起きているかという情報と、修正の仕方を少し詳しくフォローするメッセージを出すようにしました。


また、仕様の決定が難しかったもうひとつのトピックは、移動後の「ノートの長さ」と「ノート間の間隔」の関係でした。クオンタイズすると、隣同士のノートがそれぞれ持つ始点と始点の距離は変化してしまうのが普通です。もしこの距離が短くなった場合、もし皆さんなら、手前のノートの長さを短くしますか?それとも、ノート間の間隔をつめて、ノートの長さ自体には手を加えないようにしますか?

これは多分、正解がない問題です。でも、なんらかの答えを出さないといけない(そうしないと2つのノートがキチンと並ばない)。自分が出した答えは、「ノート間の間隔」を極力尊重し、「ノートの長さ」のほうを柔軟に伸び縮みさせることでした。なぜかというと単純で、ボカロは2つのノート間の間隔を変化させると、ある値を境に2つがくっついて発音されるか、独立して発音されるかが切り替わるので、これを極力防ぎたかったからです。結果的にノートの長さは伸び縮みしやすくなってしまいますが、2つのノートがくっつくか離れるかというドラスティックな変化に比べればまだいいだろう・・という判断ですね。


こんな感じで、上記の2点以外にも、制作上決めなければいけないルール(仕様)は意外に多くあり、「クオンタイズする」と一言で言いつつも、実際にはある意味でかなり「俺仕様(OIE仕様)」となっています。決めなければ完成しないので決めていったわけですが、一応その中でも、「(自分以外の)通常ボカロを利用するシーンではどんな動きが一番フィットするか」を念頭に置くようにしていたので、あまりに現場・ニーズとかけ離れた挙動はそれほどないと思っています。・・ないといいなぁ・・。もし挙動で気になる点がありましたらぜひご連絡いただき、今後の参考にさせていただければ!


実装面ですが、実は今回はそれほど苦労していません。時間の流れを変化させる仕組み自体は、2つ前に作った「Swing & Shuffle」(id:OIE:20120210)で実装したし、プラグイン適用前・適用後のノート位置に応じてパラメータを変化させる仕組みも、前の「Humanizer」(id:OIE:20120605)で作ってあったし。逆に言うと、今回はほんとに仕様決めに苦労したプラグインでした。


ぼかりすで実際にデータを作り、「vQuantizer」を使ってみましたが、意外にしっかり機能してくれて安心しました(笑)。さすがに「感度」を 100 で適用すると、発音が不自然になったりするので、およそ 35 あたりを目安にして何度か試してもらえると使いやすいかと思います。


ぼかりすで出力されたデータは、通常の調声(調教)ではありえないほどの密度と、パラメータ間の緊密な関連性を持っています。そのため、現状のVOCALOID3 Editorでは対応しにくい部分があるのは、ある意味当たり前なのかな、というのが個人的な感想です。ベストなのは、ノートにしろパラメータにしろ、区間選択したらその枠内で自由にビヨビヨ拡大縮小できるようなGUIの実装な気がしますが、通常の調声ではそこまであまり必要ないという点と、上記の通りいろいろ「俺仕様」を決めないといけない点で、ぼかりすデータをより自由に動かせるようなVOCALOID3 Editor側のバージョンアップは難しいのかもしれません。その点で言えば、UG Job Pluginは機能が限定的ながらもピンポイントで目的達成の道具を提供できるので、このあたりにもUG Job Pluginの存在位置というか、面白さが見出せそうだな、と思った次第でした。


というわけで、パラメータ変更系から始まり、目的達成型(?)のプラグインをここ何回かで出してきたわけですが、次のアイディアも一応準備しています。ちょっと方向性を変えたプラグイン、また機会を見つけてこちらでも情報を出していきますね。(いつできるか、そもそも完成するかはまだ不明ですが・・。)