高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

きつねとけい風時報スクリプト

MortScript サンプルコード集にて配布されている鳩時計スクリプトをちょこちょこいじって、きつねとけい風に00分に時刻を読み上げるスクリプトを作成してみました。ついでに、きつねとけいにあるn時30分の時報にも対応してみました。

thisFile = SystemPath( "ScriptPath" ) \ SystemPath( "ScriptName" ) & SystemPath( "ScriptExt" )

#.iniファイルの読み込み。このファイルと同じフォルダに入っているので
ccsIni = SystemPath( "ScriptPath" ) \ "CuckooClockSleeper.ini"
sT = IniRead( ccsIni, "default", "sT" )
wT = IniRead( ccsIni, "default", "wT" )


#テスト時のnotification queueが溜らないように
RemoveNotifications( thisFile )

#Unix Time Stampは閏秒を考慮しないそうなので簡単 
t = TimeStamp()
RunAt( t + 1800 - (t MOD 1800), thisFile )

#以下、おやすみモード判断。
#.iniファイル or キーが読み込めない時は、眠らない
If( sT eq "" || wT eq ""  )
 sT = 25
 wT = 0
EndIf

# 変更部分、ここから
hh = ""
If ( sT > wT )
  If( FormatTime( "H", t + 5 ) < sT && FormatTime( "H", t + 5 ) >= wT)

    #FormatTime( "h" )は12時間表記で「時」を返す 
    #ひと桁時の時は「04」といった文字列を返すが 
    #Repeat()はそのままで「4」と認識してくれる 
    #正時より少し早めにRunする場合があるようなので+5秒での"h"を指定
    hh =  FormatTime( "h", t + 5 )
  EndIf
Else
  If( FormatTime( "H", t + 5 ) < sT || FormatTime( "H", t + 5 ) >= wT)
    hh =  FormatTime( "h", t + 5 )
  EndIf   
EndIf
If(RegRead("HKCU", "\Software\Sharp\PhoneStatus", "Status3") = 0)
  PlaySound(FilePath(thisFile) & "\wave\H" & hh & ".wav")
  Sleep(200)
  If(FormatTime( "i", t + 5 ) = "30")
    PlaySound(FilePath(thisFile) & "\wave\M30.wav")  
    Sleep(100)
  EndIf
Else
  If(FormatTime( "i", t + 5 ) = "30")
    vibrate(200)
    Sleep(100)
    vibrate(200)
    Sleep(100)
    vibrate(200)
  Else
    Repeat(hh)
      Sleep(1000)
      vibrate(200)
      Sleep(100)
      vibrate(200)
    EndRepeat
    Sleep(200)
    vibrate(200)
  EndIf
EndIf

音声ファイルはスクリプトのあるフォルダ配下のwaveフォルダ、H01〜H12.wav、M30.wavを使います。
特にこだわりがなければ、資料室 短波標準電波(JJY)時報音声ライブラリのものを使用するといいのではないでしょうか。


それから、そのままだと会社でも時刻を読み上げたりしてうるさいので、マナーモードの時はバイブレーションで時刻をお知らせするようにしました。
ビッ、ビッという小刻みの振動が2回×時間数分振動します。それだけだとバイブレーションの終了が判断しづらいので最後だけ3回振動させてます。3時の時は、「ビッ、ビッ ビッ、ビッ ビッ、ビッ、ビッ」という感じ。


とりあえず改変だけだし・・・ということで日誌に直接書いてしまいましたが、ニーズがありそうならおんぷ村にでも掲載します。
――まあ、それなりにインパクトありそうですけど。新しいコンテンツ置き場作るのは(^_^;