• ベストアンサー

メトロノームが一定のリズムで鳴ってくれない

こんにちは、VBのプログラミングについて教えて下さい。 VBでメトロノームみたいなプログラムを作ろうと思い、タイマーコントロールを使って一定の間隔でWAVを鳴らすプログラムを作りました。とりあえず完成し、それなりに動くのですが、実行中に他のアプリケーションを操作すると一瞬リズムが乱れてしまいます・・・。 出来れば他のアプリケーションを操作しても、リズムが乱れないようにしたいのですが、どのような手法がありますでしょうか? どうぞ宜しくお願いします!

  • Elvin
  • お礼率91% (33/36)

質問者が選んだベストアンサー

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

MMTimerに対して補足しておきます。 「Intervalプロパティに 55 以下を指定すると、正確なイベントを発生できません。」 と書かれていましたが、55というのはマシンスペックなどの環境に左右されますし 1000と設定しても実際は徐々にずれていきます。 そもそもタイマーイベント(タイマーコントロールの発生するイベント)というのは 時間を測る為のものではなく定期的に実行する為のイベントです。 通常Windowsで時間を測るにはGetTickCount()APIを使用します。 ゲームプログラミング的な手法ですが、 Timerイベントは1ms毎に実行するように設定しておき そこでGetTickCount()APIで監視すればどうでしょうか。

Elvin
質問者

お礼

ご回答ありがとうございました。GetTickCount()APIを使うような手法もあるんですね。複数のイベントを実行する場合に使えそうです(複数の音を違うタイミングで鳴らすような場合)。大変参考になりました!どうもありがとうございます!!

その他の回答 (2)

回答No.2

プロセスの優先度は,WindowsAPIでできます. ↓(参考) http://tokyo.cool.ne.jp/kanain/APIHTM/Propri.html 加えて,タイマーにMMTimerを使えば,ほぼずれないと思います. ↓ http://www1.harenet.ne.jp/cgi-bin/cgiwrap/unaap/chtml/chtml.cgi?key=mmtimer

Elvin
質問者

お礼

参考URLありがとうございます!早速参考にしてプログラムを修正してみようと思います。どうもありがとうございました!!

  • S-Fuji
  • ベストアンサー率36% (592/1624)
回答No.1

 貴方のOSが判らないのですが。 Win2K等の場合、Ctrl+Alt+Deleteで、タスクマネージャーを起動し、「プロセス」タブの中で当該のプログラムを右クリックし、その中の「優先度の設定」で、優先度を上げてみて、如何でしょう。

Elvin
質問者

お礼

ご回答ありがとうございます!OSはWIN2Kを使ってます。タスクマネージャの「優先度の設定」は知りませんでした。大変参考になりました。どうもありがとうございます!早速優先度を「高」に設定してテストしてみました。今までのように頻繁にリズムがずれることは無くなりましたが、たまに若干ずれる時があります。さらに優先度が高い「リアルタイム」も試してみたいと思います。どうもありがとうございました。

関連するQ&A

  • Garagebandで一定のリズムの音を音声ファイルに書出す方法。

    Garagebandで一定のリズムの音を音声ファイルに書出す方法。 Garageband(またはその他の音楽ソフト)で一定のリズムの音(メトロノームのような音、メトロノームそのものでも構いません)を音声ファイルに書出し、運動のトレーニング用に使いたいのです。 iPod Touchユーザーで、メトロノームソフトは手に入ったのですが、ディスプレイを切ると自動的にメトロノームも止まってしまうので、電池消費が多くて困っています。またディスプレイを入れたままだと運動中にミスタッチが起こり、テンポが変わったりもします。 そこで、使うリズムは決まっているので、音声ファイル(AIFF?MP3?)でリズム音を作れないかと思っています。 音色は、耳障りな物でなければどんなものでも構いません。 macユーザーでOS10.5です。 よろしくお願い致します。

    • 締切済み
    • Mac
  • 一定間隔のタスク処理について

    現在、一定期間のタスク処理について悩んでいます。 あるプログラムをタスクトレイに常駐させています。 このプログラムは、DBにアクセスするプログラムで、15分間隔でDBにアクセスしようとしています。 当初は、  1.タイマーイベントで処理する。  2.Windowsのタスクを使用する。 と考えていたのですが、  1.タイマーのインターバル(最大)は、約65000で    15分は設定できない。  2.タスクは、プログラムが常駐している為、初回    実行のみ行われる。(つまりずっとタスク実行中    となる。) という問題にぶつかってしまいました。 何か良い方法はないでしょうか? http://oshiete1.goo.ne.jp/kotaeru.php3?q=571156 なども参考にはしてみたのですが・・・ どうかよろしくお願い致します。

  • visualbasic2005のタイマーについて

    visualbasic2005で一定の時間間隔で処理を行うタイマーコントロールについて質問があります。このタイマー機能を使った場合、処理時間が厳密ではないということが分かりました。そこでマルチスレッドで厳密に一定時間間隔で処理を行う方法を考えています。マルチスレッドについてはvisualbasic2005ではBackground Workerというツールで可能だということが分かりました。しかし、Background Workerの中で一定時間間隔でメソッドを呼び出し処理をするプログラムの書き方がよく分かりません。 例えば、タイマーコントロールを用いずにマルチスレッドにより現在の時刻を表示するプログラムはどのようになるのでしょうか? お忙しい中申し訳ありませんが、お分かりになる方がいらっしゃいましたらよろしくお願いします。

  • 通電後、一定時間で切れるタイマーはありませんか。

    通電後、一定時間で切れるタイマーはありませんか。 通電時間で切れるコンセントタイマー探してます 毎回セットしなくても通電時間(10分から3時間程度)で切れるようなコンセントタイマーを探しています。 くせ毛を直すアイロンみたいなものを使っているのですが、何度か切り忘れたことがあり、怖い思いをしたことがあります。その他、就寝時に本を読む際の豆電球のタイマーなどにも使えると思っています。 毎回時間をセットするものか、24時間プログラムタイプはあるのですが、 毎回タイマーをセットするのはわずらわしいし、規則的に使うものでもないのでプログラムするものも違うなと思います。 通電したらタイマーがオンになって、時間がきた時に電源を切る。 また電源をつけたらタイマーがオンになる…を繰り返すものがいいです。 その上、タイマーが働いて切れたのかどうか分かるようなランプなどがついていればなおいいです。 過去に似たような質問があったので文章を流用させていただきました。

  • 他のアプリからVBのFormへフォーカスを戻したい。

    「他のアプリケーションにフォーカスがある場合に、 ショートカットキー(例:Ctrl+a)を押すと、 VBのFormへフォーカスが移る」ということをVBでプログラムしたいのですが、APIを使うのでしょうか? VBのイベントなどを使用したプログラミングの経験はあるのですが、APIの使い方は分かりません。 どなたか教えてください。よろしくおねがいします。

  • アプリケーションのロックについて

    現在開発中のアプリケーションで、一定時間操作しないとロックが掛かるようにしたいのですが、タイマーコントロールだけで実現できるのでしょうか。 いろいろ試してみたのですが、うまくいかないので悩んでいます。 「ユーザーがアプリケーションにまったく触っていない」というのを取得できるようなものはあるのでしょうか。

  • 他のアプリ使用中にメッセージを表示させるには?

    Micorosoft Visual Studio 2008を 使用し、プログラミングを行っています。 そこで質問なのですが、 例えばメールやゲームソフトなど他のアプリケーションを 使用中にVBでメッセージをうまく表示させる方法はありますでしょうか? そうしたい理由はといいますと 単純にVBでMessageBoxで表示させると 画面最前に表示してしまうためゲーム中など 他の操作のジャマになってしまうからです。 そのため他の操作のジャマにならないよう、かつ VBによるメッセージ表示をさせたいのですが 何か方法はありますでしょうか? よろしくお願いします

  • VBとVC++について

    タイトルのVBについてですが、プログラミング言語というのはわかるのですが、具体的にどの様な事に特徴があってメリットといいますか使いやすさ!?などはどうなのでしょうか? また、excel等にもVBが入っていると思うのですが(マクロ)、その他、企業などでもアプリケーション開発などにVBにて行っているようですが、具体的にどの様なアプリケーションソフトウェアがあるのでしょうか? プログラミングは初心者ですが、VBは学びやすく分かりやすいでしょうか? また、VBの将来的な展望はどうなのでしょうか? VBとVC++の用途の違いはなんでしょうか? ご教授お願いいたします。

  • アプリケーションソフトの自動化プログラミング

    プログラミングについては初心者です。よろしくお願いします。 アプリケーションソフト(ROM書き込み用)をマウス操作でなく、外部スイッチなどで操作したいと考えています。VBでスクリプトを組むような方法を取ればできると思うのですが、ここで質問です。 1.プログラムから制御可能なアプリかどうかは何を調べればよいのでしょうか? ActiveXに対応しているかどうかということでしょうか? 2.制御可能とした場合、アプリ側の制御マニュアルのようなものが必要になると思うのですが、メーカーに何といって要求すればよいのでしょうか?

  • 一定周期実行プログラム

    UNIX環境での、プログラムを一定周期実行させるプログラミング方法についてご教授下さい。 例えば、50msの周期で、無限ループするプログラムです。 while(1) { t1=clock(); (処理1); t2=clock(); passtime=(t2-t1)/CLOCKS_PER_SEC; time=0.05-passtime; tmp=(int)(1000000*time); usleep(tmp); } まず、思い付いたプログラムは、処理1に掛かった時間を計算し、50msから処理に掛かった時間を引いた時間をsleepで待たせるプログラムです。clock()は精度が低いようですが・・・他に何かいい方法はないでしょうか?

専門家に質問してみよう