3月になって、これまでほど開発に集中はできなくなってきましたが、原稿の進捗を犠牲にしてコードを作り出し続けています(時候の挨拶)。やべーなどうすんべかな…
Music Tech Meetup (音楽技術勉強会) 2026.04の開催
2020年2月上旬に1回開催して以来やっていなかった音楽技術勉強会を、4月15日(水)に渋谷CRIミドルウェア社のオフィススペースをありがたくお借りして開催します。
https://music-tech.connpass.com/event/388526/music-tech.connpass.com
今回は主に、オーディオプログラミング言語mimiumの開発について、開発者である松浦知也さんに30分ほど(仮)解説していただきます。 mimiumはDSPの設計・試行をインスタントに実行できる環境と合わせて作られていて、LLVMでネイティブコードにコンパイルして実行できる一方で、バージョン3.0では静的コンパイルと合わせて実行時の変更コストを下げてライブコーディングにも利用できるといえるものに進化しているようです(自分はmimiumの歴史を詳しく把握していないのでこんな書き方になってしまいますが)。Webで実行できるデモなどもあるので試してみてください。
オーディオプログラミング言語がどういうものか知りたい人はオーディオプログラミング言語Advent Calendar 2020を読むのが良いでしょう(6年前なのでさすがに最近流行りのStrudelとかは入っていませんが)。ライブコーディング環境の実現というのはWebやモバイルでhot reloadingなどを実現する技術とも近く、プログラミング言語クラスタ(?)向けの内容ともいえるかもしれません(当日そういうお話が出てくることはお約束できません)。
もう1本のセッションでは、atsushienoがモダンなDAWプラグインホストの設計と実装と称してUAPMDの話をちょっとします。10分に削ってしまったのでだいぶ端折った内容になるとは思いますが、ここ1年くらいでAIコーディングエージェントの普及とともに増えてきた自作DAW勢の動向に合わせて、そういう開発をやってみたい人向けの話が出来たらと思っています。
以前からオーディオ開発者クラスタの人たちと顔合わせする度にオフライン勉強会やりたいねえみたいな話になっていたのですが、時間的余裕(あるいは機運)・開催できる場所・セッションをお願いできるひと、の3つが揃わずじまいでした。
あと6年前にはTwitterが存在していて、あそこにはそれなりにfollowersがいたので、そこで宣伝すると人に来てもらえたけど、今はもう亡くなったのでbskyとmastodonだけで拡散するかなあ、と思いましたが、蓋を開けてみるとありがたいことに募集開始から1日で定員の半分が埋まり、翌日さらにごく一部のコミュニティDiscordで宣伝したら2/3くらい埋まったので、もう完全にこれで十分な時代になったことが分かってよかったです。
(Twitterを使っていた当時のtweetsはnotestockにインポートした後は全部消してあるので、atsushienoが何か書いていなかったっけ…と思った時はこちらから検索してみてください。)
その他のお知らせ
4月には12日に技術書典20、26日にM3 2026春があるのですが、新刊の目処はまだ立っていません(!) UAPMDの開発体験をもとに原稿が書き溜められつつあるのが実を結べば何とか、という感じです。MIDI 2.0プログラミングの本にはならなそうです。思ったよりwinmidiとlibremidiの相性というか進展がいまいちで、現在でも仮想デバイスの作成が出来ない(あるいはそこに接続できない)状態が続いているようです。何かしら出すとは思うので生暖かく見守っていただければと思います(Music Tech Meetupの準備もしないといけないので割と無理筋かもしれない)
UAPMD 0.3.0 + 0.3.1
残りはUAPMD開発記録です。今月は0.3.0と0.3.1という2つのリリースが公開されることになりました。特に0.3.1の進化が激しく、とても0.0.1しか上がらないリリースに収めるような内容ではないのですが、まあまだ初期ということで…
今月も変更点を列挙するのでいっぱいいっぱいでした。それ以上のことは、今月はzennに記事を3本も上げているので、そちらを見てください(以下で随時リンクしています)。ちなみにmidicciにもLinuxまわりで多少修正がありましたが、多数の変更点は無いので省略します。
UAPMD 0.3.0
- Demucsを使ってオーディオファイルをSTEM分割してトラックを分けてインポートできるようにしました(リリースビルドにしないと遅くて話にならないので、ソースからビルドして試す時は注意してください)
- オーディオとMIDI 2.0のマルチトラックのクリップ再生機能を活用するために、オフラインレンダリングの機能を実装して、uapmd-applyというRenderManのようなツールを追加しました(remidy-applyというものが存在していたのですが、これを作り直したものです)
- Android、iOS、Webブラウザでファイル選択できるようなdocument pickerを作って、uapmd-appからファイルをロード/セーブするときにportable-file-dialogsの代わりに使うことにしました
- Windows上のVST3プラグインの挙動が、先月はかなり不安定だったのですが、今月はもう動作しない既知のプラグインが存在しない程度に安定しました
- Android上でAAPがGUIも含めて使えるようになりました(ただし未リリースのAAP 0.9.4に依存)。史上最も安定している実用的な(?)AAPのホストといえます
- オーディオエンジンの有効・無効を切り替えられるようになりました
- VST3とCLAPのプラグインでMIDI2クリップを演奏できなかった問題を解決しました
UAPMD 0.3.1
- ピアノロールエディタをやっつけ実装で追加しました(シーケンサー機能の確認のために作られたもので、実用性はそんなに無いです)
- MIDI2クリップのイベントリストが編集可能になりました
- プラグインスキャナーを完全に作り直しました
- リモートプロセスでスキャンできるようになりました(これについては今月書いた記事1が詳しいです)
- ブロックリストとタイムアウトが実装されました(タイムアウトはリモートプロセスが無いと実現できず、ブロックリストもリモートスキャンやタイムアウト検出が無いとあまり意味がなかったやつです)
- プラグインスキャンのAPIが非同期になりました
- 新たにuapmd-scanというツールを追加しました(remidy-scanというものが存在していたのですが、これを作り直したものです)
- 以前から存在していたスクリプティングの機能を、ローカルHTTPサーバー経由で操作できるようにしました
- MCPサーバーを追加しました(これについては今月書いた記事2が詳しいです)
- シーケンサーエンジンのオーディオグラフがリアルタイム処理前提のAPIになり、Web AudioのAudioWorkletで使えるようになりました
- シーケンサーがファイルをロードする部分とリアルタイムでオーディオグラフを処理するオーディオエンジンが切り分けられ、シーケンサー側はメッセージポンプでオーディオ処理より長いサイクルで非同期的にデータを準備するようになりました
- MIDI 2.0仮想デバイスのFunction Blockを登録する機能をuapmdのコア部分から切り離しました
- Web環境で動作するWebCLAPに対応しました
- WebCLAP対応のために、状態(State)の操作などを非同期API化しました(これについては今月書いた記事3が詳しいです)
- WebCLAP GUI対応のために、remidy-guiにWeb用のContainerWindowの実装を追加しました
- APIドキュメントとWebAssemblyビルドの最新版を https://atsushieno.github.io/uapmd/ にホストするようにしました
0.3.1をリリースしたのはつい数日前ですが、その後は現在進行形でレイテンシーレポート対応の実装が進んでいます。まだDAGのサポートもしていない段階で進めているのですが、すでにだいぶ複雑な機能です。
来月の予定(?)
6月初頭に開催されるADC Japan 2026ですが、一応CFPに応募したAndroidネタが採択されました。なので4月以降はそっち方面の開発が進む公算が高いです。UAPMDでAAPをサポートしたマルチトラックシーケンサーのようなものが実現できているので、何とか意味のあるものにしていきたいですね。