/** * Reads channels informations * * @return array $channels */ public function readChannels() { $channels = array(); for ($i = 0; $i < 64; $i++) { $channel = new Channel(); $channel->setProgram($this->reader->readInt()); $channel->setVolume($this->toChannelShort($this->reader->readByte())); $channel->setBalance($this->toChannelShort($this->reader->readByte())); $channel->setChorus($this->toChannelShort($this->reader->readByte())); $channel->setReverb($this->toChannelShort($this->reader->readByte())); $channel->setPhaser($this->toChannelShort($this->reader->readByte())); $channel->setTremolo($this->toChannelShort($this->reader->readByte())); $channel->setBank($i == 9 ? Channel::DEFAULT_PERCUSSION_BANK : Channel::DEFAULT_BANK); if ($channel->getProgram() < 0) { $channel->setProgram(0); } $channels[] = $channel; $this->reader->skip(2); } return $channels; }