UfoSaCtrlTrip Ver4.10 U.F.O. SA TW A10サイクロンSA (+PLUS プラス) バッハスマート ROCKET+1D ランダムコントロールアプリ

今回はいつにも増して超個人的な機能改修ですので、今回の改修で喜ぶのは筆者だけかもしれません。
あ、でも! なんか知らんけど開発環境であるAndroid Studio周りの変化の影響でアプリのサイズが2割以上小さくなって、まだJavaだった頃のUfoSaCtrlTrip Ver1.00初版よりもサイズが小さくなりました!
というか、それより前のUfoSaCtrlDualよりも小さくなってる……何があったのか知らんけどまあ良き!

対象となるデバイスは以下になります。

なお、ROCKET2
ROCKET2

は筆者が購入していないため動作するか不明ですが、販売サイトの画像を見た限りですとROCKET+1Dと同じ「ROCKET」というデバイス名を使用している可能性が高く、このアプリはデバイス名で接続機器を判別しているため「ROCKET」で認識できるかもしれません。(が確証も責任も持てませんのでその辺りは各ご自身の判断にてお願いいたします。)

モーター稼働積算計に重み付けを追加

モーター稼働積算計というのは『UfoSaCtrlTrip Ver4.00 U.F.O. SA TW A10サイクロンSA (+PLUS プラス) バッハスマート ROCKET+1D ランダムコントロールアプリ』で機能追加をした、UfoSaCtrlTripから指示を出した数値を持続時間に応じて積算して行って、合計でどれだけの数値を積み重ねたかが分かるものです。
これをなんのために実装したかと言うと、充電タイミングの検知に役立てるのではないかと思ってのことでした。

あくまでも指示数値の積分ですので、それが消費電力と比例するわけではないのですが、目安としては十分機能できたものでして、例えば筆者がU.F.O. SAを使っている場合、1,800,000カウントを超えたら充電を促すように設定をして、それで非常に良い感じに運用出来ていました。
(筆者はU.F.O. SAを片乳ごとにコントローラーを分けているため1つのコントローラーで2台とも動かすよりもバッテリーが長持ちしますので充電タイミングが忘れた頃にやってくるのです。)

しかしながら、筆者はまたU.F.O. SAのコントローラーの配線をコネクタ化してU.F.O. SAのカップ以外のものを接続してコントロールできるようにしています。
今までだと実用していたのは『マイクロローターで振動系チクニーグッズを自作する(その2)(乳首責めグッズ)』で自作改造したグッズだけだったのですが、最近、『LOVE PINCHER(ラブ ピンチャー) コネクタ化改造 (乳首責めグッズ)』も増えました。

特に『LOVE PINCHER(ラブ ピンチャー) コネクタ化改造 (乳首責めグッズ)』なんかは数値を高めに推移させた方が気持ちが良いのですが、それだともの凄くカウンタの数字が進むようになります。
その一方で、こちらの振動モーターはU.F.O. SAのカップに比べて消費電力が非常に少ないようなのです。(実測出来てはいませんが感覚的に相当差があるはず)

そのため、同じU.F.O. SAのコントローラーであっても、その先に接続するグッズによってカウンタの進み方とバッテリーの消費具合とは相関が全く保てなくなり、せっかく実装したカウンタの意味がほとんど無くなってしまいました。
LOVE PINCHER(ラブ ピンチャー) コネクタ化改造 (乳首責めグッズ)』の使用割合が増えると1,800,000カウントで充電するのはまだバッテリーがあり余っている状態でして、そういう状況では筆者のU.F.O. SAは充電ランプが点かなかったりいきなり満充電ランプ表示になったりしてちょっと運用が不安定になるのです。

というわけで、同じU.F.O. SAコントローラーであっても使用するパターンによってカウンタの進ませ方の重み付けを変えて、それでカウンタとバッテリー消費の相関性をある程度取り戻そう、というのが今回の改修の主旨です。

U.F.O. SAのコントローラーに別のグッズを接続して動かそうなんてしている人がそうそう居るとは思えないので、今回の改修はいよいよもって本当に筆者一人にしか役に立たない可能性が高いです。
ですので、今回のアップデートを無理にする必要は全くありません。
あ、でも、冒頭でも書きましたがアプリのサイズが凄く小さくなったので、もしかしたらどこか効率良く動くようになった可能性もあるのかも?

重み付けの設定

なるべく変更による影響を出したくなかったので、重み付けの指定はオプション扱いとし、各パターンに書く最初のパラメータである

[Start,Stop,Displacement Threshold: int(0~100): 3要素必須 Gradual動作開始時,減速時,似たようなPowerを続けないための最低変化量]

の行の最後に付け足す形としました。

なので、このバージョンからは

[Start,Stop,Displacement Threshold: int(0~100): 3要素必須 Gradual動作開始時,減速時,似たようなPowerを続けないための最低変化量。{,CounterWait: int(1〜): モーター稼働積算計に加算するときの乗数。省略時は1}]

となり、カンマ区切りで4つ目に指定した整数値がカウンタを積算するときに常に乗数されるようにしました。

オプション扱いですので、以前の設定のまま、書かないままでもOKとしていて、書かなかったときはここの値は1という扱いでカウントするようにしています。

これにより、同じU.F.O. SAコントローラーを接続していても選択した動作パターンによって重み付けを加味した積算を行うようになります。
ランダムパターンだけでなく、固定パターンでもパターン毎にパラメータ値の最初の行の4つ目にオプション指定可能としています。

なお、筆者の場合はU.F.O. SAコントローラーに接続するグッズによってランダムパターンを使い分けしておりまして、現状ではこのような値で運用しています。

[■Random Name]
Random(U.F.O. SA)
[Start,Stop,Displacement Threshold: int(0~100): 3要素必須 Gradual動作開始時,減速時,似たようなPowerを続けないための最低変化量。{,CounterWait: int(1〜): モーター稼働積算計に加算するときの乗数。省略時は1}]
12,5,4,3
[Vol.1 PowerPattern: int(0, StartThreshold~100): 要素数は自由(ランダムに選ばれる)]
0,5,9,13,17,21,25
[Vol.2 PowerPattern: int(0, StartThreshold~100): 要素数はVol.1と合わせる(ランダムに選ばれる)]
0,10,15,20,25,30,35
[Vol.3 PowerPattern: int(0, StartThreshold~100): 要素数はVol.1と合わせる(ランダムに選ばれる)]
14,20,26,32,38,44,50
[TimePattern: int(1~): 要素数は自由(ランダムに選ばれる) 単位100msec]
10,16,22,28,34,40,46,52
[TimeIndexRange: int(1~): 要素数はPowerPatternと合わせる 各数値はTimePattern要素数以内とする]
1-5,1-8,1-6,1-8,1-8,1-6,1-4
[GradualPattern: int(0,1〜){/int(1〜)}: 要素数は自由。Power変化値/時間(単位100msec)の分数型で記載。時間が1のときは分子のみ記載可能。約分せず。0はGradualさせない(確率を変えるために複数使用)。]
0,0,0,0,1,3/2,2,3,1/2,3/4,1/3,2/3
[PWMPattern: int(0,2〜){/int(2〜)/int(0〜)}: 要素数は自由。On時間(単位100msec)/Off時間(単位100msec)/OnのときPowerを何%に増(減)速するか。約分せず。0はPWMさせない(確率を変えるために複数使用)]
0,0,0,0,0,2/2/175,4/2/150,2/4/200,4/4/125,4/8/175
[■Random Name]
Random(MicroRtr)
[Start,Stop,Displacement Threshold: int(0~100) {,CounterWait: int(1〜)}]
4,4,4,2
[Vol.1 PowerPattern: int(0, StartThreshold~100)]
0,4,8,12,16,20,24
[Vol.2 PowerPattern: int(0, StartThreshold~100)]
0,6,12,18,24,30,36
[Vol.3 PowerPattern: int(0, StartThreshold~100)]
10,17,24,31,38,45,50
[TimePattern: int(1~)]
10,16,22,28,34,40,46,52
[TimeIndexRange: int(1~)]
1-5,1-8,1-8,1-7,1-6,1-5,1-4
[GradualPattern: int(0,1〜){/int(1〜)}]
0,0,0,0,1,3/2,2,3,4,5
[PWMPattern: int(0,2〜){/int(2〜)/int(0〜)}]
0,0,2/2/175,4/2/150,2/4/200,4/4/125,2/6/200,6/2/100
[■Random Name]
Random(ClipRtr)
[Start,Stop,Displacement Threshold {,CounterWait}]
5,5,5,1
[Vol.1 PowerPattern]
0,10,20,30,40,50,60
[Vol.2 PowerPattern]
0,15,30,45,60,75,90
[Vol.3 PowerPattern]
40,50,60,70,80,90,100
[TimePattern]
10,16,22,28,34,40,46,52
[TimeIndexRange]
1-5,1-8,1-8,1-7,1-6,1-5,1-4
[GradualPattern]
0,0,0,0,1,3/2,2,3,4,5
[PWMPattern]
0,0,2/2/175,4/2/150,2/4/200,4/4/125,2/6/200,6/2/100
[■Random Name]
Random(TabletRtr)
[Start,Stop,Displacement Threshold {,CounterWait}]
5,5,5,1
[Vol.1 PowerPattern]
0,20,40,60,80,90,100
[Vol.2 PowerPattern]
0,40,55,70,80,90,100
[Vol.3 PowerPattern]
40,50,60,70,80,90,100
[TimePattern]
10,16,22,28,34,40,46,52
[TimeIndexRange]
1-5,1-8,1-6,1-8,1-8,1-6,1-4
[GradualPattern]
0,0,0,0,1,3/2,2,3,1/2,3/4,1/3,2/3
[PWMPattern]
0,2/2/100,4/2/100,2/4/100,4/4/100,4/8/100
[■Random Name]
Random(ROCKET+1D)
[Start,Stop,Displacement Threshold {,CounterWait}]
20,15,5,1
[Vol.1 PowerPattern]
0,25,30,35,40,45,50
[Vol.2 PowerPattern]
0,25,33,41,49,57,65
[Vol.3 PowerPattern]
50,58,66,74,82,90,100
[TimePattern]
10,16,22,28,34,40,46,52
[TimeIndexRange]
1-5,1-8,1-6,1-8,1-8,1-6,1-4
[GradualPattern]
0,0,0,0,1,3/2,2,3,1/2,3/4,1/3,2/3
[PWMPattern]
0,0,0,0,0,2/2/175,4/2/150,2/4/200,4/4/125,4/8/175
[RandomEnd]
[■MinimumInterval: int(1〜): 最小通信時間間隔。通信取りこぼしが発生する場合は数値を大きめに取ってみてください。 単位100msec]
2
[RelationChangePhases: int(1~): 2要素必須 min,max: 2機目のRel設定でRandomを選択している際に、Sync,Mirror,Unrelatedを切り替えるまでにいくつのパターンを消化するか、の最小値最大値を指定]
3,7
[SwitchHeightWeight:int or float(0~): Volume等下部ボタンの画面高さを指定します]
1.25
[■Custom1 Vol.1: 先頭行にパターン名称、2行目にStart,Stop,Displacement Threshold {,CounterWait}、3行目以降にパターンをPower,Time,Gradual,PWMで記述。行数自由。カスタムデータではPWMのPower増減割合設定はありません、直にPowerの値を変えてください。ここからはコメント行がデータの区切りとして扱われます。1パターンにつき3ボリューム分のデータが必要です。]
Demo
12,5,5,3
42,30,0,0
0,10,0,0
42,10,1,0
0,10,0,0
42,10,3/2,0
0,10,0,0
42,10,2,0
0,10,0,0
42,10,8/3,0
0,10,0,0
42,10,5,0
0,10,0,0
42,10,3/4,0
0,10,0,0
42,10,1/2,0
0,10,0,0
42,10,1/5,0
0,10,0,0
[Custom1 Vol.2]
42,30,0,0
0,10,0,0
42,32,0,2/2
0,10,0,0
42,32,0,6/2
0,10,0,0
42,32,0,2/6
0,10,0,0
[Custom1 Vol.3]
42,32,2,4/4
-42,32,1/2,2/6
-12,6,5,0
-24,50,1/3,8/2
[■Custom2 Vol.1]
Dummy
12,5,5,3
1,15,0,0
0,10,0,0
-1,15,0,0
0,10,0,0
[Custom2 Vol.2]
0,50,0,0
[Custom2 Vol.3]
0,50,0,0
[DataEnd]

本来のU.F.O. SAのカップを動かすときは重み付け3、過去記事『マイクロローターで振動系チクニーグッズを自作する(その2)(乳首責めグッズ)』にて作成した振動系カップを使用するときは2、過去記事『LOVE PINCHER(ラブ ピンチャー) コネクタ化改造 (乳首責めグッズ)』にて作成した振動系クリップを使用するときは1、という重み付けをしていますが、これの妥当性はまだ見えていないので今後変更するかもしれません。

また、要充電表示の閾値はとりあえず5,500,000で様子を見ています、がここの妥当性もまだ不明です。

重み付け如きの計算でエネルギーを食う浮動小数点演算なんてしたくなかったので整数値に限定しているのですが、その分全体の数値がさらに大きくなってしまったので、妥当性検証がちょっと難しくなっています。(^^ゞ

U.F.O. SAのカップだけを動かしていたときは1,800,000でちょうど良いかもう少し大きくても良いくらいな感覚でしたので、重み付けの分3倍して+αで5,500,000としてみたのですが、うーんどうでしょうね?
2,1の重み付けの妥当性とかも含めて因果関係が複雑化しているのでちょっと長い目で行く末を見守りたいと思います。

とりあえず、6,400,000超えでもバッテリーが枯渇しない、かつ、その状態からだと充電がほぼ正常に出来るのが確認出来ましたので、閾値としては当面5,500,000で良いかなという気がしています。

なお、今回の改修はコントローラーとカップが一体化しているU.F.O. TWでは重み付けを変更する必要性が皆無なため改修を見送……ろうと思っていたのですが、タイミング良く筆者のU.F.O. TWが故障しまして、もしかしたら筆者はU.F.O. TWのコントローラー部分だけを取り出して他のグッズと接続して使うようになるかもしれない未来が見えて来てしまいましたので、UfoTwCtrlの方にも同様の改修を施すかもしれませんです。あと、アプリのサイズも小さくなるので。

従来からの機能の説明はこちら

毎度ゴメンナサイ。m(__)m
いい加減たまには使用方法とかまとめないとなあ、とはちょくちょく思うのですが、こうして変更点書くだけで毎回結構な量になってしまってとてもまとめなんかした日にゃあ薄い本が分厚くなるのでその他既存の機能についてはこちら
UfoSaCtrlTrip Ver4.00 U.F.O. SA TW A10サイクロンSA (+PLUS プラス) バッハスマート ROCKET+1D ランダムコントロールアプリ
UfoSaCtrlTrip Ver3.10 U.F.O. SA A10サイクロンSA (+PLUS プラス) バッハスマート ROCKET+1D ランダムコントロールアプリ
UfoSaCtrlTrip Ver3.00 U.F.O. SA A10サイクロンSA (+PLUS プラス) バッハスマート ROCKET+1D ランダムコントロールアプリ
UfoSaCtrlTrip Ver2.20 U.F.O. SA A10サイクロンSA (+PLUS プラス) バッハスマート ROCKET+1D ランダムコントロールアプリ
UfoSaCtrlTrip Ver2.10 U.F.O. SA A10サイクロンSA (+PLUS プラス) バッハスマート ROCKET+1D ランダムコントロールアプリ
UfoSaCtrlTrip Ver2.00
UfoSaCtrlTrip Ver1.0
の過去記事をご覧ください。

今回、開発環境側の何らかの変化によりアプリサイズが小さくなりましたので、もしかしたら動作そのものにも何かしら細かい変化が生じている可能性があります。
効率化されているかもしれないので、従来のバージョンの動きが精細を欠いている場合はもしかしたら今回のバージョンにアップデートするだけでも良くなる可能性もなくはないかもです。

ダウンロードファイル

勝手な再配布はしないでください。
また、このファイルのみへの直接リンクを貼ることもご遠慮ください。
特に、うちのサイトは弱小なので、検索で上位に表示されるサイトに勝手にコピーされると、盗まれたのとほぼ同じ状況に陥ります。
何かしらの問題が発覚して、こちらのサイトでファイルを差し替えても、それが皆さんの元には反映されなくなることにも繋がります。

諸事情によりアプリの無料配布を終了致しました。
今後は活動を支援してくださる方とのみ細細と共有していければと思います。

今後のUfoCtrlアプリ配布ページはこちらです。
UfoCtrl Ver1.00 (UfoCtrl開発活動支援プラン)

※申し訳ありません。
いつそうしたのか全く記憶にないのですが、当アプリのPackage名を部分的に大文字混じりにしてしまっていて今回プログラム中で大文字混じりの部分と小文字のみししている部分とが入り混じって統一できていないことを発見しましてVer4.00にて統一修正しました。
そのためVer3.10までのバージョンとはPackage名が変わっているためアップデートインストールにならず必ず新規インストールになってしまうと思います。
お手数お掛けして済みませんが設定等前バージョンからの引き継ぎが出来なくなっていますので改めて設定作業をしていただくようお願いいたいます。

なお、Ver3.00以降で画面オフボタンの機能を使用していた方は管理権限を外さないとアンインストールできなくなっていますのでご注意ください。

2024-05-17

この記事のタグ

U.F.O.

TW

SA

アプリ

制御

電動

自作

チクニー