self.samples = numpy.array([x[0] for x in struct.iter_unpack('<h', init_bytes)])
elif init_samples is not None:
self.samples = init_samples
+ #log.debug('init by samples')
+ if len(self.samples) < MAX_SAMPLES*2:
+ samples_to_add = int(MAX_SAMPLES*2 - len(self.samples))
+ #log.debug('samples to add: {}'.format(samples_to_add))
+ self.samples = numpy.concatenate((self.samples, numpy.array([0]*samples_to_add)))
@property
def sample_buffer(self):
#log.debug(self.samples)
- log.debug(len(self.samples))
+ #log.debug(len(self.samples))
#log.debug(list(self.samples))
return struct.pack('<'+'h'*self.samples.size, *list(self.samples))
#log.debug(next_samples)
while numpy.size(next_samples) > 0:
# switch to mono if needed (channel shouldn't change from initial)
- if channels == 3:
- next_samples = numpy.delete(next_samples, 1, 0)
+ #log.debug('channels are {}'.format(channels))
+ if channels == 2:
+ #log.debug('before deleting {}'.format(next_samples.shape))
+ #log.debug(next_samples[0][:10])
+ #next_samples = numpy.squeeze(next_samples.reshape(1, -1))
+ # total length * 2
+ rechannel = numpy.empty(next_samples[0].shape[0]*2, dtype='float32')
+ # first channel
+ rechannel[::2] = next_samples[0]
+ # second channel
+ rechannel[1::2] = next_samples[1]
+ next_samples = rechannel
+ #log.debug('after deleting {}'.format(next_samples.shape))
+ #log.debug(next_samples[:10])
# for the downcast to int16
next_samples *= 32768.0
next_bytes = next_samples.astype('int16')