emagic emi2|6 firmware loader for WinUSB

かつて、Logic等の音楽制作ソフトを手がけていたemagicという会社がありました。 会社は2002年にアップルに買収され、LogicはLogic Proとして、現在もアップルが販売しています。 emagic社はいくつかのハードウェアも販売していましたが、そのひとつにemi 2|6というオーディオインターフェースがありました。
音質とか性能の話はおいておいて、このデバイスはUSB経由でファームウェアを読み込ませる事でUSB audio class compliantなデバイスとして動作します。 Linuxではドライバはただのfirmware loaderであり、ファームウェア読み込み後は標準のオーディオドライバで動作しています。 また、このデバイスはACアダプタからの電源供給も可能で、その場合、ファームウェア読み込み後は電源が切れるまでUSB audio class compliantなデバイスとして振る舞います。
Windowsへの対応については、メーカーがアップルに買収された事もあり、以降は新たな環境向けのドライバなどは提供されませんでした。 ただし、初期化さえ済ましてしまえば現在のWindowsでも動作は可能です。 そこで、現行のWindowsで動作するfirmware loaderを書いてみました。
ファームウェアを用意したり、デバイスをWinUSBデバイスとして認識させる等の準備は必要ですが、ドライバでは無くWinUSBクライアントにすることで、ドライバのインストールに署名が必要になる等の問題を回避しています。 使い方はリポジトリのREADMEを参照してください。
ちなみに、元になったLinuxのコードを見ていると、emi 6|2mのfirmware loaderもほぼ同様のロジックのようです。
2026/09/28 追記
6outできないという問題点の解決方法はよくわかっていませんが、確認できた範囲をメモしておきます。 Linuxでは普通に6out (5.1ch) が可能でした。 WindowsではWASAPI 排他モードにすればREAPER, Cakewalk Sonar上では6out可能な事は確認できました。 一方で、FlexASIOでは6outに設定するとREAPERで初期化に失敗し、Steinberg built-in ASIO Driver上では2outのデバイスと認識されていました。
2026/09/28 追記の追記
インストールしていなかったので試していませんでしたが、ASIO4ALLで普通に6outできました。 どうやら古い話だったようです。
