예제 #1
0
 /**
  * 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);
 }
예제 #2
0
 /**
  * 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;
 }
예제 #3
0
 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()));
     }
 }