「なでしこ」で音楽再生

さて、連載物になってまいりました。
今日は「停止」ができるようにしましょう。
ボタンを追加して、停止の処理をさせればいいわけです。


ここで、MCIの仕様を見てみましょう。
このサイトが便利かも。*1

音楽を停止する stop ABC

ABCとはこのブログでの説明で言う「整理券番号1番」ですね。
「stop 整理券番号1番」をMCI送信。
これで、停止ができるわけです。
では、ボタン付けてごちゃごちゃ書いてみるだけですね。

MCIフラグは0。
「*.mp3;*.wav;*.wma」のファイル選択を対象曲に代入。
もし、それが空なら終わる。
プレイボタンとはボタン。
そのテキストは「再生」。
これをクリックした時は
   もし、MCIフラグが0なら、
      対象曲を「整理券番号1番」でMCI開く。
      「play 整理券番号1番」をMCI送信。
      MCIフラグは1。
停止ボタンとはボタン。
そのテキストは「停止」。
これをクリックした時は
   もし、MCIフラグが1なら、
      「stop 整理券番号1番」をMCI送信。
母艦を閉じた時は〜
   もし、MCIフラグが1なら
      「整理券番号1番」をMCI閉じる。

MCIフラグが1、ということは再生中ということなので、停止コマンドを送ってもおkです。
ただし問題が。
停止を押してから、再生を押しても、MCIフラグが変わってないので再生されません。
ということで、MCIフラグを一旦外し(また今度使うかも)、再生フラグを使って、再生状態がわかるようにしましょう。

再生フラグは0。
「*.mp3;*.wav;*.wma」のファイル選択を対象曲に代入。
もし、それが空なら終わる。
対象曲を「整理券番号1番」でMCI開く。 #先にMCIは開いておきます
プレイボタンとはボタン。
そのテキストは「再生」。
これをクリックした時は
   もし、再生フラグが0なら、
      「play 整理券番号1番」をMCI送信。
      再生フラグは1。
停止ボタンとはボタン。
そのテキストは「停止」。
これをクリックした時は
   もし、再生フラグが1なら、
      「stop 整理券番号1番」をMCI送信。
      再生フラグは0。
母艦を閉じた時は〜
   「整理券番号1番」をMCI閉じる。

ただ、これを実行すると、不具合があるのが判ります。
停止を押して、再生を押すと、停止を押した時間から始まります。
つまり一時停止なのです。
これは、停止だけでは再生を開始する秒数が変わらないからです。
再生時間を変えるには「seek ABC to 〜〜」というものを送信すればよいです。
それを入れて、問題解決ver。

再生フラグは0。
「*.mp3;*.wav;*.wma」のファイル選択を対象曲に代入。
もし、それが空なら終わる。
対象曲を「整理券番号1番」でMCI開く。
プレイボタンとはボタン。
そのテキストは「再生」。
これをクリックした時は
   もし、再生フラグが0なら、
      「play 整理券番号1番」をMCI送信。
      再生フラグは1。
停止ボタンとはボタン。
そのテキストは「停止」。
これをクリックした時は
   もし、再生フラグが1なら、
      「stop 整理券番号1番」をMCI送信。
      「seek 整理券番号1番 to 0」をMCI送信
      再生フラグは0。
母艦を閉じた時は〜
   「整理券番号1番」をMCI閉じる。

これでおk。
次回は曲選択ボタンを実装したりしましょう。