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
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Facilitating Awesome Meetings
lara
50
6.1k
Designing Experiences People Love
moore
138
23k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.3k
BBQ
matthewcrist
85
9.4k
A designer walks into a library…
pauljervisheath
204
24k
Producing Creativity
orderedlist
PRO
341
39k
Bash Introduction
62gerente
608
210k
Testing 201, or: Great Expectations
jmmastey
40
7.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
66k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
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 (英語)