Upgrade to Pro — share decks privately, control downloads, hide ads and more …

building_audio_plugin_ecosystem_on_Android.pdf

Atsushi Eno
April 20, 2023
780

 building_audio_plugin_ecosystem_on_Android.pdf

slides for my 15 min. LT at shibuya.apk #41 (2023/4/21)

Atsushi Eno

April 20, 2023
Tweet

Transcript

  1. Androidに
    楽器のエコシステムを作る
    atsushieno

    View Slide

  2. Androidは音楽アプリ市場で立場が弱い
    モバイル = iOS みたいに思われている
    どうにかしたい
    Androidにいま足りないもの=「オーディオプラグイン」を作っている
    GitHub: atsushieno/aap-core

    View Slide

  3. オーディオプラグイン is 何?
    InstrumentとEffect
    DAW (digital audio workstation):
    DTM (desktop music, 和製英語)
    の作業環境
    オーディオプラグインは
    (主に) DAWでロードされる楽器

    View Slide

  4. オーディオプラグインのしごと
    audio input -and/or- MIDI input を受け取って
    audio output (-and/or- MIDI output) を生成
    (MIDI: 楽器演奏命令の規格 )
    楽器は演奏命令から音声を生成する
    エフェクターは音声を加工する
    オーディオプラグイン以前: MIDI楽器の時代

    View Slide

  5. 公開プラグインフォーマット
    プラグインAPI等を共通規格化すれば
    好きなDAWで好きな楽器を使える
    ポピュラーなフォーマット:
    - VST 2, 3 (Win / Mac / Linux)
    - AudioUnit v2 (Mac),
    v3 (iOS / Mac)
    - LV2 (Linux / Mac / Win)
    機能とAPIがそれぞれ異なる

    View Slide

  6. iOSにもある…?
    AUv3プラグインがけっこうある

    View Slide

  7. Androidは…?
    ¯\_(ツ)_/¯
    DAWアプリはある
    (楽器は全部 in-app synths)
    プラグインフォーマットが無いので
    自由に楽器を選べない(!)

    View Slide

  8. Audio Plugins For Android to fill the gap
    ※まだまだ開発中

    View Slide

  9. AAP ecosystem: current state of union
    ※まだ実用できるDAWはない

    View Slide

  10. AAP APK Installer
    atsushieno/android-ci-package-installer on gitHub
    プラグインもDAWも全部別々のアプリで
    まだPlay Storeには出していない(不安定 / 多すぎ)
    GitHub releases / Actions artifactから
    DL & installする仕組みを作ってある

    View Slide

  11. プラグインとホスト(DAW)はどこから?
    全部GitHubにあるOSSで、特に以下のものが多い (C/C++):
    - JUCE: 複数のフォーマットをサポートするプラグイン開発ライブラリ
    - LV2: Linux上の代表的なプラグインフォーマット
    運が良ければ小一時間で1本移植できる

    View Slide

  12. モバイルの課題 #1: アプリケーション配布とプロセス分離
    DAWとプラグインは別々の開発者が公開するもの
    デスクトップのようにはプラグインのネイティブコードをdlopen()できない…
    solution: DAWとプラグインをIPCで繋ぐ
    Service Binder IPC, NdkBinder (minSdk 29)
    Apple AUv3も同様(プロセス分離, IPC)

    View Slide

  13. モバイルの課題 #2: GUI
    Androidアプリの一般的なGUI: Activityの切り替え
    デスクトップのようにはDAW上でプラグインのUIをダイアログ表示できない…
    solution:
    1. DAW側のWebViewにWeb UIをロードし、
    IPCでプラグインを操作
    2. System Alert Window -
    特別なパーミッションの下でViewを表示
    (IMHO: UIはモバイル向けに作り直すべき)

    View Slide

  14. モバイルの課題 #3: extension API (if time permits...)
    ● モダンなプラグインフォーマットのAPIは柔軟な拡張機構をもつ(AAPも)
    ● 拡張機能は誰でも定義可能(プラグインとDAWで実装されて初めて有用になる)
    ● 拡張機能には関数があるものだけど、ここでもIPCが必要
    ● DAWとプラグインの開発者がIPCも実装するのは無駄に煩雑…
    solution:
    ● 拡張機能を定義した開発者がIPCの部分も実装する
    ● DAWとプラグインはそれぞれ拡張機能のIPCをAAPのAPIに沿って呼び出す

    View Slide

  15. AAPのその他の特徴
    MIDI 2.0ネイティブ: 32bit floatパラメーターをMIDI2で操作可能
    Instrumentプラグインは仮想MIDIデバイスとして利用可能

    View Slide

  16. Lastly...
    世界最先端を行っているはずなので割と面白いと思います
    でもまだいろいろ足りないことだらけ
    興味がある人がいたらぜひ一緒にやってください
    せんでん:
    Audio Plugins For Androidの設計と実装 @ M3 2023春 & 技術書典14(予定)
    Android Audio Devs Discord https://discord.gg/6AC3heft (英語)

    View Slide