JUCEでVSTプラグインを作ってKVRに載せてもらった

プログラミング

 この春、遅ればせながら、JUCEがWinRT MIDI/UWP MIDIをサポートしているというのを知った。そこで、いろいろなアイデアがわき、勉強をはじめ2ヶ月ほどでなんとかVSTプラグインのリリースにいたった。でもって、VSTプラグインの情報サイトとして有名なKVRにも載せてもらうことができた。そんな話。

掲載当時のJUCEのトップページ。自己申告ではあるが、けっこう感動した。

 いつまでたってもWindows 10のBluetooth MIDI対応が進まない。マイクロソフトは、OSとしてはサポートしていると言っているが、DAWのメーカーがついてこない。唯一対応しているのは、SONARあらためCakewalkのみだ。

 マイクロソフトがBluetooth MIDI対応を表明したのが、2016年の9月。それを2ヶ月後くらいに知って、UWPの勉強を始め、MIDIberryをリリースしたのが、2016年の年末。それからゆっくりではあるが、ちょっとずつ機能を拡張していった。2018年頃にはスタートアップを中心とした海外のMIDIデバイスのハードウェアメーカーが、Windowsで自社アイテムを使用するためのドキュメントでMIDIberryを紹介する機会が増えてきた。さらに2019年には、海外のハードウェアメーカーから当方へ問い合わせが来たりするようになった。

 MIDIberryはBluetooth MIDIの入出力ができるのだが、MIDIポートを作成する機能はない。そこで、既存の「loopMIDI」などのバーチャルMIDIポートソフトウェアと同時に使用するというのが、基本的な使い方だ。ユーザーの中には、MIDIberryが標準でサポートするGS Wavetable Synthesizerを使って簡易的にBluetooth MIDIデバイスでリアルタイム演奏できる環境として使っている人もいるようなのだけど、それは少数派だと思われる。

 で、MIDIberryのユーザーからの要望で多かったのが、loopMIDIなしでなんとかできないかというもの。操作が面倒というのもあるのだろう。それは、loopMIDIを常駐させることで手間は半分になるのだが、そこまでする人は少ないらしい。

 また、MIDIberryとloopMIDI、二つのソフトを経由するので、レイテンシーが増大していないか? という心配をする人達もいたが、loopMIDIはたいへん優秀なので、これがボトルネックになることはないと思われる。MIDIberryがボトルネックになるような気もするが、最近のPCならプログラム自体が問題にはならないと思っている。どちらかといえば、Windows 10がアップデートのたびに、レイテンシーが増大したり、つながらなくなったりすることのほうが問題だと思っている。

 そうは言っても、状況は変わらない。Bluetooth MIDI対応のデバイスをリリースしても、Windows対応をうたうメーカーは増えていない。別の方法はないか? ということで、考えたのが、VSTプラグインを使う方法だ。

 最初に考えた方法ではうまくいかなかったので(詳細はまたいつか)、結果的にはUWPアプリとVSTプラグインの両方を使うことで、loopMIDIを使わないという目的が達成された。

 JUCEに関しては、日本語の情報が少ないという話を見つけたが、そう書いている人たちが、qiitaをはじめさまざまなドキュメントを公開していたので、それをとっかかりに勉強を開始。あとは、JUCE公式のドキュメントにあるサンプルを片っ端から試し、それでもやっぱりわからずにフォーラムを検索しまくって、なんとか作成までたどりつけた。C/C++はほぼ未経験だったんですが。みなさん、ありがとうございました。

 完成したら、あとは宣伝。フォロワーが少ない私のツイッターは宣伝媒体としては役に立たないことはわかっていた。そこで、たどりついたのがKVR。Web MIDI/Web Audio API関連で参考にさせてもらっているg200kgさんの投稿。

 KVRの歩き方

 英語には自信がなかったのだけど、自己申告制だということなんで、これを読んでなんとかなるだろうと登録。Google翻訳を駆使しながら、ドキュメントを仕上げてニュースを投稿。g200kgさんによれば、つたない英語でも修正してくれる、ということだったのだけど、ほんとにうまいこと直してくれてちょっと感動した。

 そんなこんなで掲載されたのが、これ。

 BTberry – adds Bluetooth MIDI support to Windows DAW via VST plugin

 6月23日に登録して、24日には掲載。とりあえず、KVRへの掲載までたどり着けたので、満足。なんでもやってみるもんだなあ、と思いましたよ。

 作成したVSTプラグイン「BTberry」およびBluetooth MIDIを受信してVSTプラグインにMIDIデータを送るUWPアプリ「BTberry Sender」のデモが以下。

BTberry demo / Bluetooth MIDI VST plugin and app

 CubaseとAbleton Live用のチュートリアル(設定手順紹介)ビデオは以下。

BTberry Cubase Tutorial
BTberry Ableton Live Tutorial

 JUCEの仕様だと思うんだけど、Ableton Liveでは、ノートオン/ノートオフ以外のデータは受け付けない模様。せめてCCとピッチベンドくらいは受けてほしいんですが。このへんは今後の課題ということで。

 現時点でサポートしているのは、Quicco Sound mi.1とYAMAHA MD-BT-01、UD-BT01、ROLLI Lightpad Blockのみ。所有しているデバイスで確認がとれたもののみ。なんでもOKということにすると、サポートが面倒そうなので。デバイスを検出しても、アプリ側で列挙しないようにした。

 Bluetooth MIDIデバイスならみんな同じじゃないの? と思うかもしれないが、私が持っているデバイスの中にはRoland A-01のようにうまくいかないものもある(毎回ペアリングし直しが必要、つながったと思っても入力だけがこない、何回かペアリングし直すことでなんとか入力も可能になる。そんな感じなので、サポート対象外)。

 Windows 10の大型アップデートのたびに状況が変わるということもある。上記4つのデバイスは、これまで比較的安定して動いている。Quicco SoundとYAMAHAの3つについては、マイクロソフトでBLE-MIDIまわりを担当しているらしいPete Brownも安定していると言っていた。

 とは言っても、Windows 10 May 2020 Upadateでは、 そのQuicco SoundとYAMAHAの3つが、ペアリングすらできないという状態になっている。こういうことがあるから、楽器メーカーもWindowsに対応したくないんだろうなあ、と思うのだけど。仕方ないので、サポートページには、「アップデートしないでください」と書いておいた。

  May 2020 Upadateは、まだ初期リリースということなんで、もう少し生暖かい目で見ていきたいと思っています。状況が変わったら、またここに書いていきたいと思います。いつものようにとりとめない感じで終わり。

コメント