def __init__(self, filename): """filename is a plain string""" from audiotools import ChannelMask AiffContainer.__init__(self, filename) self.__channels__ = 0 self.__bits_per_sample__ = 0 self.__sample_rate__ = 0 self.__channel_mask__ = ChannelMask(0) self.__total_sample_frames__ = 0 from audiotools.bitstream import BitstreamReader try: for chunk in self.chunks(): if chunk.id == b"COMM": try: (self.__channels__, self.__total_sample_frames__, self.__bits_per_sample__, self.__sample_rate__, self.__channel_mask__) = parse_comm( BitstreamReader(chunk.data(), False)) break except IOError: continue except IOError: raise InvalidAIFF("I/O error reading wave")
def convert(self, target_path, target_class, compression=None, progress=None): """encodes a new AudioFile from existing AudioFile take a filename string, target class and optional compression string encodes a new AudioFile in the target class and returns the resulting object may raise EncodingError if some problem occurs during encoding""" # A Shorten file cannot contain both RIFF and AIFF chunks # at the same time. from audiotools import WaveAudio from audiotools import AiffAudio from audiotools import to_pcm_progress if ((self.has_foreign_wave_chunks() and hasattr(target_class, "from_wave") and callable(target_class.from_wave))): return WaveContainer.convert(self, target_path, target_class, compression, progress) elif (self.has_foreign_aiff_chunks() and hasattr(target_class, "from_aiff") and callable(target_class.from_aiff)): return AiffContainer.convert(self, target_path, target_class, compression, progress) else: return target_class.from_pcm(target_path, to_pcm_progress(self, progress), compression, total_pcm_frames=self.total_frames())
def convert(self, target_path, target_class, compression=None, progress=None): """encodes a new AudioFile from existing AudioFile take a filename string, target class and optional compression string encodes a new AudioFile in the target class and returns the resulting object may raise EncodingError if some problem occurs during encoding""" #A Shorten file cannot contain both RIFF and AIFF chunks #at the same time. import tempfile from . import WaveAudio from . import AiffAudio from . import to_pcm_progress if ((self.has_foreign_wave_chunks() and hasattr(target_class, "from_wave") and callable(target_class.from_wave))): return WaveContainer.convert(self, target_path, target_class, compression, progress) elif (self.has_foreign_aiff_chunks() and hasattr(target_class, "from_aiff") and callable(target_class.from_aiff)): return AiffContainer.convert(self, target_path, target_class, compression, progress) else: return target_class.from_pcm( target_path, to_pcm_progress(self, progress), compression, total_pcm_frames=self.total_frames())