WiiリモコンやJoyConをWindows10とBluetoothでペアリングして接続するためのソフト(ライブラリ)「tiny_bd_hid.dll」を公開する。
ここからダウンロードできる。
WiiリモコンなどのBluetooth HIDデバイスのペアリング処理と接続(HIDサービス起動)処理を簡単に行うためのライブラリとなっている。
これは前に書いたblogエントリで言及していたソフトだ。(なぜいまさらという話も前に書いた。)
前にそのblogエントリを書いたのは去年(2018年)の11月なのだが、その後の今回の公開までだいぶ遅くなってしまった。
→ 久しぶりにWiiリモコンhackを弄っている – WiiリモコンとWindows PCのペアリング問題について
—
以下、README.txtの内容をそのままここに書いておく。
tiny_bt_hid.dll について
WiiリモコンなどのBluetooth HID機器をペアリングして接続するのに作った関数を
ライブラリ(DLL)化したものです。
ソースコードについて
srcフォルダーにソースコードがあります。
ソースコードとしては、tiny_bt_hid.cppというファイル1つだけです。
build_vs2019_x64.batというバッチファイルでVisualStudio2019のC/C++のCLI環境を使ってビルドします。
バイナリについて
bin(dll-lib)フォルダーに、ビルド済みのものがあります。
dllといっても、ちゃんとしたdllではないのでdllをロードするAPIなどには対応していません。
dllを呼び出すためのlib(tiny_bt_hid.lib)ファイルを使ってdllの中身を呼び出す形になっています。
呼び出し方はヘッダファイル(tiny_bt_hid.h)に定義しています。
これだけでは使い方が分からないですので、使用例のサンプルコードも用意しました。
サンプルコードについて
exampleフォルダーに一式を入れています。
HID機器を使うための自作のライブラリ(DLL)であるtiny_hid_dllも使っており、一緒に入れておきます。
ソースコードとしては、wii_remote_connect.cppとwii_remote_test.cppとうファイル2つだけです。
前者で、tiny_bt_hid.dllを使ってWiiリモコンのBluetoothペアリングと接続をします。
後者で、tiny_hid_dll.dllを使ってWiiリモコンのLEDを点灯させたり振動機能を短時間振動させたりしてます。
build_vs2019_x64.batというバッチファイルでVisualStudio2019のC/C++のCLI環境を使ってビルドします。
(一応ビルド済みのexeファイルも入れておきます。しかし、ネットからダウンロードしたzipファイル内の
実行ファイルは、Windows10のセキュリティ機能により あたかもウイルスかのような扱いで実行がブロック
されますので、ご注意ください、)
このサンプルコードでライブラリの関数の使い方は分かるのではないかと思います。
反響とかあるようなら、あとでblogで もう少し親切な使い方の記事を書いていきたいと思います。
ここ一週間ほどWiiリモコンを接続する方法をあれこれ試して頭抱えていたのでソフトの公開本当にありがとうございます!
もう少し機械オンチにもわかる解説をぜひお願いします
素晴らしいプログラムをありがとうございます.
windows 10でのWiiRemoteの接続がうまく行かず,Unityとの連携が取れずで困っていたところで,
検索でヒットしたこちらのプログラムを使わせていただいたところ一発で接続OKとなり大変助かりました.
現在こちらの配布されているプログラムをもとに複数個のWiiRemoteを接続できるように改変しようとしたですが,私の知識不足によりどうしても2個以上のWiiRemoteを接続するようにプログラムを書き換えられませんでした.
厚顔無恥なお願いで大変申し訳無いのですが,プログラムの書き換えるべき場所をご教授をいただけると大変嬉しいです.
何卒よろしくお願いいたします.
複数のWiiリモコンを自動ペアリングするのには対応していないです。すみません。
これは、MicrosoftのBluetooth APIでPCの周囲のBluetooth機器を検索するときに名前を使ってWiiリモコンを探して、見つかった1つめのWiiリモコンに対して自動接続するようにプログラムが書かれているためです。
直すとすれば、
検索時に全部のWiiリモコンを探すようにすることと、
WiiリモコンのBluetoothのアドレス情報とかを調べて、見つかったWiiリモコンの個体を区別するようにすること。
でしょう。
具体的にソースコードのどこかをちょっと書き換えるというレベルでは直せないと思います。
あまり助けにならない回答ですみません。
迅速なご返答ありがとうございます.
なるほど… tiny_bt_hid.dllの中身を変更,追記しないと対応できないとお見受けいたします.
Koko様のプログラム,ご回答を参考に自作ライブラリの作成等,色々試行を重ねたいと思います.
Hello,thank you for your program and make their sources availables.
I think it has a bug : i am trying to use it with the right joycon using your program “joycon_music_test_v01.zip” .
.If i use the files included on it ,the sound works fine,but if i remplace the library with the one included here,the sound go faster.
Yours
Dani
—-
こんにちは、あなたのプログラムに感謝し、それらのソースを利用可能にします。
私はそれがバグだと思う:私はあなたのプログラム「joycon_music_test_v01.zip」を使用して適切なjoyconでそれを使用しようとしています。
含まれているファイルを使用すると、サウンドは正常に機能しますが、ライブラリをここに含まれているものと交換すると、サウンドは速くなります。
あなたのもの
ダニ
joycon music testのサウンドの再生速度の問題は自分でも気がついていました。
このソフトで時間制御ができていないのが原因なのですが、tiny_hid_dllで内部でウェイト処理をしていたという問題もあり、
修正したtiny_hid_dllというのを作っていました。
修正したdllと修正したサウンド再生というのができたら、また公開しようと思います。
Hello again. Thanks for answering so fast.
Then the problem was on the version of the
tiny_hid_dll you used on music test?
I am trying to understand plenty the Nintendo vib format (it seems they are some little questions than homebrew scene has no found for make it to vibrate exactly as it happens on the Switch games), and collecting
this files of the games I own.
At last, I would be love recreate some using homebrew(as kazuake balls counting) and create my own vibration files,also convert them to run on other devices as the wonderful Steam Controller, (and others as the future ps5 or VR controllers).
I think this technology will be really surprising when it would be more developed and mixed with things as real time raytracing audio as the one could be performed on current pc (with Steam Audio API) and future video game machine as ps5
For finish, I have been reading your blog(using Google translate) and I am very surprised with lot of your proyects (I love this kind of stuff), congratulations.
Thanks
投稿先を間違っておりまして申し訳ありません。
あらためてこちらに記載させていただきます。
wii_remote_connectについてのご相談となります。
こちら既にbluetooth接続が登録されている機材(ワイヤレスイヤホン等)が
すべて解除されてwiiリモコンが登録されているようで
回避策があれば教えていただきたく存じます。
wiiリモコンを毎回手動で登録するか
それ以外のbluetooth機材をwiiリモコンを登録する毎に再登録するか
という状態です。
wii_remote_connectで、初期化時に他のBluetooth機器が接続解除されてしまうのは気がついていませんでした。
コメントでお知らせくださり、ありがとうございます。
ソースコードのWindowsのBluetoothの初期化のためのAPIのところが問題なのだと思いますが、自分にはすぐに代わりになるうまい方法が思いつかないです。