• 締切済み

ビープ音をなめらかに鳴らしたい

// まずソースをご覧ください[C#] // ビープ音で和音を出す private void start_Click(object sender, EventArgs e) { for (int i = 0; i < 100; i++) { // 1600分音符をforでまわしてドミソの和音に聞こえるようにしてみる Play2("C", 1600); Play2("E", 1600); Play2("G", 1600); } } protected static void Play2(string note,int lenght) { Dictionary<string, int> onkai = new Dictionary<string, int>(); onkai["REST"] = 0; onkai["GbelowC"] = 196; onkai["A"] = 220; onkai["A_"] = 233; onkai["B"] = 247; onkai["C"] = 262; onkai["C_"] = 277; onkai["D"] = 294; onkai["D_"] = 311; onkai["E"] = 330; onkai["F"] = 349; onkai["F_"] = 370; onkai["G"] = 392; onkai["G_"] = 415; //ビープ音を鳴らす Console.Beep((int)onkai[note], 1600 / lenght);  } このソースをコンパイルしてもうまくいきませんでした プルルルルルルルル・・・という連続音になるだけで和音になりません>< Console.Beepを使うと必ず前後に空白が入るらしいので他の方法をさがしてみましたがお手上げです ご教授よろしくお願いします^^;

みんなの回答

noname#62605
noname#62605
回答No.1

C#に関してはあまり知識がないのですが、ソースを拝見したところ実行結果としてC音とE音をG音(ドミソ)と100回なってませんか?? だとしたらプログラムの記述どおり処理されています。(和音には残念ながらなりません。) きっとBeepはシステム依存になってしまうのでシステムの仕様などが分かればそれなりの回答も出来るのですが…。 音源の仕様が和音を出せる仕様なのであれば、きっと鳴らしたい音をためて一気にPlayするようなメソッドがあるような気がします。

satosi3141
質問者

お礼

遅くなってすみません。回答ありがとうございます。 Colsole.Beepだと1秒に1000回しか実行できないので理論上不可能みたいです。 そこでカーネルモードドライバで直接デバイスを叩くことにしましたが、3和音以上は厳しいでした。。。 ポイント遅くなってすみません^^;;

関連するQ&A

  • ビープ音を消したい

    XPproでビープ音を消したいです。 デバイスマネージャにプラグアンドプレイではないドライバはありませんでした。 net stop beepのように一時的なものではありません。 よろしくおねがいいたします。

  • ビープ音について

    solaris10のビープ音について質問させて頂きます。 solaris10では、ビープ音を鳴らすのに、コンソール画面からプログラム(個人的に作成したプログラム)を起動させなければ、鳴らないようなのですが、コンソール画面なしでビープ音を鳴らすようにするにはどの様にすればよいか、ご教授御願い致します。 プログラムは下記のようになっております。 /* sample.c */ #include <curses.h> #include <unctrl.h> #include <unistd.h> #include <stdio.h> #include <time.h> void main() { initscr(); while(1) { beep(); sleep(1); } endwin(); } コンパイルは下記のようにしています。 cc -c sample.c cc -o sample sample.o -lcurses 上記にて作成したsampleを、コンソールのコマンドにて実行するとアラームは正常になります。 実行ファイルのsampleをアイコン作成にてアイコンを作成(端末に設定したくない)し、実行するとビープ音はならない。 以上、ご教授御願い致します。

  • ビープ音が鳴りません

    パソコンを自作したのですが、ビープ用スピーカを接続しても、起動時などにビープ音が鳴りません。 正確に言えば、PC完成後の1・2回は鳴っていたのですが、その後起動時などに状態を示すビープ音を含め、全く鳴らなくなりました。 システム自体は問題ないので、毎回きちんと起動できるのでいいわけですが、ビープ音が鳴らないというのは気持ち悪くていやなんです。 スピーカの故障かと思い、ビープ用スピーカを付け替えましたが、鳴りません。 また、「スタート」→ファイル名を指定実行に「devmgmt.msc」と入力→「デバイスマネージャ」→「プラグアンドプレイではないドライバ」の項を展開→「Beep」をダブルクリック、して確認しましたが、「正常です」と出ており、原因がわかりません。 どなたかわかる方、ご教授下さい。 よろしくお願いいたします。 なお、OSはWindows 7 64bit版、マザボはGigabyteの「P55A-UD3」を使用しております。

  • ビープ音を連続して鳴らす

    何か時間のかかる処理が終わったとき、ユーザーに処理が終わったことをビープ音で知らせたいと思います。1回だと気付きにくいので3回「ピッピッピッ」と鳴らしたいのですが、Beep を3回記述しても鳴りません。苦し紛れに下記の関数を作って間に合わせているのですが、間隔を1秒とっているのでちょっと間延びした感じです。もっとリズミカルに鳴らしたいのですが、いい方法があったらどなたか教えてください。 -------------------------------------------------------------------- Public Function beep3()   Dim i As Integer   Dim dend As Double   For i = 1 To 3     dend = Timer + 1     Beep     Do       If Timer > dend Then         Exit Do       End If       DoEvents     Loop   Next i End Function

  • なぜかビープ音が鳴ります(C言語)

    下記のプログラムはCHAR_SETの値に応じてASCII文字セットと拡張文字セットのどちらかを表示するようにコンパイルするものです。 #include <stdio.h> /* CHAR_SETを256または128のいずれかの値に定義する */ #define CHAR_SET 256 int main(void) { int i; #if CHAR_SET == 256 printf("すべてのASCII文字セットと拡張子を表示する\n"); #else printf("ASCII文字セットのみを表示する\n"); #endif for(i=0; i<CHAR_SET; i++) printf("%c", i); return 0; } 【質問】 このプログラムを実行するとビープ音が鳴るのですが、それはなぜでしょうか? いろいろ試して分かっていることは、CHAR_SETを512にすると2回鳴ることです。 ちなみに、「VisualC++.net Standard Version 2003」でコンパイルしました。 この問題に知識のある方、回答をお願い致します。

  • C#について

    using System; class AddressBook: PhoneBook { private string address; public AddressBook() : base() { address=""; } public void Input() { base.Input(); Console.Write("住所?"); string address=Console.ReadLine(); } public void Writes() { base.Write(); Console.WriteLine("住所:{0}",address); } } class kadai62 { public static void Main() { Console.Write("電話帳に入力する人数を入れてください:"); int n = int.Parse(Console.ReadLine()); AddressBook[] pb = new AddressBook[n]; int i; for (i = 0; i < pb.Length; i++) { pb[i] = new AddressBook(); Console.WriteLine("{0}番目を入力してください.", i+1); pb[i].Input(); } Console.WriteLine(); while(true) { Console.Write("どこから探しますか?[1:氏名,2:自宅電話,3:携帯電話,0:終了] "); int t = int.Parse(Console.ReadLine()); if (t == 0) break; Console.Write("探す文字列は?"); string s = Console.ReadLine(); for (i = 0; i < pb.Length; i++) { if (pb[i].Search(t, s)) pb[i].Writes(); } } } } このプログラムで public void Writes() { base.Write(); Console.WriteLine("住所:{0}",address); } のaddressが出力されません・・どうすれば 出力されますか?

  • ビープ音が鳴り続けて困っています

    パソコンを自作したのですが、 起動するとBIOS画面は表示されるんですけど 起動からずっとビープ音が鳴り続けています。 ピープーピープー…と救急車のようなビープ音が鳴っています。 CPUファンも正常に回っていますし、CPU・メモリ・HDD・CD-R/RW全て認識されています。 OSはまだインストールしていません(怖くてできません^^;) マザーボード・i915Ga-E(J) CPU・Pen4 2.80MHz メモリー・DDR PC3200 CL3 512MB*2(バルク) VGA・nVIDIA GeForce6200 256MB DDR(128bit) PCI Express*16 こんな感じです。 すごく困っています…解決に導いてくれる回答お待ちしています。 どうか、よろしくお願いします。

  • /a ビープ音 鳴らない

    Microsoft Visual C++ 2008 Express Edition windows vista hp printf("\a");でのビープ音が鳴りません。 プログラム入力ミスの可能性もあるので念のため、公開されているソースプログラムで実行もしています。 デバイスマネージャーからbeepの設定がシステムになっていたので、自動にしてみても鳴りませんでした。 右下のwindowsのサウンド設定があり、windowsの終了に流す音楽等を決める項目がありそこがあやしいと思い大体試してみましたが鳴りませんでした。 環境によっては鳴らないみたいですが、マイナーな環境でもなさそうですし困っています。 改善できる可能性のあることがあればよろしくお願いします。

  • ビープ音はどこから発しているのでしょうか(2)

    グラボを取り外した内部写真を添付しましたので、新たなコメントありましたらよろしくお願いします。 みなさんいろいろなご意見いただき、ありがとうございます。 まあ、交換してみないとわかないようですね。 ZENO888さんへ >>写真を見ると、C-MOSバッテリーの右上・PCIバスの右にある黒い円柱状で真ん中に穴のある素子がブザーだと思われます<< 添付の写真でC-MOSバッテリーとPCIバスとの間の上にあるのがスピーカであると思われるということですが、 ということはマザーボード側にあることなので、ケース交換時、なにもしなくてもよいということになりますね。 実際、ビープ音はCPUとPCI-Eの間の左側付近で聞こえます。 amanda97さんへ >>ケースの底(裏側)にあります<< 実際、ビープ音はCPUとPCI-Eの間の左側付近で聞こえますが、 その付近にマザーボードの端子からケースに出ているスピーカらしきものは 見あたりません。 別途ビープ音スピーカをケースに取り付けることになるのでしょうか。 でも端子はマザーボードにはありません。むむむむむ multi-cadさんへ >>電源スイッチとかつなげるピンがある区画がありますよね。 そこに挿している黒い円柱から線が出ているのがそうではないですか?<< 添付の写真で画面左下にフロントパネルについている電源スイッチ・電源LED・リセット・HDDの配線およびマザーボードの端子がありますが、黒い円柱から線は出ていません。

  • ビープ音に付いて。。。

    今回、友人から友人の兄が自作した、パソコンを貰いました。 今は「FMV-E600」を使ってますが、それから貰ったパソコンに移植しようと思ってます。 貰ったパソコンは、   M/B GIGABYTE GA-81G1000-G   CPU Pentium 4-204GHz Prescott FSB/533 1M SL7E8   HDD 40G メモリーが無かったので、   Memory リテール品 メーカー elpida model PC3200 DDR 400MHz 型番 D400-1G*2       です。 そこで質問なのですが、実は1年程通電せずに置いてあって、 今回貰って来て、windowsをインストールする為に、 起動しようとしましたが、問題があります。 メモリーとディスプレイを接続して起動しましたが、 HDDは起動してますが、プレイが反応しなかったので、 友人から、「AOpen GF4Ti4200-DVC128」を借りてきて、 改めて起動した所、本体からビープ音が鳴ってしまい、 「ピッ、ピーーー」とセットアップメニューになっても消えません。 メモリーなのか、VGAカードなのか、本体なのか、 マニュアルも今読んでるんですが、中々分かりません。。 今時点では原因は何か分からないので、大まかですいませんが、 解る方宜しくお願いします。