/** * @param integer $string String on which note has started * @param Track $track * * @return integer tied note value */ public function getTiedNoteValue($string, Track $track) { $measureCount = $track->countMeasures(); if ($measureCount > 0) { for ($m = $measureCount - 1; $m >= 0; $m--) { $measure = $track->getMeasure($m); for ($b = $measure->countBeats() - 1; $b >= 0; $b--) { $beat = $measure->getBeat($b); $voice = $beat->getVoice(0); for ($n = 0; $n < $voice->countNotes(); $n++) { $note = $voice->getNote($n); if ($note->getString() == $string) { return $note->getValue(); } } } } } return -1; }
private function getPreviousNote(MidiSequenceHelper $sHelper, Note $note, Track $track, $mIndex, $bIndex, $breakAtRest) { $nextBIndex = $bIndex; for ($m = $mIndex; $m >= 0; $m--) { $mHelper = $sHelper->getMeasureHelper($m); $measure = $track->getMeasure($mHelper->getIndex()); if ($this->sHeader == -1 || $this->sHeader <= $measure->getNumber()) { $nextBIndex = $nextBIndex < 0 ? $measure->countBeats() : $nextBIndex; for ($b = $nextBIndex - 1; $b >= 0; $b--) { $beat = $measure->getBeat($b); $voice = $beat->getVoice($note->getVoice()->getIndex()); if (!$voice->isEmpty()) { $noteCount = $voice->countNotes(); for ($n = 0; $n < $noteCount; $n++) { $current = $voice->getNote($n); if ($current->getString() == $note->getString()) { return new MidiNoteHelper($mHelper, $current); } } if ($breakAtRest) { return null; } } } } $nextBIndex = -1; } return null; }
private function getMeasure(Track $track, $tick) { $realTick = $tick >= Duration::QUARTER_TIME ? $tick : Duration::QUARTER_TIME; $measures = $track->getMeasures(); foreach ($measures as $measure) { if ($realTick >= $measure->getStart() && $realTick < $measure->getStart() + $measure->getLength()) { return $measure; } } $this->getHeader($realTick); for ($i = 0; $i < count($this->headers); $i++) { $exist = false; $header = $this->headers[$i]; $measureCount = $track->countMeasures(); for ($j = 0; $j < $measureCount; $j++) { $measure = $track->getMeasure($j); if ($measure->getHeader() == $header) { $exist = true; } } if (!$exist) { $measure = new Measure($header); $track->addMeasure($measure); } } return $this->getMeasure($track, $realTick); }