Logicのオフラインバウンス
半年ぐらい前からLogicのオフラインバウンスの結果に時々ノイズが混じるようになりました。
これがまた、ほんの一瞬,音が途切れている。
しかも1曲に1〜2カ所で、完全に無音でも無い、という発見がとても難しいタイプ。
じっくり聞けば良いじゃん、という話もありますが,
エンジニアをしていると、全曲をじっくり再試聴してチェックするのは、コスト的にも難しい面もあります。
しかもノイズのタイプからして,聞いていれば確実に発見出来るわけでも無いことも。
とにかく、いつどう起こるのかが不明で、いろんな条件での実験を繰り返してきたのですが,
やっと、関連する条件を発見しました。
今まで,Logicのオフラインバウンスは,
・処理は前倒しでやるから高速
・重くてマシンの処理能力を超えていても,プロセスを必ず待つので,
マシンの負荷に関係なく同一の結果になる
と思っていました。。。。
オフラインが実装された当時、bitレベルで同一の結果を返してくれるかどうか?を
何度もバウンスしてチェックしてOKだったのでかなり信頼度は高いのです。
(実験時の注意:アナログ系のソフトシンセはランダム要素を持っているし、ディザもそうなのでbit一致しない原因にはなる)
ところが、今回,その信頼が少し崩れました。
結果から言うと,
「オフラインバウンス中にマシンに負荷をかけると処理落ちする。しかもこっそりと。」
です。
バウンス中はとにかくヒマなので、ついつい、なにかの作業をしがち。
マジメにエンジニアしてたって,その曲に関してのメールを書いたり、
トラックのデータを送ったり,時には、スタジオで帰り支度をしているミュージシャンの
電車の情報をブラウザで調べたりすることもあるわけです。
ところが、いろんな条件で100回以上バウンス実験をした結果,
・アプリの起動
・ブラウザでのページ読み込み
・メールソフトの更新
等、ある程度以上マシンに負荷がかかる動作をさせると,上記のようなノイズの発生確率が上がることを確認。
そして、その発生確率は,このパラメータが大きく関わっています。
Process Buffer Rangeね。
これを、Largeにすると,エラーが減ります。Smallにすると、処理しきれない量が多くなり急に増えます。
ちなみに、再生・停止のレスポンスがずいぶん良くなるので、普段はSmallがオススメです。
(あと、Retina環境の人は、Logic自体を低解像度モードで開くとレスポンス向上します。画面ボヤーってするけど)
そして、これがLargeだと、オフラインバウンスの速度も速くなります。
プロジェクト次第でしょうけど,2割ぐらい変わりますよ。
ちなみに、レイテンシーが気になる、I/O Buffer Sizeは、
オフライン時は速度・安定性、どちらもあまり影響しない模様。
実験の結果,
・オフラインバウンス中は他の操作をしない。
・特にネットワーク関連で裏で重い動作をするアプリは閉じておく
・Process Buffer RangeをLargeに
という3点を守ると,まずほぼ、エラーが出ないことがわかりました。
なんか「オフラインの旨みが無いじゃん」とは思いますが。。。悔しいねー