# Buttplug連携

## Buttplugとは？

Buttplugは大人の玩具を制御するためのオープンソースプロジェクトです。様々な玩具が対応しています。対応機器の一覧はhttps://iostindex.com/を参照願います。他に特別な理由が無い限り、このButtplug連携を使う事を推奨致します。

## 2つの接続方式

Buttplugを使うには主に2種類の方法があります。

1. WebSocket連携
2. 内蔵(Embedded)連携

2023年1月8日時点では、WebSocket連携が推奨されています。
Intifaceは、そのWebSocket連携でButtplugを動かすために必要なサーバとして広く使われているものです。

内蔵連携の場合、サーバはこのプログラム(FaPlayerCS_Fan)自身となります。
WebSocket連携の場合、サーバはIntifaceとなります。Intifaceの設定によっては後述の電源を自動でオフにする機能やLovenseMax2の空気圧を操作する機能は使えません。

## 連携手順 Type1 - Intiface連携(推奨)

前提として、まずIntifaceをインストールして起動しておく必要があります。Intifaceのインストール方法、起動方法についてはリンク先のサイトを参照願います。上記はIntiface起動状態の例です。ここではデフォルト設定としているため、ポート番号は12345です。

### 手順

1. Buttplug連携(推奨)をクリックする
2. 上図のフォームが表示されるので、ポート番号が正しいのを確認し、スキャン開始をクリックする
   - デフォルト設定はポート12345です。何らかの事情でポート番号を変更している場合は、変更後のポート番号をご指定願います。
3. しばらく待つと対応デバイスが列挙されるので、使いたいデバイスを選択して[Buttplug xにアサイン]のボタンを押下

## 連携手順 Type2 - 単独連携

何らかの理由でIntifaceを起動出来ない・したくない場合は、Intifaceを用いずに単独で接続することも可能です。単独接続は用いているライブラリが古いため、一部最新の機器は動作致しません。2021年12月最終更新のライブラリを用いているため、それ以降にButtplug対応機器に追加されたものは動きません。具体例としてはUFO TWが挙げられます。

### 手順

基本的にIntiface連携と同じですが、接続方式のラジオボタンは「単独接続」を選択して下さい(初期設定はIntiface連携接続)。

## その他解説

### 「見つかった製品」の表示の見方

見つかった製品は「[buttplug上のデバイス名](Raw Message Allowed)#[サポートしている動作タイプ]」のフォーマットで表示されます。上記の場合は以下を示します。

- Adult Festa Rocketが見つかった
  - これは一般にはRocket +1Dという商品名で知られています。
- Adult Festa RocketはVibratable(振動可能)である
  - ローターや亀頭マッサージャなどが振動可能な機器です。振動することによって刺激を与えます。また、いくつかの電動オナホールはこれに該当します
- Synchroが見つかった
  - これは一般にはISynchro(シンクロ)という商品名で知られています。中が回転するタイプの電動オナホールで日本ではWithnyなどのアダルトLIVE配信サイトで使われています
- SynchroはRotatable(回転可能)である
  - 回転することによって刺激を与えるタイプの大人の玩具で、このタイプの代表的な製品としてはA10サイクロンSAやUFO TWなどが存在します
- The Handyが見つかった
  - これはThe Handyという商品名で知られています。好きなオナホールを取り付けて動かすことが出来る大人の玩具です
- The HandyはLinearble(線形移動可能)である
  - 上下に移動することによって刺激を与えるタイプの大人の玩具です。人間の動きに一番近く、動画の製作者側にとっては連動させるのに一番楽な玩具です
- いずれも機器の名称の後ろに「(Raw Message Allowed)」が表示されていないので、以下機能が実行できない

- アプリ終了時に玩具の電源を切る(Lovenseのみ有効)
- 空気圧調整機能(LovenseMax2のみ)

Intiface連携の場合、「Settings」⇒「Advanced/Experimental Settings」より「Allow Raw Messages」をオンにすると、(Raw Messages Allowed)となります。

ごく少数の機器は複数タイプの移動をサポートしておりますが、FaPlayerCS_Fanを含むほとんどのプレーヤーでは1つの動きしかサポートしておりません(将来的には改善予定)。

### [補足]アサイン後のアイテムの見方(LovenseMax2の場合)

機器はアサインすると下図のように表示されます。この場合、以下のことを示しています。

- [PWOFF]と先頭に表示されているため、アプリを落とした時にLovenseMax2の電源を同時に落とすことが可能である。但し、青く囲っている「アプリ終了時電源オフ(Lovenseのみ)」のチェックボックスにチェックが入っていないため、電源オフには出来ない
  - 電源オフにしたい場合は、チェックボックスにチェックを入れて下さい(先述の「(Raw Messages Allowed)」が付いていない場合、電源オフに出来ないためこのチェックボックス自体の操作が出来ません)
- 機器はLovense Maxである(製品名としてはLovense Max2なのですが、Buttplug上はこのように表示されます)
- バッテリー残量は88%である(Buttplugでバッテリー残量が取得可能なもののみ表示)

### テストとは？

動かしたいデバイスの左隣の「テスト」ボタンを押すと、デバイスがランダムに動きます。動きの変更周期はテストサイクルで変更できます。LovenseMax2の場合、空気圧もランダムで動くか確認してください(ランダムで動いていれば、LovenseMax2用のタイムシートが動作可能)

### テストサイクルとは？

テストサイクルはランダムに動かす周期の長さです。指定はミリ秒単位なので、例えば500と指定すると500ミリ秒(0.5秒)に1回ランダムで動きます。

### 最奥位置とは？

Linearbleに分類される玩具の一番奥の位置です。0か一番下で、100が一番上です。ペニスの大きさによっては100の位置だとホールが届かないことがあります。必要に応じて適宜修正して下さい。この最奥位置は全Linearble玩具に適用されます。

特定の玩具の最奥位置のみ変更したい場合は、ここではなく「設定」⇒「玩具動作設定」から変更して下さい。

### 上下逆さに動かす(Linearのみ)とは？

こちらにチェックが入っていると、機器が上下逆さに動きます。例えば、funscriptで「80」が指定されている場面では「100-80(つまり、20)」の位置に機器が動くようになります。「100」の場合は「100-100(つまり、0)」です。The Handyなどの機器を上下逆さに固定する際にチェックを入れて下さい。正しく設定出来ているかは「腰を下ろしてもらう」ボタンで確認可能です。下に機器が下がってくれれば正しく設定されています。