投稿記事

2021年 12月の記事 (2)

Quietude. 2021/12/19 13:01

進捗状況/Sofaファイル編集と作成覚書き

一生に一度もソファってものを買ったっことがないおじさんですこんにちは。

まずsofaファイル作成の覚え書き。
さまざまな行列になったデータを格納するHDF5の音響用変種みたいなやつ。
わかんない人に説明すると、ちょうど学校の下駄箱が並んでいるところのような仕組みのデータとでも言おうか。

例えばとなりのクラスの女子のたえ子ちゃんの足のにおいを確かめたいとする。
科学のために!
そこであなたが使い走りを用意し、3年2組の女子のたえ子ちゃんの上履きを採取してきてくれとお願いするわけだ。するとしもべは上履きを手に入れて戻ってくる。

これを制作でいうと
お前 =DAW が
しもべ = プラグイン を使って
Sofa =下駄箱 から上履きを手に入れて戻ってくる
 

といった感じで、何かを格納するものが行列になってずらずらーっと並んでいるもの。この場合女学生の上履きではなくIRが入っている。

もっと間抜けなやつ用に手短に説明すると、モノラルやXYやORTFステレオなんぞで録った音をバイノーラルにして定位をつけてやることができるプラグインが利用するためのファイルを作るとかそんなやつだ。

(話のうまいやつに聞いたんだが、まずはそれを行って得られる結果から話せなんだそうな。→毎日宅配ピザが食えるようなお金持ちになれます!そのためにまずは…みたいな感じ。へーふーん。早速破ったけどな。)

さて、自分用の制作に対して使う352.8kHzのsofaがほしい。
sofaファイルに格納できるのは困ったことに1つのサンプリング周波数だけなので48kHzで収録された頭部伝達関数の他の周波数用のバージョンもつくりたいとする。

というわけでPythonとかffmpegなんぞを駆使(ランニングオールナイト!)して色々弄ってみた結果、一応はできてちゃんと動くので備忘録としてここに書いておく。

ちなみに足のにおいについてだが、アンモニア濃度が濃すぎると粘膜を刺激して涙や鼻水が止まらなくなるから上履きなんかよりも汗を吸い込んだ半袖体操着(上)のほうがいいぞと僕は思うよ。

じっさいにいじってみる

さてこんなツールがある。
・HDFView


https://www.hdfgroup.org/downloads/hdfview/
拡張子を.sofaから.h5にすれば開ける。GUIでHDFをいじれるじゃんラッキーと思っていじってみたが、困ったことに数値のデータしかいじれず文字列データは書けず、コピペに難がありあんまり良いとは言い難い。

サンプリング周波数なんかもいじれるにゃいじれるが、今まで512/44000秒掛けて波形を描画していたものが512/352800秒になった場合、当然音が妙に高くかわっちゃうし、ここだけ書き換えられてもサンプル数とかが書き換えられないならデータもコピペしようがなく、しゃあない。
最終確認にはGUIという都合で非常に良いのだがひとまずおいておこう。

SOFASonix

.sofaファイルを定義して出力する。または読み込んで編集して出力。
Pythonのインストールとかについては割愛。各自で適当に落としてくること。

https://github.com/OneBadNinja/SOFASonix/wiki

テンプレを埋めていくだけで割と手軽にカラのデータの入れ物が出来上がる。
https://github.com/OneBadNinja/SOFASonix/wiki/Convention-Templates

ここでいうディメンションとは

R = レシーバ(マイクの数 バイノーラルならほぼ2固定)
E = エミッタ(音源の数 これもバイノーラルならばだいたい1だ)
M = 音の長さ (下のサンプル数と混乱しそうだが波形が512サンプルなら512)
N = 収録地点の数 (マイクを5°づつぐりーっと周りを回ったら72。)
C = コーディネイト(角度を決める場所。XYZ軸ということでここは3固定)
I = 一次元のときのデータ(1固定)
S = 最大文字数。0.。ぶっちゃけ入力しないから忘れていい。

こういう風に


ヨソ様の作ったsofaをカンニングしたりしつつ参考にして自分用のやつを埋めていけば良い。

ちゃんとできてりゃぺっと.sofaファイルが書き出される。
あとはSofarやPyfarなんぞでグラフィカルに表示したりもできる。
https://sofar.readthedocs.io/en/latest/working_with_sofa_files.html

波形データの入力がな…

とまあここまでは良い。
FFMPEGで抽出したデータをFFMPEGでリサンプルして352.8kHzにしたインパルスレスポンスをそのままドラッグアンドドロップでとかそういったことはできないのでCSV/テキストデータに変換し、ババババババと入れていく必要がある。
意外とAudacityが音源データの1サンプルごとのピークを取って出力とかそういう事ができたりするのだが、困ったことに12000個もファイルがあると日が暮れるどころか来年といった体たらくなのでバッチで処理できるものを用意する。
scipy(CSVとテキスト)FFMEPG(CSVとテキスト)やSox(テキストだけ)なんぞがふさわしく、適当にcdして*.wavとか指定してババババババと変換してやればよい。
あとはPandasなんぞのhdfを操作できるもんで入力していくわけだが、あんまりPythonにもHDFに詳しいわけでもないのでほとんど手動で座標書いてテキストコピペしてやったのは内緒だ。そして終わる頃、PandasGUIというわかりやすいパッケージの存在を知った。


うわーなにこれっすっげーwww
コピペはおろかCSVのドラッグアンドドロップまでできるとはwwww

SOFAの扱いにはMATLABとかいうインテリが使うインテリソフトがよい。

大変に便利そう。
https://github.com/sofacoustics/API_MO
HRIRの収録からSofaファイル編集に出力に変換にグラフ化にといろいろ揃ってる上に
こんどはそれを利用したVSTプラグインで出力したり、なによりGUIですよ奥さん。
ただ、値段がなあ。
作品に使うわけで当然商用ライセンスを買わなきゃいけないんだが、285,000円もしやがる。
https://www.mathworks.com/store/

これ、最初はHomeと必要なDLC(DLCだろ!)だけにして
モノができたらアップグレードとかでもいいんかな?

利点

・DAWのサンプリング周波数を変えずに作業できる
・でかい数字が表示されてるとなんかトクした気分になる

問題点

・3528000Hzで処理するので当然重い
・一般的なサンプリング周波数のものをアップサンプルするので22kHz〜24kHzで当然スペクトログラムはぶった切れるわけで、それ以上の再現はできない。案外izotopeのRXみたいなぶった切れた領域の再現ができるもので補完できる気がしないでもないが、そもそも人間の鼓膜って、非可聴域の音拾ったときに電気信号を脳に投げられるんかなあみたいな思いあり。
どうやったらそういうの調べられるんだろうな?手術で耳と脳の間に検査用デバイス埋め込むとかだろうか。
・3日もかかったのに44/48kHzとまじで大差ない出力結果。これだったら出力結果をアップサンプルでよくね?


進捗状況

↑の役に立つんだか立たないんだかわからない、まるで刺し身が食いたいから醤油用の大豆の栽培を始めたようなクソプロセスが終了し、DAW作業に戻った。
音を並べて調整して間をつくってみたいな、いわゆる世間一般が編集と聞いて想像するようなああいうやつだ。

10月に出す予定がお金がなかったり、他人の仕事したらこんどは時間がなかったり、時間ができたら↑みたいな問題なような、そうでもないようなことで一時中断したりとで伸び放題なわけだが、辛抱強く待っていただいている皆様には本当に感謝しきれないとかそういう感じであります。

ちなみにこの音声には散歩がある。坂道を歩いて海まで行くシーンなのだがそばを車や自転車が通ったり、下手くそなピアノが聞こえたり、誰かが作業しているとかそういったものが前から来て後ろへと通り過ぎるとかそういう事をやっている。

このシーン、8分くらいしか無いくせに一番時間食ってる。
諸般の事情で女の子があるくと鈴の音が聞こえるわけだが、そういうのも非常に問題。
畳み込みとかそんなことよりもモニタ聞きながら自分で演技して入れるほかないかもしれない。

他人の音声でまずやらない手法をとっている。自分用だから!
DAW上で行われる絵で説明できることの場合、

こういう風に坂道を歩いていくと固定された音源の横を通り過ぎるとか、動く音源は別に作るとか。
とうぜん音の回折まではシミュレートできないのでそこは畳み込みリバーブの比率をいじったりフィルタ等で調整してある。
先日納品したベレス解部さんの大変に売れたキスしないと好きになる一週間のモデルハウスのシーンや、うどんの歴史で号泣のさいに先生に報告するときの音像の遠い部分とかも概ねはフィルタと畳み込み芸と、あとはステレオ音像の幅とかそういう感じ。
ラップトップのスピーカーから音楽を流して徐々に遠ざかってくとだんだんモノラルっぽく、ディティールが曖昧になっていくとかそんな感じのやつだ。

あとは海からの風に吹かれるシーン


こんな風にルート。

もっとわかりやすくすると


こんな。
つまり風の強さによって吹かれ音が発生することを再現する。
実際のところは吹かれ音に合わせて風の音が大きくなったりするのだが、これらはタイミングがピッタリ合ってると違和感があり、風の音が聞こえてから吹かれが発生する…みたいなそういう具合。

そしてこういった表現手法について、包み隠すことは一切なくPDFにまとめることにしている。だいたい企業秘密にするってのは概ねのケースでマネしようとするとだれでもマネできることが多いゆえにそうなっていると思うのだ。

出力結果が素晴らしい作品かそうでないかは僕の判断するところではないので、僕の再現性を上げるという試みが正解だったらいいなあとか。
そんなわけでお楽しみに。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

Quietude. 2021/12/08 20:44

Compass 6DoFプラグインで遊ぶ

ぼさっとしてたら出てたわw

あろうことか無料プラグイン。
SPARTA Plugin Suiteに同梱される形になっている。

https://leomccormack.github.io/sparta-site/

Ambisonicsを扱いますという人なら是非もっておきたいいい感じの十徳ナイフ。
ついでにバイノーラルアウトがついてるプラグイン群はSofaファイルを読める仕様になっており、モノラルやステレオの信号をバイノーラルにアップミックスする際にも役立ったり。

動画


さて、使った感じはこんな感じである。雑に動画にしてみた。
特にキャプションの位置が雑。
とりあえずイヤホンかヘッドホンじゃないとわかんないので装着する旨よろしく。
この曲はなんなのか。ゲームの開発用にセールで買ったBGMセット。

左側にるろうに剣心のCMのようなチッチッチッチッ音が配置され、右側に変なBGMが配置される形になっている。本当に変だなこれ。

ワークフロー

まず、2つの音源の間を通ったりくぐったりする物を作りたい、Ambisonics 3rd orderで。
…と仮定した場合。

困ったことにこの手のAmbisonicsベースの処理を行う場合、DAWはReaperやBiduleくらいじゃないと64ch使えなかったりルーティングに難があったり。
NuendoやPyramixでも動きそうに思うし、ProtoolsあたりでもVSTブリッジを駆使して工夫すればどうにかなる気もするがとりあえずReaperかBiduleを落として来るように。


まずこんな風に音ネタ用トラックn個と音ネタ合体用バス1個を用意する。


ほんでもって音ネタ用トラックの64ch全部を合体用バスにルート。
Master Sendはチェックを外しておくこと。


音ネタトラックにSPARTA AmbiRoomSimを挿す。
こいつは複数のモノ音源を部屋に配置し、更にその部屋に仮想アンビソニックマイクを置いて出力するという感じのわりとオールインワンなプラグイン。なぜ2つにしたのかはルーティングマトリクスが目が滑る感じでめんどかったから。

SH Encoding Orderを3に、ACN/SN3D(Ambix)に設定。
そしてレシーバ数を4個に設定し、配置する。ピンクの点がそれだ。
今回は4つのマイクで音源を囲む感じにしたが、それ以外でもだいじょうびなので各自工夫のこと。これで
1-16、17-32、33-48、49-64にそれぞれ4つのAmbisonicsが、それぞれ仮想マイクの位置収まっているオーディオストリームができあがった。


もう片方の音ネタトラックも同じ用に設定しておく。ドラッグアンドドロップでやると手っ取り早い。


ほんでもって合体用バスに2本の音ネタが64ch流れ込んでいることが確認できたら次はCompass 6DoFプラグインをバスに挿入。

パラメータ一つづつに長々とした説明を要する感じで、オフィシャルのマニュアルを参照してくれといった体たらくだが、Analysis Settingを 3rdのAmbix(/ACN/SN3D)にして、先程設定した通りに仮想マイクの位置を動かし、Rendering SettingをBinauralにすればとりあえず聞ける音で出力される。
複数のAmbisonics差分から音のパーティクルを生成して鳴らす方式なので、音量バランスやら設定やらでよく上手く生成できずにバリバリ言い出したり音源がフラフラ動いちゃったりするのでそのへんはAnalyze Settingをいじったりすること。


同梱されたCompass Trackerがちょうどそういった定位の安定に役立ったりするので利用するといい感じ。きれいな線が比較的まっすぐ引かれてればOK。

とまあ、ここまで書いといてあれなんだが

似たようなことがしたいならUnityなりUE4なり落としてきて、FPS用のコントローラをアタッチして床作って壁作って適当なオブジェクト置いて音ネタはっつけて、SteamAudioやらResonanceAudioやらのイマーシブオーディオマネージャ設定してやれば似たような前後左右奥行きリスナー角度みたいなことができる。
っていうか我々はそういうものでまず遊んだことがある。

こいつは何が良いかと言うと録音ベースのオペレーションが可能とかそういう感じ。
バラバラの音を一つに編集したものか、予め大きな一つの音かみたいな違い。
ほんでもってAmbisonicsなのでその中から必要な音を必要な形式(バイノーラルやサラウンド、または非常に指向性の狭いモノラルなど)取り出したりできるとかそんな話。

一部で有名な巨大リバーブのInspirataなんかはこんな方法で客席からステージまで、どこに移動してもその場所の特性になるリバーブをこういう感じで再現しているものだと思われる。しらんけど。

まあ、あとは制作に対して有効な利用方法を思いつくだけ。
何の役に立つかはまだ未定である。
バイノーラルの静的な音源を作る目的だったら、散歩なんかの再現によろしいんじゃないかと。

そしてこういうものを書いてるとき最高に楽しいのだが、困ったことに誰も興味を持ってくれなくて色々と虚しい。

別に不特定多数の人間からモテたり称賛を浴びたりしなくてもいいが、肌の浅黒い小柄で痩せた感じのスリーサイズが貧・貧・貧女の子がね、こういうのに興味津々で俺とお話してくれたり、なぜか俺のことが好きとかそういうのがいいな。

そんでもって、マイクアレイの話したり、俺の代わりにRX弄ってくれたり、NiMHバッテリを充電してくれてね、うわあ、ありがとう!とても色々片付いたよとかお礼を言うと「今日はおそいから一緒に寝る?」みたいに言ってきてね。
一緒に毛布にくるまって抱っこして、頭のにおいとか嗅いだりね。ふっふっふ。

うーん、こういうことを考えてるとき最高に仕合わせだな!!!!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

記事のタグから探す

記事を検索