音が出てUIが動くそれっぽい動画が作れたけどUIイベントにはやっぱり反応しない。まあ最初の描画以降もUIループは動作していることはわかった。 https://imgur.com/a/IvAM8Uq
DMX等オーディオ以外の入力をオーディオに合わせて処理する仕組み、非オーディオ入力とオーディオ入力をセットで渡すようなオーディオ処理パイプラインがあれば同期処理はできるとして、プラグインフォーマットのレベルで語るならLV2ならControlPortを使えばいいんだけど、他のプラグインフォーマットにそういうのは無いからオーディオバスを使ってハックすることになるんだろうな。
AndroidのSpatializerなんかは特化した追加レイヤーを組み込んでいるようだけど、同様のレイヤーが複数存在するとパイプラインが重くなりそうだから、全部1つの追加レイヤーで処理できるべきなんだろうな
https://source.android.com/docs/core/audio/spatial
ふと思いついてgerritを探してみたら…あるじゃん https://android-review.googlesource.com/q/status:open+-is:wip+SCHED_DEADLINE
ただ2018年のWIPで放置されていてこれは事実上死んでるやつだ
夕方から出先で読み始めて雑に噛み砕いて寸評を書いて帰ってきたらこんな時間になってしまった https://www.researchgate.net/publication/331777130_Energy-Efficient_Low-latency_Audio_on_Android まだ何も実現できていないようだ
ここまでのまとめ:
- Androidプラグインの開発者はDAWとは別の「アプリ」としてPlay Storeに公開することになる(でなければ全部DAWの支配下で配布されることになる)
- Androidでは通常他のアプリの上に自分のアプリのUIを表示できない(UIハイジャックになる、セキュリティ上の問題)
- SurfaceControlViewHostを使うことでDAWからの「同意」の下で特別に表示できる
- JUCEプラグインはAndroidではStandaloneアプリとしてしか起動できない(そもそも起動できるようにする時点で改造が必要だった)
- JUCEコードが含まれるAndroidアプリではMainLauncherが乗っ取られる(ように見える)
- juceはApplicationとActivityの区別がついていない
- 単独のViewとして切り離して表示できるようなアプリケーション設計の改変が必要
果たしてこの日までにJUCE8出るかな(ライセンスまわりとかで揺れていそうな気がする) https://juce.connpass.com/event/319164/
JUCEのAUv3の実装を眺めていて、何でAUAudioUnitのクラスを動的に生成しているんだ…?ってなったのだけど、Objective-C++というかC++で書こうと思ったらこうなった、ってことか…??
https://github.com/juce-framework/JUCE/blob/4f43011b96eb0636104cb3e433894cda98243626/modules/juce_audio_plugin_client/juce_audio_plugin_client_AUv3.mm#L744
(This is my Japanese timeline. atsushieno@g0v.social for English)
music software tools enthusiast. Audio Plugins For Android, Linux, MML, MIDI 1.0/2.0.
old posts are at https://mastodon.cloud/@atsushieno