Kontakt : 小ネタ集

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

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

Batch re-save

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

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

Loading in Background

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

  • サンプルのロード中に(そのライブラリの)インターフェースを表示する
  • サンプルのロードが完了するまで(そのライブラリの)インターフェースを表示しない
Main Control Panel
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の初期設定に「起動時に勝手にサンプルをロードしない」があれば済むのだけど、ググった限りそんな設定はないみたい。
もしあったら、この記事自体無意味なのでいずれ消します。

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

Kontakt : ロード時間の短縮(初稿)

Kontaktに新しくサードパーティ製の音源を追加したときなど、Instrumentsのロード時間がとてつもなく長くかかる場合があります。
制作作業中だと萎えちゃって、そのタイミングで休憩に入った挙句、なかなか制作再開しないなんてことも…。

たとえば、うちだとコレが重かった(再保存済みなので読み込みは既に超速い)
たとえば、うちだとコレが重かった(再保存済みなので読み込みは既に超速い)

たぶん、この日記で紹介するまでもなく実践してる人も多いかとは思うのですが、いちおうご存知ない方向けに。

(1)FileメニューからBatch re-saveを開く
(1)FileメニューからBatch re-saveを開く
(2a)確認画面が開く(スクショはKontakt 5)
(2a)確認画面が開く(スクショはKontakt 5)
(2b)確認画面が開く(スクショはKontakt 6)
(2b)確認画面が開く(スクショはKontakt 6)
(3)バッチ再保存したいディレクトリ(フォルダ)を指定する
(3)バッチ再保存したいディレクトリ(フォルダ)を指定する
(4)再保存が始まる
(4)再保存が始まる

Libraryペインのほうに読み込まれる音源でもQuick-Loadで指定したInstrumentsでもBrowser経由で辿るInstrumentsでもいいんですが、画面上部のフロッピーアイコンのメニューからBatch re-saveを開き、まとめて再保存したいディレクトリ(フォルダ)を指定し、ちょっと待つだけです。
あまり大量のInstrumentsを一気に行おうとするとさすがに重いので、ある程度小分けに行なったほうがいい。
また、Batch re-saveを選択したときに表示される警告画面の内容は、

このツールを使用すると複数のパッチに一度に影響が出たり変更が発生したりします。
ツールの使い方をきちんと理解された方のみご使用ください。
現在Kontaktのラックに読み込まれている音源ラックはいったんリセットされます(変更は保存されません)。

Kontakt 5での確認ダイアログ

Kontakt 6.1.1で複数のファイルを処理すると、古いバージョンのKontaktでは開けなくなります。
素材が見当たらないというダイアログが表示される可能性もあります。ステップをスキップすることでそうした素材を二度と参照できなくなることもあります。
以上の点に留意し、オリジナルのパッチをバックアップしてください。
充分に準備はできましたか(Proceed anyway)?

Kontakt 6での確認ダイアログ

この通りで、パーフェクトなユーティリティである保証はないので自己責任で、ということになってます。

上のスクショ中にある8dio 1971 Estonia Grand Pianoなんかは毎回5,6分ロード時間がかかってた記憶があって、現在は10秒くらいでロード完了していて、ここまでのところ特に異常もないです。
なにせ、8dioのサイトでre-saveが紹介されてるくらいですんでね。

このほか、パフォーマンスの改善策としてKontaktの初期設定画面のMultiprocessor supportをあえて切ったり、Memory Server機能をOffにしたりするTweaksが一部で紹介されているようです。
Windows環境であればアンチウィルスのソフトにリアルタイム監視対象の除外設定を追加するだけでパフォーマンスが改善されることも知られています。


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

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

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

Native Instruments ソフトがデモモードになってしまう不具合と解消

不具合発生

Native Access
Native Access

購入して使えていたNI製品が突如デモモードになってしまい、再登録しようが再インストールしようが直らなくなりました。
具体的には、先日まで愛用していたReplika XTが今日使えなくなりました。言うまでもなく、割れ物を使っているわけではないし、アカウントを共有しているわけでもありません。
英語で検索しているとForumに同様の報告が多々あり、抜本的な解決にまだ至っていないっぽい。

一つの解法として、現在Native Accessに機能が置き換わった旧Service Centerの情報が残っている、またはNative Accessで登録後にService Centerを立ち上げることで上書きされてしまった情報を破棄する目的で、MacではApplication SupportのNative Instruments内のService Center下にある(正しく認識されていないソフトに対応する)XMLファイルを破棄するとよいとのこと。これで解決した人もいるようですが、うちでは解決せず。
結局、NIスタッフによれば環境差があるそうで、直接スタッフにコンタクトを取ってくれとのこと。現在返信待ちです。公開できるような回答が来たら、日記に書かせてもらいます。

追記

現実解はアンインストール&再インストール

指定されたIDでサポチケをもらって昨朝返信をいただき、必要と思われる情報を提供したところ、動作環境の辻褄は合っているため、いったんライブラリー以外つまり初期設定ファイルやソフト(プラグイン含む)本体を削除して再起動後に再インストールしてくださいとのこと。→直りました。

憶測に過ぎませんが、旧環境から新環境に移行する際に、macOSの移行ツールによって初期設定ファイルもしくはそれに準ずるものをコピーしてしまった場合に起きるのではないかと思います。とはいえ昨日まで正常動作していたものが今日異常を来すってのは考えにくいのですが。

Native Instrumentsのサポートさんが日本担当の方に回してくださったのでラクに解決しました。英語が苦手な方だとサポチケに辿り着くのも少ししんどいかもしんないですね。でもたぶん、日本語サイトからもサポチケを貰えると思います。

さらに追記

Guitar Rig 5など一部のソフトは、Native Access 3.2.2にダウンデートしてリフレッシュ(右上のボタン)することでDemoモードが解除されます。どうもMacのRosetta 2との整合性の問題らしく。
ただし、この場合、Native Accessを最新版にするとまたDemoモードに戻ってしまうことが予想されるため、Guitar Rig 6からGuitar Rig 5のプリセットを呼び出せるようにしておいたほうが現実的には安定すると思います。

Kontaktのnkiをアンマウントする際の罠

nkiを置き換えるの? 保存してない変更は失われますよ!
nkiを置き換えるの? 保存してない変更は失われますよ!
終了するの? 保存してない変更は失われますよ!
終了するの? 保存してない変更は失われますよ!
(×を押したとき)変更を保存しますか?
(×を押したとき)変更を保存しますか?

駄文。
単に気をつけていればいいのですが、nkiを少しいじったあとKontakt上でnkiを置き換えるときやKontakt自体を終了するときのYesボタンと、nkiの×ボタンを押して閉じるときのYesボタンの意味が違うとこに、どうも自分は引っかかりやすい。×ボタンで閉じるときのYesボタンのみ、変更をnkiに保存してしまうんですよね。
たぶん、わかりやすいようにダイアログの形が違う…いや、これmacOSのダイアログを使ってるのかな、わかりませんけども。
気をつけていればいいとはいうものの、曲やソフトウェアの動作チェックのオンライン打ち合わせをしながらアワアワとイジってるとそうそう気を配れなかったりして、うっかりデフォルトを上書きしてしまいます。

【ライブラリー制作者向け】壁紙等のデータの置き場所に注意

開発に携わったわけじゃないんで、単なるいっちょかみです。

一部環境でインターフェースに不具合が起きてるそうで、おそらくNKIファイル読み込み時に「NKRが見つからない」とかメッセージが出たときにIgnoreしてるんではないかなと予測します。
NKRが見つからない状態でIgnoreするとResourcesフォルダを自動的に探しにいきますが、ここにもお求めのものがない場合に、諦めてKONTAKTのデフォルトのホリゾンタルフェーダーが表示されることになります。
ただ、本来このメッセージが出ないようチェックしてから製品リリースされるべきではあります。とはいえ、海外製品でもちょくちょくこの問題を見かけるので、別段珍しい事例でもないとだけは述べておきます。

釈迦に説法とは思いますが、原則として、デベロッパー側は次の点に注意が必要と考えられます。

  • 開発時に使用したNKRファイルは、ユーザーにとっても必要なので、NKIとNKRが正しい組み合わせであることを踏まえてリリースするべし
    • なお、開発時にはKontaktのInstrument Optionsで最初にNKRをcreateしますが、ここにはたしかファイルパスでなくファイル名のみが表示されてしまうので、ファイルパスが間違っていた場合気づかないことがあります。
  • 開発時に使用したNKRファイルは、もしファイル名を変えたら指定し直してリリースするべし

このいずれかポカしちゃってたり、単純にDLに失敗、あるいはユーザーが勝手にフォルダ階層を変えちゃった場合に、NKRはどこ?とかファイルはどこ?とダイアログが表示されます。
ちなみに正しいフォルダ階層はNIが指定しているわけでなく、KONTAKTライブラリの開発者がめいめい決めます。

KONTAKTに(UIを含めた)リロード、リフレッシュ機能が備わっていればポカの発生確率をいくぶん下げられますが、KONTAKT自体にその機能はなかったはず。
KONSTRUKTORか、GUI MAKERでリフレッシュ機能を見かけた気がしますが、これらいまも配布されているのかは不明。

Kontakt : 飾り付け その他メモ

画像ファイルは、Resourcesフォルダに入れて最終的にNKRにまとめるか、もしくはKSPから直接指定する場合もあるんで、必ずしもNKRがあればResourcesフォルダ不要とは言えません。が、NKRに全部まとめちゃって(素材の二次配布を避ける目的でも)Resourcesフォルダを配布物に含めないのが理想かなとは思います。

ちなみにユーザー側にとってGUIの問題が発生したときには、NKC(キャッシュ)を削除するのが定石とされています。

国内のKONTAKTライブラリー開発者は非常に少ないので、支援!

APFSフォーマットとKontaktライブラリなど

確定ではないのですが、どうもそういうことではないかと思われたのでメモしておきます。
某社のKontaktライブラリの壁紙やフェーダ画像が表示されない場合があるってんで、去年から色々試したりしてて、どうも特定のドライブで問題が起きることに気付きました。
といっても、特定メーカーのドライブでとか、まったく関連のなさそうな意外な要因みたいな深く難しい話ではなく、APFS(大文字/小文字を区別)でフォーマットしているドライブに限定されるっぽい。基本的にはMacやLinuxに限られると思いますが。
兄弟製品に当たりますが、サポートのほうに以前同様の問い合わせがあったらしく、うちでも同様の現象が起きるにも関わらず、サポートサイドで症状の再現ができなかったり原因の特定ができかねるってことで、いったんお流れになっちゃってたそうで。

自分のとこで、理由もなくこのフォーマットを選ぶことはないので、何か理由があってこの現象が起きたんだろうとは思います。デフォルトがこれであることはおそらくないと思うので。
なので、壁紙やフェーダ画像が表示されない、あるいは一部のリソースファイルが読み込みに失敗する(具体的にはResourcesなどとフォルダを作成してそこにリソースを置いていた場合、それらすべてに可能性があります)場合は、そのKontaktライブラリのフォルダごと、標準のAPFSフォーマットのドライブに移したほうがいいかもしれません。

で、実はDropboxがここ半年ほど、使用できない文字をファイル名に含んでいないか確認しろというメッセージとともにたびたび同期に失敗するんですね。ExcelファイルやGoogle Chromeのブックマークファイルで起きやすく、原因をググってはみたもののコレというのが見当たらない。
Dropboxも上記ドライブ上に作成してあるので、もしかしたら同じ原因かもしれません。
今日あたり時間が空きそうなので他のドライブの空き容量と相談しながら動作を確かめてみようと思います。

追記

予想通りKontaktライブラリは、ドライブをAPFS case-insensitive(つまり最もオーソドックス)にフォーマットし直すと正しく読み込まれました。

Macのディスクユーティリティで利用できるファイルシステムフォーマット
Macの「ディスクユーティリティ」で、Apple File System(APFS)、Mac OS拡張、MS-DOS(FAT)、およびexFATを使用してディスクまたはボリュームをフォーマットします。
ファイルシステムをCase-sensitiveに設定しておこう for Mac - Qiita
前置きこの記事は 2020 年の RevComm アドベントカレンダー 15 日目の記事です。 14 日目は@tatakahashi35 さんの「 RevComm の裏側で動くアルゴリズム [二…

↑こちらは逆にsensitiveにする必要性についての話なので注意。

Kontaktのキーカラー設定

Kontaktのキーボードのカラー設定って、規定のものがあって自動的に決まるのか、それともデベロッパー自身が勝手に設定できるのかと、ふと気になってググったら、16色プラス3色をカラーネームで呼び出すスタイルでした。

白鍵への着色としては概ね下の表のような塩梅らしく。

NAMERGBCMYK
RED213,158,1550,26,27,16
ORANGE215,175,1580,19,27,16
LIGHT ORANGE216,188,1490,13,31,15
WARM YELLOW221,211,1490,5,33,13
YELLOW223,223,1500,0,33,13
LIME196,222,14912,0,33,13
GREEN175,221,16821,0,24,13
MINT157,214,19127,0,11,16
CYAN157,214,21527,0,0,16
TURQUOISE154,204,22030,7,0,14
BLUE164,184,21925,16,0,14
PLUM178,173,21919,21,0,14
VIOLET193,173,21912,21,0,14
PURPLE204,168,2197,23,0,14
MAGENTA214,165,2140,23,0,16
FUCHSIA213,160,1780,25,16,16
BLACK51,51,510,0,0,80
DEFAULT154,204,22030,7,0,14
INACTIVE205,205,2050,0,0,20
NONE205,205,2050,0,0,20

昨今気にせねばならないユニバーサルな着色かどうかは定かじゃないが、内部的に定まっいるのであれば、KONTAKT本体内で定義が変わればデベロッパー飛び越してユーザー側での表示色も変わると考えてよさそう。
ちなみにこれ、数字はカラーピッカーで見たものなので、ブレがあるかもしれない。また白鍵の元々の持ち色にレイヤー表示された上での表示色なのであれば、そのぶん差っ引いて解釈するべきかもしれません。

Push custom light guides and knobs from Kontakt to Komplete Kontrol

Kontakt の Wavetable に関するメモ

Kontaktに Wavetable の機能が搭載されましたよね、けっこう前に。

Native Instruments "Ethereal Earth" : 見覚えのある音色名が…
Native Instruments “Ethereal Earth” : 見覚えのある音色名が…
Native Instruments "Analog Dreams" : ここにも見覚えのある音色名…
Native Instruments “Analog Dreams” : ここにも見覚えのある音色名…
Native Instruments "Ethereal Earth" : wavetable使ってる
Native Instruments “Ethereal Earth” : wavetable使ってる

Analog DreamsやEthereal Earth等のライブラリーの一部ではMassiveから抜粋された幾つかのWavetableが用いられていて、たとえばSin-Squareのデータを覗いてみると上のスクショのような姿で目にできます。Massiveだと波形なんてまるで見えませんでしたよね!
KontaktのマニュアルによるとKontaktでのWavetableの1サイクルは2048サンプルらしく、従ってSurgeやSerum, Falconなどのデータを流用できることになります。

Form Typeのリスト
Form Typeのリスト
サイクル
サイクル

Positionは想定通りの機能ではありますが、Wavetable内のIndex数が多いと、Positionを派手に動かしたときにノイジーに聞こえてしまう傾向があるため、もし他のソフトのWavetableデータをKontaktに食わせてあげるならばざっくりしたデータのほうがむしろ好都合。
良かれとIndex同士の補間処理を実データとして持たせちゃうと逆効果になるってことですね。

波形を変形させるメニューはMassiveでのそれとまあまあ似たようなもので、取り立てて見るべきものもなさげ。
フリーケンシーシフターっぽさあるInharmonicはMassiveにもSerumにもない(FXとしてならMassiveにもある)ので、Wavetableで少し変わった音色(ねいろ)を狙うなら使ってみるのもよさそう。
Kontaktをサンプラーじゃなくシンセとして使う俺(音色の自作をする人がますます減ってきた感はありますが)。

Wavetableを選ぶことにより、SourceのMod部分は少し内容が変わって(そりゃそうだ)、Position等が制御できるようになります。

Script(KSP)、それもプリセットと組み合わせるだけでも、他のWavetableシンセじゃ難しいであろう複雑な発音が可能になりそう。
アルペジエイターというかシーケンサーがもう少しだけ充実してくれたら機能的には一気にOmnisphereを追い抜きそうですけどね。
ちなみにAnalog Dreams等はScript Editorの鍵が外れているため、長文のKSPの全容が見えます。