Kontaktライブラリのロード時のメモリ節約手法

結論として「初回ロード時の節約は不可能」ですが、いくつか手法があるように思います。
※以下、「サンプルのロード」と「インストゥルメントのロード」と「プロジェクトファイルのロード」の三種類のロードが登場しますが、いちいち書き分けないので注意してください。あと専門用語(?)は細かく説明しません。

Batch re-save

あちこちで紹介されているので今さら感あるのと、これ自体が直接メモリ節約に役立つわけでもないのですが、各ライブラリが読み込むサンプルの情報を整理してくれるため、ロード時間の短縮には役立ちます。

新しいKontaktでBatch re-saveしたものは、古いKontaktだとまったく開けなくなる可能性があるので注意。

Loading in Background

KontaktのOptionsのLoadingタブにあるLoad samples in backgroundは、次の2つの動作を切り替えます。

  • サンプルのロード中に(そのライブラリの)インターフェースを表示する
  • サンプルのロードが完了するまで(そのライブラリの)インターフェースを表示しない
Monitor Kontakt's resource usage, access files and preferences, and change how the Kontakt window is displayed in the Main Control Panel.

ロード完了するまでDAWの画面にすら触れない問題を解決するわけではありません(個人的にはコレがいちばんイライラする)。
ただ、不便ではあるものの、ロード時の負荷はDAW巻き込んだクラッシュを誘発するリスクが高く、安全のためにはロード中にユーザーがDAWに触れなくなる仕組みのほうがいいんでしょう。
ライブラリが堅牢な構造となっている(または自社製ライブラリ以外扱わない)Spectrasonics社製ソフトサンプラー等においては同様のクラッシュが発生するリスクが低く、サンプルのロード中であってもDAWに触ることが可能。

闇雲に一般論化してもいけないけど、以上を考えると、仕様をサードパーティに開放するのは「ビジネス上フェアだけど、ユーザーにとってリスクになりえる」といえます。一方、開放するならしたで、もしユーザーの利便性を考えるなら、仕様において充分な縛りを備える必要があるといえるでしょう。

各ライブラリ独自のパージ機能

ここでのパージとは、いったんロードしたものをメモリからアンロードすること(サンプルがゴミ箱に移動されるわけではない)。
各ライブラリが独自にパージ機能を搭載していることがあり、それにはバリエーションがあるので一概にどうするといいとはいえませんが、概ね次に記す箇所にパージ機能が備わっています。

  • マイクバランス機能を持ったライブラリでは、ライブラリ内のミキサー
  • アーティキュレーションセレクタ機能を持ったライブラリでは、各アーティキュレーションのリスト
  • いかにもなPurgeボタン
  • ユーザーの手に委ねない自動パージ機能を備えたものもある

必要に応じて活用するのがいい。

Purge All / Global Purge

さて、本記事(メモ)のキモとなります。

上に記した、ライブラリ独自のパージ機能が、ライブラリを制作したデベロッパが「わかった上で」ロードサンプルをパージするのと比べ、力任せにフンガー!とぜんぶ捨てるのがPurge Allです。
Global Purgeは、Kontakt内の大きなメニューのほうにあります。試してませんが、複数のインストゥルメントをロードしたときに読み込まれたすべてのサンプルをパージするコマンドかと思われます。
いずれにせよ、結局のところ、これらを活用していかざるを得ないでしょう。

活用のポイントとしては以下の通り。

  • ロード最中でもPurge Allが効く(つまりキャンセル)
    • ロード最中とは、Memory欄の数字がカウントアップされているときを指す(上記「各ライブラリ独自のパージ機能」のスクショ参照)
    • Load samples in backgroundがOnになっていることが前提
  • Purge All後は、DAWまたはMIDIキーで慣らされた順に対応サンプルがロードされていく
  • Purge All後に、↑でロードされた状態でインストゥルメントをSave asすると、その時点でのロード状態で以降ロードできる
    • つまりPurge All直後の状態でSave asしたインストゥルメントをロードすると、一切サンプルをロードしていない状態でインストゥルメントをロードできる
  • 同様、Purgeしてから保存したDAWのプロジェクトファイルにはKontaktにおけるPurge状態が記録されているため、このプロジェクトファイルをロードすると、メモリ消費の少ない状態で作り勧めることができる(可能性が高い)

言うまでもなく、「DAWまたはMIDIキーで慣らされた順に対応サンプルがロードされていく」手順が非効率とも考えられます。この辺りは完全にユーザーの好みやスタイルによる。

制作中、Purge Allを活用しない手はない

Kontaktの絡むメモリの懸念があったり緩慢な動作が気になるなら、上に書いたとおり、Kontaktライブラリをいったんロードしたなら最初にPurge Allをやっちゃうのが得策となります。
ただ、几帳面に何もかもそうしようとすると面倒でしかないので、厄介そうなのに限ってPurge Allするクセをつけるのがセカンドベストなのかなと。

理想としてはKontaktの初期設定に「起動時に勝手にサンプルをロードしない」があれば済むのだけど、ググった限りそんな設定はないみたい。
もしあったら、この記事自体無意味なのでいずれ消します。

I’ve recently started messing around with sampled instruments and one thing I absolutely love about east west’s opus engine is the ability to launch an instrument, but it won’t load any samples until you start playing and it will only load the samples that you play.

↑のフォーラムによれば、ライブラリによっては「デフォルトでサンプルをロードしない」設計にデベロッパーサイドでできるらしい。ということは、Kontakt自体のデフォルト動作が「デフォルトでサンプルをロードする」固定であり、ライブラリのデベロッパーはこれを回避する設計を行う必要があると考えられます。
が、実際にそう取り組んでいるデベロッパー/ライブラリーが少ないってことは「デフォルトでサンプルをロードしない」設計を好む層が、比率として少ないんでしょう。
一方で、上記「各ライブラリ独自のパージ機能」のスクショに見えるように、特定のグループのみロードして他のグループをロードしない手法は別段珍しいものでもない。


こういう記事を書いときながら、私自身はそんなに頻繁にPurge Allを使ってはいません。
なぜなら、上記を考慮すると「ある程度使う音色が決まったなら、その段階で必要に応じてPurgeを行なった上で、(同日であれ別日であれ)DAWごと再起動して制作活動の続きを行う」のが理想の運用…であってもバチクソ面倒じゃん。効率がいいとは言えませんので。
ゆえに「気になった段階でPurgeを行って、本ちゃんのミックスダウンは別日に行う」の次善策を執っています。


メモリを気にする必要、そんなにあるかな

メモリをガシガシ搭載したPCで、軽量な曲を作るぶんには全く気にする必要がありませんが、遅かれ早かれ表現欲は募るもんで、そうなってくるとメモリの消費度を無視することは難しくなってきます。
効率の問題には必ず直面し、制作効率を左右する要素としてCPU、ストレージ、インターフェース(UI)以外に、たいがいメモリも絡みます。

またメモリへの格納状態が好ましくないとき、仮にサンプルが100%完全にロードされたことを示していても、誤動作(音が鳴りっ放しになったり、スパイクが発生したり、途中で音が途切れたり、サスティンペダルを無視したり)が発生するので、気にしないよりは気にしたほうがいいでしょう。AIじゃなく市販の流通ソフトでも「ちゃんとできてるフリ」をすることがあるわけです。