shithub: aubio

ref: bcf47ea4a19444e2af92cfd25994e169a5b80a63
dir: /python/demos/demo_pysoundcard_record.py/

View raw version
#! /usr/bin/env python

def record_sink(sink_path):
    """Record an audio file using pysoundcard."""

    from aubio import sink
    from pysoundcard import Stream

    hop_size = 256
    duration = 5 # in seconds
    s = Stream(blocksize = hop_size, channels = 1)
    g = sink(sink_path, samplerate = int(s.samplerate))
    print s.channels

    s.start()
    total_frames = 0
    try:
        while total_frames < duration * s.samplerate:
            vec = s.read(hop_size)
            # mix down to mono
            mono_vec = vec.sum(-1) / float(s.channels[0])
            g(mono_vec, hop_size)
            total_frames += hop_size
    except KeyboardInterrupt, e:
        print "stopped after", "%.2f seconds" % (total_frames / s.samplerate)
        pass
    s.stop()

if __name__ == '__main__':
    import sys
    record_sink(sys.argv[1])