diff -ur v4/snddiv.py v5/snddiv.py --- v4/snddiv.py 2020-01-20 12:58:17.171850000 +0900 +++ v5/snddiv.py 2020-01-20 21:23:00.000000000 +0900 @@ -91,6 +91,28 @@ lst = lst[:: 2**shift ] return b''.join(lst) + def get_smp_from_to(sec_f, sec_t): + f = opt.smp_sec(sec_f) + t = opt.smp_sec(sec_t) + return smp_lst[f:t] + + def get_dat_from_to(sec_f, sec_t): + lst = get_smp_from_to(sec_f, sec_t) + return b''.join(lst) + + def save(sec_f, sec_t, name): + dbg.out('save ... ', '') + dat = get_dat_from_to(sec_f, sec_t) + with open( '{}.raw'.format(name), 'wb' ) as f: + f.write(dat) + cmd = 'sox {} {}.raw {}.wav'.format( opt.get_raw_opt(), name, name ) + cmd_ut.call(cmd) + cmd = 'lame {}.wav {}.mp3 > /dev/null 2>&1'.format( name, name ) + cmd_ut.call(cmd) + cmd = 'rm -f {}.raw {}.wav'.format( name, name ) + cmd_ut.call(cmd) + dbg.out('OK') + last_sec = opt.byte_to_sec( len(dat) ) return empty.new( locals() ) @@ -174,6 +196,8 @@ e.reverse = False e.shift = 0 + divs = [ 0, data.last_sec ] + def get_sec(): add = 0 if e.play: @@ -196,6 +220,35 @@ e.sec = get_sec() e.play = None + def div_join(): + if e.sec in divs: + i = divs.index(e.sec) + if i not in (0, len(divs)-1): + divs.pop(i) + else: + divs.append(e.sec) + divs.sort() + + def ff(): + if e.sec >= divs[-1]: + return + for div in divs: + if div > e.sec: + e.sec = div + break + + def rw(): + if e.sec <= 0: + return + for div in divs[::-1]: + if div < e.sec: + e.sec = div + break + + def save(i, name): + if 0 <= i and i < len(divs)-1: + data.save( divs[i], divs[i+1], name ) + return empty.to_attr( e, locals() ) def get_args():