code: def add_samples(self, samples, reverse=False):
          
          self.log(u"Adding samples...")
          samples_length = len(samples)
          current_length = self.__samples_length
          future_length = current_length + samples_length
          if (self.__samples is None) or (self.__samples_capacity < future_length):
              self.preallocate_memory(2 * future_length)
          if reverse:
              self.__samples[current_length:future_length] = samples[::-1]
          else:
              self.__samples[current_length:future_length] = samples[:]
          self.__samples_length = future_length
          self._update_length()
          self.log(u"Adding samples... done")
docs: Concatenate the given new samples to the current audio data.
  
          This function initializes the memory if no audio data
          is present already.
  
          If ``reverse`` is ``True``, the new samples
          will be reversed and then concatenated.
  
          :param samples: the new samples to be concatenated
          :type  samples: :class:`numpy.ndarray` (1D)
          :param bool reverse: if ``True``, concatenate new samples after reversing them
  
          .. versionadded:: 1.2.1