class_docstr: An audio clip made from a sound array.
  
  Parameters
  ----------
  
  array
    A Numpy array representing the sound, of size Nx1 for mono,
    Nx2 for stereo.
  
  fps
    Frames per second : speed at which the sound is supposed to be
    played.
class_docstr_tok: ["An","audio","clip","made","from","a","sound","array",".","Parameters","--","--","--","--","--","array","A","Numpy","array","representing","the","sound",",","of","size","Nx1","for","mono",",","Nx2","for","stereo",".","fps","Frames","per","second",":","speed","at","which","the","sound","is","supposed","to","be","played","."]
code: def __init__(self, array, fps):
      Clip.__init__(self)
      self.array = array
      self.fps = fps
      self.duration = 1.0 * len(array) / fps
  
      def make_frame(t):
          """Complicated, but must be able to handle the case where t
          is a list of the form sin(t).
          """
          if isinstance(t, np.ndarray):
              array_inds = np.round(self.fps * t).astype(int)
              in_array = (array_inds >= 0) & (
                  array_inds < len(self.array)
              )
              result = np.zeros((len(t), 2))
              result[in_array] = self.array[array_inds[in_array]]
              return result
          else:
              i = int(self.fps * t)
              if i < 0 or i >= len(self.array):
                  return 0 * self.array[0]
              else:
                  return self.array[i]
  
      self.make_frame = make_frame
      self.nchannels = len(list(self.get_frame(0)))
  
imports: import numbers
  import os
  import numpy
  import proglog
  from moviepy.audio.io.ffmpeg_audiowriter import ffmpeg_audiowrite
  from moviepy.Clip import Clip
  from moviepy.decorators import convert_path_to_string, requires_duration
  from moviepy.tools import extensions_dict
label_desc: Use image node_id 1 to create a new AudioArrayClip object from inherited base classes: AudioClip with example: obj = AudioArrayClip(array, fps)