NeosVRでのサウンドの扱い方

#はじめに
グローバルゲームジャムが開催されます。
サウンドついていると良いなぁ　でも　サウンドって後回しになりがちなので、
サウンドがついたものが増えるのを期待して、ここで紹介しておきます。

#サウンドデータの扱いについて
まず、サウンドのデータは昨今比較的簡単にコピーが可能です。

ゲームジャムでは、ゲームの作り方を学ぶ機会でもあるのですが、
データを作る側としての意識を学ぶ場でもあります。

ほぼ劣化しない形でのデジタルデータの扱いは、映像と同じで、提供されているコンテンツのライセンスを確認しましょう。

私的な利用と異なり、チームで作成するデータになるため、
権利侵害をしてしまい、作成したものの公開範囲が限定されることの無いよう
以下のような点を注意してください。

- ライセンスが明言されていないサウンドのYoutube動画からの取り込み
- フリー素材であっても無加工の再配布を禁止しているもの（有料の素材集の場合そのままクローンされるような形はNGとしているものが多い）
- 配信に利用は可能だが、素材集としてはNGなもの
- 不特定多数にダウンロードできる環境においてはならないもの

アップロードしたものを素材や素材集とみなされるような利用が可能な形で提供した場合、
商用の音源ライブラリとかそのままあげるのはNG。（再配布みたいになってしまうので）
ほとんどの場合は何かしら加工をすればおそらくOK。（制作物向けに手を加えているなど、素材集によって定義が異なる場合があるので、利用規約をよく読む必要はある）

利用できる素材のライセンスをまもることが、ひいては自作のコンテンツの権利を守ることになります。
ライセンスをクリアするには、自作するのが一番手っ取り早いです。

##どんな音が扱えるか

- 自分で演奏した生の楽器の音や声やフォーリー収録
- 鳥の鳴き声、虫の音、サイレン、雷、環境音収録（ただし町中で流れる音楽や、宗教音楽は注意、P.D.(パブリックドメイン)かどうかで判断、よくわからない場合は似た音を自作する）
- 古いハードシンセ、DAW付属のシンセの音（比較的権利が緩く、自由に扱えるものが多いです。）
- C.C.ライセンス P.D.ライセンスなど明示されている素材
- P.D.化された音源、歌詞。　古い動揺とかクラシック音楽など。
- 自作した曲、音の配置
- プロシージャルオーディオを使う 参考[NeosVRのProcedualAudioのノイズ](https://qiita.com/tatmos/items/f28e103ff4b03bcc7d6a)

ライセンスが無いからと自由に扱えるかは別だったりするので、魅力的な素材は、最大限のリスペクトを。

あと、ライセンスでクレジット表記があればOkとかいうのもよくあります。[UnityChan](https://unity-chan.com/)とか
urlだけではわからなくなってしまうので、
リリースする本体の目立つところにクレジット表記を置くなど工夫が必要と思われます。

プレーヤーとしてストリームをゆるしているようなもの
例えばyoutubeの再生は可能だけれど、それをゲームのBGMに使うのは微妙（本来の動画視聴の目的と異なる利用になると思われる）
ゲームジャムでは避けるのが無難かなぁと思います。
（動画をアーカイブとか配信したい時とかにできなくなるおそれがあります）

#どこからアクセスされるかどうか（不特定多数への配信になってしまうか）

NeosVRの場合、イベントリにサウンドを登録することで、ローカル管理ではなくグローバルにurlが発行され、どのワールドからもアクセスできる再利用可能な素材として扱われるようにもとらえられます。（簡単には扱えないですが）
これは、NeosVRの中に限った範囲ではあるけれど、不特定多数への配信と同義になるため、ライセンス違反が起こりやすくなります。
この点でも自作することが良いと思われます。

また、NeosVRに置いて、自作したもの登録した瞬間から、
NeosVRの中では他の人もurlさえ知っていれば自由に扱える素材になってしまうので、そのようなものだという意識を持つ必要があります。
（作ったものをどう扱われたいかを明示することができないので、間接的に意思を伝えるようにする（コピーライトを入れるなど））


#何とか音素材を用意する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/1c361f06-c915-53ff-c82f-20fbf92413f9.png)
録音したあと、EQやCompなどで音量や音色を整えておくと良い。

書き出してwavファイルにする。
効果音なら44.1kHz モノラルとかで良いかも。
音楽なら44.1kHz ステレオ。
容量を小さくしたければ22.050kHzとかでも良い。（高い方が消えるので音による）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/c505c8e4-1c95-33a1-d3c4-372ebf1dd84e.png)

#Neosにアップする
波形ファイルや入ったフォルダをウィンドウへドロップすると　ひとまずlocalにアップロードされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/307c9c04-e0b8-17d2-6471-dd4113532323.png)
これで再生できる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/709c87ac-1ec1-0a12-9fa9-e2577ffa6e1c.png)
URLを確認すると、こんな感じの長い名前に置き換えられています。


このURLはイベントりに一度いれて、しばらくしてから取り出すとNeosDBに変わるようです。
（アップできているかはホームの画面の上の方で確認できる）


#サウンドの鳴らし方

![48CC7579-9C89-4160-8772-26B33D7170D5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/bc97f8f1-9244-3fdc-8265-0b666d91916d.png)


ゲームサウンドでは、いかに楽にサウンドを扱えるかがカギになります。

PlayOneShotを使いましょう。

Audio>PlayOneShot

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/22480647-802b-d400-b968-d93ae7eaaf09.png)

StaticAudioClipを指定するだけで鳴らせます。

.wavのインスペクタからStaticAudioClipのインターフェースをExtractしてとりだし上から2番目のところに繋ぐ。
Pulseをクリックすると音が鳴ります。

StaticAudioClipはサウンドのurlを指定します。

ライフタイムも、Pulseが送られて音が無くなりしだい、処理が消えるので、扱いが楽です。
サウンドの再生のための何かを確保しなくてもよい。音を最後まで重ねて鳴らしたい場合などはこのPlayOneShotは都合が良い。


あと、未検証ですが、足音とかモノが当たった場所に残しておきたいとかにも使えるのかな？
（どこの座標で再生されるのかは要調査）

#サウンドバンク

![4383A3CE-0F70-4277-A595-25B4122E7274.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/6c830922-6b5a-7331-b5ea-052ba0c86e3a.png)


ゲームサウンドでは、いろんな音を鳴らすとにぎやかになります。
ひとつひとつPlayOneShotを作っても良いのですが、
音が増えてくるとちょっと手間です。

音の同時発音数は制限されているけれど、
音の種類は無制限なのでいろんな音を鳴らせればにぎやかになります。

余談ですが
昔の人はメモリが無い時に、領域（バンク）を切り替えるという方法で乗り切っていたようで
バンク化（複数の音をまとめて入れ替える）することで、
鳴らす枠組みはそのままに、Index指定だけで音を切り替えて鳴らすことができます。
制御がシンプルになり、途中でデータ差し替えたい時も楽になるのでこの形はおすすめです。
（Indexで指定しているだけなので後でまとめて差し替え（フォントやスキンを変えるみたいな）で変更とかもできる感じ）
実行時の領域を入れ替えて多くの表現をする方法ですが、作成途中で差し替えの時とかも便利です。（プロト版から最終Fix版に変更するなど）


ここでは
ValueMaltiplexerを利用します。
任意の値をマルチプレックス（リスト）みたいに持たせることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/70fd980e-b95b-f38d-0af5-d9a235fe2716.png)

＜＞でくくられている型を複数もてるようにするもので、ここはCustomに直接型を入れてURIと打ち込む。
型はURIのようです　（URLをプログラムではURIという時もある　意味はほぼ同じ）

これで
urlを複数持たせ、インデックス指定で切り替えが可能になります。
これで大量のサウンドを扱うのが楽に行えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/e5dc18af-b847-78bd-2396-d156f8bfef70.png)

Addを押してここでは３つ追加してみたところ。

#切り替えつつ鳴らしてみる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/b8737101-cde9-ad1f-c330-ef0e209a711a.png)


このURL：（左の文字のところ）をつかんで、ValueMultiplexerのTargetへドロップするとURLがピンク色になり、
Indexを変更してPulseを送ると音が変わります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/fc85218b-d640-dfff-7750-4167f0120ffe.png)

#圧縮コーデックで軽くする
BGMとか長いwavはそれだけでダウンロードとかに時間がかかってしまうので、
oggに変換しておくと1/10くらいのサイズになるので、アイテムサイズを小さくできます。

この時音が小さくなるようなので、ボリューム正規化をまず押してから変換すると良いです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/6d866395-9b3c-9287-2870-b366baa81b64.png)

##FLAC
FLACも対応しているようですね。圧縮率はoggにおとりますが、声とか無音の間の多い素材とかで音質重視の場合はこの選択もありかもです。
oggにして音の劣化が気になったら試してみるという感じ。

#おわりに
NeosVRでグローバルゲームジャムやります。
ゲームサウンドの実践の場として活用ください。

以下から参加できるので、よろしくお願いします。

[GGJ2021 MyDearest浅草橋NeosVR](https://effectorhack.connpass.com/event/198248/)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/fd2683a6-952f-01c2-7f5c-3670436be6ad.png)