KQ MiniSynthでのウインドシンセサイザー利用

2023年2月5日、KQ MiniSynthをバージョン3.1にアップデートしました。エアロフォンやEWI、エレフエなどのウインドシンセサイザーをKQ MiniSynthで利用する際のポイントについて書きます。

まず、カスタムコントローラを追加してBreath Controllerを入力できるようにします。
エレフエなど息の量がCC#2ではなくCC#11で送信される場合、設定から「ブレス受信元」を「CC#11/#43/#2/#34」にします。そうするとCC#11をCC#2に内部で変換するようになります。

バージョン3.1の新機能に、カーブ関数があります。これを使用すれば、ブレス感度が調整できます。

ブレス信号にVCFのカットオフ周波数が20HzほどのLPFをかけると、信号が滑らかになります。

ウインドシンセにはオシレーターシンクがお勧めです。やり方は、オシレーターを2つ用意し、片方にI/OパネルのV/Octを、もう片方にはV/Octをブレスで変調した音程を入力し、前者の出力から後者のSYNCにつなぐと、クワーといった音になります。パッチング例では変調にV/Octビブラータを使っています。

VCFのLPFでレゾナンスを少し上げ、ブレス信号でSTRを変調させるのもお勧めです。LPFの場合、STRはカットオフの逆となりますので、Invertを間にかませます。

下記のパッチング例では、Gate/Veloの信号がある場合のみブレス信号を処理するよう、Orを使用しています。

音色はここをクリック!(KQ MiniSynthが必要です)

https://www.youtube.com/embed/ZYBy2bkTvGw



拙作アプリでのウインドシンセサイザー使用のガイド

11月28日、KQ Dixie、KQ Unotone、KQ Sampeiをアップデートしました。この日のアップデートでは、ブレスコントローラーでの挙動を改善しています。
私の入手したウインドシンセは、RolandのAerophone AE-10です。KQ Dixieでブレスコントローラー対応の音ならそのままで大丈夫かと思いきや、あまりうまくいかなかったのでアプリの更新をしました。
以下、3アプリでのウインドシンセを使うポイントを記します。

KQ Dixie

ブレスコントローラーに対応した音色なら、本来はfunction parameterのbreath controlでEG biasをオンにすれば、ブレスによるコントロールができるはずなのですが、私の持っているエアロフォンでは標準でベロシティーがとても小さいのでうまくいきません。
また、ブレスコントロールに対応した音色は数が少ないので、別の解決策を実装しました。ブレスコントロールをベロシティーに変換する機能を付けたのです。これならベロシティー対応音源でブレスコントロールができます。この機能を有効にすると、通常と異なり発音後にも継続してベロシティーを適用します。

設定方法:



「param」画面で、「misc」を押す。(iPhoneでは右の方にありますので、スワイプで移動してください。)
「breath to velocity」を「type 1」か「type 2」にする。
タイプ1は、ブレスのアタックを少し強調します。タイプ2はしません。
ブレスコントローラーに対応した音色では、右のbreath controlのEG biasをオンにしてください。

KQ Unotone

以前のバージョンでは、フィルターのパラメーターを急激に変化させるとノイズが発生していました。新しいバージョンで「Slow LPF」を有効(標準で有効)にすることで、これを回避できます。ただし、PEAKが高い値だとやはりノイズは出てしまいます。
ブレスコントローラー(CC#2)をCUTOFFに割り当ててみるのはいかがでしょうか。

設定方法


MIDI Learnを押し、CUTOFFを選択します。
CC#を2に設定し、Doneを押します。
MIDI Learnを再び押し、MIDI割り当てモードを終了します。
これでブレスコントローラーがCUTOFFに割り当てられました。
PEAKを0にしても音を止めた際に低音のノイズが出るときは、SettingsからSlow LPFが有効かどうか、確認してください。

KQ Sampei

KQ Unotoneと同様に、以前はフィルターのパラメーターを急激に変化させるとノイズが発生していました。新しいバージョンで「遅いLPF」を有効(標準で有効)にすることで、これを回避できます。
エアロフォンのようにベロシティーが小さすぎる場合、ベロシティーを無視する設定をします。また、ブレスコントローラーをNRPNのCutoff Frequencyに割り当てます。

ベロシティーを無視する設定


「Param」「その他のパラメーター」を開き、設定したいパートを選択します。
「Vel Sens Depth」を0にし、「Vel Sens Offset」を96にします。これで、どんなベロシティーが来ても64で処理します。

ブレスコントローラーをCutoffに割り当てる設定


「MIDI」「リマップテーブルの編集」を開きます。
左ペインから、一番下の「項目を追加」を押します。
変換元のタイプを「Continuous Controller」「Breath Controller (#2)」にします。
変換先のタイプを「NRPN」「Cutoff Frequency (#1/32)」にします。
「適用」を押し、画面を閉じます。




iOS16での3本指ジェスチャーを無効にする方法 (開発者向け)

iOS/iPadOS 16から、3本指でタップするとツールバーが出るようになりました。回避方法がありましたので、ここに記します。
この挙動は、iOS/iPadOS 16.1で修正され、ツールバーが出なくなりました。ここに書いてあるのは古い情報です。

2022年10月7日編集: UIWindowのカテゴリをオーバーライドすると、不具合が起きるので注意してください。

端的に言うと、ViewControllerなどでeditingInteractionConfiguration.noneを返すようにし、そのViewControllerfirstResponderにします。
ViewControllerでなくても、AppDelegateとかUIViewでも大丈夫かもしれません。
firstResponderとは、タッチ以外のイベントを最初に受け取るオブジェクトらしいので、キーボード入力の処理をしているUIResponderを継承したオブジェクトがあれば、それをfirstResponderにしてeditingInteractionConfigurationを実装すればいいと思います。

Objective-Cでの例を以下に示します。Swift使いの方はここから類推してください。
注意するべきなのは、UITextFieldなどがfirstResponderになると、再び3本指ジェスチャーが有効になるので、フォーカスが外れた時に再度becomeFirstResponderを呼び出す必要があります。
2022年9月25日編集: becomeFirstResponderYESを返したときは、再び有効になることはありません。
以前の投稿はUIViewfirstResponderにしていましたが、変更しました。

ViewController

// viewDidLoadだとbecomeFirstResponderがNOを返す
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self becomeFirstResponder];
}

- (BOOL)canBecomeFirstResponder
{
    return YES;
}

- (UIEditingInteractionConfiguration)editingInteractionConfiguration
{
    return UIEditingInteractionConfigurationNone;
}



文字化け

プラグインをインストールするために環境をいじったら、全ての日本語の文字が化けてしまいました。
バックアップを取っておけば良かったです・・・。

とりあえずGoogleキャッシュからある程度は復旧しました。

ブログの投稿はキャッシュに無かったので、全て削除しました。