Keep samples as float32 until we send them out, for aiding later reprocessing
authorjweigele <jweigele@local>
Thu, 29 Sep 2022 21:55:43 +0000 (14:55 -0700)
committerjweigele <jweigele@local>
Thu, 29 Sep 2022 21:55:43 +0000 (14:55 -0700)
ffmpegfile.py

index e66db9f20dd7461135120ff276adadcd2413ac9c..b77948b55bf63b42c9fab52cd11df912736dce79 100644 (file)
@@ -32,20 +32,24 @@ class AudioChunk(object):
         if init_bytes is not None:
             init_bytes = self.pad_out(init_bytes)
             self.samples = numpy.array([x[0] for x in struct.iter_unpack('<h', init_bytes)])
+            self.samples = self.samples.astype('float32')
+            self.samples /= 32768.0
         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)))
+                self.samples = numpy.concatenate((self.samples, numpy.array([0.0]*samples_to_add)))
 
     @property
     def sample_buffer(self):
         #log.debug(self.samples)
         #log.debug(len(self.samples))
         #log.debug(list(self.samples))
-        return struct.pack('<'+'h'*self.samples.size, *list(self.samples)) 
+        next_samples = 32768.0 * self.samples
+        next_bytes = next_samples.astype('int16')
+        return struct.pack('<'+'h'*self.samples.size, next_bytes) 
 
     @property
     def length(self):
@@ -192,9 +196,9 @@ class AudioBuffer(discord.AudioSource):
                     #else:
                     next_samples = numpy.repeat(next_samples, 2)
                     # for the downcast to int16
-                    next_samples *= 32768.0
-                    next_bytes = next_samples.astype('int16')
-                    chunk = AudioChunk(init_samples=next_bytes)
+                    #next_samples *= 32768.0
+                    #next_bytes = next_samples.astype('int16')
+                    chunk = AudioChunk(init_samples=next_samples)
                     #log.debug(chunk, chunk.samples)
                     chunks_to_append.append(chunk)
                     # get next chunk