Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2009/06/08 (月)

MCIでBGMを鳴らすよ!

| 00:10 | MCIでBGMを鳴らすよ! - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - MCIでBGMを鳴らすよ! - 雪乃☆雫のなでしこ日和 MCIでBGMを鳴らすよ! - 雪乃☆雫のなでしこ日和 のブックマークコメント

 あちこち調べて、こんな関数にしてみました。

 これで、「BGM停止」するまではループ再生します。

 BGM停止でフェードアウトして止まります。

#------------------------------------------------------------
●BGM再生(Mを)
#    「M」を「BGM」でMCI開く
#  V=500  #ボリューム初期値
  「open "{M}" alias {BGM} type mpegvideo」をMCI送信。  #ファイル開く
#  「setaudio {BGM} volume to {V}」をMCI送信。  #ボリューム設定
    「play BGM repeat」をMCI送信。    #繰り返し再生

●BGM停止
  「status {BGM} volume」をMCI送信。V=それ。  #現在のボリュームを取得。
  VV=V。      #現在のボリュームを記憶
  10      #繰り返しボリュームをマイナス
    V=V-50。   #していきフェードアウト
    もし、V≦0ならば、V=0  #0以下を指定するとエラーになる為0にする
    「setaudio {BGM} volume to {V}」をMCI送信。  #ボリューム設定
    1秒待つ。
    もし、V=0ならば抜ける。
    「BGM」をMCI停止。
    V=VV。  #ボリュームを戻す(戻さないとなぜかサクラが鳴らなくなった!)
    「setaudio {BGM} volume to {V}」をMCI送信。
    「BGM」をMCI閉じる。  #必ず閉じる
#------------------------------------------------------------

 ちょっと無理やり系?

 もう少し、改造したいところです。

 最大の問題は、フェードしてる途中で強制終了したら、ボリュームが戻らないって事かなあ。

 あと、引数をつけて、何秒でフェードするかを設定できるようにしたほうがいいかも?

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20090608