/** * Reads an artificial harmonic * * @param NoteEffect $effect */ private function readArtificialHarmonic(NoteEffect $effect) { $type = $this->reader->readByte(); $harmonic = new EffectHarmonic(); $harmonic->setData(0); if ($type == 1) { $harmonic->setType(EffectHarmonic::TYPE_NATURAL); $effect->setHarmonic($harmonic); } else { if ($type == 2) { $this->reader->skip(3); $harmonic->setType(EffectHarmonic::TYPE_ARTIFICIAL); $effect->setHarmonic($harmonic); } else { if ($type == 3) { $this->reader->skip(1); $harmonic->setType(EffectHarmonic::TYPE_TAPPED); $effect->setHarmonic($harmonic); } else { if ($type == 4) { $harmonic->setType(EffectHarmonic::TYPE_PINCH); $effect->setHarmonic($harmonic); } else { if ($type == 5) { $harmonic->setType(EffectHarmonic::TYPE_SEMI); $effect->setHarmonic($harmonic); } } } } } }
/** * Reads beat effects * * @param Beat $beat * @param NoteEffect $effect */ public function readBeatEffects(Beat $beat, NoteEffect $effect) { $flags = $this->reader->readUnsignedByte(); $effect->setVibrato(($flags & 0x1) != 0 || ($flags & 0x2) != 0); $effect->setFadeIn(($flags & 0x10) != 0); if (($flags & 0x20) != 0) { $type = $this->reader->readUnsignedByte(); if ($type == 0) { $this->reader->factory('GuitarPro3Effects')->readTremoloBar($effect); } else { $effect->setTapping($type == 1); $effect->setSlapping($type == 2); $effect->setPopping($type == 3); $this->reader->readInt(); } } if (($flags & 0x40) != 0) { $this->reader->factory('GuitarPro3Stroke')->readStroke($beat); } if (($flags & 0x4) != 0) { $harmonic = new EffectHarmonic(); $harmonic->setType(EffectHarmonic::TYPE_NATURAL); $effect->setHarmonic($harmonic); } if (($flags & 0x8) != 0) { $harmonic = new EffectHarmonic(); $harmonic->setType(EffectHarmonic::TYPE_ARTIFICIAL); $harmonic->setData(0); $effect->setHarmonic($harmonic); } }
private function readHarmonic(NoteEffect $noteEffect) { $harmonic = new EffectHarmonic(); $type = intval($this->reader->readByte()); if ($type == 1) { $harmonic->setType(EffectHarmonic::TYPE_NATURAL); } else { if ($type == 3) { $harmonic->setType(EffectHarmonic::TYPE_TAPPED); } else { if ($type == 4) { $harmonic->setType(EffectHarmonic::TYPE_PINCH); } else { if ($type == 5) { $harmonic->setType(EffectHarmonic::TYPE_SEMI); } else { if ($type == 15) { $harmonic->setType(EffectHarmonic::TYPE_ARTIFICIAL); $harmonic->setData(2); } else { if ($type == 17) { $harmonic->setType(EffectHarmonic::TYPE_ARTIFICIAL); $harmonic->setData(3); } else { if ($type == 22) { $harmonic->setType(EffectHarmonic::TYPE_ARTIFICIAL); $harmonic->setData(0); } } } } } } } $noteEffect->setHarmonic($harmonic); }