Esempio n. 1
0
 private function adjustStrings(Beat $beat)
 {
     $track = $beat->getMeasure()->getTrack();
     $freeStrings = $track->getStrings();
     $notesToRemove = array();
     $notes = $beat->getVoice(0)->getNotes();
     foreach ($notes as $note) {
         $string = $this->getStringForValue($freeStrings, $note->getValue());
         for ($j = 0; $j < count($freeStrings); $j++) {
             $tempString = $freeStrings[$j];
             if ($tempString->getNumber() == $string) {
                 $note->setValue($note->getValue() - $tempString->getValue());
                 $note->setString($tempString->getNumber());
                 array_splice($freeStrings, $j, 1);
                 break;
             }
         }
         //Cannot have more notes on same string
         if ($note->getString() < 1) {
             $notesToRemove[] = $note;
         }
     }
     // Remove notes
     while (count($notesToRemove) > 0) {
         $beat->getVoice(0)->removeNote($notesToRemove[0]);
         array_splice($notesToRemove, 0, 1);
     }
 }