SDK変更に関する誤解とお詫び

このたびは、私の誤った認識に基づくご案内により、皆さまに混乱を招いてしまったことを心よりお詫び申し上げます。

当初、Appleの「App-based lifecycle」が来年以降のiOSで利用できなくなると理解し、そのためにLegacyアプリを終了し新バージョンへの移行をお願いする計画を立てました。しかし、その後の確認により「最新のSDKでビルドした場合に限り利用できなくなる」という条件付きであることが判明し、Legacyアプリも引き続き動作する可能性が高いことが分かりました。

誤った情報を広めてしまい、またアップグレードを強くお願いする形となってしまったことについて、深く反省しております。今後はより正確な情報に基づいてご案内を行い、ユーザーの皆さまにご不便やご心配をおかけしないよう努めてまいります。

改めて、この度の誤解とご迷惑に対し、心よりお詫び申し上げます。

2025-10-03
雲英 亮太




公開された*26バージョンについて

SDK変更に関する誤解とお詫び

設定・セッションは新しいバージョンに移行可能です

アプリの設定・音色や、AUMなどで保存されたセッションは、新しい「26」バージョンでもたいてい問題なく動作します。例外的に、「deprecated」のAudio Unitは正式に廃止されました。また、「iTunes File Sharing」のファイルは手動で移動かコピーをする必要があります。

来年のOSアップデートに備えてアプリを改修するにあたり、4つのアプリを「Legacy」にし、新たなアプリとしてリニューアルすることになりました。
Legacyアプリは将来的に終了予定です。
なお、「26」とついていますが、来年以降も名前を変えずにそのままサポートする予定です。

  • KQ MiniSynth
  • KQ Dixie
  • KQ Unotone
  • KQ Sampei

Appleが来年のアップデートで、Sceneを不採用のアプリは起動しなくなる予定、と表明しているので、今回の事態となりました。
これが本当なら、iOS 27で、多くの古いアプリが起動不可能になると考えられます。

実際は最新のSDKを適用した状態で、Sceneが必須になる、ということのようです。
間違った認識のもと、不要なアプリ変更をしてしまい、申し訳ありません。

https://apps.apple.com/developer/ryouta-kira/id862984358?see-all=i-phonei-pad-apps

「26」で廃止された機能は次のとおりです。

  • Inter-App Audio (Audiobus)
  • Deprecated Audio Units

これらを使っていない場合、安全に「26」バージョンに移行できます。アプリの設定およびAudio UnitのIDは新旧で共通ですので、問題なく移行できます。ただし、新旧アプリを同時に使うと不具合が起きるかもしれません。

なお、旧バージョンをご購入された方には、アップデートバンドルを用意しました。
いくばくか割引になります。

KQ MiniSynth Update Bundle
https://itunes.apple.com/jp/app-bundle/id1843517244?mt=8

KQ Dixie Update Bundle
https://itunes.apple.com/jp/app-bundle/id1843517393?mt=8

KQ Unotone Update Bundle
https://itunes.apple.com/jp/app-bundle/id1843517755?mt=8

KQ Sampei Update Bundle
https://itunes.apple.com/jp/app-bundle/id1843517785?mt=8




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キャッシュからある程度は復旧しました。

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