HSPで運動用の簡単なインターバルタイマーを作ったのでそれについて書く。
ソフト開発は自己責任でやって下さい。
HSPで紅茶タイマーを作ってみる
1.HSPとは(自己責任でやってね)
HSPというのはWindows用のソフトを作る開発システムだ。
HSPはHot Soup Processorの略だ。
割と有名なソフトで簡単なソフトからゲームまで色々なものが作れる。
ソフト開発というとマイクロソフトのVisualStudioとかがあるけどこちらは面倒な事は無く軽い。
特にランタイムとか無しで単独で動作するexeファイルも作成可能だ。
さすがに大規模なソフトとなると厳しいが個人用のものなら十分で使いやすい。
これまで色々な所でお世話になっている優れもののソフトだ。
HSP3
2.インターバルタイマー(自己責任でやってね)
私はこの数年筋力トレーニングを行っているがその時にインタバルタイマーを使っている。
運動内容を管理するのに回数を数えるという方法もあるけど何年も続けていると面倒になってくる。
使っているのはAndroidのタバタタイマーで運動時間やループの回数、もちろん運動中の音楽も設定できる
優れものだ。このタイマーはお勧めだ。
特に不満は無いのだが紅茶タイマーを作ったついでにパソコンでもインターバルタイマーが出来ないかと
思って試しに作成したのがこのソフトだ。
インターバルタイマーを作るのは意外と面倒で少し時間がかかったがなんとか完成。公開する事にした。
普通の人にはあまり役に立つとは思えないがパソコンを良く使っていて時々運動して
HSPに興味がある人が試しに使ってみるのは良いと思う。
タバタタイマー
3.簡単な説明(自己責任でやってね)
・下記のリストをHSPに貼り付けて HSP(P)-コンパイル+実行 で動作する。
・HSP(P)-実行ファイル自動作成 でexeファイル作成。
・HSP自体の詳しい操作方法はネットで調べて下さい。最新の3.51での動作は確認しています。
・初期設定で実行時の位置、秒数、効果音、演奏音、曲数、ループ数が変更できます。位置は1920x1080用。
・効果音はWindows10なら出ると思いますが他のOSでうまく行かない場合は変更して下さい。
そのままでも音がでないだけで動作自体は可能です。
同じフォルダにwav、MP3ファイルを置くならパス設定は不要です。(ptn)
・munm.1~munm.5、munm.11~munm.12に30秒以上の好きな音楽を設定するのがお勧め。
曲数は10曲までなら増やすのが可能だと思います。曲数設定も変更すること。
そのままでもWindows10なら動作は可能だと思います。
・ファイル名にスペースが含まれていると再生できない事があります。
・*TimSetの所で全体の時間を設定してます。後は設定した時間を順番に処理するのみです。
準備曲 → 演奏曲と休息繰り返し → 終了曲 という順で進みます。
・ノートパソコン等の画面の小さいもので使用する時は初期位置を調整するかリンクを作成して
右クリック-プロパティ-互換性-高DPI設定の変更-高DPIスケール設定の上書き
にチェックを入れるとそのままの位置でも使えると思います。
・どこかのソフト例にありそうな程度のソフトなので自己責任で自由に使ってもらっていいです。
・一応、著作権はぷれでたが保持します。(著作権とは良い響きだ)
記事の無断転載は止めて下さい。
4.全体的なまとめ(自己責任でやってね)
紅茶タイマーより少し苦戦したがなんとか完成。
運動したい人は使ってみて下さい。タイマーによる運動は有効だと思います。
これからも軽い筋トレは続けていく予定です。
ほんとにこのHSPは簡単に使えて役に立つ素晴らしいソフトだ。開発者の方に感謝したい。
5.ソースリスト(自己責任でやってね)
;**************************************************
;インターバルタイマー 2019.11 ぷれでた 公開用
;Ver1.0.0 動作可能
;**************************************************
;初期設定
wx = 1600 :wy = 810 ;ウィンドウの初期位置
ptn = "C:/windows/media/" ;効果音パス
mn1 = ptn + "Windows Navigation Start.wav" ;クリック音
mn2 = ptn + "Alarm01.wav" ;アラーム音
Ivtm = 30 ;インターバル時間
bktm = 8 ;休息時間
rdtm = 13 ;準備時間
edtm = 40 ;終了時間
Lset = 3 ;ループ数
Mcnt = 5 ;曲数
sdim munm,50,30 ;音楽名
munm.1 = ptn + "Alarm02.wav" ;演奏曲
munm.2 = ptn + "Alarm03.wav" ;
munm.3 = ptn + "Alarm04.wav" ;
munm.4 = ptn + "Alarm05.wav" ;
munm.5 = ptn + "Alarm06.wav" ;
munm.11 = ptn + "Alarm01.wav" ;準備曲
munm.12 = ptn + "Alarm01.wav" ;終了曲
;**************************************************
sdim pmus,50,99 ;演奏音楽
dim mudt,30 ;音楽データあるか
dim mudt2,99 ;音楽データ設定
dim nxtm,99 ;次のカウント時間
px = 130 : py = 100 ;表示位置指定
tim = 0 ;タイマー値
ITS = 1000 ;1秒毎に割り込み
tmgo = 0 ;タイマー動作
cply = 0 ;クリック音
cply2 = 0 ;アラーム音
Icnt = 1 ;インターバル動作カウント
Acnt = 0 ;全カウント
Atim = 0 ;全時間
Ntim = 0 ;現在時間
#packopt name "InterT01" ;exeファイル名
#define WM_TIMER 0x0113 ;タイマーメッセージ
#define TIMER_ID 1 ;タイマーID
#include "user32.as" ;タイマーAPI
oncmd gosub *OnTimer, WM_TIMER ;タイマー割込み
onexit *pend ;ウィンドウの×ボタンで終了
screen 0,320,200,0,wx,wy ;ウィンドウサイズ
cls 4:color 255,255,255 ;画面初期化
title "インターバルタイマー Ver.1.0.0 By ぷれでた" ;タイトル表示
gosub *stbtn ;ボタン配置
gosub *prttim ;タイマー表示
gosub *LDSound ;効果音読み込み
gosub *TimSet ;時間設定
gosub *prttim2 ;カウンタのみ表示
stop ;一時停止してキー割り込みを待つ
;**************************************************
*statm ;スタート
gosub *timcnt1 ;タイマー動作
gosub *pmsc3 ;音楽演奏
stop ;一時停止
*stoptm ;ストップ
gosub *timcnt2 ;タイマー停止
stop ;一時停止
*restm ;リセット
Icnt = 1 ;カウンタリセット
tim = nxtm.Icnt ;
gosub *timcnt2 ;タイマー停止
stop ;一時停止
*pend ;終了
gosub *timcnt2 ;タイマー停止
end ;
;**************************************************
*timcnt1 ;タイマーON
tmgo = 1 ;
tim = nxtm.Icnt ;
goto *timcnt3 ;
*timcnt2 ;タイマーOFF
tmgo = 0 ;
*timcnt3 ;タイマー共通
gosub *conttm ;タイマー制御
gosub *prttim ;タイマー表示
gosub *pmsc1 ;クリック音
return ;
;**************************************************
*OnTimer ;タイマー割込み
tim = tim - 1 ;
Ntim = Ntim + 1 ;
gosub *prttim ;タイマー表示
if tim<=0 { ;
Icnt = Icnt + 1 ;
mmstop ;再生停止
if Icnt>Acnt {
pos px,py+30 : mes "タイマー終了" ;
KillTimer hwnd, TIMER_ID ;タイマー停止
gosub *pmsc2 ;アラーム音
}
else {
tim = nxtm.Icnt ;タイマー
gosub *prttim ;タイマー表示
gosub *pmsc1 ;クリック音
gosub *pmsc3 ;音楽演奏
}
}
return ;
;**************************************************
*prttim ;タイマー表示
color 0,0,0:boxf 0,0,px+200,py+200:color 255,255,255 ;表示を消す
pos px-20,py-30:mes str(Icnt)+" / "+str(Acnt)+" "+str(Ntim)+" / "+str(Atim);
pos px+30,py:mes tim ;
return ;
;**************************************************
*prttim2 ;カウンタのみ
color 0,0,0:boxf 0,0,px+200,py:color 255,255,255 ;表示を消す
pos px-20,py-30:mes str(Icnt)+" / "+str(Acnt)+" "+str(Ntim)+" / "+str(Atim);
pos px-90,py-50:mes "時間設定 : "+str(rdtm)+" "+str(Ivtm)+" "+str(bktm)+" "+str(edtm)+" 曲数 : "+str(Mcnt) ;
return ;
;**************************************************
*conttm ;タイマー制御
if tmgo = 0 : KillTimer hwnd, TIMER_ID : mmstop ;タイマー停止
if tmgo = 1 : SetTimer hwnd, TIMER_ID, ITS, 0 ;タイマー起動 1S
return ;
;**************************************************
*pmsc1 ;クリック音
if cply = 1 : mmplay 21 ;音源ありなら再生
return ;
*pmsc2 ;アラーム音
if cply2 = 1 : mmplay 22 ;音源ありなら再生
return ;
*pmsc3 ;音楽
if mudt2.Icnt ! 0 : mmplay mudt2.Icnt ;音源ありなら再生
return ;
;**************************************************
*stbtn ;ボタン配置
x = 30 : y = 20 ;表示位置指定
objsize 80,24 ;ボタン大きさ
pos x ,y:button "スタート",*statm ;ボタン配置
pos x+ 90,y:button "ストップ",*stoptm ;ボタン配置
pos x+180,y:button "リセット",*restm ;ボタン配置
return ;
;**************************************************
*TimSet ;時間設定
n = 1 : k = 0 ;
repeat ;
nxtm.n = rdtm ;準備時間
Atim = Atim + nxtm.n ;全時間
pmus.n = munm.11 ;演奏音楽
mudt2.n = 11 : n=n+1 ;再生番号
m = 1 ;
repeat ;
nxtm.n = Ivtm ;運動時間
Atim = Atim + nxtm.n ;全時間
if mudt.m!0 : pmus.n = munm.m : mudt2.n = m ;演奏音楽
n = n + 1 ;
if m>=Mcnt : break ;曲繰り返す
nxtm.n = bktm ;休息時間
Atim = Atim + nxtm.n ;全時間
m=m+1:n=n+1 ;
loop ;
k=k+1 : if k>=Lset : break ;ループ繰り返す
loop ;
nxtm.n = edtm ;終了時間
Atim = Atim + nxtm.n ;全時間
pmus.n = munm.12 ;演奏音楽
mudt2.n = 12 ;
Acnt = n ;全カウント
return ;
;**************************************************
*LDSound ;効果音読み込み
exist mn1 ;ファイルがあるか?
if strsize > 0 : mmload mn1,21 : cply = 1 : pos px-10,py+20 : mes "クリック音あり" ;
exist mn2 ;ファイルがあるか?
if strsize > 0 : mmload mn2,22 : cply2 = 1 : pos px-10,py+40 : mes "アラーム音あり" ;
exist munm.11 ;準備音楽
if strsize > 0 : mmload munm.11,11 : mudt.11 = 1 ;
exist munm.12 ;終了音楽
if strsize > 0 : mmload munm.12,12 : mudt.12 = 1 ;
n = 1 : m = 0 ;
repeat ;演奏音楽
exist munm.n ;ファイルがあるか?
if strsize > 0 : mmload munm.n,n : mudt.n = 1 : m=m+1
n=n+1 : if n>Mcnt : break ;繰り返す
loop ;
pos px-10,py+60 : mes "音楽 "+str(m)+" あり" ;
gosub *pmsc1 ;クリック音
return ;
;**************************************************