楽器演奏を一人で複数の楽器パート(複数のPCのキーボード)を同時に演奏(キー入力)する必要があり、手がいくつもあれば良かったのですがそう言うわけにもいかないのでそれぞれのPCにUWSCを入れてそれぞれのPCのキー入力を自動かつ同時に行おうと考えました。
リズムを正確に刻むために遅延を指定し、以下の様なスクリプトを作成しました。
Sleep(3000/1000)
KBD(VK_9,DOWN,0/1000)
Sleep(3000/1000)
KBD(VK_9,UP,0/1000)
KBD(VK_OEM_MINUS,DOWN,0/1000)
Sleep(3000/1000)
KBD(VK_OEM_MINUS,UP,0/1000)
etc…
以下は同じようなスクリプトがキー入力毎にあるだけなので省きます。
このスクリプトは正常に動作すれば
再生開始。
3秒待機。
9キーを押す。
3秒待機。
9キーを離す。
MINUSキーを押す。
3秒待機。
MINUSキーを離す。
といった動作になると思います。
しかしこのようなスクリプトを試験的に複数のPCで全く同じ内容で複製したものをそれぞれのPCのUWSCに同時に実行させたところ開始直後は完璧に同時に入力しますが時間経過とともに入力タイミングのずれが生じ、ずれが顕著になっていくことが確認できました。
全く同じスクリプトを使用しているなら通常全く同じ動作、遅延の処理が行われるはずですが、このような入力の時間差が発生してしまう原因がわかりません。
具体的な実行環境をお伝えしますと
先程お伝えした複数のPCとはVMware仮想マシンを使って複数のWindows10を立ち上げ、複製のキーボード、UWSCがあるかのようにしています。
動作させている仮想マシンは3〜5台で、
稼働時のCPU使用率50%、メモリ使用率75%、GPU使用率70%、その他ディスク、ネットワーク等使用率0〜1%と、スクリプトの処理時間等に特別ボトルネックになっているものはないように思えます(ド素人の考察です
様々な原因が考えられ一概に断定することはできませんが、スクリプトの記述方法が間違っていたりそもそもUWSCでミリ秒の遅延を扱うのは不向きだったり、実行環境に不備がある可能性などの指摘がございましたら教えていただけませんか。
一応上記のスクリプトに対する補足を述べておきます
わざわざ1/1000で割っているのはスクリプト記述の元となったLogicoolゲーミングソフトウェアのスクリプトであるluaファイルから流用して、本来ミリ秒である数値をUWSCのSleep(秒)をミリ秒に変換して実行できる様に機械的に翻訳したためです。
またKBDコマンドの遅延指定を0にして代わりにSleepコマンドを打ち込んでいるのも同様にluaファイルにあったSleepの遅延の情報をそのままUWSCが流用できる様に翻訳したためです。
No.3ベストアンサー
- 回答日時:
何か勘違いされているのでは?あくまでもキーボード操作が大前提ですよ。
>基準時間をキー入力で設定することはできませんか。
できません。
仕方がないので調整はSleepで行いますが、残念ながら状況により大幅に書き方が異なりますので、提示は困難です。
もこさんのスクリプトでは、誤差を吸収する部分がないので、ズレ始めると止まりません。
調整は細かくしても逆効果で、ズレ始める直前に影響のない[少ない]部分でまとめて行うのが効果的。
提示は出来ないものの基本的な考え方には同じで、実際の経過時間 - 理想の経過時間[絶対時間] をどこかで調整する。
基準時間をキー入力〜というのはキー入力の基準となる時間を作れないかという意図でした。誤解を招くような文章でした。
プログラミング経験が全くなく経過時間を取得できることに気づかなかったのですが誤差の求め方を教えていただいてはっと気がづきました。GetTime() + G_TIME_ZZ で経過時間をミリ秒まで計測して理想時間との差を計算に組み込むことができました。
慣れないことだったので四苦八苦してずれをなくす工夫と、キー入力が膨大にあるため誤差の計測と調整をしてくれるようなスクリプトを自動で入力してくれるようなシステム作る方法をひたすら探っていました。プログラムの勉強をし続けてようやく、瞬間的なズレは完全には無くならないものの大きなズレは大きく軽減ことができ、無事管弦楽のハーモニーを美しく響かせることに成功しました。本当にありがとうございます。
No.2
- 回答日時:
逆です。
必ずズレます。UWSC以外でも結果は同じです。通常は問題になるような事ないです。ある一定の時間内に誤差を抑えたいなら基準時間[絶対時間]を設定し、それに対して誤差を調整するしかないでしょう。
No.1
- 回答日時:
逆です。
必ずズレます。UWSC以外でも結果は同じです。通常は問題になるような事ないです。ある一定の時間内に誤差を抑えたいなら基準時間[絶対時間]を設定し、それに対して誤差を調整するしかないでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) bashのgrepで複数の検索、かつスクリプト内で改行する方法を教えてください。 1 2022/10/06 20:09
- デスクトップパソコン 通話が遅延します 1 2023/06/18 02:36
- UNIX・Linux redmineにメールを飛ばす方法 1 2022/09/13 22:02
- マウス・キーボード キーボード設定で困っています。長文です。 2 2022/12/10 12:44
- マウス・キーボード キーボードのCaps Lockキーと変換キーの挙動がおかしくなりました。 4 2022/09/04 22:44
- C言語・C++・C# win10で、正確な待ち時間の作り方 6 2023/02/14 18:28
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Windows 10 MicrosoftIMEでトラブル、助けてください m(_._)m 4 2023/05/16 14:11
- UNIX・Linux ubuntuサーバーを久々に再起動したらネットにつながらなくなった。 1 2022/06/06 16:21
- その他(クラウドサービス・オンラインストレージ) Onedriveで実現したい事。2台のPC間で。 2 2023/04/10 20:42
このQ&Aを見た人はこんなQ&Aも見ています
-
つい集めてしまうものはなんですか?
人間誰もは1つ「やたらこればかり集めてしまう」というものがあるもの。 あなたにとって、つい集めてしまうものはなんですか?
-
「平成」を感じるもの
「昭和レトロ」に続いて「平成レトロ」なる言葉が流行しています。 皆さんはどのようなモノ・コトに「平成」を感じますか?
-
【お題】引っかけ問題(締め切り10月27日(日)23時)
【大喜利】 「日本で一番高い山は富士山……ですが!」から始まった、それは当てられるわけ無いだろ!と思ったクイズの問題
-
プリン+醤油=ウニみたいな組み合わせメニューを教えて!
プリンと醤油を一緒に食べると「ウニ」の味がする! というような意外な組み合わせから、新しい味になる食べ物って色々ありますよね。 あなたがこれまでに試した「組み合わせメニュー」を教えてください。
-
ハマっている「お菓子」を教えて!
この世には、おいしいお菓子がありすぎて……。 次何を食べたらいいか迷っています。 みなさんが今、ハマっている「お菓子」を教えてください!
-
UWSCのTHREADについて
その他(プログラミング・Web制作)
-
UWSCで、スクリプトの実行時間を一定にするには
その他(プログラミング・Web制作)
-
UWSCの待機コマンドについて
その他(ソフトウェア)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スクリプトを使い、自動にリネーム
-
perlスクリプトのブラウザURLか...
-
vbs: オブジェクトがコレクショ...
-
PerlでUNIXのコマンドとパスワ...
-
パーミッション600でもブラウザ...
-
powershellで関数名を変更する...
-
VBSを利用して、IEのタブを自動...
-
wsh(vbs)のデバッグについて
-
Excel VBAでリンク切れをチェッ...
-
例外処理のフローチャートの記...
-
perlをバージョンアップしたら...
-
vba userFormのSubを標準モジュ...
-
「デバイスは PRN を初期化でき...
-
VBAで旧字体を異字体に一括で変...
-
SendKeysの使い方について
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
Form間の値の渡し方
-
Workbook.BeforeSave イベント...
-
エクセルVBA クラスモジュール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Cからシェルを起動し返り値をハ...
-
powershellで関数名を変更する...
-
UWSCのスクリプトにラグが発生...
-
Perlスクリプトで文字化けして...
-
vbs: オブジェクトがコレクショ...
-
VBSを利用して、IEのタブを自動...
-
ADサーバにおけるログインID,PC...
-
シェルでsyntax errorがでてしまう
-
C言語で一部perlを呼び出したい...
-
awkの処理速度を改善したい
-
Perlのライセンス
-
perlスクリプトのブラウザURLか...
-
スペースを含むファイルの実行...
-
パスワードの保存
-
"JScript"が見つかりません!
-
rshを使うスクリプトをバックグ...
-
VBスクリプトの危険性について
-
pythonスクリプトの停止方法に...
-
プリンタードライバーの自動セ...
-
Postfixでメールを受信したらPe...
おすすめ情報
なるほど、時間の誤差は常に発生してしまうものなのですね。コンピュータに対する理解が浅くて申し訳ないです。ごめんなさい。
基準時間を設定してキー自動でを押すような動作を実現するにはどうすれば良いでしょうか。
例えば音楽を複数の端末で、同じ曲を流すと同じリズム、音色を同時に鳴らしてくれるはずで、ずれがあることは(少なくとも体感できるレベルのずれは)無いと思います。
そのような基準時間をキー入力で設定することはできませんか。