Clarification About Legacy Apps and SDK Changes

I sincerely apologize for the confusion caused by my earlier announcement, which was based on a misunderstanding.

Initially, I believed that Apple’s “App-based lifecycle” would no longer be available in future versions of iOS, and therefore announced a plan to discontinue the Legacy apps and asked users to upgrade to new versions. However, after reviewing the information more carefully, I found that this change applies only when using the latest SDK. This means that the Legacy apps are still very likely to continue working.

I deeply regret having spread incorrect information and for encouraging upgrades that may not have been necessary. Going forward, I will take greater care to confirm details before making announcements, to ensure that I do not cause unnecessary inconvenience or concern.

Once again, I sincerely apologize for the misunderstanding and any trouble it may have caused.

2025-10-03,
KIRA Ryouta




公開された*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




About Released *26 edition

Clarification About Legacy Apps and SDK Changes

Users can smoothly migrate to new apps! Settings / Saved Sessions can be loaded.

The new apps can load the old settings. Saved sessions in AU host apps (e.g. AUM) works with the new apps except if users use the “*deprecated” audio units. Files in iTunes File Sharing need to migrate manually.

In preparation for next year’s OS update, I have decided to designate four of my apps as “Legacy” and release them as renewed apps under new titles.
The Legacy apps are scheduled to be discontinued in the future.
Although the new apps have “26” at the end of their names, I plan to keep supporting them under the same names in the coming years.

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

Apple has stated that apps not adopting “Scene feature” will become unusable in next year’s update, leading to this situation.
If true, many older apps are expected to become unusable in iOS/iPadOS 27.

It appears that the Scene becomes mandatory when applying the latest SDK.
I apologize for making unnecessary app changes based on a mistaken understanding.

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

The lost functions in the *26 are:

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

You can safely migrate to the *26 if you don’t use those functions. The app preferences and Audio Unit ID are common.
Some issues might occur if you use the both versions simultaneously.

For those who have purchased the older versions, I have prepared update bundles.
These bundles offer a discount.

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

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

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

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




Use Wind Synthesizer with KQ MiniSynth

On Feb. 5th, 2023 I updated KQ MiniSynth to the version 3.1. I write about using wind synthesizer (e.g. Aerophone, EWI, Carry-on DWI) with KQ MiniSynth.

First, add a Custom Controller to allow the Breath Controller to be entered.
If the amount of breath, such as Carry-on DWI, is sent in CC#11 instead of CC#2, set “Breath Source” to “CC#11/#43/#2/#34” from the settings. This will cause CC#11 to be converted internally to CC#2.

New in version 3.1 is the curve function. This allows you to adjust the breath sensitivity.

Applying an LPF of VCF with a cutoff frequency of about 20 Hz to the breath signal will smooth the signal.

Oscillator sync is recommended for wind synths. To do this, prepare two oscillators, input the V/Oct from the I/O panel to one and the pitch of the modulated breath to the other, and connect the output of the former to the SYNC of the latter, resulting in a specific sound. In the patching example, a V/Oct vibrator is used for modulation.

It is also recommended to use a LPF of VCF to slightly increase resonance and modulate STR with a breath signal; in the case of a LPF, STR is the opposite of cutoff, so an Invert should be placed in between.

In the patching example below, Or is used to process the breath signal only when a Gate/Velo signal is present.

A patch is here. (KQ MiniSynth is required.)

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



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)」にします。
「適用」を押し、画面を閉じます。




Disable a 3-finger tap gesture in iOS16 (for Developers)

On iOS/iPadOS 16, a toolbar appears when you tap with three fingers. There is a workaround, which is described here.
This behavior was fixed on iOS/iPadOS 16.1. The information on this page is old.

Edited on 2022/10/7: A glitch occurs when you override UIWindow.

To put it simply, you can use a ViewController or similar to return .none in the editingInteractionConfiguration, and make that ViewController the firstResponder.
If not ViewController, AppDelegate or UIView may also work.
FirstResponder is an object that first receives events other than touch, so if there is an object inheriting from UIResponder that handles keyboard input, make it the firstResponder and editingInteractionConfiguration should be implemented.

An example in Objective-C is shown below; Swift users can draw an analogy from here.

Translated with www.DeepL.com/Translator (free version)

ViewController

// becomeFirstResponder returns "NO" in "viewDidLoad".
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self becomeFirstResponder];
}

- (BOOL)canBecomeFirstResponder
{
    return YES;
}

- (UIEditingInteractionConfiguration)editingInteractionConfiguration
{
    return UIEditingInteractionConfigurationNone;
}



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

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