@abstractmethod<EOL><INDENT>def read(self, size):<DEDENT>
Read and return `size` audio samples at most.

:Parameters:

    `size` : int
        the number of samples to read.

:Returns:

    Audio data as a string of length 'N' * 'sample_width' * 'channels', where 'N' is:

    - `size` if `size` < 'left_samples'

    - 'left_samples' if `size` > 'left_samples'