Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
building_audio_plugin_ecosystem_on_Android.pdf
Search
Atsushi Eno
April 20, 2023
0
1.1k
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
Share
More Decks by Atsushi Eno
See All by Atsushi Eno
[COSCUP2024] Catching up Trends in Audio App Development
atsushieno
0
510
Building Kotlin Multiplatform Libraries in 2024
atsushieno
0
3.5k
Kotlin Multiplatformで MIDI 1.0/2.0 ライブラリを作っている話
atsushieno
1
660
get updated to the latest realtime audio processings knowledge base (2023) (再履修: 2023年までの リアルタイムオーディオ処理)
atsushieno
1
1.1k
learning how DAWs work, with Zrythm
atsushieno
0
1.1k
What for, Where and How to Adopt MIDI 2.0
atsushieno
0
1.2k
audio plugin format study meetup 2022.7.6 (JP)
atsushieno
0
1.7k
CLAPオーディオプラグイン is 何?
atsushieno
1
1.3k
MML to MIDI 2.0 to DAW
atsushieno
1
2.1k
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
51
7.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
Unsuck your backbone
ammeep
669
57k
YesSQL, Process and Tooling at Scale
rocio
169
14k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Automating Front-end Workflow
addyosmani
1366
200k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
A Tale of Four Properties
chriscoyier
157
23k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
GraphQLとの向き合い方2022年版
quramy
44
13k
Transcript
Androidに 楽器のエコシステムを作る atsushieno
Androidは音楽アプリ市場で立場が弱い モバイル = iOS みたいに思われている どうにかしたい Androidにいま足りないもの=「オーディオプラグイン」を作っている GitHub: atsushieno/aap-core
オーディオプラグイン is 何? InstrumentとEffect DAW (digital audio workstation): DTM (desktop
music, 和製英語) の作業環境 オーディオプラグインは (主に) DAWでロードされる楽器
オーディオプラグインのしごと audio input -and/or- MIDI input を受け取って audio output (-and/or-
MIDI output) を生成 (MIDI: 楽器演奏命令の規格 ) 楽器は演奏命令から音声を生成する エフェクターは音声を加工する オーディオプラグイン以前: MIDI楽器の時代
公開プラグインフォーマット プラグインAPI等を共通規格化すれば 好きなDAWで好きな楽器を使える ポピュラーなフォーマット: - VST 2, 3 (Win /
Mac / Linux) - AudioUnit v2 (Mac), v3 (iOS / Mac) - LV2 (Linux / Mac / Win) 機能とAPIがそれぞれ異なる
iOSにもある…? AUv3プラグインがけっこうある
Androidは…? ¯\_(ツ)_/¯ DAWアプリはある (楽器は全部 in-app synths) プラグインフォーマットが無いので 自由に楽器を選べない(!)
Audio Plugins For Android to fill the gap ※まだまだ開発中
AAP ecosystem: current state of union ※まだ実用できるDAWはない
AAP APK Installer atsushieno/android-ci-package-installer on gitHub プラグインもDAWも全部別々のアプリで まだPlay Storeには出していない(不安定 /
多すぎ) GitHub releases / Actions artifactから DL & installする仕組みを作ってある
プラグインとホスト(DAW)はどこから? 全部GitHubにあるOSSで、特に以下のものが多い (C/C++): - JUCE: 複数のフォーマットをサポートするプラグイン開発ライブラリ - LV2: Linux上の代表的なプラグインフォーマット 運が良ければ小一時間で1本移植できる
モバイルの課題 #1: アプリケーション配布とプロセス分離 DAWとプラグインは別々の開発者が公開するもの デスクトップのようにはプラグインのネイティブコードをdlopen()できない… solution: DAWとプラグインをIPCで繋ぐ Service Binder IPC,
NdkBinder (minSdk 29) Apple AUv3も同様(プロセス分離, IPC)
モバイルの課題 #2: GUI Androidアプリの一般的なGUI: Activityの切り替え デスクトップのようにはDAW上でプラグインのUIをダイアログ表示できない… solution: 1. DAW側のWebViewにWeb UIをロードし、
IPCでプラグインを操作 2. System Alert Window - 特別なパーミッションの下でViewを表示 (IMHO: UIはモバイル向けに作り直すべき)
モバイルの課題 #3: extension API (if time permits...) • モダンなプラグインフォーマットのAPIは柔軟な拡張機構をもつ(AAPも) •
拡張機能は誰でも定義可能(プラグインとDAWで実装されて初めて有用になる) • 拡張機能には関数があるものだけど、ここでもIPCが必要 • DAWとプラグインの開発者がIPCも実装するのは無駄に煩雑… solution: • 拡張機能を定義した開発者がIPCの部分も実装する • DAWとプラグインはそれぞれ拡張機能のIPCをAAPのAPIに沿って呼び出す
AAPのその他の特徴 MIDI 2.0ネイティブ: 32bit floatパラメーターをMIDI2で操作可能 Instrumentプラグインは仮想MIDIデバイスとして利用可能
Lastly... 世界最先端を行っているはずなので割と面白いと思います でもまだいろいろ足りないことだらけ 興味がある人がいたらぜひ一緒にやってください せんでん: Audio Plugins For Androidの設計と実装 @
M3 2023春 & 技術書典14(予定) Android Audio Devs Discord https://discord.gg/6AC3heft (英語)