def __init__(self, uid, *args): # __del__ requires self.device, so we bind it before making # any calls that could fail and cause us to be deleted causing # __del__ to be called self.device = None super(audiosource_base, self).__init__(*args) verbose = False device = audio.new_device(uid, self.appendleft, verbose) self.uid = uid self.device = device
def __init__(self, uid, sendee=None, verbose=False): # __del__ uses self.device, so we bind it before making # any calls that could fail and cause us to be deleted causing # __del__ to be called self._device = None super(LiveAudioSource, self).__init__(sendee) self._uid = uid def process(value): # value will be a tuple of buffers, where each buffer is samples # from one channel of the input device # no error even if we're done, so no check_name argument to _enter() if self._enter(): self._enqueue(value) self._exit() self._device = audio.new_device(self.uid, process, verbose)