示例#1
0
 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);
 }