NTS-3用ボコーダー(高機能版)をリリースしました


NTS-1版に続いて、NTS-3版のボコーダーをリリースしました。

Vocoder for NTS-3
This is a classical channel vocoder designed as a generic fx unit for the KORG NTS-3.It uses audio input as a modulator ...

こちらはNTS-1 mkII版とは若干違いがあります。NTS-3版は、もともとはゼロから作る場合の2割くらいの労力でできるだろうと思っていました。それこそ、NTS-1 mkII版開発時には、同時進行で作ろうと考えていたくらいだったのですが、始めてみるとやはりNTS-3用の機能を追加せざるを得なくなり、なかなか手間がかかってしまいました。

今回、NTS-3版で追加した新規の機能は、

・ステレオ対応
・コード演奏(4音ポリ)
・ポルタメント
・LFO搭載

が主なものです。

ステレオ対応

NTS-1用ボコーダーはモノラル出力でしたが、NTS-3はステレオ入力ステレオ出力です。このステレオ出力をどう活かすか考えていたのですが、手元のKaoss Pad Miniのボコーダーにサイン波のスイープ信号を入力してみたところ、面白いことが分かりました。

下図がボコーダーの出力で、上段と下段がLとRです。波形のピークの位置がバンドパスフィルタの中心周波数で、LとRそれぞれ6バンドあることがわかります。ここで、ピークの位置がLとRで少しずれていることが見て取れます。

つまりこのボコーダーは12バンドなのですが、その12バンドを重複しないように1個おきに6バンドずつ選んで、それをLとRに割り当てているわけです。

今回のNTS-3用ボコーダーでは、この手法をパクリ取り入れ、左右に異なるバンドパスフィルタを割り当ててみました。

ちなみに、周波数が高くなるほどピークの位置が上がっているのは、キャリア信号である鋸波や矩形波では高次の倍音ほど量が少なくなる倍音分布なので、それを補正しているものと思われます。同様の補正は既存のボコーダーの回路にもありますし、NTS-1 mkII用ボコーダーでも「Metalize」パラメータとして取り入れています。

コード演奏

NTS-3のパッドはマルチタッチではないので、同時に入力できるのはXY座標とパッドの左にあるDepthの3つです。ボコーダーでは是非ともコードを入力したいので、コードをパラメータとして用意することにしました。

以前こちらでツイートしたように、複数のボコーダーを並列に動かせば、1つあたりは1~2音でもそれ以上の音数のコードを鳴らすことも可能です。


とはいえ、4つしかないスロットをコードのために使いつぶすのはできれば避けたいですね。いずれにせよ、パラメータが最低1つは必要になるので、コードのパラメータを用意することにしました。

コードの種類は、ボイシングまで考えたら沢山ありますが、パラメータの中で選択肢として提示するのはよく知られている基本形だけにして、他にルート+1半音~ルート+11半音までの2音ペアを用意しました。これで、ボコーダーユニットを2つ使えば、だいたいの4音の組み合わせが鳴らせるはずです。

ポルタメント、LFO

NTS-3ではピッチベンドがありませんので、ポルタメントは用意しようと思っていました。

また、LFOでピッチを揺らせられるようにしました。NTS-1は内蔵のLFOがありますが、NTS-3にはそれが無いので、プラグインの中での実装が必要です。LFOは最低限、周波数と強度を指定する必要があるのでパラメータを2つ消費してしまいますが、それでもやはり用意したいところです。

パラメータの選定

NTS-3で利用できるパラメータは全部で8つです。XYパッドやDEPTHパッドへは、この8つのうちから任意のものを任意の値域で割り当てることができます。

NTS-3では、あれこれと悩んだ結果、8つのパラメータを以下のように割り当てました。

・ノート番号(C1~C5):パッドから入力する想定
・コード(14種および2音×11)
・オシレータ波形選択(NTS-1 mkII版と同様)
・フィルタ周波数のシフト(NTS-1 mkII版と同様)
・メタライズ(上述の高位倍音の強調)(NTS-1 mkII版と同様)
・LFOレート
・LFOデプス
・ポルタメント

最初の3つは絶対外せないパラメータで、残り5のうち2つをLFOに割り当てるとすると、パラメータの選択はかなり悩ましかったです。

当初考えていた、スケールとキーの設定をするという考えは早々に捨てました。またそもそも、スケールとキーをパラメータとして採用するには、利用できるパラメータの数だけでなく、スケールを構成する音がスケールによって異なるため、パッドに割り当てる音域をどのように指定するか、という別の(テクニカルな)課題もありました。

ちなみにNTS-1では10個あったパラーメタを以下のように使っていました。

・エンベロープフォロワのRelease係数
・入力ゲイン
・フィルタの選択
・フィルタ周波数のシフト
・メタライズ
・オシレータ波形選択
・オシレータエンベロープのRelease係数
・ベロシティ有効のオンオフ
・LFOターゲットパラメータ
・モジュレータ入力の閾値

パラメータ数に余裕があれば、NTS-3のパラメータにも入力ゲインや閾値、Release係数などを含めたかったところですが、今回は固定値としました。複数のフィルタから選択できるようにすることも、技術的には可能でしたが、やはりパラメータ数の制約から割愛することにしました。

NTS-3のパラメータの少なさは悩ましいところです。初代NTS-1では6パラメータ+2つのノブが使えて、それとは別にピッチ信号やLFOの値が取得できていました。しかし、NTS-3では全部ひっくるめて8個のパラメータしか使えませんので、自由度としては初代NTS-1並みか、それ以下な感じがします。まあ、ボコーダーのような、やや複雑なものを実装しようとすると困ってしまいますが、通常のエフェクトではそこまでのパラメータ数は必要ないかもしれません。

また、パラメータの値域にも実質的には制約があります。プログラムを編集する際、パラメータの設定はノブではなくタッチパッドで行うので、あまり細かい設定ができません。パッドから少し指が離れていても感知されるので、指を離した瞬間に値が変化してしまうからです。

パッドのX軸を使ったとしても(DEPTHパッドよりもタッチ範囲が広い)、ピンポイントでの値を設定するには50~60段階くらいまでが限界な感じです。鍵盤で言えば4~5オクターブ分くらいになります。かつ、近隣の値ではなくピンポイントの値を設定するには、何度かやり直しが必要になります。

プログラムとしては、パラメータの値域の一部をパッドからの入力に割り当てることができます(たとえば5オクターブ分の値域があっても、パッドから入力できるのは特定の1オクターブだけに限定する)が、その場合も最大値・最小値はあらかじめ(プログラムの編集画面で)設定する必要があります。

プログラム編集における値の設定は、なかなかストレスフルなので、できればPCで使えるプログラムエディタが欲しいところです。【2024/9/14追記:NTS-3のGlobal SettingsでNRPNをONにすると、Kontrol Editorからプログラムを編集することができます。パラメータの値は数値でしか表示されませんが・・・】

コメント