diff options
Diffstat (limited to 'python/demos/demo_tss.py')
-rwxr-xr-x | python/demos/demo_tss.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/python/demos/demo_tss.py b/python/demos/demo_tss.py new file mode 100755 index 0000000..f8c29aa --- /dev/null +++ b/python/demos/demo_tss.py @@ -0,0 +1,47 @@ +#! /usr/bin/env python + +import sys +from aubio import source, sink, pvoc, tss + +if __name__ == '__main__': + if len(sys.argv) < 2: + print('usage: %s <inputfile> <outputfile_transient> <outputfile_steady>' % sys.argv[0]) + sys.exit(1) + + samplerate = 44100 + win_s = 1024 # fft size + hop_s = win_s // 4 # block size + threshold = 0.5 + + f = source(sys.argv[1], samplerate, hop_s) + g = sink(sys.argv[2], samplerate) + h = sink(sys.argv[3], samplerate) + + pva = pvoc(win_s, hop_s) # a phase vocoder + pvb = pvoc(win_s, hop_s) # another phase vocoder + t = tss(win_s, hop_s) # transient steady state separation + + t.set_threshold(threshold) + + read = hop_s + + while read: + samples, read = f() # read file + spec = pva(samples) # compute spectrum + trans_spec, stead_spec = t(spec) # transient steady-state separation + transients = pva.rdo(trans_spec) # overlap-add synthesis of transients + steadstate = pvb.rdo(stead_spec) # overlap-add synthesis of steady states + g(transients, read) # write transients to output + h(steadstate, read) # write steady states to output + + del f, g, h # finish writing the files now + + from demo_spectrogram import get_spectrogram + from pylab import subplot, show + subplot(311) + get_spectrogram(sys.argv[1]) + subplot(312) + get_spectrogram(sys.argv[2]) + subplot(313) + get_spectrogram(sys.argv[3]) + show() |