Source code for sound.sample

import wave
import struct

from . import SAMPLE_RATE, sd
from .signal import Signal

[docs] class RawData(Signal): """ A signal which is specified by an array of sample values. """ def __init__(self, data): self.data = data self.duration = len(data) def amplitude(self, frame): if frame < 0: return 0 try: return self.data[frame] except IndexError: return 0
[docs] @staticmethod def from_file(filename): """ Make a new RawData by loading from a .wav file. """ fp = wave.open(filename) n = fp.getnframes() bdata = fp.readframes(n) idata = struct.unpack('h'*n, bdata) fdata = [float(x)/(2**15 - 1) for x in idata] return RawData(fdata)
[docs] @staticmethod def record(seconds): """ Make a new RawData by recording from the microphone. """ data = sd.rec(seconds * SAMPLE_RATE, blocking=True) return RawData(data)