• 締切済み

サブリミナルプログラムを作成中にトラブル発生!

高2です。今度の科学展にサブリミナル効果の有用性についての実験を提出しようと、任意の画像をサブリミナルさせるプログラムを書いています。 それらしいものができたのですが、やってみると画像が少し見えてしまってぜんぜんサブリミナルじゃありません。調べてみると、Windowsのタイマ機能は100ミリ秒刻みだということがわかりました。でも、サブリミナルには20ミリ秒ぐらいが必要なんです。シェアで同じようなソフトがあったんですが、そのソフトは15ミリ秒間の表示ができるというので無理ではないと思うのですが・・・ どなたか教えていただけたら幸いです。質問には答えるようにします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

サブリミナル効果っていうと, 初期に言われていたのは映画の話だから毎秒 24コマ, 40ms 程度ですかね. MPEG とかであれば「途中で切って」「間に 1コマだけ画像を入れて」「全体を繋ぐ」ことができれば作れますが, そういう機能を持っているソフトがあるかどうかは知りません. 以下は余談なんですが.... 真面目にやるのであれば「サブリミナル効果は存在しないという報告もある」, 「認知とか心理に関する実験は, 条件をそろえるにくいため本当に効果があったということを示すのが実は非常に難しい」ということくらいは念頭におくべきかと思います. てきとーにやるだけならこんなことを気にする必要はありませんが, てきとーにやるならてきとーにやるで「てきとーにやっているんだ」という意識はいるんじゃないかなぁ.

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.4

描画の速度が遅いと無理だと思います。(PCの性能に依存) DirectX等は使っているでしょうか? 例えば秒間60フレームなら 1フレームが約17ミリ秒なわけですが、それだけのフレームレートはでていなければ 無理でしょう。

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.3

Windowsでは指定した時間どおりに正確に何かを実行することができません。何か優先度の高い処理が入ると、自動的に(勝手に)そちらの処理が先に行われるので、優先度の低い処理は動作が遅れます。 ・・・が、そういう高優先度の処理が入らないものと仮定する場合、 timeBeginPeriod, timeEndPeriod, timeSetEvent, timeGetTime 等の、通称「マルチメディアタイマー」機能を使用して、約1ミリ秒単位まで指定したタイマーが使用できます。 Windowsの通常のアプリケーション(専用デバイスドライバを使用しないもの)としては、これが最も高い時間精度を実現できるAPIです。

回答No.2

GetTickCount() 使えば大丈夫では? タイマではないのでループを工夫する必要があるかも知れませんが…。

tayu8899
質問者

お礼

回答ありがとうございます。 なるほど、GetTickCount関数でいけますね。timeGetTime関数でもいけるかもしれませんが。 早速いろいろやってみます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

ムービーでやってはいかがでしょうか?

tayu8899
質問者

お礼

回答ありがとうございます。 最初FLASHでやろうと思ったんですよ。簡単だし。だけど20ミリ秒の壁は越えられませんでしたね。オーバーロードしちゃいまして。 MPEGとかAVIのムービーにミリ秒単位で画像を差し込んでいくのはちょっと方法が思いつかないので・・・ 知っていたら、教えてくださると幸いです。

関連するQ&A