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
2026年に相応しい 最先端プラグインホストの設計<del>と実装</del>
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Atsushi Eno
April 15, 2026
Technology
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2026年に相応しい 最先端プラグインホストの設計<del>と実装</del>
Music Tech Meetup 2026.04
Atsushi Eno
April 15, 2026
More Decks by Atsushi Eno
See All by Atsushi Eno
Android and Audio Plugins: State of Union
atsushieno
1
78
Can we build a DAW with Compose Multiplatform? Maybe!
atsushieno
0
7
Android Audio: Beyond Winning On It
atsushieno
0
6.4k
Can we build better music software ecosystems for more generative era?
atsushieno
0
790
Some Music Libraries for Kotlin (with some .NET -> Kotlin migration stories)
atsushieno
0
750
Building App Extensions equivalents on Android (maybe?)
atsushieno
1
930
Taking trends in music app development into the future mobile ecosystem
atsushieno
0
890
DTM entry level hands-on
atsushieno
0
770
[COSCUP2024] Catching up Trends in Audio App Development
atsushieno
0
940
Other Decks in Technology
See All in Technology
RSA暗号を手計算したくなること、ありますよね?? (20260615_orestudy6_rsa)
thousanda
0
440
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
120
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
7
1.9k
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
670
GitHub Copilot 最新アップデート – 「一歩先」の実践活用術
moulongzhang
4
860
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
250
【NRUG vol.18】KubernetesにおけるNew Relicデータ取得量削減の考え方
nrug_member
0
120
200個のGitHubリポジトリを横断調査したかった
icck
0
130
Bedrock AgentCore RuntimeでAuth0 Changelog調査AIをアップグレードした話
t5u8a5a
1
160
【セミナー資料】Claude Code をセキュアに使うための考え方と設定の勘どころ / Claude Code Webinar 20260616
masahirokawahara
2
350
AIのReact習熟度を測る
uhyo
2
590
あなたの知らないPDFのアクセシビリティ
lycorptech_jp
PRO
0
200
Featured
See All Featured
WCS-LA-2024
lcolladotor
0
630
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
240
Testing 201, or: Great Expectations
jmmastey
46
8.2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
330
Writing Fast Ruby
sferik
630
63k
Utilizing Notion as your number one productivity tool
mfonobong
4
320
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
400
How to Think Like a Performance Engineer
csswizardry
28
2.6k
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
Odyssey Design
rkendrick25
PRO
2
700
Transcript
2026年に相応しい 最先端プラグインホストの設計と実装 atsushieno
なぜ今DAWを作るのか • DAWを開発するコストは今かなり下がっていて、1人で開発するのも現実的 ◦ Tracktion Engine -or- ゼロから開発 ◦ AIコーディングによるエンジニアリングコストの低下
▪ 基本的な構成要素は生成できる ▪ 複雑なメモリ管理をほぼ丸投げできる / 修正させることができる ▪ AIは標準的な技術・枯れた技術を扱うのが得意 ◦ 誰もが「全部」やらなくても「実現」できる • DAW開発のタスクは今でも増えている…かも? ◦ AIサポート・自動トラックメイキング , x-plat展開(iOS, Web), MIDI 2.0デバイス対応
DAWの技術スタック(例) DAWモデル GUI オーディオエンジン シーケンス エディタ プラグインホスティング デバイスI/O オーディオ グラフ
プロジェクト データモデル cf. 2022-12-11 [音楽技術勉強会] Zrythm DAWから読み解くDAWの作り方 再生処理系
プラグインホスティング? JUCE AudioPluginHost
プラグインホストの基本的な役割 Scanning プラグインをスキャン してリストを管理する Instancing プラグインのインスタンス を生成・解放・管理する Process DAWのオーディオグラフと組み合わせて オーディオ処理
を実現する GUI DAWの操作に応じてGUI表示を制御する State ファイルのロードやセーブに合わせて 状態(State)を保存・復元する Params DAWの操作に応じてパラメーター 変更をプラグインに通知する DAWにプラグインからのパラメーター変更を通知する Presets DAWにプリセット のリストを渡し、ユーザー選択をプラグインに通知する
プラグインホストのもう少し高度な役割 • DSPスレッド/プロセスと他のスレッドの間でデータを受け渡す • 複数のプラグインのオーディオグラフを1オーディオサイクルで処理する • 複数トラックをリアルタイムの1オーディオサイクルで処理する • レイテンシーレポートを受け取って複数トラック間のオーディオ処理のズレを最小化 する
• トラックの追加・削除やノードグラフの編集はリアルタイムに行う
自作ホストUAPMDの試み
自作ホストUAPMDの試み • 動機 ◦ 仮想UMPデバイスを作れるようにしたい ◦ SMF2 Containerのようなフォーマットの楽曲データを普及させたい • プラグインホスティングライブラリ
◦ フルスタックオーディオプラグインホスト ◦ Desktop: VST3, AUv2, AUv3, LV2, CLAP | iOS: AUv3 | Web: WebCLAP | Android: AAP ◦ MIDI 2.0ネイティブ、sample-accurateなオーディオ処理 ◦ 分離プロセスで動作する高速プラグインスキャン ◦ いくつかのAPIの非同期化 (e.g. state API) - Web AudioWorklet上で使うために必要 • dogfooding ◦ リアルタイム オーディオグラフ(レイテンシー補償の PoC実装) ◦ 逐次処理可能なシーケンサー(非リアルタイムスレッドからのオーディオ /MIDIデータ供給) ◦ 組み込みJS API (QuickJS) とMCPエンドポイントを利用可能
技術スタック • choc - オーディオファイルI/O、GUIイベントループなど • miniaudio - Audio I/O
• libremidi - MIDI 2.0 I/O • ImGui + ImTimeline + ImNodes (DAG) ◦ まあまあ妥協 • demucs.cpp - 音声分離(インポート) • signalsmith-stretch - オーディオワープ(タイムストレッチ) • midicci - MIDI 2.0データ処理 (UMP + MIDI-CI) • 各種コンテナ: readerwriterqueue, concurrentqueue, farbot, ...
プラグインフォーマットのサポート • AU: AUv2とAUv3は別々に実装したほうがたぶん良い ◦ AUv3はmacOSで動けばiOSでも動く(!) ◦ AUv2を出しているところはたいがい VST3も出しているので、無くても OKかも(!?)
◦ プラグインのAUv2 bridgeはプリセットAPIなどをカバーしてくれない • CLAP: clap-helpersを使うべき。スレッドチェックなどが安全弁になる • WebCLAP: オーディオエンジンのプロセス分離と非同期State実装が必要 ◦ CLAPのasyncrhnous state saving/loadingは不要
Programmability (scripting, MCP) Full Scripting API for Cubase - The
AI Integration Gap Is Now a Competitive Threat - Steinberg Forum • MCPはAPIがあればどうとでもなる • APIが公開されていない機能は使えない • 一般的な機能・操作に特殊なskillsは不要 ◦ MIDI操作、音楽理論、プラグイン操作など • プラグインが公開しない情報は取得できない ◦ プリセットなど cf. オーディオプラグインホストにMCPを追加してみてわかったこと
Tracktion EngineでDAWを作るアプローチ • 低レベルはいじらない前提 ◦ no MIDI2, no sample accurate
stuff, slow scanner, no CLAP, no WebCLAP, no Android • DAWのGUIは自作する • juce_audio_plugin_clientのみ(no Tracktion)の場合 ◦ プラグインフォーマットサポートは丸投げできる ◦ マルチトラック編集は自作する ◦ オーディオグラフは自作する -or- Tracktion EngineからTracktion Graphだけ使い回す ◦ プロジェクトデータの読み書きは自作する
Thanks! Questions: later