diff -ur v3/snddiv.py v4/snddiv.py --- v3/snddiv.py 2020-01-20 12:13:42.792518000 +0900 +++ v4/snddiv.py 2020-01-20 12:58:17.171850000 +0900 @@ -149,7 +149,7 @@ proc = proc_new() rth = thr.loop_new( rfunc, ( proc.get_stderr(), ) ) - wth = thr.th_new( wfunc, ( proc.get_stdin(), ) ) + wth = thr.th_new( wfunc, ( proc.get_stdin(), ) ) def start(): e.run = True @@ -165,6 +165,39 @@ return empty.to_attr( e, locals() ) +def snd_new(data, sudo_passwd): + opt = data.opt + + e = empty.new() + e.sec = 0 + e.play = None + e.reverse = False + e.shift = 0 + + def get_sec(): + add = 0 + if e.play: + add = e.play.sec * 2**e.shift + if e.reverse: + add = -add + return e.sec + add + + def start(): + if e.play: + stop() + dat = data.get_dat_sec( e.sec, e.reverse, max(e.shift, 0) ) + e.play = play_new( dat, opt, sudo_passwd, min(2**e.shift, 1.0) ) + e.play.start() + + def stop(): + if not e.play: + return + e.play.stop() + e.sec = get_sec() + e.play = None + + return empty.to_attr( e, locals() ) + def get_args(): av = sys.argv[1:] k = '-S' @@ -184,9 +217,7 @@ data = data_new(filename_mp3) dbg.out( 'last_sec={}'.format( data.last_sec ) ) - opt = data.opt - dat = data.get_dat_sec(10, False) - play = play_new(dat, opt, sudo_passwd) + snd = snd_new(data, sudo_passwd) while True: dbg.out('snd> ', '')