Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2017/09/19 (火)

なでしこ3でラーメンタイマー。音も鳴らすよ!

| 07:58 | なでしこ3でラーメンタイマー。音も鳴らすよ! - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - なでしこ3でラーメンタイマー。音も鳴らすよ! - 雪乃☆雫のなでしこ日和 なでしこ3でラーメンタイマー。音も鳴らすよ! - 雪乃☆雫のなでしこ日和 のブックマークコメント

 なでしこ1で作った15パズルは、手数のカウント機能とタイムトライアル機能がありました。

 手数のカウントは、すぐにもカンタンにつけれる予定なんだけど、タイマーはどうしたらいいんですかね・・・っと見ていくと、「秒毎」とゆう命令がありました!

 文字通り指定した秒毎に、指定した関数を繰り返し実行するというものです。

 マニュアルの利用例に、「」を1秒毎表示する、時計のサンプルが載っています。

https://nadesi.com/doc3/index.php?plugin_system%252F%E7%A7%92%E6%AF%8E

 ほぼ、コレだ! と思うところなのですが、しかし、コレを止める命令がないっぽい?

 なでしこ1のタイマー部品なら、「停止」が出来たんだけど・・・こっちは、一実行したら、もう永久に続けるしかない的な・・・???(´д`;

 時計と違って、完成したら、止めなくちゃ。

 でもまあ、フラグを立てて、必要の無い時にはなにもしないようにしておけば、取りあえずタイマーとして使えそう


 とゆうわけで、タイマーの実験として3分固定のカウントダウンタイマー。いわゆるラーメンタイマーを作ってみました。

 ところで、先に作った時間加算関数に、とんでもない違いが発覚Σ(゜д゜;

 なななんと、秒のところにもナゼか60を掛けてしまっていたので、秒を加算減算するような計算の場合は、結果が大変なことに・・・;;;

 既にモノスゴクこっりと直していますw

 でも、も実際に使っているのはプラグインの方。

 むむむぅ、便利~♪

#-----------------------------------------------------------------------
<!-- なでしこを使うために必要なスクリプト -->
<script src="https://nadesi.com/v3/0.1.5/release/wnako3.js?run"></script>
<!-- うぇいくさまの日付時計算プラグイン -->
<script src="http://weyk.la.coocan.jp/weyk/nadesiko3/release/plugin_weykdatetime.js"></script>
<!-- type="なでしこ" のスクリプトが実行される -->
<script type="なでしこ">
#-----------------------------------------------------------------------
# ここになでしこのプログラムを記述
#-----------------------------------------------------------------------
分=3。秒=0。

終了=0。秒=秒を2でゼロ埋めタイマーオフ。
「#time」に「{分}:{秒}」をDOMテキスト設定。
スタートボタン作成。

「ラーメンタイマー」を1秒毎。

●タイマー開始
  タイマーオン。
  「#start」の「disabled」を「disabled」にDOM属性設定。  #スタートボタンを押せなくする。
  に「+0:{分}:{秒}」を時間加算して終了代入ここまで。

●ラーメンタイマー
  もしタイマーオンならば、
    終了秒差を残秒数に代入。
    もし、残秒数<0ならば、
      「ラーメンできたよ!!」と言う。
      タイマーオフ。「#time」に「{分}:{秒}」をDOMテキスト設定。
      スタートボタン作成。
    違えば、
      残分=残秒数/60を切捨。残秒=残秒数%60を2でゼロ埋め。
      「#time」に「{残分}:{残秒}」をDOMテキスト設定。
    ここまで。
  ここまで。
ここまで。

●スタートボタン作成
  「#button」に「<button id="start">スタート!</button>」をDOM_HTML設定。
  「#start」の「onclick」に「タイマー開始」をDOMイベント設定。
ここまで。
#-----------------------------------------------------------------------
</script>

<body>
    <H1>なでしこ3てすと~ラーメンタイマー</H1>
    <HR>
    <input id="time" type="text" readonly="on" size="4" style="font-size:32px; text-align:center;">
    <span id="button"></span>
#-----------------------------------------------------------------------

 先に書いたとうり、タイマーとゆう変数オフオンをつけてラーメンタイマー関数し、オンの時だけ処理を行うようにしただけです。

 うまくいっているっぽいです。

 コレで同様にして、15パズルのタイムトライアルも作れそう


 タイマーってる時にスタートボタンを押すとリセットしてしまうので、押せないように、タイマー開始時にスタートボタンの属性を「disabled」にしてみました。

 とっところが、この「disabled」はオンオフするような性質のものではないらしく、属性「disabled」の値は「disabled」に固定・・・ってか、値なしで属性だけ書いてもOKなヤツらしいのですよ。

 一応念のため、「off」とか「false」とか「no」とかとか試したけどダメっぽい。一旦無効化したら、もう二度と有効化できないのかい???

 しようが無いので、やっつけで、もういちど<div>にスタートボタンを作り直すことに。

 上書きされて無効化した前のボタンは消えて、新しいスタートボタンが出来る感じですケド、見た目的には希望どうりです☆


 よしよし♪ ・・・と思ったのですが、ラーメンタイマー的には、タイマー終了時に音が鳴らないとかどうなんですか;

 タイマー終わるのを睨んでるくらいなら、時計見てるのといっこも変わらん;;;

 なでしこ3に音を出す的な命令は無いのですが、HTML5はなんと<audio>タグで音を鳴らすことが出来るようです!

 タイマー終了時に、このaudioを設置してやれば、音を鳴らせるんじゃないですか?!

 とゆうわけで、ボタンの下にアラーム用のdivを作り、「ラーメンできたよ!!」と言う前に、DOM_HTML設定でaudioを設置。

 「controls」属性をつけなければ、画面上には何も表示しませんが、「autoplay」属性をつけておくことで、設置と同時に鳴り始めます。

 よくある開くと同時に勝手に音が鳴り出すページは、こうゆう仕組みか?!

 アラームの停止は、やっぱりを設定することで、audioを消すコトにw

●ラーメンタイマー
  もしタイマーオンならば、
    終了秒差を残秒数に代入。
    もし、残秒数<0ならば、
      「#alarm」に「<audio src="alarm_75_8C.mp3" autoplay></audio>」をDOM_HTML設定。
      「ラーメンできたよ!!」と言う。
      「#alarm」にをDOM_HTML設定。
      タイマーオフ。「#time」に「{分}:{秒}」をDOMテキスト設定。
      スタートボタン作成。
    違えば、
      残分=残秒数/60を切捨。残秒=残秒数%60を2でゼロ埋め。
      「#time」に「{残分}:{残秒}」をDOMテキスト設定。
    ここまで。
  ここまで。
ここまで。

 そういえば、「サクラ」がバージョンアップしてたよ!

http://oto.chu.jp/top/

 ・・・といっても、素養が無いので、とうてい曲など作れないんですが、たったこんだけで、アラームっぽい音が完成w

 サクラは、ドレミで入れれんのが本当にいいよねぇ~♪

音色75 音階8 音符16 ン4【8【4 ド】【2 ッ】】

 なでしこ1ならこのまま鳴らせたんだけど・・・(なでしこで鳴らす場合は、音色は数値にしないとダメ)

 なでしこ3もストトン表記でMML演奏出来るようにならないかなぁ~w

 ともかく、MMLどころかaudioはMIDIファイルも鳴らせないっぽいので、何かでmp3とかに変換しなきゃないですねー。

 サクラでmp3保存できたらとても便利なんですが。

 でもまあ、無料で変換してくれるサイトもフリーソフトもいろいろありますからねぇ~☆


 でっ、ラーメンタイマー、音が鳴るバージョン。

http://www.geocities.jp/snowdrops890/wnako3_test/05_RamenTimer.html

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

2009/06/06 (土)

BGMを鳴らすよ!

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

【でし】

 永らく、お見限りでしたね(哀)

【せんせい】

 こーみえてもワタシは忙しいんですよ~。

 植物の世話はしないとならないし、課題は解決しないし、MCIはよくわかんないし・・・

 それにほら、なんと言ってもは、遊園地の猟奇殺人のナゾを解くという重要な任務が(笑)

【でし】

 結局、ゲーム三昧だったわけですね(嘆息)

【せんせい】

 まあ、っちもまだ解決はしていないわけですが、それはさておき・・・

 前までで、一通りの画面表示が出来上がりました。

 画像に加えて、もう一つ忘れてならない要素が音楽です。

【でし】

 よく言いますね~。

 以前、夜中にミュートにしてプレイして、効果音を聞かないと解けない謎に一晩ハマったんでしたよね?

【せんせい】

 しくしくしく(;_;)

 だから、そういうのも含めて、音は大事です。

 せっかくなので、DLしたきり使ってなかった「サクラ」で作ってみましょう。

【でし】

 サクラは、ドレミファで音が鳴らせるんですよね! すばらしい!

【せんせい】

 小学生の頃エレクトーンを習っていたし、CDEFでMMLも書けますけどねー。

 でも、基本アルファベットアレルギーだし、高度なことができるわけでもないから、ストトン表記のほうが楽かなー、というわけでこんなの作ってみました。

トラック1
音色(BrightPiano)音階5 音符4 テンポ180
ドレミファ ソッソッ 【2 ラファ↑ド↓ラ ソーッー】
ソファファファ ファミミミ ミレレレ ドミソー
ソファファファ ファミミミ ミレレミ ドーッー

トラック2
音色(BrightPiano)音階6 音符4 テンポ180
ドレミファ ソッソッ 【2 ラファ↑ド↓ラ ソーッー】
ソファファファ ファミミミ ミレレレ ドミソー
ソファファファ ファミミミ ミレレミ ドーッー

トラック3
音色(BrightPiano)音階5 音符2 テンポ180
【4 「ドミソ」】【2【2 「ドファラ」】「ドミソ」ッ】
【3【2「ファソシ」】【2「ドミソ」】】
【2「ファソシ」】「ドミソ」ッ

トラック4
音色(BrightPiano)音階4 音符1 テンポ180
ドドファド2ッ2ファド2ッ2
ソドソドソドソド2ッ2

【でし】

 っていうか、なにゆえ、こぎつね?!

【せんせい】

 気にしない

 単に、手元にあった昔の教本の一ページ目です(汗)

 さて、これ再生するにはどうするかというと…

【でし】

 MML演奏で、このMMLが直接なでしこで再生できるみたいです。すごいですね。

【せんせい】

 すごいんですけれど、演奏を止める命令が無いみたいなので、BGMとしては困りますですよ。次の画面に移るとき、止められないじゃないですか。

 ここはやはり、MIDIにしてから、サウンドの命令で再生したほうがいいみたいです。

【でし】

 ところで、「再生」と「MCI再生」は、何か違うんでしょうかねー。

【せんせい】

 ワタシに聞かないよーに(汗)

 たとえば、ただの「再生」のほうはWinAPI使用とかならわかるんですが、リファレンスの説明を見るかぎりでは、「内部的にはMCIを利用」と書かれていますね。

 あと、再生WAVファイルも再生できるようなのに、別に「WAV再生」命令があるのも謎ですね。BGMとしてMIDIを鳴らしつつ、WAVで効果音を鳴らす時に使うのかな?

 とりあえず、MIDIファイルを再生するだけなら

#-----BGM再生------------------------------------------------
「こぎつね.mid」を再生。
#------------------------------------------------------------

 でOKです。

 MCIのほうは、先に開く一手あります

【でし】

 ところで、一再生し終えたところで、とまりますね;

【せんせい】

 ーなんです。止められないのも困りますが、途中で止まるのも困ります。

 しかし、ループさせたり、ボリューム変更したりという命令は用意されていない様子なんですね。

 調べた限りでは、MCI送信を使って、直接MCIを制御するしかないようです。

 とゆうわけで、MCIについて学び中。課題が増える一方だ~;

 点滅カーソルのほうは、コードがスマートでないだけで、一応希望の動作はしていますから、こっちのほうが急務かなぁ。

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