/** * Creates a channel name with a program * * @param Song $song * @param Channel $channel * @return string a new channel name */ protected function createChannelNameFromProgram(Song $song, $channel) { $names = ChannelNames::$defaultNames; if ($channel->getProgram() >= 0 && isset($names[$channel->getProgram()])) { return $this->createChannelName($song, $names[$channel->getProgram()]); } return $this->createDefaultChannelName($song); }
/** * 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; }
private function makeChannel(MidiSequenceHelper $sHelper, Channel $channel, $track) { if (($this->flags & MidiWriter::ADD_MIXER_MESSAGES) != 0) { $channelId = $channel->getChannelId(); $tick = $this->getTick(Duration::QUARTER_TIME); $sHelper->getSequence()->addControlChange($tick, $track, $channelId, MidiWriter::VOLUME, $this->fix($channel->getVolume())); $sHelper->getSequence()->addControlChange($tick, $track, $channelId, MidiWriter::BALANCE, $this->fix($channel->getBalance())); $sHelper->getSequence()->addControlChange($tick, $track, $channelId, MidiWriter::CHORUS, $this->fix($channel->getChorus())); $sHelper->getSequence()->addControlChange($tick, $track, $channelId, MidiWriter::REVERB, $this->fix($channel->getReverb())); $sHelper->getSequence()->addControlChange($tick, $track, $channelId, MidiWriter::PHASER, $this->fix($channel->getPhaser())); $sHelper->getSequence()->addControlChange($tick, $track, $channelId, MidiWriter::TREMOLO, $this->fix($channel->getTremolo())); $sHelper->getSequence()->addControlChange($tick, $track, $channelId, MidiWriter::EXPRESSION, 127); if (!$channel->isPercussionChannel()) { $sHelper->getSequence()->addControlChange($tick, $track, $channelId, MidiWriter::BANK_SELECT, $this->fix($channel->getBank())); } $sHelper->getSequence()->addProgramChange($tick, $track, $channelId, $this->fix($channel->getProgram())); } }