5月、GW初頭から風邪で寝込んだり、来月のKotlinFestの登壇に向けて調べ物をしたり、AOSPの中身をいろいろ調査する副業が始まったり(無職なのに!)、参加申込すら受け付けていなかったio2024を遠巻きに眺めたり、技術書典16に出展したりと、何やら目まぐるしく過ごしているうちに月末になってしまいました。そんなわけで(?)更新がほぼ無です。
aap-juce GUI experiment
AAPの現時点で一番なんとかしたい課題は、aap-juceプラグインのGUIを使えるようになりたい、という問題です。これはほぼJUCE on Androidの問題です。どんな問題があるかというと…
- そもそもオーディオプラグインプロジェクトとしてビルドできない(Standaloneアプリケーションとしてビルドしている)
AndroidManifest.xml
で自分のActivityを指定していてもなぜかJUCEのActivityが起動してしまう- さまざまなUIウィンドウがまともに動作しない(たとえば、閉じるとアプリケーションがクラッシュする)
数え上げだしたらキリがないのですが、絶対に片付けないといけない課題を片付けていくしかないところです。
今月はAndroidManifest.xml
で任意のActivityを指定できない問題を片付けました。これは、JUCE on Androidのjuce_gui_basics
のComponent::addToDesktop()
の実装がUIを常にWindowManagerで取得した現在のWindowの上に自身のViewをaddContentView()
で追加してしまっているせいでした。自分のActivityを指定していてもJUCEのランタイムが強制的に自身のActivityに切り替えていた、というわけではなく、見かけ上JuceActivity
が動作しているように見えただけ、というわけです。
そもそもオーディオプラグインはGUIなしで動作するのが一般的(UIが表示されるのはDAWでユーザーが操作する時だけ)なわけですが、JUCE on Androidの場合、全てのJUCEアプリケーションで共通の初期化コードJUCE_initialiseJUCE()
がGUIまで初期化してしまうというのが、JuceActivityが常に表示される(ように見える)問題のもう一翼でした。AAPは一般的にService
として起動するので、JUCE_initialiseJUCE()
でUIを初期化しようとしても、そもそもアクセスできるWindowが存在せず、何も表示されません。
そんな感じでいろいろ問題がわかってきたので、JUCEの初期化処理に修正を加えて、aap-juceの実装でもjuce::AudioProcessor::createEditor()
が呼び出された時にAAPのクライアント側View
の内容として追加するようにしたら、プラグインUIとしてなんとか表示できるところまでは進みました。
View post on imgur.com
imgur.com
ただユーザーからの操作入力に対して全く反応しないので、それだけでも実用には耐えません。それと何やらJUCEホストではまだロードも出来ないようだし、2度表示しようとしたら失敗するし、まだいろいろ調べないといけなそうです。
コードの変更のやり方も、JuceActivityを完全に殺す方向性なので、このままaap-juceのmain
に突っ込むわけにはいかない(それをやると「このプラグインがAndroidでも動くんだ…!(Standaloneだけど)」というbaitとして機能しなくなってしまう)ので、まだgui-view-factory
ブランチの中に閉じています。
技術書典16出展
してきました。サークルブースに来てくださった方はありがとうございました。MIDI-CIの新刊が思いのほか売れて、印刷した分の半分以上がもう売れていることに気付いて、割と驚いています。MIDI 2.0のメッセージプロトコルなんてマニアックなトピックでよく売れてるな…??
今回はMIDI 2.0 UMPガイドブックが在庫切れの状態で参加することになったのですが、「MIDI-CIの本を読む前にUMPの本を読みたい」人が「でも紙版がない」という問題にぶつかってしまうことがわかり、これは失敗した…となってしまいました。UMP本を改訂するなら、MIDI-CI本と合わせて、実際のコーディングトピックも加筆して、普通に商業本として売れるレベルまで持っていきたいですね(!?)
今回も採算度外視で新刊を出しているのですが、何の因果か同人誌経由で仕事がやってくる案件がいくつか発生していて(そんなことあるもんなんですねえ)、ネタがあるうちは続けておこう…ってなりました。
って、なんかもう技術書典16終わったみたいな感じで書いてますが、実はオンラインはまだしばらく続いているので、こっちで書籍を買っていた/いる勢の方がいたらこちらから見て下さい。
6月の予定
6月も裏稼業がそれなりに忙しそうなのと、KotlinFestのネタの準備をしないといけないのとで、それなりに時間がなさそうです。KotlinFest、そろそろチケットが無くなりそうだとのことなので、もし興味のある方はお早めにどうぞ。
ちなみにトピックが「上級」扱いになっているんですが、これは内容が「ライブラリ開発」だとそうなる分類になっていたので選ばざるを得なかっただけでして、そんなにエッジィな話ができる予定はないです。有名ライブラリ開発者ってわけでもないし。まあ話すべきことを無難に話そうと思います(!?)
追記: タイミング悪いなあ…(