def __init__(self, file_path): print("Reading the file...") file_reader = FileReader(file_path) self.file_name = file_reader.file_name # Read the header self.file_path = file_path self.chunk_id = file_reader.next_string(4) self.chunk_size = file_reader.next_int(4) self.format = file_reader.next_string(4) self.subchunk_1_id = file_reader.next_string(4) self.subchunk_1_size = file_reader.next_int(4) self.audio_format = file_reader.next_int(2) self.num_channels = file_reader.next_int(2) self.sample_rate = file_reader.next_int(4) self.byte_rate = file_reader.next_int(4) self.block_align = file_reader.next_int(2) self.bits_per_sample = file_reader.next_int(2) file_reader.skip_bytes(self.subchunk_1_size - 16) # Skip unused bytes self.subchunk_2_id = file_reader.next_string(4) self.subchunk_2_size = file_reader.next_int(4) self.bytes_per_sample = self.bits_per_sample // 8 self.samples = [] for channel in range(self.num_channels): self.samples.append([]) while file_reader.has_next(): channel_i = 0 while channel_i < self.num_channels: self.samples[channel_i].append( file_reader.next_int(self.bytes_per_sample)) channel_i += 1