9月の活動記録(2022)

9月がいつの間にか過ぎていました(忘れてた)。9月はまだ半分以上台湾で過ごしていたんですよね。いつの間にかすっかり日本で落ち着いてしまいました。9月は表立った活動としては技術書を2冊書いたのが主だったところです。

CLAPオーディオプラグイン開発者ガイド

9月には技術書典13がありました。経験上「最終日に新刊が出ていれば大丈夫間に合う」という見込みで8月には何を出すかも決めていなかったのですが、9月になってさすがに何も計画が立っていないのはヤバい…ということで、いくつか候補を考えましたが、まず着実に書けそうなものを具体的に書き進めることにしました。その1冊目がCLAPです。

techbookfest.org

書き終わってから、サークル名を「オーディオプラグイン研究所」に変更していたことを思い出したのですが(!?)、結果的には完全にサークル名にふさわしいトピックになったと思います。なお9/11のオフライン開催には参加していません。台湾にいたし。

一方で、内容についてはだいぶ荒削りで、特に拡張機能まわりはここに以前書いた文章をそのまま使いまわしている部分も多いです。今回の執筆には、(コピペに手を加えた部分がそれなりに多いので)1週間くらいしかかかっておらず、途中から「なんだか初日に間に合いそうだしこのまま出せるスピードで初版を出しちゃえ」というノリになっていた側面はあります。実際、技術書典13の初日(9/10)には間に合いました。

今回は同人誌を「書き上げた」というよりは、開発に必要・有用そうな自分の過去記事を断片的に繋いでまとめた感じです。本当は30ページもいけば十分だと思っていたのですが、それで結果的に50ページ弱ものボリュームになりました。同人誌を完成させる作業のうちそれなりに悩ませられる要素である表紙のデザインについては、過去にLV2開発者ガイドを書いていたやつを色違いにして出すというやっつけ仕事で済ませました(!) 成り立ちがそんな感じですし、同人誌のちまちました収益に期待するよりは広く読んでもらったほうがいいだろうと考えて(仮に1冊1000円で100冊売れても10万円の売上にしかならんですし、現実には10冊売れるかどうかというレベルだと思います。トピックがCLAPだぞ??)、今回は無料配布しています。(前作「MML to MIDI 2.0」の本も実用性はほぼゼロの自由研究レベルだったので500円にしましたが、それと比較したら1000円でもよかったかも…?)

ついでにGitHubリポジトリも公開していますが、これは改訂版の作業を完了できたら有料販売のために閉じるかもしれません。

Linux DTMガイドブック

CLAP開発者ガイドブックは無難に書けるものを書いた(新刊として出せる安牌のネタを拾った)だけでしたが、別口でLinuxユーザー向けに「LinuxでもDTMはそんなに難しくない…!」って言えるような、DTMソフトをあれこれ紹介する本を出したいとは前々から思っていたところでした。サウンド系のコミュニティでそんな話が出てきたので、じゃあ書けそうな機運があるうちに1冊作っておこうと思って、CLAP本を出して落ち着いた後で、カジュアルに書き始めました。今度こそ技術書典最終日(9/25)が最終締切のやつ…!

techbookfest.org

最初はほぼ「Linuxで動くソフト」の紹介本のつもりで、一方で自分が特にプラグイン側の説明を滔々と書けるほどのトラックメイカーではないので(一方でDAW開発者でもプラグイン開発者でもないし、自分の立ち位置が何なのか今でもよくわからない)、大半がテキスト数行の紹介 + スクショで済むだろうと雑に目論んでいました。が、実際にDAWの使用感を説明しようと思ったらALSAやJACKをどう制御するかを全く説明しなかったら、多分DAWを全く使えないし、Wine経由でWindows用のプラグインを使える技術についても言及しておくべきだし…という感じでyabridgeの紹介を書いたり、そのために動作検証したり…といった感じで、作業量と内容が膨らんでいったところがあり、最終的にはソフトの紹介は半分ちょっとくらいになったんじゃないかと思います(数えてない)。

あと、この本のベースになった構想は草稿レベルでいくつか貯まっていて、最終的にこの本にまとめる時間がなかったネタとして「サウンドフォントやサンプラーの類をいろいろ紹介していく」などがあります。これもCLAP本と同じような感じで「最終的な完成版は改めて出す」ことにして、今回は無料で配布しています。技術書典主催の🐑も「これが無料なのはありえん」って感じで紹介してくれていましたが、ちょっとサービスしすぎたかも…まあ、仮に売れたとしても利益はせいぜい5桁なので、それよりは読まれてくれたほうがいいです。完成版は運が良ければM3 2022秋に間に合うかもしれません。

ちなみにこちらの本は技術書典13では最後の4日間だけ配布というかたちになってしまったわけですが(予定通りではある)、CLAP本は150件くらい、Linux DTM本は200件くらいダウンロードされており、トピック的にLinuxのほうが面白かったようです。CLAPが面白いって言える音楽技術関係者やプログラマーは多くないはずなので、これはまあ予想されてしかるべきところですね。

MidiPlayerのMIDI 2.0サポート用のMIDI-CI実装

8月はAAPでプラグインのサンプルクライアントを書き換えたいという話を書きましたが、そのためには現状の決め打ちのMIDI入力・オーディオ入力を渡すだけでなく任意のMIDIシーケンスを演奏できるようにしたほうが後々テストが楽になります。そのため、ktmidiのMidiPlayerを取り込んで演奏できるようにしたいと考えました。

ただ、ktmidiの特にMidi2Playerは、実際に演奏できるMIDI出力デバイスが存在しないため、実装の動作確認が何も出来ていない状態でした。Midi2Playerがきちんと動作するか確認するためには、デスクトップではMIDI2のUMPストリームからMIDI1のバイトストリームに変換して(8月にここで書いたやつです)、それを直接MidiOutputに出力するモードが必要で、その辺を実装したりしていました。AndroidではAAPのMidiDeviceServiceに垂れ流せば済むのですが、デスクトップで動作確認してからのほうが楽です。

Midi2Playerの動作確認に有用なのはMIDIプレイヤーアプリの実装なのですが、実はmanaged-midiから移行できていない最後のひとつがMIDIプレイヤーxmdspで、これをMidiPlayer基盤の動作確認が必要なレベルで作り始めるのはちとチャレンジングすぎます。そういうわけでコンソールプレイヤーのサンプルを追加したり、そのためにKotlin Multiplatformのプロジェクト構成を見直したり、あとMaven Centralへのパッケージ発行で罠にハマって(新バージョンのreleaseが失敗してもこちらに何も報告されない問題とか…)問い合わせで数日使ったり、あとサンプルデータを生成するためにmugene-ng(MMLコンパイラ)のリポジトリをビルドし直そうとして、むしろビルドを通すためのリグレッションに追われたりなど、地味な作業が進んでいるところです。

ktmidiのこれまでのMIDI2サポートは、基本的にMIDI-CIで調整された後のストリームの送受信を前提としていたり、あるいはMIDI-CIのSet New Protocolメッセージを盲目的に受信して切り替えられるようにしていましたが、本来ならそこにMIDI-CIにおけるsource/destination MUIDのチェックやTest New Protocolのやり取りが必要なわけで、その辺も実装しておかないと他のMIDI 2.0システムとの相互運用は難しいところでしょう。これは先月たまたま発見したのですが、ALSAでもMIDI 2.0サポートに目が向き始めている様子があるので、MIDI-CIも少し整備しておきたいところです。そういうわけで、MIDI-CIのプロトコルに基づく状態管理に使えるクラスを作ったりしていました。ただ、まだプリミティブな実装になっていて、同じMIDI-CIを実装しているAppleのCoreMIDIのAPIと比べると使いにくいです。HTTP/3をリクエスト/レスポンス別々にユーザーが扱わなければならないような状態なので、たぶんKotlinのsuspendを使った非同期APIにすると思います。

作っていて気付いたのですが、MIDI 2.0における3つのPと言われているやつのひとつProperty Exchangeは、最新のCoreMIDIでもサポートされていませんでした。JSONを使ってプロパティをやり取りするやつで、これをサポートするにはJSONリアライザーを統合しなければならないわけですが、その辺でどういうAPIにするのが適切なのか、たぶんAppleも決めあぐねているところがあるのでしょう。わたしにもいいアイディアが無いというか現状そこまで考えるメリットがなさすぎるので(この仕様もしかしたらGeneral MIDI 2みたいに使われずに死ぬんじゃない?くらいの印象)、とりあえず様子見です。

10月の予定

9月末からずっとゲームばかりやっていて忙しくて他のことに手を付けていられず、今週もDroidKaigiオフラインを眺めに行く予定なので、まだ見通しが立たないところですが、9月の積み残しのMidi2Playerを片付けて、それをもとに8月の積み残しのAndroidプラグインクライアントを片付けて、あと↑の同人誌の穴埋めが出来たらM3 2022秋に少数部でも紙版とか持っていきたいところではあります。最近の新刊はずっと電子版ばかりでカタログ上の存在しかなかったので、ちょっとグッズを持っていきたい気持ちがあるんですよね。個人的にはもう紙版と電子版があったら後者しか買っていないのですが。まあそんな感じです。