#module
#deffunc mciload str, int
mref file, 32 : mref no, 1
cntno = no
mci "close _" + cntno
strmid i, file, , 2 : int i
if i {
file = "cdaudio!?"
poke file, 8, i + 64
}
mci "open \"" + file + "\" alias _" + cntno
return
#deffunc mciplay str, str, int
mref start, 32 : mref finish, 33 : mref re, 2
if start ! "" : s = " from " + start : else : s = ""
if finish ! "" : s += " to " + finish
if re : s += " repeat"
mci "play _" + cntno + s
return
#deffunc mciend onexit
mci "stop all"
mci "close all"
return
#deffunc mcitrackmax
mci "status _" + cntno + " number of tracks"
return
#deffunc mcitrackpos int
mref track, 0
mci "status _" + cntno + " position track " + track
return
#deffunc mcitracklen int
mref track, 0
mci "status _" + cntno + " length track " + track
return
#deffunc addmsf str, str
mref msf1, 32
mref msf2, 33
mref rstr, 65
dim i, 3
repeat 3
strmid s, msf1, cnt * 3, 2 : i.cnt = 0 + s
strmid s, msf2, cnt * 3, 2 : i.cnt += 0 + s
loop
if i.2 >= 75 : i.2 -= 75 : i.1++ // 1秒=75フレーム
if i.1 >= 60 : i.1 -= 60 : i.0++
repeat 3
s = "00" + i.cnt
strmid s, s, -1, 2
if cnt : rstr += ":" : else : rstr = ""
rstr += s
loop
return
#global
repeat 26, 1
mciload "" + cnt
mcitrackmax
drv.1 = stat
if drv < drv.1 : drv = drv.1 * 100 + cnt // トラック最多ドライブを対象とする
loop
if drv.1 > 0 {
sdim track, drv / 100 * 3
repeat drv.1, 1
if track ! "" : track += "\n"
track += "" + cnt
loop
pos 10, 10 : combox index, 100, track
pos 80, 10 : button "再生", *play
i = drv \ 100
mciload "" + i
} else {
dialog "1つ以上のトラックが存在するドライブが見つかりませんでした"
end
}
stop
*play
mcitrackpos index + 1 : start = refstr
mcitracklen index + 1 : addmsf start, refstr : finish = refstr
mciplay start, finish
stop
|