docs: def encode(self, flo=None, fmt='WAV', subtype='PCM_16'):
          """
          Return audio samples encoded as bytes given a particular audio format
  
          Args:
              flo (file-like): A file-like object to write the bytes to.  If flo
                  is not supplied, a new :class:`io.BytesIO` instance will be
                  created and returned
              fmt (str): A libsndfile-friendly identifier for an audio encoding
                  (detailed here: http://www.mega-nerd.com/libsndfile/api.html)
              subtype (str): A libsndfile-friendly identifier for an audio
                  encoding subtype (detailed here:
                  http://www.mega-nerd.com/libsndfile/api.html)
  
          Examples:
              >>> from zounds import SR11025, AudioSamples
              >>> import numpy as np
              >>> silence = np.zeros(11025*10)
              >>> samples = AudioSamples(silence, SR11025())
              >>> bio = samples.encode()
              >>> bio.read(10)
              'RIFFx]\\x03\\x00WA'
          """
          flo = flo or BytesIO()
          with SoundFile(
                  flo,
                  mode='w',
                  channels=self.channels,
                  format=fmt,
                  subtype=subtype,
                  samplerate=self.samples_per_second) as f:
  
              if fmt == 'OGG':
                  # KLUDGE: Trying to write too-large chunks to an ogg file seems
                  # to cause a segfault in libsndfile
                  # KLUDGE: This logic is very similar to logic in the OggVorbis
                  # processing node, and should probably be factored into a common
                  # location
                  factor = 20
                  chunksize = self.samples_per_second * factor
                  for i in range(0, len(self), chunksize):
                      chunk = self[i: i + chunksize]
                      f.write(chunk)
              else:
                  # write everything in one chunk
                  f.write(self)
  
          flo.seek(0)
          return flo