VR,VRChat

 

VRChat に 「Koume Candy Land」というワールドがあります。

こうめちゃんがワールド内にいて、走り回っています。

こうめちゃんは、お肉を手に持つと、あとをついてきます。

ゆれものが使われているので、おみみがぷるんぷるんしてます。

この動画はこちらから参照できます。

こうめちゃんはちっちゃいので、おみみをもっふもふするには、小さめのアバターだともふりやすいです。

一番良かったのは、東北きりたんのアバターです。
BOOTHで公式アバターを購入したものを使用しました。

ハイレゾ

kirara

アナログのテープに録音されている音はどうなの?

昔の記憶媒体はデジタルではなくてアナログのテープでした。マスターテープという言葉もあるとおり、デジタルにするときに古い歌とか楽曲をテープからデジタルにすることはあると思います。

テープには手軽に取り扱いができた今では無くなってしまったカセットテープや、マスターテープとかにもなりそうなオープンリールのテープがあります。

オープンリールのテープはおもて面を左にセットして、右に空リールをセットして、テープを右のリールにひっかけて再生するとA面に収録されている音を聞くことができます。テープが全部右に移ってしまうと、右のリールを左にセットしなおして、右に空になったリールをセットして再生するとB面が再生できます。

TEAC A-3340

レコードというのもあるね。カセットテープはもうすたれてしまったけど興味はある

kirara

レコードは持ってないけど、レコードのぱちぱちというアナログ的なノイズが入るようなイメージがあるわね

ちょうど昔、ebayで購入したテープがあります。ビートルズのABBEY ROADです。

有名なやつね。道路の横断歩道を渡ってる。今でもこの道は観光名所になってるね。

おうちにTASCAMの録音機器とオープンリールのデッキのTEACのA3340があるので録音してPCに取り込んでみました。

取り込んだものは著作権があるので公開できないですが周波数的に見た波形を以下に表示します。

サンプリングレート96kHzでとりこんでいます。13kHzまで下がり、20kHz以降の箇所からちょっと下がり、あとは48kHzまで続いています。これはもともとなのか再生してるデッキ(ずっと前に40kHzまでフラットに録音・再生できることは確認しています)ではなく、録音のTASCAMかソフト(SOUND FORGE pro)なのかは調査していません。

これをみるとCDの44.1kHzで収録しても十分と思うかもしれません。

曲をすすめていくと以下のようになりました。

CDだと20kHzぐらいのところですとんと落ちて、22.5kHz以上の音は無くなります。
これはオープンリールのテープから取り込んだので48kHzの上限まで音が入っています。
実際聞いてみると低音がすごいです。ずんずん響きます。CDは20Hzから22.5kHzですが、アナログのテープなので制限はありません。また、テープなのでノイズがひどいのかと思いましたがきれいです。20kHzを超える高域も可聴域で聞こえる音に合わせて音が入ってるのか上下しています。ぜんぜん現代でも通用する音質です。テープの発売開始日は1969年なので相当古いですが古い感じはしません。このまま配信しても問題はなさそうな音質です。ただしモノラルのためステレオではないです。

デジタルで取り込んだだけでハイレゾになってる感じです。

kirara

そうなんだ。アナログのテープだから現代の機器にあるような低域が20Hzから周波数の上限が20kHzとかいう制限はないわね

たしかに聴いてみると音は良いね。市販されているハイレゾのアビーロードとかあるのかな?
比較してみたい。家で録音したもののほうが良かったりして。

qobuz でビートルズのアビーロードのハイレゾ版を購入してみました。

1曲目の30秒付近(自宅でオープンリールのテープから録音しただけ)

1曲目の30秒付近(qobuzでハイレゾ版を購入したもの)

kirara

波形の動きをみると同じような動き方をしてる。購入版は録音機器が違うのかな。40kHzより上はイコライザで落としてるのかな。

サムシング(自宅でオープンリールのテープから録音しただけ)

サムシング(qobuzでハイレゾ版を購入したもの)

聴き比べると違いがありました。
自宅でデジタル化したものは低音がよく効いている。可聴域は古さを感じる。ノイズもじゃっかんありそう(昔っぽい)。
購入したものはノイズリダクションが聞いている。聞きやすい。低域は自宅でデジタル化したものより弱め。
波形では25kHzを境にイコライザで弱めてあるみたい。

どっちがいいといえば購入版かな。古さと低音が効いてるのを感じるのは自宅でオープンリールから録音したほうかな

kirara

聴き比べると違いはあるわね

Uncategorized

ハイレゾですが、Bit数が24の場合もハイレゾになります。
購入したハイレゾのファイル(サンプリングレート96kHz)を見てみます。
同じ曲のCDも持っているので比較してみます。

まずはCDのデータ(サンプリングレート44.1kHz。16Bit)。

kirara
kirara

曲の終わりのほうだけど、そこそこ上下してるけど…
デジタル化の前だとがたがたなのかしら?

以下のファイルは購入したハイレゾのファイルです(CDと同じ曲のサンプリングレートが96kHzのFlacファイル)。

サンプリングレートが違いますが、縦のスケールを見ると下のほうが細かいです。細かい音の変化が収録できています。16ビットを超えるデータが収録されてますね。

再びCDの音楽です。曲の終わりごろ。

人間だと小さい音は聞こえません。下は購入したハイレゾのファイルです。サンプリングレートが96kHzなので横のスケールが違います。いちばん右が48kHzです。形は似てますね。CDからリッピングしたほうのと、ハイレゾのほう。どっちがいいかというのはわかりませんでした。このファイルに関してはです。

もういっこ。自分でCDのファイルからハイレゾを作ってみます。それぞれの結果は以下です。

CDのファイルの最後のほう(かなり拡大)

自分でハイレゾにしたもの(upconvfe 1.13)
微小音を削る処理が入ってるので音量は小さい。

購入してきたハイレゾのファイル

Audacity というフリーソフトでCDのファイルをサンプリングレート96kHz、24Bitで書き出したファイル。

購入したハイレゾファイルは24Bitを使ってます。ハイレゾです。
購入する場合以下のファイルがあるとすると2が良いのではと思います。
1.サンプリングレート96kHz、16Bitのファイル
2.サンプリングレート48kHz、24Bitのファイル
ビット数の違いのほうが分かりやすいのではと思っています。

Uncategorized

高音質の音楽ストリーミング・ダウンロードサービスとして「qobuz」があります。前まで「e-onkyo」という名前でサービスしてましたが、ストリーミングにも対応するサービスとして生まれ変わりました。
ところで、高音質音楽とあるのでハイレゾも扱っています。本当にハイレゾなのでしょうか。調べてみました。

kirara
kirara

ハイレゾって何かな?

音楽のデータとしてアナログのデータとデジタルのデータがありますが、ここではデジタルのデータを扱います。
ハイレゾはCDのサンプリングレートが44.1kHz。ビット数が16Bitより良いものになります。
例えば、サンプリングレート44.1kHz。ビット数が24Bitだとハイレゾです。
また、サンプリングレート48kHz。ビット数が16Bitでもハイレゾです。
サンプリングレート96kHz。ビット数が24Bitでもハイレゾです。
また1BitオーディオのDSD64、DSD128、DSD256などもあります。

実際に購入してみました。データのフォーマットはFlacが多いですが、サンプリングレートは96kHzのものを購入しました。
以下に周波数ごとの波形表示にしたものを見てみます。

画像の真ん中よりちょっと左側の点線が20kHzのラインです。右端が48kHzのラインです。購入したのは「River」川の音です。
CDのフォーマットはサンプリングレートが44.1kHz。ビット数が16Bitです。これは音のレベル(段階)を-32768~32767の65536段階で表し、1秒間に44100回データをとる形になります。この場合、記録可能な周波数の上限は22.05kHzになります。それ以上の周波数の音は記録できないので、22.05kHzを超える周波数のデータは上をカットします。購入したファイルはサンプリングレートが96kHzなので48kHzの音まで収録できます。

Lua
Luaちゃん

人間だったら大部分の子は20kHzぐらいの音は聞こえないんじゃないの? それに音のレベルが65536段階もあるんだから十分じゃないのかな?

購入したのは川の音なので20kHzを超える音も入っています。人間の耳に聞こえる可聴域とそれより上の可聴域外の高い周波数にも自然の音は入っています。可聴域と同調する可聴域外の高い音が鳴っていると、高い音が聞こえていなくても人の脳で処理はされているようです。
(ハイパーソニックエフェクト・心身におこるポジティブな効果)

kirara
kirara

確かに。自然の川の音とか聞いているとリラックスするし、自然の音ならCDのフォーマットだと足りないのかな。

自然の音ではなくて楽器だとどうなんでしょう。バイオリンなどもある程度高いところまで倍音があります。

購入したアニメのサウンドトラックの曲です。曲名は記載しません。
フォーマットはFlac。サンプリングレートは96kHzです。

画面の真ん中が22.05kHzです。
音楽の再生中に波形を見ていると真ん中から右はあやしいです。
以下のもあります。
真ん中の22.05kHzの左側の音が鳴ると、真ん中から同じ距離ぐらい離れた右にも同じ波形が見えます。

バイオリンの音も真ん中より左側のはちゃんと入ってそうですが右側にはなさそうです。バイオリンなら22.05kHzを超えたところも倍音は入りそうです。

別の曲のオルゴールのものを購入しました。
フォーマットはFlac。サンプリングレートは192kHzです。

真ん中が48kHzです。右端が96kHzです。
再生中に見ていくと、波形が40kHzぐらいのところまで曲にともない変化があります。右がもりっとなっているのは収録時に1Bit系オーディオのDSDフォーマットで録音しているからと思います。

Lua
Luaちゃん

ネコの可聴周波数は50kHzとも100kHzともいわれてる。なので人間よりネコのほうがいっぱい音が聞こえてるのかもしれないね。でも人だと高い周波数まで収録されていても意味がないんじゃないかとも思えるけど…

サンプリングレートの違いを見てみます。10kHzのピー音です。
サンプリングレートが44.1kHzの場合です。

15kHzのピー音です。これもサンプリングレートが44.1kHzの場合です。
ひとつの山に2個のデータしかないです。サンプリングの定理では、サンプリングレートの半分の22.05kHzまで収録が可能と言われてます。

18kHzのピー音です。これもサンプリングレートが44.1kHzの場合です。
収録可能な周波数の上限に近づくと余裕がなさそうな感じに見えます。
デジタルデータなのでサンプリング定理に基づくと収録可能な音です。22.05kHzを超えるデータが残ってると、22.05kHzを超えるデータなのか、22.05kHz以下のデータなのかが判別不可になるので音がにごったりします。きちんと周波数の上限をカットしていれば大丈夫です。
収録が可能な周波数の上限付近の音はどうなんでしょうね。ちゃんと入ってるんでしょうか。マイクや録音機器の精度によりちゃんとデジタル化されてない場合はサンプリングの定義はどうなるんでしょう。

サンプリングレートを192kHzにしたらどうでしょうか。
18kHzの音でも余裕がありそうに見えます。

Lua
Luaちゃん

私が音楽を聴くんだったらサンプリングレートが高いほうがいいかな。

kirara
kirara

1BitオーディオのDSDというのもあるじゃない。あれならどうなの?

DSDにもいろいろ種類があり、DSDのサンプリング周波数によりいろいろあります。44.1kHzの64倍のDSD64。128倍のDSD128。256倍のDSD256があります。64より128。128より256のほうが高音質です。DSD64ではデジタル化の処理方法により20kHzより上は雑音が多くなる(右がもりっとなる)とかがあり、DSD64よりDSD128やDSD256のフォーマットの音楽のファイルを購入するのが良いかなと思っています。

kirara
kirara

ハイレゾの96kHzのサンプリングレートのを購入してもどうせ高い音は聞こえないんだから意味ないじゃないと思ってたけど、余裕をもって高い周波数の音も収録できるのね。

ダウンロードしたファイルのフォーマットで、サンプリングレートが96kHzだからといって、中身がちゃんとしているかは購入してみないとわからないのではと思っています。もともとの曲の収録時に48kHzのサンプリングレートで録音していたら、再演奏して96kHzのサンプリングレートで録音していれば本物のハイレゾになると思います。過去のを流用してハイレゾとして売ってる(曲はそのまま流して、録音機器を96kHzのサンプリングレートで録音。あるいはデジタルデータ的に処理してハイレゾにしている場合もあると思います)。

どっちがいいか。ハイレゾの曲を購入しなくてもよいのではという場面も出てきそうです。かといって本当にハイレゾで収録されたものもあります。

VR,VRChat

アバターの身長サイズの調整と等身の変更

Unity 上で簡易的にやってみます。
ねこみみは後付けでつけてます。

簡易的に変更してるので、フルトラで横向きになったりすると、変に伸びてしまいます。

アバターのヒエラルキーでPlatinumを指定して、Scaleを0.9、0.78、0.9となってることを確認します。
以前はここをいじってましたが、メニューからアバターのスケールを変更できるようになったあたりからここで変更してもだめになりました。

もう一つ下の ArmatureのScaleを0.92、0.92、0.85にしました。

階層のHip
1.05、1、1.05

階層のChest
1.02、1、1.02

階層のHead
1.17、1.52、1.17

階層のUpper Leg.L / Upper Leg.R
1.2、1、1.2

わすれずに目の位置もちょうどいい位置に変更しておきます。

 

Uncategorized,巨大娘

巨大娘を題材にしたyoutubeの動画があります。

巨大だったり小さかったりするワールド集

チャンネル Jadasa さんの動画です。

東京っぽい街なのですが少し小さい町です。

Size Shibuya By Terranek
https://vrchat.com/home/world/wrld_2a1f8a35-fd52-4998-8a3f-ed4c4169fcf8

Size Room With City V1․3 By Hoshiyume
https://vrchat.com/home/world/wrld_fe8eaf5f-2778-4b6b-bc8e-2dfa7bd94519

Yoll_God_GG_Sanctuary By Kami_God_GG
https://vrchat.com/home/world/wrld_da6d2f7c-8cf7-48f0-aa86-76e4800f1382

The Miniature City By Craft_Freeman
https://vrchat.com/home/world/wrld_6f78a563-5223-4cfa-807f-8f1393ace478

Just Mouth By YM[ワイエム]
https://vrchat.com/home/world/wrld_d2d6f879-a776-42e1-82e9-e7e02ee77f24

VR,VRChat,巨大娘

VRのプラットフォームのVRChat上に、巨大娘や縮小化を体験できるワールドがあります。
いくつかここにメモとして記載します。

Lady snow‚ Ready grow

ワールドに入ると、ちっちゃい子がいます。見上げてる先にはお皿に入ってるクッキーがあります。
ユーザがクッキーをクリック(食べると)すると、目の前のちっちゃい子が大きくなります。

クッキーはいろいろなところに隠されてます。
何回かクッキーを食べると、お家の中に入りきらなくなります。
まだまだクッキーはあるので、さらにでっかくなりますよ。

Uncategorized

やりたいこと

vrchat 用のワールドで、建物のドアのオープン・クローズの状態が他人の同じワールドにいる人からも同じ状態になっていてほしいことがあります。
cyan_trigger というのを入れることで、プログラミングやノードの操作(UDON)無しに作りこむことができます。

ゴール

別の人が開けたドアの状態が反映されていること。後からJoinしてきてもその状態が反映されていること。

 

VR,VRChat,VRCSDK3

やりたいこと

vrchat 用のワールドで、クリックするとランプが点灯するなどの仕掛けがあります。
物はアセットやBOOTHで入手したものを使用することができます。
ランプなど、クリックすると点灯する仕掛けがあるものもあります。

ランプをクリックしたり部屋の電気をつけた状態が他人の同じワールドにいる人からも同じ状態になっていてほしいことがあります。

cyan_trigger というのを入れることで、プログラミングやノードの操作(UDON)無しに作りこむことができます。

ゴール

2人でテスト用のワールドに入ってからネコミミの子がランタンをクリックしてランプをつけた状態です。
別のPCで別アカウントで同じワールドに入ってみて、ランタンが点灯しているのを確認したのが下の画像です。
後からワールドに入った人がランタンをクリックして消灯したり点灯したりしても、最初に入った人で見ても同期されているのを確認できました。

AI

AIが最近話題です。画像とか、絵画の絵を拡張して、描かれてない横の風景を追加したりもあります。

ChatGPT をセットアップして、質問をしてみました。

◇ きつねが出てくる童話を教えてください

ChatGPTの回答

以下は、きつねが出てくる童話の例です。

  1. 「かっぱときつね」 – 日本の民話で、川に住むかっぱと森に住むきつねが、それぞれの得意技を競い合いながら友情を育んでいく物語です。
  2. 「金のきつねと銀のきつね」 – グリム童話集に収録されている物語で、美しい金の毛を持つきつねと、美しい銀の毛を持つきつねが主人公の物語です。
  3. 「赤ずきん」 – グリム童話集やペロー童話集など、世界中の童話集に収録されている有名な物語で、赤いフードをかぶった少女が、森で出会ったきつねにだまされる物語です。
  4. 「いたずらきつね」 – アメリカの民話で、おしゃべりなきつねが、森の動物たちをだます物語です。
  5. 「おおかみときつね」 – 日本の民話で、おおかみときつねが、友情を育んでいく物語です。

以上が、きつねが出てくる代表的な童話の一部です。

あれ。赤ずきんって、きつねは出てきたっけ? オオカミなんじゃ?
金のきつねと銀のきつね
グリム童話? 金の斧と銀の斧は知ってるけど…

VR,VRChat,VRCSDK3

vrchat 用ワールドのイベント処理

ボタンを押したときの同期のしかたですが、Udonsharp は直に使わず、cyan_trigger を使ってます。
以下のようにしてみました。合ってるかわかりませんが動いています。
UI の同期のしかたがわからないので、球体をボタンにしてます。
Unity で普通に UI を作り大きさを合わせて設置します。
ラジオボタンの位置に球体を適当に大きさを合わせて設置します。
球体にAdd ComponentからCyan Triggerを追加します。
Add EventからInterructを指定して挿入します。ここではLocal のままにします。
Actionsにオーナーを設定するためのNetworking.SetOwnerと、他のCyan Triggerにイベントを送るためにSendCustomEventを追加します。
Cyan Trigger の0.4以降からはCyan TriggerのSendCustomEventはなくなっており、UdonBehaviour.SendCustomEventになっています。
SetOwnerにはLocal Playerとイベントの送り先Sub_Spaceにします。
(このワールドでは宇宙の中を移動するために、宇宙のほう(Sub_Space)を移動させて、自分がいる宇宙船はUnityの中では動かさないようにしています)
SendCustomEventではInputの一覧に、ヒエラルキーからSub_Spaceのオブジェクトをドロップして指定して、_Set_Earthを指定します。
他のボタンも似たようにします。
このワールドでは各シーンを指定できます。各シーンに応じた惑星を移動させたり、宇宙船などのオブジェクトを動かします(アメリカ映画のインターステラーの再現ワールドです)。

Sub_Spaceオブジェクトの設定をします。
Add ComponentからCyan Triggerを追加します。
シーンの状態を示すint変数を追加します。
Variablesの下の+を押してint変数を追加して名前(sub_space_state)を指定します。
最初は1が選択されるので1を指定します。横の設定値は「Synced」にします。
メニュー選択後に他の人がJoinしてきたら、今選択されている番号のシーンに切り替わりましたが、アニメーションは最初から再生されました。
別途アニメーションの再生位置も同期しないといけないことがわかりました。ここでは無視して先に進みます。

Cyan Triggerのカスタムイベントを定義します。
Add EventからCustom Eventを指定して、Nameに_Set_Earthを記載します。
このイベントの処理はCyan Triggerの変数を変更するだけにします。☆マークのvalue -> int -> int.setを指定します。
inputに設定する値とoutputにCyan Triggerの変数を指定します。これをシーン分つくります。

次に、変数が変化したときの処理を作ります。
Add EventでData -> OnVariableChangedを追加します。変数の値が変化したときに動くイベントです。
参照する変数(sub_space_state)を指定します。
AnyoneとSend To Allはこれで良いのかわかりません。
Actionsを指定していきます。
ここでは
if 文でシーン1かを判断し、1なら処理。if 文の elseif 文で次のシーン2かを判断していくことにしています。
if の condition に適当な名前を指定します(適当でいいのか不明)。
☆から value -> int -> int.Equality を指定します。int を 2つ追加し、1つ目はvariable の sub_space_state を指定。2つ目は比較内容の1を指定します。
out boolはcond_to_earthを指定します(condition variableにした値)。これを if の中の Condition(“cond_to_earth") の中へ移動させます。
次は ConditionBodyの中です。
処理は以下のように記載しています。
実際に記載するときは必要な処理で良いと思います。
1. 他のCyan TriggerへSendCustomEventを送る (宇宙船のアニメーション開始)
2. アニメーションの再生位置をスタート位置にするためにfloatを送る。
3.現在の状態を示す変数に1をセット。
4.メニューの選択されてないシーンのマテリアルを水色にセット。
5.メニューの選択されているシーン(1)のマテリアルを青色にセット。
等の処理をしています。
アニメーションの制御はSDK2アイコンのAnimationsの一覧から適切なものを指定してイベントを設定しました。
マテリアルの変更はSDK2アイコンのMaterialsからRenderer.SetMaterialを指定して選択したメニューの球体の色を変更しています。
主にボタンを押したらアニメーションを開始したりするのがほとんどなのでこのようにしています。