AutoHotKey_Lで、メディアプレーヤーを目覚ましアラームに。

 快適な目覚めのためには、時間をかけて徐々に目覚める必要があり、それに音楽を使うというのは知られた方法だが、音量までタイマー操作できるハード/ソフトってそうなくね? てかAHKで操作すればよくね? というわけで書いた。

 ウチはサブのオーディオデバイスのみスピーカーに繋がっている構成なので、出力するオーディオデバイスが選択できて、かつシンプルなプレーヤーということでQonohaを使った。自由度それなりに書いたので、その辺は各自適当に。

;--------------------------------------------------------------------------------------
; Qonoha
;--------------------------------------------------------------------------------------
#IfWinActive ahk_class QonohaPlayerMainWnd

F12::
  SetTimer, AAlarmRun, Off
  ;~ TipView()

  Loop {
    InputBox, AlarmTimeSet, AudioAlarm, アラーム時刻を24時間表記で入力してください`n例:午後1時5分 => 1305, , , 150
    if ErrorLevel
      return
    if RegExMatch(AlarmTimeSet, "([0-1][0-9]|2[0-3])([0-5][0-9])", $)
      break
  }
  AlarmH := $1
  AlarmM := $2

  AlarmTime := A_Now
  if (A_Hour > AlarmH) || (A_Hour == AlarmH && A_Min >= AlarmM) {
    AlarmTxt := "明日"
    EnvAdd, AlarmTime, 1, D
  } else {
    AlarmTxt := "本日"
  }

  FormatTime, AlarmTime, %AlarmTime%, yyyyMMdd'%AlarmH%%AlarmM%00'

  FormatTime, AlarmTxt, %AlarmTime%, %AlarmTxt%HH時mm分
  MsgBox, 262177, AudioAlarm, %AlarmTxt% にセットします。
  IfMsgBox, Cancel
    return

  FormatTime, AlarmTxt, %AlarmTime%, アラーム日時:dd日HH時mm分

  EnvSub, AlarmTime, , S
  if !AlarmTime {
    MsgBox, 262160, AudioAlarm, %AlarmTxt%を過ぎています。
    return
  }

  ;~ TipView(AlarmTxt, AlarmTime "000", 0, 0)
  SetTimer, AAlarmRun, -%AlarmTime%000
return

AAlarmRun:
  AudioFilePath := "C:\Users\Public\Music\Sample Music\Sleep Away.mp3"  ; 再生したいファイルのパス。
  SplitPath, AudioFilePath, AudioFileName

  PlayerPath := "C:\Qonoha\Qonoha.exe"
  PlayerTitle := AudioFileName " ahk_class QonohaPlayerMainWnd"
  VolUpKey := "Up"  ; 音量を上げるキー
  VolDnKey := "Down"  ; 音量を下げるキー

  VolMax := 25  ; 音量の最大値(VolUpKeyを何回叩くか)
  VolMaxPeriod := 3600000  ; 音量が最大になるまでにかかる時間(ミリ秒)

  Run, "%PlayerPath%" "%AudioFilePath%"
  WinWait, %PlayerTitle%
  Send, {%VolDnKey% %VolMax%}  ; 音量をゼロに

  VolUpWait := VolMaxPeriod / VolMax
  MACnt := 0
  SetTimer, AAlarmSnooze, %VolUpWait%

  MsgBox, 262208, AudioAlarm, %AlarmTxt% になりました。`n`n%AudioFileName%
  SetTimer, AAlarmSnooze, Off
  WinClose, %PlayerTitle%
return

AAlarmSnooze:
  MACnt++
  WinActivate, %PlayerTitle%
  Send, {%VolUpKey%}
  WinActivate, AudioAlarm ahk_class #32770
  if (VolMax <= MACnt)
    SetTimer, AAlarmSnooze, Off
return

 セット後にアラーム時刻を表示したいなら、コメントアウトしてあるTipView()を使う。

;--------------------------------------------------------------------------------------
; TipView.ahk
;--------------------------------------------------------------------------------------

TipView(TextBuf = "", Timer = 3000, X = "", Y = "", SW = 0) {
  if SW
    CoordMode, ToolTip

  ToolTip, %TextBuf%, X, Y
  if !Timer
    Timer := "Off"
  SetTimer, TipClose, %Timer%
}

TipClose:
  SetTimer, TipClose, Off
  ToolTip
return


[PR]
by lordnoesis | 2014-02-16 22:15 | テクノロジ | Trackback | Comments(0)
トラックバックURL : http://poimono.exblog.jp/tb/21680917
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
名前
URL
画像認証
削除用パスワード

※このブログはコメント承認制を適用しています。ブログの持ち主が承認するまでコメントは表示されません。

ブログトップ | ファンになる