• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C?DOS? プログラミングでwav,midiを鳴らしたいのですが)

C?DOS? プログラミングでwav,midiを鳴らす方法・関数

このQ&Aのポイント
  • C言語でwavやmidiを再生する方法についての質問です。現在大学でプログラミング中で、明日の発表に向けて準備をしていますが、wavやmidiの再生方法がわかりません。
  • Windowsでは、<mmsystem.h>をインクルードし、sndPlaySound関数を使用することでwavやmidiを再生することができるようですが、実際に試しても鳴らすことができません。
  • 同室の学生に相談したところ、コンパイラがWindows上で起動しているが、実際にはDOSで動作しているため、この方法では再生できない可能性があると言われました。具体的な解決方法を教えていただきたいです。

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

  • ベストアンサー
  • ceita
  • ベストアンサー率24% (304/1218)
回答No.4

実際のところ、あなたのやろうとしていることは、 私にとっても難しいことのように思います。 最初にやろうとしていた MMSYSTEM.Hをインクルードして、 sndPlaySoundというWindowsのAPIを呼び出すのは、 かなり正しいやり方だと思います。 ただし、これはVisual C++やWindows APIがわかっている人向けです。 先に紹介したWindows Platform SDKについて調べてみてください。 http://www.vector.co.jp/vpack/filearea/win95/prog/lib/index.html には他にもライブラリがあります。 ものによってはTurbo Cで動く物もあるかもしれません。 Turbo Cというのはすでに何年も前の製品で、 情報はかなり少ないように思います。

chamu109
質問者

お礼

音は時差があるままでしたが、発表としては優秀賞を獲得できました。 紹介していただいたモノを勉強してみたいと思います。 丁寧にURLまで紹介してくださって、本当にありがとうございました。これからは自分で見つけられるように精進します。

その他の回答 (3)

  • ceita
  • ベストアンサー率24% (304/1218)
回答No.3

えーと、最終的には何がしたいのでしょう? No.2の補足であなたがやっているのは、 system関数で、startというプログラムにwavを渡しているだけですよね? それって単に他のプログラムを呼び出すプログラムを書いただけで、 演奏する方法というのとはちょっと違うのですが? で、冒頭の質問なんですが、 何でもいいから音がなればいいのか、 ゲームやマルチメディアソフトのように、 ユーザ操作を伴うようなものを作りたいのか? 後者のようなソフトが作りたいなら、 他のプログラムにwavやMIDIを投げると、 その際に画面の制御が他のソフトに移って使い物にならないような気がするのですが?

chamu109
質問者

補足

やりたかったことは後者の、ユーザーからの入力に反応して音をならしたかったのです。 手がセンサの前を横切るとそれに反応して音を鳴らすと同時にモーターを回したかったのです。 おっしゃるとおり、ほかのプログラムに投げると、時差もでましたし、処理速度も遅くなってしまいモーターもすばやく回りませんました。 どのような方法があったのでしょうか。

  • ceita
  • ベストアンサー率24% (304/1218)
回答No.2

http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ プログラムを違った開発環境で組むには、 それなりに知識が必要です。 多分、数日から数週間はかかりますよ。 実際のところ、 素直にVisual C++を使うのが楽です。 どうしてもTurbo Cが使いたいなら、 上記のSDKを入れて使えば何とかなるかも知れません。 ならないかも知れませんが・・・。

chamu109
質問者

補足

#include <stdlib.h> して system("start ファイル名.wav"); をすると、一応鳴ることはなりました systemというDOSプロンプトに指令を出す関数で、startというwavを再生する?指令を実行して音を鳴らすようです。 一応鳴るにはなりましたが、 1、レスポンスが悪い 2、BGMと効果音の使い分けができない の欠点が。 1のレスポンスに関しては、メディアプレーヤーが立ち上がって鳴るようになってるので、もっと軽いソフトを使えば問題ないのかもしれません。 CPU自体も遅いですし・・・ 音を出す指令を送ってからプログラミングの次の行に移行するのも少し遅いようでそれも問題かと。 メディアプレイヤーより軽いソフトで試してみます。 何があるだろうか・・・ タイムラグは、2秒ほどのwavに対して0.2秒ほどです

  • ceita
  • ベストアンサー率24% (304/1218)
回答No.1

Turbo Cは結構古い開発環境のために、 Windows用のヘッダがないというせいのように思います。 MicrosoftのSDKを入れればいけるのかもしれませんが。

chamu109
質問者

補足

ヘッダはマイクロソフトほオフィシャルサイトでダウンロードできるのでしょうか? サイト内検索「ヘッダー」や「MMSYSTEM.H」でもピンとくるものがないのですが。

関連するQ&A

専門家に質問してみよう