簡易アラーム(カウントダウン)

rubyでカウントダウンアラームを作ってみました。

  • 実行時に「○○分」の数値を引数として渡す
  • 10分前に1回、5分前に3回、時間になったら10回ビープ音が鳴る
ビープ音を鳴らすには?

Windows環境のため、rubyプログラム中で echo ^G コマンド(バッチファイルにビープ音を鳴らしたいのですが、やり方を知っている人はぜ... - Yahoo!知恵袋より)を使おうとしたところ、上手くいきませんでした。
^G が Ctrl+G として認識されないようです。
最終的には、http://yakinikunotare.boo.jp/orebase/index.php?Ruby%2Fbeep%B2%BB%A4%F2%CC%C4%A4%E9%A4%B9より、rubyのまま print "\a" で行けることがわかりました。

def countdown(min)
  sleep(min*60)
end

def beep
  print "\a"   # ビープ音
end

def set_alarm(min, frequency=1)
  countdown(min)
  frequency.times{beep}
end



unless ARGV.empty?
  minutes = ARGV[0].to_i   # ARGV[0]はStringなので、数値に変換

  unless minutes.zero?
    if minutes > 10
      set_alarm(minutes-10)   # 10分前のアラーム
      minutes = 10
    end

    if minutes > 5
      set_alarm(minutes-5, 3)   # 5分前のアラーム
      minutes = 5
    end

    set_alarm(minutes, 10)   # 最終アラーム
  end
end