2月までずっと音楽制作…というしかないやつ…にかかりきりでだいぶフラストレーションがたまっていたのですが、それがひと区切りついたこともあって、3月は主にプログラムを書いて過ごしていました。長い間取り掛かっていたのが昨日終わったので、軽い気持ちでまとめていきます。
Xamarin.AndroidにAndroid Q APIサポートを追加
(長大なcommitコメントはわたしではなくリーダーがまとめたものですが)
今月上旬にAndroid Qのfirst previewが出ました。わたしがXamarin.Androidチームにいた時の暗黙的な仕事のひとつが新APIへの対応だったのですが、わたしが抜けた後これに対応するメンバーがおらず、もともとcontract的な仕事として投げたいかも…実現できるかまだわからんけど…みたいに内々に言われたりしていました。ただわたしのほうは、まあそんな必要ないんじゃないかなー、だってこんなの1日2日あれば終わるでしょ…みたいな気持ちだったので、ちょうど暇になったこともあって手を出してみたら、案の定1日でほぼ終わってしまいました。(まあ経験があるから1日で済んだっていう話はありますが。)
そんなわけで「5月頃はもしかしたら受託で仕事しているかもしれないなー」などと言っていたのですがそれも発生する予定がなくなったので、仕事探し(?)が気楽にできるようになった感じです。
Fluidsynth for Android (OpenSLES/Oboe)
ここはてなも含め各所で何度か言及しているのですが、FluidsynthにAndroidのオーディオドライバー実装を追加したブランチを開発してメンテしていたやつが、ようやくupstream masterにマージされました。Fluidsynth、Android上で動くコードはあったのですが、何も音が出ないダミードライバーしか無くてほとんど意味がなかったのが、これでちゃんと音が出るようになりました。Fluidsynth 2.1の目玉機能のひとつとしてリリースされることになると思います。
VolcanoMobileなど独自にFluidsynthに手を加えてGoogle Play上で公開されているものもあるのですが、Androidドライバ部分のソースコードが非公開で(これLGPLには準拠していないってことなんですが、個別に許諾もらっているのかなぁ…)、ちゃんとOSSとして使えるコードが無かったので、これでまたひとつAndroidの音楽ソフトウェアの可能性を広げられたかな、と思っています。ちゃんとしたソフトシンセがほしい、という時に使ってやってください。
glibのビルドのために使っているcerberoが、Android NDKに変更が生じるたびに追従できなくなったり、手元のデスクトップ環境が変わるとビルドできなくなったりで、とにかくビルドが面倒だったやつです。仕事をやめてからようやく1週間単位で時間を割り当てられるようになって、それから整備して11月にpull requestを送って、でも今月までずっとCD制作で忙しくて先送りしていたやつのでした。
アプリケーションがproof of conceptであるfluidsynth-midi-serviceしかない状態で、実のところXamarin.AndroidのLinuxビルドが死んでいて*1、IDEも無い状態でXamarin.Androidを使い続けるのはデメリットしか無いので(あとAndroidの最先端に追従していきたいわたしとしては、いつまで経ってもXamarinにandroidxをサポートしていく姿勢が見えないのはリスクでしかない)、コレのMIDI基盤であるところのmanaged-midiをひと通りKotlin化してPoCもKotlinでfluidsynth-midi-service-jとして作成しようと思っています。
あとfluidsynthと直接は関係ないところで、google/Oboeをshared libraryとしてビルドして使いたかったので、またone linerパッチを作って取り込んでもらいました。Oboeはカジュアルに変更を取り込んでくれるので支援しがいがありますね。*2
その他のコーディングとか
今月は2つ外向けにそれなりにでかいのがあったので外向けのやつがメインの話になってしまいましたが、自分のリポジトリだとmanaged-midiに設計思想メモを書いているのはそれなりに意味があるかなと思っています。MIDI playerをどう実装するかとか、割と試行錯誤感あるので。
他にもJUCEで遊んだりTracktionで遊んだりとかしているのですが、まだ特にアウトプットがあるわけでもないです。
いつもならこの時期はたぶん技術書を書く作業で死んでいたのですが、今回はそれがないので*3、たいへんゆとっています。雑に仕事を探したりとかするかもしれませんが、基本的には次の制作に向けて、開発環境を構築していくつもりです。(制作?開発?)