2008年11月11日

マルチコアCPUで sfz を複数使った場合にノイズが出る問題の対処法

環境による問題かも知れないのだが、現象から考えればこの方法で解決できるはずなので書いておく。

■手段1: マルチコアでVSTホストを動かさないようにする
 ホスト側の設定で切り替えできる場合はシングルコアで動くように設定する。
 もし切り替えられないのならシステム側からシングルコアで動作させる荒業もあり(タスクマネージャでプロセスを右クリックして「関係の設定」)。
 ただしパフォーマンス的に考えるとシングルコアで使うのは決して得策ではないと思う。

■手段2: DLLを複数コピーして使う
 sfz.dll をたくさんコピー&リネームして sfz01.dll, sfz02.dll, sfz03.dll ... などと
 使いたい個数分用意し、使うときに同じものを使わないようにする。
 こうすることでsfzの内部処理でメモリを共有しなくなるのでトラブルを回避できるはず。

-- 2009/05/08 追記
よく2chからリンク貼られているようなので一応補足しておきますが、これは sfz と Synthedit 製プラグインだけで起こる問題ではなくて、マルチコア環境で動かすことを想定せずに作られたプラグイン全てに起こりうる話です。
わかりやすくたとえ話をするなら、2人で同時に最後のシュークリーム1個に手をつけようとして喧嘩になっている感じとか。

また、sfz の場合はノイズが鳴るだけですがプラグインによって挙動は様々で、何が起こるかわかりません。
同時に同じエフェクトやインストゥルメントを使おうとした場合に何か変な挙動を起こすのであれば、この辺を疑ってみるといいかも知れません。
posted by oov at 20:55| Comment(6) | TrackBack(0) | 音楽 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
「sfz」って見ても、スフォルツァンドしか思い浮かばない私が通りますよ
しかし95とか98の頃から今まで延々と続いてるとは知りませんでした、dll複数コピーで不具合解決
音楽アプリに限った話でなく、いろいろ使えるってのがまたw
Posted by . at 2008年11月14日 23:53
NT系のOSは9x系とDLL共有の仕組みが違うので、プロセスごとにDLLをコピーとかしなくても意図的にメモリの共有などを行わない限りは安定するようになりましたねー。
ただ今回の場合は同じ親プロセスがdllを呼んでいる上にマルチコアで同時に処理が実行されているので、若干状況が特殊かな、とは思います。
プロセスごとにちゃんと分かれているので昔に比べるとこういうトリッキーな方法で問題回避できるケースは減ったような気はします。

同時に別スレッドから実行されることを想定しないで作られているプラグインは少なくなさそうなので、
今後も問題が起こったらこれで回避できそうです。
Posted by oov at 2008年11月17日 20:34
googleで検索してたどり着きました!
こんな方法があるとは知りませんでした…
試してみたらノイズも乗らず、動作も若干軽くなったような気がします!
sfzにリバーブをかけてたのでこれで爆音ノイズを恐れることなく演奏できそうです!
ありがとうございました!
Posted by agrex at 2009年02月07日 13:53
どういたしましましまして!
Posted by oov at 2009年02月11日 18:35
最近マルチコアにPCを買い換えてから、sfzの複数起動時のノイズでほとほと困っていました。

DLL複製・・・こんな解決方法があったなんて。

ありがとうございました。
Posted by 009 at 2009年03月23日 22:55
どういたしましましまして!
Posted by oov at 2009年03月24日 02:34

この記事へのトラックバック