Example #1
0
 private function getHeader($tick)
 {
     $realTick = $tick >= Duration::QUARTER_TIME ? $tick : Duration::QUARTER_TIME;
     foreach ($this->headers as $header) {
         if ($realTick >= $header->getStart() && $realTick < $header->getStart() + $header->getLength()) {
             return $header;
         }
     }
     $last = $this->getLastHeader();
     $header = new MeasureHeader();
     $header->setNumber($last !== null ? $last->getNumber() + 1 : 1);
     $header->setStart($last !== null ? $last->getStart() + $last->getLength() : Duration::QUARTER_TIME);
     $header->getTempo()->setValue($last !== null ? $last->getTempo()->getValue() : 120);
     if ($last !== null) {
         $header->getTimeSignature()->copyFrom($last->getTimeSignature());
     } else {
         $header->getTimeSignature()->setNumerator(4);
         $header->getTimeSignature()->getDenominator()->setValue(Duration::QUARTER);
     }
     $this->headers[] = $header;
     if ($realTick >= $header->getStart() && $realTick < $header->getStart() + $header->getLength()) {
         return $header;
     }
     return $this->getHeader($realTick);
 }