building_audio_plugin_ecosystem_on_Android.pdf
by
Atsushi Eno
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Androidに 楽器のエコシステムを作る atsushieno
Slide 2
Slide 2 text
Androidは音楽アプリ市場で立場が弱い モバイル = iOS みたいに思われている どうにかしたい Androidにいま足りないもの=「オーディオプラグイン」を作っている GitHub: atsushieno/aap-core
Slide 3
Slide 3 text
オーディオプラグイン is 何? InstrumentとEffect DAW (digital audio workstation): DTM (desktop music, 和製英語) の作業環境 オーディオプラグインは (主に) DAWでロードされる楽器
Slide 4
Slide 4 text
オーディオプラグインのしごと audio input -and/or- MIDI input を受け取って audio output (-and/or- MIDI output) を生成 (MIDI: 楽器演奏命令の規格 ) 楽器は演奏命令から音声を生成する エフェクターは音声を加工する オーディオプラグイン以前: MIDI楽器の時代
Slide 5
Slide 5 text
公開プラグインフォーマット プラグインAPI等を共通規格化すれば 好きなDAWで好きな楽器を使える ポピュラーなフォーマット: - VST 2, 3 (Win / Mac / Linux) - AudioUnit v2 (Mac), v3 (iOS / Mac) - LV2 (Linux / Mac / Win) 機能とAPIがそれぞれ異なる
Slide 6
Slide 6 text
iOSにもある…? AUv3プラグインがけっこうある
Slide 7
Slide 7 text
Androidは…? ¯\_(ツ)_/¯ DAWアプリはある (楽器は全部 in-app synths) プラグインフォーマットが無いので 自由に楽器を選べない(!)
Slide 8
Slide 8 text
Audio Plugins For Android to fill the gap ※まだまだ開発中
Slide 9
Slide 9 text
AAP ecosystem: current state of union ※まだ実用できるDAWはない
Slide 10
Slide 10 text
AAP APK Installer atsushieno/android-ci-package-installer on gitHub プラグインもDAWも全部別々のアプリで まだPlay Storeには出していない(不安定 / 多すぎ) GitHub releases / Actions artifactから DL & installする仕組みを作ってある
Slide 11
Slide 11 text
プラグインとホスト(DAW)はどこから? 全部GitHubにあるOSSで、特に以下のものが多い (C/C++): - JUCE: 複数のフォーマットをサポートするプラグイン開発ライブラリ - LV2: Linux上の代表的なプラグインフォーマット 運が良ければ小一時間で1本移植できる
Slide 12
Slide 12 text
モバイルの課題 #1: アプリケーション配布とプロセス分離 DAWとプラグインは別々の開発者が公開するもの デスクトップのようにはプラグインのネイティブコードをdlopen()できない… solution: DAWとプラグインをIPCで繋ぐ Service Binder IPC, NdkBinder (minSdk 29) Apple AUv3も同様(プロセス分離, IPC)
Slide 13
Slide 13 text
モバイルの課題 #2: GUI Androidアプリの一般的なGUI: Activityの切り替え デスクトップのようにはDAW上でプラグインのUIをダイアログ表示できない… solution: 1. DAW側のWebViewにWeb UIをロードし、 IPCでプラグインを操作 2. System Alert Window - 特別なパーミッションの下でViewを表示 (IMHO: UIはモバイル向けに作り直すべき)
Slide 14
Slide 14 text
モバイルの課題 #3: extension API (if time permits...) ● モダンなプラグインフォーマットのAPIは柔軟な拡張機構をもつ(AAPも) ● 拡張機能は誰でも定義可能(プラグインとDAWで実装されて初めて有用になる) ● 拡張機能には関数があるものだけど、ここでもIPCが必要 ● DAWとプラグインの開発者がIPCも実装するのは無駄に煩雑… solution: ● 拡張機能を定義した開発者がIPCの部分も実装する ● DAWとプラグインはそれぞれ拡張機能のIPCをAAPのAPIに沿って呼び出す
Slide 15
Slide 15 text
AAPのその他の特徴 MIDI 2.0ネイティブ: 32bit floatパラメーターをMIDI2で操作可能 Instrumentプラグインは仮想MIDIデバイスとして利用可能
Slide 16
Slide 16 text
Lastly... 世界最先端を行っているはずなので割と面白いと思います でもまだいろいろ足りないことだらけ 興味がある人がいたらぜひ一緒にやってください せんでん: Audio Plugins For Androidの設計と実装 @ M3 2023春 & 技術書典14(予定) Android Audio Devs Discord https://discord.gg/6AC3heft (英語)