見出し画像

複数のKontakt音源をキースイッチで切り替えできるようにした話

概要

奏法が複数の nki ファイルに分かれていてキースイッチ制御ではない音源をキースイッチ制御にします。
方法がいくつかあるので紹介します。

メリット

  • 複数の nki ファイルを1つのトラックに読み込んで、キースイッチで切り替える事によりトラックがコンパクトにまとまり視認性も良くなる

  • Kontakt 側での操作になるので、どのDAWでも活用できる

  • 応用すれば他のキースイッチ非対応音源でもキースイッチ制御にできる

  • 全てのDAWではないが良い方法が存在する

デメリット

設定してしまうまでの手順は結構面倒なので、ほとんど使わない音源に対して行う費用対効果は薄いと言えるでしょう。

やりたい理由

フリーのKontakt 用オーケストラ音源プロジェクト The Alpine Projectと言うものをご存じでしょうか?
ご存じないという方はリンク先からデモなどをご覧下さい。

こちらの音源、フリーとしては凄く音が良いオーケストラ音源でして。
あっ、因みにフリーとは言っても player 非対応ですからこの文言は書いておかねばなりません。

Kontaktフルバージョンが必要です

音は良いのですが、少々扱いづらい面がありまして、そのせいであまり活用の機会が無かったのですが、色々調べてみると扱いやすいキースイッチ制御にできる事が解ったのでシェアしたいと思います。


奏法ごとにnkiファイルが分かれている音源

先程少々扱いづらいと書きましたが、それは1つの楽器に対して奏法に応じて複数のnkiファイルに分かれいる音源なのです。

ロング、ピッチカート、ショート、トレモロと奏法ごとにnkiファイルが分かれている

問題点

これを普通に運用しようと思うと奏法ごとにトラックを分けるか、あるいは奏法ごとにチャンネルを分けるかになります。

奏法ごとにトラックを分けるとピアノロールの一覧性が損なわれてしまうし、僕は譜面を出力する事はありませんが、譜面を出力する人なら尚更不便でしょう。
とはいえ、奏法ごとにトラックを分けたい派の人も居るのでそこは好みの問題かもしれません。

チャンネルを分ける方法も1つのMIDIトラックから奏法ごとに出力するチャンネルを都度指定しなければならないのでそれはそれで面倒です。

解決策

そこで、普通の音源みたいにキースイッチで切り替えれたら良いのになぁって思ってた訳です。
色々と調べていると…ありました。その方法がっ!!
こちらのサイト様を参考にしました。

方法其の一

キースイッチ制御する方法については複数あったのですが、この方法が一番汎用性が高いと思いました。

手順1

先ずは使いたい奏法の nki 全てをラックにドラッグアンドドロップして読み込みます

Long,Pizzicato,Shorts,Tremoloのそれぞれのnkiをロード

手順2

読み込んだnkiそれぞれのMIDIチャンネルをOmniから変更して同一のチャンネルにしておきます。
正直な所、この操作が本当に必要なのかは解りませんが、調べた限り同様の事をやられている方がそうしていたので、少なくともデメリットは無いように思います。

MIDIチャンネルを統一

手順3

※Edit All Groups(図中の赤いボタン) は1つのパッチに複数のグループがある場合に全てのグループに対して一括して同じ操作を行うボタンです。
(値が同じになる訳ではありません)
パッチに1つのグループのみがある場合は自動でオンになっています。
今回のケースでは操作する必要はありません。

エディットモード

左上のスパナアイコン(図中①)をクリックしてエディットモードに入りますGroup Editor のボタン(図中②)をクリックしてグループエディタを表示します
Group Start Options(図中③)をクリックするとGroup startsの設定項目が出現します。
図中④のボタン(初期値Always)を押すとドロップダウンメニューになっているので Start On Key を選択します。

Start On Key を選択

その右側の if key is between の所でキースイッチにしたい範囲を指定します。
左側が低音側で右側が高音側です。逆にするとうまくいきません。
範囲を指定するとキースイッチに指定した範囲の鍵盤が赤くなります。

C0~D#0を指定したので鍵盤に色が付いた

次にその下の段(図中⑤)の項目で現在編集中の nki に切り替えるためのキースイッチになるノートを指定します。
先程と同じように範囲になっていますが、通常は1つで良いので同じ値にします。
画像の例だとC0~D#迄をキースイッチに使用してC0のノートで現在編集中の nkiに切り替えるといった具合です。

手順3の項目を読み込んだ nki 全てにそれぞれ行います
全ての nki の設定が終了したら、実際にキースイッチを押して切り替わるか確認して下さい。

全ての nki に似たような設定をするのはなんだかスマートじゃない気がしますし、他にもっと良い方法があるのかもしれませんが、僕は現状この方法より汎用性の高い方法を見つけられていません。
お詳しい方がおられましたら教えて頂けると幸いです。

※因みに読み込んだ nki のグループを1つの nki にまとめてキースイッチでグループを切り替えという所まではできたのですが、コピー元の nki はラックから削除しているにも関わらず、何故か音圧がやたら大きくなってしまいました。
この問題さえクリアできればこれがスマートだとは思うのですが、もう少し色々調べたり試したりしてみようと思います。

制御的にはこちらが望ましい

手順 4

ここまで出来たら設定を施した複数の nki のまとまりをマルチ(nkm)として保存しておきます。

っとその前に、この項目は特に行わなくてもさほど問題にはならないのですが、現状だと nkm を読み込んだだけで何もキースイッチが押されてない状態だと読み込んだ nki が何も選択されていない状態となり、キースイッチを押さない限り音が鳴りません。

そこで、ディフォルトの nki を指定しておけば何もキースイッチが押されてない状態でも指定した nki が鳴るようになります。
これは読み込まれた時点で自動的に指定したキースイッチが発動するようにする事で実現します。

ロード時のキースイッチを指定

編集モードの Instrument Options (図中①)のボタンをクリックするとダイアログが出現するので Insturument のタブから一番上の Defoult Keyswitch の項目をディフォルトで鳴らしたい nki に設定したキースイッチに指定してやります。
この設定はどれか1つの nki に設定してやればよく、全ての nki に設定する必要はありません。

最後にファイルメニューから Save multi as の項目を選択して任意の名前を付けて保存です。

nkmとして保存

ついでにクイックロードに登録しておけば素早く呼び出す事が出来ます。

クイックロードのMultiタブに登録

以上で方法其の一の設定は終了です。お疲れさまでした。

キースイッチ制御にするにはこの手順で良いと思うので、ぶっちゃけ方法其の二はあまり需要が無いとは思いますが、より複雑な制御ができそうな可能性を感じましたので一応紹介しておきます。
しかし、方法其の三は人によっては大正義になると思います。

方法其の二

少しマニアックな方法で実現します。
スクリプトを用います。
キースイッチ制御にするだけなら方法其の一より劣る部分があります。
こちらのサイト様を参考にしました。

手順 1

先ずはファイルメニューから New insturument bank を選択して空のバンクを作ります。

バンクを作成

手順2

作成した空のバンクのスパナアイコンをクリックすると001~128迄の番号が付いた枠があるのでそこへ格納したい nki ファイルをドラッグアンドドロップします。

バンクにnkiを格納

手順3

スクリプトエディタ

次に右上の方にあるkspと書かれた小さなボタン(図中①)を押してスクリプトエディタを起動します。
次にエディットボタン(図中②)を押すとスクリプトを記述するエリア(図中③)が出て来るのでそこにスクリプトを記述します。
とは言っても配布されているスクリプトをコピペするだけなのでスクリプトの知識は特に必要ありません。

手順4

こちらのサイト様からスクリプトをダウンロードします。

Direct link to compiled scriptというリンクからダウンロード

ダウンロードしたスクリプトファイルを適当なテキストエディタで開いて、全て選択してコピーして図中③のエリアへ貼り付けます。
貼り付けたらApplyボタン(図中④)を押して適用します。

手順5

すると次のような設定画面が出て来るのでこちらで設定を行います。

設定画面

先ずはNewボタン(図中①)をクリックするとその下に設定項目が出てきます。
Keyswitch の項目は key を選択。その値(図中②)をキースイッチにしたいノートに指定します。
KS Action の項目は(図中③) Redirect を選択、プログラムチェンジ(パッチチェンジ)を行うので図中④の項目は Prog を選択。
図中⑤で nki を格納している枠を指定します。
ここで注意したいのがプログラム言語においては順番は0番目からスタートなので、001の枠に格納した nki を指定するには0を指定します

後はキースイッチの数だけNewのボタンから手順5の内容を繰り返します。

ここでキースイッチに設定した鍵盤は残念ながら方法其の一で設定した時の様に色が変わってくれません
キースイッチをどこに設定したかが分かりにくいので注意しましょう。
全ての設定が終わったらキースイッチを押してみて動作確認してください。

確認が終わったら Preset のボタン(図中⑥)からSave Preset…を選択して任意の名前を付けて現在の設定を保存します

Save Presetで現在の設定を保存

手順6

ここまでできたらこのバンクをファイルメニューからSave as で nkb として任意の名前を付けて保存します。

nkbとして保存

nkm の時と同様にクイックロードの Bank タブに登録しておくと良いでしょう。

クイックロードのバンクタブに登録

しかし、ここでもう一つ躓きポイントが。
実はこの手順で登録した nkb ファイルをロードしてもスクリプトは内包されていません。
もしかすると内包する方法があるのかもしれませんが、僕は今の所見つけられていないです。

そこで、nkb をロードしたら ksp のボタンを押してスクリプトエディタを起動し、Presetのボタンから手順5の最後で保存したプリセットを呼び出してやる必要があります。

以上で方法其の二の手順は終了です。
キースイッチの色が変わってくれなかったり、ロードした後にキースイッチの設定を別で呼び出さなければいけなかったり、そもそも手順が多くてややこしかったりと方法其の一と比べてデメリットがかなりありますが、スクリプトから制御できるのがMIDIノートだけでなくMIDICCやプログラムチェンジ等と多彩なので応用すれば何かと役に立つかもしれません。

ぶっちゃけると、キースイッチ制御の情報を調べている時に方法其の一よりもこちらの方法に先にたどり着いてしまい、四苦八苦しながらなんとかできるようになったのに方法其の一があればそんな苦労はしなくても良かったと思うとなんだか悔しくて、記事にして供養してしまおうという気持ちが大半ですw

方法其の三

プログラムチェンジを行う方法は他にもDAWのイベントリストから行う事もできますが、この方法ではアーティキュレーションマップを使用します。
なので、正確にはキースイッチ制御ではありません。
この方法は全てのDAWで使える訳では無いので敢えて強く推しませんが、個人的には大正義です。

Cubase のエクスプレッションマップやStudio One のサウンドバリエーション等でキースイッチを制御できるシステムがあれば同様の事が出来ると思います。

ぶっちゃけ今回紹介する方法の中で最も手順も短く制御もやり易い方法だと思っています。
普段からアーティキュレーションマップを使用している人はこの方法一択だと言ってしまっても過言では無いまで思っています。
何故なら、普段からマップを使っている人はキースイッチ制御の物をそこから更にマップ制御にしているからです。

手順1と手順2

空のバンクファイルを作ってその中に nki を格納します。
ここまでは方法其の二と全く同じです。
格納したらそれを nkb として保存して下さい。
Kontakt側での設定は以上です。

手順3

次にアーティキュレーションマップを作成します。
Cakewalkのアーティキュレーションマップの基本的な使い方や導入のメリットについては以下の記事を参考にして下さい

アーティキュレーションマップの最も一般的な使い方はマップイベントを配置した所にキースイッチとなるMIDIノートイベントを発生させるものですが、マップイベントが発生させる事のできるMIDIイベントはノートイベントだけでは無くCCやピッチベンド、トランスポーズといった様々なMIDIイベントを発生できます。

今回の場合は一般的なキースイッチのアーティキュレーションマップのノートイベントの代わりにプログラムチェンジイベントを発生させるだけです。

マップエディタの編集内容

具体的に言うとアーティキュレーションに対してMIDIイベントの新規生成ペインで+ボタンからイベントを追加して

内容を kind の項目(図中①)がプログラムチェンジ(パッチチェンジ)なので Patch に設定。
Note/CC の項目(図中②)で nki が格納されている枠を指定します。
但し、こちらも順番が0番目からスタートなので、001の枠に格納した nki を指定するには0を指定します。

実際に切り替えている様子がこちらです。

マップイベントでプログラムチェンジ

再生バーがマップイベントに差し掛かる度にプログラムチェンジが行われている様子がうかがえるでしょう。

さいごに

実はこの辺りを調べようと思ったもう一つの理由は SNS で Kontakt のクイックロードの存在をFFさんに教えて貰った事からでした。
それまで知らなかった便利機能に歓喜してクイックロードの便利な使い方について調べているうちに変なスイッチが入ってしまいました。
兼ねてより nkm ファイルや nkb ファイルについてはあまり使った事が無かったのでそれが何なのかあまり理解して無かったし、この際色々調べちゃえって事で、気が付いたらキースイッチ制御についても調べてたって感じですね。

今回 Kontakt について色々調べたので少しは理解が深まったのですが、Kontakt って歴史が長いだけあって知らない機能が沢山あるんですね。

それにしても、メニューの項目だったりポップアップであったりエラーメッセージであったりがあまり日本語ローカライズされてないですよね。
ブラウザと違ってアプリケーションの画面を翻訳するのって一手間余分にかかっちゃうんで何気にストレスなんですよねぇ。

もう少し日本語ローカライズしてくれると助かるんですけどねぇNIさん。

いかがだったでしょうか?
複数の nki を読み込んで切り替えたいシーンが一体どれだけあるか謎ですが、色々と応用ができそうな機能があったのではないでしょうか?
これを読んで下さった方の Kontakt 運用の何かしらのヒントにでもなれれば幸いです。

この記事が気に入ったらサポートをしてみませんか?