「作ってみた」Job Pluginの3つ、ご紹介!

10月21日にVocaloid Editor3(V3)が発売されました。エンジンの改良による自然な発音など、「2」からの変更点は多岐に渡りますが、その中にひとつ、「Job Pluginの導入」というものがあります。

このJob Plugin、名前のとおりプラグインの一種で、手持ちのV3に登録することで使えるようになりますが、同じくプラグインVSTがオーディオ信号にかかるのに対し、こちらのJob PluginはVOCALOIDの生データ(いわゆるVSQXデータ)にかかるものです。イメージとしては、V3がもともと持っている編集機能にツールをあとで自由に追加してあげられる感じですね。

ちょっと前置きが長くなってしまいましたが、そんなJob Plugin、実は結構カンタンに自作できて(UG Job Plugin)、他の人にも公開できる場が設けられるということで、今回3つほど自分でも作ってみました。Job Pluginのイメージもしやすくなると思いますので、ここで紹介させてもらいますね。
先立って紹介動画も公開していますので、よろしければこちらもご覧ください。(実際に動かしながら解説しているので、もしかしたらこっちのほうが分かりやすいかも・・)

http://www.nicovideo.jp/watch/sm16260666ニコニコ動画
https://www.youtube.com/watch?v=JuDQcf93sCgYouTube


むしろ、このブログ版の解説では、動画で紹介し切れなかったオプションの詳細や仕様的な話にも切り込んでみます。公開自体はボーカロイドストア経由で、12/16の募集開始以降となり正確な公開日は分かりませんが、詳細が分かり次第こちらでもお知らせしますね。
【2011/12/28 追記】Vocaloid Job Plugin Store様より連絡があり、3つとも承認手続きを完了いただきました!公開まであと1,2週間とのことなので、2012年1月上旬ごろに公開していただけそうです。
【2011/12/30 追記】こう書いた当日の12/28に、公開と相成りました(笑)。UG Job Pluginページへの直接リンクはこちら。他の方が作られたものも公開されていますので、一度覗いてみてくださいね!(年末休業中だったはずのVocaloid Storeの皆様、本当におつかれさまでした。)

1. パラメータ変換ツール「Strength Converter」


これ、名前付けるの相当悩んだんですよねぇ・・まぁそれはさておき(笑)。どんなものかというと、例えばエディタでDYN(ダイナミクス)に書いた波をOPE(オープニング)やPIT(ピッチベンド)など、他のパラメータにもコピーする、というツールです。V3単体ではパラメータをまたがったコピペはできないので、この点だけでも一応新機能なのですが、他にも実はいろいろ機能があります。
まず「適用率」の設定。100%にすれば、適用先のパラメータは完全にコピー元のパラメータに置き換わりますが、この適用度合いをパーセントでコントロールできます。例えば50%にすれば、参照元のパラメータと適用先のパラメータが半々の割合で合成されるし、パーセントをもっと下げれば隠し味程度に適用することも可能です。
さらに適用のしかたについても、通常の「Blend」(合成)のほか、参照もとのパラメータを足してしまう「+」、逆に引く「-」を選べます。これにも適用率が効くので、他のパラメータからなにか持ってきたい作業はだいたいこなせるかな、と。
そして、「揺らぎの最小値・最大値間の幅を自動拡大」。有効にすると、参照もとのパラメータの揺れが小さかった場合、自動的に最大まで揺れ幅を拡大して適用先へ適用します。ダイナミクスやピッチベンドなどは、一番下から上まで波が揺れ動くことは少ないと思うので、他のパラメータへ大げさにかけてあげたいときに利用してみてください。また、このツールは参照元と適用先に同じパラメータを設定できるので、本オプションを有効にして同じパラメータにかければ、そのパラメータだけ揺れ幅を最大にする処理が可能です。


このツール、一見イロモノっぽいですが(笑)、手前味噌ながら結構自分でも重宝しています。例えば、各ノートの強さを発音で表すために、「アクセント」の値をひとつひとつ設定します。その後、この「アクセント」を「ベロシティ」に一括変換してあげると、子音の長さが強さと結びつくため、これだけでもかなりリアルな発音になり、調教がだいぶラクになりますよ。


あと、この節は若干煩雑になるので読み飛ばしていただいて構わないのですが、「ノートイベントとコントロールパラメータをまたがってもコピーできる」のは、地味にこのツールの特徴的な点だったりします。
一口でパラメータといっても、実はV3には大きく2種類あって、各ノートごとにひとつずつ設定されている「ノートイベント」(アクセントやベロシティなど)と、ノートに関係なく常に値が変更できる「コントロールパラメータ」(ダイナミクスやピッチベンドなど)の2種類が存在します。もともと性質が違うこの両者間で値をやり取りすることが出来るよう、このプラグインでは変換用に独自にルールを決めました。「ノートイベント」から「コントロールパラメータ」に変換する場合は、そのノートの発音開始から次のノートの発音開始まで、ノートイベントの値を継続させます。つまり適用後は、ノートの発音タイミングにあわせて階段状になります。逆に「コントロールパラメータ」から「ノートイベント」へ変換するときは、適用先のノートの発音期間に対応したコントロールパラメータを平均したものを適用します。ここらへん、実用上気にしなきゃならない場面はないと思いますが(笑)、一応仕様としてこうなってますよ、てことで。


ところでこのタイトル、なんで「Strength」かというと、パラメータ固有の値を概念的に「強さ」として捉えて、これを他のパラメータに適用する・・という考え方から来ています。コード(プログラム)の内部的にも、参照元のデータを共通の「強さ(Strength)」の値に変換してから処理をして、最後に適用先のパラメータとして変換・入力してたりします。

2. パラメータ加減・変形ツール「Parameter Shifter」


基本的には、ある期間のパラメータを「よっこらしょ」とそのまま上げたり下げたりするツール。「Strength Converter」よりずっとシンプルです(笑)。
特にダイナミクスとかは、途中まで作った段階で「あれ・・今までの部分、全体的に下げたほうが良かったな」など思い直すことがあると思いますが、今まではもう一度手書きでラインを書き直すしかありませんでした。このツールは、その手間を一発で正確に肩代わりしてくれるものです。
また、対象期間の始まり(左辺)と終わり(右辺)でシフト量を別々に指定でき、傾斜をつけて上げ下げできるので、特に前後で数値のズレがある場合には自然に橋渡しを行うことが出来ます。ダイナミクスに適用すれば、もとの抑揚の感触を残したままクレッシェンド・デクレッシェンドを加えてあげることもできますね。

なお、これはかなりオマケ的な機能ですが、「最小値・最大値超過時のアクション」というオプションがあります。これは、上げ下げした結果パラメータの範囲を超えてしまった場合(ダイナミクスの128以上とか)、どういう挙動を取るかを指定する機能です。通常、上側に超えた場合は最大値で、下側に超えた場合は最小値で埋める「張り付き」になっていますが、越えた逆側からラインが出てくる「上下ロール」と、ラインで跳ね返るように遷移する「反射」も選べます。・・はっきり言って、「すでに入力した揺らぎを調整する」という基本的な目的には活かしにくいですが(笑)、動画のとおり、これを使うとカンタンにノコギリ波と三角波を描くことが出来ます。飛び道具やエフェクト的に使う用途もあるかもしれないので、その際はぜひ活用してみてください。

ちなみに、こちらのプラグインもノートイベント・コントロールパラメータ両対応です。

3. パラメータ丸めツール「Parameter Smoother」


これはさらにシンプル。ギザギザしたパラメータのラインを丸めることが出来ます。
V2からV3になっても、基本的にはパラメータのラインは鉛筆と直線で書く方法しかなく、どうしてもイビツなラインになってしまいます。見た目は置いておいたとしても、頭の中に描くラインはもっとなめらかで、理想どおりの歌わせ方ができないなぁ・・と悩んでいる方も多いかと。このツールを使うことで、ある程度ラフに書いたラインを自動でなめらかにし、効率的に思い通りのラインを描く手助けが出来ればと思います。
なめらかにする強度は「ボカし量」で調整。これは、ある瞬間(1Tick)のパラメータが、前後何Tickから影響を受けるか、を指定します。大きければ大きいほど周りの広い範囲から影響を受けるので、全体的になだらかになります。ただし計算上、このボカし量が大きいとそのぶん処理量も増えてしまいます。それなりにプラグインのチューニングは行ったので実用範囲では問題ないと思いますが、7680(4小節)など極端に大きな数値だと少し時間がかかりますので、終了までしばらくお待ちくださいね。
デフォルトで有効になっている「両端の数値を適用後も維持」は、丸めたあとも対象範囲の両端は数値が変わらないように調整する機能です。丸め処理を適用すると、基本的にどうしても前後の影響を受けて数値が変わってしまうため、ラインの一部だけ丸めると、両端が元と合わなくなってしまいます。このオプションではズレが起きないよう、端に行くほど丸め処理を抑えることでズレが生じないように調整しています。



左から順に、適用前、オプション有効、オプション無効。無効(右画像)だと、特に山の左のほうで大きく段差ができていますが、有効(中央画像)だと滑らかなままつながります。



丸まり方の一例。これも「両端の数値を適用後も維持」オプションが有効のため、丸まった範囲(ラインが曲線になった範囲)の前後となめらかにつながっています。ちなみにもとののこぎり波はParameter Shifterで作成。


仕様的な蛇足話ですが、丸めるために前後のTickからパラメータ値をとって来る際、ガウス関数を利用した重み付けをかけています。近いTickからはより強く影響を受けやすくなるため、結果的には、単純に範囲内を平均する方法よりももとの波形を反映されやすくなっているはずです。ただ、今回初めてガウス関数を学んだので、自信を持って「正しく実装した」とは言い切れないのですが・・。

おまけ:オプション「効果を選択範囲に限定(外すとパート全体に適用)」について

今回の3つのプラグインには、共通して「効果を選択範囲に限定(外すとパート全体に適用)」オプションを設けています。


ちょっとマニアックな話になりますが、V3では、「何も選択していない」は「全てが選択範囲」とイコール・・ではないんです。ビミョウに違う(笑)。メニューから「Job Pluginを実行」を選んだときに出てくる一覧ダイアログを注意深く見てみてください。上部に選択範囲の開始地点と終了地点が表示されており、これが厳密な意味での「選択範囲」になります。んで、一部を選択した状態でこのダイアログを開けば、その範囲がそのまま反映されるのですが、試しになにも選択しないで「Job Pluginを実行」を選んでみると・・?恐らく、いま編集しているパートの終了地点ではないポイントがダイアログ上に表示されているはずです。
というのも、なにも選択していない状態だと、選択範囲の終了地点は、パートの終了地点ではなく「そのパートにある最後のノートの発音終了地点」が指定されるためです。このため、最後の音が消えてからパート終了までの範囲は選択範囲外となり、基本的に処理の対象外になります。まぁ、ノートが発音されない場所なので、最終的に出てくる歌声には影響がないのですが、データの中身としては、この(意識外の)取り残された区域でパラメータの段差が残ってしまう可能性があります。


今回のオプション「効果を選択範囲に限定(外すとパート全体に適用)」は、有効(デフォルト)だとこの選択範囲どおりに処理しますが、チェックをはずして無効にすると、選択範囲に関係なく、パート全体に対して処理を行います。明示的にパート全体を処理したい場合は、これをうまく活用してもらえればと思います。

まとめ!

以上3点、いかがだったでしょうか。導入自体は、HDDに配置→V3で登録→V3で実行、とかなりカンタンなので、ぜひ一度試してもらえればと思います。すぐ使う機会がなくても、特に悪さをするものではないので(笑)、使うときまで放置しておくかんじでも全然OKです。皆さんのボカロ調教に少しでも役立つのを祈りつつ。
【2011/12/30 追記】今回のUG Job Pluginの作成時に感じた感想などをこちらにまとめました。UG Job Pluginの開発に興味をもたれた方に参考になれば、と思います。