c言語とMCIを使ってMIDI形式の音楽データを再生する事は出来るのですが、当然曲が終わると再生も終わります。しかしゲームのBGMとして使いたいので、曲をループさせたいのですがその方法が分かりません。
前にOKwebで同じ様な質問を見付けた覚えがありますが、その時はすぐに必要というわけではなかったので、完全には読みませんでした。そしていざ調べようと検索したのですが、今度はこれといったものが見付からず、質問させて頂きます。
MCI_NOTIFYの様な記述が必要だった様な気がするのですが、ご存知の方おられましたら回答を宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
★mciSendString() ならアドバイス出来るけど。
・MCI は mciSendCommand() それとも mciSendString() のどちらですか?
MCI_NOTIFY という事はやっぱ mciSendCommand() ですよね。
指定したウィンドウに MM_MCINOTIFY メッセージをポストするので
『MM_MCINOTIFY』を処理して再生するようにすればいいと思う。
・mciSendString() の方なら次のような感じで簡単に出来ます。
mciSendString( TEXT("Play Music NOTIFY"), NULL, 0, hWnd );
↑
『hWnd』がウインドウのハンドル。
『Play Music』が識別文字列。
・下に mciSendString() 関数によるマクロ群を紹介します。
サンプル:
#define FuncMCI_Open(s) mciSendString(s,NULL,0,NULL)
#define FuncMCI_Close() mciSendString(TEXT("Close Music"),NULL,0,NULL)
#define FuncMCI_CloseAll() mciSendString(TEXT("Close All"),NULL,0,NULL)
#define FuncMCI_PlayNotify(h) mciSendString(TEXT("Play Music NOTIFY"),NULL,0,h)
#define FuncMCI_Play() mciSendString(TEXT("Play Music"),NULL,0,NULL)
#define FuncMCI_Stop() mciSendString(TEXT("Stop Music"),NULL,0,NULL)
#define FuncMCI_Pause() mciSendString(TEXT("Pause Music"),NULL,0,NULL)
#define FuncMCI_Resume() mciSendString(TEXT("Resume Music"),NULL,0,NULL)
使い方:
// 再生
FuncMCI_Open( ("abc.mid") );
FuncMCI_PlayNotify( hWnd ); ←再生を繰り返す指定
※再生を繰り返さない場合は FuncMCI_Play() を使う。
// 停止
FuncMCI_Stop();
FuncMCI_Close();
// 一時停止
FuncMCI_Pause();
// 再開
FuncMCI_Resume();
その他:
・マルチメディアについてはあまり詳しくないので次のリンクを参考にして下さい。
私が以前ネット検索で見つけて参考としたものです。
未整理のためリンクだけ載せます。
http://tgws.fromc.jp/prog/prog10.html
http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/98 …
http://www.mb.ccnw.ne.jp/garger-studio/vbgame/11 …
http://hp.vector.co.jp/authors/VA030681/VBTips/M …
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.c …
http://homepage3.nifty.com/goldenchild/mci.htm
http://www007.upp.so-net.ne.jp/hama_d/newapi/cha …
http://www.bekkoame.ne.jp/i/mr.manri/MCI/index.h …
http://homepage1.nifty.com/rucio/main/technique/ …
http://msdn.microsoft.com/library/en-us/multimed …
上記のは主に mciSendString() 関数について調べた結果です。
最後に:
・調べるなら『MM_MCINOTIFY』で検索してみて下さい。
・以上。下の『参考URL』もどうぞ。
参考URL:http://wisdom.sakura.ne.jp/system/winapi/media/m …
回答有難う御座います。
私が使用していたのはMCI は mciSendCommand()の方ですが、mciSendString()の方も知っていたので、試してみました。しかし音は出せますがループ再生させる事が出来ず、MM_MCINOTIFYで検索してみた所ようやくループが出来る様になりました。多くのサイトの紹介、有難う御座います。全て見て参考にさせて頂きました。
私と同じ疑問を持った人のために、下記に一応私がネットで知った書き方を載せておきます。
mciSendCommand(
0, MCI_OPEN, MCI_OPEN_TYPE | ↓ここを足します
MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT | MCI_NOTIFY,
(DWORD)&mop);
mciSendCommand(mop.wDeviceID, MCI_PLAY, 0, 0);
と書くと、MCIの処理が終了するとNOTIFYメッセージが来るらしい。
すると、来た時にMM_MCINOTIFYが呼び出されるらしい。
case MM_MCINOTIFY:
if(wp!=MCI_NOTIFY_SUCCESSFUL){
MessageBox(hWnd,"異常終了しました",NULL,MB_OK);
break;
}
mciSendCommand((MCIDEVICEID)lp,MCI_SEEK,MCI_SEEK_TO_START,0);
mciSendCommand((MCIDEVICEID)lp,MCI_PLAY,MCI_NOTIFY,(DWORD)&mop);
return 0;
上の二つを書いた所、MIDIのループ再生に成功しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 作詞・作曲 iMacでMIDIデータを良い音で再生するための音源をインストールする方法を教えて下さい 4 2022/07/09 17:51
- デスクトップパソコン キャプチャーボードDRECAP DC-HC4のドライバー 1 2022/05/30 15:40
- C言語・C++・C# プログラム内から、MIDIファイルの一部分だけを再生する方法 1 2023/02/15 11:08
- Windows 10 windows10のクリーンインストールが完了出来ない 2 2022/06/04 13:33
- 楽器・演奏 短調の曲は、なぜ短調のハモニカでは吹けず、長調のハモニカでは完璧に吹けるのかの理由が知りたいです 4 2023/04/20 10:56
- 邦楽 思い出せない歌のタイトル/歌詞について 質問が埋もれてしまったので二度目失礼します 学生時代(かなり 1 2022/04/08 23:21
- その他(AV機器・カメラ) 電子ピアノに内蔵されているデモ曲を、PCやCDに入れて聴けるようにできますか? 以下、前回質問した内 2 2022/05/02 14:36
- 作詞・作曲 DTM DAWとmidiキーボードについて 1 2022/10/20 16:41
- その他(SNS・コミュニケーションサービス) 【至急】Microsoft teamsログインできないループ・・ 3 2023/05/17 13:17
- 作詞・作曲 MIDIキーボード内蔵オーディオインターフェイス 1 2022/06/04 08:35
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DVD-RをCD-Rのように利用出来る...
-
カーナビで、SDカードでMP3を再...
-
つばさの党のマトモな所は、何...
-
Amazonmusicで、再生履歴の機能...
-
DVDプレヤーだと 再生できない
-
スマホをカーナビのBluetoothに...
-
macのフリーソフト 同じ曲の一...
-
老化して硬くなった 生ゴム ...
-
GOMプレーヤーの再生画面サイズ...
-
カーオーディオで再生できないC...
-
VLC Player, ループ再生の設定
-
SDカードの音楽についてついて...
-
DirectShowを使用したmp3再生...
-
カーステレオからCDが出なくな...
-
ズーム再生機能のあるマルチメ...
-
TMNのEXPOを逆再生すると何が聞...
-
Xアプリ繰り返し再生の設定に...
-
GOMPLAYERがスムーズに動かない。
-
google の画像検索のところで前...
-
adobe readerスライドショーの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DVD-RをCD-Rのように利用出来る...
-
スマホをカーナビのBluetoothに...
-
Amazonmusicで、再生履歴の機能...
-
google の画像検索のところで前...
-
老化して硬くなった 生ゴム ...
-
1,5倍速1,75倍速2倍速 それぞれ...
-
歯は抜けたり欠けたり折れたり...
-
再生砕石の利点の欠点
-
USBに保存した音楽を希望順に再...
-
VLC Player, ループ再生の設定
-
富士通WinDVDの再生速度の変え方
-
カーオーディオで再生できないC...
-
魔法科高校の劣等生の司波達也...
-
動画再生ソフトでスムーズに早...
-
「再生」「再建」を意味する英...
-
再生回数を調べるには(Windows...
-
SDカードの音楽についてついて...
-
スライドショーの最後で挿入し...
-
DVDを再生すると本編から音が出...
-
【音楽再生アプリ】リストのリ...
おすすめ情報