公開前日にどたばたした話
どたばたの記録です
有給休暇を取って、オーディオゲームセンターの最終調整のため銀座ソニーパークへ。
プレスが来るのでその対応して終わりかな、午後には帰れるだろう。というか1日有給にしなくてもよかったのでは……?
(まだ、だれも知らなかった。そんなものがただの幻想であったなどとは……)
会場到着、軽い気持ちのつもりが……
会場に到着して、そーいえば実機でまだ中の人(俺)が試してなかったなと思い出す。ということで、やってみる。見た目的には、ヘッドフォンを付けたプレイヤーが、なんかよくわかんないけどひたすら目の前のコントローラー的な物体をへんなバチみたいなやつでパカパカたたいてるだけにみえるので、結構シュールだと思う。
すぐに気が付いた。音がおかしい。左チャンネルにしか振ってない音が右チャンネルからも流れている。しかも、体感で 30ms ぐらい遅延して。DTM 用語でいうところのダブリン具状態になっている(さすがに音量差は左右で違うけど)
そーいえば、以前から「音がディレイしてるのはわざと?」と言われたり、「中心からの音が分かりにくい」と言われたりしていた。正直、ディレイなんてしてねえよ、かけてねえからなとか、分かりにくいって言われても真ん中から出してるだけなんだよ、なにいってんだあーんと思っていた。彼らが言ってたのはこのことだったらしい。塩対応してほんとすまんかった。
たぶん、視聴用に、モノラル音声には広がりを、ステレオ音声にはより広い空間エフェクトを、みたいな乗りで、なんか DSP が間にかんでるんだろうと思った。ただ、それが逆に音の定位をあいまいにしてしまうので、今回の場合はおせっかいでしかなかった。どげんかせんといかん。
とりあえず原因を調査する
真っ先に、使っていたノイズキャンセリングヘッドフォンを疑った。でも、通常のヘッドフォンに変えてみても、結果は変わらなかった。
こうなると、あとは Windows のサウンドカードがなんかしてるとしか考えられない。ヘッドフォンを指すと、「いま、どんな再生機器を接続しましたか?」みたいなポップアップがでるので、こいつのせいかと思って、そのウィンドウタイトルを見て、まずは max audio pro とかいう野郎を消し去ってみた。ポップアップは消えたけれども、変化なし。
Windows の設定で、立体音響関係と、エフェクト関係をすべて見てみたけれども、オフになっていた。まあそもそも、ヘッドフォンを接続していないときは問題がないので、この線は薄いだろうと最初から見ていたが。
舵を切った
ここまでくると、たぶんこれを仕込んでいるのは十中八九 PC ベンダーだと思ったし、そうじゃなかったとしても、トラブルシュートが鬼面倒だと思った。明日オープンだし。
ということで、とにかくなんでもいいから USB オーディオインターフェイスをどっかから探してきてもらえるように頼んだ。うちにあるのを1個持って行ってもよかった。幸い、研究室に 2 個あったらしいので、それを急遽持ってきてもらった。UA-1010 と UA-101。めっちゃいいやつ。俺も欲しい。
まあ予想通りといえば予想通りだが、USB オーディオインターフェイスから出したら、音の問題はすべて治った。直前で気が付けてよかった。
実は、先週最初の搬入に行ったときは、コントローラーが塗装されたばっかりで、スプレーが乾いていなくて、コントローラーに触っちゃダメだったので、試せていなかった。
それよりまえに、中で使っている PC に開発環境を入れたり環境変数を配ったりしていたのだけど、そのときは、スピーカーからちゃんと音が出ていたから、まさかヘッドフォンを接続した瞬間にそんなへんになるなんて思っていなくて、ヘッドフォンをつながずにやっていたから気づいていなかった。
ふう、一安心……ではなかった。ここからさらに問題が起きる。
まさかの、公開前日にゲームが遊べなくなったやべえ
オーディオ IF をつないで、配線をやりなおして、中身を筐体内に戻す。ところが、今度はコントローラーからの入力を認識しない。たたいても何も起こらない。つまり、遊べない。OMG。
入力テスト用のプログラムが別にあるので、そっちを実行すると、ちゃんと認識する。でも、ゲーム本体を実行すると、全く反応しない。デバッグ開始。
コントローラーは midi デバイスとして通信しているのだが、なぜかアプリ側が midi-in からのイベントをなにもとっていない。midi デバイスは認識してるのに。しかも、同じコードなのに、テストプログラムだと認識して、アプリ本体からだと認識しない。謎すぎる。
USB の刺す場所を変えたり、機器を再起動したりしても変わらず。
原因を突き止める
もうやけだと思って、さっき頑張ってセットしたオーディオ IF を引っこ抜いて試したら、なんと動いちゃった。まーさーかー。これでピンときた。こいつ、midi-in があるオーディオ IF なんじゃないかって。
デフォルトの midi デバイスをオープンするようにしていたのだが、アプリ側で UA-1010 の waveOut をオープンしたときだけ、デフォルトの midi デバイスが、UA-1010 の midi-in デバイスにオーバーライドされてしまっていた。つまり、UA-1010 が高機能すぎて、midi-in を持っていたので、そいつが優先されていた。さすがお値段 100000 円の高級デバイス。ちなみに、なんでそんな挙動をするのかはわからない。sdl の仕様かもしれない。
ということで、これはパッチを当てないと動かない。具体的には、midi デバイスを列挙して、目的のデバイス名で検索して、合致するやつのハンドルを開くようにしなきゃいけない。さすがに vscode とか入れてなかったので、まさかの notepad コーディング。つらかった。文明の利器は素晴らしいと思った。
にゃおったーーーーーーー
パッチを当てたら、やっと動いた。長かった。疲れた。しかも、筐体に PC が入ってて、それがめっちゃ地面に近い位置にあるので、ずーっとしゃがんだ状態で作業しなきゃいけなくて余計に大変だった。
まあでも、そのあとにプレイしてもらったら、当然なんだけどめちゃめちゃ音質が改善したと褒められたので、オープンする前に大問題を潰せたということで一件落着と思って帰ってきた。
そんな苦労と工夫が詰まったオーディオゲームセンター、ぜひフラット立ち寄ってね。
https://www.ginzasonypark.jp/program/032/
そいえば、今日、ホラーゲームのやつ初めてやったんですけど、まじでやばいぐらいすごかったです。語彙力。でもほら、あれじゃないですか。あんまりネタバレしてもね。とりあえずめっちゃやばくてすごさがすごい感動ということです。
おわり。