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にまとめることにしている。だいたい企業秘密にするってのは概ねのケースでマネしようとするとだれでもマネできることが多いゆえにそうなっていると思うのだ。

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

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

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

記事のタグから探す

月別アーカイブ

記事を検索