みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもお世話になっております。
ファイルメーカー11 Win7 Advancedです。
前回、同じタイトルで質問をさせていただき、無事解決したかと思いましたが、
新たな問題が発生しましたので、何かいい方法はないかと思い質問させていただきます。
https://fm-aid.com/bbs2/viewtopic.php?id=299
プログラムは、同じ日同じ時間帯に、2台のパソコンで音声ファイルを再生するという形で使います。
理由はそれぞれ音声ファイルを再生する間隔が違うためです。
再生する音声はある一定の周期をもっていますが、2台のパソコンで少し間隔が違っています。
例を示すと、
(1) (2)
A→B 1分後 A→B 1分後
B→C 5分後 B→C 3分後
C→D 2分後 C→D 5分後
D→A 2分後 D→A 1分後
のようになります。(1)(2)ともに周期は10分で、Aは同じ時刻に再生されますが、BCDは時刻が違います。
問題はAが同じ時刻に再生されなければならないのですが、0.5秒ほどずれてしまいます。しかも、
そのずれ方が一定でないため、(1)のA音声が(2)のA音声より早く再生されたり遅く再生されたりします。
音声の再生は、プログラム実行から音声再生の時間までの時間を計算し、その時間の分だけ後に再生する(=指定時間に再生する)
という計算をして再生しています。
以前のプログラムは1秒ごとにシステム時間をファイルメーカーに読み込んで、再生時間と一致したら音声を再生するように
しておりましたが、1秒ごとに時間を読み込まず2秒飛ばしになったりすることがあり、うまく再生できませんでした。
いろいろ試してみましたが、
パソコンのスペックを全く同じものにする → 未解決
システム時間をそろえる → 未解決
音声の再生方法を変える → 未解決(WMPからQuickTime埋め込みへ)
解決できませんでした。
プログラムで、なんとか解決できるような案はありませんでしょうか?
よろしくお願い致します。
FileMakerで行わないといけない、という作業ではないと思いますが。普通のタイマーを使ったほうが簡単かと。
または、Windowsならばタスクで、MacOSならcronで、VBやASを起動されると、簡単ですよ。
システム時刻を揃えるには、NTPを使えば1秒未満の精度で揃えられます。
どうしてもFMで、というのでしたら、時間間隔は、OnTimerスクリプトをインストールで出来そうですが、1秒の精度が必要でしたら、無理でしょう。
Offline
その機能専用のPC+FMで他の作業には使わないとかならいいかも知れませんけど
カレンダーソフトの方が簡単確実かと。
私はMacですが標準装備のカレンダーアプリで十分できます。
指定の日時に音声の再生や別ファイルを開くなどの予約が。毎日の繰り返しも。
ただ、秒までの指定はできないので最初の再生から60秒後とかは無理ですけど
標準アプリなので開いて無くてもバックグラウンドで優先的に動くし時間もピッタリ。
Shinさん、Travellerさん
ありがとうございます。
大人の事情でFilemakerで動かしたほうがよいのですが、
いろいろ私も試してみましたが、Filemakerでは解決できそうじゃ
ありませんね・・・。
アドバイスありがとうございました。
VBなど、他のプログラムを検討してみます。
周期が10分なら、つなげて10分にしたファイルをループで再生し続ければいいのでは。
だけど、開始時刻を0.5秒未満で正確に合わせるのは、OS機能を使っても保証できない気がします。
(Windowsのタスクで00分に実行してるタスクの前回実行時刻が、たまに59分になってたり)
リモートPCでプログラムを起動するプログラムで再生開始すればいいのかな。しかし再生用のソフトを先に起動しておかないと、それだけで0.5秒ぐらいずれてしまいそうだし。
そういえば、FM13にはホストでスクリプトを実行するスクリプトができましたね。
Offline
waderさん
ありがとうございます。
そうですね、音声をつなげて10分にしたファイルを再生したほうがいいかもしれませんね。
いろいろ試してはみたのですが、うまくいかず。。。
ちなみに、私は使ったことないのですが、Filemaker6(おそらくAdvanced, WinXP)の時代に、1sおきに時間を読み込んで、その時間と音声再生時間が一致すれば音声を再生する、という
スクリプトを使って、寸分たりともずれることがなかったらしいです。7-10まではわかりませんが、少なくとも11以上ではそれがうまくいかない、ということです。
何かしら仕様が変わったのが原因のようです。
追記
みなさんのコメントをいただいて、少し考えました。
現在、症状として、どうやらOnTimerスクリプトを繰り返す時や続けて次のスクリプトを実行する時にずれているようです。
実際に、2台のPCのシステム時計を同時に合わせ、2台同時にスクリプト開始ボタンを押せば、2台とも全くずれることなく再生されることを確認しています。
その後続けて次の音声再生時間を計算するスクリプトを組んでいますが、そうすると次の音声再生時間が<1秒でずれます。
以前みたいに、OnTimerScriptでシステムの時刻を読み込んで、指定した音声再生時間と一致した時に音声を再生させる方法も試しましたが効果はなく、しかも間隔を無理矢理狭めているので途中でハングアップしてしまうという結果に;;
そこで、次の音声再生時間を計算するタイミングをきっちりと同じに指定してやれば、ずれないだろうと考えました。
ファイルメーカーではどうやらそれができなさそうです(私の知識不足かもしれませんが)。
その部分(開始スクリプトをある毎分ある一定秒の時にスタートする)をVBなどに任せれば、うまくいくかもしれないと思いました。
元々プログラマーではないのでVBの知識は全くありません。一からの勉強ですが、大人の事情もありますし、試してみようと思います。
本当、みなさんのコメントでいろいろアイデアが浮かびました。ありがとうございます。
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 564.84 KiB (Peak: 579.7 KiB) ]