Imaginantia

思ったことを書きます

日記 0608

今日は無をしていました。

メイン進捗は無し、問題整理をちょっとだけ。一応音調整についてがちゃがちゃ弄ってはいましたが成果は…少しか。無をしていたわけではなかったわ。

 

「UnityでAudioClipを丁度のタイミングで再生する」話です。随分前におはぎさんとfotflaさんとかと色々みていたやつです。

まずフレーム単位だと安定しない、のはまぁわかる話です。で、タイミングを指定する方法として AudioSource.PlayDelayed があります。

これは現在からの経過秒数を指定するもので、たしかにその通りに鳴ります。しかし、実は経過秒数を計算する方が問題です。

リズムに合わせたい場合は当然経過時間をベースにしなければいけないわけですが、Time.time はシステム時間であって音声処理系の時間軸とはまた違うものです。

音声処理系はサンプル単位での時間管理をしているはずで、可能ならばそれほどまでに精度を要求したいところ。それをやるためのAPIとして AudioSettings.dspTimeUnityには用意されています。

これは音声処理系上での現在時間を与えるものなわけですが、なんとUdonにありませんCannyはこちら。

困っちゃうわけですが、そこで、無音のAudioSourceをずっとloopで再生し続け、そのAudioSourceの time を確認することで正確な現在時間を得ようとしたのです。とは言えループする度に0に戻ってしまうので、ループしているかどうかを検知してループ回数カウンタを管理するなどしています。

 

これでいいかと思ってた。これじゃ足りなかったんです。実際にこれはVRChatで鳴らしていて違和感があって、録音してズレてることを確認しました。0.02秒くらい。

色々調べてみるとAudioSourceの time は実は不安定で、ドキュメントには「圧縮されたサンプルデータ単位での時間」みたいなことが書いてあります。わざわざ注意書き付きで。まぁ timeSamples を見てもダメだったんですけど。

気になってこの値の様子を見てみると、フレーム単位更新じゃないことがわかりました。基本的にUdonのプログラムはそこそこの速度で動くので、処理中に再生位置が大きく変化することは無いと考えたいところです。でも同一関数の先頭と末尾で940ズレることがしばしば起きていました。940/44100 = 0.02 です。

仮説としては実時間で940サンプル単位の値を返しているのか、とか思ってましたけど。妙に頻度が高いのでよくわかりません。とりあえず PlayDelayed に渡す直前に現在の時間を見に行って補正を掛ける処理は書いてみましたけど。全然改善はありませんでした。

次フレームになっても現在のサンプル位置が変わらなかったりしているので、その辺を逆補正掛けてあげればマシになるかな、とか思ってますけど正直まだわかりません。

とは言え離散的にズレていることがわかったので多少どうにかなるかもしれないな、位の気持ちになっています。というのが今日の進捗でした。ほんまか?

 

まぁ調査もきっと進捗の一つです。少なくとも戻ったわけではないし。

で、こんなことをしつつプロジェクトの整理とかをして。で、やる気がなくなってきて。これからやる予定を書き下して。ゲームしたくなったけど容量足りなくて (これもインフラマターですわ)。付随してRTA見だして、たーびんちゃ配信聴きながらワールド巡りして、某所で腕を傷めて。

そんな日でした。


それでは終わりません。今日はこれからどうしようかな、たーびんちゃん配信も終わっちゃったしなと思っていた所で珍しいところにみなさんが居らっしゃるのを観測。たーびんちゃんちにもある程度人が残っていること、追憶の庭園という良い風景のワールドであること――即ち前から知っていて良いワールドであることが認知されている所であること、クで色々写真を撮っていらっしゃるマネさんがいらっしゃることなどを確認し、「きっといいアバターを持っている人がたーびんちゃんちに居て幾らかで写真撮影会をしに行った」ことくらいが想定できるところです。珍しい機会だし行こうと思ってjoinしました。

世界がありました。

おわりです。

 

まず根本的にfotflaさんのメイド服姿が前からめちゃくちゃ嵌っていて激良いんですが、それに加えてマネさんの白ワンピに対する別解釈が備わり、これらが掛け合わさって世界を成していました。

特に深く書くことはありません。ありがとうございました。

アーチ前で写真屋に撮ってもらったポートレートが存在してそうだから描いてみようと10分くらいやってみましたが人体が不可能でやめました。しんどいね。


そういえばその後わちゃわちゃと話していた間に面白い理解を得ました。fotflaさんの話です。

fotflaさんが結構刺さっているのは森に置いてある写真の数から無意識的に知っていたんですが (kanonさんと落雷さんとfotflaさんの写真が有意に多い)、落雷さんに対する感情と何が違うのかについての言語化ができずに居ました。

で、今回わかったのは、落雷さんはあくまで「推し」なので基本的に直接接触は薄く、純粋に「崇める」形態となっているのに対し、fotflaさんは割と近くて「拝む」領域にいるということです。前から妖精っぽいと思っていたけど多分それがこういうことで、立場とかは違えど同じ世界にいるんですね。どちらも存在に感謝できるという点では尊さは変わりません。

推しに対してはもう何も言うことなんてなくて、これからも元気で在ってほしいと願うばかりなわけですが、この…仮に「妖精」と言いますけど、妖精の方は神聖な領域に居るものの現世と接続していて、対話ができるんです。つまりおはなしができて、情報通信ができます。行動的には預言者に近いと思ったけど別に預けられてないし違うね。この「世界が繋がっている」のが大きな点だと思います。たぶん。

あとfotflaさんのヤバいところは結構こっちが無意識的に意識的に発している情報をわりと受け取っていられる点で、こう、として作用している。良いモノを映し出す鏡。あと一貫性、そこから来る安定感と信頼とか…。かしら。あとめちゃくちゃかわいい。

まぁなんにせよ言語的理解を得ることができてよかった。という話。

ちなみにkanonさんはまた違う「推し」で、純粋にかっこいいんだと思います。みなさんいつもありがとうございます。


ところでなんやかんやあって昔読んだとある漫画を拾い出してきたんですけど。こう。ひさびさにちょっと見たらめちゃくちゃ今の私の片鱗が沢山見えて笑っちゃいました。

抽象性、空間の繋がり、メタ、言葉と意味、云々…。この話をする機会はあるんでしょうかねー…。せずに済んだら私がもうちょっと純粋で居られたのかもしれないけど。

うーん。実は読み返したいなぁっていうのは昨年9月頃にdiscordのやることメモに追加していて、未だにやってないので、折角だし今日はそういう日にしちゃおうかな、とか思ってます。

メイン作業でやることが一応まとまっているので、微妙な現実逃避感に悩むこともありません (やることが決まってないことからは逃げないので)。

インプット、大事とはよく言いますけど。こうやって自分の中にあるモノの精度を上げるのもまぁ大事なような気はしますね。でもこればかりやってると時代についていけなくなるんだろうな。しんどいね。

おやすみなさい。