2007/2/1

moko氏の研究が示唆したところをまとめてみる  VRM4サウンド三昧
いきなり初回から玉砕したVRMサウンド三昧でありますが、気を取り直しまして、改めてmoko氏の研究成果の意義をまとめ、テクニカルな実現性を考えてみます。

クリックすると元のサイズで表示します
<図1:moko氏の研究成果>

上の図は、moko氏が明らかにした、車両にSetWaveLow/High命令で設定された走行音(音声リソース)が、編成の走行電圧(最高速度と走行速度の比)によって、どのように変化するかのグラフです。横軸が走行電圧、縦軸が音声の再生速度になります。この図が言っていることを要約すると・・・

・Low/Highの音声の変化点は走行電圧0.4(最高速度の40%)である。
・組み込んだ音声リソースそのままの音が聞こえるのはLow/Highそれぞれ走行電圧が0.4/1.0のときである。
・音声リソースの再生速度と音程は、Low/Highそれぞれ走行電圧0.0/0.4のときに90%まで下がる。

になります。

さて。moko氏の(そして45-50s氏も同様だと思いますが)問題意識は、これでは表現したいサウンドが出せない、というところからスタートします。そして、氏は以下のような状態を、理想形の例として提案します。


クリックすると元のサイズで表示します
<図2:moko氏の示す理想解の一例>

これは、要するに「Low/Highの二段階では足りないから、増やしてくれ」ということです。厳密に言うと、氏の問題意識は、段階の数ではなく、段階が少ないことによって、実際の鉄道走行音に比して再生速度=音程の変化の度合いが小さい、という点にあります。図1と図2を比べると、斜線の傾きが図2の方が急になっていることがわかります。これが、氏の目指すところの本質である、と言えるでしょう。

結論から言うと、VRM4にこのような機能を持たせることは、ユーザーの手によっては実現できません。VRM4自身の仕様を変更する必要があります。そして、現時点で必ずしもVRM4のサウンド機能がユーザーに活用されていない(最近、作例が増えて来てはいますが)ことを考えれば、この方向の機能拡張は、あまり期待出来そうにありません。っつーか、有り体に言えば、そんな暇で車両形式を増やして欲しいし、何より5号収録の車両のエラーを直せ、コノヤロー!!

おっと、脱線しました。

さて、これをユーザーの工夫で何とかしようと考え、結果的に玉砕したのが前回書いたSetTopSpeed命令を使って走行音を切り替えるというアイデアです。意味がわからなかった人もいるかも知れないので、不毛ではありますが概説しておきます。

クリックすると元のサイズで表示します
<図3:出発直後>

便宜上、この編成が本来発揮したい走行速度(の電圧)を黒字で示しています。赤字のそれは、走行音の都合で一時的に設定する最高速度に対する電圧です。つまり、出発時にわざと最高速度を下げ、それによって赤い斜線で示された傾きの大きい=加速に伴う音程変化の度合いの大きい状態、を作ろう、というアイデアです。

クリックすると元のサイズで表示します
<図4:最高速度を段々上げていく>

図3の赤字電圧1.0、つまり出発時に仮に設定した最高速度に達したら、SetTopSpeed命令で最高速度を切り替えます。同時に走行電圧を下げ、High走行音をBからCへ切り替えます。この命令が理想的に動作すれば、見た目の走行速度はそのままに、音声の再生特性は図4のような状態になるはずです。

クリックすると元のサイズで表示します
<図5:以下同様に・・・>

さらに、図4の最高速に達したら、同じことしてHigh走行音をCからDへ切り替えます。厳密には正しくない比喩ですが、マニュアル車のギアチェンジみたいな感じですね。速度が上がるに従って、音声の再生特性、すなわち斜線の傾きが、何もしない状態よりもむしろゆるやかになってしまうワケですが、列車走行音の変化は走り出しが激しく、一定速度を超えればさほど大きくは変化しませんから(45-50s氏がそのへんについてこちらでまとめてくれています)まぁ、アリなんじゃないかと。最悪駄目なようなら、高速息は本来の最高速度をそのまま設定して、図1の特性に戻せばいいワケで。

が、実際には思惑通りいきませんで、ここのコメント欄でかく言うボク自身が言及しちゃってますが(完全に失念してました)SetTopSpeed命令はこのように動作してくれないようです。っつーか、いつまでコレを放置してやがんだ、このバグヤロー!!

おっと、また脱線です。

で、cmp系命令のような、見た目の動作に影響しない命令のバグすら即行で直さない人がコレに対処してくれるとは到底思えないので、他の解を探しましょう。ボクは徹頭徹尾、他人には何も期待しない性格なので。

クリックすると元のサイズで表示します
<図6:では、こうしてはどうか?>

moko氏の問題意識の本質=音声の変化の度合いが小さい、の解決にはならないのですが、上図に示したように、走行電圧に応じて、Low/High走行音を動的に切り替え、そのバリエーションを増やせば、表現力は確実に向上するはずです。便宜上、変化を本来の倍の四段にしていますが、別に六段でも八段でも、スクリプトでなんとでも出来ます。

とりあえず、これを実現するテストコードを埋め込むためのスクロールを週末に書くつもりです。っつーか、出来たけどまだ動作未検証。ちなみに上掲図では走行音の変化が四段ですが、このスクロールはLow/High各三段の計六段です。あと、速度変化を自動検知して、惰行/力行/制動に異なる音を割り当てれるようにしてあります。なお、このスクロールは、一般的なVRMユーザーには使うに耐えるものではないと思います。その筋のマニアな人に試してもらって、今後の糧にするための、β版以前のα版です。

要するに、このアイデアの成否は、スクリプトよりも、むしろ、スクリプトがコレを実現した際に使う音声リソースにかかっています。特に、例えば図6の走行音Aは、再生速度95%の時点でBに取って変わられますから、本来のAの音は決して再生されないことになります。これは、それを計算に入れて音声リソースを作らねばならない、ことを意味しています。そして、仮にそれもうまく作れたとして、それっぽく聴こえるのかどうか、つまり、この戦略が正しいのかどうかを評価するためのスクロール、ってことです。これでとりあえず試しにやってみて、そこからフィードバックして、本格的なヤツへとブラッシュアップしましょう、みたいな。

まぁ、こんな具合に課題は山積しておるワケですが、三人寄れば文殊の知恵とか言いますが、既に三人いますし、以外に音鉄な人はVRM界隈においでですから、四人、五人になっていけば、なんとかなるんじゃないでしょうか。と、無責任なことを言いつつ今宵はこのへんで。
0

コメントを書く

この記事にはコメントを投稿できません




teacup.ブログ “AutoPage”
AutoPage最新お知らせ